{ "info": { "author": "Adam Karpierz", "author_email": "adam@karpierz.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: zlib/libpng License", "Natural Language :: Polish", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: IronPython", "Programming Language :: Python :: Implementation :: Jython", "Programming Language :: Python :: Implementation :: PyPy", "Programming Language :: Python :: Implementation :: Stackless", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "annotate\n========\n\nFunction annotations for Python2.\n\nFeatures\n========\n\n**@annotate**\n\n| Decorator to set a function's __annotations__ like Py3.\n| http://www.python.org/dev/peps/pep-3107/\n\nOverview\n========\n\nTODO...\n\nExamples\n========\n\n.. code:: python\n\n from typing import Optional, Tuple, Union, Sequence\n from annotate import annotate\n\n from .lib import cached\n from . import jni\n\n from .jobjectbase import JObjectBase\n from .jclass import JClass\n from .jobject import JObject\n\n\n class JArray(JObjectBase):\n\n \"\"\"Java Array\"\"\"\n\n @classmethod\n @annotate('JArray', size=Union[int, long])\n def newBooleanArray(cls, size):\n ...\n ...\n @classmethod\n @annotate('JArray', size=Union[int, long])\n def newDoubleArray(cls, size):\n ...\n @classmethod\n @annotate('JArray', size=Union[int, long])\n def newStringArray(cls, size):\n ...\n @classmethod\n @annotate('JArray', size=Union[int, long], component_class=JClass)\n def newObjectArray(cls, size, component_class):\n ...\n\n @annotate(jenv=jni.JNIEnv, jarr=jni.jarray, borrowed=bool)\n def __init__(self, jenv, jarr, borrowed=False):\n ...\n\n def __hash__(self):\n return super(JArray, self).__hash__()\n\n def __len__(self):\n return self.getLength()\n\n @annotate(JObject, borrowed=bool)\n def asObject(self, borrowed=False):\n ...\n\n @cached\n @annotate(int)\n def getLength(self):\n ...\n\n @annotate(bool, idx=int)\n def getBoolean(self, idx):\n ...\n ...\n @annotate(float, idx=int)\n def getDouble(self, idx):\n ...\n @annotate(Optional[str], idx=int)\n def getString(self, idx):\n ...\n @annotate(Optional[JObject], idx=int)\n def getObject(self, idx):\n ...\n\n @annotate(idx=int, val=bool)\n def setBoolean(self, idx, val):\n ...\n @annotate(idx=int, val=str)\n def setChar(self, idx, val):\n ...\n ...\n @annotate(idx=int, val=Union[int, long])\n def setLong(self, idx, val):\n ...\n @annotate(idx=int, val=float)\n def setDouble(self, idx, val):\n ...\n @annotate(idx=int, val=Optional[str])\n def setString(self, idx, val):\n ...\n @annotate(idx=int, val=Optional[JObject])\n def setObject(self, idx, val):\n ...\n\n @annotate('JArray', start=int, stop=int, step=int)\n def getBooleanSlice(self, start, stop, step):\n ...\n ...\n @annotate('JArray', start=int, stop=int, step=int)\n def getDoubleSlice(self, start, stop, step):\n ...\n @annotate('JArray', start=int, stop=int, step=int)\n def getStringSlice(self, start, stop, step):\n ...\n @annotate('JArray', start=int, stop=int, step=int)\n def getObjectSlice(self, start, stop, step):\n ...\n\n @annotate(start=int, stop=int, step=int, val=Sequence[bool])\n def setBooleanSlice(self, start, stop, step, val):\n ...\n @annotate(start=int, stop=int, step=int, val=Union[Sequence[str], str])\n def setCharSlice(self, start, stop, step, val):\n ...\n @annotate(start=int, stop=int, step=int,\n val=Union[Sequence[Union[int,bytes]], (bytes, bytearray)])\n def setByteSlice(self, start, stop, step, val):\n ...\n ...\n @annotate(start=int, stop=int, step=int, val=Sequence[float])\n def setDoubleSlice(self, start, stop, step, val):\n ...\n @annotate(start=int, stop=int, step=int, val=Sequence[Optional[str]])\n def setStringSlice(self, start, stop, step, val):\n ...\n @annotate(start=int, stop=int, step=int, val=Sequence[Optional[JObject]])\n def setObjectSlice(self, start, stop, step, val):\n ...\n\n @annotate(Tuple)\n def getBooleanBuffer(self):\n with self.jvm as (jvm, jenv):\n is_copy = jni.jboolean()\n return jenv.GetBooleanArrayElements(self._jobj, is_copy), jni.sizeof(jni.jboolean), b\"B\", is_copy\n ...\n @annotate(Tuple)\n def getDoubleBuffer(self):\n with self.jvm as (jvm, jenv):\n is_copy = jni.jboolean()\n return jenv.GetDoubleArrayElements(self._jobj, is_copy), jni.sizeof(jni.jdouble), b\"d\", is_copy\n\n @annotate(buf=object)\n def releaseBooleanBuffer(self, buf):\n with self.jvm as (jvm, jenv):\n jenv.ReleaseBooleanArrayElements(self._jobj, jni.cast(buf, jni.POINTER(jni.jboolean)))\n ...\n @annotate(buf=object)\n def releaseDoubleBuffer(self, buf):\n with self.jvm as (jvm, jenv):\n jenv.ReleaseDoubleArrayElements(self._jobj, jni.cast(buf, jni.POINTER(jni.jdouble)))\n\nInstallation\n============\n\nPrerequisites:\n\n+ Python 2.7 or Python 3.4 or later\n\n * http://www.python.org/\n * 2.7 and 3.7 are primary test environments.\n\n+ pip and setuptools\n\n * http://pypi.org/project/pip/\n * http://pypi.org/project/setuptools/\n\nTo install run::\n\n python -m pip install --upgrade annotate\n\nDevelopment\n===========\n\nVisit `development page `__\n\nInstallation from sources:\n\nClone the `sources `__ and run::\n\n python -m pip install ./annotate\n\nor on development mode::\n\n python -m pip install --editable ./annotate\n\nPrerequisites:\n\n+ Development is strictly based on *tox*. To install it run::\n\n python -m pip install tox\n\nLicense\n=======\n\n | Copyright (c) 2012-2019 Adam Karpierz\n |\n | Licensed under the zlib/libpng License\n | http://opensource.org/licenses/zlib/\n | Please refer to the accompanying LICENSE file.\n\nAuthors\n=======\n\n* Adam Karpierz \n\n.. _`development page`: https://github.com/karpierz/annotate/\n\nChangelog\n=========\n\n1.0.8 (2019-05-21)\n------------------\n- Update required setuptools version.\n- Setup update and improvements.\n\n1.0.7 (2018-11-08)\n------------------\n- Drop support for Python 2.6 and 3.0-3.3\n- Update required setuptools version.\n\n1.0.6 (2018-05-08)\n------------------\n- Update required setuptools version.\n- Improve and simplify setup and packaging.\n\n1.0.5 (2018-02-26)\n------------------\n- Improve and simplify setup and packaging.\n\n1.0.4 (2018-01-28)\n------------------\n- Fix a bug and inconsistencies in tox.ini\n- Update of README.rst.\n\n1.0.1 (2018-01-24)\n------------------\n- Update required Sphinx version.\n- Update doc Sphinx configuration files.\n\n1.0.0 (2017-11-18)\n------------------\n- Setup improvements.\n- Other minor improvements.\n\n0.7.4 (2017-01-05)\n------------------\n- Minor setup improvements.\n\n0.7.3 (2016-09-25)\n------------------\n- Fix bug in setup.py\n\n0.7.1 (2016-09-25)\n------------------\n- More PEP8 compliant\n\n0.6.7 (2016-09-24)\n------------------\n- Minor description suplement\n\n0.6.4 (2016-09-23)\n------------------\n- Simplify package structure.\n\n0.6.3 (2016-06-19)\n------------------\n- | Fix incompatibility for older versions of setuptools.\n | Add example.\n\n0.6.0 (2015-08-17)\n------------------\n- Python3 support.\n\n0.5.1 (2015-02-27)\n------------------\n- | Remove 'returns' as keyword argument for declare return type.\n | For now, the type of returned value should be declared by the\n | first positional argument.\n\n0.3.3 (2014-09-15)\n------------------\n- Add wheels.\n\n0.3.2 (2014-09-13)\n------------------\n- Standarize package.\n\n0.3.0 (2014-09-06)\n------------------\n- Standarize package.\n- Cosmetic changes.\n\n0.2.6 (2014-06-10)\n------------------\n- Portable setup.py.\n\n0.2.5 (2014-06-10)\n------------------\n- Cosmetic changes.\n\n0.2.3 (2012-10-13)\n------------------\n- Initial release.", "description_content_type": "", "docs_url": null, "download_url": "http://pypi.org/project/annotate/", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.org/project/annotate/", "keywords": "annotate,typing,decorator", "license": "zlib/libpng License ; http://opensource.org/licenses/zlib/", "maintainer": "Adam Karpierz", "maintainer_email": "adam@karpierz.net", "name": "annotate", "package_url": "https://pypi.org/project/annotate/", "platform": "any", "project_url": "https://pypi.org/project/annotate/", "project_urls": { "Download": "http://pypi.org/project/annotate/", "Homepage": "http://pypi.org/project/annotate/" }, "release_url": "https://pypi.org/project/annotate/1.0.8/", "requires_dist": null, "requires_python": ">=2.7.0,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "summary": "Decorator to set a function's __annotations__ like Py3", "version": "1.0.8" }, "last_serial": 5853215, "releases": { "1.0.7": [ { "comment_text": "", "digests": { "md5": "73a24c3b295c0479891ba7abb2a132b0", "sha256": "d05f0078fe3ae6e8c67eb579108bdd074e161adaa8ea18fc08fa6d361fb2d6bd" }, "downloads": -1, "filename": "annotate-1.0.7.zip", "has_sig": false, "md5_digest": "73a24c3b295c0479891ba7abb2a132b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13194, "upload_time": "2018-11-08T20:47:23", "url": "https://files.pythonhosted.org/packages/63/5b/9b6557a1bf9356ba9630229bdb16da2f61ed1a0e9b805210b86248ccf015/annotate-1.0.7.zip" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "b3379c1dd1847df1a070b1c2f76bc548", "sha256": "09b375a06d596ab2cbe7b6cc6a1eb7acebbba26f6c19bee8694681777ba484a2" }, "downloads": -1, "filename": "annotate-1.0.8.zip", "has_sig": false, "md5_digest": "b3379c1dd1847df1a070b1c2f76bc548", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7.0,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 17214, "upload_time": "2019-05-21T22:13:58", "url": "https://files.pythonhosted.org/packages/2b/64/e59ed3850d50908b11691300fb12c4db42822b186c9a85e160df5702c606/annotate-1.0.8.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b3379c1dd1847df1a070b1c2f76bc548", "sha256": "09b375a06d596ab2cbe7b6cc6a1eb7acebbba26f6c19bee8694681777ba484a2" }, "downloads": -1, "filename": "annotate-1.0.8.zip", "has_sig": false, "md5_digest": "b3379c1dd1847df1a070b1c2f76bc548", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7.0,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 17214, "upload_time": "2019-05-21T22:13:58", "url": "https://files.pythonhosted.org/packages/2b/64/e59ed3850d50908b11691300fb12c4db42822b186c9a85e160df5702c606/annotate-1.0.8.zip" } ] }