Skip to main content

Transparent dependency injection.

Project description

https://img.shields.io/pypi/v/antidote.svg https://img.shields.io/pypi/l/antidote.svg https://img.shields.io/pypi/pyversions/antidote.svg https://travis-ci.org/Finistere/antidote.svg?branch=master https://codecov.io/gh/Finistere/antidote/branch/master/graph/badge.svg https://readthedocs.org/projects/antidote/badge/?version=latest

Antidotes is a declarative dependency injection micro-framework for Python 3.5+ which tries to do the following:

  • Injection can applied on any existing code easily.

  • Avoids as much magic as possible. Finding the source and the usage of a dependency is straightforward (through an IDE’s “Go to definition” / “Find usage”).

  • Core functionality is flexible and extendable to support any custom injection/dependencies. So while Antidote does not use magic, you can.

  • Limit performance impact of injection.

  • Provide a rich set of ways for handling dependencies. (factories, tags, interfaces, configuration, etc…).

  • Handle all the different edge cases with methods, bound methods, class methods, etc…

Why Dependency Injection ?

In short antidote avoids you the hassle of instantiating and managing your services. You declare them at their definition, and inject them wherever needed with simple decorators, which do not change how you interact with your objects. Unit testing is not impacted as one can override any injection and control the available dependencies easily.

For the longer version: https://antidote.readthedocs.io/en/stable/why.html

Why Antidote ?

While there are several dependency injection libraries, there was none which really convinced me. Most of them did not satisfy all of those requirements:

  • Use of type hints: Be consistent with type hints as supported by mypy and use them to inject dependencies. Other means to inject dependencies should be possible.

  • Maturity: Support different kind of dependencies, proper test coverage,

  • Easy to integrate with existing code: Ideally it means just adding decorators to your class/functions and that’s it.

  • Avoid magic: It should be straightforward for someone, unaware of the dependency injection library, to know what is injected and from where it comes. Typically using the arguments name implicitly to find dependencies is magic. How can you know from where it comes ? Hence type hints are for example a lot better.

And for the rare ones that were close to those requirements, I didn’t like their API for different reasons. Which is obviously a matter of taste.

Features Highlight

Core functionalities:

  • Injection done through type hints and optionally from argument’s name and/or with explicitly specified dependencies.

  • Dependency cycle detection

  • Thread-safety and limited performace impact (see injection benchmark).

  • Antidote is declarative and does not do any magic out of the box. Reading the decorators is enough to understand what it does and from where dependencies are coming from.

  • Is easy to work with an IDE: no **kwargs which makes arguments impossible to guess and has type hints everywhere.

  • Easily extendable, through dependency providers. All after-mentioned kind of dependencies are implemented with it. It is designed to support custom kind of dependencies from the ground up. So if you want custom magic or whatever, you can have it !

Kind of dependencies:

  • Services and factories: provides an instance of a class.

  • Tags: Dependencies can be tagged, and as such all of them matching a specific tag can be retrieved.

  • Configuration: Constants which are lazily evaluated.

  • Lazy function calls: Results of a function call is lazily provided.

Installation

To install Antidote, simply run this command:

pip install antidote

Quick Start

How does injection looks like ? Here is a simple example:

from antidote import inject, register

# Declare Service as a dependency that can be injected
@register
class Service:
    pass

 # uses the type hint
 @inject
 def f(service: Service):
     pass

 f()  # Service will be automatically injected if not provided
 f(Service())  # Want to override injection for tests ? easy

 # Explicitly provide the dependency
 @inject(dependencies=dict(service=Service))
 def f(service):
     pass

 # uses the position of the arguments
 @inject(dependencies=(Service,))
 def f(service):
     pass

Want more ? Here is a more complete example with configurations, services, factories:

"""
Simple example where a MovieDB interface is defined which can be used
to retrieve the best movies. In our case the implementation uses IMDB
to dot it.
"""
from functools import reduce

import antidote


class MovieDB:
    def get_best_movies(self):
        pass


class ImdbAPI:
    """
    Class from an external library.
    """

    def __init__(self, *args, **kwargs):
        """ Initializes the IMDB API. """


