Roman Mogylatov
f961ff536a
Schemas ( #429 )
...
* Add single container prototype
* Add multiple containers prototype
* Add integration tests
* Implement from_*() methods and add tests
* Prototype inline injections
* Add integration test for inline providers
* Refactor integration tests
* Add integration test for reordered schema
* Remove unused imports from tests
* Refactor schema module
* Update tests to match latest schemas
* Add mypy_boto3_s3 to the test requirements
* Add boto3 to the test requirements
* Add set_provides for Callable, Factory, and Singleton providers
* Fix warnings in tests
* Add typing stubs for Callable, Factory, and Singleton .set_provides() attributes
* Fix singleton children to have optional provides
* Implement provider to provider resolving
* Fix pypy3 tests
* Implement boto3 session use case and add tests
* Implement lazy initialization and improve copying for Callable, Factory, Singleton, and Coroutine providers
* Fix Python 2 tests
* Add region name for boto3 integration example
* Remove f-strings from set_provides()
* Fix schema flake8 errors
* Implement lazy initialization and improve copying for Delegate provider
* Implement lazy initialization and improve copying for Object provider
* Speed up wiring tests
* Implement lazy initialization and improve copying for FactoryAggregate provider
* Implement lazy initialization and improve copying for Selector provider
* Implement lazy initialization and improve copying for Dependency provider
* Implement lazy initialization and improve copying for Resource provider
* Implement lazy initialization and improve copying for Configuration provider
* Implement lazy initialization and improve copying for ProvidedInstance provider
* Implement lazy initialization and improve copying for AttributeGetter provider
* Implement lazy initialization and improve copying for ItemGetter provider
* Implement lazy initialization and improve copying for MethodCaller provder
* Update changelog
* Fix typing in wiring module
* Fix wiring module loader uninstallation issue
* Fix provided instance providers error handing in asynchronous mode
Co-authored-by: Roman Mogylatov <rmk@Romans-MacBook-Pro.local>
2021-03-20 13:16:51 -04:00
Roman Mogylatov
bbbed8972a
Wiring import fixes numpy scipy ( #422 )
...
* Add signature guards
* Fix flake8 errors and update changelog
* Fix slow numpy/scipy installs on pypy3
2021-03-08 16:32:34 -05:00
Roman Mogylatov
da13341453
Wiring: attribute injections ( #414 )
...
* Add implementation
* Add tests for module and class
* Add tests for module and class for string ids
* Update tests with typing
* Add tests for invalid type of marker
* Add docs and the example
* Update changelog
* Fix Python 3.6 tests and flake8
2021-02-28 21:07:50 -05:00
Roman Mogylatov
73b8a4aac4
Introduce wiring inspect filter ( #412 )
...
* Introduce wiring inspect filter
* Upgrade exclusion filter
* Refactor wiring
2021-02-27 09:45:49 -05:00
Roman Mogylatov
5f6777db19
Add tests for `.as_float()
` modifier usage with wiring
2021-02-23 10:20:04 -05:00
Roman Mogylatov
a4a84bea54
Wiring by string id ( #403 )
...
* Add prototype implementation
* Implement wiring by string id
* Fix pydocstyle errors
* Refactor wiring module
* Fix flake8 errors
* Update changelog
* Fix flake8 errors
* Add example and docs
2021-02-21 10:34:28 -05:00
Roman Mogylatov
8cc2c1188b
Fix issue #398 with FastAPI request importing
2021-02-15 17:47:03 -05:00
Roman Mogylatov
4991c5d4b0
Fix a Python 3.9 GenericAlias introspection bug, issue #362
2021-01-18 20:49:56 -05:00
Roman Mogylatov
d74e8248a1
Required config options and strict mode ( #360 )
...
* Add strict mode + tests
* Add .required() for configuration option
* Add wiring tests for required() modifier
* Add wiring support
* Add tests for defined None values in required/strict mode
* Add docs
* Update changelog
* Update example doc block
2021-01-16 08:53:40 -05:00
Roman Mogylatov
8dd8446d39
Wiring container injection ( #353 )
...
* Add container injections to wiring
* Add example
* Update docs
* Update changelog
* Improve typing
2021-01-11 08:18:02 -05:00
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
ec49d56751
Add tests for FastAPI wiring
2020-12-05 21:36:30 -05:00
Roman Mogylatov
ae3024588c
Wiring reengineering ( #324 )
...
* Bump version to 4.3.9: FastAPI example
* Reengineer wiring
* Add @inject decorator
* Add .workspace dir to gitignore
* Add generic typing for @inject
* Add type cast for @inject
* Update movie lister example
* Update cli application tutorial
* Update demo example
* Update wiring docs and examples
* Update aiohttp example and tutorial
* Update multiple containers example
* Update single container example
* Update decoupled packages example
* Update django example
* Update asyncio daemon example and tutorial
* Update FastAPI example
* Update flask example and tutorial
* Update sanic example
* Add wiring registry
* Add new line to .gitignore
* Add @inject to the test samples
* Fix flake8 errors
2020-11-15 16:06:42 -05:00
Roman Mogylatov
c5f799a1ec
Fix issue with wiring and resource initialization
2020-10-30 16:40:27 -04:00
Roman Mogylatov
707446a70f
Closing wiring marker ( #315 )
...
* Add closing marker
* Add example
* Fix flake8 errors
* Add test
* Update docs and README
2020-10-29 22:55:09 -04:00
Roman Mogylatov
776cb4eebf
Fix multiple containers wiring issue
2020-10-28 13:44:11 -04:00
Roman Mogylatov
2565a1eab0
Fix wiring for @classmethod
2020-10-28 13:11:07 -04:00
Roman Mogylatov
4ddac663d9
Fix wiring for package init ( #308 )
...
* Add test
* Add fix
* Add extra test
* Remove package imports on discovery for Python versions < 3.6
* Move wiring samples to a different directory
2020-10-20 17:48:54 -04:00