{ "info": { "author": "herr kaste", "author_email": "herr.kaste@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Programming Language :: Python", "Topic :: Software Development :: Quality Assurance", "Topic :: Software Development :: Testing", "Topic :: Utilities" ], "description": "Inspired by pythons new *asyncio*, this package implements the most basic synchronization primitives to work with ndb's tasklets for the Google AppEngine (GAE)\n\n\nInstall\n=======\n\n``pip install ndb-x``\n\n\n\nUsage\n=====\n\nWe have the three primitives ``Lock``, ``Semaphore`` and ``BoundedSemaphore``. Usage is, what you expect, straightforward::\n\n\n from google.appengine.ext import ndb\n from ndbx.locks import Lock\n\n\n lock = Lock()\n\n\n @ndb.tasklet\n def work_async():\n # using a context-manager will release the lock automatically\n with (yield lock.acquire()):\n rv = yield do_something_async()\n\n\n @ndb.tasklet\n def traditional_flow():\n yield lock.acquire()\n try:\n # do something\n finally:\n lock.release()", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/kaste/ndb-x", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "ndb-x", "package_url": "https://pypi.org/project/ndb-x/", "platform": "linux,osx,win32", "project_url": "https://pypi.org/project/ndb-x/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/kaste/ndb-x" }, "release_url": "https://pypi.org/project/ndb-x/0.0.1/", "requires_dist": null, "requires_python": null, "summary": "Synchronization primitives for ndb tasklets on Google App Engine (GAE)", "version": "0.0.1" }, "last_serial": 1074326, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "f41f0b2ab976c073d93ce35ce8396720", "sha256": "44727faa5778d9946f34e47d75fa2fca9eac0740dec77dbc7a900406080b8aaf" }, "downloads": -1, "filename": "ndb-x-0.0.1.zip", "has_sig": false, "md5_digest": "f41f0b2ab976c073d93ce35ce8396720", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8209, "upload_time": "2014-04-28T15:00:23", "url": "https://files.pythonhosted.org/packages/71/3e/7b25ff5360a120f508cff33f2f6c08987ddd13d2dc0d9e8f85e45a9f408f/ndb-x-0.0.1.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f41f0b2ab976c073d93ce35ce8396720", "sha256": "44727faa5778d9946f34e47d75fa2fca9eac0740dec77dbc7a900406080b8aaf" }, "downloads": -1, "filename": "ndb-x-0.0.1.zip", "has_sig": false, "md5_digest": "f41f0b2ab976c073d93ce35ce8396720", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8209, "upload_time": "2014-04-28T15:00:23", "url": "https://files.pythonhosted.org/packages/71/3e/7b25ff5360a120f508cff33f2f6c08987ddd13d2dc0d9e8f85e45a9f408f/ndb-x-0.0.1.zip" } ] }