# Usage of constants for configuration makes refactoring easier and is
# less error-prone. Moreover Conf will only be instantiated if necessary.
class Conf(metaclass=antidote.LazyConstantsMeta):
    # The metaclass adds custom behavior for constants (upper case attributes).
    # Conf.IMDB_HOST is a dependency id
    # but Conf().IMDB_HOST is the actual value making it easy to work with.
    IMDB_HOST = 'imdb.host'
    IMDB_API_KEY = 'imdb.api_key'

    def __init__(self):
        # Load configuration from somewhere
        self._raw_conf = {
            'imdb': {
                'host': 'dummy_host',
                'api_key': 'dummy_api_key'
            }
        }

    def get(self, key):
        """ 'a.b' -> self._raw_conf['a']['b'] """
        return reduce(dict.get, key.split('.'), self._raw_conf)


# Declare a factory which should be called to instantiate Database.
# The order of the arguments is here used to map the dependencies.
# A dictionary mapping arguments name to their dependency could also
# have been used.
@antidote.factory(dependencies=(Conf.IMDB_HOST, Conf.IMDB_API_KEY))
def imdb_factory(host: str, api_key: str) -> ImdbAPI:
    """
    Configure your database.
    """
    return ImdbAPI(host=host, api_key=api_key)


# implements specifies that IMDBMovieDB should be used whenever MovieDB is requested.
@antidote.implements(MovieDB)
# Registering IMDBMovieDB makes it available in Antidote. (required for @implements)
@antidote.register
class IMDBMovieDB(MovieDB):
    # Here the dependencies of __init__() are injected by default as @register treats
    # it as the factory of the service.
    # Note that IMDBMovieDB does not build itself ImdbAPI, which makes testing
    # easier.
    def __init__(self, imdb_api: ImdbAPI):
        self._imdb_api = imdb_api

    def get_best_movies(self):
        pass


# Inject dependencies in f(), by default only type annotations are used. But
# arguments name, explicit mapping, etc.. can also be used.
@antidote.inject
def f(movie_db: MovieDB):
    """ Do something with your database. """


# Can be called without arguments now.
f()

assert antidote.world.get(MovieDB) is antidote.world.get(IMDBMovieDB)

# You can still explicitly pass the arguments to override
# injection.
conf = Conf()
f(IMDBMovieDB(imdb_factory(
    # equivalent to conf._raw_conf['db.host'], mainly to make your tests easier.
    host=conf.IMDB_HOST,
    api_key=conf._raw_conf['imdb']['api_key'],
)))

Interested ? Check out the documentation or try it directly ! There are still features left such as tags or custom kinds of dependencies.

Documentation

The documentation is available at https://antidote.readthedocs.io/en/stable.

Injection benchmark is available at injection benchmarks.

Bug Reports / Feature Requests

Any feedback is always welcome, feel free to submit issues and enhancement requests ! :) For any questions, open an issue on Github.

How to Contribute

  1. Check for open issues or open a fresh issue to start a discussion around a feature or a bug.

  2. Fork the repo on GitHub. Run the tests to confirm they all pass on your machine. If you cannot find why it fails, open an issue.

  3. Start making your changes to the master branch.

  4. Writes tests which shows that your code is working as intended. (This also means 100% coverage.)

  5. Send a pull request.

Be sure to merge the latest from “upstream” before making a pull request!

Pull requests should avoid to:

  • make it harder to integrate Antidote into existing code.

  • break backwards compatibility.

  • create features difficult to understand for an IDE, such as converting a string dependency id to a non singleton object somehow. An user may do this, but antidote shouldn’t.

Pull requests will not be accepted if:

  • classes and non trivial functions have not docstrings documenting their behavior.

  • tests do not cover all of code changes.

Do not hesitate to send a pull request, even if incomplete, to get early feedback ! :)

Project details


Download files

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

Source Distribution

antidote-0.7.0.tar.gz (65.8 kB view details)

Uploaded Source

Built Distributions

antidote-0.7.0-cp38-cp38-manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.8

antidote-0.7.0-cp38-cp38-manylinux2014_i686.whl (1.0 MB view details)

Uploaded CPython 3.8

antidote-0.7.0-cp38-cp38-manylinux2010_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

