Roman Mogylatov
742e73af1a
Aggregate provider ( #544 )
...
* Add implementation and typing stubs
* Add tests
* Add typing tests
* Refactor FactoryAggregate
* Update changelog
* Add Aggregate provider docs and example
* Update cross links between Aggregate, Selector, and FactoryAggregate docs
* Add wording improvements to the docs
2022-01-09 21:45:20 -05:00
Roman Mogylatov
cfadd8c3fa
Add config.from_env(as_=...) ( #541 )
...
* Add implementation and typing stub
* Add unit tests
* Update demo example
* Add typing tests
* Update changelog
* Update docs
* Add tests for an empty environment variable
* Improve wording in di_in_python.rst
* Update wording in changelog and docs
* Update doc blocks
2021-12-20 23:46:51 +01:00
Roman Mogylatov
7238482402
Add .providers attribute and .set_providers() method to FactoryAggregate provider
2021-11-26 19:50:19 +03:00
Roman Mogylatov
6030950596
Configuration(pydantic_settings=[...]) ( #525 )
...
* Add implementation
* Update changelog
* Fix deepcopy()
* Add example
* Add tests
* Add docs
2021-10-26 21:08:47 -04:00
Roman Mogylatov
34902db86e
Configuration(ini_files=[...]) ( #524 )
...
* Update changelog
* Add implementation
* Add tests
* Add more tests and example
* Update changelog
* Update documentation
2021-10-26 20:27:11 -04:00
Roman Mogylatov
b16b190ff7
Configuration(yaml_files=[...]) ( #522 )
...
* Add provider changes and tests
* Move config test fixtures
* Fix issue with explicit providing of envs_required=False for configuration from_*()
* Implement container API
* Increase priority of overriding from context
* Add docs and example
* Update changelog
* Update changelog
2021-10-23 21:46:50 -04:00
Roman Mogylatov
b97862cb9f
Python 3.10 ( #520 )
...
* Add GA test and linter jobs
* Remove not used async run() functions from tests
* Update aiohttp ext test
* Add botocore warning ignores
* Update changelog
* Update publishing job config for testing
* Publishing test #1
* Update GA tests-and-linters job to use latest ubuntu for tests
* Update publishing GA job
2021-10-20 12:10:05 -04:00
Roman Mogylatov
94aca21fb8
Pytest migration ( #519 )
...
* Add pytest and pytest-asyncio to the requirements
* Update aiohttp ext test
* Update setup.cfg
* Update tox.ini
* Add pytest to the tox requirements
* Update tox.ini
* Move configuration to tox.ini
* Add pytest configs
* Rename pytest-py34-py35.ini -> pytest-py35.ini
* Update config file paths
* Update makefile
* Migrate common tests to pytest
* Migrate FastAPI and Flask wiring tests
* Rename flask and fastapi wiring test files
* Move wiring autoloader tests
* Add pytest-asyncio to the tox.ini
* Migrate wiring async injection tests
* Migrate main wiring tests
* Migrate wiring string module and package names tests
* Migrate wiring config tests
* Migrate misc wiring tests
* Update tests structure
* Migrate misc wiring tests
* Refactor container.from_schema() API tests
* Migrate container.from_schema() integration tests
* Rename schema samples
* Update sample imports
* Migrate container tests
* Refactor container tests
* Migrate container self tests
* Migrate container instance tests
* Migrate container custom string attribute name tests
* Migrate container async resource tests
* Fix py2 container tests
* Migrate container cls tests
* Migrate container class custom string cls as atrribute name tests
* Migrate ext.aiohttp tests
* Migrate ext.flasks tests
* Update ext package tests doc block
* Migrate provider utils tests
* Migrate Factory async mode tests
* Migrate async tests
* Rename common test module
* Refactor asserts in provider tests
* Migrate factory tests
* Migrate selector provider tests
* Migrate object provider tests
* Migrate self provider tests
* Migrate delegate provider tests
* Migrate provider tests
* Migrate dependency provider tests
* Migrate dependencies container provider tests
* Fix warnings
* Migrate list provider tests
* Migrate dict provider tests
* Migrate callable tests
* Migrate injection tests
* Migrate container provider tests
* Migrate coroutine providers
* Migrate traversal tests
* Migrate resource tests
* Migrate configuration tests
* Migrate provided instance provider tests
* Update doc blocks and imports
* Migrate singleton tests
* Update changelog and cosmetic fixes
2021-10-18 16:19:03 -04:00
Roman Mogylatov
4cc4ca9188
Drop Python 3.4 support ( #518 )
...
* Update gitignore
* Drop Python 3.4 support
* Update change log
* Fix typo in changelog
2021-10-12 12:16:49 -04:00
Roman Mogylatov
284dee6e58
Add with support for container.override_providers() ( #517 )
...
* Add implementation, tests, and typing stub
* Update documentation
* Update changelog
2021-10-06 21:36:41 -04:00
Roman Mogylatov
73a43e6191
Wiring config ( #516 )
...
* Implement POC
* Implement concept with WiringConfiguration object
* Update changelog
* Add docs
* Update changelog
2021-10-03 20:35:48 -04:00
Roman Mogylatov
8ade2b7839
Update quotes in tests
2021-09-30 20:09:42 -04:00
Roman Mogylatov
0b1e214135
Fix flast wiring test
2021-09-30 19:32:18 -04:00
Roman Mogylatov
7d160cb4a5
Wiring with string module names ( #515 )
...
* Update main example
* Updating wiring module
* Update wiring test case name
* Implement string imports for wiring
* Update example
* Refactor implementation
* Update front example
* Fix a typo in README
* Update wiring docs
* Update single container example
* Update multiple containers example
* Update quotes in multiple containers example
* Update quotes in single container example
* Update decoupled-packages example
* Update single and multiple containers example
* Update quotes
* Update fastapi+redis example
* Update resource docs
* Update quotes in CLI tutorial
* Update CLI application (movie lister) tutorial
* Update monitoring daemon example
* Update python version in asyncio daemon example
* Update asyncio daemon tutorial
* Update quotes in wiring docs
* Update wiring docs
2021-09-30 15:03:19 -04:00
Roman Mogylatov
4733aad44e
Fix provide issue ( #514 )
2021-09-25 15:36:48 -04:00
Roman Mogylatov
14d8ed909b
FactoryAggregate - non string keys ( #496 )
...
* Improve FactoryAggregate typing stub
* Add implementation, typing stubs, and tests
* Update changelog
* Fix deepcopying
* Add example
* Update docs
* Fix errors formatting for pypy3
2021-08-25 10:20:45 -04:00
Thiago Hiromi
b4df3dd2c9
Fix type annotations for .provides ( #491 )
...
* Fix type annotations for .provides
* Fix type hinting for .provides
as @rmk135 suggested
2021-08-23 21:24:36 -04:00
Roman Mogylatov
36bfd2ed58
Improve resource subclasses typing and make shutdown definition optional ( #492 )
...
* Improve resource subclasses typing and make shutdown definition optional
* Update mypy tests
2021-08-23 20:54:17 -04:00
Roman Mogylatov
83c2af0e7e
Fix resource subclass abc tests on Python 3.7
2021-08-16 18:27:42 -04:00
Roman Mogylatov
1163ac59d4
Return ABCMeta class for resource classes and add tests for abc
2021-08-16 18:19:40 -04:00
Roman Mogylatov
4286013ca0
Remove generic meta class from resource and async resource classes ( #490 )
...
* Remove generic meta class from resource and async resource classes
* Add link to the issue into the tests
* Update changelog
2021-08-16 10:05:50 -04:00
Roman Mogylatov
c4639e555e
Add typing fix for container.override_providers()
2021-08-11 21:24:34 -04:00
Roman Mogylatov
7b19fa0964
477 Containers @copy fix and refactoring ( #485 )
...
* Rename local variables
* Make code layout enhancements
* Add fix and tests
* Add more refactoring
* Update changelog
2021-08-11 21:18:37 -04:00
Roman Mogylatov
7bdcc33eda
Update wiring to support modules provided as packages
2021-08-06 15:56:24 -04:00
Roman Mogylatov
384117db9c
Update declarative container to support custom string types
2021-08-05 17:01:53 -04:00
Roman Mogylatov
06f9855140
Update types and add tests ( #480 )
2021-08-05 16:52:08 -04:00
Roman Mogylatov
aa251a44ba
Fix reverse shutdown order bug in container.shutdown_resources()
2021-07-24 16:32:44 -04:00
Roman Mogylatov
3d1bb5d7b3
432 resource shutdown order ( #473 )
...
* Add PoC
* Add tests for init and shutdown ordering
* Add circular dependencies breaker tests
* Refactoring and sync + async test
* Update changelog
2021-07-20 18:46:44 -04:00
Roman Mogylatov
ef049daae5
463 Config environment variables interpolation required and nones ( #467 )
...
* Make prototype with enterpolation before parsing
* Add test for option.from_yaml() with missing env not required
* Make some cosmetic changes to _resolve_config_env_markers()
* Add test for option.from_ini() missing envs not required
* Skip schema test cause it requires internet connection
* Add tests for .from_yaml() for config and config option
* Add tests for .from_ini() for config and config option
* Add example for os.environ.setdefault() and envs interpolation
* Add/update docs on environment variables interpolation
* Update changelog
2021-06-24 16:00:36 +03:00
Roman Mogylatov
dbbf5fdcf1
462 Config.from_value() ( #465 )
...
* Implement .from_value() method for config provider
* Add tests for config.from_value() method
* Add example for config.from_value()
* Add docs
* Update changelog
2021-06-13 22:05:29 -04:00
Roman Mogylatov
bbd623c719
459 Add default value for environment variable for yaml and ini config files ( #461 )
...
* Add tests for partial yaml interpolation
* Add tests for partial ini interpolation
* Add yaml config env defaults parsing
* Implement default interpolation for ini files
* Add tests for ini files env interpolation
* Update docs
* Update docs
* Update config docs keywords
2021-06-13 15:07:30 -04:00
Roman Mogylatov
0f3e170711
Bump version to 4.32.1
2021-04-25 13:45:34 -04:00
RK
9cb8e60280
Feature: Context local provider ( #442 )
...
Co-authored-by: Rollo Konig Brock <rollo@b2c2.com>
2021-04-18 21:37:55 -04:00
Roman Mogylatov
7b70f46601
Fix an issue with Dict provider non-string keys
2021-03-30 10:25:45 -04:00
Roman Mogylatov
41e698f633
Fix configuration cache reset ( #430 )
...
* Implement fix
* Improve providers copying
* Add tests and implement cache reset for configuration option
* Update changelog
* Add link to the issue
2021-03-20 21:41:39 -04:00
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
6c1b7cc677
Remove restriction to wire a dynamic container
2021-03-19 20:23:10 -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
d4ebb1b786
Remove unittest2 ( #419 )
...
* Remove unittest2 framework
* Skip a couple of tests on Python 2.7
* Update changelog
2021-03-05 20:17:28 -05:00
Roman Mogylatov
1304e596d6
Container provider override API ( #418 )
...
* Implement override API
* Add tests
* Update changelog
2021-03-03 09:05:15 -05:00
Roman Mogylatov
2bf3601695
Singleton reset context ( #417 )
...
* Add implementation and typing stubs
* Make some refactoring and add tests
* Pin ubuntu version to 18.04
* Add docs and example
* Add changelog
* Add container docs
2021-03-03 08:28:10 -05:00
Roman Mogylatov
346451819e
Fix async mode mode exception handling issue in `Dependency
` provider
2021-03-01 09:01:51 -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
Shubhendra Singh Chauhan
43eb15ed65
fix: code quality issues ( #406 )
...
* Refactor unnecessary `else` / `elif` when `if` block has a `return` statement
* Remove unused imports
* Use literal syntax to create data structure
* revert "remove unused import"
2021-02-25 09:44:15 -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
990fd3a554
Add attributes forwarding for the `Dependency
` provider
2021-02-18 17:49:23 -05:00
Roman Mogylatov
27d0e07718
Async mode awaitable fix ( #400 )
...
* Fix mistakenly processed awaitable objects
* Update changelog
* Replace __isawaitable() with __is_future_or_coroutine()
* Refactor async mode
2021-02-17 09:56:39 -05:00
Roman Mogylatov
de1181bdf7
Async mode fixes ( #399 )
...
* Fix double printing of exception when initializing resource causes error
* Improve async mode exceptions handling to prevent infinite hanging when exception occurs
* Improve async mode exceptions handling
* Update changelog
* Update tests
2021-02-16 12:26:23 -05:00