Skip to content

Classes

Principles

Positional-only constructor arguments are forbidden

At the moment dependencies library use **kwargs expansion to pass arguments into class constructor. Positional-only parameters introduced in python 3.8 broke this pattern. We have no plan to support this corner case in dependencies core Injector algorithm.

>>> from dependencies import Injector

>>> class User:
...     def __init__(self, /, name):
...         self.name = name
...
...     def __repr__(self):
...         return f"User({self.name=!r})"

>>> User("Jeff")
User(self.name='Jeff')

>>> class Container(Injector):
...     user = User
...     name = "Jeff"

>>> Container.user
Traceback (most recent call last):
  ...
_dependencies.exceptions.DependencyError: 'User.__init__' have positional-only arguments

— ⭐ —