antidote-0.7.0-cp38-cp38-manylinux2010_i686.whl (1.2 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686

antidote-0.7.0-cp38-cp38-manylinux1_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.8

antidote-0.7.0-cp38-cp38-manylinux1_i686.whl (1.0 MB view details)

Uploaded CPython 3.8

antidote-0.7.0-cp37-cp37m-manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.7m

antidote-0.7.0-cp37-cp37m-manylinux2014_i686.whl (962.9 kB view details)

Uploaded CPython 3.7m

antidote-0.7.0-cp37-cp37m-manylinux2010_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

antidote-0.7.0-cp37-cp37m-manylinux2010_i686.whl (1.0 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ i686

antidote-0.7.0-cp37-cp37m-manylinux1_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.7m

antidote-0.7.0-cp37-cp37m-manylinux1_i686.whl (962.9 kB view details)

Uploaded CPython 3.7m

antidote-0.7.0-cp36-cp36m-manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.6m

antidote-0.7.0-cp36-cp36m-manylinux2014_i686.whl (962.4 kB view details)

Uploaded CPython 3.6m

antidote-0.7.0-cp36-cp36m-manylinux2010_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64

antidote-0.7.0-cp36-cp36m-manylinux2010_i686.whl (1.0 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.12+ i686

antidote-0.7.0-cp36-cp36m-manylinux1_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.6m

antidote-0.7.0-cp36-cp36m-manylinux1_i686.whl (962.4 kB view details)

Uploaded CPython 3.6m

antidote-0.7.0-cp35-cp35m-manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.5m

antidote-0.7.0-cp35-cp35m-manylinux2014_i686.whl (932.4 kB view details)

Uploaded CPython 3.5m

antidote-0.7.0-cp35-cp35m-manylinux2010_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.5m manylinux: glibc 2.12+ x86-64

antidote-0.7.0-cp35-cp35m-manylinux2010_i686.whl (972.9 kB view details)

Uploaded CPython 3.5m manylinux: glibc 2.12+ i686

antidote-0.7.0-cp35-cp35m-manylinux1_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.5m

antidote-0.7.0-cp35-cp35m-manylinux1_i686.whl (932.4 kB view details)

Uploaded CPython 3.5m

File details

Details for the file antidote-0.7.0.tar.gz.

File metadata

  • Download URL: antidote-0.7.0.tar.gz
  • Upload date:
  • Size: 65.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0.tar.gz
Algorithm Hash digest
SHA256 cb3402fccf4b6cabf5fb9698abb1e0a82678be1fbe7f5880f72bcd666bd873d6
MD5 0facbbff088a06aa52967dddbea49358
BLAKE2b-256 dba5948ea191fa6e102753cb89b55055bb3e74fd83272d63e7bec34c23392f69

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

  • Download URL: antidote-0.7.0-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f7fa942194ed1d69e7469fed54009ff3aef4dffa3c940a5d780e8692cf7a1e0e
MD5 d5f768cc2d16ff2741db4339d8ddc170
BLAKE2b-256 6278b1c31d8d5c5566969e3a7acbb3ca0e979e9ba397727b7210940018cf6e8a

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp38-cp38-manylinux2014_i686.whl.

File metadata

  • Download URL: antidote-0.7.0-cp38-cp38-manylinux2014_i686.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp38-cp38-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a6cad08dec6e85601a46d142f4a54cab156357f6fd348536473748d13c389774
MD5 7f9b22ef2cba0090555189a0f13df3bd
BLAKE2b-256 a99bf5f164d815d8d970f4abbd4037400edc8d017ec6341ced7af1948ad9e997

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp38-cp38-manylinux2010_x86_64.whl.

File metadata

  • Download URL: antidote-0.7.0-cp38-cp38-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 d482d25074b05eeabfad344b52b63f6c5f6c16dfcdee456d7227fb9d4f85b276
MD5 527a0979788305b557a09d7122e5fd74
BLAKE2b-256 bcdeb1bf40e5c1eb5e23f861f115db1522cc5f60b8e8c7e54d7a4313a16f239c

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp38-cp38-manylinux2010_i686.whl.

File metadata

  • Download URL: antidote-0.7.0-cp38-cp38-manylinux2010_i686.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp38-cp38-manylinux2010_i686.whl
Algorithm Hash digest
SHA256 92c511037e05a89c95de1ff73a830eb4891ca27df7152a480cd2d880b4868b3b
MD5 8e13757579c30d4ffe44e2bb9e8163cb
BLAKE2b-256 e0913f906a757fbd2ce343a5c640e39e38d9eda2b00038f1acfb80006ca92baa

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp38-cp38-manylinux1_x86_64.whl.

File metadata

  • Download URL: antidote-0.7.0-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 c9718c8cb43fb5150c7537eb7af2714320a92e9626ba33976825a950b8d76a63
MD5 b6d78a05768fe73c5a5ebd59e34d91dd
BLAKE2b-256 b657605ad74ccee0f947a18fb5fd8f32c613d560bda6597e36b852d5287df9c6

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp38-cp38-manylinux1_i686.whl.

File metadata

  • Download URL: antidote-0.7.0-cp38-cp38-manylinux1_i686.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp38-cp38-manylinux1_i686.whl
Algorithm Hash digest
SHA256 bea6f79e16fdd6b518ca6cb0a4879a210d2f60a54bc2ffd3f72fb511a6958f04
MD5 cf4c4b1f1fedeaafe0d5b5ca6e9166d9
BLAKE2b-256 3f198170c3202a92e80a25f0ad1add7fff9f3c5f0c564807fe4c6dc714b3feec

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: antidote-0.7.0-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c1c9c6625d25d79c1ff8410ca6ad0e08c5d399e759fad0fd873fb76e56eb897b
MD5 d5a9f64cc6490857a84fb798271ae0eb
BLAKE2b-256 03b99fcdb4461cdf7afcb038b31e6f308519f0e5bcff72ed1548cd44064d5ed9

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp37-cp37m-manylinux2014_i686.whl.

File metadata

  • Download URL: antidote-0.7.0-cp37-cp37m-manylinux2014_i686.whl
  • Upload date:
  • Size: 962.9 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp37-cp37m-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 33119ec77c8890cc2c57c0908926c6c14ba162c6e289fafb9c84b9c9a1540642
MD5 d42f97b6c6c328eafe154b146847658a
BLAKE2b-256 45e9fc618803343fc8990531627978bdb43ae88384163b4b569a1dcb59104bff

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp37-cp37m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: antidote-0.7.0-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 df8b3b967c501f5b98aebaadcdebf5b6dba47a7d2998cef3e9f85dd678594d31
MD5 d8f1ceab765def1d30925bb104da8c4e
BLAKE2b-256 18fe139ac865a048b1c293ae4d5551db939b6fba55f805e767821fbce0161b80

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp37-cp37m-manylinux2010_i686.whl.

File metadata

  • Download URL: antidote-0.7.0-cp37-cp37m-manylinux2010_i686.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp37-cp37m-manylinux2010_i686.whl
Algorithm Hash digest
SHA256 43d332019b30b2d1488772add5aeca87e270491f31b411233e1ca1fe23a0c20c
MD5 8d7ba612924665e8bc1590f545025eca
BLAKE2b-256 6735f9e0e3a7240afd94493ab8d13751b8e31592bdb7725b4e49400b07661beb

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: antidote-0.7.0-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 416c1300d5e453538317e326140700440de537d16ad1f78c92ee7fdf2024a641
MD5 cd025084c2a0e8a970d6679457e2dd26
BLAKE2b-256 eb3ce22e005029ef7c8cc374a6b46b3c4a94224f5a04cb0c65820affd92c6007

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp37-cp37m-manylinux1_i686.whl.

File metadata

  • Download URL: antidote-0.7.0-cp37-cp37m-manylinux1_i686.whl
  • Upload date:
  • Size: 962.9 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp37-cp37m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 9835b99577e6663499db3c424fd6d0b26277223e133724aa16e19d6d267634aa
MD5 93e9f0d66a6cf3bdf33945c716872133
BLAKE2b-256 8f4920fae04d2caf17e1947d3aec42622f09f69b13dd6120f59e59b87ffb646e

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp36-cp36m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: antidote-0.7.0-cp36-cp36m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 28b49a3de00a24e5f6a70bd734521179eb91af9e7bf488701c06920ebefe9735
MD5 9642e7d72e303ae7072e60a93b4d457e
BLAKE2b-256 cab69774df80e18413ca6582837607ebda78dd543dbdc0bf3437080bc4c6f0e5

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp36-cp36m-manylinux2014_i686.whl.

File metadata

  • Download URL: antidote-0.7.0-cp36-cp36m-manylinux2014_i686.whl
  • Upload date:
  • Size: 962.4 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp36-cp36m-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4bcc6e1e9393b84e66297b4f8433b53e90bfc04f655ef7474b98976db106b55a
MD5 d23d609521373b97f97048f93d509492
BLAKE2b-256 10f1a99509f928056d7587d2f74370161df32f06dabd5a2cef77d4c1dceedab8

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp36-cp36m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: antidote-0.7.0-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 641474db4e2f047a3448b32e6f90fc7156cb5f2c5c92895d4f4863075b43f476
MD5 5b798fde117798e18cbb391093100bad
BLAKE2b-256 ab8ad12e70af0dde9fb7d7822cf617d2ae020b680894211fe2330f6dbf513595

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp36-cp36m-manylinux2010_i686.whl.

File metadata

  • Download URL: antidote-0.7.0-cp36-cp36m-manylinux2010_i686.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp36-cp36m-manylinux2010_i686.whl
Algorithm Hash digest
SHA256 921c534c3a0679906b689f2615690e5b949b5f14213caf8bd5c1c53b9abeae06
MD5 6bd60f81be6a122ed4c6b9325054ab16
BLAKE2b-256 25a645130d23887cd464a2b23660002aeb4d5413658f78fc06e0420aed5a61c1

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: antidote-0.7.0-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 4e143177c407d35c50cba7bcce4c0c81486aba5dac9b4cf26fa30a315cf99f50
MD5 4bf18edaf8a33f85c5e15eb87d0036cf
BLAKE2b-256 fea037c6885676bd45f1c7d88055500a586968d4540fc141d3bf15c82f741150

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp36-cp36m-manylinux1_i686.whl.

File metadata

  • Download URL: antidote-0.7.0-cp36-cp36m-manylinux1_i686.whl
  • Upload date:
  • Size: 962.4 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 b7b53ff308210a20039695ddb0c5f1ce2602014d7c9212a29c3ad6aceca3b474
MD5 2485decbad700942a356f3bc3af3d804
BLAKE2b-256 03768fb43e36dda0842c7fcf7af1ac920ee75b127d82d2fe98f1986633e42408

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp35-cp35m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: antidote-0.7.0-cp35-cp35m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp35-cp35m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0c02e92297486ae68638a8a43e9811aaa230597714704fcaa3a7d70e2be365be
MD5 dbffb10e06e9310a47e71699877ef4d8
BLAKE2b-256 fb01daf86849e1c30520d03cb6417cc5af7a7af7e8e66452081090059e86596d

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp35-cp35m-manylinux2014_i686.whl.

File metadata

  • Download URL: antidote-0.7.0-cp35-cp35m-manylinux2014_i686.whl
  • Upload date:
  • Size: 932.4 kB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp35-cp35m-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 180a27424028b8bf347eae044ec661d796dda760e99f3d6fcbe9709a7e3a18c0
MD5 89b58065084e8c9b77c24e6655170247
BLAKE2b-256 7b115ff66559023e431db445fc785408098298e24cf63410f0e668e20f8c81ea

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp35-cp35m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: antidote-0.7.0-cp35-cp35m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.5m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp35-cp35m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 57726b0416d7333ecb5a00f852189e7076fd2079ed82a0db20e39502ba858e2f
MD5 883b1da469cc279b73e3476ca0f6ef86
BLAKE2b-256 b7d23c507334d35ebe8ec5cb7da8ffba4d467f21d58cf75546f892f4db0795ec

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp35-cp35m-manylinux2010_i686.whl.

File metadata

  • Download URL: antidote-0.7.0-cp35-cp35m-manylinux2010_i686.whl
  • Upload date:
  • Size: 972.9 kB
  • Tags: CPython 3.5m, manylinux: glibc 2.12+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp35-cp35m-manylinux2010_i686.whl
Algorithm Hash digest
SHA256 aa18b19e0294c5be784ef50141716fa9f2bf387b4c1eeab42e69dc23278c80fe
MD5 1e76ae1ea4817b63cb6080e8ab97e1f4
BLAKE2b-256 1a00949d73c4a902199a1dad4ee7986cf062cf2c6bad5f5d941bfdf598145fcc

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

  • Download URL: antidote-0.7.0-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 cccd1b1dc34e0a411dd8978b24e3202eaefed92c3cc1f6dd2db890e06e6f542e
MD5 2ce4da3d6a57882a98e351cd1fb00ff3
BLAKE2b-256 fcaeafa727ed1a9fda89ddf2f8fb50d09d239f718e45241a5b0b2b2c53d709c9

See more details on using hashes here.

Provenance

File details

Details for the file antidote-0.7.0-cp35-cp35m-manylinux1_i686.whl.

File metadata

  • Download URL: antidote-0.7.0-cp35-cp35m-manylinux1_i686.whl
  • Upload date:
  • Size: 932.4 kB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for antidote-0.7.0-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 5890dacd46fc21ac7fb665ba6b254ddd255b34308a53edd26fa1d1d6122c7edc
MD5 a1a2e777b5d9fb9b3a2dfa02fd6d1363
BLAKE2b-256 3c16b303e59c4f20646b6454499cff17284e43e2073798bb70f84d3f5544fa79

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page