Skip to main content
Donate to the Python Software Foundation or Purchase a PyCharm License to Benefit the PSF! Donate Now

Annotating type hints and comments with extra metatdata

Project description

Build Status Test coverage Latest PyPI version

Adding annotations to Python types while still being compatible with mypy and PyCharm

You can write things like:

from annotypes import Anno, WithCallTypes

with Anno("The exposure time for the camera"):
    AExposure = float
with Anno("The full path to the text file to write"):
    APath = str

class Simple(WithCallTypes):
    def __init__(self, exposure, path="/tmp/file.txt"):
        # type: (AExposure, APath) -> None
        self.exposure = exposure
        self.path = path

or the Python3 alternative:

from annotypes import Anno, WithCallTypes

with Anno("The exposure time for the camera"):
    AExposure = float
with Anno("The full path to the text file to write"):
    APath = str

class Simple(WithCallTypes):
    def __init__(self, exposure: AExposure, path: APath = "/tmp/file.txt"):
        self.exposure = exposure
        self.path = path

And at runtime see what you should pass to call it and what it will return:

>>> from annotypes.py2_examples.simple import Simple
>>> list(Simple.call_types)
['exposure', 'path']
>>> Simple.call_types['exposure']
Anno(name='AExposure', typ=<type 'float'>, description='The exposure time for the camera')
>>> Simple.return_type
Anno(name='Instance', typ=<class 'annotypes.py2_examples.simple.Simple'>, description='Class instance')

For more examples see the Python 2 examples or Python 3 examples.

Installation

To install the latest release, type:

pip install annotypes

To install the latest code directly from source, type:

pip install git+git://github.com/dls-controls/annotypes.git

Changelog

See CHANGELOG

Contributing

See CONTRIBUTING

License

APACHE License. (see LICENSE)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
annotypes-0.17.tar.gz (23.1 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page