{"name":"py39-greenlet","portdir":"python/py-greenlet","version":"3.2.4","license":"MIT and PSF","platforms":"darwin","epoch":0,"replaced_by":null,"homepage":"https://github.com/python-greenlet/greenlet","description":"Lightweight in-process concurrent programming","long_description":"The \"greenlet\" package is a spin-off of Stackless, a version of CPython that supports micro-threads called \"tasklets\". Tasklets run pseudo-concurrently (typically in a single or a few OS-level threads) and are synchronized with data exchanges on \"channels\". A \"greenlet\", on the other hand, is a still more primitive notion of micro-thread with no implicit scheduling; coroutines, in other words. This is useful when you want to control exactly when your code runs. You can build custom scheduled micro-threads on top of greenlet; however, it seems that greenlets are useful on their own as a way to make advanced control flow structures. For example, we can recreate generators; the difference with Python's own generators is that our generators can call nested functions and the nested functions can yield values too. Additionally, you don't need a \"yield\" keyword. See the example in test_generator.py. Greenlets are provided as a C extension module for the regular unmodified interpreter.","active":false,"categories":["devel","python"],"maintainers":[{"name":"stromnov","github":"stromnov","ports_count":2891}],"variants":["universal"],"dependencies":[{"type":"build","ports":["py39-build","py39-setuptools","py39-wheel","py39-installer","clang-18"]},{"type":"lib","ports":["python39"]},{"type":"test","ports":["py39-pytest"]}],"depends_on":[{"type":"lib","ports":["py39-neovim","py39-sqlalchemy","py39-httpbin","py39-gevent","py39-scoop","py39-bpython","py39-eventlet"]},{"type":"test","ports":["py39-werkzeug"]}]}