Commit Graph

315 Commits

Author SHA1 Message Date
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
Roman Mogylatov
ca54db6d05 Bump version to 4.0.5 2020-10-19 17:35:12 -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
81c67f8b27 Bump version to 4.0.4 2020-10-18 22:27:53 -04:00
Roman Mogylatov
0ffa1e8392 Fix typing stub for container.override() method 2020-10-18 22:22:11 -04:00
Roman Mogylatov
44e0a03148 Bump version to 4.0.3 2020-10-16 21:44:12 -04:00
Roman Mogylatov
f1867b6bf4
Deprecate declarative container decorators (#303) 2020-10-16 21:43:21 -04:00
Roman Mogylatov
619fa1f25c Bump version to 4.0.2 2020-10-16 16:38:37 -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
Roman Mogylatov
09d1c4ce9f Bump versionto 4.0.1 2020-10-16 14:10:14 -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
846deaa4dc Bump version to 4.0.0 2020-10-09 15:17:23 -04:00
Roman Mogylatov
07d4f7e74f
Develop 4.0 (#298)
* Add wiring (#294)

* Add wiring module

* Fix code style

* Fix package test

* Add version fix

* Try spike for 3.6

* Try another fix with metaclass

* Downsample required version to 3.6

* Introduce concept with annotations

* Fix bugs

* Add debug message

* Add extra tests

* Add extra debugging

* Update config resolving

* Remove 3.6 generic meta fix

* Fix Flake8

* Add spike for 3.6

* Add Python 3.6 spike

* Add unwire functionality

* Add support of corouting functions

* Bump version to 4.0

* Updaet demo example

* Add pydocstyle ignore for demo

* Add flake8 ignore for demo

* Update aiohttp example

* Update flask example

* Rename aiohttp example directory

* Rename views module to handlers in aiohttp example

* Add sanic example

* Remove not needed images

* Update demo

* Implement wiring for Provide[foo.provider]

* Implement Provide[foo.provided.bar.baz.call()]

* Make flake8 happy

* Wiring refactoring (#296)

* Refactor wiring

* Add todos to wiring

* Implement wiring of config invariant

* Implement sub containers wiring + add tests

* Add test for wiring config invariant

* Add container.unwire() typing stub

* Deprecate ext package modules and remove types module

* Deprecate provider.delegate() method

* Add __all__ for wiring module

* Add protection for wiring only declarative container instances

* Bump version to 4.0.0a2

* Add wiring docs

* Add wiring of class methods

* Remove unused import

* Add a note on individuals import to wiring docs

* Add minor improvement to wiring doc

* Update DI in Python page

* Update key features

* Update README concep and FAQ

* Add files via upload

* Update README.rst

* Update README.rst

* Update README.rst

* Update docs index page

* Update README

* Remove API docs for flask and aiohttp ext

* Add wiring API docs

* Update docs index

* Update README

* Update readme and docs index

* Change wording in README

* Django example (#297)

* Add rough django example

* Remove sqlite db

* Add gitignore

* Fix flake8 and pydocstyle errors

* Add tests

* Refactor settings

* Move web app to to the root of the project

* Add bootstrap 4

* Add doc blocks for web app

* Add coverage

* Fix typo in flask

* Remove not needed newlines

* Add screenshot

* Update django app naming

* Add django example to the docs

* Update changelog

* Update Aiohttp example

* Add sanic example to the docs

* Make a little fix in django example docs page

* Add flask example to the docs

* Add aiohttp example to the docs

* Update installation docs page

* Fix .delegate() deprecation

* Refactor movie lister to use wiring

* Make micro cosmetic changes to flask, aiohttp & sanic examples

* Refactor single container example to use wiring

* Refactor multiple container example to use wiring

* Add return type to main() in application examples

* Refactor decoupled packages example to use wiring

* Refactor code layout for DI demo example

* Update wiring feature message

* Add more links to the examples

* Change code layout in miniapps

* Update sanic example

* Update miniapp READMEs

* Update wiring docs

* Refactor part of cli tutorial

* Refactor CLI app tutorial

* Update test coverage results in movie lister example and tutorial

* Make some minor updates to aiohttp and cli tutorials

* Refactor flask tutorial

* Make cosmetic fix in flask example

* Refactor Flask tutorial: Connect to the GitHub

* Refactor Flask tutorial: Search service

* Refactor Flask tutorial: Inject search service into view

* Refactor Flask tutorial: Make some refactoring

* Finish flask tutorial refactoring

* Update tutorials

* Refactor  asyncio monitoring daemon example application

* Fix tutorial links

* Rename asyncio miniapp

* Rename tutorial image dirs

* Rename api docs tol-level page

* Refactor initial sections of asyncio daemon tutorial

* Refactor asyncio tutorial till Example.com monitor section

* Refactor asyncio tutorial example.com monitor section

* Refactor asyncio tutorial httpbin.org monitor tutorial

* Refactor tests section of asyncio daemon tutorial

* Update conclusion of asyncio daemon tutorial

* Rename tutorial images

* Make cosmetic update to flask tutorial

* Refactor aiohttp tutorial: Minimal application section

* Refactor aiohttp tutorial: Giphy API client secion

* Refactor aiohttp tutorial secion: Make the search work

* Refactor aiohttp tutorial tests section

* Refactor aiohttp tutorial conclusion

* Upgrade  Cython to 0.29.21

* Update changelog

* Update demo example

* Update wording on index pages

* Update changelog

* Update code layout for main demo
2020-10-09 15:16:27 -04:00
Roman Mogylatov
1f136e427d Bump version to 3.44.0 2020-09-13 20:51:10 -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
6febd03646 Bump version to 3.43.1 2020-09-09 23:48:08 -04:00
Roman Mogylatov
07f050d2ad Bump version to 3.43.0 2020-09-09 23:36:13 -04:00
Roman Mogylatov
ffc477d1ee Update API docs 2020-09-09 22:23:28 -04:00
Roman Mogylatov
a305660a08 Bump version to 3.42.0 2020-09-09 18:02:37 -04:00
Roman Mogylatov
ba574660d8 Bump version to 3.41.0 2020-09-07 22:07:09 -04:00
Roman Mogylatov
098ecb4eec Fix declarative container mypy stub 2020-09-07 11:53:03 -04:00
Roman Mogylatov
6d2a0382a7 Bump version to 3.40.0 2020-09-06 21:54:58 -04:00
Roman Mogylatov
29f209d382
Update bundles example (#292)
* Fix dependency provider stub issue with required init arg

* Refactor bundles example app

* Rename bundles package

* Rename bundles example container

* Rename bundles mini app to decoupled packages

* Move decoupled packages example to main examples

* Fix a typo

* Add meta
2020-09-06 21:51:38 -04:00
Roman Mogylatov
5bb9d221a5 Bump version to 3.39.0 2020-09-04 23:22:58 -04:00
Roman Mogylatov
72b2d0570f Bump version to 3.38.1 2020-09-03 23:25:32 -04:00
Roman Mogylatov
d6dbef0a75 Bump version to 3.38.0 2020-09-03 23:22:11 -04:00
Roman Mogylatov
5f7d978012 Bump version to 3.37.0 2020-09-03 18:05:45 -04:00
Roman Mogylatov
d6e4e8fb08 Add container usage to provided instance examples 2020-09-03 17:48:45 -04:00
Roman Mogylatov
063301a0b3 Bump version to 3.36.0 2020-09-02 21:28:09 -04:00
Roman Mogylatov
dd2ded7321 Update documentation and example on creating a custom provider 2020-09-02 21:09:08 -04:00
Roman Mogylatov
806bd31735 Bump version to 3.35.1 2020-09-01 21:58:13 -04:00
Roman Mogylatov
0985635ea6 Bump version to 3.35.0 2020-09-01 21:40:14 -04:00
Roman Mogylatov
c4b33749d2
Providers docs update (#289)
* Update callable provider docs

* Update coroutine provider docs

* Edit object docs

* Edit list provider docs

* Edit configuration provider docs

* Edit selector provider docs

* Fix mypy stub of the ``DeclarativeContainer`` to specify the ``__init__`` interface

* Edit Dependency provider docs
2020-09-01 21:39:23 -04:00
Roman Mogylatov
0d9aaaac0b Bump version to 3.34.0 2020-08-31 21:29:05 -04:00
Roman Mogylatov
3c27cd6ab2 Bump version to 3.33.0 2020-08-26 22:25:22 -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
Roman Mogylatov
15acccf48f Bump version to 3.32.3 2020-08-26 16:35:31 -04:00
Roman Mogylatov
cc7ade89d7 Bump version to 3.32.2 2020-08-26 16:24:59 -04:00
Roman Mogylatov
3f94a900a4 Bump version to 3.32.1 2020-08-25 10:27:24 -04:00
Roman Mogylatov
fcbab97db2 Bump version to 3.32.0 2020-08-24 13:38:08 -04:00
Roman Mogylatov
f5b97ca92e
Configuration option typed injections (#284)
* Add implementation and tests

* Add docs page and examples

* Revert the api_client miniapp accidental changes
2020-08-24 13:34:47 -04:00
Roman Mogylatov
cc8536b5e4 Bump version to 3.31.0 2020-08-20 21:59:09 -04:00
Roman Mogylatov
cf862fe8b5
Provided attributes (#282)
* Add sketch

* Cythonize MethodCaller

* Cythonize ItemGetter, AttributeGetter & ProvidedInstance providers

* Add docblock for .provided attribute

* Refactor repr methods

* Add .provided attribute to the Dependency provider

* Add tests for the .provided attribute to the majority of the providers

* Add docblock for the ProvidedInstance provider

* Add docblocks for the rest of the providers

* Add example of the provided instance usage

* Add tests for provided instance* providers

* Add complex provided instance example

* Update example provided_instance.py

* Add docs
2020-08-20 21:52:12 -04:00
Roman Mogylatov
e15a6dbb1d Bump version to 3.30.4 2020-08-16 01:16:25 -04:00
Roman Mogylatov
01a18bc2ff Bump version to 3.30.3 2020-08-16 01:13:32 -04:00
Roman Mogylatov
ac6412bd41 Bump version to 3.30.2 2020-08-13 22:57:34 -04:00
Roman Mogylatov
f67dab1f03 Bump version to 3.30.1 2020-08-13 21:53:13 -04:00
Roman Mogylatov
2f42de9fa1 Bump version to 3.30.0 2020-08-12 17:06:40 -04:00
Roman Mogylatov
3c69b4683f Bump version to 3.29.0 2020-08-10 22:32:29 -04:00
Roman Mogylatov
ed2a795581 Bump version to 3.28.1 2020-08-10 15:50:51 -04:00
Roman Mogylatov
d3f3b58389 Bump version to 3.28.0 2020-08-08 14:49:08 -04:00
Roman Mogylatov
3a61457be7
Asyncio daemon tutorial (#278)
* Fix a typo in the docblock of the Configuration provider

* Update the changelog

* Add tutorial sections

* Switch to use https for httpbin.org requests

* Add what we are going to build section

* Fix ``Makefile`` to run ``aiohttp`` integration tests on Python 3.5+

* Add prerequisities and prepare the env sections

* Add logging, config and the dispacher sections

* Change logging

* Fix multiple typos in the ``flask`` and ``aiohttp`` tutorials

* Add the initial and dirty version

* Fix multiple typos in the ``flask`` and ``aiohttp`` tutorials

* Fix the 3.27.0 changelog

* Finish all the parts before the dispatcher

* Finish dispatcher section

* Update http monitor logging format

* Finish the tutorial

* Fix docblock in the dispatcher module

* Update changelog

* Add meta keywords and description
2020-08-08 14:48:05 -04:00
Roman Mogylatov
5bf5a7651b Bump version to 3.27.0 2020-08-06 16:42:49 -04:00
Roman Mogylatov
4a8133204c
Factory deep init injections (#277)
* Add factory deep context providing

* Add example

* Add test
2020-08-06 16:33:06 -04:00
Roman Mogylatov
1f302ec74c Bump version to 3.26.0 2020-08-03 18:08:53 -04:00
Roman Mogylatov
ea1e79885c
274 Configuration provider redesign (#275)
* Get 1st stable version

* Remove prototype module

* Try fix copying

* Add config itemselector example

* Add doc blocks
2020-08-03 18:01:20 -04:00
Roman Mogylatov
6fccb6eec1 Bump version to 3.25.1 2020-07-30 13:53:37 -04:00
Roman Mogylatov
978ebda9eb Bump version to 3.25.0 2020-07-29 22:20:34 -04:00
Roman Mogylatov
4ca385d73b Bump version to 3.24.1 2020-07-29 12:18:09 -04:00
Roman Mogylatov
c190e049b5 Bump version to 3.24.0 2020-07-28 19:26:41 -04:00
Roman Mogylatov
e0d81c2d28
Aiohttp integration (#270)
* Add aiohttp extension module

* Add giphynav-aiohttp app

* Add missing docstrings

* Remove print() call

* Remove not needed import from flask extension tests

* Improve coroutine provider tests

* Add aiohttp extension tests

* Update tox.ini

* Add aiohttp extras

* Try fix Python 3.4 tests

* Try fix 3.6 tests

* Stop running coroutine tests for Python 3.4

* Rename tests

* Remove type hints

* Fix pypy and change python version for coverage job to 3.8

* Fix coveralls job

* Try fix Python 3.4, 3.5 tests

* Make coverage job to run 3.5+ tests

* Add tests

* Add readme

* Update the readmes

* Add API docs

* Add API docs page

* Update changelog
2020-07-28 19:19:05 -04:00
Roman Mogylatov
8f5ea52303 Bump version to 3.23.2 2020-07-23 20:49:08 -04:00
Roman Mogylatov
00d91ae829 Bump version to 3.23.1 2020-07-22 12:17:37 -04:00
Roman Mogylatov
1f115111b2
Dependency provider issue with abc (#267)
* Fix the issue

* Add the test

* Update tests

* Update changelog

* Update tests
2020-07-22 12:14:26 -04:00
Roman Mogylatov
93adbe5207 Bump version to 3.23.0 2020-07-20 17:02:32 -04:00
Roman Mogylatov
78b7be218b Bump version to 3.22.0 2020-07-18 00:45:06 -04:00
Roman Mogylatov
8b2486c5e5 Bump version to 3.21.2 2020-07-13 23:29:32 -04:00
Roman Mogylatov
5ada7f24dd Bump version to 3.21.1 2020-07-13 23:09:42 -04:00
Roman Mogylatov
73cfc873ce Bump version to 3.21.0 2020-07-13 22:50:02 -04:00
Roman Mogylatov
72147b664e Re-design Flask integration 2020-07-13 22:45:15 -04:00
Roman Mogylatov
4f753c8fd3 Bump version to 3.20.1 2020-07-11 12:42:55 -04:00
Roman Mogylatov
d6176dc754 Bump version to 3.20.0 2020-07-11 12:16:08 -04:00
Roman Mogylatov
fa469618dd
Readme update (#263)
* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Add files via upload

* Update README.rst

* Rename Blank Diagram (1).svg to di-map.svg

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Add files via upload

* Rename Blank Diagram (2).svg to di-map2.svg

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Add files via upload

* Add files via upload

* Rename README.svg to di-map3.svg

* Update README.rst

* Add files via upload

* Rename README - Page 3.svg to di-map4.svg

* Update README.rst

* Add files via upload

* Rename README - Copy of Page 3.svg to di-map5.svg

* Update README.rst

* Delete di-map.svg

* Delete di-map2.svg

* Delete di-map3.svg

* Delete di-map4.svg

* Update README.rst

* Update README.rst

* Add Github Navigator - Flask application

* Do more refactoring for ghnav-flask

* More refactoring

* Update README

* Add tests

* Update readme

* Add Flask extension

* Add Factory.provides attribute

* Add Flask extension module

* User flask extension in githubnavigator example

* Add README for ghnav-flask

* Update ghnav-flask README

* Update ghnav-flask README

* Update README with ghnav container example

* Move ghnav-flask to miniapps/ folder

* Fix auth token reading from env for ghnav-flask

* Update readme

* Fix ghnav-flask linter errors

* Add downloads and wheel badge

* Add tests for flask extension

* Fix flask tests

* Add requirements-ext.txt installation to tox.ini

* Add API docs for ext.flask module

* Update setup.py

* Add Flask to the list of keywords

* Update badges on docs README

* Update docs README title

* Fix ext.flask tests

* Fix syntax of ext.flask for Python 2.7, 3.4, 3.5

* Fix syntax of ext.flask for Python 2.7, 3.4, 3.5

* Fix imports in ext.flask for Python 2.7, 3.4, 3.5

* Update ghfnav-flask README

* Update ghfnav-flask README

* Remove setting of empty github token

* Add flask extras

* Update requirements

* Update requirements

* Add flask extra to python 3.4 tox.ini

* Update changelog

* Update changelog
2020-07-11 12:15:00 -04:00
Roman Mogylatov
a8135c0628 Bump version to 3.19.2 2020-07-02 22:08:12 -04:00
Roman Mogylatov
cc90f66dc8 Bump version to 3.19.1 2020-07-01 23:17:29 -04:00
Roman Mogylatov
1a5e7baf7b Bump version to 3.19.0 2020-06-29 16:34:05 -04:00
Roman Mogylatov
2513d1f600
Selector provider (#258)
* Add Selector provider

* Add Selector provider example

* Add tests for selector provider

* Update changelog

* Add pydocstyle ignore D101 for examples

* Fix repr() test

* Update changelog

* Add D203,D213 to examples pydocstyle ignore

* Add selector provider docs
2020-06-29 16:32:12 -04:00
Roman Mogylatov
7491fc05a2 Fix ini files parsing 2020-06-25 23:37:01 -04:00
Roman Mogylatov
1cd25e701f Add interpolation of environment variables for Configuration provider 2020-06-25 23:16:19 -04:00
Roman Mogylatov
525ddbc24c Bump version to 3.18.0 2020-06-25 18:06:37 -04:00
Roman Mogylatov
62e1995a7d Add configuration provider docs 2020-06-25 17:12:16 -04:00
Roman Mogylatov
507a832bb8 Add Configuration.from_env() method + refactoring 2020-06-25 12:50:42 -04:00
Roman Mogylatov
3217feb73b Update providers.pyx code style 2020-06-24 21:27:40 -04:00
Roman Mogylatov
65db4f2b1d Fix code style issue 2020-06-24 21:23:05 -04:00
Roman Mogylatov
ad2d8155d4 Remove yaml stub in providers module 2020-06-24 21:13:37 -04:00
Roman Mogylatov
e22edcdadd Restore configuration methods 2020-06-24 21:04:30 -04:00
Roman Mogylatov
1a23b8b6f5 Try type(dict) fix 2020-06-24 17:38:52 -04:00
Roman Mogylatov
50d8363650 Pin virtualenv to 20.0.23 2020-06-24 17:26:58 -04:00
Roman Mogylatov
52c98bbe49 Comment yaml-related code 2020-06-24 17:16:46 -04:00
Roman Mogylatov
597f5d772f Add default value for name argument of Configuration provider 2020-06-24 16:40:53 -04:00
Roman Mogylatov
a76744805a Add Configuration.from_yaml method 2020-06-24 16:29:44 -04:00
Roman Mogylatov
2c43a1c426 Remove undocumented positional parameter of DependenciesContainer provider 2020-06-24 14:39:07 -04:00
Roman Mogylatov
feab6b6814 Revert "Add overriding logic for Container provider"
This reverts commit b727be3f9a.
2020-06-24 13:24:57 -04:00
Roman Mogylatov
b727be3f9a Add overriding logic for Container provider 2020-06-24 12:41:18 -04:00
Roman Mogylatov
f95dadfc23 Add Configuration.from_dict() method 2020-06-23 18:09:20 -04:00
Roman Mogylatov
a985952d0c Fix Configuration.from_ini() to support Python 2 2020-06-23 16:53:22 -04:00
Roman Mogylatov
87bb5ff97d Add Configuration.from_ini() method 2020-06-23 16:46:24 -04:00
Roman Mogylatov
1e13727a94 Bump version to 3.17.1 2020-06-23 12:48:01 -04:00
Roman Mogylatov
2fd216bb5a Hotfix dynamic container deep-copying 2020-06-23 12:47:48 -04:00
Roman Mogylatov
69e2230b80 Bump version to 3.17.0 2020-06-23 12:14:06 -04:00