Roman Mogylatov
feed916f46
Async resources and injections ( #352 )
...
* Add support of async injections into wiring
* Add support of async functions and async generators for resources
* Update resource provider typing stub for stutdown
* Add resource base class for async resources
* Fix tests
* Add tests for async injections in wiring @inject
* Refactor provider tests
* Add tests for async resources
* Rework async resources callbacks to .add_done_callback() style (fixes pypy3 issue)
* Add awaits into async resource class test
* Refactor FastAPI tests
* Implement async resources initialization in container
* Move container async resource tests to a separate module for Python 3.6+
* Fix init async resources in container on Python 2
* Add first dirty async injections implementation
* Fix isawaitable error
* Turm asyncio import to conditional for safer Py2 usage
* Refactor kwargs injections
* Implement positional injections, add tests and make refactoring
* Implement attribute injections and add tests
* Add singleton implementation + tests for all singleton types
* Implement injections in thread-local and thread-safe singleton providers
* Update .provided + fix resource concurent initialization issue
* Implement async mode for Dependency provider
* Add async mode for the provider
* Add overload for Factory typing
* Add typing stubs for async resource
* Refactor abstract* providers __call__()
* Add async mode API + tests
* Add typing stubs & tests for async mode API
* Add tests for async mode auto configuration
* Refactor Provider.__call__() to use async mode api
* Refactor Dependency provider to use async mode api
* Add tests for Dependency provider async mode
* Add support of async mode for FactoryAggregate provider + tests
* Refactor Singleton provider to use async mode api
* Refactor ThreadSafeSingleton provider to use async mode api
* Refactor ThreadLocalSingleton provider to use async mode api
* Finish Singleton refactoring to use async mode api
* Refactor Resource provider to use async mode api
* Add Provider.async_() method + tests
* Add typing stubs for async_() method + tests
* Refactor Singleton typing stubs to return singleton from argument methods
* Refactor provider typing stubs
* Improve resource typing stub
* Add tests for async context kwargs injections
* Fix typo in resource provider tests
* Cover shutdown of not initialized resource
* Add test to cover resource initialization with an error
* Fix Singleton and ThreadLocalSingleton to handle initialization errors
* Add FastAPI + Redis example
* Make cosmetic fixes to FastAPI + Redis example
* Add missing development requirements
* Update module docblock in fastapi + redis example
* Add FastAPI + Redis example docs
* Add references to FastAPI + Redis example
* Refactor resource docs
* Add asynchronous resources docs
* Refactor wiring docs
* Add async injections docs for wiring
* Add async injections page and update docs index, readme, and key features pages
* Add providers async injections example
* Add docs on provider async mode enabling
* Reword async provider docs
* Add provider async mode docs
* Add cross links to async docs
* Mute flake8 errors in async provider examples
* Update changelog
* Make cosmetic fix to containers.pyx
2021-01-10 19:26:15 -05:00
Roman Mogylatov
034e4814da
Add support of non-string keys for Dict provider
2020-11-20 17:30:42 -05:00
Roman Mogylatov
c8178cecda
Add extra typing test for provided instance of `DependenciesContainer
` provider
2020-11-20 12:25:35 -05:00
Roman Mogylatov
47c79b2772
Resources ( #312 )
...
* Add prototype
* Add example
* Remove typing erros in Python 2.7 and 3.4
* Move resources example
* Draft resources docs
* Update resources docs
* Fix repr
* Rename dict provider test
* Add more tests
* Add tests + refactoring
* Add more tests
* Update tests to run only on 3.5+
* Update setup.py
* Add typing tests
* Update changelog
* Fix generator iteration
* Remove contextlib
* Hotfix aiohttp issue
* Move aiohttp fix to tox.ini
* Move aiohttp fix to a different place in tox
2020-10-24 20:56:32 -04:00
Roman Mogylatov
ff4d24706e
Move "provided" attribute ( #306 )
...
* Update typing stub
* Move attribute
* Add typing test
* Update docs
* Add test
* Update changelog
2020-10-19 17:21:38 -04:00
Roman Mogylatov
0ffa1e8392
Fix typing stub for container.override() method
2020-10-18 22:22:11 -04:00
Roman Mogylatov
56c9023b2d
Fix override and copy decorator stubs ( #302 )
...
* Fix stubs and add tests
* Fix tests
* Fix stubs
2020-10-16 16:36:07 -04:00
Rüdiger Busche
819023e7aa
Make Configuration.from_ methods accept Path ( #300 )
...
Co-authored-by: rbusche <rbusche@inserve.de>
2020-10-16 13:57:28 -04:00
Roman Mogylatov
d8439a28b1
Make provider generic type ( #293 )
...
* Add __class_getitem__ for Provider to null the typing in runtime
* Make Provider stub generic and remove types module
* Update types module tests
* Return types module with deprecation warning
* Return types module with deprecation warning
* Update changelog
* Add docs page
2020-09-13 20:32:21 -04:00
Roman Mogylatov
2e940adb50
Typing stubs ( #286 )
...
* Add basic setup
* Add more tests for factory
* Add mypy checks to CI
* Add mypy checks to makefile command
* Add typing for the factories
* Add stub for Callable providers
* Add typing module and object provider stubs
* Fix typing test issue
* Remove typing module
* Add Delegate stub
* Add stub for Dependency provider
* Add stub for ExternalDependency
* Add stubs for providers module functions
* Add stubs for the DependenciesContainer provider
* Add stub for the CallableDelegate provider
* Add stubs for Coroutine providers
* Add stubs for the configuration options
* Add stub for the FactoryDelegate
* Add stub for the FactoryAggregate provider
* Add singleton stubs
* Add stubs for singletons
* Add stub for the List provider
* Add stub for the Container provider
* Add stub for the Selector provider
* Add stubs for the dynamic container
* Add stub for the declarative container
* Add stubs for the extensions
* Add types module for explicit provider typing
* Set absolute import mode for the providers module and add types module test
* Skip typing test for Python 3.5
* Remove coroutine test from py35
* Fix py35 tests
* Add \n to the tox.ini
2020-08-26 22:24:20 -04:00