ivankorobkov / python-inject

Python dependency injection
Apache License 2.0
694 stars 79 forks source link

Not helpful error messages when argument is missing #61

Open dbalabka opened 4 years ago

dbalabka commented 4 years ago

Error messages should be improved when some argument is missing:

Traceback (most recent call last):
  ...
  File "bin/console.py", line 22, in main
    inject.instance(Trainer).train()
  File "/Users/torinaki/www/htdocs/ecore-cart-recommender/env/lib/python3.7/site-packages/inject/__init__.py", line 362, in instance
    return get_injector_or_die().get_instance(cls)
  File "/Users/torinaki/www/htdocs/ecore-cart-recommender/env/lib/python3.7/site-packages/inject/__init__.py", line 211, in get_instance
    return binding()
  File "/Users/torinaki/www/htdocs/ecore-cart-recommender/env/lib/python3.7/site-packages/inject/__init__.py", line 254, in __call__
    self._instance = self._constructor()
  File "/Users/torinaki/www/htdocs/ecore-cart-recommender/env/lib/python3.7/site-packages/inject/__init__.py", line 303, in injection_wrapper
    kwargs[param] = instance(cls)
  File "/Users/torinaki/www/htdocs/ecore-cart-recommender/env/lib/python3.7/site-packages/inject/__init__.py", line 362, in instance
    return get_injector_or_die().get_instance(cls)
  File "/Users/torinaki/www/htdocs/ecore-cart-recommender/env/lib/python3.7/site-packages/inject/__init__.py", line 211, in get_instance
    return binding()
  File "/Users/torinaki/www/htdocs/ecore-cart-recommender/env/lib/python3.7/site-packages/inject/__init__.py", line 254, in __call__
    self._instance = self._constructor()
  File "/Users/torinaki/www/htdocs/ecore-cart-recommender/env/lib/python3.7/site-packages/inject/__init__.py", line 303, in injection_wrapper
    kwargs[param] = instance(cls)
  File "/Users/torinaki/www/htdocs/ecore-cart-recommender/env/lib/python3.7/site-packages/inject/__init__.py", line 362, in instance
    return get_injector_or_die().get_instance(cls)
  File "/Users/torinaki/www/htdocs/ecore-cart-recommender/env/lib/python3.7/site-packages/inject/__init__.py", line 211, in get_instance
    return binding()
  File "/Users/torinaki/www/htdocs/ecore-cart-recommender/env/lib/python3.7/site-packages/inject/__init__.py", line 254, in __call__
    self._instance = self._constructor()
  File "/Users/torinaki/www/htdocs/ecore-cart-recommender/env/lib/python3.7/site-packages/inject/__init__.py", line 304, in injection_wrapper
    return func(*args, **kwargs)
TypeError: __init__() missing 1 required positional argument: 'name'

Error message should provide class/function name, parameter name and type.