Commit Graph

509 Commits

Author SHA1 Message Date
Roman Mogylatov
7bdcc33eda Update wiring to support modules provided as packages 2021-08-06 15:56:24 -04:00
Roman Mogylatov
f376628dfa Bump version to 4.35.1 2021-08-05 17:05:17 -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
04117938d2 Bump version to 4.35.0 2021-07-29 16:41:23 -04:00
Roman Mogylatov
c19969a6ed Bump version to 4.34.2 2021-07-24 16:33:16 -04:00
Roman Mogylatov
aa251a44ba Fix reverse shutdown order bug in container.shutdown_resources() 2021-07-24 16:32:44 -04:00
Roman Mogylatov
a126df4764 Bump version to 4.34.1 2021-07-20 18:48:23 -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
6ffb98af67 Bump version to 4.34.0 2021-06-24 16:03:11 +03: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
31beb54979 Bump version to 4.33.0 2021-06-13 22:06:27 -04: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
e06dd782cd Bump version to 4.32.3 2021-05-20 18:12:00 -04:00
Roman Mogylatov
39fb88a0e9 Bump version to 4.32.2 2021-04-26 22:09:35 -04:00
Roman Mogylatov
eacb190907 Improve wiring fault tolerance 2021-04-26 22:07:48 -04:00
Roman Mogylatov
0f3e170711 Bump version to 4.32.1 2021-04-25 13:45:34 -04:00
Roman Mogylatov
42deda7eb5 Bump version to 4.32.0 2021-04-18 21:47:47 -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
57b4913b9b Bump version to 4.31.2 and update changelog 2021-03-30 14:02:12 -06:00
Roman Mogylatov
7b70f46601 Fix an issue with Dict provider non-string keys 2021-03-30 10:25:45 -04:00
Roman Mogylatov
37dd617260 Bump version to 4.31.1 2021-03-23 21:14:35 -04:00
Roman Mogylatov
1aef599606
Fix ThreadSafeSingleton synchronization issue (#434)
* Fix ThreadSafeSingleton synchronization issue

* Update changelog
2021-03-23 21:14:03 -04:00
Roman Mogylatov
88455d10ff Bump version to 4.31.0 2021-03-20 21:42:40 -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
9ea8709ed9 Bump version to 4.30.0 2021-03-19 20:23:20 -04:00
Roman Mogylatov
6c1b7cc677 Remove restriction to wire a dynamic container 2021-03-19 20:23:10 -04:00
Roman Mogylatov
e42d7dc05e Bump version to 4.29.2 2021-03-08 16:33:32 -05: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
dbad7949b0 Bump version to 4.29.1 2021-03-05 17:28:46 -05:00
Roman Mogylatov
22629544a4 Fix recursive copying issue in `Delegate` provider 2021-03-05 17:24:48 -05:00
Roman Mogylatov
3f026887bf Bump version to 4.29.0 2021-03-03 09:06:19 -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
e6a0973be3 Bump version to 4.28.1 2021-03-01 09:06:11 -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
cc05b42200 Bump version to 4.28.0 2021-02-28 21:08:50 -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
48392beff2 Bump version to 4.27.0 2021-02-27 09:46:58 -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
0149338bb6 Bump version to 4.26.0 2021-02-21 10:35:33 -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
d9d811a4d4 Improve error message for `Dependency` provider missing attribute 2021-02-19 08:50:14 -05:00
Roman Mogylatov
e5017347c7 Bump version to 4.25.1 2021-02-19 08:11:18 -05:00
Roman Mogylatov
a71154e05f Bump version to 4.25.0 2021-02-18 17:52:29 -05:00
Roman Mogylatov
990fd3a554 Add attributes forwarding for the `Dependency` provider 2021-02-18 17:49:23 -05:00
Roman Mogylatov
1d588cf9f6 Bump version to 4.24.0 2021-02-18 08:51:11 -05:00
Roman Mogylatov
13aa5fa53d Refactor @containers.copy() decorator 2021-02-18 08:25:22 -05:00
Roman Mogylatov
c7ba58c0af Refactor async mode support in containers module 2021-02-18 08:17:05 -05:00
Roman Mogylatov
763d42d532 Bump version to 4.23.5 2021-02-17 11:31:54 -05:00
Roman Mogylatov
6c45eb4eee Bump version to 4.23.4 2021-02-17 10:08:43 -05:00
Roman Mogylatov
24cfd13acb Bump version to 4.23.3 2021-02-17 10:02:20 -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
6402c5b6f1 Bump version to 4.23.2 2021-02-16 12:28:00 -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
Roman Mogylatov
12d53c799d Bump version to 4.23.1 2021-02-15 18:13:01 -05:00
Roman Mogylatov
8cc2c1188b Fix issue #398 with FastAPI request importing 2021-02-15 17:47:03 -05:00
Roman Mogylatov
c28a4dc047 Bump version to 4.23.0 2021-02-15 09:12:46 -05:00
Roman Mogylatov
64d37efa37
Configuration provider aliases (#397)
* Add implementation, typing stubs, and tests

* Add docs and example

* Update changelog
2021-02-15 09:11:39 -05:00
Roman Mogylatov
ed0a413b67 Bump version to 4.22.1 2021-02-14 21:09:21 -05:00
Roman Mogylatov
22bc447d14 Bump version to 4.22.0 2021-02-14 19:09:44 -05:00
Roman Mogylatov
8b770772a1 Add container name to the representation of the dependency provider 2021-02-14 19:09:08 -05:00
Roman Mogylatov
8eea9c4e45
Implement container.check_dependencies() (#396)
* Add implementation, typing stubs, and tests

* Add docs and example

* Update changelog
2021-02-14 18:47:15 -05:00
Roman Mogylatov
7fdd25e46f Bump version to 4.21.0 2021-02-13 09:17:59 -05:00
Roman Mogylatov
21c0c82144 Clean up DeclarativeContainer and add tests 2021-02-13 08:36:45 -05:00
Roman Mogylatov
1d884b5101 Refactor isinstance() checks 2021-02-12 19:01:54 -05:00
Roman Mogylatov
3ba65da1ad Clean up container instance and add tests 2021-02-12 18:55:20 -05:00
Roman Mogylatov
cb7c13f1ba Clean up Container provider and add tests 2021-02-12 16:58:23 -05:00
Roman Mogylatov
351bdd282e Clean up DependenciesContainer provider and add tests 2021-02-12 09:16:21 -05:00
Roman Mogylatov
b376836150 Add tests for Dependency provider 2021-02-12 08:35:04 -05:00
Roman Mogylatov
99e404650f Refactor Dependency provider and its typing stub 2021-02-12 08:02:44 -05:00
Roman Mogylatov
b68d4d8d08 Rename set_parent() to assign_parent() 2021-02-11 18:06:47 -05:00
Roman Mogylatov
dd6b0caffd Fix flaky container copy issue 2021-02-11 16:32:31 -05:00
Roman Mogylatov
980f9fc2bc Add hardening fix for Self provider to avoid copying bugs 2021-02-11 09:20:05 -05:00
Roman Mogylatov
e29040d2ee Fix Dependency provider copying issue 2021-02-11 09:09:52 -05:00
Roman Mogylatov
7ef3c63ca9 Update DependenciesContainer to handle Contrainer provider 2021-02-11 07:50:52 -05:00
Roman Mogylatov
5f34c7ce3f Add working prototype, requires deep refactoring 2021-02-10 08:52:13 -05:00
Roman Mogylatov
ff3ae95482 Add working prototype for sample 1 and 3 2021-02-10 07:57:04 -05:00
Roman Mogylatov
1c433ed0ad Add prototype for flat resolving 2021-02-09 08:57:31 -05:00
Roman Mogylatov
5b18d609f1 Bump version to 4.20.2 2021-02-09 07:35:55 -05:00
Roman Mogylatov
719b61cf22 Bump version to 4.20.1 2021-02-07 14:17:40 -05:00
Roman Mogylatov
6b24cb84a5 Bump version to 4.20.0 2021-02-07 14:14:22 -05:00
Roman Mogylatov
674a6b0f9e
Container "self" injections (#392)
* Add implementation

* Add Self provider tests

* Add container tests

* Remove ellipsis from tests to make them pass on Python 2

* Add tests

* Add docs

* Improve traverse() typing stubs

* Update changelog
2021-02-07 14:13:23 -05:00
Roman Mogylatov
398d502981 Bump version to 4.19.0 2021-02-05 18:28:26 -05:00
Roman Mogylatov
2fe0e00cef
Singleton.full_reset() (#391)
* Improve .traverse() typing stubs

* Fix container.reset_singletons()

* Add implementation, tests, and typing stubs

* Add docs and example

* Update changelog
2021-02-05 18:17:44 -05:00
Roman Mogylatov
e80c56f9be Bump version to 4.18.0 2021-02-05 17:23:10 -05:00
Roman Mogylatov
c964253204
Container.reset_singletons() (#390)
* Rename container tests

* Add implementation + tests

* Update changelog

* Add examples and docs
2021-02-05 17:14:10 -05:00
Roman Mogylatov
c4892af31e Refactor `container.apply_container_providers_overridings() to use container.traverse()` 2021-02-05 08:59:16 -05:00
Roman Mogylatov
2c1eb9f95f Bump version to 4.17.0 2021-02-04 18:19:40 -05:00
Roman Mogylatov
892330f43c Bump version to 4.16.0 2021-02-03 15:40:41 -05:00
Roman Mogylatov
cba5aefd65 Add container base class 2021-02-03 15:36:37 -05:00
Roman Mogylatov
f48fd159f0 Bump version to 4.15.0 2021-02-03 09:22:40 -05:00
Roman Mogylatov
15fa6c301e
Pydantic settings support (#388)
* Add implementation and basic test

* Add full test coverage + bugfix

* Add test coverage for .from_yaml() method

* Update setup.py, tox and dev requirements

* Stop running pydantic tests on Python 3.5 and below

* Remove pydantic from tox Python < 3.6

* Add example and docs

* Update features block

* Add extra test

* Update changelog
2021-02-03 09:21:32 -05:00
Roman Mogylatov
fbe51b95e8 Bump version to 4.14.0 2021-02-01 09:55:21 -05:00
Roman Mogylatov
e9a16d1f17 Fix #380: .init_resources() and .shutdown_resource() dont ignore nested resources 2021-02-01 09:54:36 -05:00
Roman Mogylatov
3ca6dd9af1
Providers traversal (#385)
* Implement providers traversal in first precision

* Implement traversal for all providers

* Update traverse interface + add some tests

* Refactor tests

* Add tests for callable provider

* Add configuration tests

* Add Factory tests

* Add FactoryAggrefate tests

* Add .provides attribute to singleton providers

* Add singleton provider tests

* Add list and dict provider tests

* Add resource tests

* Add Container provider tests

* Add Selector provider tests

* Add ProvidedInstance provider tests

* Add AttributeGetter provider tests

* Add ItemGetter provider tests

* Add MethodCaller provider tests

* Refactor container interface

* Update resource provider string representation

* Add .initializer attribute to Resource provider

* Add docs and examples

* Remove not needed EOL in the tests

* Make cosmetic refactoring

* Ignore flake8 line width error in traverse example
2021-02-01 09:42:21 -05:00
Roman Mogylatov
cd949c6a0b Bump version to 4.13.2 2021-01-29 16:58:30 -05:00