<commit_before>.. image:: http://i.imgur.com/sbWr5Xv.png
   :width: 100%
   :alt: siringa logo
   :align: center


|Build Status| |PyPI| |Coverage Status| |Documentation Status| |Stability| |Versions| |SayThanks|

About
-----

``siringa`` (meaning ``syringe`` in Italian) is a minimalist, idiomatic `dependency injection`_ and `inversion of control`_ library
for Python_, implemented in Hy_, a homoiconic Lisp dialect for Python.

To get started, take a look to the `documentation`_, `API`_, `tutorial`_ and `examples`_.

Features
--------

-  Simple, idiomatic and versatile `programmatic API`_.
-  Annotation based dependency injection that is `PEP 3017`_ and `PEP 0484`_ friendly.
-  First-class decorator driven dependency injection and registering.
-  Ability to create multiple dependency containers.
-  Hierarchical dependency containers based on inheritance.
-  Dependency inference based on pattern-matching techniques.
-  First-class support for dependency mocking for better testing.
-  Highly tolerant: any type of object can be injected, including ``str``, ``generators``, ``coroutines`` ...
-  Detects cyclic dependencies (work in progress).
-  Small and (almost) dependency-free library.
-  Works with CPython 3+.

Design philosophy
-----------------

-  Code instrumentation should be non-intrusive and idiomatic.
-  Explicitness over implicitness: dependencies and injections much be explicitly defined.
-  Python idiomatic: embrace decorators and type annotations.
-  Minimalism: less enables more.
-  Uniformity: there is only one way to declare and consume dependencies.
-  Predictability: developer intentions must persist based on explicitly defined intention.
-  Domain agnostic: do not enforce any domain-specific pattern.

Installation
------------

Using ``pip`` package manager:

.. code-block:: bash

    pip install --upgrade siringa

Or install the latest sources from Github:

.. code-block:: bash

    pip install -e git+git://github.com/h2non/siringa.git#egg=siringa<commit_msg>chore(docs): update description and add compatibility note<commit_after>.. image:: http://i.imgur.com/sbWr5Xv.png
   :width: 100%
   :alt: siringa logo
   :align: center


|Build Status| |PyPI| |Coverage Status| |Documentation Status| |Stability| |Versions| |SayThanks|

About
-----

``siringa`` (meaning ``syringe`` in Italian) is a minimalist, idiomatic `dependency injection`_/`inversion of control`_ library
for Python_, implemented in Hy_, a Lisp dialect for Python.

To get started, take a look to the `documentation`_, `API`_, `tutorial`_ and `examples`_.

Features
--------

-  Simple, idiomatic and versatile `programmatic API`_.
-  Annotation based dependency injection that is `PEP 3017`_ and `PEP 0484`_ friendly.
-  First-class decorator driven dependency injection and registering.
-  Ability to create multiple dependency containers.
-  Hierarchical dependency containers based on inheritance.
-  Dependency inference based on pattern-matching techniques.
-  First-class support for dependency mocking for better testing.
-  Highly tolerant: any type of object can be injected, including ``str``, ``generators``, ``coroutines`` ...
-  Detects cyclic dependencies (work in progress).
-  Small and (almost) dependency-free library.
-  Works with CPython 3+ (because of Hy <> CPython AST compatibility)

Design philosophy
-----------------

-  Code instrumentation should be non-intrusive and idiomatic.
-  Explicitness over implicitness: dependencies and injections much be explicitly defined.
-  Python idiomatic: embrace decorators and type annotations.
-  Minimalism: less enables more.
-  Uniformity: there is only one way to declare and consume dependencies.
-  Predictability: developer intentions must persist based on explicitly defined intention.
-  Domain agnostic: do not enforce any domain-specific pattern.

Installation
------------

Using ``pip`` package manager:

.. code-block:: bash

    pip install --upgrade siringa

Or install the latest sources from Github:

.. code-block:: bash

    pip install -e git+git://github.com/h2non/siringa.git#egg=siringa
{'fraction_non_alphanumeric': 0.106201171875, 'fraction_numerical': 0.0068359375, 'mean_word_length': 3.930204572803851, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '850079', 'n_tokens_mistral': 1201, 'n_tokens_neox': 1107, 'n_words': 456}