Roman Mogylatov
aaff333f01
Python 3.11 Support ( #647 )
...
* Update tests
* Enable tests on 3.11
* Fix coverage config in tox.ini
* feat: re cythonize to support python 3.11 (#646 )
* feat: re cythonize to support python 3.11
* misc: added tox env for python 3.11
* misc: add classifiers for python 3.11
* fix: skip tests for removed functions
* misc: CI updates for python 3.11
Co-authored-by: Roman Mogylatov <rmogilatov@gmail.com>
* Update tests and linters job
* Update test skip decorators
* Fix tox.ini
* Update 3.10 to be explicit string literal
* Move pypy3 to legacy job
* Fix error in resourse typing test
* Update publishing job
* Update actions and setup-python versions
* Update changelog
* Update pypy
* Update tox.ini with new pypy versions
* Update publishing job
* Update actions/upload-artifact@v3
* Update ubuntu to 22.04 on docs publishing job
* Update actions/download-artifact@v3 and pypa/gh-action-pypi-publish@release/v1
Co-authored-by: Gen Xu <xgbarry@gmail.com>
2022-12-18 21:09:14 -05:00
Roman Mogylatov
142b91921a
Upgrade Cython to 0.29.30 ( #605 )
2022-07-10 21:23:25 -04:00
Roman Mogylatov
753e863d02
Add `Configuration.from_json()
` method ( #602 )
...
* Add implementation and tests
* Refactor naming in configuration fixtures
* Add typing for .from_json()
* Move get/set_ini_files() methods upper
* Add init implementation and tests
* Refactor typing tests
* Add examples
* Add docs
* Update docs index and readme
* Update changelog
2022-07-10 21:08:45 -04:00
Roman Mogylatov
cfed30cf07
Hotfix issue #574 , bump version to 4.39.1
2022-03-29 22:51:40 -04:00
Roman Mogylatov
77b5cdebd3
Optimization r1 ( #571 )
...
* Add isfuture() and iscoroutine() optimization
* Apply async mode optimization
* Wiring changes
* Add optimization for wiring of async coroutines
* Remove unused imports
* Update changelog
* Refactor async mode checks
2022-03-27 22:20:05 -04:00
Roman Mogylatov
8dc3dd2f09
Update quotes in Cython and Python modules
2022-01-16 20:32:42 -05:00
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
7238482402
Add .providers attribute and .set_providers() method to FactoryAggregate provider
2021-11-26 19:50:19 +03:00
Roman Mogylatov
72d0e2610d
Add announce of Python 3.5 support dropping
2021-10-31 21:00:28 -04:00
Roman Mogylatov
99d858e2fb
Upgrade Cython to 0.29.24
2021-10-31 20:48:23 -04: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
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
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
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
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
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
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
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
990fd3a554
Add attributes forwarding for the `Dependency
` provider
2021-02-18 17:49:23 -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
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
839a319831
Better error message for dependency provider ( #395 )
...
* Add prototype for flat resolving
* Add working prototype for sample 1 and 3
* Add working prototype, requires deep refactoring
* Update DependenciesContainer to handle Contrainer provider
* Fix Dependency provider copying issue
* Add hardening fix for Self provider to avoid copying bugs
* Fix flaky container copy issue
* Rename set_parent() to assign_parent()
* Refactor Dependency provider and its typing stub
* Add tests for Dependency provider
* Update makefile to run coverage when tests fail
* Clean up DependenciesContainer provider and add tests
* Clean up Container provider and add tests
* Clean up container instance and add tests
* Refactor isinstance() checks
* Clean up DeclarativeContainer and add tests
* Update docs and examples
* Update changelog
* Revoke makefile change
2021-02-13 09:16:38 -05:00
Roman Mogylatov
719b61cf22
Bump version to 4.20.1
2021-02-07 14:17:40 -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
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
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
cba5aefd65
Add container base class
2021-02-03 15:36:37 -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
39cb963351
367 Fix declarative container metaclass bug with child providers
2021-01-29 16:37:50 -05:00
Roman Mogylatov
478ca18ae3
336 Dependency provider default ( #382 )
...
* Add implementation and tests
* Refactor dependency provider docs
* Update docs
* Update changelog
2021-01-29 13:49:40 -05:00
Roman Mogylatov
6224131a76
358 Replace configuration option weakref to root with regular ref
2021-01-28 08:40:43 -05:00
Roman Mogylatov
92938b018d
Improve @containers.copy to replace subcontainer providers ( #378 )
...
* Improve @containers.copy to replace subcontainer providers
* Bump version to 4.11.1
2021-01-27 09:21:45 -05:00
Roman Mogylatov
c16f974517
Refactor asynchronous injections
2021-01-21 11:20:24 -05:00
Roman Mogylatov
4b0272ab30
Fix #368 Async providers do not work with async dependencies
2021-01-21 10:58:49 -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
907a4f1887
Add dependencies attribute to declarative and dynamic containers ( #359 )
...
* Add .dependencies attribute to declarative and dynamic containers
* Update changelog
* Add typing tests
2021-01-15 07:20:37 -05:00
Roman Mogylatov
1628cfaf28
Fix `Container
` provider to apply context overridings on root container initialization
2021-01-13 17:07:41 -05:00
Roman Mogylatov
dd57c68ce5
Fix declarative container multi-level inheritance issue
2021-01-12 17:49:48 -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