Skip to main content

Constructor injection designed with OOP in mind.

Project description

Dependencies build pypi

Constructor injection designed with OOP in mind.

Documentation | Source Code | Task Tracker

Dependency Injection (or simply DI) is a great technique. By using it you can organize responsibilities in you codebase. Define high level policies and system behavior in one part. Delegate control to low level mechanisms in another part. Simple and powerful.

With help of DI you can use different parts of your system independently and combine their behavior really easy.

If you split logic and implementation into different classes, you will see how pleasant it becomes to change your system.

This tiny library helps you to connect parts of your system, in particular - to inject low level implementation into high level behavior.

Pros

  • Provide composition instead of inheritance.
  • Solves top-down architecture problems.
  • Boilerplate-free object hierarchies.
  • API entrypoints, admin panels, CLI commands are oneliners.

Example

Dependency injection without dependencies

>>> from app.robot import Robot, Servo, Amplifier, Controller, Settings

>>> robot = Robot(
...     servo=Servo(amplifier=Amplifier()),
...     controller=Controller(),
...     settings=Settings(environment="production"),
... )

>>> robot.work()

Dependency injection with dependencies

>>> from dependencies import Injector

>>> class Container(Injector):
...     robot = Robot
...     servo = Servo
...     amplifier = Amplifier
...     controller = Controller
...     settings = Settings
...     environment = "production"

>>> Container.robot.work()

Questions

If you have any questions, feel free to create an issue in our Task Tracker. We have the question label exactly for this purpose.

Enterprise support

If you have an issue with any version of the library, you can apply for a paid enterprise support contract. This will guarantee you that no breaking changes will happen to you. No matter how old version you're using at the moment. All necessary features and bug fixes will be backported in a way that serves your needs.

Please contact proofit404@gmail.com if you're interested in it.

License

dependencies library is offered under the two clause BSD license.

— ⭐ —

Download files

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

Source Distribution

dependencies-7.7.0.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dependencies-7.7.0-py2.py3-none-any.whl (18.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file dependencies-7.7.0.tar.gz.

File metadata

  • Download URL: dependencies-7.7.0.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.10.4 Linux/5.15.0-1022-azure

File hashes

Hashes for dependencies-7.7.0.tar.gz
Algorithm Hash digest
SHA256 ae662ffe5726582705d26ae86977d0d616922100c38a211f0c27c765554fb026
MD5 c11c01d918d386dd358109c2a833e5bb
BLAKE2b-256 2f84a4ebc1c3413329e2485e4a443aee4627b3ae71dec87269dd290f5483504d

See more details on using hashes here.

File details

Details for the file dependencies-7.7.0-py2.py3-none-any.whl.

File metadata

  • Download URL: dependencies-7.7.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 18.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.10.4 Linux/5.15.0-1022-azure

File hashes

Hashes for dependencies-7.7.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 6a842068931258efc88b1faa7f08829b7e58271f4a097e2d06e766917909ad4f
MD5 c8f1c8f0e7e946d94915decaf08ef9cf
BLAKE2b-256 b8bb254ba2ad4aaf3a71ecf57fde19dce4497fec5ad6c1aad487012bbea36267

See more details on using hashes here.

Supported by

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