Poga
====
[](https://dzhsurf.github.io/poga/)
Introduction
-----------------
Poga is a Python binding for YogaLayout.
It provides Python API for YogaLayout. And a high-level interface PogaLayout.
YogaLayout: https://yogalayout.com/
Install
-------
```shell
# Python version requires >= 3.7
pip install poga
```
Quickstart
----------
Use high-level interface PogaLayout
More details you can refer to the PGLayout of the pydui-gtk project below.
https://github.com/dzhsurf/pydui
```python
from poga import PogaLayout
def main():
layout = PogaLayout()
layout.flex_direction = YGFlexDirection.FlexStart
# ...
layout.apply_layout()
```
Use Binding CAPI directily
```python
from poga.libpoga_capi import *
def main():
node = YGNodeNew()
YGNodeSetNodeType(node, YGNodeType.Default)
YGNodeFree(node)
```
Building
--------
Since there's a need for a cpp compiler to build the python extension module, you should install the build-essential tools before you build the package.
* Windows: `VS16 - VS2019 Build Tools`
* MacOS: `XCode Command Line Tools`
* Linux (Ubuntu): `build-essential`
```shell
# checkout the code and enter the diretory
pip install -r requirements.txt
pip install -e .
# or you can just install the dependencies by poetry.
poetry install
# now, all done. run the sample code
python src/example/main.py
```
Benchmark
---------
```shell
# pip install line_profiler
kernprof -l benchmark/benchmark.py
python -m line_profiler -rmt "benchmark.py.lprof"
```
MacBook Pro (15-inch, 2016)
* Processor 2.7GHz Quad-core Intel Core i7
* Memory 16GB 2133 MHz LPDDR3
```
Timer unit: 1e-06 s
Total time: 0.000141 s
File: benchmark.py
Function: stack_with_flex at line 14
Line # Hits Time Per Hit % Time Line Contents
14 @profile
15 def stack_with_flex():
16 1 20.0 20.0 14.2 root = YGNodeNew()
17 1 10.0 10.0 7.1 YGNodeStyleSetWidth(root, 100)
18 1 3.0 3.0 2.1 YGNodeStyleSetHeight(root, 100)
19 11 10.0 0.9 7.1 for i in range(10):
20 10 23.0 2.3 16.3 child = YGNodeNew()
21 10 12.0 1.2 8.5 YGNodeStyleSetFlex(child, i)
22 10 16.0 1.6 11.3 YGNodeInsertChild(root, child, 0)
23
24 1 37.0 37.0 26.2 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirection.LTR)
25 1 10.0 10.0 7.1 YGNodeFreeRecursive(root)
Total time: 0.000169 s
File: benchmark.py
Function: align_stretch_in_undefined_axis at line 28
Line # Hits Time Per Hit % Time Line Contents
28 @profile
29 def align_stretch_in_undefined_axis():
30 1 2.0 2.0 1.2 root = YGNodeNew()
31 11 6.0 0.5 3.6 for i in range(10):
32 10 14.0 1.4 8.3 child = YGNodeNew()
33 10 10.0 1.0 5.9 YGNodeStyleSetHeight(child, 20)
34 10 12.0 1.2 7.1 YGNodeSetMeasureFunc(child, measure_fn)
35 10 12.0 1.2 7.1 YGNodeInsertChild(root, child, 0)
36
37 1 110.0 110.0 65.1 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirection.LTR)
38 1 3.0 3.0 1.8 YGNodeFreeRecursive(root)
Total time: 0.001685 s
File: benchmark.py
Function: nested_flex at line 41
Line # Hits Time Per Hit % Time Line Contents
==============================================================
41 @profile
42 def nested_flex():
43 1 2.0 2.0 0.1 root = YGNodeNew()
44 11 6.0 0.5 0.4 for i in range(10):
45 10 17.0 1.7 1.0 child = YGNodeNew()
46 10 11.0 1.1 0.7 YGNodeStyleSetFlex(child, 1)
47 10 14.0 1.4 0.8 YGNodeInsertChild(root, child, 0)
48
49 110 53.0 0.5 3.1 for ii in range(10):
50 100 197.0 2.0 11.7 grand_child = YGNodeNew()
51 100 111.0 1.1 6.6 YGNodeSetMeasureFunc(grand_child, measure_fn)
52 100 109.0 1.1 6.5 YGNodeStyleSetFlex(grand_child, 1)
53 100 121.0 1.2 7.2 YGNodeInsertChild(child, grand_child, 0)
54
55 1 1029.0 1029.0 61.1 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirection.LTR)
56 1 15.0 15.0 0.9 YGNodeFreeRecursive(root)
Total time: 0.093843 s
File: benchmark.py
Function: huge_nested_layout at line 59
Line # Hits Time Per Hit % Time Line Contents
59 @profile
60 def huge_nested_layout():
61 1 2.0 2.0 0.0 root = YGNodeNew()
62 11 6.0 0.5 0.0 for i in range(10):
63 10 15.0 1.5 0.0 child = YGNodeNew()
64 10 11.0 1.1 0.0 YGNodeStyleSetFlexGrow(child, 1)
65 10 11.0 1.1 0.0 YGNodeStyleSetWidth(child, 10)
66 10 11.0 1.1 0.0 YGNodeStyleSetHeight(child, 10)
67 10 13.0 1.3 0.0 YGNodeInsertChild(root, child, 0)
68
69 110 44.0 0.4 0.0 for ii in range(10):
70 100 178.0 1.8 0.2 grand_child = YGNodeNew()
71 100 115.0 1.1 0.1 YGNodeStyleSetFlexDirection(grand_child, YGFlexDirection.Row)
72 100 101.0 1.0 0.1 YGNodeStyleSetFlexGrow(grand_child, 1)
73 100 97.0 1.0 0.1 YGNodeStyleSetWidth(grand_child, 10)
74 100 98.0 1.0 0.1 YGNodeStyleSetHeight(grand_child, 10)
75 100 114.0 1.1 0.1 YGNodeInsertChild(child, grand_child, 0)
76
77 1100 561.0 0.5 0.6 for iii in range(10):
78 1000 1782.0 1.8 1.9 grand_grand_child = YGNodeNew()
79 1000 1037.0 1.0 1.1 YGNodeStyleSetFlexGrow(grand_grand_child, 1)
80 1000 997.0 1.0 1.1 YGNodeStyleSetWidth(grand_grand_child, 10)
81 1000 959.0 1.0 1.0 YGNodeStyleSetHeight(grand_grand_child, 10)
82 1000 1177.0 1.2 1.3 YGNodeInsertChild(grand_child, grand_grand_child, 0)
83
84 11000 5725.0 0.5 6.1 for iiii in range(10):
85 10000 17682.0 1.8 18.8 grand_grand_grand_child = YGNodeNew()
86 10000 11032.0 1.1 11.8 YGNodeStyleSetFlexDirection(grand_grand_grand_child, YGFlexDirection.Row)
87 10000 10126.0 1.0 10.8 YGNodeStyleSetFlexGrow(grand_grand_grand_child, 1)
88 10000 10035.0 1.0 10.7 YGNodeStyleSetWidth(grand_grand_grand_child, 10)
89 10000 9814.0 1.0 10.5 YGNodeStyleSetHeight(grand_grand_grand_child, 10)
90 10000 11796.0 1.2 12.6 YGNodeInsertChild(grand_grand_child, grand_grand_grand_child, 0)
91
92 1 8696.0 8696.0 9.3 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirection.LTR)
93 1 1608.0 1608.0 1.7 YGNodeFreeRecursive(root)
```
Raw data
{
"_id": null,
"home_page": "https://github.com/dzhsurf/poga",
"name": "poga",
"maintainer": "dzhsurf",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "dzhsurf@gmail.com",
"keywords": "YogaLayout, Yoga, Poga",
"author": "dzhsurf",
"author_email": "dzhsurf@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/81/96/390e2cbb04c7c66567ad2a23677069c213904faf21e860da967c02e9d712/poga-0.1.19.tar.gz",
"platform": null,
"description": "Poga\n====\n\n [](https://dzhsurf.github.io/poga/) \n\n\n\nIntroduction\n-----------------\n\nPoga is a Python binding for YogaLayout.\n\nIt provides Python API for YogaLayout. And a high-level interface PogaLayout.\n\nYogaLayout: https://yogalayout.com/\n\n\n\nInstall\n-------\n\n```shell\n # Python version requires >= 3.7\n pip install poga\n```\n\n\n\nQuickstart\n----------\n\nUse high-level interface PogaLayout\n\nMore details you can refer to the PGLayout of the pydui-gtk project below.\n\nhttps://github.com/dzhsurf/pydui\n\n```python\n from poga import PogaLayout\n\n def main():\n layout = PogaLayout()\n layout.flex_direction = YGFlexDirection.FlexStart\n # ...\n layout.apply_layout()\n```\n\nUse Binding CAPI directily\n\n```python\n from poga.libpoga_capi import *\n\n def main():\n node = YGNodeNew()\n YGNodeSetNodeType(node, YGNodeType.Default)\n YGNodeFree(node)\n```\n\n\n\nBuilding\n--------\n\nSince there's a need for a cpp compiler to build the python extension module, you should install the build-essential tools before you build the package. \n\n* Windows: `VS16 - VS2019 Build Tools`\n\n* MacOS: `XCode Command Line Tools`\n\n* Linux (Ubuntu): `build-essential`\n\n```shell\n# checkout the code and enter the diretory\npip install -r requirements.txt\npip install -e . \n# or you can just install the dependencies by poetry. \npoetry install\n# now, all done. run the sample code \npython src/example/main.py\n```\n\n\n\nBenchmark\n---------\n\n```shell\n# pip install line_profiler\nkernprof -l benchmark/benchmark.py\npython -m line_profiler -rmt \"benchmark.py.lprof\"\n```\n\nMacBook Pro (15-inch, 2016)\n\n* Processor 2.7GHz Quad-core Intel Core i7\n* Memory 16GB 2133 MHz LPDDR3\n\n\n\n```\nTimer unit: 1e-06 s\n\nTotal time: 0.000141 s\nFile: benchmark.py\nFunction: stack_with_flex at line 14\n\nLine # Hits Time Per Hit % Time Line Contents\n 14 @profile\n 15 def stack_with_flex():\n 16 1 20.0 20.0 14.2 root = YGNodeNew()\n 17 1 10.0 10.0 7.1 YGNodeStyleSetWidth(root, 100)\n 18 1 3.0 3.0 2.1 YGNodeStyleSetHeight(root, 100)\n 19 11 10.0 0.9 7.1 for i in range(10):\n 20 10 23.0 2.3 16.3 child = YGNodeNew()\n 21 10 12.0 1.2 8.5 YGNodeStyleSetFlex(child, i)\n 22 10 16.0 1.6 11.3 YGNodeInsertChild(root, child, 0)\n 23\n 24 1 37.0 37.0 26.2 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirection.LTR)\n 25 1 10.0 10.0 7.1 YGNodeFreeRecursive(root)\n\nTotal time: 0.000169 s\nFile: benchmark.py\nFunction: align_stretch_in_undefined_axis at line 28\n\nLine # Hits Time Per Hit % Time Line Contents\n 28 @profile\n 29 def align_stretch_in_undefined_axis():\n 30 1 2.0 2.0 1.2 root = YGNodeNew()\n 31 11 6.0 0.5 3.6 for i in range(10):\n 32 10 14.0 1.4 8.3 child = YGNodeNew()\n 33 10 10.0 1.0 5.9 YGNodeStyleSetHeight(child, 20)\n 34 10 12.0 1.2 7.1 YGNodeSetMeasureFunc(child, measure_fn)\n 35 10 12.0 1.2 7.1 YGNodeInsertChild(root, child, 0)\n 36\n 37 1 110.0 110.0 65.1 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirection.LTR)\n 38 1 3.0 3.0 1.8 YGNodeFreeRecursive(root)\n\nTotal time: 0.001685 s\nFile: benchmark.py\nFunction: nested_flex at line 41\n\nLine # Hits Time Per Hit % Time Line Contents\n==============================================================\n 41 @profile\n 42 def nested_flex():\n 43 1 2.0 2.0 0.1 root = YGNodeNew()\n 44 11 6.0 0.5 0.4 for i in range(10):\n 45 10 17.0 1.7 1.0 child = YGNodeNew()\n 46 10 11.0 1.1 0.7 YGNodeStyleSetFlex(child, 1)\n 47 10 14.0 1.4 0.8 YGNodeInsertChild(root, child, 0)\n 48\n 49 110 53.0 0.5 3.1 for ii in range(10):\n 50 100 197.0 2.0 11.7 grand_child = YGNodeNew()\n 51 100 111.0 1.1 6.6 YGNodeSetMeasureFunc(grand_child, measure_fn)\n 52 100 109.0 1.1 6.5 YGNodeStyleSetFlex(grand_child, 1)\n 53 100 121.0 1.2 7.2 YGNodeInsertChild(child, grand_child, 0)\n 54\n 55 1 1029.0 1029.0 61.1 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirection.LTR)\n 56 1 15.0 15.0 0.9 YGNodeFreeRecursive(root)\n\nTotal time: 0.093843 s\nFile: benchmark.py\nFunction: huge_nested_layout at line 59\n\nLine # Hits Time Per Hit % Time Line Contents\n 59 @profile\n 60 def huge_nested_layout():\n 61 1 2.0 2.0 0.0 root = YGNodeNew()\n 62 11 6.0 0.5 0.0 for i in range(10):\n 63 10 15.0 1.5 0.0 child = YGNodeNew()\n 64 10 11.0 1.1 0.0 YGNodeStyleSetFlexGrow(child, 1)\n 65 10 11.0 1.1 0.0 YGNodeStyleSetWidth(child, 10)\n 66 10 11.0 1.1 0.0 YGNodeStyleSetHeight(child, 10)\n 67 10 13.0 1.3 0.0 YGNodeInsertChild(root, child, 0)\n 68\n 69 110 44.0 0.4 0.0 for ii in range(10):\n 70 100 178.0 1.8 0.2 grand_child = YGNodeNew()\n 71 100 115.0 1.1 0.1 YGNodeStyleSetFlexDirection(grand_child, YGFlexDirection.Row)\n 72 100 101.0 1.0 0.1 YGNodeStyleSetFlexGrow(grand_child, 1)\n 73 100 97.0 1.0 0.1 YGNodeStyleSetWidth(grand_child, 10)\n 74 100 98.0 1.0 0.1 YGNodeStyleSetHeight(grand_child, 10)\n 75 100 114.0 1.1 0.1 YGNodeInsertChild(child, grand_child, 0)\n 76\n 77 1100 561.0 0.5 0.6 for iii in range(10):\n 78 1000 1782.0 1.8 1.9 grand_grand_child = YGNodeNew()\n 79 1000 1037.0 1.0 1.1 YGNodeStyleSetFlexGrow(grand_grand_child, 1)\n 80 1000 997.0 1.0 1.1 YGNodeStyleSetWidth(grand_grand_child, 10)\n 81 1000 959.0 1.0 1.0 YGNodeStyleSetHeight(grand_grand_child, 10)\n 82 1000 1177.0 1.2 1.3 YGNodeInsertChild(grand_child, grand_grand_child, 0)\n 83\n 84 11000 5725.0 0.5 6.1 for iiii in range(10):\n 85 10000 17682.0 1.8 18.8 grand_grand_grand_child = YGNodeNew()\n 86 10000 11032.0 1.1 11.8 YGNodeStyleSetFlexDirection(grand_grand_grand_child, YGFlexDirection.Row)\n 87 10000 10126.0 1.0 10.8 YGNodeStyleSetFlexGrow(grand_grand_grand_child, 1)\n 88 10000 10035.0 1.0 10.7 YGNodeStyleSetWidth(grand_grand_grand_child, 10)\n 89 10000 9814.0 1.0 10.5 YGNodeStyleSetHeight(grand_grand_grand_child, 10)\n 90 10000 11796.0 1.2 12.6 YGNodeInsertChild(grand_grand_child, grand_grand_grand_child, 0)\n 91\n 92 1 8696.0 8696.0 9.3 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirection.LTR)\n 93 1 1608.0 1608.0 1.7 YGNodeFreeRecursive(root)\n```\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python bindings for YogaLayout",
"version": "0.1.19",
"project_urls": {
"Homepage": "https://github.com/dzhsurf/poga",
"Repository": "https://github.com/dzhsurf/poga"
},
"split_keywords": [
"yogalayout",
" yoga",
" poga"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c4fb056f65a52b00f445c096f75219547ca383c21e29529648aaa8f4f6f55916",
"md5": "4c7b7c175fd95dd89b6a20f70b874755",
"sha256": "dcf54dec0416585e75de001366c892e696480e608102cbcd97a319af94b01b1d"
},
"downloads": -1,
"filename": "poga-0.1.19-cp310-cp310-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "4c7b7c175fd95dd89b6a20f70b874755",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 494773,
"upload_time": "2025-03-19T05:52:52",
"upload_time_iso_8601": "2025-03-19T05:52:52.294140Z",
"url": "https://files.pythonhosted.org/packages/c4/fb/056f65a52b00f445c096f75219547ca383c21e29529648aaa8f4f6f55916/poga-0.1.19-cp310-cp310-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "12afca23d19eacf9aa553f668f3a03c0e1f2266e27167f964d29d877883e1b53",
"md5": "806cd0b26d443861f8028dd0b950a188",
"sha256": "ba224a23a0c38597729a79e539496ceb6f9c610e1956e8b2b4e444828db1a393"
},
"downloads": -1,
"filename": "poga-0.1.19-cp310-cp310-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "806cd0b26d443861f8028dd0b950a188",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 568866,
"upload_time": "2025-03-19T05:52:53",
"upload_time_iso_8601": "2025-03-19T05:52:53.659807Z",
"url": "https://files.pythonhosted.org/packages/12/af/ca23d19eacf9aa553f668f3a03c0e1f2266e27167f964d29d877883e1b53/poga-0.1.19-cp310-cp310-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ffcd9c7afac44537d9a232d4a6ce4a18e6ad18e8fa696af29859a6316b4b6c12",
"md5": "7fc9ce4d4f478c3747ea2c2987b2aecb",
"sha256": "578b5e0141b197a32a0fc7135378467c7be59c8b155b8712f806a8750d3eaac3"
},
"downloads": -1,
"filename": "poga-0.1.19-cp310-cp310-manylinux_2_39_x86_64.whl",
"has_sig": false,
"md5_digest": "7fc9ce4d4f478c3747ea2c2987b2aecb",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 3771627,
"upload_time": "2025-03-19T05:52:55",
"upload_time_iso_8601": "2025-03-19T05:52:55.118542Z",
"url": "https://files.pythonhosted.org/packages/ff/cd/9c7afac44537d9a232d4a6ce4a18e6ad18e8fa696af29859a6316b4b6c12/poga-0.1.19-cp310-cp310-manylinux_2_39_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "05f72f14c5b3225c6bade2558ef14f7d3dc3551b0973effcb6ea62f82179ea85",
"md5": "729ef9e3e8d67610420577f438b121a7",
"sha256": "3a95c91feb6e1e9acc0e2e64816c0d0cb3965ff20e57d629e4e92cd8487f8dd5"
},
"downloads": -1,
"filename": "poga-0.1.19-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "729ef9e3e8d67610420577f438b121a7",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 254251,
"upload_time": "2025-03-19T05:52:56",
"upload_time_iso_8601": "2025-03-19T05:52:56.438566Z",
"url": "https://files.pythonhosted.org/packages/05/f7/2f14c5b3225c6bade2558ef14f7d3dc3551b0973effcb6ea62f82179ea85/poga-0.1.19-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1bef399ceabfbad3b2d3ca737b75627f0e7b371dff3fcd30000bcb29ec4cb78d",
"md5": "4fe0fcccb78552ce9406d3e3b25d5cca",
"sha256": "fe92215c2e31f05ccfe76f1adae00f7a641bf26204d241e5c4f191a10333603a"
},
"downloads": -1,
"filename": "poga-0.1.19-cp311-cp311-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "4fe0fcccb78552ce9406d3e3b25d5cca",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 497398,
"upload_time": "2025-03-19T05:52:57",
"upload_time_iso_8601": "2025-03-19T05:52:57.559324Z",
"url": "https://files.pythonhosted.org/packages/1b/ef/399ceabfbad3b2d3ca737b75627f0e7b371dff3fcd30000bcb29ec4cb78d/poga-0.1.19-cp311-cp311-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1ec8b1daf8860b93d66c9fce6469d7ddb9969bad1062cb8b285cea6451530185",
"md5": "15429df976620c087a22d4be11ec5841",
"sha256": "ef95a9a88ec9e3f3a8b117f6e186f61e7d021e7e60646158efc9720c0d743c9c"
},
"downloads": -1,
"filename": "poga-0.1.19-cp311-cp311-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "15429df976620c087a22d4be11ec5841",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 571490,
"upload_time": "2025-03-19T05:52:58",
"upload_time_iso_8601": "2025-03-19T05:52:58.707639Z",
"url": "https://files.pythonhosted.org/packages/1e/c8/b1daf8860b93d66c9fce6469d7ddb9969bad1062cb8b285cea6451530185/poga-0.1.19-cp311-cp311-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0f9d4ee13da01687ff567432eb434aae1af68b87d66687684cad4f2b987359fe",
"md5": "0ca31d60a22f8a87ed267b2e531cb64b",
"sha256": "8d556d3aa2e557884530174dc7433e7f0fec6ccc226489aa50be6c70b4303f10"
},
"downloads": -1,
"filename": "poga-0.1.19-cp311-cp311-manylinux_2_39_x86_64.whl",
"has_sig": false,
"md5_digest": "0ca31d60a22f8a87ed267b2e531cb64b",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 3797947,
"upload_time": "2025-03-19T05:53:00",
"upload_time_iso_8601": "2025-03-19T05:53:00.545661Z",
"url": "https://files.pythonhosted.org/packages/0f/9d/4ee13da01687ff567432eb434aae1af68b87d66687684cad4f2b987359fe/poga-0.1.19-cp311-cp311-manylinux_2_39_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bcf65daf1ef64e317a66855eee512ba126efb438479c5101dc41202df6eddc98",
"md5": "e456b1506bd7f690f63a2010a60ab833",
"sha256": "44d790e285dd1643e2e1b1e8635bfc551864b1baa4f874c9089584538026a4eb"
},
"downloads": -1,
"filename": "poga-0.1.19-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "e456b1506bd7f690f63a2010a60ab833",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 254220,
"upload_time": "2025-03-19T05:53:01",
"upload_time_iso_8601": "2025-03-19T05:53:01.800351Z",
"url": "https://files.pythonhosted.org/packages/bc/f6/5daf1ef64e317a66855eee512ba126efb438479c5101dc41202df6eddc98/poga-0.1.19-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "de686f93620271c4950c5712565f45c77e3023493e12dbf82d96b70e008d4e31",
"md5": "4764c1e48e46040d540869317867f5c2",
"sha256": "d06d64d951df2f815c5e6ace77b9932bd07fc3d612cb2270cf1ab61f375df3b6"
},
"downloads": -1,
"filename": "poga-0.1.19-cp312-cp312-macosx_10_13_universal2.whl",
"has_sig": false,
"md5_digest": "4764c1e48e46040d540869317867f5c2",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.7",
"size": 502247,
"upload_time": "2025-03-19T05:53:02",
"upload_time_iso_8601": "2025-03-19T05:53:02.978562Z",
"url": "https://files.pythonhosted.org/packages/de/68/6f93620271c4950c5712565f45c77e3023493e12dbf82d96b70e008d4e31/poga-0.1.19-cp312-cp312-macosx_10_13_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "34898bf33395ca562ebf386c538b2b7d855dbf0ab1a65a0753bbd28934e2846e",
"md5": "767bfc9b4d2be46759c8c4e83efb67c4",
"sha256": "34bc6127b1b26e7df29cc2330264730ec804cbf262b5e95be59734ec0711022e"
},
"downloads": -1,
"filename": "poga-0.1.19-cp312-cp312-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "767bfc9b4d2be46759c8c4e83efb67c4",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.7",
"size": 576336,
"upload_time": "2025-03-19T05:53:04",
"upload_time_iso_8601": "2025-03-19T05:53:04.883222Z",
"url": "https://files.pythonhosted.org/packages/34/89/8bf33395ca562ebf386c538b2b7d855dbf0ab1a65a0753bbd28934e2846e/poga-0.1.19-cp312-cp312-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "95798702bf29f927bfe42ca75e7c70e464746bf6c131eafe42bec1d97be25e58",
"md5": "08bf9eaac943352cc3f22e2252c39bf5",
"sha256": "ea2be1814e1d684223e0737ac6763ba21350c271a1944222e30b39b345cec2fa"
},
"downloads": -1,
"filename": "poga-0.1.19-cp312-cp312-manylinux_2_39_x86_64.whl",
"has_sig": false,
"md5_digest": "08bf9eaac943352cc3f22e2252c39bf5",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.7",
"size": 3742474,
"upload_time": "2025-03-19T05:53:06",
"upload_time_iso_8601": "2025-03-19T05:53:06.273569Z",
"url": "https://files.pythonhosted.org/packages/95/79/8702bf29f927bfe42ca75e7c70e464746bf6c131eafe42bec1d97be25e58/poga-0.1.19-cp312-cp312-manylinux_2_39_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1eb5c66c0d7ee53dbbece8302e227035ec5e9be9764603da2fa43450f51a3ca8",
"md5": "a1c1cc1a308a373be740cbf2f9a43f5d",
"sha256": "026d2fc53c3b8e4bc735ffa6949347484d5bde8c9599f4b275ad8f7a6529c9b8"
},
"downloads": -1,
"filename": "poga-0.1.19-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "a1c1cc1a308a373be740cbf2f9a43f5d",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.7",
"size": 256514,
"upload_time": "2025-03-19T05:53:07",
"upload_time_iso_8601": "2025-03-19T05:53:07.524515Z",
"url": "https://files.pythonhosted.org/packages/1e/b5/c66c0d7ee53dbbece8302e227035ec5e9be9764603da2fa43450f51a3ca8/poga-0.1.19-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9f746830f5e466aff50e9cb9179f98b4c3ab6c8bae0463d027eba03d07008f32",
"md5": "614e77accd6a94b9fc4e28e5d5389994",
"sha256": "2f59d8ba01c4631aecacaa901da7958a9a49670dba8ba295f55e4c276067f1ff"
},
"downloads": -1,
"filename": "poga-0.1.19-cp38-cp38-macosx_11_0_universal2.whl",
"has_sig": false,
"md5_digest": "614e77accd6a94b9fc4e28e5d5389994",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.7",
"size": 494339,
"upload_time": "2025-03-19T05:53:08",
"upload_time_iso_8601": "2025-03-19T05:53:08.589031Z",
"url": "https://files.pythonhosted.org/packages/9f/74/6830f5e466aff50e9cb9179f98b4c3ab6c8bae0463d027eba03d07008f32/poga-0.1.19-cp38-cp38-macosx_11_0_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "62ca46cfe123bb1adbccedd51796f6d90014a93ccdf2d42c3367a15dccb7e4e0",
"md5": "e295bbc67040ce91ccd36ccc6fcc9da3",
"sha256": "9a598a4b42ae314e582b506d9072e4cadafbcee009adbc1a7f0ffef56345d62a"
},
"downloads": -1,
"filename": "poga-0.1.19-cp38-cp38-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "e295bbc67040ce91ccd36ccc6fcc9da3",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.7",
"size": 568445,
"upload_time": "2025-03-19T05:53:09",
"upload_time_iso_8601": "2025-03-19T05:53:09.772069Z",
"url": "https://files.pythonhosted.org/packages/62/ca/46cfe123bb1adbccedd51796f6d90014a93ccdf2d42c3367a15dccb7e4e0/poga-0.1.19-cp38-cp38-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3457d8e089c691d46ab74465fc5253f3c99b18b0bed6a3b4148e783de8c5211d",
"md5": "edc5499f5455ca82d23ba934512ca7fc",
"sha256": "b58e2c2c5d4c1a4952121907220571a7218ddb959263b93608634309e17049e1"
},
"downloads": -1,
"filename": "poga-0.1.19-cp38-cp38-manylinux_2_39_x86_64.whl",
"has_sig": false,
"md5_digest": "edc5499f5455ca82d23ba934512ca7fc",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.7",
"size": 3779625,
"upload_time": "2025-03-19T05:53:11",
"upload_time_iso_8601": "2025-03-19T05:53:11.047265Z",
"url": "https://files.pythonhosted.org/packages/34/57/d8e089c691d46ab74465fc5253f3c99b18b0bed6a3b4148e783de8c5211d/poga-0.1.19-cp38-cp38-manylinux_2_39_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f403cd316964f664aeb9b420e5cacf7d93d69bd67cd50d1d2e2930d2f250fce0",
"md5": "0a85dd65c1cfb80ffa02570aa6b93705",
"sha256": "266721cd1857a3c8e98be8db288e490e55ef4ff8e33ea2d376b4c98a89ca7c3e"
},
"downloads": -1,
"filename": "poga-0.1.19-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "0a85dd65c1cfb80ffa02570aa6b93705",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.7",
"size": 254336,
"upload_time": "2025-03-19T05:53:12",
"upload_time_iso_8601": "2025-03-19T05:53:12.257579Z",
"url": "https://files.pythonhosted.org/packages/f4/03/cd316964f664aeb9b420e5cacf7d93d69bd67cd50d1d2e2930d2f250fce0/poga-0.1.19-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "84e5aa281f54de01bba3c260f667b631a645c6c7c5129d6ef0c4faccc701ac81",
"md5": "46fa374b3af7c1c91bccceba71f4fdee",
"sha256": "c51ff842533d35d0f8c37abf73b2c1d663804e6456a85032d3499b53f437e337"
},
"downloads": -1,
"filename": "poga-0.1.19-cp39-cp39-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "46fa374b3af7c1c91bccceba71f4fdee",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 495026,
"upload_time": "2025-03-19T05:53:13",
"upload_time_iso_8601": "2025-03-19T05:53:13.906767Z",
"url": "https://files.pythonhosted.org/packages/84/e5/aa281f54de01bba3c260f667b631a645c6c7c5129d6ef0c4faccc701ac81/poga-0.1.19-cp39-cp39-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4fb571be9232664edfda194461a9f67b3d006d091546175ecbd42f98348563de",
"md5": "33dae7e0885c4a350a579f3ff4103465",
"sha256": "3cfce5e08e366ea3f26154c5ad46711b4531121f44e41fe03e12aee62c6f7c27"
},
"downloads": -1,
"filename": "poga-0.1.19-cp39-cp39-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "33dae7e0885c4a350a579f3ff4103465",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 569117,
"upload_time": "2025-03-19T05:53:15",
"upload_time_iso_8601": "2025-03-19T05:53:15.223002Z",
"url": "https://files.pythonhosted.org/packages/4f/b5/71be9232664edfda194461a9f67b3d006d091546175ecbd42f98348563de/poga-0.1.19-cp39-cp39-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d9f93a9f3f335d33868382a2c5bc4427d4fc1bed842bc84711d20db0d86c518a",
"md5": "d553d0fe7d6b7bf2181defa4ca124853",
"sha256": "3e72ab99bcf61cde6762d85df842e37d988dfdaef870e0547b8145a20ad040f4"
},
"downloads": -1,
"filename": "poga-0.1.19-cp39-cp39-manylinux_2_39_x86_64.whl",
"has_sig": false,
"md5_digest": "d553d0fe7d6b7bf2181defa4ca124853",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 3764435,
"upload_time": "2025-03-19T05:53:16",
"upload_time_iso_8601": "2025-03-19T05:53:16.803733Z",
"url": "https://files.pythonhosted.org/packages/d9/f9/3a9f3f335d33868382a2c5bc4427d4fc1bed842bc84711d20db0d86c518a/poga-0.1.19-cp39-cp39-manylinux_2_39_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "27a33f226483059f11129d37cca122910cb34781e6ce934a9bb991260503c78e",
"md5": "87ca541b3349181bfda8b7fbb3ce7f10",
"sha256": "935733cfdee0897bb031f89d471c76ee1fa7dc16fefc09cd215ba0a55636a254"
},
"downloads": -1,
"filename": "poga-0.1.19-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "87ca541b3349181bfda8b7fbb3ce7f10",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 244771,
"upload_time": "2025-03-19T05:53:18",
"upload_time_iso_8601": "2025-03-19T05:53:18.163334Z",
"url": "https://files.pythonhosted.org/packages/27/a3/3f226483059f11129d37cca122910cb34781e6ce934a9bb991260503c78e/poga-0.1.19-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8196390e2cbb04c7c66567ad2a23677069c213904faf21e860da967c02e9d712",
"md5": "7ff7b536cfb07875ac2b64fa242471bb",
"sha256": "93a28fcf60a43fe53170c0b79763f81c906c8336691ad8f406db699696d78f7c"
},
"downloads": -1,
"filename": "poga-0.1.19.tar.gz",
"has_sig": false,
"md5_digest": "7ff7b536cfb07875ac2b64fa242471bb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 72561,
"upload_time": "2025-03-19T05:53:19",
"upload_time_iso_8601": "2025-03-19T05:53:19.172989Z",
"url": "https://files.pythonhosted.org/packages/81/96/390e2cbb04c7c66567ad2a23677069c213904faf21e860da967c02e9d712/poga-0.1.19.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-03-19 05:53:19",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "dzhsurf",
"github_project": "poga",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "pybind11",
"specs": [
[
"==",
"2.13.6"
]
]
}
],
"lcname": "poga"
}