annotate
Function annotations.
Overview
@annotate
| Decorator to set a function's annotations like Py3.
| https://www.python.org/dev/peps/pep-3107/
PyPI record
_.
Documentation
_.
Examples
.. code:: python
from typing import Optional, Tuple, Union, Sequence
from annotate import annotate
from .lib import cached
from . import jni
from .jobjectbase import JObjectBase
from .jclass import JClass
from .jobject import JObject
class JArray(JObjectBase):
"""Java Array"""
@classmethod
@annotate('JArray', size=Union[int, long])
def newBooleanArray(cls, size):
...
...
@classmethod
@annotate('JArray', size=Union[int, long])
def newDoubleArray(cls, size):
...
@classmethod
@annotate('JArray', size=Union[int, long])
def newStringArray(cls, size):
...
@classmethod
@annotate('JArray', size=Union[int, long], component_class=JClass)
def newObjectArray(cls, size, component_class):
...
@annotate(jenv=jni.JNIEnv, jarr=jni.jarray, borrowed=bool)
def __init__(self, jenv, jarr, borrowed=False):
...
def __hash__(self):
return super(JArray, self).__hash__()
def __len__(self):
return self.getLength()
@annotate(JObject, borrowed=bool)
def asObject(self, borrowed=False):
...
@cached
@annotate(int)
def getLength(self):
...
@annotate(bool, idx=int)
def getBoolean(self, idx):
...
...
@annotate(float, idx=int)
def getDouble(self, idx):
...
@annotate(Optional[str], idx=int)
def getString(self, idx):
...
@annotate(Optional[JObject], idx=int)
def getObject(self, idx):
...
@annotate(idx=int, val=bool)
def setBoolean(self, idx, val):
...
@annotate(idx=int, val=str)
def setChar(self, idx, val):
...
...
@annotate(idx=int, val=Union[int, long])
def setLong(self, idx, val):
...
@annotate(idx=int, val=float)
def setDouble(self, idx, val):
...
@annotate(idx=int, val=Optional[str])
def setString(self, idx, val):
...
@annotate(idx=int, val=Optional[JObject])
def setObject(self, idx, val):
...
@annotate('JArray', start=int, stop=int, step=int)
def getBooleanSlice(self, start, stop, step):
...
...
@annotate('JArray', start=int, stop=int, step=int)
def getDoubleSlice(self, start, stop, step):
...
@annotate('JArray', start=int, stop=int, step=int)
def getStringSlice(self, start, stop, step):
...
@annotate('JArray', start=int, stop=int, step=int)
def getObjectSlice(self, start, stop, step):
...
@annotate(start=int, stop=int, step=int, val=Sequence[bool])
def setBooleanSlice(self, start, stop, step, val):
...
@annotate(start=int, stop=int, step=int, val=Union[Sequence[str], str])
def setCharSlice(self, start, stop, step, val):
...
@annotate(start=int, stop=int, step=int,
val=Union[Sequence[Union[int,bytes]], (bytes, bytearray)])
def setByteSlice(self, start, stop, step, val):
...
...
@annotate(start=int, stop=int, step=int, val=Sequence[float])
def setDoubleSlice(self, start, stop, step, val):
...
@annotate(start=int, stop=int, step=int, val=Sequence[Optional[str]])
def setStringSlice(self, start, stop, step, val):
...
@annotate(start=int, stop=int, step=int, val=Sequence[Optional[JObject]])
def setObjectSlice(self, start, stop, step, val):
...
@annotate(Tuple)
def getBooleanBuffer(self):
with self.jvm as (jvm, jenv):
is_copy = jni.jboolean()
return jenv.GetBooleanArrayElements(self._jobj, is_copy), jni.sizeof(jni.jboolean), b"B", is_copy
...
@annotate(Tuple)
def getDoubleBuffer(self):
with self.jvm as (jvm, jenv):
is_copy = jni.jboolean()
return jenv.GetDoubleArrayElements(self._jobj, is_copy), jni.sizeof(jni.jdouble), b"d", is_copy
@annotate(buf=object)
def releaseBooleanBuffer(self, buf):
with self.jvm as (jvm, jenv):
jenv.ReleaseBooleanArrayElements(self._jobj, jni.cast(buf, jni.POINTER(jni.jboolean)))
...
@annotate(buf=object)
def releaseDoubleBuffer(self, buf):
with self.jvm as (jvm, jenv):
jenv.ReleaseDoubleArrayElements(self._jobj, jni.cast(buf, jni.POINTER(jni.jdouble)))
Installation
Prerequisites:
-
Python 3.9 or higher
-
pip and setuptools
To install run:
.. parsed-literal::
python -m pip install --upgrade |package|
Development
Prerequisites:
Visit Development page
_.
Installation from sources:
clone the sources:
.. parsed-literal::
git clone |respository| |package|
and run:
.. parsed-literal::
python -m pip install ./|package|
or on development mode:
.. parsed-literal::
python -m pip install --editable ./|package|
License
| |copyright|
| Licensed under the zlib/libpng License
| https://opensource.org/license/zlib
| Please refer to the accompanying LICENSE file.
Authors
.. |package| replace:: annotate
.. |package_bold| replace:: annotate
.. |copyright| replace:: Copyright (c) 2012-2024 Adam Karpierz
.. |respository| replace:: https://github.com/karpierz/annotate.git
.. _Development page: https://github.com/karpierz/annotate
.. _PyPI record: https://pypi.org/project/annotate/
.. _Documentation: https://annotate.readthedocs.io/
Changelog
1.1.2 (2024-10-30)
- Setup (dependencies) update.
1.1.1 (2024-10-09)
- Setup (dependencies) update.
1.1.0 (2024-09-30)
- Drop support for Python 3.8
- Setup (dependencies) update.
1.0.20 (2024-08-13)
- Add support for Python 3.12 and 3.13
- Drop support for Python 3.7
- Setup (dependencies) update.
1.0.19 (2022-10-18)
- Tox configuration has been moved to pyproject.toml
1.0.18 (2022-08-22)
1.0.17 (2022-07-24)
- Add support for Python 3.10 and 3.11
- Setup update (currently based mainly on pyproject.toml).
1.0.16 (2022-01-10)
- Drop support for Python 2, 3.5 and 3.6
- Copyright year update.
- Setup update.
1.0.15 (2020-10-18)
- Setup: fix an improper dependencies versions.
- Setup general update and cleanup.
- Fixed docs setup.
1.0.8 (2019-05-21)
- Update required setuptools version.
- Setup update and improvements.
1.0.7 (2018-11-08)
- Drop support for Python 2.6 and 3.0-3.3
- Update required setuptools version.
1.0.6 (2018-05-08)
- Update required setuptools version.
- Improve and simplify setup and packaging.
1.0.5 (2018-02-26)
- Improve and simplify setup and packaging.
1.0.4 (2018-01-28)
- Fix a bug and inconsistencies in tox.ini
- Update of README.rst.
1.0.1 (2018-01-24)
- Update required Sphinx version.
- Update doc Sphinx configuration files.
1.0.0 (2017-11-18)
- Setup improvements.
- Other minor improvements.
0.7.4 (2017-01-05)
- Minor setup improvements.
0.7.3 (2016-09-25)
0.7.1 (2016-09-25)
0.6.7 (2016-09-24)
- Minor description suplement
0.6.4 (2016-09-23)
- Simplify package structure.
0.6.3 (2016-06-19)
- | Fix incompatibility for older versions of setuptools.
| Add example.
0.6.0 (2015-08-17)
0.5.1 (2015-02-27)
- | Remove 'returns' as keyword argument for declare return type.
| For now, the type of returned value should be declared by the
| first positional argument.
0.3.3 (2014-09-15)
0.3.2 (2014-09-13)
0.3.0 (2014-09-06)
- Standarize package.
- Cosmetic changes.
0.2.6 (2014-06-10)
0.2.5 (2014-06-10)
0.2.3 (2012-10-13)