From 96f402dcdd64fcbc5445cfae1f07ae8805b083bb Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sat, 30 Apr 2022 16:33:30 +0200 Subject: [PATCH 001/140] Updated packages --- LICENSE | 2 +- scripts/publish.sh | 2 +- scripts/upload.sh | 20 +++++++++---------- src/cpl_cli/__init__.py | 10 +++++----- src/cpl_cli/_templates/__init__.py | 10 +++++----- src/cpl_cli/_templates/build/__init__.py | 10 +++++----- src/cpl_cli/_templates/generate/__init__.py | 10 +++++----- src/cpl_cli/_templates/new/__init__.py | 10 +++++----- .../_templates/new/console/__init__.py | 10 +++++----- .../_templates/new/console/source/__init__.py | 10 +++++----- .../new/console/source/name/__init__.py | 10 +++++----- .../new/console/source/tests/__init__.py | 10 +++++----- .../_templates/new/library/__init__.py | 10 +++++----- .../_templates/new/library/source/__init__.py | 10 +++++----- .../new/library/source/name/__init__.py | 10 +++++----- .../new/library/source/tests/__init__.py | 10 +++++----- src/cpl_cli/_templates/publish/__init__.py | 10 +++++----- src/cpl_cli/command/__init__.py | 10 +++++----- src/cpl_cli/configuration/__init__.py | 10 +++++----- src/cpl_cli/cpl_cli.json | 12 +++++------ src/cpl_cli/live_server/__init__.py | 10 +++++----- src/cpl_cli/publish/__init__.py | 10 +++++----- src/cpl_cli/source_creator/__init__.py | 10 +++++----- src/cpl_core/__init__.py | 10 +++++----- src/cpl_core/application/__init__.py | 10 +++++----- src/cpl_core/configuration/__init__.py | 10 +++++----- src/cpl_core/console/__init__.py | 10 +++++----- src/cpl_core/cpl_core.json | 8 ++++---- src/cpl_core/database/__init__.py | 10 +++++----- src/cpl_core/database/connection/__init__.py | 10 +++++----- src/cpl_core/database/context/__init__.py | 10 +++++----- src/cpl_core/dependency_injection/__init__.py | 10 +++++----- src/cpl_core/environment/__init__.py | 10 +++++----- src/cpl_core/logging/__init__.py | 10 +++++----- src/cpl_core/mailing/__init__.py | 10 +++++----- src/cpl_core/time/__init__.py | 10 +++++----- src/cpl_core/utils/__init__.py | 10 +++++----- src/cpl_query/__init__.py | 10 +++++----- src/cpl_query/_query/__init__.py | 10 +++++----- src/cpl_query/cpl_query.json | 10 +++++----- src/cpl_query/extension/__init__.py | 10 +++++----- 41 files changed, 202 insertions(+), 202 deletions(-) diff --git a/LICENSE b/LICENSE index 557a6647..c13cc5ee 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -MIT License Copyright (c) 2020 - 2021 sh-edraft.de +MIT License Copyright (c) 2020 - 2022 sh-edraft.de Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/scripts/publish.sh b/scripts/publish.sh index eabbcb9c..d46291b5 100755 --- a/scripts/publish.sh +++ b/scripts/publish.sh @@ -1,6 +1,6 @@ #!/bin/bash # activate venv -source /home/sven/Nextcloud_Sven/Schreibtisch/git_sh-edraft_de/sh_cpl/cpl-env/bin/activate +source /home/sven/Nextcloud_Sven/Schreibtisch/git_sh-edraft_de/sh_cpl/venv/bin/activate # CPL cd /home/sven/Nextcloud_Sven/Schreibtisch/git_sh-edraft_de/sh_cpl/src/cpl_core diff --git a/scripts/upload.sh b/scripts/upload.sh index 8b0d0d73..19e38a46 100644 --- a/scripts/upload.sh +++ b/scripts/upload.sh @@ -1,16 +1,16 @@ #!/bin/bash if [ $1 == "-prod" ]; then - twine upload -r pip.sh-edraft.de dist/sh_cpl-cli/publish/setup/* - twine upload -r pip.sh-edraft.de dist/sh_cpl-core/publish/setup/* - twine upload -r pip.sh-edraft.de dist/sh_cpl-query/publish/setup/* -elif [ $1 == "-prod" ]; then - twine upload -r pip-exp.sh-edraft.de dist/sh_cpl-cli/publish/setup/* - twine upload -r pip-exp.sh-edraft.de dist/sh_cpl-core/publish/setup/* - twine upload -r pip-.sh-edraft.de dist/sh_cpl-query/publish/setup/* + twine upload -r pip.sh-edraft.de dist/cpl-cli/publish/setup/* + twine upload -r pip.sh-edraft.de dist/cpl-core/publish/setup/* + twine upload -r pip.sh-edraft.de dist/cpl-query/publish/setup/* +elif [ $1 == "-exp" ]; then + twine upload -r pip-exp.sh-edraft.de dist/cpl-cli/publish/setup/* + twine upload -r pip-exp.sh-edraft.de dist/cpl-core/publish/setup/* + twine upload -r pip-.sh-edraft.de dist/cpl-query/publish/setup/* else - twine upload -r pip-dev.sh-edraft.de dist/sh_cpl-cli/publish/setup/* - twine upload -r pip-dev.sh-edraft.de dist/sh_cpl-core/publish/setup/* - twine upload -r pip-dev.sh-edraft.de dist/sh_cpl-query/publish/setup/* + twine upload -r pip-dev.sh-edraft.de dist/cpl-cli/publish/setup/* + twine upload -r pip-dev.sh-edraft.de dist/cpl-core/publish/setup/* + twine upload -r pip-dev.sh-edraft.de dist/cpl-query/publish/setup/* fi diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index e072da59..283a11c1 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,8 +14,8 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple @@ -29,4 +29,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index a65016c8..8b1fd416 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 2278d1bf..6e99f636 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 316ac362..85c86198 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 61104b7c..89efbf46 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 81d3f534..8f8455f7 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index e8ff1b99..3a71ce79 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 78bdbb83..14611e2c 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 7fa9ac7a..38d68d91 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 1e9a1690..c0ee86ea 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index b38b2238..8611f624 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 9ef677f6..9b6f5be1 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 7e6c0506..cd64ce74 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index fbf939fd..c1dc353c 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 79668f0e..e993d293 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,8 +14,8 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index 9401ccaa..b170c452 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,8 +14,8 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 065cdece..b18c7a42 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -1,22 +1,22 @@ { "ProjectSettings": { - "Name": "sh_cpl-cli", + "Name": "cpl-cli", "Version": { - "Major": "2021", - "Minor": "11", - "Micro": "0.post5" + "Major": "2022", + "Minor": "6", + "Micro": "1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", "Description": "sh-edraft Common Python library CLI", "LongDescription": "sh-edraft Common Python library Command Line Interface", "URL": "https://www.sh-edraft.de", - "CopyrightDate": "2020 - 2021", + "CopyrightDate": "2020 - 2022", "CopyrightName": "sh-edraft.de", "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "sh_cpl-core>=2021.11.0.post5" + "cpl-core>=2022.6.1" ], "PythonVersion": ">=3.8", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 31fbe7af..199a7712 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index 78f4e7a8..0b194ade 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,8 +14,8 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 7ea2d2aa..1f86e0c5 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-cli sh-edraft Common Python library CLI +cpl-cli sh-edraft Common Python library CLI ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Command Line Interface -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library Command Line Interface __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index 31dd9180..5ed879b4 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-core sh-edraft Common Python library +cpl-core sh-edraft Common Python library ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2021.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2021', minor='6', micro='1') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index c63aa58e..6ddd8997 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-core sh-edraft Common Python library +cpl-core sh-edraft Common Python library ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,8 +14,8 @@ sh-edraft Common Python library __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2021.6.1' from collections import namedtuple @@ -26,4 +26,4 @@ from .application_builder_abc import ApplicationBuilderABC from .startup_abc import StartupABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2021', minor='6', micro='1') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 1a134d76..51378681 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-core sh-edraft Common Python library +cpl-core sh-edraft Common Python library ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,8 +14,8 @@ sh-edraft Common Python library __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2021.6.1' from collections import namedtuple @@ -27,4 +27,4 @@ from .configuration_variable_name_enum import ConfigurationVariableNameEnum from .console_argument import ConsoleArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2021', minor='6', micro='1') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index 7af89e69..f5345c19 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-core sh-edraft Common Python library +cpl-core sh-edraft Common Python library ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,8 +14,8 @@ sh-edraft Common Python library __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2021.6.1' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2021', minor='6', micro='1') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index b64852d1..e69d0fb7 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -1,17 +1,17 @@ { "ProjectSettings": { - "Name": "sh_cpl-core", + "Name": "cpl-core", "Version": { "Major": "2021", - "Minor": "11", - "Micro": "0.post5" + "Minor": "6", + "Micro": "1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", "Description": "sh-edraft Common Python library", "LongDescription": "sh-edraft Common Python library", "URL": "https://www.sh-edraft.de", - "CopyrightDate": "2020 - 2021", + "CopyrightDate": "2020 - 2022", "CopyrightName": "sh-edraft.de", "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index 87079739..8820084e 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-core sh-edraft Common Python library +cpl-core sh-edraft Common Python library ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,8 +14,8 @@ sh-edraft Common Python library __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2021.6.1' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2021', minor='6', micro='1') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 58d6389f..da16764b 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-core sh-edraft Common Python library +cpl-core sh-edraft Common Python library ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,8 +14,8 @@ sh-edraft Common Python library __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2021.6.1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2021', minor='6', micro='1') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index baa6509b..ea710373 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-core sh-edraft Common Python library +cpl-core sh-edraft Common Python library ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,8 +14,8 @@ sh-edraft Common Python library __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2021.6.1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2021', minor='6', micro='1') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 918cd14e..5f9548ab 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-core sh-edraft Common Python library +cpl-core sh-edraft Common Python library ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,8 +14,8 @@ sh-edraft Common Python library __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2021.6.1' from collections import namedtuple @@ -28,4 +28,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2021', minor='6', micro='1') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 7a055818..696fd277 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-core sh-edraft Common Python library +cpl-core sh-edraft Common Python library ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,8 +14,8 @@ sh-edraft Common Python library __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2021.6.1' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2021', minor='6', micro='1') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 7f4a2ef6..bb20121f 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-core sh-edraft Common Python library +cpl-core sh-edraft Common Python library ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,8 +14,8 @@ sh-edraft Common Python library __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2021.6.1' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2021', minor='6', micro='1') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 9b828add..478f7a66 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-core sh-edraft Common Python library +cpl-core sh-edraft Common Python library ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,8 +14,8 @@ sh-edraft Common Python library __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2021.6.1' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2021', minor='6', micro='1') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index fc159217..bb3e9a2c 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-core sh-edraft Common Python library +cpl-core sh-edraft Common Python library ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,8 +14,8 @@ sh-edraft Common Python library __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2021.6.1' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2021', minor='6', micro='1') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index bae4be49..7426a839 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-core sh-edraft Common Python library +cpl-core sh-edraft Common Python library ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,8 +14,8 @@ sh-edraft Common Python library __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post5' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2021.6.1' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post5') +version_info = VersionInfo(major='2021', minor='6', micro='1') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index f35af1d7..d8ab437d 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-query sh-edraft Common Python library Query +cpl-query sh-edraft Common Python library Query ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Python integrated Queries -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library Python integrated Queries __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post3' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2021.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post3') +version_info = VersionInfo(major='2021', minor='6', micro='1') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index 341c50f0..061089b6 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-query sh-edraft Common Python library Query +cpl-query sh-edraft Common Python library Query ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Python integrated Queries -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,12 +14,12 @@ sh-edraft Common Python library Python integrated Queries __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post3' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2021.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post3') +version_info = VersionInfo(major='2021', minor='6', micro='1') diff --git a/src/cpl_query/cpl_query.json b/src/cpl_query/cpl_query.json index a8aa8239..22976428 100644 --- a/src/cpl_query/cpl_query.json +++ b/src/cpl_query/cpl_query.json @@ -1,22 +1,22 @@ { "ProjectSettings": { - "Name": "sh_cpl-query", + "Name": "cpl-query", "Version": { "Major": "2021", - "Minor": "11", - "Micro": "0.post3" + "Minor": "6", + "Micro": "1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", "Description": "sh-edraft Common Python library Query", "LongDescription": "sh-edraft Common Python library Python integrated Queries", "URL": "https://www.sh-edraft.de", - "CopyrightDate": "2020 - 2021", + "CopyrightDate": "2020 - 2022", "CopyrightName": "sh-edraft.de", "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "sh_cpl-core>=2021.11.0.post1" + "cpl-core>=2022.6.1" ], "PythonVersion": ">=3.8", "PythonPath": {}, diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index ea93d326..9211224a 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """ -sh_cpl-query sh-edraft Common Python library Query +cpl-query sh-edraft Common Python library Query ~~~~~~~~~~~~~~~~~~~ sh-edraft Common Python library Python integrated Queries -:copyright: (c) 2020 - 2021 sh-edraft.de +:copyright: (c) 2020 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,8 +14,8 @@ sh-edraft Common Python library Python integrated Queries __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.11.0.post3' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2021.6.1' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='11', micro='0.post3') +version_info = VersionInfo(major='2021', minor='6', micro='1') -- 2.45.1 From 588f93f7b1efa70fa7af0e0997bcf5f052b0fc70 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sat, 30 Apr 2022 16:41:52 +0200 Subject: [PATCH 002/140] Updated packages --- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/cpl_core.json | 8 ++++---- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- src/cpl_query/__init__.py | 4 ++-- src/cpl_query/_query/__init__.py | 4 ++-- src/cpl_query/cpl_query.json | 2 +- src/cpl_query/extension/__init__.py | 4 ++-- 18 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index 5ed879b4..744a4252 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2021.6.1' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 6ddd8997..cab819c0 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2021.6.1' +__version__ = '2022.6.1' from collections import namedtuple @@ -26,4 +26,4 @@ from .application_builder_abc import ApplicationBuilderABC from .startup_abc import StartupABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 51378681..0af264af 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2021.6.1' +__version__ = '2022.6.1' from collections import namedtuple @@ -27,4 +27,4 @@ from .configuration_variable_name_enum import ConfigurationVariableNameEnum from .console_argument import ConsoleArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index f5345c19..f5ca0e3c 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2021.6.1' +__version__ = '2022.6.1' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index e69d0fb7..c12118b1 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -2,7 +2,7 @@ "ProjectSettings": { "Name": "cpl-core", "Version": { - "Major": "2021", + "Major": "2022", "Minor": "6", "Micro": "1" }, @@ -16,16 +16,16 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "art==5.4", + "art==5.6", "colorama==0.4.4", "mysql-connector==2.2.9", "psutil==5.9.0", "packaging==21.3", "pynput==1.7.6", - "setuptools==60.5.0", + "setuptools==62.1.0", "tabulate==0.8.9", "termcolor==1.1.0", - "watchdog==2.1.6", + "watchdog==2.1.7", "wheel==0.37.1" ], "PythonVersion": ">=3.8", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index 8820084e..e09cd083 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2021.6.1' +__version__ = '2022.6.1' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index da16764b..7bef8077 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2021.6.1' +__version__ = '2022.6.1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index ea710373..eab72301 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2021.6.1' +__version__ = '2022.6.1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 5f9548ab..3a9c61f0 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2021.6.1' +__version__ = '2022.6.1' from collections import namedtuple @@ -28,4 +28,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 696fd277..737a7427 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2021.6.1' +__version__ = '2022.6.1' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index bb20121f..a83095ee 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2021.6.1' +__version__ = '2022.6.1' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 478f7a66..63847174 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2021.6.1' +__version__ = '2022.6.1' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index bb3e9a2c..793097bf 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2021.6.1' +__version__ = '2022.6.1' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 7426a839..9ca3cc47 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2021.6.1' +__version__ = '2022.6.1' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index d8ab437d..a8a10c8c 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2021.6.1' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index 061089b6..04bc20d1 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2021.6.1' +__version__ = '2022.6.1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_query/cpl_query.json b/src/cpl_query/cpl_query.json index 22976428..321374f2 100644 --- a/src/cpl_query/cpl_query.json +++ b/src/cpl_query/cpl_query.json @@ -2,7 +2,7 @@ "ProjectSettings": { "Name": "cpl-query", "Version": { - "Major": "2021", + "Major": "2022", "Minor": "6", "Micro": "1" }, diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index 9211224a..ce0ee467 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2021.6.1' +__version__ = '2022.6.1' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='1') -- 2.45.1 From fd68d25a1d8b0128977c9f730e2ba9d1798d99f3 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sat, 30 Apr 2022 17:15:26 +0200 Subject: [PATCH 003/140] Updated to python3.10 --- .gitignore | 1 + src/cpl_cli/command/generate_service.py | 3 +-- src/cpl_cli/command_model.py | 6 ++---- src/cpl_cli/cpl_cli.json | 2 +- src/cpl_core/configuration/configuration.py | 4 ++-- src/cpl_core/configuration/configuration_abc.py | 6 +++--- src/cpl_core/console/console.py | 2 +- src/cpl_core/console/console_call.py | 2 +- src/cpl_core/cpl_core.json | 2 +- src/cpl_core/dependency_injection/service_collection_abc.py | 2 +- src/cpl_core/dependency_injection/service_provider.py | 3 +-- src/cpl_core/dependency_injection/service_provider_abc.py | 3 +-- src/cpl_query/_query/all.py | 2 +- src/cpl_query/_query/any.py | 2 +- src/cpl_query/_query/count.py | 2 +- src/cpl_query/_query/distinct.py | 2 +- src/cpl_query/_query/for_each.py | 2 +- src/cpl_query/_query/max_min.py | 2 +- src/cpl_query/_query/order_by.py | 2 +- src/cpl_query/_query/sum.py | 2 +- src/cpl_query/_query/where.py | 2 +- src/cpl_query/cpl_query.json | 2 +- src/cpl_query/extension/ordered_iterable.py | 2 +- src/cpl_query/extension/ordered_iterable_abc.py | 2 +- 24 files changed, 28 insertions(+), 32 deletions(-) diff --git a/.gitignore b/.gitignore index a374536a..1c6827be 100644 --- a/.gitignore +++ b/.gitignore @@ -106,6 +106,7 @@ celerybeat.pid .venv env/ venv/ +venv_*/ ENV/ env.bak/ venv.bak/ diff --git a/src/cpl_cli/command/generate_service.py b/src/cpl_cli/command/generate_service.py index 193ec029..65715d79 100644 --- a/src/cpl_cli/command/generate_service.py +++ b/src/cpl_cli/command/generate_service.py @@ -1,7 +1,6 @@ import os import sys import textwrap -from collections import Callable from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.console.foreground_color_enum import ForegroundColorEnum @@ -108,7 +107,7 @@ class GenerateService(CommandABC): template.write(value) template.close() - def _generate(self, schematic: str, name: str, template: Callable[TemplateFileABC]): + def _generate(self, schematic: str, name: str, template: TemplateFileABC): """ Generates files by given schematic, name and template :param schematic: diff --git a/src/cpl_cli/command_model.py b/src/cpl_cli/command_model.py index 5fabea2a..fd9542d4 100644 --- a/src/cpl_cli/command_model.py +++ b/src/cpl_cli/command_model.py @@ -1,11 +1,9 @@ -from collections import Callable - from cpl_cli.command_abc import CommandABC class CommandModel: - def __init__(self, name: str, aliases: list[str], command: Callable[CommandABC], is_workspace_needed: bool, + def __init__(self, name: str, aliases: list[str], command: CommandABC, is_workspace_needed: bool, is_project_needed: bool, change_cwd: bool): self._name = name self._aliases = aliases @@ -23,7 +21,7 @@ class CommandModel: return self._aliases @property - def command(self) -> Callable[CommandABC]: + def command(self) -> CommandABC: return self._command @property diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index b18c7a42..9694bc91 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -18,7 +18,7 @@ "Dependencies": [ "cpl-core>=2022.6.1" ], - "PythonVersion": ">=3.8", + "PythonVersion": ">=3.10", "PythonPath": {}, "Classifiers": [] }, diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index 6844bf26..e11b5771 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -1,7 +1,7 @@ import json import os import sys -from collections import Callable +from collections.abc import Callable from typing import Union, Type, Optional from cpl_core.configuration.configuration_abc import ConfigurationABC @@ -379,7 +379,7 @@ class Configuration(ConfigurationABC): self._config[key_type] = value def get_configuration(self, search_type: Union[str, Type[ConfigurationModelABC]]) -> \ - Union[str, Callable[ConfigurationModelABC]]: + Union[str, ConfigurationModelABC]: if type(search_type) is str: if search_type == ConfigurationVariableNameEnum.environment.value: return self._application_environment.environment_name diff --git a/src/cpl_core/configuration/configuration_abc.py b/src/cpl_core/configuration/configuration_abc.py index 3d332f65..a2961cda 100644 --- a/src/cpl_core/configuration/configuration_abc.py +++ b/src/cpl_core/configuration/configuration_abc.py @@ -1,5 +1,5 @@ from abc import abstractmethod, ABC -from collections import Callable +from collections.abc import Callable from typing import Type, Union, Optional from cpl_core.configuration.console_argument import ConsoleArgument @@ -94,7 +94,7 @@ class ConfigurationABC(ABC): pass @abstractmethod - def get_configuration(self, search_type: Union[str, Type[ConfigurationModelABC]]) -> Union[str, Callable[ConfigurationModelABC]]: + def get_configuration(self, search_type: Union[str, Type[ConfigurationModelABC]]) -> Union[str, ConfigurationModelABC]: r"""Returns value from configuration by given type Parameter @@ -104,6 +104,6 @@ class ConfigurationABC(ABC): Returns ------- - Object of Union[:class:`str`, Callable[:class:`cpl_core.configuration.configuration_model_abc.ConfigurationModelABC`]] + Object of Union[:class:`str`, :class:`cpl_core.configuration.configuration_model_abc.ConfigurationModelABC`] """ pass diff --git a/src/cpl_core/console/console.py b/src/cpl_core/console/console.py index a0b0463d..f7a06291 100644 --- a/src/cpl_core/console/console.py +++ b/src/cpl_core/console/console.py @@ -1,7 +1,7 @@ import os import sys import time -from collections import Callable +from collections.abc import Callable from typing import Union, Optional from art import text2art diff --git a/src/cpl_core/console/console_call.py b/src/cpl_core/console/console_call.py index 7680a880..950f6c64 100644 --- a/src/cpl_core/console/console_call.py +++ b/src/cpl_core/console/console_call.py @@ -1,4 +1,4 @@ -from collections import Callable +from collections.abc import Callable class ConsoleCall: diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index c12118b1..aaff74a4 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -28,7 +28,7 @@ "watchdog==2.1.7", "wheel==0.37.1" ], - "PythonVersion": ">=3.8", + "PythonVersion": ">=3.10", "PythonPath": {}, "Classifiers": [] }, diff --git a/src/cpl_core/dependency_injection/service_collection_abc.py b/src/cpl_core/dependency_injection/service_collection_abc.py index 7dcc5df5..2f69691a 100644 --- a/src/cpl_core/dependency_injection/service_collection_abc.py +++ b/src/cpl_core/dependency_injection/service_collection_abc.py @@ -1,5 +1,5 @@ from abc import abstractmethod, ABC -from collections import Callable +from collections.abc import Callable from typing import Type from cpl_core.database.database_settings import DatabaseSettings diff --git a/src/cpl_core/dependency_injection/service_provider.py b/src/cpl_core/dependency_injection/service_provider.py index 04a19b57..a1535f98 100644 --- a/src/cpl_core/dependency_injection/service_provider.py +++ b/src/cpl_core/dependency_injection/service_provider.py @@ -1,4 +1,3 @@ -from collections import Callable import copy from inspect import signature, Parameter from typing import Optional @@ -96,7 +95,7 @@ class ServiceProvider(ServiceProviderABC): sb = ScopeBuilder(ServiceProvider(copy.deepcopy(self._service_descriptors), self._configuration, self._database_context)) return sb.build() - def get_service(self, service_type: type) -> Optional[Callable[object]]: + def get_service(self, service_type: type) -> Optional[object]: result = self._find_service(service_type) if result is None: diff --git a/src/cpl_core/dependency_injection/service_provider_abc.py b/src/cpl_core/dependency_injection/service_provider_abc.py index cc06e529..9ed6fd7f 100644 --- a/src/cpl_core/dependency_injection/service_provider_abc.py +++ b/src/cpl_core/dependency_injection/service_provider_abc.py @@ -1,5 +1,4 @@ from abc import abstractmethod, ABC -from collections import Callable from typing import Type, Optional from cpl_core.dependency_injection.scope_abc import ScopeABC @@ -49,7 +48,7 @@ class ServiceProviderABC(ABC): pass @abstractmethod - def get_service(self, instance_type: Type) -> Optional[Callable[object]]: + def get_service(self, instance_type: Type) -> Optional[object]: r"""Returns instance of given type Parameter diff --git a/src/cpl_query/_query/all.py b/src/cpl_query/_query/all.py index 76aa2fb0..de0571eb 100644 --- a/src/cpl_query/_query/all.py +++ b/src/cpl_query/_query/all.py @@ -1,4 +1,4 @@ -from collections import Callable +from collections.abc import Callable from cpl_query._query.where import where_query from cpl_query.exceptions import ExceptionArgument, ArgumentNoneException diff --git a/src/cpl_query/_query/any.py b/src/cpl_query/_query/any.py index ab63c154..63a9bea5 100644 --- a/src/cpl_query/_query/any.py +++ b/src/cpl_query/_query/any.py @@ -1,4 +1,4 @@ -from collections import Callable +from collections.abc import Callable from cpl_query._query.where import where_query from cpl_query.exceptions import ArgumentNoneException, ExceptionArgument diff --git a/src/cpl_query/_query/count.py b/src/cpl_query/_query/count.py index a4a87096..94fab4a3 100644 --- a/src/cpl_query/_query/count.py +++ b/src/cpl_query/_query/count.py @@ -1,4 +1,4 @@ -from collections import Callable +from collections.abc import Callable from cpl_query._query.where import where_query from cpl_query.exceptions import ArgumentNoneException, ExceptionArgument diff --git a/src/cpl_query/_query/distinct.py b/src/cpl_query/_query/distinct.py index 791ef7c7..db28f9fb 100644 --- a/src/cpl_query/_query/distinct.py +++ b/src/cpl_query/_query/distinct.py @@ -1,4 +1,4 @@ -from collections import Callable +from collections.abc import Callable from cpl_query.exceptions import ArgumentNoneException, ExceptionArgument from cpl_query.extension.iterable_abc import IterableABC diff --git a/src/cpl_query/_query/for_each.py b/src/cpl_query/_query/for_each.py index 62411c4d..ca94a57a 100644 --- a/src/cpl_query/_query/for_each.py +++ b/src/cpl_query/_query/for_each.py @@ -1,4 +1,4 @@ -from collections import Callable +from collections.abc import Callable from cpl_query.exceptions import ExceptionArgument, ArgumentNoneException from cpl_query.extension.iterable_abc import IterableABC diff --git a/src/cpl_query/_query/max_min.py b/src/cpl_query/_query/max_min.py index d9c2c6a5..88ab3db2 100644 --- a/src/cpl_query/_query/max_min.py +++ b/src/cpl_query/_query/max_min.py @@ -1,4 +1,4 @@ -from collections import Callable +from collections.abc import Callable from typing import Union from cpl_query._helper import is_number diff --git a/src/cpl_query/_query/order_by.py b/src/cpl_query/_query/order_by.py index 11089ed9..9e418fc0 100644 --- a/src/cpl_query/_query/order_by.py +++ b/src/cpl_query/_query/order_by.py @@ -1,4 +1,4 @@ -from collections import Callable +from collections.abc import Callable from cpl_query.exceptions import ExceptionArgument, ArgumentNoneException from cpl_query.extension.iterable_abc import IterableABC diff --git a/src/cpl_query/_query/sum.py b/src/cpl_query/_query/sum.py index f8829dad..3d1482bc 100644 --- a/src/cpl_query/_query/sum.py +++ b/src/cpl_query/_query/sum.py @@ -1,4 +1,4 @@ -from collections import Callable +from collections.abc import Callable from typing import Union from cpl_query._helper import is_number diff --git a/src/cpl_query/_query/where.py b/src/cpl_query/_query/where.py index 81020f75..2890e90e 100644 --- a/src/cpl_query/_query/where.py +++ b/src/cpl_query/_query/where.py @@ -1,4 +1,4 @@ -from collections import Callable +from collections.abc import Callable from cpl_query.exceptions import ArgumentNoneException, ExceptionArgument from cpl_query.extension.iterable_abc import IterableABC diff --git a/src/cpl_query/cpl_query.json b/src/cpl_query/cpl_query.json index 321374f2..c8f9fc1b 100644 --- a/src/cpl_query/cpl_query.json +++ b/src/cpl_query/cpl_query.json @@ -18,7 +18,7 @@ "Dependencies": [ "cpl-core>=2022.6.1" ], - "PythonVersion": ">=3.8", + "PythonVersion": ">=3.10", "PythonPath": {}, "Classifiers": [] }, diff --git a/src/cpl_query/extension/ordered_iterable.py b/src/cpl_query/extension/ordered_iterable.py index 11443ac0..3c374ead 100644 --- a/src/cpl_query/extension/ordered_iterable.py +++ b/src/cpl_query/extension/ordered_iterable.py @@ -1,4 +1,4 @@ -from collections import Callable +from collections.abc import Callable from cpl_query._query.order_by import then_by_descending_query, then_by_query from cpl_query.extension.iterable import Iterable diff --git a/src/cpl_query/extension/ordered_iterable_abc.py b/src/cpl_query/extension/ordered_iterable_abc.py index 9a6c5bb1..bd10a917 100644 --- a/src/cpl_query/extension/ordered_iterable_abc.py +++ b/src/cpl_query/extension/ordered_iterable_abc.py @@ -1,5 +1,5 @@ from abc import abstractmethod -from collections import Callable +from collections.abc import Callable from cpl_query.extension.iterable_abc import IterableABC -- 2.45.1 From 97e52b39c032b32bdc6f60bf6e3a56c8c1e351d8 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sat, 30 Apr 2022 17:43:34 +0200 Subject: [PATCH 004/140] Added logic to handle StartupExtension classes --- src/cpl_cli/cpl_cli.json | 2 +- src/cpl_core/application/__init__.py | 1 + .../application/application_builder.py | 32 +++++++++++------ src/cpl_core/application/startup_abc.py | 3 +- .../application/startup_extension_abc.py | 34 +++++++++++++++++++ src/cpl_core/cpl_core.json | 2 +- ...son => appsettings.edrafts-pc-ubuntu.json} | 12 ++++--- .../custom/general/src/general/general.json | 4 +-- src/tests/custom/general/src/general/main.py | 4 ++- .../src/general/test_startup_extension.py | 17 ++++++++++ 10 files changed, 89 insertions(+), 22 deletions(-) create mode 100644 src/cpl_core/application/startup_extension_abc.py rename src/tests/custom/general/src/general/{appsettings.edrafts-pc.json => appsettings.edrafts-pc-ubuntu.json} (69%) create mode 100644 src/tests/custom/general/src/general/test_startup_extension.py diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 9694bc91..c543514f 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.1" + "cpl-core>=2022.6.2" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index cab819c0..1ecef6be 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -24,6 +24,7 @@ from .application_abc import ApplicationABC from .application_builder import ApplicationBuilder from .application_builder_abc import ApplicationBuilderABC from .startup_abc import StartupABC +from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') version_info = VersionInfo(major='2022', minor='6', micro='1') diff --git a/src/cpl_core/application/application_builder.py b/src/cpl_core/application/application_builder.py index c434c6ec..379e1216 100644 --- a/src/cpl_core/application/application_builder.py +++ b/src/cpl_core/application/application_builder.py @@ -1,9 +1,10 @@ -from typing import Type, Optional, Callable +from typing import Type, Optional, Callable, Union from cpl_core.application.application_abc import ApplicationABC from cpl_core.application.application_builder_abc import ApplicationBuilderABC from cpl_core.application.application_extension_abc import ApplicationExtensionABC from cpl_core.application.startup_abc import StartupABC +from cpl_core.application.startup_extension_abc import StartupExtensionABC from cpl_core.configuration.configuration import Configuration from cpl_core.dependency_injection.service_collection import ServiceCollection @@ -26,38 +27,47 @@ class ApplicationBuilder(ApplicationBuilderABC): self._environment = self._configuration.environment self._services = ServiceCollection(self._configuration) - self._extensions: list[Callable] = [] + self._app_extensions: list[Callable] = [] + self._startup_extensions: list[Callable] = [] def use_startup(self, startup: Type[StartupABC]): self._startup = startup() - def use_extension(self, extension: Type[ApplicationExtensionABC]): - if extension not in self._extensions: - self._extensions.append(extension) + def use_extension(self, extension: Type[Union[ApplicationExtensionABC, StartupExtensionABC]]): + if issubclass(extension, ApplicationExtensionABC) and extension not in self._app_extensions: + self._app_extensions.append(extension) + elif issubclass(extension, StartupExtensionABC) and extension not in self._startup_extensions: + self._startup_extensions.append(extension) + + def _build_startup(self): + for ex in self._startup_extensions: + extension = ex() + extension.configure_configuration(self._configuration, self._environment) + extension.configure_services(self._services, self._environment) - def build(self) -> ApplicationABC: if self._startup is not None: self._startup.configure_configuration(self._configuration, self._environment) self._startup.configure_services(self._services, self._environment) + def build(self) -> ApplicationABC: + self._build_startup() + config = self._configuration services = self._services.build_service_provider() - for ex in self._extensions: + for ex in self._app_extensions: extension = ex() extension.run(config, services) return self._app(config, services) async def build_async(self) -> ApplicationABC: - if self._startup is not None: - await self._startup.configure_configuration(self._configuration, self._environment) - await self._startup.configure_services(self._services, self._environment) + self._build_startup() config = self._configuration services = self._services.build_service_provider() - for ex in self._extensions: + for ex in self._app_extensions: extension = ex() await extension.run(config, services) diff --git a/src/cpl_core/application/startup_abc.py b/src/cpl_core/application/startup_abc.py index 1d1af6d6..1c25dbf7 100644 --- a/src/cpl_core/application/startup_abc.py +++ b/src/cpl_core/application/startup_abc.py @@ -10,8 +10,7 @@ class StartupABC(ABC): r"""ABC for the startup class""" @abstractmethod - def __init__(self, *args): - pass + def __init__(self): pass @abstractmethod def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC) -> ConfigurationABC: diff --git a/src/cpl_core/application/startup_extension_abc.py b/src/cpl_core/application/startup_extension_abc.py new file mode 100644 index 00000000..5ca19cde --- /dev/null +++ b/src/cpl_core/application/startup_extension_abc.py @@ -0,0 +1,34 @@ +from abc import ABC, abstractmethod + +from cpl_core.configuration.configuration_abc import ConfigurationABC +from cpl_core.dependency_injection.service_collection_abc import ServiceCollectionABC +from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC + + +class StartupExtensionABC(ABC): + r"""ABC for startup extension classes""" + + @abstractmethod + def __init__(self): pass + + @abstractmethod + def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC): + r"""Creates configuration of application + + Parameter + --------- + config: :class:`cpl_core.configuration.configuration_abc.ConfigurationABC` + env: :class:`cpl_core.environment.application_environment_abc` + """ + pass + + @abstractmethod + def configure_services(self, service: ServiceCollectionABC, env: ApplicationEnvironmentABC): + r"""Creates service provider + + Parameter + --------- + services: :class:`cpl_core.dependency_injection.service_collection_abc` + env: :class:`cpl_core.environment.application_environment_abc` + """ + pass diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index aaff74a4..e171d838 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "1" + "Micro": "2" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/tests/custom/general/src/general/appsettings.edrafts-pc.json b/src/tests/custom/general/src/general/appsettings.edrafts-pc-ubuntu.json similarity index 69% rename from src/tests/custom/general/src/general/appsettings.edrafts-pc.json rename to src/tests/custom/general/src/general/appsettings.edrafts-pc-ubuntu.json index afae3437..5d40a040 100644 --- a/src/tests/custom/general/src/general/appsettings.edrafts-pc.json +++ b/src/tests/custom/general/src/general/appsettings.edrafts-pc-ubuntu.json @@ -21,9 +21,13 @@ }, "DatabaseSettings": { - "AuthPlugin": "mysql_native_password", - "ConnectionString": "mysql+mysqlconnector://sh_cpl:$credentials@localhost/sh_cpl", - "Credentials": "MHZhc0Y2bjhKc1VUMWV0Qw==", - "Encoding": "utf8mb4" + "Host": "localhost", + "User": "sh_cpl", + "Password": "MHZhc0Y2bjhKc1VUMWV0Qw==", + "Database": "sh_cpl", + "Charset": "utf8mb4", + "UseUnicode": "true", + "Buffered": "true", + "AuthPlugin": "mysql_native_password" } } \ No newline at end of file diff --git a/src/tests/custom/general/src/general/general.json b/src/tests/custom/general/src/general/general.json index 6bed03dd..448345cd 100644 --- a/src/tests/custom/general/src/general/general.json +++ b/src/tests/custom/general/src/general/general.json @@ -16,9 +16,9 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "sh_cpl==2021.4.0.post2" + "cpl_core==2022.6.1" ], - "PythonVersion": ">=3.8", + "PythonVersion": ">=3.10", "PythonPath": { "linux": "../../../../../../cpl-env/bin/python3.9", "win32": "" diff --git a/src/tests/custom/general/src/general/main.py b/src/tests/custom/general/src/general/main.py index 2835d115..67191b28 100644 --- a/src/tests/custom/general/src/general/main.py +++ b/src/tests/custom/general/src/general/main.py @@ -1,12 +1,14 @@ from application import Application from cpl_core.application import ApplicationBuilder -from general.test_extension import TestExtension +from test_extension import TestExtension from startup import Startup +from test_startup_extension import TestStartupExtension def main(): app_builder = ApplicationBuilder(Application) app_builder.use_startup(Startup) + app_builder.use_extension(TestStartupExtension) app_builder.use_extension(TestExtension) app_builder.build().run() diff --git a/src/tests/custom/general/src/general/test_startup_extension.py b/src/tests/custom/general/src/general/test_startup_extension.py new file mode 100644 index 00000000..87b179ea --- /dev/null +++ b/src/tests/custom/general/src/general/test_startup_extension.py @@ -0,0 +1,17 @@ +from cpl_core.application import StartupExtensionABC +from cpl_core.configuration import ConfigurationABC +from cpl_core.console import Console +from cpl_core.dependency_injection import ServiceCollectionABC +from cpl_core.environment import ApplicationEnvironmentABC + + +class TestStartupExtension(StartupExtensionABC): + + def __init__(self): + StartupExtensionABC.__init__(self) + + def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC): + Console.write_line('config') + + def configure_services(self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC): + Console.write_line('services') -- 2.45.1 From dcd85831836717a30c7226bd3204e774bd8dd928 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sat, 30 Apr 2022 17:44:15 +0200 Subject: [PATCH 005/140] Build packages --- scripts/build.sh | 2 +- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- 14 files changed, 27 insertions(+), 27 deletions(-) diff --git a/scripts/build.sh b/scripts/build.sh index 5599dad4..96d00ded 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,6 +1,6 @@ #!/bin/bash # activate venv -source /home/sven/Nextcloud_Sven/Schreibtisch/git_sh-edraft_de/sh_cpl/cpl-env/bin/activate +source /home/sven/Nextcloud_Sven/Schreibtisch/git_sh-edraft_de/sh_cpl/venv/bin/activate # CPL cd /home/sven/Nextcloud_Sven/Schreibtisch/git_sh-edraft_de/sh_cpl/src/cpl_core diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index 744a4252..e741b291 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='2') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 1ecef6be..155bb71f 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.2' from collections import namedtuple @@ -27,4 +27,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='2') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 0af264af..de358f22 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.2' from collections import namedtuple @@ -27,4 +27,4 @@ from .configuration_variable_name_enum import ConfigurationVariableNameEnum from .console_argument import ConsoleArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='2') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index f5ca0e3c..928c0904 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.2' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='2') diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index e09cd083..55bc3f3c 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.2' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='2') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 7bef8077..accbfaa6 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.2' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='2') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index eab72301..e1684eea 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.2' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='2') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 3a9c61f0..044ec621 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.2' from collections import namedtuple @@ -28,4 +28,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='2') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 737a7427..3c96a3bf 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.2' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='2') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index a83095ee..3e341963 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.2' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='2') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 63847174..0eeefc95 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.2' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='2') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index 793097bf..4dea9c68 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.2' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='2') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 9ca3cc47..5d9e5653 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.2' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='2') -- 2.45.1 From 773b1543718fe94eac97be34d5b4c4a1807f2e29 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 18 May 2022 18:20:25 +0200 Subject: [PATCH 006/140] Improved service collection --- .../dependency_injection/service_collection.py | 8 ++++++-- .../service_collection_abc.py | 18 +++++++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/cpl_core/dependency_injection/service_collection.py b/src/cpl_core/dependency_injection/service_collection.py index 337f172a..1b428a8c 100644 --- a/src/cpl_core/dependency_injection/service_collection.py +++ b/src/cpl_core/dependency_injection/service_collection.py @@ -10,7 +10,6 @@ from cpl_core.dependency_injection.service_lifetime_enum import ServiceLifetimeE from cpl_core.dependency_injection.service_provider import ServiceProvider from cpl_core.logging.logger_service import Logger from cpl_core.logging.logger_abc import LoggerABC -from cpl_core.utils.credential_manager import CredentialManager class ServiceCollection(ServiceCollectionABC): @@ -59,12 +58,15 @@ class ServiceCollection(ServiceCollectionABC): self._add_descriptor(impl, ServiceLifetimeEnum.singleton) + return self + def add_scoped(self, service_type: Type, service: Callable = None): if service is not None: self._add_descriptor(service, ServiceLifetimeEnum.scoped) else: self._add_descriptor(service_type, ServiceLifetimeEnum.scoped) - + + return self def add_transient(self, service_type: type, service: type = None): if service is not None: @@ -72,5 +74,7 @@ class ServiceCollection(ServiceCollectionABC): else: self._add_descriptor(service_type, ServiceLifetimeEnum.transient) + return self + def build_service_provider(self) -> ServiceProviderABC: return ServiceProvider(self._service_descriptors, self._configuration, self._database_context) diff --git a/src/cpl_core/dependency_injection/service_collection_abc.py b/src/cpl_core/dependency_injection/service_collection_abc.py index 2f69691a..13ddca96 100644 --- a/src/cpl_core/dependency_injection/service_collection_abc.py +++ b/src/cpl_core/dependency_injection/service_collection_abc.py @@ -31,7 +31,7 @@ class ServiceCollectionABC(ABC): pass @abstractmethod - def add_transient(self, service_type: Type, service: Callable = None): + def add_transient(self, service_type: Type, service: Callable = None) -> 'ServiceCollectionABC': r"""Adds a service with transient lifetime Parameter @@ -40,11 +40,15 @@ class ServiceCollectionABC(ABC): Type of the service service: :class:`Callable` Object of the service + + Returns + ------ + self: :class:`cpl_core.dependency_injection.service_collection_abc.ServiceCollectionABC """ pass @abstractmethod - def add_scoped(self, service_type: Type, service: Callable = None): + def add_scoped(self, service_type: Type, service: Callable = None) -> 'ServiceCollectionABC': r"""Adds a service with scoped lifetime Parameter @@ -53,11 +57,15 @@ class ServiceCollectionABC(ABC): Type of the service service: :class:`Callable` Object of the service + + Returns + ------ + self: :class:`cpl_core.dependency_injection.service_collection_abc.ServiceCollectionABC """ pass @abstractmethod - def add_singleton(self, service_type: Type, service: Callable = None): + def add_singleton(self, service_type: Type, service: Callable = None) -> 'ServiceCollectionABC': r"""Adds a service with singleton lifetime Parameter @@ -66,6 +74,10 @@ class ServiceCollectionABC(ABC): Type of the service service: :class:`Callable` Object of the service + + Returns + ------ + self: :class:`cpl_core.dependency_injection.service_collection_abc.ServiceCollectionABC """ pass -- 2.45.1 From 50201346e2bd9543f3e2e9dce6c43d496fd14d62 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 18 May 2022 18:21:05 +0200 Subject: [PATCH 007/140] Added functions to define console arguments --- .../application/application_builder.py | 1 + src/cpl_core/configuration/configuration.py | 15 +++++- .../configuration/configuration_abc.py | 42 ++++++++++++++- .../configuration/console_argument.py | 52 ++++++++++++++++++- .../configuration/runnable_argument_abc.py | 10 ++++ .../general/src/general/arguments/__init__.py | 0 .../general/arguments/generate_argument.py | 11 ++++ .../src/general/arguments/install_argument.py | 11 ++++ src/tests/custom/general/src/general/main.py | 2 + .../general/src/general/parameter_startup.py | 31 +++++++++++ 10 files changed, 171 insertions(+), 4 deletions(-) create mode 100644 src/cpl_core/configuration/runnable_argument_abc.py create mode 100644 src/tests/custom/general/src/general/arguments/__init__.py create mode 100644 src/tests/custom/general/src/general/arguments/generate_argument.py create mode 100644 src/tests/custom/general/src/general/arguments/install_argument.py create mode 100644 src/tests/custom/general/src/general/parameter_startup.py diff --git a/src/cpl_core/application/application_builder.py b/src/cpl_core/application/application_builder.py index 379e1216..c879ae69 100644 --- a/src/cpl_core/application/application_builder.py +++ b/src/cpl_core/application/application_builder.py @@ -54,6 +54,7 @@ class ApplicationBuilder(ApplicationBuilderABC): config = self._configuration services = self._services.build_service_provider() + config.resolve_runnable_argument_types(services) for ex in self._app_extensions: extension = ex() diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index e11b5771..573793bb 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -8,8 +8,10 @@ from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC from cpl_core.configuration.configuration_variable_name_enum import ConfigurationVariableNameEnum from cpl_core.configuration.console_argument import ConsoleArgument +from cpl_core.configuration.runnable_argument_abc import RunnableArgumentABC from cpl_core.console.console import Console from cpl_core.console.foreground_color_enum import ForegroundColorEnum +from cpl_core.dependency_injection import ServiceProviderABC from cpl_core.environment.application_environment import ApplicationEnvironment from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC from cpl_core.environment.environment_name_enum import EnvironmentNameEnum @@ -378,8 +380,15 @@ class Configuration(ConfigurationABC): def add_configuration(self, key_type: Union[str, type], value: ConfigurationModelABC): self._config[key_type] = value + def create_console_argument(self, token: str, name: str, aliases: list[str], value_token: str, + is_value_token_optional: bool = None, + runnable: Type[RunnableArgumentABC] = None) -> ConsoleArgument: + argument = ConsoleArgument(token, name, aliases, value_token, is_value_token_optional, runnable) + self.add_console_argument(argument) + return argument + def get_configuration(self, search_type: Union[str, Type[ConfigurationModelABC]]) -> \ - Union[str, ConfigurationModelABC]: + Optional[Union[str, ConfigurationModelABC]]: if type(search_type) is str: if search_type == ConfigurationVariableNameEnum.environment.value: return self._application_environment.environment_name @@ -396,3 +405,7 @@ class Configuration(ConfigurationABC): for config_model in self._config: if config_model == search_type: return self._config[config_model] + + def resolve_runnable_argument_types(self, services: ServiceProviderABC): + for arg in self._argument_types: + arg.set_runnable(services.get_service(arg.runnable_type)) diff --git a/src/cpl_core/configuration/configuration_abc.py b/src/cpl_core/configuration/configuration_abc.py index a2961cda..5307f924 100644 --- a/src/cpl_core/configuration/configuration_abc.py +++ b/src/cpl_core/configuration/configuration_abc.py @@ -4,6 +4,7 @@ from typing import Type, Union, Optional from cpl_core.configuration.console_argument import ConsoleArgument from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC +from cpl_core.configuration.runnable_argument_abc import RunnableArgumentABC from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC @@ -94,7 +95,35 @@ class ConfigurationABC(ABC): pass @abstractmethod - def get_configuration(self, search_type: Union[str, Type[ConfigurationModelABC]]) -> Union[str, ConfigurationModelABC]: + def create_console_argument(self, token: str, name: str, aliases: list[str], value_token: str, + is_value_token_optional: bool = None, + runnable: Type[RunnableArgumentABC] = None) -> ConsoleArgument: + r"""Creates and adds a console argument to known console arguments + + Parameter + --------- + token: :class:`str` + Specifies optional beginning of argument + name :class:`str` + Specifies name of argument + aliases list[:class:`str`] + Specifies possible aliases of name + value_token :class:`str` + Specifies were the value begins + is_value_token_optional :class:`bool` + Specifies if values are optional + runnable: :class:`cpl_core.configuration.console_argument.ConsoleArgument` + Specifies class to run when called if value is not None + + Returns + ------ + Object of :class:`cpl_core.configuration.console_argument.ConsoleArgument` + """ + pass + + @abstractmethod + def get_configuration(self, search_type: Union[str, Type[ConfigurationModelABC]]) -> Union[ + str, ConfigurationModelABC]: r"""Returns value from configuration by given type Parameter @@ -107,3 +136,14 @@ class ConfigurationABC(ABC): Object of Union[:class:`str`, :class:`cpl_core.configuration.configuration_model_abc.ConfigurationModelABC`] """ pass + + @abstractmethod + def resolve_runnable_argument_types(self, services: 'ServiceProviderABC'): + r"""Gets all objects for given types of ConsoleArguments + + Parameter + --------- + services: :class:`cpl_core.dependency_injection.service_provider_abc.ServiceProviderABC` + Provides services + """ + pass diff --git a/src/cpl_core/configuration/console_argument.py b/src/cpl_core/configuration/console_argument.py index 6407aa5f..5508d73a 100644 --- a/src/cpl_core/configuration/console_argument.py +++ b/src/cpl_core/configuration/console_argument.py @@ -1,3 +1,8 @@ +from typing import Type, Optional + +from cpl_core.configuration.runnable_argument_abc import RunnableArgumentABC + + class ConsoleArgument: def __init__(self, @@ -6,6 +11,7 @@ class ConsoleArgument: aliases: list[str], value_token: str, is_value_token_optional: bool = None, + runnable: Type[RunnableArgumentABC] = None, console_arguments: list['ConsoleArgument'] = None ): r"""Representation of an console argument @@ -17,6 +23,7 @@ class ConsoleArgument: aliases: list[:class:`str`] value_token: :class:`str` is_value_token_optional: :class:`bool` + runnable: :class:`cpl_core.configuration.console_argument.ConsoleArgument` console_arguments: List[:class:`cpl_core.configuration.console_argument.ConsoleArgument`] """ self._token = token @@ -24,7 +31,9 @@ class ConsoleArgument: self._aliases = aliases self._value_token = value_token self._is_value_token_optional = is_value_token_optional - self._console_arguments = console_arguments + self._console_arguments = console_arguments if console_arguments is not None else [] + self._runnable_type = runnable + self._runnable: Optional[RunnableArgumentABC] = None @property def token(self) -> str: @@ -41,7 +50,7 @@ class ConsoleArgument: @property def value_token(self) -> str: return self._value_token - + @property def is_value_token_optional(self) -> bool: return self._is_value_token_optional @@ -49,3 +58,42 @@ class ConsoleArgument: @property def console_arguments(self) -> list['ConsoleArgument']: return self._console_arguments + + @property + def runnable_type(self) -> Type[RunnableArgumentABC]: + return self._runnable_type + + def set_runnable(self, runnable: RunnableArgumentABC): + self._runnable = runnable + + def add_console_argument(self, token: str, name: str, aliases: list[str], value_token: str, + is_value_token_optional: bool = None) -> 'ConsoleArgument': + r"""Creates and adds a console argument to known console arguments + + Parameter + --------- + token: :class:`str` + Specifies optional beginning of argument + name :class:`str` + Specifies name of argument + aliases list[:class:`str`] + Specifies possible aliases of name + value_token :class:`str` + Specifies were the value begins + is_value_token_optional :class:`bool` + Specifies if values are optional + + Returns + ------ + self :class:`cpl_core.configuration.console_argument.ConsoleArgument` not created argument! + """ + argument = ConsoleArgument(token, name, aliases, value_token, is_value_token_optional) + self._console_arguments.append(argument) + return self + + def run(self, args: list[str]): + r"""Executes runnable if exists + """ + if self._runnable is None: + return + self._runnable.run(args) diff --git a/src/cpl_core/configuration/runnable_argument_abc.py b/src/cpl_core/configuration/runnable_argument_abc.py new file mode 100644 index 00000000..ae1a7c25 --- /dev/null +++ b/src/cpl_core/configuration/runnable_argument_abc.py @@ -0,0 +1,10 @@ +from abc import ABC, abstractmethod + + +class RunnableArgumentABC(ABC): + + @abstractmethod + def __init__(self): pass + + @abstractmethod + def run(self, args: list[str]): pass diff --git a/src/tests/custom/general/src/general/arguments/__init__.py b/src/tests/custom/general/src/general/arguments/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/tests/custom/general/src/general/arguments/generate_argument.py b/src/tests/custom/general/src/general/arguments/generate_argument.py new file mode 100644 index 00000000..da71112f --- /dev/null +++ b/src/tests/custom/general/src/general/arguments/generate_argument.py @@ -0,0 +1,11 @@ +from cpl_core.configuration.runnable_argument_abc import RunnableArgumentABC +from cpl_core.console import Console + + +class GenerateArgument(RunnableArgumentABC): + + def __init__(self): + RunnableArgumentABC.__init__(self) + + def run(self, args: list[str]): + Console.write_line('Generate:', args) diff --git a/src/tests/custom/general/src/general/arguments/install_argument.py b/src/tests/custom/general/src/general/arguments/install_argument.py new file mode 100644 index 00000000..8f62c3b7 --- /dev/null +++ b/src/tests/custom/general/src/general/arguments/install_argument.py @@ -0,0 +1,11 @@ +from cpl_core.configuration.runnable_argument_abc import RunnableArgumentABC +from cpl_core.console import Console + + +class InstallArgument(RunnableArgumentABC): + + def __init__(self): + RunnableArgumentABC.__init__(self) + + def run(self, args: list[str]): + Console.write_line('Install:', args) diff --git a/src/tests/custom/general/src/general/main.py b/src/tests/custom/general/src/general/main.py index 67191b28..369279de 100644 --- a/src/tests/custom/general/src/general/main.py +++ b/src/tests/custom/general/src/general/main.py @@ -3,11 +3,13 @@ from cpl_core.application import ApplicationBuilder from test_extension import TestExtension from startup import Startup from test_startup_extension import TestStartupExtension +from parameter_startup import ParameterStartup def main(): app_builder = ApplicationBuilder(Application) app_builder.use_startup(Startup) + app_builder.use_extension(ParameterStartup) app_builder.use_extension(TestStartupExtension) app_builder.use_extension(TestExtension) app_builder.build().run() diff --git a/src/tests/custom/general/src/general/parameter_startup.py b/src/tests/custom/general/src/general/parameter_startup.py new file mode 100644 index 00000000..629f1758 --- /dev/null +++ b/src/tests/custom/general/src/general/parameter_startup.py @@ -0,0 +1,31 @@ +from cpl_core.application import StartupExtensionABC +from cpl_core.configuration import ConfigurationABC +from cpl_core.dependency_injection import ServiceCollectionABC +from cpl_core.environment import ApplicationEnvironmentABC +from arguments.generate_argument import GenerateArgument +from arguments.install_argument import InstallArgument + + +class ParameterStartup(StartupExtensionABC): + + def __init__(self): + StartupExtensionABC.__init__(self) + + def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC): + config.create_console_argument('', 'generate', ['g', 'G'], '', runnable=GenerateArgument) \ + .add_console_argument('', 'abc', ['a', 'A'], ' ') \ + .add_console_argument('', 'class', ['c', 'C'], ' ') \ + .add_console_argument('', 'enum', ['e', 'E'], ' ') \ + .add_console_argument('', 'service', ['s', 'S'], ' ') \ + .add_console_argument('', 'settings', ['st', 'ST'], ' ') \ + .add_console_argument('', 'thread', ['t', 'T'], ' ') \ + .add_console_argument('-', 'o', ['o', 'O'], '=') + config.create_console_argument('', 'install', ['i', 'I'], ' ', is_value_token_optional=True, + runnable=InstallArgument) \ + .add_console_argument('--', 'virtual', ['v', 'V'], '') \ + .add_console_argument('--', 'simulate', ['s', 'S'], '') + + def configure_services(self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC): + services \ + .add_singleton(GenerateArgument) \ + .add_singleton(InstallArgument) -- 2.45.1 From d87ce72f07126dc83a4a970e9e6c3a77b7a6c469 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 18 May 2022 22:26:11 +0200 Subject: [PATCH 008/140] Improved argument parsing --- src/cpl_cli/__init__.py | 4 +- src/cpl_cli/_templates/__init__.py | 4 +- src/cpl_cli/_templates/build/__init__.py | 4 +- src/cpl_cli/_templates/generate/__init__.py | 4 +- src/cpl_cli/_templates/new/__init__.py | 4 +- .../_templates/new/console/__init__.py | 4 +- .../_templates/new/console/source/__init__.py | 4 +- .../new/console/source/name/__init__.py | 4 +- .../new/console/source/tests/__init__.py | 4 +- .../_templates/new/library/__init__.py | 4 +- .../_templates/new/library/source/__init__.py | 4 +- .../new/library/source/name/__init__.py | 4 +- .../new/library/source/tests/__init__.py | 4 +- src/cpl_cli/_templates/publish/__init__.py | 4 +- src/cpl_cli/cli.py | 1 - src/cpl_cli/command/__init__.py | 4 +- src/cpl_cli/configuration/__init__.py | 4 +- src/cpl_cli/cpl_cli.json | 4 +- src/cpl_cli/live_server/__init__.py | 4 +- src/cpl_cli/publish/__init__.py | 4 +- src/cpl_cli/source_creator/__init__.py | 4 +- src/cpl_cli/startup.py | 4 +- src/cpl_core/__init__.py | 4 +- src/cpl_core/application/__init__.py | 4 +- .../application/application_builder.py | 1 + src/cpl_core/configuration/__init__.py | 6 +- src/cpl_core/configuration/argument_abc.py | 60 +++++ .../configuration/argument_builder.py | 30 +++ ...ment_abc.py => argument_executable_abc.py} | 2 +- .../configuration/argument_type_enum.py | 8 + src/cpl_core/configuration/configuration.py | 253 +++++------------- .../configuration/configuration_abc.py | 19 +- .../configuration/console_argument.py | 99 ------- .../configuration/executable_argument.py | 34 +++ src/cpl_core/configuration/flag_argument.py | 13 + .../configuration/variable_argument.py | 27 ++ src/cpl_core/console/__init__.py | 4 +- src/cpl_core/cpl_core.json | 2 +- src/cpl_core/database/__init__.py | 4 +- src/cpl_core/database/connection/__init__.py | 4 +- src/cpl_core/database/context/__init__.py | 4 +- src/cpl_core/dependency_injection/__init__.py | 4 +- .../dependency_injection/service_provider.py | 2 +- src/cpl_core/environment/__init__.py | 4 +- src/cpl_core/logging/__init__.py | 4 +- src/cpl_core/mailing/__init__.py | 4 +- src/cpl_core/time/__init__.py | 4 +- src/cpl_core/utils/__init__.py | 4 +- src/tests/custom/database/src/startup.py | 2 +- .../general/arguments/generate_argument.py | 17 +- .../src/general/arguments/install_argument.py | 6 +- .../general/src/general/parameter_startup.py | 25 +- 52 files changed, 344 insertions(+), 395 deletions(-) create mode 100644 src/cpl_core/configuration/argument_abc.py create mode 100644 src/cpl_core/configuration/argument_builder.py rename src/cpl_core/configuration/{runnable_argument_abc.py => argument_executable_abc.py} (81%) create mode 100644 src/cpl_core/configuration/argument_type_enum.py delete mode 100644 src/cpl_core/configuration/console_argument.py create mode 100644 src/cpl_core/configuration/executable_argument.py create mode 100644 src/cpl_core/configuration/flag_argument.py create mode 100644 src/cpl_core/configuration/variable_argument.py diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 283a11c1..108f6a91 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple @@ -29,4 +29,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 8b1fd416..1a577981 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 6e99f636..cc514f85 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 85c86198..a9722bc8 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 89efbf46..38908ef8 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 8f8455f7..157a7975 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 3a71ce79..e08841d1 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 14611e2c..40d1c457 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 38d68d91..de601885 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index c0ee86ea..381c2206 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 8611f624..08cd2bba 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 9b6f5be1..6639964c 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index cd64ce74..82ffff0a 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index c1dc353c..3c6a39a4 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/cli.py b/src/cpl_cli/cli.py index a373778d..9a833a86 100644 --- a/src/cpl_cli/cli.py +++ b/src/cpl_cli/cli.py @@ -3,7 +3,6 @@ import sys from typing import Optional from cpl_core.application.application_abc import ApplicationABC -from cpl_core.configuration.console_argument import ConsoleArgument from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.console.console import Console from cpl_core.dependency_injection import ServiceProviderABC diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index e993d293..f048ccca 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index b170c452..bf21d2d4 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index c543514f..e895b319 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "1" + "Micro": "3.dev2" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.2" + "cpl-core>=2022.6.3.dev2" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 199a7712..b46d0bf5 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index 0b194ade..1fb15959 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 1f86e0c5..8bc73e83 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.3.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_cli/startup.py b/src/cpl_cli/startup.py index e3a67712..8243cfdc 100644 --- a/src/cpl_cli/startup.py +++ b/src/cpl_cli/startup.py @@ -2,7 +2,7 @@ import os from typing import Optional from cpl_core.application.startup_abc import StartupABC -from cpl_core.configuration.console_argument import ConsoleArgument +from cpl_core.configuration.argument_abc import ConsoleArgument from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.dependency_injection.service_collection_abc import ServiceCollectionABC from cpl_core.dependency_injection.service_provider_abc import ServiceProviderABC @@ -80,7 +80,7 @@ class Startup(StartupABC): configuration.add_console_argument( ConsoleArgument('', script, [], ' ', is_value_token_optional=True)) - configuration.add_console_arguments(error=False) + configuration.parse_console_arguments(error=False) return configuration diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index e741b291..0c5f97cc 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.2' +__version__ = '2022.6.3.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 155bb71f..fd655602 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.2' +__version__ = '2022.6.3.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_core/application/application_builder.py b/src/cpl_core/application/application_builder.py index c879ae69..e2e53a1d 100644 --- a/src/cpl_core/application/application_builder.py +++ b/src/cpl_core/application/application_builder.py @@ -55,6 +55,7 @@ class ApplicationBuilder(ApplicationBuilderABC): config = self._configuration services = self._services.build_service_provider() config.resolve_runnable_argument_types(services) + config.parse_console_arguments(error=False) for ex in self._app_extensions: extension = ex() diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index de358f22..07c9bc68 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.2' +__version__ = '2022.6.3.dev2' from collections import namedtuple @@ -24,7 +24,7 @@ from .configuration import Configuration from .configuration_abc import ConfigurationABC from .configuration_model_abc import ConfigurationModelABC from .configuration_variable_name_enum import ConfigurationVariableNameEnum -from .console_argument import ConsoleArgument +from .argument_abc import ArgumentABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_core/configuration/argument_abc.py b/src/cpl_core/configuration/argument_abc.py new file mode 100644 index 00000000..6dab1ec3 --- /dev/null +++ b/src/cpl_core/configuration/argument_abc.py @@ -0,0 +1,60 @@ +from abc import ABC, abstractmethod + +from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum + + +class ArgumentABC(ABC): + + @abstractmethod + def __init__(self, + token: str, + name: str, + aliases: list[str], + console_arguments: list['ArgumentABC'] = None + ): + r"""Representation of an console argument + + Parameter + --------- + token: :class:`str` + name: :class:`str` + aliases: list[:class:`str`] + console_arguments: List[:class:`cpl_core.configuration.console_argument.ConsoleArgument`] + """ + self._token = token + self._name = name + self._aliases = aliases + self._console_arguments = console_arguments if console_arguments is not None else [] + + @property + def token(self) -> str: + return self._token + + @property + def name(self) -> str: + return self._name + + @property + def aliases(self) -> list[str]: + return self._aliases + + @property + def console_arguments(self) -> list['ArgumentABC']: + return self._console_arguments + + def add_console_argument(self, arg_type: ArgumentTypeEnum, *args, **kwargs) -> 'ArgumentABC': + r"""Creates and adds a console argument to known console arguments + + Parameter + --------- + arg_type: :class:`str` + Specifies the specific type of the argument + + Returns + ------ + self :class:`cpl_core.configuration.console_argument.ConsoleArgument` not created argument! + """ + from cpl_core.configuration.argument_builder import ArgumentBuilder + argument = ArgumentBuilder.build_argument(arg_type, *args, *kwargs) + self._console_arguments.append(argument) + return self diff --git a/src/cpl_core/configuration/argument_builder.py b/src/cpl_core/configuration/argument_builder.py new file mode 100644 index 00000000..9d797d76 --- /dev/null +++ b/src/cpl_core/configuration/argument_builder.py @@ -0,0 +1,30 @@ +from typing import Union + +from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum +from cpl_core.configuration.executable_argument import ExecutableArgument +from cpl_core.configuration.flag_argument import FlagArgument +from cpl_core.configuration.variable_argument import VariableArgument +from cpl_core.console import Console + + +class ArgumentBuilder: + + @staticmethod + def build_argument(arg_type: ArgumentTypeEnum, *args, **kwargs) -> Union[ + ExecutableArgument, FlagArgument, VariableArgument]: + argument = None + try: + match arg_type: + case ArgumentTypeEnum.Flag: + argument = FlagArgument(*args, **kwargs) + case ArgumentTypeEnum.Executable: + argument = ExecutableArgument(*args, **kwargs) + case ArgumentTypeEnum.Variable: + argument = VariableArgument(*args, **kwargs) + case _: + Console.error('Invalid argument type') + Console.close() + except TypeError as e: + Console.error(str(e)) + Console.close() + return argument diff --git a/src/cpl_core/configuration/runnable_argument_abc.py b/src/cpl_core/configuration/argument_executable_abc.py similarity index 81% rename from src/cpl_core/configuration/runnable_argument_abc.py rename to src/cpl_core/configuration/argument_executable_abc.py index ae1a7c25..d7f3319a 100644 --- a/src/cpl_core/configuration/runnable_argument_abc.py +++ b/src/cpl_core/configuration/argument_executable_abc.py @@ -1,7 +1,7 @@ from abc import ABC, abstractmethod -class RunnableArgumentABC(ABC): +class ArgumentExecutableABC(ABC): @abstractmethod def __init__(self): pass diff --git a/src/cpl_core/configuration/argument_type_enum.py b/src/cpl_core/configuration/argument_type_enum.py new file mode 100644 index 00000000..d8acc8fb --- /dev/null +++ b/src/cpl_core/configuration/argument_type_enum.py @@ -0,0 +1,8 @@ +from enum import Enum + + +class ArgumentTypeEnum(Enum): + + Flag = 0 + Executable = 1 + Variable = 3 diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index 573793bb..1fa0fb1f 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -4,11 +4,15 @@ import sys from collections.abc import Callable from typing import Union, Type, Optional +from cpl_core.configuration.argument_abc import ArgumentABC +from cpl_core.configuration.argument_builder import ArgumentBuilder +from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC from cpl_core.configuration.configuration_variable_name_enum import ConfigurationVariableNameEnum -from cpl_core.configuration.console_argument import ConsoleArgument -from cpl_core.configuration.runnable_argument_abc import RunnableArgumentABC +from cpl_core.configuration.executable_argument import ExecutableArgument +from cpl_core.configuration.flag_argument import FlagArgument +from cpl_core.configuration.variable_argument import VariableArgument from cpl_core.console.console import Console from cpl_core.console.foreground_color_enum import ForegroundColorEnum from cpl_core.dependency_injection import ServiceProviderABC @@ -26,7 +30,7 @@ class Configuration(ConfigurationABC): self._application_environment = ApplicationEnvironment() self._config: dict[Union[type, str], Union[ConfigurationModelABC, str]] = {} - self._argument_types: list[ConsoleArgument] = [] + self._argument_types: list[ArgumentABC] = [] self._additional_arguments: list[str] = [] self._argument_error_function: Optional[Callable] = None @@ -116,155 +120,6 @@ class Configuration(ConfigurationABC): else: self._config[name] = value - def _validate_argument_by_argument_type(self, argument: str, argument_type: ConsoleArgument, - next_arguments: list[str] = None) -> bool: - r"""Validate argument by argument type - - Parameter - --------- - argument: :class:`str` - Command as string - argument_type: :class:`cpl_core.configuration.console_argument.ConsoleArgument` - Command type as ConsoleArgument - next_arguments: list[:class:`str`] - Following arguments of argument - - Returns - ------- - Object of :class:`bool` - - Raises - ------ - Exception: An error occurred getting an argument for a command - """ - argument_name = '' - value = '' - result = False - - if argument_type.value_token != '' and argument_type.value_token in argument: - # ?new=value - found = False - for alias in argument_type.aliases: - if alias in argument: - found = True - - if argument_type.name not in argument_name and not found: - return False - - if argument_type.is_value_token_optional is not None and argument_type.is_value_token_optional: - if argument_type.name not in self._additional_arguments: - self._additional_arguments.append(argument_type.name) - result = True - - if argument_type.token != '' and argument.startswith(argument_type.token): - # --new=value - if len(argument.split(argument_type.token)[1].split(argument_type.value_token)) == 0: - raise Exception(f'Expected argument for command: {argument}') - - argument_name = argument.split(argument_type.token)[1].split(argument_type.value_token)[0] - else: - # new=value - argument_name = argument.split(argument_type.value_token)[1] - - if argument_name == '': - raise Exception(f'Expected argument for command: {argument_type.name}') - - result = True - - if argument_type.is_value_token_optional is True: - is_valid = False - - name_list = argument.split(argument_type.token) - if len(name_list) > 1: - value_list = name_list[1].split(argument_type.value_token) - if len(value_list) > 1: - is_valid = True - value = argument.split(argument_type.token)[1].split(argument_type.value_token)[1] - - if not is_valid: - if argument_type.name not in self._additional_arguments: - self._additional_arguments.append(argument_type.name) - result = True - else: - value = argument.split(argument_type.token)[1].split(argument_type.value_token)[1] - - if argument_name != argument_type.name and argument_name not in argument_type.aliases: - return False - - self._set_variable(argument_type.name, value) - result = True - - elif argument_type.value_token == ' ': - # ?new value - found = False - for alias in argument_type.aliases: - if alias == argument or f' {alias} ' == argument: - found = True - - if (argument_type.token != '' and f'{argument_type.token}{argument_type.name}' != argument - or argument_type.name not in argument) and not found: - return False - - if (next_arguments is None or len(next_arguments) == 0) and \ - argument_type.is_value_token_optional is not True: - raise Exception(f'Expected argument for command: {argument_type.name}') - - if (next_arguments is None or len(next_arguments) == 0) and argument_type.is_value_token_optional is True: - value = '' - else: - value = next_arguments[0] - # next_arguments.remove(value) - self._handled_args.append(value) - - if argument_type.token != '' and argument.startswith(argument_type.token): - # --new value - argument_name = argument.split(argument_type.token)[1] - else: - # new value - argument_name = argument - - if argument_name != argument_type.name and argument_name not in argument_type.aliases: - return False - - if value == '': - if argument_type.name not in self._additional_arguments: - self._additional_arguments.append(argument_type.name) - else: - self._set_variable(argument_type.name, value) - - result = True - - elif argument_type.name == argument or argument in argument_type.aliases: - # new - self._additional_arguments.append(argument_type.name) - result = True - - if result: - self._handled_args.append(argument) - if next_arguments is not None and len(next_arguments) > 0: - next_args = [] - if len(next_arguments) > 1: - next_args = next_arguments[1:] - - if argument_type.console_arguments is not None and len(argument_type.console_arguments) > 0: - found_child = False - for child_argument_type in argument_type.console_arguments: - found_child = self._validate_argument_by_argument_type( - next_arguments[0], - child_argument_type, - next_args - ) - if found_child and child_argument_type.name not in self._additional_arguments: - self._additional_arguments.append(child_argument_type.name) - - if found_child: - break - - if not found_child: - result = self._validate_argument_by_argument_type(next_arguments[0], argument_type, next_args) - - return result - def _load_json_file(self, file: str, output: bool) -> dict: r"""Reads the json file @@ -298,51 +153,65 @@ class Configuration(ConfigurationABC): if var_name in [key.upper() for key in os.environ.keys()]: self._set_variable(variable, os.environ[var_name]) - def add_console_argument(self, argument: ConsoleArgument): + def add_console_argument(self, argument: ArgumentABC): self._argument_types.append(argument) - def add_console_arguments(self, error: bool = None): - for arg_name in ConfigurationVariableNameEnum.to_list(): - self.add_console_argument(ConsoleArgument('--', str(arg_name).upper(), [str(arg_name).lower()], '=')) - - arg_list = sys.argv[1:] + def _parse_arguments(self, call_stack: list[Callable], arg_list: list[str], args_types: list[ArgumentABC]): for i in range(0, len(arg_list)): - argument = arg_list[i] - next_arguments = [] - error_message = '' + arg_str = arg_list[i] + Console.write_line('ARG_STR', arg_str) + for arg in args_types: + Console.write_line('ARG', arg.name, type(arg), len(arg.console_arguments)) + arg_str_without_token = arg_str + if arg.token != "" and arg.token in arg_str: + arg_str_without_token = arg_str.split(arg.token)[1] - if argument in self._handled_args: - break + # executable + if isinstance(arg, ExecutableArgument): + if arg_str.startswith(arg.token) \ + and arg_str_without_token == arg.name or arg_str_without_token in arg.aliases: + Console.write_line('EXEC', arg.name) + call_stack.append(arg.run) + self._parse_arguments(call_stack, arg_list[i:], arg.console_arguments) - if i + 1 < len(arg_list): - next_arguments = arg_list[i + 1:] + # variables + elif isinstance(arg, VariableArgument): + arg_str_without_value = arg_str_without_token + if arg.value_token in arg_str_without_value: + arg_str_without_value = arg_str_without_token.split(arg.value_token)[0] - found = False - for argument_type in self._argument_types: - try: - found = self._validate_argument_by_argument_type(argument, argument_type, next_arguments) - if found: - break - except Exception as e: - error_message = e + if arg_str.startswith(arg.token) \ + and arg_str_without_value == arg.name or arg_str_without_value in arg.aliases: + if arg.value_token != ' ': + value = arg_str_without_token.split(arg.value_token)[1] + else: + value = arg_list[i + 1] + self._set_variable(arg.name, value) + self._parse_arguments(call_stack, arg_list[i + 1:], arg.console_arguments) + # flags + elif isinstance(arg, FlagArgument): + if arg_str.startswith(arg.token) \ + and arg_str_without_token == arg.name or arg_str_without_token in arg.aliases: + self._additional_arguments.append(arg.name) + self._parse_arguments(call_stack, arg_list[i + 1:], arg.console_arguments) - if not found and error_message == '' and error is not False: - error_message = f'Invalid argument: {argument}' + Console.write_line() - if error_message != '': - if self._argument_error_function is not None: - self._argument_error_function(error_message) - else: - self._print_error(__name__, error_message) + def parse_console_arguments(self, error: bool = None): + # sets environment variables as possible arguments as: --VAR=VALUE + for arg_name in ConfigurationVariableNameEnum.to_list(): + self.add_console_argument(VariableArgument('--', str(arg_name).upper(), [str(arg_name).lower()], '=')) - sys.exit() + Console.error('Parsing arguments:') + arg_list = sys.argv[1:] + call_stack = [] + self._parse_arguments(call_stack, arg_list, self._argument_types) - add_args = [] - for next_arg in next_arguments: - if next_arg not in self._handled_args and next_arg not in self._additional_arguments: - add_args.append(next_arg) + Console.error('Parsing finished') - self._set_variable(f'{argument}AdditionalArguments', add_args) + for call in call_stack: + Console.write_line(call) + call(self._additional_arguments) def add_json_file(self, name: str, optional: bool = None, output: bool = True, path: str = None): if os.path.isabs(name): @@ -380,11 +249,10 @@ class Configuration(ConfigurationABC): def add_configuration(self, key_type: Union[str, type], value: ConfigurationModelABC): self._config[key_type] = value - def create_console_argument(self, token: str, name: str, aliases: list[str], value_token: str, - is_value_token_optional: bool = None, - runnable: Type[RunnableArgumentABC] = None) -> ConsoleArgument: - argument = ConsoleArgument(token, name, aliases, value_token, is_value_token_optional, runnable) - self.add_console_argument(argument) + def create_console_argument(self, arg_type: ArgumentTypeEnum, token: str, name: str, aliases: list[str], + *args, **kwargs) -> ArgumentABC: + argument = ArgumentBuilder.build_argument(arg_type, token, name, aliases, *args, *kwargs) + self._argument_types.append(argument) return argument def get_configuration(self, search_type: Union[str, Type[ConfigurationModelABC]]) -> \ @@ -408,4 +276,5 @@ class Configuration(ConfigurationABC): def resolve_runnable_argument_types(self, services: ServiceProviderABC): for arg in self._argument_types: - arg.set_runnable(services.get_service(arg.runnable_type)) + if isinstance(arg, ExecutableArgument): + arg.set_executable(services.get_service(arg.executable_type)) diff --git a/src/cpl_core/configuration/configuration_abc.py b/src/cpl_core/configuration/configuration_abc.py index 5307f924..a2a9c48a 100644 --- a/src/cpl_core/configuration/configuration_abc.py +++ b/src/cpl_core/configuration/configuration_abc.py @@ -2,9 +2,9 @@ from abc import abstractmethod, ABC from collections.abc import Callable from typing import Type, Union, Optional -from cpl_core.configuration.console_argument import ConsoleArgument from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC -from cpl_core.configuration.runnable_argument_abc import RunnableArgumentABC +from cpl_core.configuration.argument_abc import ArgumentABC +from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC @@ -43,18 +43,18 @@ class ConfigurationABC(ABC): pass @abstractmethod - def add_console_argument(self, argument: ConsoleArgument): + def add_console_argument(self, argument: ArgumentABC): r"""Adds console argument to known console arguments Parameter --------- - argument: :class:`cpl_core.configuration.console_argument.ConsoleArgument` + argument: :class:`cpl_core.configuration.console_argument.ConsoleArgumentABC` Specifies the console argument """ pass @abstractmethod - def add_console_arguments(self, error: bool = None): + def parse_console_arguments(self, error: bool = None): r"""Reads the console arguments Parameter @@ -95,9 +95,8 @@ class ConfigurationABC(ABC): pass @abstractmethod - def create_console_argument(self, token: str, name: str, aliases: list[str], value_token: str, - is_value_token_optional: bool = None, - runnable: Type[RunnableArgumentABC] = None) -> ConsoleArgument: + def create_console_argument(self, arg_type: ArgumentTypeEnum, token: str, name: str, aliases: list[str], + *args, **kwargs) -> ArgumentABC: r"""Creates and adds a console argument to known console arguments Parameter @@ -112,12 +111,12 @@ class ConfigurationABC(ABC): Specifies were the value begins is_value_token_optional :class:`bool` Specifies if values are optional - runnable: :class:`cpl_core.configuration.console_argument.ConsoleArgument` + runnable: :class:`cpl_core.configuration.console_argument.ConsoleArgumentABC` Specifies class to run when called if value is not None Returns ------ - Object of :class:`cpl_core.configuration.console_argument.ConsoleArgument` + Object of :class:`cpl_core.configuration.console_argument.ConsoleArgumentABC` """ pass diff --git a/src/cpl_core/configuration/console_argument.py b/src/cpl_core/configuration/console_argument.py deleted file mode 100644 index 5508d73a..00000000 --- a/src/cpl_core/configuration/console_argument.py +++ /dev/null @@ -1,99 +0,0 @@ -from typing import Type, Optional - -from cpl_core.configuration.runnable_argument_abc import RunnableArgumentABC - - -class ConsoleArgument: - - def __init__(self, - token: str, - name: str, - aliases: list[str], - value_token: str, - is_value_token_optional: bool = None, - runnable: Type[RunnableArgumentABC] = None, - console_arguments: list['ConsoleArgument'] = None - ): - r"""Representation of an console argument - - Parameter - --------- - token: :class:`str` - name: :class:`str` - aliases: list[:class:`str`] - value_token: :class:`str` - is_value_token_optional: :class:`bool` - runnable: :class:`cpl_core.configuration.console_argument.ConsoleArgument` - console_arguments: List[:class:`cpl_core.configuration.console_argument.ConsoleArgument`] - """ - self._token = token - self._name = name - self._aliases = aliases - self._value_token = value_token - self._is_value_token_optional = is_value_token_optional - self._console_arguments = console_arguments if console_arguments is not None else [] - self._runnable_type = runnable - self._runnable: Optional[RunnableArgumentABC] = None - - @property - def token(self) -> str: - return self._token - - @property - def name(self) -> str: - return self._name - - @property - def aliases(self) -> list[str]: - return self._aliases - - @property - def value_token(self) -> str: - return self._value_token - - @property - def is_value_token_optional(self) -> bool: - return self._is_value_token_optional - - @property - def console_arguments(self) -> list['ConsoleArgument']: - return self._console_arguments - - @property - def runnable_type(self) -> Type[RunnableArgumentABC]: - return self._runnable_type - - def set_runnable(self, runnable: RunnableArgumentABC): - self._runnable = runnable - - def add_console_argument(self, token: str, name: str, aliases: list[str], value_token: str, - is_value_token_optional: bool = None) -> 'ConsoleArgument': - r"""Creates and adds a console argument to known console arguments - - Parameter - --------- - token: :class:`str` - Specifies optional beginning of argument - name :class:`str` - Specifies name of argument - aliases list[:class:`str`] - Specifies possible aliases of name - value_token :class:`str` - Specifies were the value begins - is_value_token_optional :class:`bool` - Specifies if values are optional - - Returns - ------ - self :class:`cpl_core.configuration.console_argument.ConsoleArgument` not created argument! - """ - argument = ConsoleArgument(token, name, aliases, value_token, is_value_token_optional) - self._console_arguments.append(argument) - return self - - def run(self, args: list[str]): - r"""Executes runnable if exists - """ - if self._runnable is None: - return - self._runnable.run(args) diff --git a/src/cpl_core/configuration/executable_argument.py b/src/cpl_core/configuration/executable_argument.py new file mode 100644 index 00000000..a9d512d4 --- /dev/null +++ b/src/cpl_core/configuration/executable_argument.py @@ -0,0 +1,34 @@ +from typing import Type, Optional + +from cpl_core.configuration.argument_executable_abc import ArgumentExecutableABC +from cpl_core.configuration.argument_abc import ArgumentABC + + +class ExecutableArgument(ArgumentABC): + + def __init__(self, + token: str, + name: str, + aliases: list[str], + executable: Type[ArgumentExecutableABC], + console_arguments: list['ArgumentABC'] = None + ): + + self._executable_type = executable + self._executable: Optional[ArgumentExecutableABC] = None + + ArgumentABC.__init__(self, token, name, aliases, console_arguments) + + @property + def executable_type(self) -> type: + return self._executable_type + + def set_executable(self, executable: ArgumentExecutableABC): + self._executable = executable + + def run(self, args: list[str]): + r"""Executes runnable if exists + """ + if self._executable is None: + return + self._executable.run(args) diff --git a/src/cpl_core/configuration/flag_argument.py b/src/cpl_core/configuration/flag_argument.py new file mode 100644 index 00000000..0d57af2a --- /dev/null +++ b/src/cpl_core/configuration/flag_argument.py @@ -0,0 +1,13 @@ +from cpl_core.configuration.argument_abc import ArgumentABC + + +class FlagArgument(ArgumentABC): + + def __init__(self, + token: str, + name: str, + aliases: list[str], + console_arguments: list['ArgumentABC'] = None + ): + + ArgumentABC.__init__(self, token, name, aliases, console_arguments) diff --git a/src/cpl_core/configuration/variable_argument.py b/src/cpl_core/configuration/variable_argument.py new file mode 100644 index 00000000..bcf7b0cc --- /dev/null +++ b/src/cpl_core/configuration/variable_argument.py @@ -0,0 +1,27 @@ +from cpl_core.configuration.argument_abc import ArgumentABC + + +class VariableArgument(ArgumentABC): + + def __init__(self, + token: str, + name: str, + aliases: list[str], + value_token: str, + console_arguments: list['ArgumentABC'] = None + ): + self._value_token = value_token + self._value: str = '' + + ArgumentABC.__init__(self, token, name, aliases, console_arguments) + + @property + def value_token(self) -> str: + return self._value_token + + @property + def value(self) -> str: + return self._value + + def set_value(self, value: str): + self._value = value diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index 928c0904..6d11770b 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.2' +__version__ = '2022.6.3.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index e171d838..7da4887e 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "2" + "Micro": "3.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index 55bc3f3c..a161bac8 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.2' +__version__ = '2022.6.3.dev2' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index accbfaa6..1e918064 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.2' +__version__ = '2022.6.3.dev2' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index e1684eea..c9d40b13 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.2' +__version__ = '2022.6.3.dev2' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 044ec621..d9b831dd 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.2' +__version__ = '2022.6.3.dev2' from collections import namedtuple @@ -28,4 +28,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_core/dependency_injection/service_provider.py b/src/cpl_core/dependency_injection/service_provider.py index a1535f98..39f298b7 100644 --- a/src/cpl_core/dependency_injection/service_provider.py +++ b/src/cpl_core/dependency_injection/service_provider.py @@ -34,7 +34,7 @@ class ServiceProvider(ServiceProviderABC): self._database_context = db_context self._scope: Optional[ScopeABC] = None - def _find_service(self, service_type: type) -> ServiceDescriptor: + def _find_service(self, service_type: type) -> Optional[ServiceDescriptor]: for descriptor in self._service_descriptors: if descriptor.service_type == service_type or issubclass(descriptor.service_type, service_type): return descriptor diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 3c96a3bf..890cd7e7 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.2' +__version__ = '2022.6.3.dev2' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 3e341963..481f3abd 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.2' +__version__ = '2022.6.3.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 0eeefc95..06162391 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.2' +__version__ = '2022.6.3.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index 4dea9c68..1bee00e0 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.2' +__version__ = '2022.6.3.dev2' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 5d9e5653..f17cb23f 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.2' +__version__ = '2022.6.3.dev2' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/tests/custom/database/src/startup.py b/src/tests/custom/database/src/startup.py index 112c1ae4..9ceecabf 100644 --- a/src/tests/custom/database/src/startup.py +++ b/src/tests/custom/database/src/startup.py @@ -21,7 +21,7 @@ class Startup(StartupABC): def configure_configuration(self, configuration: ConfigurationABC, environment: ApplicationEnvironmentABC) -> ConfigurationABC: configuration.add_environment_variables('PYTHON_') configuration.add_environment_variables('CPL_') - configuration.add_console_arguments() + configuration.parse_console_arguments() configuration.add_json_file(f'appsettings.json') configuration.add_json_file(f'appsettings.{configuration.environment.environment_name}.json') configuration.add_json_file(f'appsettings.{configuration.environment.host_name}.json', optional=True) diff --git a/src/tests/custom/general/src/general/arguments/generate_argument.py b/src/tests/custom/general/src/general/arguments/generate_argument.py index da71112f..b6830b32 100644 --- a/src/tests/custom/general/src/general/arguments/generate_argument.py +++ b/src/tests/custom/general/src/general/arguments/generate_argument.py @@ -1,11 +1,18 @@ -from cpl_core.configuration.runnable_argument_abc import RunnableArgumentABC +from cpl_core.configuration import ConfigurationABC +from cpl_core.configuration.argument_executable_abc import ArgumentExecutableABC from cpl_core.console import Console +from cpl_core.environment import ApplicationEnvironmentABC -class GenerateArgument(RunnableArgumentABC): +class GenerateArgument(ArgumentExecutableABC): - def __init__(self): - RunnableArgumentABC.__init__(self) + def __init__(self, config: ConfigurationABC, env: ApplicationEnvironmentABC): + ArgumentExecutableABC.__init__(self) + self._config = config + self._env = env def run(self, args: list[str]): - Console.write_line('Generate:', args) + Console.error('Generate:') + for c in self._config._config: + Console.write_line(c, self._config.get_configuration(c)) + Console.write_line(args, self._env.environment_name) diff --git a/src/tests/custom/general/src/general/arguments/install_argument.py b/src/tests/custom/general/src/general/arguments/install_argument.py index 8f62c3b7..aca00937 100644 --- a/src/tests/custom/general/src/general/arguments/install_argument.py +++ b/src/tests/custom/general/src/general/arguments/install_argument.py @@ -1,11 +1,11 @@ -from cpl_core.configuration.runnable_argument_abc import RunnableArgumentABC +from cpl_core.configuration.argument_executable_abc import ArgumentExecutableABC from cpl_core.console import Console -class InstallArgument(RunnableArgumentABC): +class InstallArgument(ArgumentExecutableABC): def __init__(self): - RunnableArgumentABC.__init__(self) + ArgumentExecutableABC.__init__(self) def run(self, args: list[str]): Console.write_line('Install:', args) diff --git a/src/tests/custom/general/src/general/parameter_startup.py b/src/tests/custom/general/src/general/parameter_startup.py index 629f1758..f28791a1 100644 --- a/src/tests/custom/general/src/general/parameter_startup.py +++ b/src/tests/custom/general/src/general/parameter_startup.py @@ -1,5 +1,6 @@ from cpl_core.application import StartupExtensionABC from cpl_core.configuration import ConfigurationABC +from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum from cpl_core.dependency_injection import ServiceCollectionABC from cpl_core.environment import ApplicationEnvironmentABC from arguments.generate_argument import GenerateArgument @@ -12,18 +13,18 @@ class ParameterStartup(StartupExtensionABC): StartupExtensionABC.__init__(self) def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC): - config.create_console_argument('', 'generate', ['g', 'G'], '', runnable=GenerateArgument) \ - .add_console_argument('', 'abc', ['a', 'A'], ' ') \ - .add_console_argument('', 'class', ['c', 'C'], ' ') \ - .add_console_argument('', 'enum', ['e', 'E'], ' ') \ - .add_console_argument('', 'service', ['s', 'S'], ' ') \ - .add_console_argument('', 'settings', ['st', 'ST'], ' ') \ - .add_console_argument('', 'thread', ['t', 'T'], ' ') \ - .add_console_argument('-', 'o', ['o', 'O'], '=') - config.create_console_argument('', 'install', ['i', 'I'], ' ', is_value_token_optional=True, - runnable=InstallArgument) \ - .add_console_argument('--', 'virtual', ['v', 'V'], '') \ - .add_console_argument('--', 'simulate', ['s', 'S'], '') + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'generate', ['g', 'G'], GenerateArgument) \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'abc', ['a', 'A'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'class', ['c', 'C'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'enum', ['e', 'E'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'service', ['s', 'S'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'settings', ['st', 'ST'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'thread', ['t', 'T'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '-', 'o', ['o', 'O'], '=') \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'install', ['i', 'I'], InstallArgument) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) def configure_services(self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC): services \ -- 2.45.1 From a495532a4de117a6ffa15098b58b0c67fa9e3e3c Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 18 May 2022 22:29:44 +0200 Subject: [PATCH 009/140] Removed console debug outputs --- src/cpl_core/configuration/configuration.py | 9 --------- .../general/src/general/arguments/generate_argument.py | 2 -- 2 files changed, 11 deletions(-) diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index 1fa0fb1f..0f7bfc75 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -159,9 +159,7 @@ class Configuration(ConfigurationABC): def _parse_arguments(self, call_stack: list[Callable], arg_list: list[str], args_types: list[ArgumentABC]): for i in range(0, len(arg_list)): arg_str = arg_list[i] - Console.write_line('ARG_STR', arg_str) for arg in args_types: - Console.write_line('ARG', arg.name, type(arg), len(arg.console_arguments)) arg_str_without_token = arg_str if arg.token != "" and arg.token in arg_str: arg_str_without_token = arg_str.split(arg.token)[1] @@ -170,7 +168,6 @@ class Configuration(ConfigurationABC): if isinstance(arg, ExecutableArgument): if arg_str.startswith(arg.token) \ and arg_str_without_token == arg.name or arg_str_without_token in arg.aliases: - Console.write_line('EXEC', arg.name) call_stack.append(arg.run) self._parse_arguments(call_stack, arg_list[i:], arg.console_arguments) @@ -195,22 +192,16 @@ class Configuration(ConfigurationABC): self._additional_arguments.append(arg.name) self._parse_arguments(call_stack, arg_list[i + 1:], arg.console_arguments) - Console.write_line() - def parse_console_arguments(self, error: bool = None): # sets environment variables as possible arguments as: --VAR=VALUE for arg_name in ConfigurationVariableNameEnum.to_list(): self.add_console_argument(VariableArgument('--', str(arg_name).upper(), [str(arg_name).lower()], '=')) - Console.error('Parsing arguments:') arg_list = sys.argv[1:] call_stack = [] self._parse_arguments(call_stack, arg_list, self._argument_types) - Console.error('Parsing finished') - for call in call_stack: - Console.write_line(call) call(self._additional_arguments) def add_json_file(self, name: str, optional: bool = None, output: bool = True, path: str = None): diff --git a/src/tests/custom/general/src/general/arguments/generate_argument.py b/src/tests/custom/general/src/general/arguments/generate_argument.py index b6830b32..58a35467 100644 --- a/src/tests/custom/general/src/general/arguments/generate_argument.py +++ b/src/tests/custom/general/src/general/arguments/generate_argument.py @@ -13,6 +13,4 @@ class GenerateArgument(ArgumentExecutableABC): def run(self, args: list[str]): Console.error('Generate:') - for c in self._config._config: - Console.write_line(c, self._config.get_configuration(c)) Console.write_line(args, self._env.environment_name) -- 2.45.1 From 8ebd4864d325ac20358ff33b471ccef1a71269d4 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 19 May 2022 08:25:32 +0200 Subject: [PATCH 010/140] Improved & added commands --- src/cpl_cli/cli.py | 158 +++++++++--------- src/cpl_cli/command/add_service.py | 9 +- src/cpl_cli/command/remove_service.py | 1 - src/cpl_cli/command_abc.py | 7 +- src/cpl_cli/cpl_cli.json | 4 +- src/cpl_cli/startup.py | 75 ++++----- src/cpl_core/application/__init__.py | 1 + .../application/application_builder.py | 2 +- src/cpl_core/configuration/__init__.py | 8 +- src/cpl_core/configuration/configuration.py | 50 +++--- .../configuration/configuration_abc.py | 33 ++-- src/cpl_core/dependency_injection/__init__.py | 2 + .../general/src/general/parameter_startup.py | 2 +- 13 files changed, 191 insertions(+), 161 deletions(-) diff --git a/src/cpl_cli/cli.py b/src/cpl_cli/cli.py index 9a833a86..3a11e4e7 100644 --- a/src/cpl_cli/cli.py +++ b/src/cpl_cli/cli.py @@ -33,32 +33,33 @@ class CLI(ApplicationABC): """ ApplicationABC.__init__(self, config, services) - self._command_handler: Optional[CommandHandler] = None + # self._command_handler: Optional[CommandHandler] = None self._options: list[str] = [] def configure(self): - self._command_handler: CommandHandler = self._services.get_service(CommandHandler) - - self._command_handler.add_command(CommandModel('add', ['a', 'a'], AddService, False, False, False)) - self._command_handler.add_command(CommandModel('build', ['b', 'B'], BuildService, False, True, True)) - self._command_handler.add_command(CommandModel('generate', ['g', 'G'], GenerateService, False, True, False)) - self._command_handler.add_command(CommandModel('help', ['h', 'H'], HelpService, False, False, False)) - self._command_handler.add_command(CommandModel('install', ['i', 'I'], InstallService, False, True, True)) - self._command_handler.add_command(CommandModel('new', ['n', 'N'], NewService, False, False, True)) - self._command_handler.add_command(CommandModel('publish', ['p', 'P'], PublishService, False, True, True)) - self._command_handler.add_command(CommandModel('remove', ['r', 'R'], RemoveService, True, True, False)) - self._command_handler.add_command(CommandModel('start', ['s', 'S'], StartService, False, True, True)) - self._command_handler.add_command(CommandModel('uninstall', ['ui', 'UI'], UninstallService, False, True, True)) - self._command_handler.add_command(CommandModel('update', ['u', 'U'], UpdateService, False, True, True)) - self._command_handler.add_command(CommandModel('version', ['v', 'V'], VersionService, False, False, False)) - - if os.path.isfile(os.path.join(self._environment.working_directory, 'cpl-workspace.json')): - workspace: Optional[WorkspaceSettings] = self._configuration.get_configuration(WorkspaceSettings) - for script in workspace.scripts: - self._command_handler.add_command(CommandModel(script, [], CustomScriptService, True, True, False)) - - self._command_handler.add_command(CommandModel('--help', ['-h', '-H'], HelpService, False, False, False)) - self._options.append('--help') + pass + # self._command_handler: CommandHandler = self._services.get_service(CommandHandler) + # + # self._command_handler.add_command(CommandModel('add', ['a', 'a'], AddService, False, False, False)) + # self._command_handler.add_command(CommandModel('build', ['b', 'B'], BuildService, False, True, True)) + # self._command_handler.add_command(CommandModel('generate', ['g', 'G'], GenerateService, False, True, False)) + # self._command_handler.add_command(CommandModel('help', ['h', 'H'], HelpService, False, False, False)) + # self._command_handler.add_command(CommandModel('install', ['i', 'I'], InstallService, False, True, True)) + # self._command_handler.add_command(CommandModel('new', ['n', 'N'], NewService, False, False, True)) + # self._command_handler.add_command(CommandModel('publish', ['p', 'P'], PublishService, False, True, True)) + # self._command_handler.add_command(CommandModel('remove', ['r', 'R'], RemoveService, True, True, False)) + # self._command_handler.add_command(CommandModel('start', ['s', 'S'], StartService, False, True, True)) + # self._command_handler.add_command(CommandModel('uninstall', ['ui', 'UI'], UninstallService, False, True, True)) + # self._command_handler.add_command(CommandModel('update', ['u', 'U'], UpdateService, False, True, True)) + # self._command_handler.add_command(CommandModel('version', ['v', 'V'], VersionService, False, False, False)) + # + # if os.path.isfile(os.path.join(self._environment.working_directory, 'cpl-workspace.json')): + # workspace: Optional[WorkspaceSettings] = self._configuration.get_configuration(WorkspaceSettings) + # for script in workspace.scripts: + # self._command_handler.add_command(CommandModel(script, [], CustomScriptService, True, True, False)) + # + # self._command_handler.add_command(CommandModel('--help', ['-h', '-H'], HelpService, False, False, False)) + # self._options.append('--help') def main(self): """ @@ -66,61 +67,62 @@ class CLI(ApplicationABC): :return: """ try: - command = None - args = [] - if len(self._configuration.additional_arguments) > 0: - is_option = False - for opt in self._options: - if opt in self._configuration.additional_arguments: - is_option = True - command = opt - args = self._configuration.additional_arguments - args.remove(opt) - - if not is_option: - command = self._configuration.additional_arguments[0] - if len(self._configuration.additional_arguments) > 1: - args = self._configuration.additional_arguments[1:] - else: - for cmd in self._command_handler.commands: - result = self._configuration.get_configuration(cmd.name) - result_args: list[str] = self._configuration.get_configuration(f'{cmd.name}AdditionalArguments') - is_option = False - if result is None: - continue - - for opt in self._options: - if opt == result: - is_option = True - command = opt - - elif result_args is not None and opt in result_args: - is_option = True - command = opt - result_args.remove(opt) - - if is_option: - args.append(cmd.name) - if result_args is not None: - for arg in result_args: - args.append(arg) - - elif result is not None: - command = cmd.name - args.append(result) - - for arg in result_args: - args.append(arg) - - else: - Error.error(f'Unexpected command') - return - - if command is None: - Error.error(f'Expected command') - return - - self._command_handler.handle(command, args) + pass + # command = None + # args = [] + # if len(self._configuration.additional_arguments) > 0: + # is_option = False + # for opt in self._options: + # if opt in self._configuration.additional_arguments: + # is_option = True + # command = opt + # args = self._configuration.additional_arguments + # args.remove(opt) + # + # if not is_option: + # command = self._configuration.additional_arguments[0] + # if len(self._configuration.additional_arguments) > 1: + # args = self._configuration.additional_arguments[1:] + # else: + # for cmd in self._command_handler.commands: + # result = self._configuration.get_configuration(cmd.name) + # result_args: list[str] = self._configuration.get_configuration(f'{cmd.name}AdditionalArguments') + # is_option = False + # if result is None: + # continue + # + # for opt in self._options: + # if opt == result: + # is_option = True + # command = opt + # + # elif result_args is not None and opt in result_args: + # is_option = True + # command = opt + # result_args.remove(opt) + # + # if is_option: + # args.append(cmd.name) + # if result_args is not None: + # for arg in result_args: + # args.append(arg) + # + # elif result is not None: + # command = cmd.name + # args.append(result) + # + # for arg in result_args: + # args.append(arg) + # + # else: + # Error.error(f'Unexpected command') + # return + # + # if command is None: + # Error.error(f'Expected command') + # return + # + # self._command_handler.handle(command, args) except KeyboardInterrupt: Console.write_line() sys.exit() diff --git a/src/cpl_cli/command/add_service.py b/src/cpl_cli/command/add_service.py index c4bd21f9..4cbc4133 100644 --- a/src/cpl_cli/command/add_service.py +++ b/src/cpl_cli/command/add_service.py @@ -22,7 +22,6 @@ class AddService(CommandABC): CommandABC.__init__(self) self._config = config - self._workspace = workspace @property @@ -104,15 +103,15 @@ class AddService(CommandABC): Console.error(f'Invalid target: {target}') return - if target in build_settings.project_references: - Console.error(f'Project reference already exists.') - return - if self._workspace is None: target = f'../{target}' else: target = target.replace('src', '..') + if target in build_settings.project_references: + Console.error(f'Project reference already exists.') + return + build_settings.project_references.append(target) Console.spinner( diff --git a/src/cpl_cli/command/remove_service.py b/src/cpl_cli/command/remove_service.py index 5b8fed6d..b148e7b4 100644 --- a/src/cpl_cli/command/remove_service.py +++ b/src/cpl_cli/command/remove_service.py @@ -70,7 +70,6 @@ class RemoveService(CommandABC): :param args: :return: """ - project_name = args[0] if project_name not in self._workspace.projects: Console.error(f'Project {project_name} not found in workspace.') diff --git a/src/cpl_cli/command_abc.py b/src/cpl_cli/command_abc.py index 9cdfd84b..1c2f72d5 100644 --- a/src/cpl_cli/command_abc.py +++ b/src/cpl_cli/command_abc.py @@ -1,7 +1,9 @@ from abc import abstractmethod, ABC +from cpl_core.configuration.executable_argument import ExecutableArgument -class CommandABC(ABC): + +class CommandABC(ExecutableArgument): @abstractmethod def __init__(self): @@ -10,6 +12,3 @@ class CommandABC(ABC): @property @abstractmethod def help_message(self) -> str: pass - - @abstractmethod - def run(self, args: list[str]): pass diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index e895b319..0f5f58c7 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -42,6 +42,8 @@ "*.json" ] }, - "ProjectReferences": [] + "ProjectReferences": [ + "../cpl_core/cpl_core.json" + ] } } \ No newline at end of file diff --git a/src/cpl_cli/startup.py b/src/cpl_cli/startup.py index 8243cfdc..de9692a5 100644 --- a/src/cpl_cli/startup.py +++ b/src/cpl_cli/startup.py @@ -2,8 +2,9 @@ import os from typing import Optional from cpl_core.application.startup_abc import StartupABC -from cpl_core.configuration.argument_abc import ConsoleArgument +from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum from cpl_core.configuration.configuration_abc import ConfigurationABC +from cpl_core.console import Console from cpl_core.dependency_injection.service_collection_abc import ServiceCollectionABC from cpl_core.dependency_injection.service_provider_abc import ServiceProviderABC from cpl_cli.command.add_service import AddService @@ -40,52 +41,48 @@ class Startup(StartupABC): configuration.add_environment_variables('PYTHON_') configuration.add_environment_variables('CPL_') configuration.add_json_file('appsettings.json', path=environment.runtime_directory, optional=False, output=False) + configuration.add_json_file('cpl-workspace.json', path=environment.working_directory, optional=True, output=False) - configuration.add_console_argument(ConsoleArgument('', 'add', ['a', 'a'], ' ')) - configuration.add_console_argument(ConsoleArgument('', 'build', ['b', 'B'], '')) - configuration.add_console_argument(ConsoleArgument('', 'generate', ['g', 'G'], '', console_arguments=[ - ConsoleArgument('', 'abc', ['a', 'A'], ' '), - ConsoleArgument('', 'class', ['c', 'C'], ' '), - ConsoleArgument('', 'enum', ['e', 'E'], ' '), - ConsoleArgument('', 'service', ['s', 'S'], ' '), - ConsoleArgument('', 'settings', ['st', 'ST'], ' '), - ConsoleArgument('', 'thread', ['t', 't'], ' ') - ])) - configuration.add_console_argument( - ConsoleArgument('', 'help', ['h', 'H'], ' ', is_value_token_optional=True) + configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'add', ['a', 'A'], AddService) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) + configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'build', ['b', 'B'], BuildService) + configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'generate', ['g', 'G'], GenerateService) \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'abc', ['a', 'A'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'class', ['c', 'C'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'enum', ['e', 'E'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'service', ['s', 'S'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'settings', ['st', 'ST'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'thread', ['t', 't'], ' ') + configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'install', ['i', 'I'], InstallService) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) + configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'new', ['n', 'N'], NewService) \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'console', ['c', 'C'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'library', ['l', 'L'], ' ') + configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'publish', ['p', 'P'], PublishService) + configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'remove', ['r', 'R'], RemoveService) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) + configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'start', ['S', 'S'], StartService) + configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'uninstall', ['ui', 'UI'], UninstallService) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) + configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'update', ['u', 'U'], UpdateService) + configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'version', ['v', 'V'], VersionService) + + configuration.for_each_argument( + lambda a: a.add_console_argument(ArgumentTypeEnum.Executable, '--', 'help', ['h', 'H'], HelpService) ) - configuration.add_console_argument( - ConsoleArgument('', 'install', ['i', 'I'], ' ', is_value_token_optional=True, console_arguments= [ - ConsoleArgument('', '--virtual', ['--v', '--V'], ''), - ConsoleArgument('', '--simulate', ['--s', '--S'], ''), - ]) - ) - configuration.add_console_argument(ConsoleArgument('', 'new', ['n', 'N'], '', console_arguments=[ - ConsoleArgument('', 'console', ['c', 'C'], ' '), - ConsoleArgument('', 'library', ['l', 'L'], ' ') - ])) - configuration.add_console_argument(ConsoleArgument('', 'publish', ['p', 'P'], '')) - configuration.add_console_argument(ConsoleArgument('', 'remove', ['r', 'R'], ' ')) - configuration.add_console_argument(ConsoleArgument('', 'start', ['s', 'S'], '')) - configuration.add_console_argument(ConsoleArgument('', 'uninstall', ['ui', 'UI'], ' ')) - configuration.add_console_argument(ConsoleArgument('', 'update', ['u', 'U'], '')) - configuration.add_console_argument(ConsoleArgument('', 'version', ['v', 'V'], '')) + configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'help', ['h', 'H'], HelpService) - configuration.add_console_argument(ConsoleArgument('', '--help', ['-h', '-H'], '')) - - if os.path.isfile(os.path.join(environment.working_directory, 'cpl-workspace.json')): - configuration.add_json_file('cpl-workspace.json', optional=True, output=False) - workspace: Optional[WorkspaceSettings] = configuration.get_configuration(WorkspaceSettings) + workspace: Optional[WorkspaceSettings] = configuration.get_configuration(WorkspaceSettings) + if workspace is not None: for script in workspace.scripts: - configuration.add_console_argument( - ConsoleArgument('', script, [], ' ', is_value_token_optional=True)) - - configuration.parse_console_arguments(error=False) + configuration.create_console_argument(ArgumentTypeEnum.Executable, '', script, [], CustomScriptService) return configuration def configure_services(self, services: ServiceCollectionABC, environment: ApplicationEnvironment) -> ServiceProviderABC: - services.add_singleton(CommandHandler) + # services.add_singleton(CommandHandler) services.add_transient(PublisherABC, PublisherService) services.add_transient(LiveServerService) diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index fd655602..9860b042 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -23,6 +23,7 @@ from collections import namedtuple from .application_abc import ApplicationABC from .application_builder import ApplicationBuilder from .application_builder_abc import ApplicationBuilderABC +from .application_extension_abc import ApplicationExtensionABC from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC diff --git a/src/cpl_core/application/application_builder.py b/src/cpl_core/application/application_builder.py index e2e53a1d..e81f7f04 100644 --- a/src/cpl_core/application/application_builder.py +++ b/src/cpl_core/application/application_builder.py @@ -55,7 +55,7 @@ class ApplicationBuilder(ApplicationBuilderABC): config = self._configuration services = self._services.build_service_provider() config.resolve_runnable_argument_types(services) - config.parse_console_arguments(error=False) + config.parse_console_arguments() for ex in self._app_extensions: extension = ex() diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 07c9bc68..86696a19 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -20,11 +20,17 @@ __version__ = '2022.6.3.dev2' from collections import namedtuple # imports: +from .argument_abc import ArgumentABC +from .argument_builder import ArgumentBuilder +from .argument_executable_abc import ArgumentExecutableABC +from .argument_type_enum import ArgumentTypeEnum from .configuration import Configuration from .configuration_abc import ConfigurationABC from .configuration_model_abc import ConfigurationModelABC from .configuration_variable_name_enum import ConfigurationVariableNameEnum -from .argument_abc import ArgumentABC +from .executable_argument import ExecutableArgument +from .flag_argument import FlagArgument +from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index 0f7bfc75..2047b145 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -147,15 +147,6 @@ class Configuration(ConfigurationABC): self._print_error(__name__, f'Cannot load config file: {file}! -> {e}') return {} - def add_environment_variables(self, prefix: str): - for variable in ConfigurationVariableNameEnum.to_list(): - var_name = f'{prefix}{variable}' - if var_name in [key.upper() for key in os.environ.keys()]: - self._set_variable(variable, os.environ[var_name]) - - def add_console_argument(self, argument: ArgumentABC): - self._argument_types.append(argument) - def _parse_arguments(self, call_stack: list[Callable], arg_list: list[str], args_types: list[ArgumentABC]): for i in range(0, len(arg_list)): arg_str = arg_list[i] @@ -169,7 +160,8 @@ class Configuration(ConfigurationABC): if arg_str.startswith(arg.token) \ and arg_str_without_token == arg.name or arg_str_without_token in arg.aliases: call_stack.append(arg.run) - self._parse_arguments(call_stack, arg_list[i:], arg.console_arguments) + self._parse_arguments(call_stack, arg_list[i + 1:], arg.console_arguments) + break # variables elif isinstance(arg, VariableArgument): @@ -185,24 +177,28 @@ class Configuration(ConfigurationABC): value = arg_list[i + 1] self._set_variable(arg.name, value) self._parse_arguments(call_stack, arg_list[i + 1:], arg.console_arguments) + break + # flags elif isinstance(arg, FlagArgument): if arg_str.startswith(arg.token) \ and arg_str_without_token == arg.name or arg_str_without_token in arg.aliases: self._additional_arguments.append(arg.name) self._parse_arguments(call_stack, arg_list[i + 1:], arg.console_arguments) + break - def parse_console_arguments(self, error: bool = None): - # sets environment variables as possible arguments as: --VAR=VALUE - for arg_name in ConfigurationVariableNameEnum.to_list(): - self.add_console_argument(VariableArgument('--', str(arg_name).upper(), [str(arg_name).lower()], '=')) + # add left over values to args + if arg_str not in self._additional_arguments: + self._additional_arguments.append(arg_str) - arg_list = sys.argv[1:] - call_stack = [] - self._parse_arguments(call_stack, arg_list, self._argument_types) + def add_environment_variables(self, prefix: str): + for variable in ConfigurationVariableNameEnum.to_list(): + var_name = f'{prefix}{variable}' + if var_name in [key.upper() for key in os.environ.keys()]: + self._set_variable(variable, os.environ[var_name]) - for call in call_stack: - call(self._additional_arguments) + def add_console_argument(self, argument: ArgumentABC): + self._argument_types.append(argument) def add_json_file(self, name: str, optional: bool = None, output: bool = True, path: str = None): if os.path.isabs(name): @@ -246,6 +242,10 @@ class Configuration(ConfigurationABC): self._argument_types.append(argument) return argument + def for_each_argument(self, call: Callable): + for arg in self._argument_types: + call(arg) + def get_configuration(self, search_type: Union[str, Type[ConfigurationModelABC]]) -> \ Optional[Union[str, ConfigurationModelABC]]: if type(search_type) is str: @@ -265,6 +265,18 @@ class Configuration(ConfigurationABC): if config_model == search_type: return self._config[config_model] + def parse_console_arguments(self, error: bool = None): + # sets environment variables as possible arguments as: --VAR=VALUE + for arg_name in ConfigurationVariableNameEnum.to_list(): + self.add_console_argument(VariableArgument('--', str(arg_name).upper(), [str(arg_name).lower()], '=')) + + arg_list = sys.argv[1:] + call_stack = [] + self._parse_arguments(call_stack, arg_list, self._argument_types) + + for call in call_stack: + call(self._additional_arguments) + def resolve_runnable_argument_types(self, services: ServiceProviderABC): for arg in self._argument_types: if isinstance(arg, ExecutableArgument): diff --git a/src/cpl_core/configuration/configuration_abc.py b/src/cpl_core/configuration/configuration_abc.py index a2a9c48a..1fa05a13 100644 --- a/src/cpl_core/configuration/configuration_abc.py +++ b/src/cpl_core/configuration/configuration_abc.py @@ -53,17 +53,6 @@ class ConfigurationABC(ABC): """ pass - @abstractmethod - def parse_console_arguments(self, error: bool = None): - r"""Reads the console arguments - - Parameter - --------- - error: :class:`bool` - Defines is invalid argument error will be shown or not - """ - pass - @abstractmethod def add_json_file(self, name: str, optional: bool = None, output: bool = True, path: str = None): r"""Reads and saves settings from given json file @@ -120,6 +109,17 @@ class ConfigurationABC(ABC): """ pass + @abstractmethod + def for_each_argument(self, call: Callable): + r"""Iterates through all arguments and calls the call function + + Parameter + --------- + call: :class:`Callable` + Call for each argument + """ + pass + @abstractmethod def get_configuration(self, search_type: Union[str, Type[ConfigurationModelABC]]) -> Union[ str, ConfigurationModelABC]: @@ -136,6 +136,17 @@ class ConfigurationABC(ABC): """ pass + @abstractmethod + def parse_console_arguments(self, error: bool = None): + r"""Reads the console arguments + + Parameter + --------- + error: :class:`bool` + Defines is invalid argument error will be shown or not + """ + pass + @abstractmethod def resolve_runnable_argument_types(self, services: 'ServiceProviderABC'): r"""Gets all objects for given types of ConsoleArguments diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index d9b831dd..3eb660d7 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -20,6 +20,8 @@ __version__ = '2022.6.3.dev2' from collections import namedtuple # imports: +from .scope import Scope +from .scope_abc import ScopeABC from .service_collection import ServiceCollection from .service_collection_abc import ServiceCollectionABC from .service_descriptor import ServiceDescriptor diff --git a/src/tests/custom/general/src/general/parameter_startup.py b/src/tests/custom/general/src/general/parameter_startup.py index f28791a1..449956f0 100644 --- a/src/tests/custom/general/src/general/parameter_startup.py +++ b/src/tests/custom/general/src/general/parameter_startup.py @@ -28,5 +28,5 @@ class ParameterStartup(StartupExtensionABC): def configure_services(self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC): services \ - .add_singleton(GenerateArgument) \ + .add_transient(GenerateArgument) \ .add_singleton(InstallArgument) -- 2.45.1 From 2fed654c16a1691a34f0353de211d99cc83ab034 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 19 May 2022 18:09:25 +0200 Subject: [PATCH 011/140] Improved argument handling --- src/cpl_cli/cli.py | 103 +----------------- src/cpl_cli/command/add_service.py | 13 ++- src/cpl_cli/command/help_service.py | 32 +++--- src/cpl_cli/command/remove_service.py | 12 +- src/cpl_cli/cpl_cli.json | 4 +- src/cpl_cli/main.py | 2 + src/cpl_cli/startup.py | 56 +--------- src/cpl_cli/startup_argument_extension.py | 97 +++++++++++++++++ .../application/application_builder.py | 1 - src/cpl_core/configuration/configuration.py | 15 +-- 10 files changed, 154 insertions(+), 181 deletions(-) create mode 100644 src/cpl_cli/startup_argument_extension.py diff --git a/src/cpl_cli/cli.py b/src/cpl_cli/cli.py index 3a11e4e7..0f03eac6 100644 --- a/src/cpl_cli/cli.py +++ b/src/cpl_cli/cli.py @@ -1,28 +1,10 @@ -import os import sys -from typing import Optional +import traceback from cpl_core.application.application_abc import ApplicationABC from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.console.console import Console from cpl_core.dependency_injection import ServiceProviderABC -from cpl_cli.command.add_service import AddService -from cpl_cli.command.build_service import BuildService -from cpl_cli.command.custom_script_service import CustomScriptService -from cpl_cli.command.generate_service import GenerateService -from cpl_cli.command.install_service import InstallService -from cpl_cli.command.new_service import NewService -from cpl_cli.command.publish_service import PublishService -from cpl_cli.command.remove_service import RemoveService -from cpl_cli.command.start_service import StartService -from cpl_cli.command.uninstall_service import UninstallService -from cpl_cli.command.update_service import UpdateService -from cpl_cli.command_handler_service import CommandHandler -from cpl_cli.command_model import CommandModel -from cpl_cli.configuration.workspace_settings import WorkspaceSettings -from cpl_cli.error import Error -from cpl_cli.command.help_service import HelpService -from cpl_cli.command.version_service import VersionService class CLI(ApplicationABC): @@ -33,33 +15,10 @@ class CLI(ApplicationABC): """ ApplicationABC.__init__(self, config, services) - # self._command_handler: Optional[CommandHandler] = None self._options: list[str] = [] def configure(self): pass - # self._command_handler: CommandHandler = self._services.get_service(CommandHandler) - # - # self._command_handler.add_command(CommandModel('add', ['a', 'a'], AddService, False, False, False)) - # self._command_handler.add_command(CommandModel('build', ['b', 'B'], BuildService, False, True, True)) - # self._command_handler.add_command(CommandModel('generate', ['g', 'G'], GenerateService, False, True, False)) - # self._command_handler.add_command(CommandModel('help', ['h', 'H'], HelpService, False, False, False)) - # self._command_handler.add_command(CommandModel('install', ['i', 'I'], InstallService, False, True, True)) - # self._command_handler.add_command(CommandModel('new', ['n', 'N'], NewService, False, False, True)) - # self._command_handler.add_command(CommandModel('publish', ['p', 'P'], PublishService, False, True, True)) - # self._command_handler.add_command(CommandModel('remove', ['r', 'R'], RemoveService, True, True, False)) - # self._command_handler.add_command(CommandModel('start', ['s', 'S'], StartService, False, True, True)) - # self._command_handler.add_command(CommandModel('uninstall', ['ui', 'UI'], UninstallService, False, True, True)) - # self._command_handler.add_command(CommandModel('update', ['u', 'U'], UpdateService, False, True, True)) - # self._command_handler.add_command(CommandModel('version', ['v', 'V'], VersionService, False, False, False)) - # - # if os.path.isfile(os.path.join(self._environment.working_directory, 'cpl-workspace.json')): - # workspace: Optional[WorkspaceSettings] = self._configuration.get_configuration(WorkspaceSettings) - # for script in workspace.scripts: - # self._command_handler.add_command(CommandModel(script, [], CustomScriptService, True, True, False)) - # - # self._command_handler.add_command(CommandModel('--help', ['-h', '-H'], HelpService, False, False, False)) - # self._options.append('--help') def main(self): """ @@ -67,62 +26,10 @@ class CLI(ApplicationABC): :return: """ try: - pass - # command = None - # args = [] - # if len(self._configuration.additional_arguments) > 0: - # is_option = False - # for opt in self._options: - # if opt in self._configuration.additional_arguments: - # is_option = True - # command = opt - # args = self._configuration.additional_arguments - # args.remove(opt) - # - # if not is_option: - # command = self._configuration.additional_arguments[0] - # if len(self._configuration.additional_arguments) > 1: - # args = self._configuration.additional_arguments[1:] - # else: - # for cmd in self._command_handler.commands: - # result = self._configuration.get_configuration(cmd.name) - # result_args: list[str] = self._configuration.get_configuration(f'{cmd.name}AdditionalArguments') - # is_option = False - # if result is None: - # continue - # - # for opt in self._options: - # if opt == result: - # is_option = True - # command = opt - # - # elif result_args is not None and opt in result_args: - # is_option = True - # command = opt - # result_args.remove(opt) - # - # if is_option: - # args.append(cmd.name) - # if result_args is not None: - # for arg in result_args: - # args.append(arg) - # - # elif result is not None: - # command = cmd.name - # args.append(result) - # - # for arg in result_args: - # args.append(arg) - # - # else: - # Error.error(f'Unexpected command') - # return - # - # if command is None: - # Error.error(f'Expected command') - # return - # - # self._command_handler.handle(command, args) + self._configuration.parse_console_arguments() except KeyboardInterrupt: Console.write_line() sys.exit() + except Exception as e: + Console.error(str(e), traceback.format_exc()) + sys.exit() diff --git a/src/cpl_cli/command/add_service.py b/src/cpl_cli/command/add_service.py index 4cbc4133..3f127bb4 100644 --- a/src/cpl_cli/command/add_service.py +++ b/src/cpl_cli/command/add_service.py @@ -23,6 +23,7 @@ class AddService(CommandABC): self._config = config self._workspace = workspace + self._is_simulation = False @property def help_message(self) -> str: @@ -35,8 +36,9 @@ class AddService(CommandABC): target-project: Name of the project to be referenced """) - @staticmethod - def _edit_project_file(source: str, project_settings: ProjectSettings, build_settings: BuildSettings): + def _edit_project_file(self, source: str, project_settings: ProjectSettings, build_settings: BuildSettings): + if self._is_simulation: + return with open(source, 'w') as file: file.write(json.dumps({ ProjectSettings.__name__: SettingsHelper.get_project_settings_dict(project_settings), @@ -50,6 +52,11 @@ class AddService(CommandABC): :param args: :return: """ + if 'simulate' in args: + args.remove('simulate') + Console.write_line('Simulating:') + self._is_simulation = True + if len(args) == 0: Console.error('Expected source and target project') return @@ -59,7 +66,7 @@ class AddService(CommandABC): return elif len(args) > 2: - Console.error(f'Unexpected argument: {" ".join(args[2:])}') + Console.error(f'Unexpected argument(s): {", ".join(args[2:])}') return # file names diff --git a/src/cpl_cli/command/help_service.py b/src/cpl_cli/command/help_service.py index 0d857ed8..4088ab54 100644 --- a/src/cpl_cli/command/help_service.py +++ b/src/cpl_cli/command/help_service.py @@ -4,20 +4,18 @@ from typing import Optional from cpl_core.console.console import Console from cpl_core.console.foreground_color_enum import ForegroundColorEnum from cpl_core.dependency_injection.service_provider_abc import ServiceProviderABC -from cpl_cli.command_handler_service import CommandHandler from cpl_cli.command_abc import CommandABC class HelpService(CommandABC): - def __init__(self, services: ServiceProviderABC, cmd_handler: CommandHandler): + def __init__(self, services: ServiceProviderABC): """ Service for CLI command help """ CommandABC.__init__(self) self._services = services - self._commands = cmd_handler.commands @property def help_message(self) -> str: @@ -35,20 +33,20 @@ class HelpService(CommandABC): :param args: :return: """ - if len(args) > 0: - command_name = args[0] - command: Optional[CommandABC] = None - for cmd in self._commands: - if cmd.name == command_name or command_name in cmd.aliases: - command = self._services.get_service(cmd.command) - - if command is None: - Console.error(f'Invalid argument: {command_name}') - return - - Console.write_line(command.help_message) - - return + # if len(args) > 0: + # command_name = args[0] + # command: Optional[CommandABC] = None + # for cmd in self._commands: + # if cmd.name == command_name or command_name in cmd.aliases: + # command = self._services.get_service(cmd.command) + # + # if command is None: + # Console.error(f'Invalid argument: {command_name}') + # return + # + # Console.write_line(command.help_message) + # + # return Console.write_line('Available Commands:') commands = [ diff --git a/src/cpl_cli/command/remove_service.py b/src/cpl_cli/command/remove_service.py index b148e7b4..b40a23df 100644 --- a/src/cpl_cli/command/remove_service.py +++ b/src/cpl_cli/command/remove_service.py @@ -25,6 +25,7 @@ class RemoveService(CommandABC): self._env = env self._workspace: WorkspaceSettings = self._config.get_configuration(WorkspaceSettings) + self._is_simulation = False @property def help_message(self) -> str: @@ -36,8 +37,10 @@ class RemoveService(CommandABC): project The name of the project to delete """) - @staticmethod - def _create_file(file_name: str, content: dict): + def _create_file(self, file_name: str, content: dict): + if self._is_simulation: + return + if not os.path.isabs(file_name): file_name = os.path.abspath(file_name) @@ -70,6 +73,11 @@ class RemoveService(CommandABC): :param args: :return: """ + if 'simulate' in args: + args.remove('simulate') + Console.write_line('Simulating:') + self._is_simulation = True + project_name = args[0] if project_name not in self._workspace.projects: Console.error(f'Project {project_name} not found in workspace.') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 0f5f58c7..e895b319 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -42,8 +42,6 @@ "*.json" ] }, - "ProjectReferences": [ - "../cpl_core/cpl_core.json" - ] + "ProjectReferences": [] } } \ No newline at end of file diff --git a/src/cpl_cli/main.py b/src/cpl_cli/main.py index b96f89b6..192a18ae 100644 --- a/src/cpl_cli/main.py +++ b/src/cpl_cli/main.py @@ -1,3 +1,4 @@ +from cpl_cli.startup_argument_extension import StartupArgumentExtension from cpl_core.application.application_builder import ApplicationBuilder from cpl_cli.cli import CLI from cpl_cli.startup import Startup @@ -6,6 +7,7 @@ from cpl_cli.startup import Startup def main(): app_builder = ApplicationBuilder(CLI) app_builder.use_startup(Startup) + app_builder.use_extension(StartupArgumentExtension) app_builder.build().run() diff --git a/src/cpl_cli/startup.py b/src/cpl_cli/startup.py index de9692a5..cfae7fc6 100644 --- a/src/cpl_cli/startup.py +++ b/src/cpl_cli/startup.py @@ -1,16 +1,10 @@ import os -from typing import Optional -from cpl_core.application.startup_abc import StartupABC -from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum -from cpl_core.configuration.configuration_abc import ConfigurationABC -from cpl_core.console import Console -from cpl_core.dependency_injection.service_collection_abc import ServiceCollectionABC -from cpl_core.dependency_injection.service_provider_abc import ServiceProviderABC from cpl_cli.command.add_service import AddService from cpl_cli.command.build_service import BuildService from cpl_cli.command.custom_script_service import CustomScriptService from cpl_cli.command.generate_service import GenerateService +from cpl_cli.command.help_service import HelpService from cpl_cli.command.install_service import InstallService from cpl_cli.command.new_service import NewService from cpl_cli.command.publish_service import PublishService @@ -18,14 +12,15 @@ from cpl_cli.command.remove_service import RemoveService from cpl_cli.command.start_service import StartService from cpl_cli.command.uninstall_service import UninstallService from cpl_cli.command.update_service import UpdateService -from cpl_cli.command_handler_service import CommandHandler -from cpl_cli.command.help_service import HelpService from cpl_cli.command.version_service import VersionService -from cpl_cli.configuration.workspace_settings import WorkspaceSettings from cpl_cli.error import Error from cpl_cli.live_server.live_server_service import LiveServerService -from cpl_cli.publish.publisher_service import PublisherService from cpl_cli.publish.publisher_abc import PublisherABC +from cpl_cli.publish.publisher_service import PublisherService +from cpl_core.application.startup_abc import StartupABC +from cpl_core.configuration.configuration_abc import ConfigurationABC +from cpl_core.dependency_injection.service_collection_abc import ServiceCollectionABC +from cpl_core.dependency_injection.service_provider_abc import ServiceProviderABC from cpl_core.environment import ApplicationEnvironment @@ -41,49 +36,10 @@ class Startup(StartupABC): configuration.add_environment_variables('PYTHON_') configuration.add_environment_variables('CPL_') configuration.add_json_file('appsettings.json', path=environment.runtime_directory, optional=False, output=False) - configuration.add_json_file('cpl-workspace.json', path=environment.working_directory, optional=True, output=False) - - configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'add', ['a', 'A'], AddService) \ - .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) - configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'build', ['b', 'B'], BuildService) - configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'generate', ['g', 'G'], GenerateService) \ - .add_console_argument(ArgumentTypeEnum.Variable, '', 'abc', ['a', 'A'], ' ') \ - .add_console_argument(ArgumentTypeEnum.Variable, '', 'class', ['c', 'C'], ' ') \ - .add_console_argument(ArgumentTypeEnum.Variable, '', 'enum', ['e', 'E'], ' ') \ - .add_console_argument(ArgumentTypeEnum.Variable, '', 'service', ['s', 'S'], ' ') \ - .add_console_argument(ArgumentTypeEnum.Variable, '', 'settings', ['st', 'ST'], ' ') \ - .add_console_argument(ArgumentTypeEnum.Variable, '', 'thread', ['t', 't'], ' ') - configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'install', ['i', 'I'], InstallService) \ - .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) \ - .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) - configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'new', ['n', 'N'], NewService) \ - .add_console_argument(ArgumentTypeEnum.Variable, '', 'console', ['c', 'C'], ' ') \ - .add_console_argument(ArgumentTypeEnum.Variable, '', 'library', ['l', 'L'], ' ') - configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'publish', ['p', 'P'], PublishService) - configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'remove', ['r', 'R'], RemoveService) \ - .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) - configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'start', ['S', 'S'], StartService) - configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'uninstall', ['ui', 'UI'], UninstallService) \ - .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) \ - .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) - configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'update', ['u', 'U'], UpdateService) - configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'version', ['v', 'V'], VersionService) - - configuration.for_each_argument( - lambda a: a.add_console_argument(ArgumentTypeEnum.Executable, '--', 'help', ['h', 'H'], HelpService) - ) - configuration.create_console_argument(ArgumentTypeEnum.Executable, '', 'help', ['h', 'H'], HelpService) - - workspace: Optional[WorkspaceSettings] = configuration.get_configuration(WorkspaceSettings) - if workspace is not None: - for script in workspace.scripts: - configuration.create_console_argument(ArgumentTypeEnum.Executable, '', script, [], CustomScriptService) return configuration def configure_services(self, services: ServiceCollectionABC, environment: ApplicationEnvironment) -> ServiceProviderABC: - # services.add_singleton(CommandHandler) - services.add_transient(PublisherABC, PublisherService) services.add_transient(LiveServerService) diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py new file mode 100644 index 00000000..6e2db944 --- /dev/null +++ b/src/cpl_cli/startup_argument_extension.py @@ -0,0 +1,97 @@ +import os +from typing import Optional + +from cpl_cli.command.add_service import AddService +from cpl_cli.command.build_service import BuildService +from cpl_cli.command.custom_script_service import CustomScriptService +from cpl_cli.command.generate_service import GenerateService +from cpl_cli.command.help_service import HelpService +from cpl_cli.command.install_service import InstallService +from cpl_cli.command.new_service import NewService +from cpl_cli.command.publish_service import PublishService +from cpl_cli.command.remove_service import RemoveService +from cpl_cli.command.start_service import StartService +from cpl_cli.command.uninstall_service import UninstallService +from cpl_cli.command.update_service import UpdateService +from cpl_cli.command.version_service import VersionService +from cpl_cli.configuration.workspace_settings import WorkspaceSettings +from cpl_core.application import StartupExtensionABC +from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum +from cpl_core.configuration.configuration_abc import ConfigurationABC +from cpl_core.console import Console +from cpl_core.dependency_injection.service_collection_abc import ServiceCollectionABC +from cpl_core.environment import ApplicationEnvironmentABC +from cpl_core.utils import String + + +class StartupArgumentExtension(StartupExtensionABC): + + def __init__(self): + pass + + @staticmethod + def _search_project_json(env: ApplicationEnvironmentABC) -> Optional[str]: + project_name = None + name = os.path.basename(env.working_directory) + for r, d, f in os.walk(env.working_directory): + for file in f: + if file.endswith('.json'): + f_name = file.split('.json')[0] + if f_name == name or \ + String.convert_to_camel_case(f_name).lower() == String.convert_to_camel_case( + name).lower(): + project_name = f_name + break + + return project_name + + def _read_cpl_environment(self, config: ConfigurationABC, env: ApplicationEnvironmentABC): + workspace: Optional[WorkspaceSettings] = config.get_configuration(WorkspaceSettings) + if workspace is not None: + for script in workspace.scripts: + config.create_console_argument(ArgumentTypeEnum.Executable, '', script, [], CustomScriptService) + + project = workspace.projects[workspace.default_project] + else: + project = f'{self._search_project_json(env)}.json' + + config.add_json_file(project, optional=True, output=False) + + def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC): + config.add_json_file('cpl-workspace.json', path=env.working_directory, optional=True, output=False) + + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'add', ['a', 'A'], AddService) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'build', ['b', 'B'], BuildService) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'generate', ['g', 'G'], GenerateService) \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'abc', ['a', 'A'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'class', ['c', 'C'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'enum', ['e', 'E'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'service', ['s', 'S'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'settings', ['st', 'ST'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'thread', ['t', 't'], ' ') + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'install', ['i', 'I'], InstallService) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'new', ['n', 'N'], NewService) \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'console', ['c', 'C'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'library', ['l', 'L'], ' ') + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'publish', ['p', 'P'], PublishService) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'remove', ['r', 'R'], RemoveService) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'start', ['S', 'S'], StartService) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'uninstall', ['ui', 'UI'], UninstallService) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'update', ['u', 'U'], UpdateService) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'version', ['v', 'V'], VersionService) + + config.for_each_argument( + lambda a: a.add_console_argument(ArgumentTypeEnum.Executable, '--', 'help', ['h', 'H'], HelpService) + ) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'help', ['h', 'H'], HelpService) + + self._read_cpl_environment(config, env) + + def configure_services(self, service: ServiceCollectionABC, env: ApplicationEnvironmentABC): + pass diff --git a/src/cpl_core/application/application_builder.py b/src/cpl_core/application/application_builder.py index e81f7f04..c879ae69 100644 --- a/src/cpl_core/application/application_builder.py +++ b/src/cpl_core/application/application_builder.py @@ -55,7 +55,6 @@ class ApplicationBuilder(ApplicationBuilderABC): config = self._configuration services = self._services.build_service_provider() config.resolve_runnable_argument_types(services) - config.parse_console_arguments() for ex in self._app_extensions: extension = ex() diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index 2047b145..fc33dd3f 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -150,7 +150,8 @@ class Configuration(ConfigurationABC): def _parse_arguments(self, call_stack: list[Callable], arg_list: list[str], args_types: list[ArgumentABC]): for i in range(0, len(arg_list)): arg_str = arg_list[i] - for arg in args_types: + for n in range(0, len(args_types)): + arg = args_types[n] arg_str_without_token = arg_str if arg.token != "" and arg.token in arg_str: arg_str_without_token = arg_str.split(arg.token)[1] @@ -160,8 +161,8 @@ class Configuration(ConfigurationABC): if arg_str.startswith(arg.token) \ and arg_str_without_token == arg.name or arg_str_without_token in arg.aliases: call_stack.append(arg.run) + self._handled_args.append(arg_str) self._parse_arguments(call_stack, arg_list[i + 1:], arg.console_arguments) - break # variables elif isinstance(arg, VariableArgument): @@ -176,20 +177,20 @@ class Configuration(ConfigurationABC): else: value = arg_list[i + 1] self._set_variable(arg.name, value) + self._handled_args.append(arg_str) self._parse_arguments(call_stack, arg_list[i + 1:], arg.console_arguments) - break # flags elif isinstance(arg, FlagArgument): if arg_str.startswith(arg.token) \ and arg_str_without_token == arg.name or arg_str_without_token in arg.aliases: self._additional_arguments.append(arg.name) + self._handled_args.append(arg_str) self._parse_arguments(call_stack, arg_list[i + 1:], arg.console_arguments) - break - # add left over values to args - if arg_str not in self._additional_arguments: - self._additional_arguments.append(arg_str) + # add left over values to args + if arg_str not in self._additional_arguments and arg_str not in self._handled_args: + self._additional_arguments.append(arg_str) def add_environment_variables(self, prefix: str): for variable in ConfigurationVariableNameEnum.to_list(): -- 2.45.1 From 4fe073580aabe8bede77daf82c43b2e2a44bd6f2 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 19 May 2022 18:12:47 +0200 Subject: [PATCH 012/140] Migrated first commands to new argument parser --- src/cpl_cli/command/add_service.py | 2 +- src/cpl_cli/command/install_service.py | 14 +++++++------- src/cpl_cli/command/remove_service.py | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/cpl_cli/command/add_service.py b/src/cpl_cli/command/add_service.py index 3f127bb4..f2dc15f3 100644 --- a/src/cpl_cli/command/add_service.py +++ b/src/cpl_cli/command/add_service.py @@ -54,7 +54,7 @@ class AddService(CommandABC): """ if 'simulate' in args: args.remove('simulate') - Console.write_line('Simulating:') + Console.write_line('Running in simulation mode:') self._is_simulation = True if len(args) == 0: diff --git a/src/cpl_cli/command/install_service.py b/src/cpl_cli/command/install_service.py index b1b52725..ac8184b4 100644 --- a/src/cpl_cli/command/install_service.py +++ b/src/cpl_cli/command/install_service.py @@ -39,7 +39,7 @@ class InstallService(CommandABC): self._project_settings = project_settings self._cli_settings = cli_settings - self._is_simulating = False + self._is_simulation = False self._is_virtual = False self._project_file = f'{self._config.get_configuration("ProjectName")}.json' @@ -172,7 +172,7 @@ class InstallService(CommandABC): self._project_settings.dependencies.append(new_name) - if not self._is_simulating: + if not self._is_simulation: config = { ProjectSettings.__name__: SettingsHelper.get_project_settings_dict(self._project_settings), BuildSettings.__name__: SettingsHelper.get_build_settings_dict(self._build_settings) @@ -190,14 +190,14 @@ class InstallService(CommandABC): :param args: :return: """ - if '--virtual' in args: + if 'virtual' in args: self._is_virtual = True - args.remove('--virtual') + args.remove('virtual') Console.write_line('Running in virtual mode:') - if '--simulate' in args: - self._is_virtual = True - args.remove('--simulate') + if 'simulate' in args: + self._is_simulation = True + args.remove('simulate') Console.write_line('Running in simulation mode:') if len(args) == 0: diff --git a/src/cpl_cli/command/remove_service.py b/src/cpl_cli/command/remove_service.py index b40a23df..6dc20a25 100644 --- a/src/cpl_cli/command/remove_service.py +++ b/src/cpl_cli/command/remove_service.py @@ -75,7 +75,7 @@ class RemoveService(CommandABC): """ if 'simulate' in args: args.remove('simulate') - Console.write_line('Simulating:') + Console.write_line('Running in simulation mode:') self._is_simulation = True project_name = args[0] -- 2.45.1 From 0f5b1b7586bff0325d333dfff2ed2f5886140b7f Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 19 May 2022 19:37:32 +0200 Subject: [PATCH 013/140] Improved argument handling --- src/cpl_cli/__init__.py | 2 - src/cpl_cli/cli.py | 2 +- src/cpl_cli/command/update_service.py | 9 ++ src/cpl_cli/command_handler_service.py | 137 ------------------ src/cpl_cli/command_model.py | 37 ----- src/cpl_cli/startup_argument_extension.py | 4 +- .../application/application_builder.py | 3 +- src/cpl_core/configuration/configuration.py | 31 ++-- .../configuration/configuration_abc.py | 17 +-- 9 files changed, 34 insertions(+), 208 deletions(-) delete mode 100644 src/cpl_cli/command_handler_service.py delete mode 100644 src/cpl_cli/command_model.py diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 108f6a91..6927f71e 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -22,8 +22,6 @@ from collections import namedtuple # imports: from .cli import CLI from .command_abc import CommandABC -from .command_handler_service import CommandHandler -from .command_model import CommandModel from .error import Error from .main import main from .startup import Startup diff --git a/src/cpl_cli/cli.py b/src/cpl_cli/cli.py index 0f03eac6..8a0f8f60 100644 --- a/src/cpl_cli/cli.py +++ b/src/cpl_cli/cli.py @@ -26,7 +26,7 @@ class CLI(ApplicationABC): :return: """ try: - self._configuration.parse_console_arguments() + self._configuration.parse_console_arguments(self._services) except KeyboardInterrupt: Console.write_line() sys.exit() diff --git a/src/cpl_cli/command/update_service.py b/src/cpl_cli/command/update_service.py index 412956e5..a454312b 100644 --- a/src/cpl_cli/command/update_service.py +++ b/src/cpl_cli/command/update_service.py @@ -38,6 +38,7 @@ class UpdateService(CommandABC): self._build_settings = build_settings self._project_settings = project_settings self._cli_settings = cli_settings + self._is_simulation = False @property def help_message(self) -> str: @@ -132,6 +133,9 @@ class UpdateService(CommandABC): :param new_package: :return: """ + if self._is_simulation: + return + if old_package in self._project_settings.dependencies: index = self._project_settings.dependencies.index(old_package) if '/' in new_package: @@ -158,6 +162,11 @@ class UpdateService(CommandABC): :param args: :return: """ + if 'simulate' in args: + args.remove('simulate') + Console.write_line('Running in simulation mode:') + self._is_simulation = True + Pip.set_executable(self._project_settings.python_executable) self._check_project_dependencies() self._check_outdated() diff --git a/src/cpl_cli/command_handler_service.py b/src/cpl_cli/command_handler_service.py deleted file mode 100644 index e1d86879..00000000 --- a/src/cpl_cli/command_handler_service.py +++ /dev/null @@ -1,137 +0,0 @@ -import os -from abc import ABC -from typing import Optional - -from cpl_core.configuration.configuration_abc import ConfigurationABC -from cpl_core.console.console import Console -from cpl_core.dependency_injection.service_provider_abc import ServiceProviderABC -from cpl_core.utils.string import String -from cpl_cli.command.custom_script_service import CustomScriptService -from cpl_cli.configuration.workspace_settings import WorkspaceSettings -from cpl_cli.error import Error -from cpl_cli.command_model import CommandModel - - -class CommandHandler(ABC): - - def __init__(self, config: ConfigurationABC, services: ServiceProviderABC): - """ - Service to handle incoming commands and args - :param config: - :param services: - """ - ABC.__init__(self) - - self._config = config - self._env = self._config.environment - self._services = services - - self._commands: list[CommandModel] = [] - - @property - def commands(self) -> list[CommandModel]: - return self._commands - - @staticmethod - def _project_not_found(): - Error.error( - 'The command requires to be run in an CPL project, but a project could not be found.' - ) - - def add_command(self, cmd: CommandModel): - self._commands.append(cmd) - - def remove_command(self, cmd: CommandModel): - self._commands.remove(cmd) - - def handle(self, cmd: str, args: list[str]): - """ - Handles incoming commands and args - :param cmd: - :param args: - :return: - """ - for command in self._commands: - if cmd == command.name or cmd in command.aliases: - error = None - project_name: Optional[str] = None - workspace: Optional[WorkspaceSettings] = None - - if os.path.isfile(os.path.join(self._env.working_directory, 'cpl-workspace.json')): - workspace = self._config.get_configuration(WorkspaceSettings) - - if command.is_project_needed: - name = os.path.basename(self._env.working_directory) - for r, d, f in os.walk(self._env.working_directory): - for file in f: - if file.endswith('.json'): - f_name = file.split('.json')[0] - if f_name == name or \ - String.convert_to_camel_case(f_name).lower() == String.convert_to_camel_case( - name).lower(): - project_name = f_name - break - - if not command.is_workspace_needed and project_name is None and workspace is None: - self._project_not_found() - return - - elif command.is_workspace_needed or project_name is None: - if workspace is None: - Error.error( - 'The command requires to be run in an CPL workspace or project, ' - 'but a workspace or project could not be found.' - ) - return - - if project_name is None: - project_name = workspace.default_project - - self._config.add_configuration('ProjectName', project_name) - project_json = f'{project_name}.json' - - if workspace is not None: - if project_name not in workspace.projects: - Error.error( - f'Project {project_name} not found.' - ) - return - project_json = workspace.projects[project_name] - - if not os.path.isfile(os.path.join(self._env.working_directory, project_json)): - self._project_not_found() - return - - project_json = os.path.join(self._env.working_directory, project_json) - - if command.change_cwd: - self._env.set_working_directory( - os.path.join(self._env.working_directory, os.path.dirname(project_json)) - ) - - self._config.add_json_file(project_json, optional=True, output=False) - - # pre scripts - Console.write('\n') - self._handle_pre_or_post_scripts(True, workspace, command) - self._services.get_service(command.command).run(args) - # post scripts - Console.write('\n\n') - self._handle_pre_or_post_scripts(False, workspace, command) - Console.write('\n') - - def _handle_pre_or_post_scripts(self, pre: bool, workspace: WorkspaceSettings, command: CommandModel): - script_type = 'pre-' if pre else 'post-' - if workspace is not None and len(workspace.scripts) > 0: - for script in workspace.scripts: - if script_type in script and script.split(script_type)[1] == command.name: - script_name = script - script_cmd = workspace.scripts[script] - if script_cmd in workspace.scripts: - script_name = workspace.scripts[script] - - css: CustomScriptService = self._services.get_service(CustomScriptService) - if css is None: - continue - - css.run([script_name]) diff --git a/src/cpl_cli/command_model.py b/src/cpl_cli/command_model.py deleted file mode 100644 index fd9542d4..00000000 --- a/src/cpl_cli/command_model.py +++ /dev/null @@ -1,37 +0,0 @@ -from cpl_cli.command_abc import CommandABC - - -class CommandModel: - - def __init__(self, name: str, aliases: list[str], command: CommandABC, is_workspace_needed: bool, - is_project_needed: bool, change_cwd: bool): - self._name = name - self._aliases = aliases - self._command = command - self._is_workspace_needed = is_workspace_needed - self._is_project_needed = is_project_needed - self._change_cwd = change_cwd - - @property - def name(self) -> str: - return self._name - - @property - def aliases(self) -> list[str]: - return self._aliases - - @property - def command(self) -> CommandABC: - return self._command - - @property - def is_workspace_needed(self) -> bool: - return self._is_workspace_needed - - @property - def is_project_needed(self) -> bool: - return self._is_project_needed - - @property - def change_cwd(self) -> bool: - return self._change_cwd diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index 6e2db944..58ac8358 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -18,7 +18,6 @@ from cpl_cli.configuration.workspace_settings import WorkspaceSettings from cpl_core.application import StartupExtensionABC from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum from cpl_core.configuration.configuration_abc import ConfigurationABC -from cpl_core.console import Console from cpl_core.dependency_injection.service_collection_abc import ServiceCollectionABC from cpl_core.environment import ApplicationEnvironmentABC from cpl_core.utils import String @@ -83,7 +82,8 @@ class StartupArgumentExtension(StartupExtensionABC): config.create_console_argument(ArgumentTypeEnum.Executable, '', 'uninstall', ['ui', 'UI'], UninstallService) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'update', ['u', 'U'], UpdateService) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'update', ['u', 'U'], UpdateService) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'version', ['v', 'V'], VersionService) config.for_each_argument( diff --git a/src/cpl_core/application/application_builder.py b/src/cpl_core/application/application_builder.py index c879ae69..23f8e956 100644 --- a/src/cpl_core/application/application_builder.py +++ b/src/cpl_core/application/application_builder.py @@ -10,7 +10,7 @@ from cpl_core.dependency_injection.service_collection import ServiceCollection class ApplicationBuilder(ApplicationBuilderABC): - r"""This is class is used to build a object of :class:`cpl_core.application.application_abc.ApplicationABC` + r"""This is class is used to build an object of :class:`cpl_core.application.application_abc.ApplicationABC` Parameter --------- @@ -54,7 +54,6 @@ class ApplicationBuilder(ApplicationBuilderABC): config = self._configuration services = self._services.build_service_provider() - config.resolve_runnable_argument_types(services) for ex in self._app_extensions: extension = ex() diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index fc33dd3f..01a0d804 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -15,7 +15,7 @@ from cpl_core.configuration.flag_argument import FlagArgument from cpl_core.configuration.variable_argument import VariableArgument from cpl_core.console.console import Console from cpl_core.console.foreground_color_enum import ForegroundColorEnum -from cpl_core.dependency_injection import ServiceProviderABC +from cpl_core.dependency_injection.service_provider_abc import ServiceProviderABC from cpl_core.environment.application_environment import ApplicationEnvironment from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC from cpl_core.environment.environment_name_enum import EnvironmentNameEnum @@ -53,6 +53,10 @@ class Configuration(ConfigurationABC): def argument_error_function(self, argument_error_function: Callable): self._argument_error_function = argument_error_function + @property + def arguments(self) -> list[ArgumentABC]: + return self._argument_types + @staticmethod def _print_info(name: str, message: str): r"""Prints an info message @@ -147,7 +151,7 @@ class Configuration(ConfigurationABC): self._print_error(__name__, f'Cannot load config file: {file}! -> {e}') return {} - def _parse_arguments(self, call_stack: list[Callable], arg_list: list[str], args_types: list[ArgumentABC]): + def _parse_arguments(self, executables: list[ArgumentABC], arg_list: list[str], args_types: list[ArgumentABC]): for i in range(0, len(arg_list)): arg_str = arg_list[i] for n in range(0, len(args_types)): @@ -160,9 +164,9 @@ class Configuration(ConfigurationABC): if isinstance(arg, ExecutableArgument): if arg_str.startswith(arg.token) \ and arg_str_without_token == arg.name or arg_str_without_token in arg.aliases: - call_stack.append(arg.run) + executables.append(arg) self._handled_args.append(arg_str) - self._parse_arguments(call_stack, arg_list[i + 1:], arg.console_arguments) + self._parse_arguments(executables, arg_list[i + 1:], arg.console_arguments) # variables elif isinstance(arg, VariableArgument): @@ -178,7 +182,7 @@ class Configuration(ConfigurationABC): value = arg_list[i + 1] self._set_variable(arg.name, value) self._handled_args.append(arg_str) - self._parse_arguments(call_stack, arg_list[i + 1:], arg.console_arguments) + self._parse_arguments(executables, arg_list[i + 1:], arg.console_arguments) # flags elif isinstance(arg, FlagArgument): @@ -186,7 +190,7 @@ class Configuration(ConfigurationABC): and arg_str_without_token == arg.name or arg_str_without_token in arg.aliases: self._additional_arguments.append(arg.name) self._handled_args.append(arg_str) - self._parse_arguments(call_stack, arg_list[i + 1:], arg.console_arguments) + self._parse_arguments(executables, arg_list[i + 1:], arg.console_arguments) # add left over values to args if arg_str not in self._additional_arguments and arg_str not in self._handled_args: @@ -266,19 +270,16 @@ class Configuration(ConfigurationABC): if config_model == search_type: return self._config[config_model] - def parse_console_arguments(self, error: bool = None): + def parse_console_arguments(self, services: ServiceProviderABC, error: bool = None): # sets environment variables as possible arguments as: --VAR=VALUE for arg_name in ConfigurationVariableNameEnum.to_list(): self.add_console_argument(VariableArgument('--', str(arg_name).upper(), [str(arg_name).lower()], '=')) arg_list = sys.argv[1:] - call_stack = [] - self._parse_arguments(call_stack, arg_list, self._argument_types) + executables: list[ExecutableArgument] = [] + self._parse_arguments(executables, arg_list, self._argument_types) - for call in call_stack: - call(self._additional_arguments) + for exe in executables: + service: ExecutableArgument = services.get_service(exe.executable_type) + service.run(self._additional_arguments) - def resolve_runnable_argument_types(self, services: ServiceProviderABC): - for arg in self._argument_types: - if isinstance(arg, ExecutableArgument): - arg.set_executable(services.get_service(arg.executable_type)) diff --git a/src/cpl_core/configuration/configuration_abc.py b/src/cpl_core/configuration/configuration_abc.py index 1fa05a13..733e86ce 100644 --- a/src/cpl_core/configuration/configuration_abc.py +++ b/src/cpl_core/configuration/configuration_abc.py @@ -31,6 +31,10 @@ class ConfigurationABC(ABC): @abstractmethod def argument_error_function(self, argument_error_function: Callable): pass + @property + @abstractmethod + def arguments(self) -> list[ArgumentABC]: pass + @abstractmethod def add_environment_variables(self, prefix: str): r"""Reads the environment variables @@ -137,7 +141,7 @@ class ConfigurationABC(ABC): pass @abstractmethod - def parse_console_arguments(self, error: bool = None): + def parse_console_arguments(self, services: 'ServiceProviderABC', error: bool = None): r"""Reads the console arguments Parameter @@ -146,14 +150,3 @@ class ConfigurationABC(ABC): Defines is invalid argument error will be shown or not """ pass - - @abstractmethod - def resolve_runnable_argument_types(self, services: 'ServiceProviderABC'): - r"""Gets all objects for given types of ConsoleArguments - - Parameter - --------- - services: :class:`cpl_core.dependency_injection.service_provider_abc.ServiceProviderABC` - Provides services - """ - pass -- 2.45.1 From 44182eec865ea5b2bf1937081e3b37601b2563af Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 19 May 2022 19:41:02 +0200 Subject: [PATCH 014/140] Fixed value handling for variable arguments --- src/cpl_core/configuration/configuration.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index 01a0d804..c5b7e18d 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -182,6 +182,7 @@ class Configuration(ConfigurationABC): value = arg_list[i + 1] self._set_variable(arg.name, value) self._handled_args.append(arg_str) + self._handled_args.append(value) self._parse_arguments(executables, arg_list[i + 1:], arg.console_arguments) # flags -- 2.45.1 From e7cf545502fdddf204f8586f2216b89e1d7dd86f Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 19 May 2022 19:52:36 +0200 Subject: [PATCH 015/140] Migrated NewService to new argument parsing --- src/cpl_cli/command/new_service.py | 30 +++++++++---------- src/cpl_core/__init__.py | 4 +-- src/cpl_core/application/__init__.py | 4 +-- src/cpl_core/configuration/__init__.py | 4 +-- src/cpl_core/console/__init__.py | 4 +-- src/cpl_core/database/__init__.py | 4 +-- src/cpl_core/database/connection/__init__.py | 4 +-- src/cpl_core/database/context/__init__.py | 4 +-- src/cpl_core/dependency_injection/__init__.py | 4 +-- src/cpl_core/environment/__init__.py | 4 +-- src/cpl_core/logging/__init__.py | 4 +-- src/cpl_core/mailing/__init__.py | 4 +-- src/cpl_core/time/__init__.py | 4 +-- src/cpl_core/utils/__init__.py | 4 +-- 14 files changed, 40 insertions(+), 42 deletions(-) diff --git a/src/cpl_cli/command/new_service.py b/src/cpl_cli/command/new_service.py index e23b893d..da23c198 100644 --- a/src/cpl_cli/command/new_service.py +++ b/src/cpl_cli/command/new_service.py @@ -42,7 +42,8 @@ class NewService(CommandABC): self._build_dict = {} self._project_json = {} - self._command: str = '' + self._name: str = '' + self._schematic: ProjectTypeEnum = ProjectTypeEnum.console self._use_application_api: bool = False self._use_startup: bool = False self._use_service_providing: bool = False @@ -111,11 +112,11 @@ class NewService(CommandABC): def _create_build_settings(self): main = f'{String.convert_to_snake_case(self._project.name)}.main' - if self._command == ProjectTypeEnum.library.value: + if self._schematic == ProjectTypeEnum.library.value: main = f'{String.convert_to_snake_case(self._project.name)}.main' self._build_dict = { - BuildSettingsNameEnum.project_type.value: self._command, + BuildSettingsNameEnum.project_type.value: self._schematic, BuildSettingsNameEnum.source_path.value: '', BuildSettingsNameEnum.output_path.value: '../../dist', BuildSettingsNameEnum.main.value: main, @@ -191,9 +192,7 @@ class NewService(CommandABC): :param args: :return: """ - name = self._config.get_configuration(self._command) - - self._create_project_settings(name) + self._create_project_settings(self._name) self._create_build_settings() self._create_project_json() path = self._get_project_path() @@ -221,9 +220,7 @@ class NewService(CommandABC): :param args: :return: """ - name = self._config.get_configuration(self._command) - - self._create_project_settings(name) + self._create_project_settings(self._name) self._create_build_settings() self._create_project_json() path = self._get_project_path() @@ -251,15 +248,16 @@ class NewService(CommandABC): :param args: :return: """ - if len(args) == 0: - self._help('Usage: cpl new [options]') - return - - self._command = str(args[0]).lower() - if self._command == ProjectTypeEnum.console.value: + console = self._config.get_configuration(ProjectTypeEnum.console.value) + library = self._config.get_configuration(ProjectTypeEnum.library.value) + if console is not None and library is None: + self._name = console + self._schematic = ProjectTypeEnum.console.value self._console(args) - elif self._command == ProjectTypeEnum.library.value: + elif console is None and library is not None: + self._name = library + self._schematic = ProjectTypeEnum.library.value self._library(args) else: diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index 0c5f97cc..50deb6ff 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 9860b042..e263d27f 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev1' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 86696a19..de674a7f 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev1' from collections import namedtuple @@ -33,4 +33,4 @@ from .flag_argument import FlagArgument from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index 6d11770b..b35a74b9 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index a161bac8..d7408ce8 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 1e918064..7de25967 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index c9d40b13..70eb0a46 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 3eb660d7..28b50915 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev1' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 890cd7e7..9a7e532a 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 481f3abd..a4bc52d7 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 06162391..54bf1c71 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index 1bee00e0..c6587aa3 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index f17cb23f..2c38bb71 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') -- 2.45.1 From 6c8e9ccd891b1b12a296026c2d9d756ff7f29cd3 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 19 May 2022 20:04:29 +0200 Subject: [PATCH 016/140] Migrated StartService to new argument parsing --- src/cpl_cli/live_server/live_server_thread.py | 1 + src/cpl_cli/startup_argument_extension.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cpl_cli/live_server/live_server_thread.py b/src/cpl_cli/live_server/live_server_thread.py index ed91165d..308b7f7c 100644 --- a/src/cpl_cli/live_server/live_server_thread.py +++ b/src/cpl_cli/live_server/live_server_thread.py @@ -66,6 +66,7 @@ class LiveServerThread(threading.Thread): main = self._build_settings.main.split('.')[length] self._main = os.path.join(self._path, f'{main}.py') + Console.write_line(self._main) if not os.path.isfile(self._main): Console.error('Entry point main.py not found') return diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index 58ac8358..731861ef 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -78,7 +78,7 @@ class StartupArgumentExtension(StartupExtensionABC): config.create_console_argument(ArgumentTypeEnum.Executable, '', 'publish', ['p', 'P'], PublishService) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'remove', ['r', 'R'], RemoveService) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'start', ['S', 'S'], StartService) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'start', ['s', 'S'], StartService) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'uninstall', ['ui', 'UI'], UninstallService) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) -- 2.45.1 From 0d37c8606165929dbe82b19b17dd8d61cf1c8602 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 19 May 2022 20:05:22 +0200 Subject: [PATCH 017/140] Removed console output --- src/cpl_cli/live_server/live_server_thread.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/cpl_cli/live_server/live_server_thread.py b/src/cpl_cli/live_server/live_server_thread.py index 308b7f7c..ed91165d 100644 --- a/src/cpl_cli/live_server/live_server_thread.py +++ b/src/cpl_cli/live_server/live_server_thread.py @@ -66,7 +66,6 @@ class LiveServerThread(threading.Thread): main = self._build_settings.main.split('.')[length] self._main = os.path.join(self._path, f'{main}.py') - Console.write_line(self._main) if not os.path.isfile(self._main): Console.error('Entry point main.py not found') return -- 2.45.1 From 94c82e6701aee11e20f9b1d23616ad5e0e7ac3e6 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 19 May 2022 20:21:46 +0200 Subject: [PATCH 018/140] Improved help command --- src/cpl_cli/command/help_service.py | 25 +++++-------------- src/cpl_cli/command_abc.py | 12 +++++++++ src/cpl_cli/startup.py | 27 --------------------- src/cpl_cli/startup_argument_extension.py | 19 ++++++++++++--- src/cpl_core/configuration/configuration.py | 6 ++--- 5 files changed, 37 insertions(+), 52 deletions(-) diff --git a/src/cpl_cli/command/help_service.py b/src/cpl_cli/command/help_service.py index 4088ab54..c49f5e8f 100644 --- a/src/cpl_cli/command/help_service.py +++ b/src/cpl_cli/command/help_service.py @@ -1,5 +1,5 @@ +import sys import textwrap -from typing import Optional from cpl_core.console.console import Console from cpl_core.console.foreground_color_enum import ForegroundColorEnum @@ -21,10 +21,7 @@ class HelpService(CommandABC): def help_message(self) -> str: return textwrap.dedent("""\ Lists available command and their short descriptions. - Usage: cpl help - - Arguments: - command The command to display the help message for + Usage: cpl help """) def run(self, args: list[str]): @@ -33,20 +30,9 @@ class HelpService(CommandABC): :param args: :return: """ - # if len(args) > 0: - # command_name = args[0] - # command: Optional[CommandABC] = None - # for cmd in self._commands: - # if cmd.name == command_name or command_name in cmd.aliases: - # command = self._services.get_service(cmd.command) - # - # if command is None: - # Console.error(f'Invalid argument: {command_name}') - # return - # - # Console.write_line(command.help_message) - # - # return + if len(args) > 0: + Console.error(f'Unexpected argument(s): {", ".join(args)}') + sys.exit() Console.write_line('Available Commands:') commands = [ @@ -68,3 +54,4 @@ class HelpService(CommandABC): Console.write(f'\n\t{name} ') Console.set_foreground_color(ForegroundColorEnum.default) Console.write(f'{description}') + Console.write_line('\nRun \'cpl --help\' for command specific information\'s') diff --git a/src/cpl_cli/command_abc.py b/src/cpl_cli/command_abc.py index 1c2f72d5..900ecee9 100644 --- a/src/cpl_cli/command_abc.py +++ b/src/cpl_cli/command_abc.py @@ -1,6 +1,7 @@ from abc import abstractmethod, ABC from cpl_core.configuration.executable_argument import ExecutableArgument +from cpl_core.console import Console class CommandABC(ExecutableArgument): @@ -12,3 +13,14 @@ class CommandABC(ExecutableArgument): @property @abstractmethod def help_message(self) -> str: pass + + def execute(self, args: list[str]): + Console.write_line(args) + if 'help' in args: + Console.write_line(self.help_message) + return + + self.run(args) + + @abstractmethod + def run(self, args: list[str]): pass diff --git a/src/cpl_cli/startup.py b/src/cpl_cli/startup.py index cfae7fc6..6c90f01c 100644 --- a/src/cpl_cli/startup.py +++ b/src/cpl_cli/startup.py @@ -1,18 +1,5 @@ import os -from cpl_cli.command.add_service import AddService -from cpl_cli.command.build_service import BuildService -from cpl_cli.command.custom_script_service import CustomScriptService -from cpl_cli.command.generate_service import GenerateService -from cpl_cli.command.help_service import HelpService -from cpl_cli.command.install_service import InstallService -from cpl_cli.command.new_service import NewService -from cpl_cli.command.publish_service import PublishService -from cpl_cli.command.remove_service import RemoveService -from cpl_cli.command.start_service import StartService -from cpl_cli.command.uninstall_service import UninstallService -from cpl_cli.command.update_service import UpdateService -from cpl_cli.command.version_service import VersionService from cpl_cli.error import Error from cpl_cli.live_server.live_server_service import LiveServerService from cpl_cli.publish.publisher_abc import PublisherABC @@ -43,18 +30,4 @@ class Startup(StartupABC): services.add_transient(PublisherABC, PublisherService) services.add_transient(LiveServerService) - services.add_transient(AddService) - services.add_transient(BuildService) - services.add_transient(CustomScriptService) - services.add_transient(GenerateService) - services.add_transient(HelpService) - services.add_transient(InstallService) - services.add_transient(NewService) - services.add_transient(PublishService) - services.add_transient(RemoveService) - services.add_transient(StartService) - services.add_transient(UninstallService) - services.add_transient(UpdateService) - services.add_transient(VersionService) - return services.build_service_provider() diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index 731861ef..04a85336 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -1,6 +1,7 @@ import os from typing import Optional +from cpl_cli import CommandABC from cpl_cli.command.add_service import AddService from cpl_cli.command.build_service import BuildService from cpl_cli.command.custom_script_service import CustomScriptService @@ -87,11 +88,23 @@ class StartupArgumentExtension(StartupExtensionABC): config.create_console_argument(ArgumentTypeEnum.Executable, '', 'version', ['v', 'V'], VersionService) config.for_each_argument( - lambda a: a.add_console_argument(ArgumentTypeEnum.Executable, '--', 'help', ['h', 'H'], HelpService) + lambda a: a.add_console_argument(ArgumentTypeEnum.Flag, '--', 'help', ['h', 'H']) ) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'help', ['h', 'H'], HelpService) self._read_cpl_environment(config, env) - def configure_services(self, service: ServiceCollectionABC, env: ApplicationEnvironmentABC): - pass + def configure_services(self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC): + services.add_transient(CommandABC, AddService) + services.add_transient(CommandABC, BuildService) + services.add_transient(CommandABC, CustomScriptService) + services.add_transient(CommandABC, GenerateService) + services.add_transient(CommandABC, HelpService) + services.add_transient(CommandABC, InstallService) + services.add_transient(CommandABC, NewService) + services.add_transient(CommandABC, PublishService) + services.add_transient(CommandABC, RemoveService) + services.add_transient(CommandABC, StartService) + services.add_transient(CommandABC, UninstallService) + services.add_transient(CommandABC, UpdateService) + services.add_transient(CommandABC, VersionService) diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index c5b7e18d..69f2aa0d 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -4,6 +4,7 @@ import sys from collections.abc import Callable from typing import Union, Type, Optional +from cpl_cli.command_abc import CommandABC from cpl_core.configuration.argument_abc import ArgumentABC from cpl_core.configuration.argument_builder import ArgumentBuilder from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum @@ -281,6 +282,5 @@ class Configuration(ConfigurationABC): self._parse_arguments(executables, arg_list, self._argument_types) for exe in executables: - service: ExecutableArgument = services.get_service(exe.executable_type) - service.run(self._additional_arguments) - + cmd: CommandABC = services.get_service(exe.executable_type) + cmd.execute(self._additional_arguments) -- 2.45.1 From 0a285f2d28126dc0d0d5697e0e0fc614c3dcb53a Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 19 May 2022 20:23:21 +0200 Subject: [PATCH 019/140] Improved help command --- src/cpl_cli/command_abc.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/cpl_cli/command_abc.py b/src/cpl_cli/command_abc.py index 900ecee9..2fe70f72 100644 --- a/src/cpl_cli/command_abc.py +++ b/src/cpl_cli/command_abc.py @@ -15,7 +15,6 @@ class CommandABC(ExecutableArgument): def help_message(self) -> str: pass def execute(self, args: list[str]): - Console.write_line(args) if 'help' in args: Console.write_line(self.help_message) return -- 2.45.1 From 1899cb5b868f44e662fe9d7ab4aa09dce2355802 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 19 May 2022 20:49:48 +0200 Subject: [PATCH 020/140] Added scripts to workspace --- cpl-workspace.json | 57 +++++++++++++++++++++++++++++++++++++++++++++- scripts/upload.sh | 2 +- 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/cpl-workspace.json b/cpl-workspace.json index 75cdad9d..9dbe38e9 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -7,7 +7,62 @@ "cpl_query": "src/cpl_query/cpl_query.json" }, "Scripts": { - "hello-world": "echo 'Hello World'" + "hello-world": "echo 'Hello World'", + "docs-build": "echo 'Build Documentation'; cd docs/; sphinx-apidoc -o source/ ../src/cpl_core; sphinx-apidoc -o source/ ../src/cpl_query; make clean; make html; rm source/cpl_query.tests.rst;", + "db": "cpl build-docs", + "docs-open": "xdg-open $PWD/docs/build/html/index.html &", + "do": "cpl docs-open", + + "build-all": "cpl build-cli; cpl build-core; cpl build-query;", + "ba": "cpl build-all", + "build-cli": "echo 'Build cpl_cli'; cd ./src/cpl_cli; cpl build; cd ../../;", + "build-core": "echo 'Build cpl_core'; cd ./src/cpl_core; cpl build; cd ../../;", + "build-query": "echo 'Build cpl_query'; cd ./src/cpl_query; cpl build; cd ../../;", + + "publish-all": "cpl publish-cli; cpl publish-core; cpl publish-query;", + "pa": "cpl build-all", + "publish-cli": "echo 'Publish cpl_cli'; cd ./src/cpl_cli; cpl publish; cd ../../;", + "publish-core": "echo 'Publish cpl_core'; cd ./src/cpl_core; cpl publish; cd ../../;", + "publish-query": "echo 'Publish cpl_query'; cd ./src/cpl_query; cpl publish; cd ../../;", + + "upload-prod-cli": "echo 'PROD Upload cpl_cli'; cpl upl-prod-cli;", + "upload-prod-core": "echo 'PROD Upload cpl_core'; cpl upl-prod-core;", + "upload-prod-query": "echo 'PROD Upload cpl_query'; cpl upl-prod-query;", + + "upload-exp-cli": "echo 'EXP Upload cpl_cli'; cpl upl-exp-cli;", + "upload-exp-core": "echo 'EXP Upload cpl_core'; cpl upl-exp-core;", + "upload-exp-query": "echo 'EXP Upload cpl_query'; cpl upl-exp-query;", + + "upload-dev-cli": "echo 'DEV Upload cpl_cli'; cpl upl-dev-cli;", + "upload-dev-core": "echo 'DEV Upload cpl_core'; cpl upl-dev-core;", + "upload-dev-query": "echo 'DEV Upload cpl_query'; cpl upl-dev-query;", + + "upl-prod-cli": "twine upload -r pip.sh-edraft.de dist/cpl-cli/publish/setup/*", + "upl-prod-core": "twine upload -r pip.sh-edraft.de dist/cpl-core/publish/setup/*", + "upl-prod-query": "twine upload -r pip.sh-edraft.de dist/cpl-query/publish/setup/*", + + "upl-exp-cli": "twine upload -r pip-exp.sh-edraft.de dist/cpl-cli/publish/setup/*", + "upl-exp-core": "twine upload -r pip-exp.sh-edraft.de dist/cpl-core/publish/setup/*", + "upl-exp-query": "twine upload -r pip-exp.sh-edraft.de dist/cpl-query/publish/setup/*", + + "upl-dev-cli": "twine upload -r pip-dev.sh-edraft.de dist/cpl-cli/publish/setup/*", + "upl-dev-core": "twine upload -r pip-dev.sh-edraft.de dist/cpl-core/publish/setup/*", + "upl-dev-query": "twine upload -r pip-dev.sh-edraft.de dist/cpl-query/publish/setup/*", + + "deploy-prod": "cpl deploy-prod-cli; cpl deploy-prod-core; cpl deploy-prod-query;", + "deploy-prod-cli": "cpl publish-cli; cpl upload-prod-cli", + "deploy-prod-core": "cpl publish-core; cpl upload-prod-core", + "deploy-prod-query": "cpl publish-query; cpl upload-prod-query", + + "deploy-exp": "cpl deploy-exp-cli; cpl deploy-exp-core; cpl deploy-exp-query;", + "deploy-exp-cli": "cpl publish-cli; cpl upload-exp-cli", + "deploy-exp-core": "cpl publish-core; cpl upload-exp-core", + "deploy-exp-query": "cpl publish-query; cpl upload-exp-query", + + "deploy-dev": "cpl deploy-dev-cli; cpl deploy-dev-core; cpl deploy-dev-query;", + "deploy-dev-cli": "cpl publish-cli; cpl upload-dev-cli", + "deploy-dev-core": "cpl publish-core; cpl upload-dev-core", + "deploy-dev-query": "cpl publish-query; cpl upload-dev-query" } } } \ No newline at end of file diff --git a/scripts/upload.sh b/scripts/upload.sh index 19e38a46..825782d5 100644 --- a/scripts/upload.sh +++ b/scripts/upload.sh @@ -7,7 +7,7 @@ if [ $1 == "-prod" ]; then elif [ $1 == "-exp" ]; then twine upload -r pip-exp.sh-edraft.de dist/cpl-cli/publish/setup/* twine upload -r pip-exp.sh-edraft.de dist/cpl-core/publish/setup/* - twine upload -r pip-.sh-edraft.de dist/cpl-query/publish/setup/* + twine upload -r pip-exp.sh-edraft.de dist/cpl-query/publish/setup/* else twine upload -r pip-dev.sh-edraft.de dist/cpl-cli/publish/setup/* -- 2.45.1 From 593372699b8e023ded36b0c9c1c51af4cf46841d Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Fri, 20 May 2022 08:44:32 +0200 Subject: [PATCH 021/140] BUild dev version --- cpl-workspace.json | 3 +++ src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl_cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/cpl_core.json | 2 +- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- 35 files changed, 70 insertions(+), 67 deletions(-) diff --git a/cpl-workspace.json b/cpl-workspace.json index 9dbe38e9..116affef 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -50,16 +50,19 @@ "upl-dev-query": "twine upload -r pip-dev.sh-edraft.de dist/cpl-query/publish/setup/*", "deploy-prod": "cpl deploy-prod-cli; cpl deploy-prod-core; cpl deploy-prod-query;", + "dp": "cpl deploy-prod", "deploy-prod-cli": "cpl publish-cli; cpl upload-prod-cli", "deploy-prod-core": "cpl publish-core; cpl upload-prod-core", "deploy-prod-query": "cpl publish-query; cpl upload-prod-query", "deploy-exp": "cpl deploy-exp-cli; cpl deploy-exp-core; cpl deploy-exp-query;", + "de": "cpl deploy-exp", "deploy-exp-cli": "cpl publish-cli; cpl upload-exp-cli", "deploy-exp-core": "cpl publish-core; cpl upload-exp-core", "deploy-exp-query": "cpl publish-query; cpl upload-exp-query", "deploy-dev": "cpl deploy-dev-cli; cpl deploy-dev-core; cpl deploy-dev-query;", + "dd": "cpl deploy-dev", "deploy-dev-cli": "cpl publish-cli; cpl upload-dev-cli", "deploy-dev-core": "cpl publish-core; cpl upload-dev-core", "deploy-dev-query": "cpl publish-query; cpl upload-dev-query" diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 6927f71e..f79a757e 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 1a577981..f189f05a 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index cc514f85..50fde1c5 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index a9722bc8..3490e1e8 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 38908ef8..0271cd7d 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 157a7975..1eb8f7e9 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index e08841d1..e6c26bc6 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 40d1c457..4c787878 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index de601885..6d82dd39 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 381c2206..a503942e 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 08cd2bba..4d1356d2 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 6639964c..0e5ea57b 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 82ffff0a..a2499b7b 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index 3c6a39a4..66e9743d 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index f048ccca..dd23efa1 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index bf21d2d4..c5853318 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index e895b319..4a450f41 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "3.dev2" + "Micro": "3.dev3" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.3.dev2" + "cpl-core>=2022.6.3.dev3" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index b46d0bf5..fe95ec59 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index 1fb15959..873ceeba 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 8bc73e83..ffe7aa93 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev2' +__version__ = '2022.6.3.dev3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index 50deb6ff..c9cea7e0 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev1' +__version__ = '2022.6.3.dev3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index e263d27f..4151e1ed 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev1' +__version__ = '2022.6.3.dev3' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index de674a7f..e4ccd641 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev1' +__version__ = '2022.6.3.dev3' from collections import namedtuple @@ -33,4 +33,4 @@ from .flag_argument import FlagArgument from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index b35a74b9..f8422d6a 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev1' +__version__ = '2022.6.3.dev3' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index 7da4887e..226c3986 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "3.dev1" + "Micro": "3.dev3" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index d7408ce8..2fff2cb8 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev1' +__version__ = '2022.6.3.dev3' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 7de25967..3e9b5013 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev1' +__version__ = '2022.6.3.dev3' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index 70eb0a46..796f4b20 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev1' +__version__ = '2022.6.3.dev3' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 28b50915..93459f2a 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev1' +__version__ = '2022.6.3.dev3' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 9a7e532a..698f53b7 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev1' +__version__ = '2022.6.3.dev3' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index a4bc52d7..e53617ae 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev1' +__version__ = '2022.6.3.dev3' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 54bf1c71..8dccbced 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev1' +__version__ = '2022.6.3.dev3' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index c6587aa3..bdb5316a 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev1' +__version__ = '2022.6.3.dev3' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 2c38bb71..5e7db009 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev1' +__version__ = '2022.6.3.dev3' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') -- 2.45.1 From 5cc663dedc8cca1b4bfb1035dc2784a0d4c0202e Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Fri, 20 May 2022 08:50:50 +0200 Subject: [PATCH 022/140] Migrated generate command --- src/cpl_cli/command/generate_service.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/cpl_cli/command/generate_service.py b/src/cpl_cli/command/generate_service.py index 65715d79..e42db95d 100644 --- a/src/cpl_cli/command/generate_service.py +++ b/src/cpl_cli/command/generate_service.py @@ -32,7 +32,7 @@ class GenerateService(CommandABC): "Template": ABCTemplate }, "class": { - "Upper": "", + "Upper": "Class", "Template": ClassTemplate }, "enum": { @@ -167,12 +167,19 @@ class GenerateService(CommandABC): :param args: :return: """ - if len(args) == 0: + schematic = None + value = None + for s in self._schematics: + value = self._config.get_configuration(s) + if value is not None: + schematic = s + break + + if schematic is None: self._help('Usage: cpl generate [options]') sys.exit() - schematic = args[0] - name = self._config.get_configuration(schematic) + name = value if name is None: name = Console.read(f'Name for the {args[0]}: ') -- 2.45.1 From fb810e2943898e754d1c10318b39c21014f05f15 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Fri, 20 May 2022 09:10:29 +0200 Subject: [PATCH 023/140] Dev build & migrated custom scripts & add logic to prevent next executable --- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- .../_templates/new/console/__init__.py | 4 ++-- .../_templates/new/console/source/__init__.py | 4 ++-- .../new/console/source/name/__init__.py | 4 ++-- .../new/console/source/tests/__init__.py | 4 ++-- .../_templates/new/library/__init__.py | 4 ++-- .../_templates/new/library/source/__init__.py | 4 ++-- .../new/library/source/name/__init__.py | 4 ++-- .../new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/command/custom_script_service.py | 2 +- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl_cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/startup_argument_extension.py | 22 +++++++++---------- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/configuration/argument_abc.py | 6 +++++ src/cpl_core/configuration/configuration.py | 7 +++++- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/cpl_core.json | 2 +- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- 38 files changed, 91 insertions(+), 80 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index f79a757e..dc8301a3 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index f189f05a..b3b0dea2 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 50fde1c5..ecbb5734 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 3490e1e8..40c515c1 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 0271cd7d..d4dcd170 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 1eb8f7e9..9cba8f46 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index e6c26bc6..cdd3a422 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 4c787878..b30939d9 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 6d82dd39..cb6225ca 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index a503942e..3cb5e39a 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 4d1356d2..6d9e1eb3 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 0e5ea57b..34f88026 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index a2499b7b..9def5c29 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index 66e9743d..209504d6 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index dd23efa1..ac74bbb4 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/command/custom_script_service.py b/src/cpl_cli/command/custom_script_service.py index b3f27b7a..e6c4996d 100644 --- a/src/cpl_cli/command/custom_script_service.py +++ b/src/cpl_cli/command/custom_script_service.py @@ -1,6 +1,5 @@ import os import subprocess -import sys from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.console.console import Console @@ -24,6 +23,7 @@ class CustomScriptService(CommandABC): return '' def run(self, args: list[str]): + Console.write_line(args, self._config.additional_arguments) cmd = args[0] if len(args) > 0 else self._config.additional_arguments[0] for script in self._workspace.scripts: diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index c5853318..5eb7980d 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 4a450f41..5766f813 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "3.dev3" + "Micro": "3.dev5" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.3.dev3" + "cpl-core>=2022.6.3.dev4" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index fe95ec59..c2ab86c2 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index 873ceeba..ce7edaaf 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index ffe7aa93..4e61a4d7 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index 04a85336..d6ef1e7c 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -60,32 +60,32 @@ class StartupArgumentExtension(StartupExtensionABC): def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC): config.add_json_file('cpl-workspace.json', path=env.working_directory, optional=True, output=False) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'add', ['a', 'A'], AddService) \ + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'add', ['a', 'A'], AddService, True) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'build', ['b', 'B'], BuildService) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'generate', ['g', 'G'], GenerateService) \ + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'build', ['b', 'B'], BuildService, True) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'generate', ['g', 'G'], GenerateService, True) \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'abc', ['a', 'A'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'class', ['c', 'C'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'enum', ['e', 'E'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'service', ['s', 'S'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'settings', ['st', 'ST'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'thread', ['t', 't'], ' ') - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'install', ['i', 'I'], InstallService) \ + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'install', ['i', 'I'], InstallService, True) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'new', ['n', 'N'], NewService) \ + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'new', ['n', 'N'], NewService, True) \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'console', ['c', 'C'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'library', ['l', 'L'], ' ') - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'publish', ['p', 'P'], PublishService) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'remove', ['r', 'R'], RemoveService) \ + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'publish', ['p', 'P'], PublishService, True) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'remove', ['r', 'R'], RemoveService, True) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'start', ['s', 'S'], StartService) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'uninstall', ['ui', 'UI'], UninstallService) \ + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'start', ['s', 'S'], StartService, True) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'uninstall', ['ui', 'UI'], UninstallService, True) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'update', ['u', 'U'], UpdateService) \ + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'update', ['u', 'U'], UpdateService, True) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'version', ['v', 'V'], VersionService) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'version', ['v', 'V'], VersionService, True) config.for_each_argument( lambda a: a.add_console_argument(ArgumentTypeEnum.Flag, '--', 'help', ['h', 'H']) diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index c9cea7e0..13a460ba 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 4151e1ed..fc74cf7b 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev4' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index e4ccd641..7c5d6c25 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev4' from collections import namedtuple @@ -33,4 +33,4 @@ from .flag_argument import FlagArgument from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') diff --git a/src/cpl_core/configuration/argument_abc.py b/src/cpl_core/configuration/argument_abc.py index 6dab1ec3..50f7cfa6 100644 --- a/src/cpl_core/configuration/argument_abc.py +++ b/src/cpl_core/configuration/argument_abc.py @@ -10,6 +10,7 @@ class ArgumentABC(ABC): token: str, name: str, aliases: list[str], + prevent_next_executable: bool = False, console_arguments: list['ArgumentABC'] = None ): r"""Representation of an console argument @@ -24,6 +25,7 @@ class ArgumentABC(ABC): self._token = token self._name = name self._aliases = aliases + self._prevent_next_executable = prevent_next_executable self._console_arguments = console_arguments if console_arguments is not None else [] @property @@ -38,6 +40,10 @@ class ArgumentABC(ABC): def aliases(self) -> list[str]: return self._aliases + @property + def prevent_next_executable(self) -> bool: + return self._prevent_next_executable + @property def console_arguments(self) -> list['ArgumentABC']: return self._console_arguments diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index 69f2aa0d..a7d08c07 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -240,7 +240,7 @@ class Configuration(ConfigurationABC): configuration.from_dict(value) self.add_configuration(sub, configuration) - def add_configuration(self, key_type: Union[str, type], value: ConfigurationModelABC): + def add_configuration(self, key_type: Union[str, type], value: Union[str, ConfigurationModelABC]): self._config[key_type] = value def create_console_argument(self, arg_type: ArgumentTypeEnum, token: str, name: str, aliases: list[str], @@ -281,6 +281,11 @@ class Configuration(ConfigurationABC): executables: list[ExecutableArgument] = [] self._parse_arguments(executables, arg_list, self._argument_types) + prevent = False for exe in executables: + if prevent: + continue cmd: CommandABC = services.get_service(exe.executable_type) + self.add_configuration('ACTIVE_EXECUTABLE', exe.name) cmd.execute(self._additional_arguments) + prevent = exe.prevent_next_executable diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index f8422d6a..335f55f9 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index 226c3986..ddd0f52b 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "3.dev3" + "Micro": "3.dev4" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index 2fff2cb8..09242eb8 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev4' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 3e9b5013..1f1966f9 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev4' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index 796f4b20..228f7ad4 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev4' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 93459f2a..0807b5b3 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev4' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 698f53b7..c9f9280b 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev4' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index e53617ae..4fddd936 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 8dccbced..47bcda08 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index bdb5316a..b8c2196e 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev4' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 5e7db009..e6764ed5 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev3' +__version__ = '2022.6.3.dev4' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev3') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') -- 2.45.1 From c66a81c0ec16444f95cbc732106b3722fc906451 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Fri, 20 May 2022 09:12:28 +0200 Subject: [PATCH 024/140] Dev build & migrated custom scripts --- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/command/custom_script_service.py | 3 +-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl_cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/cpl_core.json | 2 +- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- 35 files changed, 68 insertions(+), 69 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index dc8301a3..c32b4a12 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index b3b0dea2..46733e49 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index ecbb5734..73a75b52 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 40c515c1..28e03a99 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index d4dcd170..899de3db 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 9cba8f46..9c2ccd4f 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index cdd3a422..948c5fbb 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index b30939d9..a65bdbc5 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index cb6225ca..313a922a 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 3cb5e39a..2efdd18b 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 6d9e1eb3..7cb03bca 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 34f88026..52227708 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 9def5c29..67642f5d 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index 209504d6..dd454bda 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index ac74bbb4..e247a591 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/command/custom_script_service.py b/src/cpl_cli/command/custom_script_service.py index e6c4996d..3e8f2dbc 100644 --- a/src/cpl_cli/command/custom_script_service.py +++ b/src/cpl_cli/command/custom_script_service.py @@ -23,8 +23,7 @@ class CustomScriptService(CommandABC): return '' def run(self, args: list[str]): - Console.write_line(args, self._config.additional_arguments) - cmd = args[0] if len(args) > 0 else self._config.additional_arguments[0] + cmd = self._config.get_configuration('ACTIVE_EXECUTABLE') for script in self._workspace.scripts: if script == cmd: diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index 5eb7980d..8a98162e 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 5766f813..bf7cb1c0 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "3.dev5" + "Micro": "3.dev6" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.3.dev4" + "cpl-core>=2022.6.3.dev5" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index c2ab86c2..584314f6 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index ce7edaaf..63bdff64 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 4e61a4d7..acf52f68 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index 13a460ba..ea3ebfb4 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev4' +__version__ = '2022.6.3.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index fc74cf7b..0e8eeccc 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev4' +__version__ = '2022.6.3.dev5' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 7c5d6c25..cff2ae9a 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev4' +__version__ = '2022.6.3.dev5' from collections import namedtuple @@ -33,4 +33,4 @@ from .flag_argument import FlagArgument from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index 335f55f9..5d1eb002 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev4' +__version__ = '2022.6.3.dev5' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index ddd0f52b..413c0b1f 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "3.dev4" + "Micro": "3.dev5" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index 09242eb8..890b2a01 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev4' +__version__ = '2022.6.3.dev5' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 1f1966f9..22e3dc47 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev4' +__version__ = '2022.6.3.dev5' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index 228f7ad4..0312afbe 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev4' +__version__ = '2022.6.3.dev5' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 0807b5b3..75e735c5 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev4' +__version__ = '2022.6.3.dev5' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index c9f9280b..41cfd5c9 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev4' +__version__ = '2022.6.3.dev5' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 4fddd936..24f0d8bf 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev4' +__version__ = '2022.6.3.dev5' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 47bcda08..e31f0ff6 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev4' +__version__ = '2022.6.3.dev5' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index b8c2196e..8bf33774 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev4' +__version__ = '2022.6.3.dev5' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index e6764ed5..f5157413 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev4' +__version__ = '2022.6.3.dev5' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') -- 2.45.1 From ccca904cb87054f4a42a36f839fd2304a0757589 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Fri, 20 May 2022 09:17:51 +0200 Subject: [PATCH 025/140] Smaller output fixes --- src/cpl_cli/command/generate_service.py | 2 +- src/cpl_cli/command/help_service.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cpl_cli/command/generate_service.py b/src/cpl_cli/command/generate_service.py index e42db95d..1661a58c 100644 --- a/src/cpl_cli/command/generate_service.py +++ b/src/cpl_cli/command/generate_service.py @@ -145,7 +145,7 @@ class GenerateService(CommandABC): ) if os.path.isfile(file_path): - Console.error(f'{String.first_to_upper(schematic)} already exists!') + Console.error(f'{String.first_to_upper(schematic)} already exists!\n') sys.exit() message = f'Creating {self._env.working_directory}/{template.path}/{template.name}' diff --git a/src/cpl_cli/command/help_service.py b/src/cpl_cli/command/help_service.py index c49f5e8f..51a4d02b 100644 --- a/src/cpl_cli/command/help_service.py +++ b/src/cpl_cli/command/help_service.py @@ -54,4 +54,4 @@ class HelpService(CommandABC): Console.write(f'\n\t{name} ') Console.set_foreground_color(ForegroundColorEnum.default) Console.write(f'{description}') - Console.write_line('\nRun \'cpl --help\' for command specific information\'s') + Console.write_line('\nRun \'cpl --help\' for command specific information\'s\n') -- 2.45.1 From dac3d9c6bbc7fb9f3433f28431d09f1367007884 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Fri, 20 May 2022 10:27:55 +0200 Subject: [PATCH 026/140] Added validators (closes #59) --- src/cpl_cli/startup_argument_extension.py | 42 +++++++++---------- src/cpl_cli/validators/__init__.py | 25 +++++++++++ src/cpl_cli/validators/project_validator.py | 18 ++++++++ src/cpl_cli/validators/workspace_validator.py | 17 ++++++++ src/cpl_core/configuration/configuration.py | 15 ++++++- .../configuration/executable_argument.py | 11 ++++- src/cpl_core/configuration/flag_argument.py | 3 +- src/cpl_core/configuration/validator_abc.py | 10 +++++ .../configuration/variable_argument.py | 3 +- 9 files changed, 119 insertions(+), 25 deletions(-) create mode 100644 src/cpl_cli/validators/__init__.py create mode 100644 src/cpl_cli/validators/project_validator.py create mode 100644 src/cpl_cli/validators/workspace_validator.py create mode 100644 src/cpl_core/configuration/validator_abc.py diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index d6ef1e7c..a9de79f2 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -1,7 +1,6 @@ import os from typing import Optional -from cpl_cli import CommandABC from cpl_cli.command.add_service import AddService from cpl_cli.command.build_service import BuildService from cpl_cli.command.custom_script_service import CustomScriptService @@ -16,6 +15,8 @@ from cpl_cli.command.uninstall_service import UninstallService from cpl_cli.command.update_service import UpdateService from cpl_cli.command.version_service import VersionService from cpl_cli.configuration.workspace_settings import WorkspaceSettings +from cpl_cli.validators.project_validator import ProjectValidator +from cpl_cli.validators.workspace_validator import WorkspaceValidator from cpl_core.application import StartupExtensionABC from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum from cpl_core.configuration.configuration_abc import ConfigurationABC @@ -37,9 +38,7 @@ class StartupArgumentExtension(StartupExtensionABC): for file in f: if file.endswith('.json'): f_name = file.split('.json')[0] - if f_name == name or \ - String.convert_to_camel_case(f_name).lower() == String.convert_to_camel_case( - name).lower(): + if f_name == name or String.convert_to_camel_case(f_name).lower() == String.convert_to_camel_case(name).lower(): project_name = f_name break @@ -62,7 +61,7 @@ class StartupArgumentExtension(StartupExtensionABC): config.create_console_argument(ArgumentTypeEnum.Executable, '', 'add', ['a', 'A'], AddService, True) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'build', ['b', 'B'], BuildService, True) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'build', ['b', 'B'], BuildService, True, validators=[ProjectValidator]) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'generate', ['g', 'G'], GenerateService, True) \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'abc', ['a', 'A'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'class', ['c', 'C'], ' ') \ @@ -87,24 +86,25 @@ class StartupArgumentExtension(StartupExtensionABC): .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'version', ['v', 'V'], VersionService, True) - config.for_each_argument( - lambda a: a.add_console_argument(ArgumentTypeEnum.Flag, '--', 'help', ['h', 'H']) - ) + config.for_each_argument(lambda a: a.add_console_argument(ArgumentTypeEnum.Flag, '--', 'help', ['h', 'H'])) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'help', ['h', 'H'], HelpService) self._read_cpl_environment(config, env) def configure_services(self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC): - services.add_transient(CommandABC, AddService) - services.add_transient(CommandABC, BuildService) - services.add_transient(CommandABC, CustomScriptService) - services.add_transient(CommandABC, GenerateService) - services.add_transient(CommandABC, HelpService) - services.add_transient(CommandABC, InstallService) - services.add_transient(CommandABC, NewService) - services.add_transient(CommandABC, PublishService) - services.add_transient(CommandABC, RemoveService) - services.add_transient(CommandABC, StartService) - services.add_transient(CommandABC, UninstallService) - services.add_transient(CommandABC, UpdateService) - services.add_transient(CommandABC, VersionService) + services.add_transient(WorkspaceValidator) + services.add_transient(ProjectValidator) + + services.add_transient(AddService) + services.add_transient(BuildService) + services.add_transient(CustomScriptService) + services.add_transient(GenerateService) + services.add_transient(HelpService) + services.add_transient(InstallService) + services.add_transient(NewService) + services.add_transient(PublishService) + services.add_transient(RemoveService) + services.add_transient(StartService) + services.add_transient(UninstallService) + services.add_transient(UpdateService) + services.add_transient(VersionService) diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py new file mode 100644 index 00000000..b6cfae8f --- /dev/null +++ b/src/cpl_cli/validators/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +""" +cpl-cli sh-edraft Common Python library CLI +~~~~~~~~~~~~~~~~~~~ + +sh-edraft Common Python library Command Line Interface + +:copyright: (c) 2020 - 2022 sh-edraft.de +:license: MIT, see LICENSE for more details. + +""" + +__title__ = 'cpl_cli.validators' +__author__ = 'Sven Heidemann' +__license__ = 'MIT' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.3.dev6' + +from collections import namedtuple + +# imports: + +VersionInfo = namedtuple('VersionInfo', 'major minor micro') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_cli/validators/project_validator.py b/src/cpl_cli/validators/project_validator.py new file mode 100644 index 00000000..4f21d0e2 --- /dev/null +++ b/src/cpl_cli/validators/project_validator.py @@ -0,0 +1,18 @@ +from cpl_cli import Error +from cpl_cli.configuration import WorkspaceSettings, ProjectSettings +from cpl_core.configuration.validator_abc import ValidatorABC + + +class ProjectValidator(ValidatorABC): + + def __init__(self, workspace: WorkspaceSettings, project: ProjectSettings): + self._workspace = workspace + self._project = project + + ValidatorABC.__init__(self) + + def validate(self) -> bool: + result = self._project is not None or self._workspace is not None + if not result: + Error.error('The command requires to be run in an CPL project, but a project could not be found.') + return result diff --git a/src/cpl_cli/validators/workspace_validator.py b/src/cpl_cli/validators/workspace_validator.py new file mode 100644 index 00000000..d8c50033 --- /dev/null +++ b/src/cpl_cli/validators/workspace_validator.py @@ -0,0 +1,17 @@ +from cpl_cli import Error +from cpl_cli.configuration import WorkspaceSettings +from cpl_core.configuration.validator_abc import ValidatorABC + + +class WorkspaceValidator(ValidatorABC): + + def __init__(self, workspace: WorkspaceSettings): + self._workspace = workspace + + ValidatorABC.__init__(self) + + def validate(self) -> bool: + result = self._workspace is not None + if not result: + Error.error('The command requires to be run in an CPL workspace, but a workspace could not be found.') + return result diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index a7d08c07..96966d18 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -13,6 +13,7 @@ from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC from cpl_core.configuration.configuration_variable_name_enum import ConfigurationVariableNameEnum from cpl_core.configuration.executable_argument import ExecutableArgument from cpl_core.configuration.flag_argument import FlagArgument +from cpl_core.configuration.validator_abc import ValidatorABC from cpl_core.configuration.variable_argument import VariableArgument from cpl_core.console.console import Console from cpl_core.console.foreground_color_enum import ForegroundColorEnum @@ -245,7 +246,7 @@ class Configuration(ConfigurationABC): def create_console_argument(self, arg_type: ArgumentTypeEnum, token: str, name: str, aliases: list[str], *args, **kwargs) -> ArgumentABC: - argument = ArgumentBuilder.build_argument(arg_type, token, name, aliases, *args, *kwargs) + argument = ArgumentBuilder.build_argument(arg_type, token, name, aliases, *args, **kwargs) self._argument_types.append(argument) return argument @@ -285,6 +286,18 @@ class Configuration(ConfigurationABC): for exe in executables: if prevent: continue + + abort = False + for validator_type in exe.validators: + validator: ValidatorABC = services.get_service(validator_type) + result = validator.validate() + abort = not result + if abort: + break + + if abort: + continue + cmd: CommandABC = services.get_service(exe.executable_type) self.add_configuration('ACTIVE_EXECUTABLE', exe.name) cmd.execute(self._additional_arguments) diff --git a/src/cpl_core/configuration/executable_argument.py b/src/cpl_core/configuration/executable_argument.py index a9d512d4..fd061a8e 100644 --- a/src/cpl_core/configuration/executable_argument.py +++ b/src/cpl_core/configuration/executable_argument.py @@ -2,6 +2,8 @@ from typing import Type, Optional from cpl_core.configuration.argument_executable_abc import ArgumentExecutableABC from cpl_core.configuration.argument_abc import ArgumentABC +from cpl_core.configuration.validator_abc import ValidatorABC +from cpl_core.console import Console class ExecutableArgument(ArgumentABC): @@ -11,13 +13,16 @@ class ExecutableArgument(ArgumentABC): name: str, aliases: list[str], executable: Type[ArgumentExecutableABC], + prevent_next_executable: bool = False, + validators: list[Type[ValidatorABC]] = None, console_arguments: list['ArgumentABC'] = None ): self._executable_type = executable + self._validators = validators self._executable: Optional[ArgumentExecutableABC] = None - ArgumentABC.__init__(self, token, name, aliases, console_arguments) + ArgumentABC.__init__(self, token, name, aliases, prevent_next_executable, console_arguments) @property def executable_type(self) -> type: @@ -26,6 +31,10 @@ class ExecutableArgument(ArgumentABC): def set_executable(self, executable: ArgumentExecutableABC): self._executable = executable + @property + def validators(self) -> list[Type[ValidatorABC]]: + return self._validators + def run(self, args: list[str]): r"""Executes runnable if exists """ diff --git a/src/cpl_core/configuration/flag_argument.py b/src/cpl_core/configuration/flag_argument.py index 0d57af2a..c22c5689 100644 --- a/src/cpl_core/configuration/flag_argument.py +++ b/src/cpl_core/configuration/flag_argument.py @@ -7,7 +7,8 @@ class FlagArgument(ArgumentABC): token: str, name: str, aliases: list[str], + prevent_next_executable: bool = False, console_arguments: list['ArgumentABC'] = None ): - ArgumentABC.__init__(self, token, name, aliases, console_arguments) + ArgumentABC.__init__(self, token, name, aliases, prevent_next_executable, console_arguments) diff --git a/src/cpl_core/configuration/validator_abc.py b/src/cpl_core/configuration/validator_abc.py new file mode 100644 index 00000000..a79e8621 --- /dev/null +++ b/src/cpl_core/configuration/validator_abc.py @@ -0,0 +1,10 @@ +from abc import ABC, abstractmethod + + +class ValidatorABC(ABC): + + @abstractmethod + def __init__(self): pass + + @abstractmethod + def validate(self) -> bool: pass diff --git a/src/cpl_core/configuration/variable_argument.py b/src/cpl_core/configuration/variable_argument.py index bcf7b0cc..1f8597e5 100644 --- a/src/cpl_core/configuration/variable_argument.py +++ b/src/cpl_core/configuration/variable_argument.py @@ -8,12 +8,13 @@ class VariableArgument(ArgumentABC): name: str, aliases: list[str], value_token: str, + prevent_next_executable: bool = False, console_arguments: list['ArgumentABC'] = None ): self._value_token = value_token self._value: str = '' - ArgumentABC.__init__(self, token, name, aliases, console_arguments) + ArgumentABC.__init__(self, token, name, aliases, prevent_next_executable, console_arguments) @property def value_token(self) -> str: -- 2.45.1 From 7b823e114189f13c5472f1422eff916d9fe387db Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Fri, 20 May 2022 10:34:09 +0200 Subject: [PATCH 027/140] Added validator generation --- .../_templates/generate/validator_template.py | 41 +++++++++++++++++++ src/cpl_cli/command/generate_service.py | 10 ++++- src/cpl_cli/startup_argument_extension.py | 3 +- src/cpl_core/configuration/configuration.py | 19 +++++---- 4 files changed, 62 insertions(+), 11 deletions(-) create mode 100644 src/cpl_cli/_templates/generate/validator_template.py diff --git a/src/cpl_cli/_templates/generate/validator_template.py b/src/cpl_cli/_templates/generate/validator_template.py new file mode 100644 index 00000000..e5ed47a5 --- /dev/null +++ b/src/cpl_cli/_templates/generate/validator_template.py @@ -0,0 +1,41 @@ +import textwrap +from string import Template + +from cpl_core.utils.string import String +from cpl_cli._templates.template_file_abc import TemplateFileABC + + +class ValidatorTemplate(TemplateFileABC): + + def __init__(self, name: str, schematic: str, schematic_upper: str, path: str): + TemplateFileABC.__init__(self) + + self._name = f'{String.convert_to_snake_case(name)}_{schematic}.py' + self._class_name = f'{String.first_to_upper(name)}{schematic_upper}' + self._path = path + self._value = textwrap.dedent("""\ + from cpl_core.configuration.validator_abc import ValidatorABC + + + class $Name(ValidatorABC): + + def __init__(self): + ValidatorABC.__init__(self) + + def validate(self) -> bool: + return True + """) + + @property + def name(self) -> str: + return self._name + + @property + def path(self) -> str: + return self._path + + @property + def value(self) -> str: + return Template(self._value).substitute( + Name=self._class_name + ) diff --git a/src/cpl_cli/command/generate_service.py b/src/cpl_cli/command/generate_service.py index 1661a58c..4ec3dc86 100644 --- a/src/cpl_cli/command/generate_service.py +++ b/src/cpl_cli/command/generate_service.py @@ -2,6 +2,7 @@ import os import sys import textwrap +from cpl_cli._templates.generate.validator_template import ValidatorTemplate from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.console.foreground_color_enum import ForegroundColorEnum from cpl_core.console.console import Console @@ -50,6 +51,10 @@ class GenerateService(CommandABC): "thread": { "Upper": "Thread", "Template": ThreadTemplate + }, + "validator": { + "Upper": "Validator", + "Template": ValidatorTemplate } } @@ -73,6 +78,7 @@ class GenerateService(CommandABC): service settings thread + validator """) @staticmethod @@ -89,7 +95,9 @@ class GenerateService(CommandABC): 'class (c|C)', 'enum (e|E)', 'service (s|S)', - 'settings (st|ST)' + 'settings (st|ST)', + 'thread (t|T)', + 'validator (v|V)' ] Console.write_line('Available Schematics:') for name in schematics: diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index a9de79f2..026e572a 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -68,7 +68,8 @@ class StartupArgumentExtension(StartupExtensionABC): .add_console_argument(ArgumentTypeEnum.Variable, '', 'enum', ['e', 'E'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'service', ['s', 'S'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'settings', ['st', 'ST'], ' ') \ - .add_console_argument(ArgumentTypeEnum.Variable, '', 'thread', ['t', 't'], ' ') + .add_console_argument(ArgumentTypeEnum.Variable, '', 'thread', ['t', 'T'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'validator', ['v', 'V'], ' ') config.create_console_argument(ArgumentTypeEnum.Executable, '', 'install', ['i', 'I'], InstallService, True) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index 96966d18..0e5acf8a 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -287,16 +287,17 @@ class Configuration(ConfigurationABC): if prevent: continue - abort = False - for validator_type in exe.validators: - validator: ValidatorABC = services.get_service(validator_type) - result = validator.validate() - abort = not result - if abort: - break + if exe.validators is not None: + abort = False + for validator_type in exe.validators: + validator: ValidatorABC = services.get_service(validator_type) + result = validator.validate() + abort = not result + if abort: + break - if abort: - continue + if abort: + continue cmd: CommandABC = services.get_service(exe.executable_type) self.add_configuration('ACTIVE_EXECUTABLE', exe.name) -- 2.45.1 From 4564f7ac0e1befcb2938c4219d45e458fc77d0c4 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Fri, 20 May 2022 10:35:47 +0200 Subject: [PATCH 028/140] Improved output & imports --- src/cpl_cli/publish/publisher_service.py | 2 ++ src/cpl_core/configuration/__init__.py | 1 + 2 files changed, 3 insertions(+) diff --git a/src/cpl_cli/publish/publisher_service.py b/src/cpl_cli/publish/publisher_service.py index c41fb907..ba1047e7 100644 --- a/src/cpl_cli/publish/publisher_service.py +++ b/src/cpl_cli/publish/publisher_service.py @@ -434,6 +434,7 @@ class PublisherService(PublisherABC): spinner_foreground_color=ForegroundColorEnum.blue) Console.spinner('Building application:', self._dist_files, text_foreground_color=ForegroundColorEnum.green, spinner_foreground_color=ForegroundColorEnum.blue) + Console.write_line() def publish(self): """ @@ -487,3 +488,4 @@ class PublisherService(PublisherABC): text_foreground_color=ForegroundColorEnum.green, spinner_foreground_color=ForegroundColorEnum.blue ) + Console.write_line() diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index cff2ae9a..3c439ece 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -30,6 +30,7 @@ from .configuration_model_abc import ConfigurationModelABC from .configuration_variable_name_enum import ConfigurationVariableNameEnum from .executable_argument import ExecutableArgument from .flag_argument import FlagArgument +from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -- 2.45.1 From 1f503fe20d81dfdb58eb63927c57a0fc4b2d81be Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Fri, 20 May 2022 10:37:43 +0200 Subject: [PATCH 029/140] Build new version --- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl_cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/validators/__init__.py | 4 ++-- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/cpl_core.json | 2 +- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- 35 files changed, 69 insertions(+), 69 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index c32b4a12..b41a12b7 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 46733e49..a2e79512 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 73a75b52..eaab86b1 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 28e03a99..703ef1ee 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 899de3db..6eb1971c 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 9c2ccd4f..58f0a710 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 948c5fbb..64b31827 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index a65bdbc5..2c5a3abd 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 313a922a..cc02f6e7 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 2efdd18b..5fecdc5a 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 7cb03bca..fa8101d1 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 52227708..9ce55e27 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 67642f5d..906f5213 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index dd454bda..14c0bc7a 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index e247a591..942a8b98 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index 8a98162e..f167ece4 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index bf7cb1c0..8865ef2d 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "3.dev6" + "Micro": "3.dev7" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.3.dev5" + "cpl-core>=2022.6.3.dev6" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 584314f6..cdceafe5 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index 63bdff64..9aa75dc9 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index acf52f68..d2087bf5 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index b6cfae8f..d7a0f7de 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index ea3ebfb4..b3c618a4 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 0e8eeccc..43454f77 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 3c439ece..6b1d20f4 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index 5d1eb002..d10bf15d 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index 413c0b1f..eba72fed 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "3.dev5" + "Micro": "3.dev6" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index 890b2a01..5e6b0422 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 22e3dc47..b0cb1ade 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index 0312afbe..de89027f 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 75e735c5..339f53a3 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 41cfd5c9..4d22e163 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 24f0d8bf..35ce8c99 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index e31f0ff6..5135570e 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index 8bf33774..de9f1d51 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index f5157413..223e1a22 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev5' +__version__ = '2022.6.3.dev6' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') -- 2.45.1 From fc23315cc7022f039230eb7d7d9ddcefa330427e Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 22 May 2022 17:35:38 +0200 Subject: [PATCH 030/140] Build version 2022.6.3 --- src/cpl_cli/__init__.py | 4 +- src/cpl_cli/_templates/__init__.py | 4 +- src/cpl_cli/_templates/build/__init__.py | 4 +- src/cpl_cli/_templates/generate/__init__.py | 4 +- src/cpl_cli/_templates/new/__init__.py | 4 +- .../_templates/new/console/__init__.py | 4 +- .../_templates/new/console/source/__init__.py | 4 +- .../new/console/source/name/__init__.py | 4 +- .../new/console/source/tests/__init__.py | 4 +- .../_templates/new/library/__init__.py | 4 +- .../_templates/new/library/source/__init__.py | 4 +- .../new/library/source/name/__init__.py | 4 +- .../new/library/source/tests/__init__.py | 4 +- src/cpl_cli/_templates/publish/__init__.py | 4 +- src/cpl_cli/command/__init__.py | 4 +- src/cpl_cli/configuration/__init__.py | 4 +- src/cpl_cli/cpl_cli.json | 4 +- src/cpl_cli/live_server/__init__.py | 4 +- src/cpl_cli/publish/__init__.py | 4 +- src/cpl_cli/source_creator/__init__.py | 4 +- src/cpl_cli/validators/__init__.py | 4 +- src/cpl_core/__init__.py | 4 +- src/cpl_core/application/__init__.py | 4 +- src/cpl_core/configuration/__init__.py | 4 +- src/cpl_core/configuration/configuration.py | 52 +++++++++++-------- src/cpl_core/console/__init__.py | 4 +- src/cpl_core/cpl_core.json | 2 +- src/cpl_core/database/__init__.py | 4 +- src/cpl_core/database/connection/__init__.py | 4 +- src/cpl_core/database/context/__init__.py | 4 +- src/cpl_core/dependency_injection/__init__.py | 4 +- src/cpl_core/environment/__init__.py | 4 +- src/cpl_core/logging/__init__.py | 4 +- src/cpl_core/mailing/__init__.py | 4 +- src/cpl_core/time/__init__.py | 4 +- src/cpl_core/utils/__init__.py | 4 +- 36 files changed, 99 insertions(+), 91 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index b41a12b7..25bcdc48 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index a2e79512..10cb5c3c 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index eaab86b1..1f8a42e0 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 703ef1ee..825d010c 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 6eb1971c..389c8635 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 58f0a710..e5d81735 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 64b31827..b3ffaa60 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 2c5a3abd..9c3e5b97 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index cc02f6e7..1f397f13 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 5fecdc5a..66570b7d 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index fa8101d1..a51a0cc9 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 9ce55e27..e8896599 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 906f5213..5c06dd3f 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index 14c0bc7a..925a726a 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 942a8b98..eaaf9a10 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index f167ece4..ad494b69 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 8865ef2d..80f3612d 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "3.dev7" + "Micro": "3" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.3.dev6" + "cpl-core>=2022.6.3" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index cdceafe5..29527f0b 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index 9aa75dc9..1acb5cf6 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index d2087bf5..6393c5bb 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index d7a0f7de..aac26b89 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev7' +__version__ = '2022.6.3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index b3c618a4..f6a6761f 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 43454f77..641e09f3 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 6b1d20f4..e0fd7816 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index 0e5acf8a..93becd5f 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -1,6 +1,7 @@ import json import os import sys +import traceback from collections.abc import Callable from typing import Union, Type, Optional @@ -278,28 +279,35 @@ class Configuration(ConfigurationABC): for arg_name in ConfigurationVariableNameEnum.to_list(): self.add_console_argument(VariableArgument('--', str(arg_name).upper(), [str(arg_name).lower()], '=')) - arg_list = sys.argv[1:] - executables: list[ExecutableArgument] = [] - self._parse_arguments(executables, arg_list, self._argument_types) + try: + arg_list = sys.argv[1:] + executables: list[ExecutableArgument] = [] + self._parse_arguments(executables, arg_list, self._argument_types) + except Exception as e: + Console.error('An error occurred while parsing arguments.') + exit() - prevent = False - for exe in executables: - if prevent: - continue - - if exe.validators is not None: - abort = False - for validator_type in exe.validators: - validator: ValidatorABC = services.get_service(validator_type) - result = validator.validate() - abort = not result - if abort: - break - - if abort: + try: + prevent = False + for exe in executables: + if prevent: continue - cmd: CommandABC = services.get_service(exe.executable_type) - self.add_configuration('ACTIVE_EXECUTABLE', exe.name) - cmd.execute(self._additional_arguments) - prevent = exe.prevent_next_executable + if exe.validators is not None: + abort = False + for validator_type in exe.validators: + validator: ValidatorABC = services.get_service(validator_type) + result = validator.validate() + abort = not result + if abort: + break + + if abort: + continue + + cmd: CommandABC = services.get_service(exe.executable_type) + self.add_configuration('ACTIVE_EXECUTABLE', exe.name) + cmd.execute(self._additional_arguments) + prevent = exe.prevent_next_executable + except Exception as e: + Console.error('An error occurred while executing arguments.') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index d10bf15d..fe05277d 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index eba72fed..3e3db7a5 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "3.dev6" + "Micro": "3" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index 5e6b0422..c0c1ebf1 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index b0cb1ade..5815d9d6 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index de89027f..c8e89de1 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 339f53a3..afe969a5 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 4d22e163..59b62db7 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 35ce8c99..1d30290c 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 5135570e..a773c1d1 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index de9f1d51..b4712aac 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 223e1a22..934ebe3f 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3.dev6' +__version__ = '2022.6.3' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='3') -- 2.45.1 From dec4a45d9853a686b6434b57100b846026c078db Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 22 May 2022 18:32:34 +0200 Subject: [PATCH 031/140] Added logic to add CLI commands from external packages --- src/cpl_cli/cli.py | 12 ++- src/cpl_cli/command_abc.py | 14 ++-- src/cpl_cli/main.py | 41 ++++++++- src/cpl_cli/publish/publisher_service.py | 84 ++++++++++--------- .../configuration/argument_executable_abc.py | 2 +- src/cpl_core/configuration/configuration.py | 9 +- .../configuration/configuration_abc.py | 6 +- .../configuration/executable_argument.py | 3 +- 8 files changed, 114 insertions(+), 57 deletions(-) diff --git a/src/cpl_cli/cli.py b/src/cpl_cli/cli.py index 8a0f8f60..af128970 100644 --- a/src/cpl_cli/cli.py +++ b/src/cpl_cli/cli.py @@ -1,6 +1,7 @@ import sys import traceback +from cpl_cli.error import Error from cpl_core.application.application_abc import ApplicationABC from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.console.console import Console @@ -26,7 +27,16 @@ class CLI(ApplicationABC): :return: """ try: - self._configuration.parse_console_arguments(self._services) + result = self._configuration.parse_console_arguments(self._services) + if result: + return + + if len(self._configuration.additional_arguments) == 0: + Error.error('Expected command') + return + + unexpected_arguments = ', '.join(self._configuration.additional_arguments) + Error.error(f'Unexpected argument(s): {unexpected_arguments}') except KeyboardInterrupt: Console.write_line() sys.exit() diff --git a/src/cpl_cli/command_abc.py b/src/cpl_cli/command_abc.py index 2fe70f72..59ec51e4 100644 --- a/src/cpl_cli/command_abc.py +++ b/src/cpl_cli/command_abc.py @@ -1,10 +1,10 @@ from abc import abstractmethod, ABC -from cpl_core.configuration.executable_argument import ExecutableArgument +from cpl_core.configuration.argument_executable_abc import ArgumentExecutableABC from cpl_core.console import Console -class CommandABC(ExecutableArgument): +class CommandABC(ArgumentExecutableABC): @abstractmethod def __init__(self): @@ -14,12 +14,12 @@ class CommandABC(ExecutableArgument): @abstractmethod def help_message(self) -> str: pass - def execute(self, args: list[str]): + @abstractmethod + def execute(self, args: list[str]): pass + + def run(self, args: list[str]): if 'help' in args: Console.write_line(self.help_message) return - self.run(args) - - @abstractmethod - def run(self, args: list[str]): pass + self.execute(args) diff --git a/src/cpl_cli/main.py b/src/cpl_cli/main.py index 192a18ae..5ccac3ed 100644 --- a/src/cpl_cli/main.py +++ b/src/cpl_cli/main.py @@ -1,15 +1,52 @@ -from cpl_cli.startup_argument_extension import StartupArgumentExtension -from cpl_core.application.application_builder import ApplicationBuilder +from typing import Type + +import pkg_resources + from cpl_cli.cli import CLI from cpl_cli.startup import Startup +from cpl_cli.startup_argument_extension import StartupArgumentExtension +from cpl_core.application.application_builder import ApplicationBuilder +from cpl_core.application.startup_extension_abc import StartupExtensionABC + + +def get_startup_extensions() -> list[Type[StartupExtensionABC]]: + blacklisted_packages = ['cpl-cli'] + startup_extensions = [] + + installed_packages = pkg_resources.working_set + for p in installed_packages: + package = str(p).split(' ')[0] + if not package.startswith('cpl-') or package in blacklisted_packages: + continue + + package = package.replace('-', '_') + loaded_package = __import__(package) + if '__cli_startup_extension__' not in dir(loaded_package): + continue + startup_extensions.append(loaded_package.__cli_startup_extension__) + + return startup_extensions def main(): app_builder = ApplicationBuilder(CLI) app_builder.use_startup(Startup) app_builder.use_extension(StartupArgumentExtension) + for extension in get_startup_extensions(): + app_builder.use_extension(extension) + app_builder.build().run() if __name__ == '__main__': main() + +# (( +# ( `) +# ; / , +# / \/ +# / | +# / ~/ +# / ) ) ~ edraft +# ___// | / +# `--' \_~-, diff --git a/src/cpl_cli/publish/publisher_service.py b/src/cpl_cli/publish/publisher_service.py index ba1047e7..dc85215c 100644 --- a/src/cpl_cli/publish/publisher_service.py +++ b/src/cpl_cli/publish/publisher_service.py @@ -206,55 +206,57 @@ class PublisherService(PublisherABC): :return: """ for file in self._included_files: - if file.endswith('__init__.py'): - template_content = '' - module_file_lines: list[str] = [] + if not file.endswith('__init__.py'): + continue - title = self._get_module_name_from_dirs(file) - if title == '': - title = self._project_settings.name + template_content = '' + module_file_lines: list[str] = [] - module_py_lines: list[str] = [] - imports = '' + title = self._get_module_name_from_dirs(file) + if title == '': + title = self._project_settings.name - with open(file, 'r') as py_file: - module_file_lines = py_file.readlines() - py_file.close() + module_py_lines: list[str] = [] + imports = '' - if len(module_file_lines) == 0: - imports = '# imports:' - else: - is_started = False - for line in module_file_lines: - if line.__contains__('# imports'): - is_started = True + with open(file, 'r') as py_file: + module_file_lines = py_file.readlines() + py_file.close() - if (line.__contains__('from') or line.__contains__('import')) and is_started: - module_py_lines.append(line.replace('\n', '')) + if len(module_file_lines) == 0: + imports = '# imports:' + else: + is_started = False + for line in module_file_lines: + if line.__contains__('# imports'): + is_started = True - if len(module_py_lines) > 0: - imports = '\n'.join(module_py_lines) + if ((line.__contains__('from') or line.__contains__('import')) and is_started) or line.startswith('__cli_startup_extension__'): + module_py_lines.append(line.replace('\n', '')) - template_content = stringTemplate(InitTemplate.get_init_py()).substitute( - Name=self._project_settings.name, - Description=self._project_settings.description, - LongDescription=self._project_settings.long_description, - CopyrightDate=self._project_settings.copyright_date, - CopyrightName=self._project_settings.copyright_name, - LicenseName=self._project_settings.license_name, - LicenseDescription=self._project_settings.license_description, - Title=title if title is not None and title != '' else self._project_settings.name, - Author=self._project_settings.author, - Version=version.parse(self._project_settings.version.to_str()), - Major=self._project_settings.version.major, - Minor=self._project_settings.version.minor, - Micro=self._project_settings.version.micro, - Imports=imports - ) + if len(module_py_lines) > 0: + imports = '\n'.join(module_py_lines) - with open(file, 'w+') as py_file: - py_file.write(template_content) - py_file.close() + template_content = stringTemplate(InitTemplate.get_init_py()).substitute( + Name=self._project_settings.name, + Description=self._project_settings.description, + LongDescription=self._project_settings.long_description, + CopyrightDate=self._project_settings.copyright_date, + CopyrightName=self._project_settings.copyright_name, + LicenseName=self._project_settings.license_name, + LicenseDescription=self._project_settings.license_description, + Title=title if title is not None and title != '' else self._project_settings.name, + Author=self._project_settings.author, + Version=version.parse(self._project_settings.version.to_str()), + Major=self._project_settings.version.major, + Minor=self._project_settings.version.minor, + Micro=self._project_settings.version.micro, + Imports=imports + ) + + with open(file, 'w+') as py_file: + py_file.write(template_content) + py_file.close() def _dist_files(self): """ diff --git a/src/cpl_core/configuration/argument_executable_abc.py b/src/cpl_core/configuration/argument_executable_abc.py index d7f3319a..8263b338 100644 --- a/src/cpl_core/configuration/argument_executable_abc.py +++ b/src/cpl_core/configuration/argument_executable_abc.py @@ -7,4 +7,4 @@ class ArgumentExecutableABC(ABC): def __init__(self): pass @abstractmethod - def run(self, args: list[str]): pass + def execute(self, args: list[str]): pass diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index 93becd5f..c0dd8302 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -274,18 +274,19 @@ class Configuration(ConfigurationABC): if config_model == search_type: return self._config[config_model] - def parse_console_arguments(self, services: ServiceProviderABC, error: bool = None): + def parse_console_arguments(self, services: ServiceProviderABC, error: bool = None) -> bool: # sets environment variables as possible arguments as: --VAR=VALUE for arg_name in ConfigurationVariableNameEnum.to_list(): self.add_console_argument(VariableArgument('--', str(arg_name).upper(), [str(arg_name).lower()], '=')) + success = False try: arg_list = sys.argv[1:] executables: list[ExecutableArgument] = [] self._parse_arguments(executables, arg_list, self._argument_types) except Exception as e: Console.error('An error occurred while parsing arguments.') - exit() + sys.exit() try: prevent = False @@ -309,5 +310,9 @@ class Configuration(ConfigurationABC): self.add_configuration('ACTIVE_EXECUTABLE', exe.name) cmd.execute(self._additional_arguments) prevent = exe.prevent_next_executable + success = True except Exception as e: Console.error('An error occurred while executing arguments.') + sys.exit() + + return success diff --git a/src/cpl_core/configuration/configuration_abc.py b/src/cpl_core/configuration/configuration_abc.py index 733e86ce..caadc15f 100644 --- a/src/cpl_core/configuration/configuration_abc.py +++ b/src/cpl_core/configuration/configuration_abc.py @@ -141,12 +141,16 @@ class ConfigurationABC(ABC): pass @abstractmethod - def parse_console_arguments(self, services: 'ServiceProviderABC', error: bool = None): + def parse_console_arguments(self, services: 'ServiceProviderABC', error: bool = None) -> bool: r"""Reads the console arguments Parameter --------- error: :class:`bool` Defines is invalid argument error will be shown or not + + Returns + ------- + Bool to specify if executables were executed or not. """ pass diff --git a/src/cpl_core/configuration/executable_argument.py b/src/cpl_core/configuration/executable_argument.py index fd061a8e..6d2254dd 100644 --- a/src/cpl_core/configuration/executable_argument.py +++ b/src/cpl_core/configuration/executable_argument.py @@ -3,7 +3,6 @@ from typing import Type, Optional from cpl_core.configuration.argument_executable_abc import ArgumentExecutableABC from cpl_core.configuration.argument_abc import ArgumentABC from cpl_core.configuration.validator_abc import ValidatorABC -from cpl_core.console import Console class ExecutableArgument(ArgumentABC): @@ -40,4 +39,4 @@ class ExecutableArgument(ArgumentABC): """ if self._executable is None: return - self._executable.run(args) + self._executable.execute(args) -- 2.45.1 From 24ab6a51c18c7069110e964d097a6d6619c22a8a Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 22 May 2022 18:33:07 +0200 Subject: [PATCH 032/140] Refactored executable arguments --- src/cpl_cli/command/add_service.py | 2 +- src/cpl_cli/command/build_service.py | 2 +- src/cpl_cli/command/custom_script_service.py | 2 +- src/cpl_cli/command/generate_service.py | 2 +- src/cpl_cli/command/help_service.py | 2 +- src/cpl_cli/command/install_service.py | 2 +- src/cpl_cli/command/new_service.py | 2 +- src/cpl_cli/command/publish_service.py | 2 +- src/cpl_cli/command/remove_service.py | 2 +- src/cpl_cli/command/start_service.py | 2 +- src/cpl_cli/command/uninstall_service.py | 2 +- src/cpl_cli/command/update_service.py | 2 +- src/cpl_cli/command/version_service.py | 2 +- .../custom/general/src/general/arguments/generate_argument.py | 2 +- .../custom/general/src/general/arguments/install_argument.py | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/cpl_cli/command/add_service.py b/src/cpl_cli/command/add_service.py index f2dc15f3..e3223d85 100644 --- a/src/cpl_cli/command/add_service.py +++ b/src/cpl_cli/command/add_service.py @@ -46,7 +46,7 @@ class AddService(CommandABC): }, indent=2)) file.close() - def run(self, args: list[str]): + def execute(self, args: list[str]): """ Entry point of command :param args: diff --git a/src/cpl_cli/command/build_service.py b/src/cpl_cli/command/build_service.py index 5fe1bc72..a9c764b6 100644 --- a/src/cpl_cli/command/build_service.py +++ b/src/cpl_cli/command/build_service.py @@ -22,7 +22,7 @@ class BuildService(CommandABC): Usage: cpl build """) - def run(self, args: list[str]): + def execute(self, args: list[str]): """ Entry point of command :param args: diff --git a/src/cpl_cli/command/custom_script_service.py b/src/cpl_cli/command/custom_script_service.py index 3e8f2dbc..4ed3d91f 100644 --- a/src/cpl_cli/command/custom_script_service.py +++ b/src/cpl_cli/command/custom_script_service.py @@ -22,7 +22,7 @@ class CustomScriptService(CommandABC): def help_message(self) -> str: return '' - def run(self, args: list[str]): + def execute(self, args: list[str]): cmd = self._config.get_configuration('ACTIVE_EXECUTABLE') for script in self._workspace.scripts: diff --git a/src/cpl_cli/command/generate_service.py b/src/cpl_cli/command/generate_service.py index 4ec3dc86..846e6cee 100644 --- a/src/cpl_cli/command/generate_service.py +++ b/src/cpl_cli/command/generate_service.py @@ -169,7 +169,7 @@ class GenerateService(CommandABC): spinner_foreground_color=ForegroundColorEnum.cyan ) - def run(self, args: list[str]): + def execute(self, args: list[str]): """ Entry point of command :param args: diff --git a/src/cpl_cli/command/help_service.py b/src/cpl_cli/command/help_service.py index 51a4d02b..d22e0e98 100644 --- a/src/cpl_cli/command/help_service.py +++ b/src/cpl_cli/command/help_service.py @@ -24,7 +24,7 @@ class HelpService(CommandABC): Usage: cpl help """) - def run(self, args: list[str]): + def execute(self, args: list[str]): """ Entry point of command :param args: diff --git a/src/cpl_cli/command/install_service.py b/src/cpl_cli/command/install_service.py index ac8184b4..873d4e72 100644 --- a/src/cpl_cli/command/install_service.py +++ b/src/cpl_cli/command/install_service.py @@ -184,7 +184,7 @@ class InstallService(CommandABC): Pip.reset_executable() - def run(self, args: list[str]): + def execute(self, args: list[str]): """ Entry point of command :param args: diff --git a/src/cpl_cli/command/new_service.py b/src/cpl_cli/command/new_service.py index da23c198..ea1fa940 100644 --- a/src/cpl_cli/command/new_service.py +++ b/src/cpl_cli/command/new_service.py @@ -242,7 +242,7 @@ class NewService(CommandABC): except Exception as e: Console.error('Could not create project', str(e)) - def run(self, args: list[str]): + def execute(self, args: list[str]): """ Entry point of command :param args: diff --git a/src/cpl_cli/command/publish_service.py b/src/cpl_cli/command/publish_service.py index 7a6403a4..f455e16c 100644 --- a/src/cpl_cli/command/publish_service.py +++ b/src/cpl_cli/command/publish_service.py @@ -22,7 +22,7 @@ class PublishService(CommandABC): Usage: cpl publish """) - def run(self, args: list[str]): + def execute(self, args: list[str]): """ Entry point of command :param args: diff --git a/src/cpl_cli/command/remove_service.py b/src/cpl_cli/command/remove_service.py index 6dc20a25..7d7dbe09 100644 --- a/src/cpl_cli/command/remove_service.py +++ b/src/cpl_cli/command/remove_service.py @@ -67,7 +67,7 @@ class RemoveService(CommandABC): self._create_file(path, ws_dict) - def run(self, args: list[str]): + def execute(self, args: list[str]): """ Entry point of command :param args: diff --git a/src/cpl_cli/command/start_service.py b/src/cpl_cli/command/start_service.py index 48b853b4..e638dcd7 100644 --- a/src/cpl_cli/command/start_service.py +++ b/src/cpl_cli/command/start_service.py @@ -22,7 +22,7 @@ class StartService(CommandABC): Usage: cpl start """) - def run(self, args: list[str]): + def execute(self, args: list[str]): """ Entry point of command :param args: diff --git a/src/cpl_cli/command/uninstall_service.py b/src/cpl_cli/command/uninstall_service.py index 940154ad..c5c132c4 100644 --- a/src/cpl_cli/command/uninstall_service.py +++ b/src/cpl_cli/command/uninstall_service.py @@ -49,7 +49,7 @@ class UninstallService(CommandABC): def _wait(self, t: int, *args, source: str = None, stdout=None, stderr=None): time.sleep(t) - def run(self, args: list[str]): + def execute(self, args: list[str]): """ Entry point of command :param args: diff --git a/src/cpl_cli/command/update_service.py b/src/cpl_cli/command/update_service.py index a454312b..b667ea58 100644 --- a/src/cpl_cli/command/update_service.py +++ b/src/cpl_cli/command/update_service.py @@ -156,7 +156,7 @@ class UpdateService(CommandABC): project.write(json.dumps(config, indent=2)) project.close() - def run(self, args: list[str]): + def execute(self, args: list[str]): """ Entry point of command :param args: diff --git a/src/cpl_cli/command/version_service.py b/src/cpl_cli/command/version_service.py index f68c9b16..5e93660f 100644 --- a/src/cpl_cli/command/version_service.py +++ b/src/cpl_cli/command/version_service.py @@ -26,7 +26,7 @@ class VersionService(CommandABC): Usage: cpl version """) - def run(self, args: list[str]): + def execute(self, args: list[str]): """ Entry point of command :param args: diff --git a/src/tests/custom/general/src/general/arguments/generate_argument.py b/src/tests/custom/general/src/general/arguments/generate_argument.py index 58a35467..c66c7738 100644 --- a/src/tests/custom/general/src/general/arguments/generate_argument.py +++ b/src/tests/custom/general/src/general/arguments/generate_argument.py @@ -11,6 +11,6 @@ class GenerateArgument(ArgumentExecutableABC): self._config = config self._env = env - def run(self, args: list[str]): + def execute(self, args: list[str]): Console.error('Generate:') Console.write_line(args, self._env.environment_name) diff --git a/src/tests/custom/general/src/general/arguments/install_argument.py b/src/tests/custom/general/src/general/arguments/install_argument.py index aca00937..ec53cf5a 100644 --- a/src/tests/custom/general/src/general/arguments/install_argument.py +++ b/src/tests/custom/general/src/general/arguments/install_argument.py @@ -7,5 +7,5 @@ class InstallArgument(ArgumentExecutableABC): def __init__(self): ArgumentExecutableABC.__init__(self) - def run(self, args: list[str]): + def execute(self, args: list[str]): Console.write_line('Install:', args) -- 2.45.1 From d1bb266d493d41f0e7d1e3d562a015f8951761ed Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 22 May 2022 18:43:10 +0200 Subject: [PATCH 033/140] Added Pipes --- src/cpl_cli/cpl_cli.json | 4 +-- src/cpl_core/cpl_core.json | 2 +- src/cpl_core/pipes/__init__.py | 27 +++++++++++++++++++ .../pipes/first_char_to_lower_pipe.py | 9 +++++++ src/cpl_core/pipes/pipe_abc.py | 10 +++++++ 5 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 src/cpl_core/pipes/__init__.py create mode 100644 src/cpl_core/pipes/first_char_to_lower_pipe.py create mode 100644 src/cpl_core/pipes/pipe_abc.py diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 80f3612d..814c1316 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "3" + "Micro": "7" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.3" + "cpl-core>=2022.6.7" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index 3e3db7a5..0d11a6ca 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "3" + "Micro": "7" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py new file mode 100644 index 00000000..bf54bda3 --- /dev/null +++ b/src/cpl_core/pipes/__init__.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- + +""" +cpl-core sh-edraft Common Python library +~~~~~~~~~~~~~~~~~~~ + +sh-edraft Common Python library + +:copyright: (c) 2020 - 2022 sh-edraft.de +:license: MIT, see LICENSE for more details. + +""" + +__title__ = 'cpl_core.pipes' +__author__ = 'Sven Heidemann' +__license__ = 'MIT' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.3' + +from collections import namedtuple + +# imports: +from .first_char_to_lower_pipe import FirstCharToLowerPipe +from .pipe_abc import PipeABC + +VersionInfo = namedtuple('VersionInfo', 'major minor micro') +version_info = VersionInfo(major='2022', minor='6', micro='3') diff --git a/src/cpl_core/pipes/first_char_to_lower_pipe.py b/src/cpl_core/pipes/first_char_to_lower_pipe.py new file mode 100644 index 00000000..0daa6120 --- /dev/null +++ b/src/cpl_core/pipes/first_char_to_lower_pipe.py @@ -0,0 +1,9 @@ +from cpl_core.pipes.pipe_abc import PipeABC + + +class FirstCharToLowerPipe(PipeABC): + + def __init__(self): pass + + def transform(self, value: any, *args): + return f'{value[0].lower()}{value[1:]}' diff --git a/src/cpl_core/pipes/pipe_abc.py b/src/cpl_core/pipes/pipe_abc.py new file mode 100644 index 00000000..2726dbc1 --- /dev/null +++ b/src/cpl_core/pipes/pipe_abc.py @@ -0,0 +1,10 @@ +from abc import ABC, abstractmethod + + +class PipeABC(ABC): + + @abstractmethod + def __init__(self): pass + + @abstractmethod + def transform(self, value: any, *args): pass -- 2.45.1 From d694c408c07277553200a0fdf72bbfeb3e2fa3b2 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 22 May 2022 18:48:33 +0200 Subject: [PATCH 034/140] Added CLI logic to generate pipes --- .../_templates/generate/pipe_template.py | 40 +++++++++++++++++++ src/cpl_cli/command/generate_service.py | 7 ++++ src/cpl_cli/startup_argument_extension.py | 1 + src/cpl_core/{pipes => pipe}/__init__.py | 2 +- .../first_char_to_lower_pipe.py | 2 +- src/cpl_core/{pipes => pipe}/pipe_abc.py | 0 6 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 src/cpl_cli/_templates/generate/pipe_template.py rename src/cpl_core/{pipes => pipe}/__init__.py (95%) rename src/cpl_core/{pipes => pipe}/first_char_to_lower_pipe.py (78%) rename src/cpl_core/{pipes => pipe}/pipe_abc.py (100%) diff --git a/src/cpl_cli/_templates/generate/pipe_template.py b/src/cpl_cli/_templates/generate/pipe_template.py new file mode 100644 index 00000000..129e13ba --- /dev/null +++ b/src/cpl_cli/_templates/generate/pipe_template.py @@ -0,0 +1,40 @@ +import textwrap +from string import Template + +from cpl_core.utils.string import String +from cpl_cli._templates.template_file_abc import TemplateFileABC + + +class PipeTemplate(TemplateFileABC): + + def __init__(self, name: str, schematic: str, schematic_upper: str, path: str): + TemplateFileABC.__init__(self) + + self._name = f'{String.convert_to_snake_case(name)}_{schematic}.py' + self._class_name = f'{String.first_to_upper(name)}{schematic_upper}' + self._path = path + self._value = textwrap.dedent("""\ + from cpl_core.pipe import PipeABC + + + class $Name(PipeABC): + + def __init__(self): pass + + def transform(self, value: any, *args): + return value + """) + + @property + def name(self) -> str: + return self._name + + @property + def path(self) -> str: + return self._path + + @property + def value(self) -> str: + return Template(self._value).substitute( + Name=self._class_name + ) diff --git a/src/cpl_cli/command/generate_service.py b/src/cpl_cli/command/generate_service.py index 846e6cee..e546218e 100644 --- a/src/cpl_cli/command/generate_service.py +++ b/src/cpl_cli/command/generate_service.py @@ -2,6 +2,7 @@ import os import sys import textwrap +from cpl_cli._templates.generate.pipe_template import PipeTemplate from cpl_cli._templates.generate.validator_template import ValidatorTemplate from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.console.foreground_color_enum import ForegroundColorEnum @@ -40,6 +41,10 @@ class GenerateService(CommandABC): "Upper": "Enum", "Template": EnumTemplate }, + "pipe": { + "Upper": "Pipe", + "Template": PipeTemplate + }, "service": { "Upper": "Service", "Template": ServiceTemplate @@ -75,6 +80,7 @@ class GenerateService(CommandABC): abc class enum + pipe service settings thread @@ -94,6 +100,7 @@ class GenerateService(CommandABC): 'abc (a|A)', 'class (c|C)', 'enum (e|E)', + 'pipe (p|P)', 'service (s|S)', 'settings (st|ST)', 'thread (t|T)', diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index 026e572a..ab7beb4e 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -66,6 +66,7 @@ class StartupArgumentExtension(StartupExtensionABC): .add_console_argument(ArgumentTypeEnum.Variable, '', 'abc', ['a', 'A'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'class', ['c', 'C'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'enum', ['e', 'E'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'pipe', ['p', 'P'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'service', ['s', 'S'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'settings', ['st', 'ST'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'thread', ['t', 'T'], ' ') \ diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipe/__init__.py similarity index 95% rename from src/cpl_core/pipes/__init__.py rename to src/cpl_core/pipe/__init__.py index bf54bda3..b99969fa 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipe/__init__.py @@ -11,7 +11,7 @@ sh-edraft Common Python library """ -__title__ = 'cpl_core.pipes' +__title__ = 'cpl_core.pipe' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' diff --git a/src/cpl_core/pipes/first_char_to_lower_pipe.py b/src/cpl_core/pipe/first_char_to_lower_pipe.py similarity index 78% rename from src/cpl_core/pipes/first_char_to_lower_pipe.py rename to src/cpl_core/pipe/first_char_to_lower_pipe.py index 0daa6120..a9ad59fd 100644 --- a/src/cpl_core/pipes/first_char_to_lower_pipe.py +++ b/src/cpl_core/pipe/first_char_to_lower_pipe.py @@ -1,4 +1,4 @@ -from cpl_core.pipes.pipe_abc import PipeABC +from cpl_core.pipe.pipe_abc import PipeABC class FirstCharToLowerPipe(PipeABC): diff --git a/src/cpl_core/pipes/pipe_abc.py b/src/cpl_core/pipe/pipe_abc.py similarity index 100% rename from src/cpl_core/pipes/pipe_abc.py rename to src/cpl_core/pipe/pipe_abc.py -- 2.45.1 From 824d491ebcf863baace9b130df28b768478cc640 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 22 May 2022 18:49:31 +0200 Subject: [PATCH 035/140] Dev build projects --- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl_cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/validators/__init__.py | 4 ++-- src/cpl_core/cpl_core.json | 2 +- 22 files changed, 43 insertions(+), 43 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 25bcdc48..458fec43 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 10cb5c3c..90dc5674 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 1f8a42e0..766bce3c 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 825d010c..9d13f4f1 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 389c8635..9859e001 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index e5d81735..7e6b84e1 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index b3ffaa60..4a388111 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 9c3e5b97..836ce626 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 1f397f13..8040ac3a 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 66570b7d..8e990a5a 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index a51a0cc9..272dc58b 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index e8896599..bd4c6376 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 5c06dd3f..15c57e51 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index 925a726a..8dc739c6 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index eaaf9a10..1bc37caa 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index ad494b69..d78562ca 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 814c1316..fd56995c 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "7" + "Micro": "7.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.7" + "cpl-core>=2022.6.7.dev1" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 29527f0b..4960611e 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index 1acb5cf6..b386c513 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 6393c5bb..b2bf9556 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index aac26b89..614bdb05 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index 0d11a6ca..af26db2b 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "7" + "Micro": "7.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", -- 2.45.1 From cfb8838c733d3e652ee744ed64efea415d4d147a Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 22 May 2022 20:27:58 +0200 Subject: [PATCH 036/140] Added default pipes --- .../_templates/generate/pipe_template.py | 2 +- src/cpl_cli/cli.py | 2 +- src/cpl_cli/startup_argument_extension.py | 8 ++--- src/cpl_core/__init__.py | 4 +-- src/cpl_core/application/__init__.py | 4 +-- src/cpl_core/application/application_abc.py | 2 +- src/cpl_core/configuration/__init__.py | 4 +-- src/cpl_core/configuration/configuration.py | 5 ++-- src/cpl_core/console/__init__.py | 4 +-- src/cpl_core/database/__init__.py | 4 +-- src/cpl_core/database/connection/__init__.py | 4 +-- src/cpl_core/database/context/__init__.py | 4 +-- src/cpl_core/dependency_injection/__init__.py | 4 +-- .../dependency_injection/service_provider.py | 1 + src/cpl_core/environment/__init__.py | 4 +-- src/cpl_core/logging/__init__.py | 4 +-- src/cpl_core/mailing/__init__.py | 4 +-- src/cpl_core/pipe/first_char_to_lower_pipe.py | 9 ------ src/cpl_core/{pipe => pipes}/__init__.py | 11 +++++-- src/cpl_core/pipes/bool_pipe.py | 9 ++++++ .../pipes/first_char_to_lower_pipe.py | 20 +++++++++++++ src/cpl_core/pipes/first_to_upper_pipe.py | 20 +++++++++++++ src/cpl_core/pipes/ip_address_pipe.py | 24 +++++++++++++++ src/cpl_core/{pipe => pipes}/pipe_abc.py | 0 src/cpl_core/pipes/to_camel_case_pipe.py | 28 ++++++++++++++++++ src/cpl_core/pipes/to_snake_case_pipe.py | 29 +++++++++++++++++++ src/cpl_core/time/__init__.py | 4 +-- src/cpl_core/utils/__init__.py | 4 +-- .../general/src/general/parameter_startup.py | 3 +- .../custom/general/src/general/startup.py | 17 +++++------ .../general/src/general/test_extension.py | 2 +- .../general/src/general/test_service.py | 11 +++---- 32 files changed, 190 insertions(+), 65 deletions(-) delete mode 100644 src/cpl_core/pipe/first_char_to_lower_pipe.py rename src/cpl_core/{pipe => pipes}/__init__.py (60%) create mode 100644 src/cpl_core/pipes/bool_pipe.py create mode 100644 src/cpl_core/pipes/first_char_to_lower_pipe.py create mode 100644 src/cpl_core/pipes/first_to_upper_pipe.py create mode 100644 src/cpl_core/pipes/ip_address_pipe.py rename src/cpl_core/{pipe => pipes}/pipe_abc.py (100%) create mode 100644 src/cpl_core/pipes/to_camel_case_pipe.py create mode 100644 src/cpl_core/pipes/to_snake_case_pipe.py diff --git a/src/cpl_cli/_templates/generate/pipe_template.py b/src/cpl_cli/_templates/generate/pipe_template.py index 129e13ba..bd8b4661 100644 --- a/src/cpl_cli/_templates/generate/pipe_template.py +++ b/src/cpl_cli/_templates/generate/pipe_template.py @@ -14,7 +14,7 @@ class PipeTemplate(TemplateFileABC): self._class_name = f'{String.first_to_upper(name)}{schematic_upper}' self._path = path self._value = textwrap.dedent("""\ - from cpl_core.pipe import PipeABC + from cpl_core.pipes.pipe_abc import PipeABC class $Name(PipeABC): diff --git a/src/cpl_cli/cli.py b/src/cpl_cli/cli.py index af128970..499a5939 100644 --- a/src/cpl_cli/cli.py +++ b/src/cpl_cli/cli.py @@ -5,7 +5,7 @@ from cpl_cli.error import Error from cpl_core.application.application_abc import ApplicationABC from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.console.console import Console -from cpl_core.dependency_injection import ServiceProviderABC +from cpl_core.dependency_injection.service_provider_abc import ServiceProviderABC class CLI(ApplicationABC): diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index ab7beb4e..29fc300d 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -17,12 +17,12 @@ from cpl_cli.command.version_service import VersionService from cpl_cli.configuration.workspace_settings import WorkspaceSettings from cpl_cli.validators.project_validator import ProjectValidator from cpl_cli.validators.workspace_validator import WorkspaceValidator -from cpl_core.application import StartupExtensionABC +from cpl_core.application.startup_extension_abc import StartupExtensionABC from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.dependency_injection.service_collection_abc import ServiceCollectionABC -from cpl_core.environment import ApplicationEnvironmentABC -from cpl_core.utils import String +from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC +from cpl_core.utils.string import String class StartupArgumentExtension(StartupExtensionABC): @@ -66,7 +66,7 @@ class StartupArgumentExtension(StartupExtensionABC): .add_console_argument(ArgumentTypeEnum.Variable, '', 'abc', ['a', 'A'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'class', ['c', 'C'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'enum', ['e', 'E'], ' ') \ - .add_console_argument(ArgumentTypeEnum.Variable, '', 'pipe', ['p', 'P'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'pipes', ['p', 'P'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'service', ['s', 'S'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'settings', ['st', 'ST'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'thread', ['t', 'T'], ' ') \ diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index f6a6761f..3fb3894e 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 641e09f3..59986ba6 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_core/application/application_abc.py b/src/cpl_core/application/application_abc.py index 037a73d2..06e01e24 100644 --- a/src/cpl_core/application/application_abc.py +++ b/src/cpl_core/application/application_abc.py @@ -4,7 +4,7 @@ from typing import Optional from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.console.console import Console from cpl_core.dependency_injection.service_provider_abc import ServiceProviderABC -from cpl_core.environment import ApplicationEnvironmentABC +from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC class ApplicationABC(ABC): diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index e0fd7816..a7033c79 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index c0dd8302..3de4fbc2 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -1,13 +1,12 @@ import json import os import sys -import traceback from collections.abc import Callable from typing import Union, Type, Optional -from cpl_cli.command_abc import CommandABC from cpl_core.configuration.argument_abc import ArgumentABC from cpl_core.configuration.argument_builder import ArgumentBuilder +from cpl_core.configuration.argument_executable_abc import ArgumentExecutableABC from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC @@ -306,7 +305,7 @@ class Configuration(ConfigurationABC): if abort: continue - cmd: CommandABC = services.get_service(exe.executable_type) + cmd: ArgumentExecutableABC = services.get_service(exe.executable_type) self.add_configuration('ACTIVE_EXECUTABLE', exe.name) cmd.execute(self._additional_arguments) prevent = exe.prevent_next_executable diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index fe05277d..1fa33ae9 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index c0c1ebf1..138e67f9 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 5815d9d6..524aac46 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index c8e89de1..6f7e96d5 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index afe969a5..0f407f7c 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_core/dependency_injection/service_provider.py b/src/cpl_core/dependency_injection/service_provider.py index 39f298b7..45687060 100644 --- a/src/cpl_core/dependency_injection/service_provider.py +++ b/src/cpl_core/dependency_injection/service_provider.py @@ -4,6 +4,7 @@ from typing import Optional from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC +from cpl_core.console import Console from cpl_core.database.context.database_context_abc import DatabaseContextABC from cpl_core.dependency_injection.scope_abc import ScopeABC from cpl_core.dependency_injection.scope_builder import ScopeBuilder diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 59b62db7..49649053 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 1d30290c..484ffa50 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index a773c1d1..30f30f15 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_core/pipe/first_char_to_lower_pipe.py b/src/cpl_core/pipe/first_char_to_lower_pipe.py deleted file mode 100644 index a9ad59fd..00000000 --- a/src/cpl_core/pipe/first_char_to_lower_pipe.py +++ /dev/null @@ -1,9 +0,0 @@ -from cpl_core.pipe.pipe_abc import PipeABC - - -class FirstCharToLowerPipe(PipeABC): - - def __init__(self): pass - - def transform(self, value: any, *args): - return f'{value[0].lower()}{value[1:]}' diff --git a/src/cpl_core/pipe/__init__.py b/src/cpl_core/pipes/__init__.py similarity index 60% rename from src/cpl_core/pipe/__init__.py rename to src/cpl_core/pipes/__init__.py index b99969fa..87d8e91b 100644 --- a/src/cpl_core/pipe/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -11,17 +11,22 @@ sh-edraft Common Python library """ -__title__ = 'cpl_core.pipe' +__title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple # imports: +from .bool_pipe import BoolPipe from .first_char_to_lower_pipe import FirstCharToLowerPipe +from .first_to_upper_pipe import FirstToUpperPipe +from .ip_address_pipe import IPAddressPipe from .pipe_abc import PipeABC +from .to_camel_case_pipe import ToCamelCasePipe +from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_core/pipes/bool_pipe.py b/src/cpl_core/pipes/bool_pipe.py new file mode 100644 index 00000000..daf3ad94 --- /dev/null +++ b/src/cpl_core/pipes/bool_pipe.py @@ -0,0 +1,9 @@ +from cpl_core.pipes.pipe_abc import PipeABC + + +class BoolPipe(PipeABC): + + def __init__(self): pass + + def transform(self, value: bool, *args): + return 'True' if value else 'False' diff --git a/src/cpl_core/pipes/first_char_to_lower_pipe.py b/src/cpl_core/pipes/first_char_to_lower_pipe.py new file mode 100644 index 00000000..59b5c80d --- /dev/null +++ b/src/cpl_core/pipes/first_char_to_lower_pipe.py @@ -0,0 +1,20 @@ +from cpl_core.pipes.pipe_abc import PipeABC + + +class FirstCharToLowerPipe(PipeABC): + + def __init__(self): pass + + def transform(self, value: any, *args): + r"""Converts first char to lower + + Parameter + --------- + value: :class:`str` + String to convert + + Returns + ------- + String with first char as lower + """ + return f'{value[0].lower()}{value[1:]}' diff --git a/src/cpl_core/pipes/first_to_upper_pipe.py b/src/cpl_core/pipes/first_to_upper_pipe.py new file mode 100644 index 00000000..c6787b60 --- /dev/null +++ b/src/cpl_core/pipes/first_to_upper_pipe.py @@ -0,0 +1,20 @@ +from cpl_core.pipes.pipe_abc import PipeABC + + +class FirstToUpperPipe(PipeABC): + + def __init__(self): pass + + def transform(self, value: str, *args): + r"""Converts first char to upper + + Parameter + --------- + chars: :class:`str` + String to convert + + Returns + ------- + String with first char as upper + """ + return f'{value[0].upper()}{value[1:]}' diff --git a/src/cpl_core/pipes/ip_address_pipe.py b/src/cpl_core/pipes/ip_address_pipe.py new file mode 100644 index 00000000..a33852b3 --- /dev/null +++ b/src/cpl_core/pipes/ip_address_pipe.py @@ -0,0 +1,24 @@ +from cpl_core.pipes.pipe_abc import PipeABC + + +class IPAddressPipe(PipeABC): + + def __init__(self): pass + + def transform(self, value: list[int], *args): + string = "" + + if len(value) != 4: + raise Exception('Invalid IP') + + for i in range(0, len(value)): + byte = value[i] + if byte > 255: + raise Exception('Invalid IP') + + if i == len(value) - 1: + string += f'{byte}' + else: + string += f'{byte}.' + + return string diff --git a/src/cpl_core/pipe/pipe_abc.py b/src/cpl_core/pipes/pipe_abc.py similarity index 100% rename from src/cpl_core/pipe/pipe_abc.py rename to src/cpl_core/pipes/pipe_abc.py diff --git a/src/cpl_core/pipes/to_camel_case_pipe.py b/src/cpl_core/pipes/to_camel_case_pipe.py new file mode 100644 index 00000000..69769b1e --- /dev/null +++ b/src/cpl_core/pipes/to_camel_case_pipe.py @@ -0,0 +1,28 @@ +import string + +from cpl_core.pipes import PipeABC + + +class ToCamelCasePipe(PipeABC): + + def __init__(self): pass + + def transform(self, value: str, *args) -> str: + r"""Converts string to camel case + + Parameter + --------- + chars: :class:`str` + String to convert + + Returns + ------- + String converted to CamelCase + """ + converted_name = value + char_set = string.punctuation + ' ' + for char in char_set: + if char in converted_name: + converted_name = ''.join(word.title() for word in converted_name.split(char)) + + return converted_name diff --git a/src/cpl_core/pipes/to_snake_case_pipe.py b/src/cpl_core/pipes/to_snake_case_pipe.py new file mode 100644 index 00000000..9b268af7 --- /dev/null +++ b/src/cpl_core/pipes/to_snake_case_pipe.py @@ -0,0 +1,29 @@ +import re + +from cpl_core.pipes import PipeABC + + +class ToSnakeCasePipe(PipeABC): + + def __init__(self): pass + + def transform(self, value: str, *args) -> str: + r"""Converts string to snake case + + Parameter + --------- + chars: :class:`str` + String to convert + + Returns + ------- + String converted to snake_case + """ + # convert to train-case to CamelCase + if '-' in value: + value = ''.join(word.title() for word in value.split('-')) + + pattern1 = re.compile(r'(.)([A-Z][a-z]+)') + pattern2 = re.compile(r'([a-z0-9])([A-Z])') + file_name = re.sub(pattern1, r'\1_\2', value) + return re.sub(pattern2, r'\1_\2', file_name).lower() diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index b4712aac..206931b3 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 934ebe3f..2da0bcb3 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.3' +__version__ = '2022.6.7.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='3') +version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') diff --git a/src/tests/custom/general/src/general/parameter_startup.py b/src/tests/custom/general/src/general/parameter_startup.py index 449956f0..81380936 100644 --- a/src/tests/custom/general/src/general/parameter_startup.py +++ b/src/tests/custom/general/src/general/parameter_startup.py @@ -1,6 +1,5 @@ from cpl_core.application import StartupExtensionABC -from cpl_core.configuration import ConfigurationABC -from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum +from cpl_core.configuration import ConfigurationABC, ArgumentTypeEnum from cpl_core.dependency_injection import ServiceCollectionABC from cpl_core.environment import ApplicationEnvironmentABC from arguments.generate_argument import GenerateArgument diff --git a/src/tests/custom/general/src/general/startup.py b/src/tests/custom/general/src/general/startup.py index 34337e03..941dc1ef 100644 --- a/src/tests/custom/general/src/general/startup.py +++ b/src/tests/custom/general/src/general/startup.py @@ -1,12 +1,10 @@ -from cpl_core.application.startup_abc import StartupABC -from cpl_core.configuration.configuration_abc import ConfigurationABC -from cpl_core.dependency_injection.service_collection_abc import ServiceCollectionABC -from cpl_core.dependency_injection.service_provider_abc import ServiceProviderABC -from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC -from cpl_core.logging.logger_service import Logger -from cpl_core.logging.logger_abc import LoggerABC -from cpl_core.mailing.email_client_service import EMailClient -from cpl_core.mailing.email_client_abc import EMailClientABC +from cpl_core.application import StartupABC +from cpl_core.configuration import ConfigurationABC +from cpl_core.dependency_injection import ServiceCollectionABC, ServiceProviderABC +from cpl_core.environment import ApplicationEnvironmentABC +from cpl_core.logging import Logger, LoggerABC +from cpl_core.mailing import EMailClient, EMailClientABC +from cpl_core.pipes import IPAddressPipe from test_service import TestService @@ -27,6 +25,7 @@ class Startup(StartupABC): def configure_services(self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC) -> ServiceProviderABC: services.add_singleton(LoggerABC, Logger) services.add_singleton(EMailClientABC, EMailClient) + services.add_transient(IPAddressPipe) services.add_singleton(TestService) return services.build_service_provider() diff --git a/src/tests/custom/general/src/general/test_extension.py b/src/tests/custom/general/src/general/test_extension.py index b314c665..be766d33 100644 --- a/src/tests/custom/general/src/general/test_extension.py +++ b/src/tests/custom/general/src/general/test_extension.py @@ -1,4 +1,4 @@ -from cpl_core.application.application_extension_abc import ApplicationExtensionABC +from cpl_core.application import ApplicationExtensionABC from cpl_core.configuration import ConfigurationABC from cpl_core.console import Console from cpl_core.dependency_injection import ServiceProviderABC diff --git a/src/tests/custom/general/src/general/test_service.py b/src/tests/custom/general/src/general/test_service.py index 94600a42..3274b8dc 100644 --- a/src/tests/custom/general/src/general/test_service.py +++ b/src/tests/custom/general/src/general/test_service.py @@ -1,15 +1,16 @@ -from abc import ABC - from cpl_core.console.console import Console from cpl_core.dependency_injection import ServiceProviderABC +from cpl_core.pipes.ip_address_pipe import IPAddressPipe -class TestService(ABC): +class TestService: - def __init__(self, provider: ServiceProviderABC): - ABC.__init__(self) + def __init__(self, provider: ServiceProviderABC, ip_pipe: IPAddressPipe): self._provider = provider + self._ip_pipe = ip_pipe def run(self): Console.write_line('Hello World!', self._provider) + ip = [192, 168, 178, 30] + Console.write_line(ip, self._ip_pipe.transform(ip)) -- 2.45.1 From 90e97433e064f512e5a5fbbe0234569696433f72 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Tue, 24 May 2022 17:37:31 +0200 Subject: [PATCH 037/140] Added logic to load all environment variables by prefix --- src/cpl_core/configuration/configuration.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index 3de4fbc2..2b882fb0 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -200,10 +200,11 @@ class Configuration(ConfigurationABC): self._additional_arguments.append(arg_str) def add_environment_variables(self, prefix: str): - for variable in ConfigurationVariableNameEnum.to_list(): - var_name = f'{prefix}{variable}' - if var_name in [key.upper() for key in os.environ.keys()]: - self._set_variable(variable, os.environ[var_name]) + for env_var in os.environ.keys(): + if not env_var.startswith(prefix): + continue + + self._set_variable(env_var.replace(prefix, ''), os.environ[env_var]) def add_console_argument(self, argument: ArgumentABC): self._argument_types.append(argument) -- 2.45.1 From 1c94fb5bd14ab138c81727e75fb910b5a3ab90f9 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Tue, 24 May 2022 17:51:17 +0200 Subject: [PATCH 038/140] Added logic to load singletons when requested not when registered --- .../service_collection.py | 35 +++++++------------ .../custom/general/src/general/application.py | 5 +++ .../general/src/general/parameter_startup.py | 4 +-- 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/src/cpl_core/dependency_injection/service_collection.py b/src/cpl_core/dependency_injection/service_collection.py index 1b428a8c..a608c710 100644 --- a/src/cpl_core/dependency_injection/service_collection.py +++ b/src/cpl_core/dependency_injection/service_collection.py @@ -1,5 +1,7 @@ from typing import Union, Type, Callable, Optional +import lifetime as lifetime + from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.database.database_settings import DatabaseSettings from cpl_core.database.context.database_context_abc import DatabaseContextABC @@ -37,6 +39,14 @@ class ServiceCollection(ServiceCollectionABC): self._service_descriptors.append(ServiceDescriptor(service, lifetime)) + def _add_descriptor_by_lifetime(self, service_type: Type, lifetime: ServiceLifetimeEnum, service: Callable = None): + if service is not None: + self._add_descriptor(service, lifetime) + else: + self._add_descriptor(service_type, lifetime) + + return self + def add_db_context(self, db_context_type: Type[DatabaseContextABC], db_settings: DatabaseSettings): self.add_singleton(DatabaseContextABC, db_context_type) self._database_context = self.build_service_provider().get_service(DatabaseContextABC) @@ -46,34 +56,15 @@ class ServiceCollection(ServiceCollectionABC): self.add_singleton(LoggerABC, Logger) def add_singleton(self, service_type: Union[type, object], service: Union[type, object] = None): - impl = None - if service is not None: - if isinstance(service, type): - impl = self.build_service_provider().build_service(service) - - self._add_descriptor(impl, ServiceLifetimeEnum.singleton) - else: - if isinstance(service_type, type): - impl = self.build_service_provider().build_service(service_type) - - self._add_descriptor(impl, ServiceLifetimeEnum.singleton) - + self._add_descriptor_by_lifetime(service_type, ServiceLifetimeEnum.singleton, service) return self def add_scoped(self, service_type: Type, service: Callable = None): - if service is not None: - self._add_descriptor(service, ServiceLifetimeEnum.scoped) - else: - self._add_descriptor(service_type, ServiceLifetimeEnum.scoped) - + self._add_descriptor_by_lifetime(service_type, ServiceLifetimeEnum.scoped, service) return self def add_transient(self, service_type: type, service: type = None): - if service is not None: - self._add_descriptor(service, ServiceLifetimeEnum.transient) - else: - self._add_descriptor(service_type, ServiceLifetimeEnum.transient) - + self._add_descriptor_by_lifetime(service_type, ServiceLifetimeEnum.transient, service) return self def build_service_provider(self) -> ServiceProviderABC: diff --git a/src/tests/custom/general/src/general/application.py b/src/tests/custom/general/src/general/application.py index c3113fb8..8f282560 100644 --- a/src/tests/custom/general/src/general/application.py +++ b/src/tests/custom/general/src/general/application.py @@ -7,6 +7,7 @@ from cpl_core.console.console import Console from cpl_core.dependency_injection import ServiceProviderABC from cpl_core.logging.logger_abc import LoggerABC from cpl_core.mailing import EMailClientABC, EMail +from cpl_core.pipes import IPAddressPipe from test_service import TestService @@ -43,5 +44,9 @@ class Application(ApplicationABC): self._logger.debug(__name__, f'Customer: {self._configuration.environment.customer}') Console.spinner('Test', self._wait, 2, spinner_foreground_color='red') test: TestService = self._services.get_service(TestService) + ip_pipe: IPAddressPipe = self._services.get_service(IPAddressPipe) test.run() + test2: TestService = self._services.get_service(TestService) + ip_pipe2: IPAddressPipe = self._services.get_service(IPAddressPipe) + Console.write_line(f'DI working: {test == test2 and ip_pipe != ip_pipe2}') # self.test_send_mail() diff --git a/src/tests/custom/general/src/general/parameter_startup.py b/src/tests/custom/general/src/general/parameter_startup.py index 81380936..a8a7d08e 100644 --- a/src/tests/custom/general/src/general/parameter_startup.py +++ b/src/tests/custom/general/src/general/parameter_startup.py @@ -1,9 +1,9 @@ +from arguments.generate_argument import GenerateArgument +from arguments.install_argument import InstallArgument from cpl_core.application import StartupExtensionABC from cpl_core.configuration import ConfigurationABC, ArgumentTypeEnum from cpl_core.dependency_injection import ServiceCollectionABC from cpl_core.environment import ApplicationEnvironmentABC -from arguments.generate_argument import GenerateArgument -from arguments.install_argument import InstallArgument class ParameterStartup(StartupExtensionABC): -- 2.45.1 From 35ecf158a2854ba32b81a5b0883eab7d1d84c936 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Tue, 24 May 2022 18:13:39 +0200 Subject: [PATCH 039/140] Fixed loading by base_type --- src/cpl_core/dependency_injection/service_collection.py | 8 ++++---- src/cpl_core/dependency_injection/service_descriptor.py | 9 ++++++++- src/cpl_core/dependency_injection/service_provider.py | 2 +- src/tests/custom/general/src/general/application.py | 1 + 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/cpl_core/dependency_injection/service_collection.py b/src/cpl_core/dependency_injection/service_collection.py index a608c710..51817b2d 100644 --- a/src/cpl_core/dependency_injection/service_collection.py +++ b/src/cpl_core/dependency_injection/service_collection.py @@ -1,4 +1,4 @@ -from typing import Union, Type, Callable, Optional +from typing import Union, Type, Callable, Optional, overload import lifetime as lifetime @@ -24,7 +24,7 @@ class ServiceCollection(ServiceCollectionABC): self._database_context: Optional[DatabaseContextABC] = None self._service_descriptors: list[ServiceDescriptor] = [] - def _add_descriptor(self, service: Union[type, object], lifetime: ServiceLifetimeEnum): + def _add_descriptor(self, service: Union[type, object], lifetime: ServiceLifetimeEnum, base_type: Callable = None): found = False for descriptor in self._service_descriptors: if isinstance(service, descriptor.service_type): @@ -37,11 +37,11 @@ class ServiceCollection(ServiceCollectionABC): raise Exception(f'Service of type {service_type} already exists') - self._service_descriptors.append(ServiceDescriptor(service, lifetime)) + self._service_descriptors.append(ServiceDescriptor(service, lifetime, base_type)) def _add_descriptor_by_lifetime(self, service_type: Type, lifetime: ServiceLifetimeEnum, service: Callable = None): if service is not None: - self._add_descriptor(service, lifetime) + self._add_descriptor(service, lifetime, service_type) else: self._add_descriptor(service_type, lifetime) diff --git a/src/cpl_core/dependency_injection/service_descriptor.py b/src/cpl_core/dependency_injection/service_descriptor.py index 2188ffd0..1c559b1f 100644 --- a/src/cpl_core/dependency_injection/service_descriptor.py +++ b/src/cpl_core/dependency_injection/service_descriptor.py @@ -1,5 +1,6 @@ from typing import Union, Optional +from cpl_core.console import Console from cpl_core.dependency_injection.service_lifetime_enum import ServiceLifetimeEnum @@ -14,7 +15,7 @@ class ServiceDescriptor: Lifetime of the service """ - def __init__(self, implementation: Union[type, Optional[object]], lifetime: ServiceLifetimeEnum): + def __init__(self, implementation: Union[type, Optional[object]], lifetime: ServiceLifetimeEnum, base_type=None): self._service_type = implementation self._implementation = implementation @@ -25,10 +26,16 @@ class ServiceDescriptor: else: self._implementation = None + self._base_type = base_type if base_type is not None else self._service_type + @property def service_type(self) -> type: return self._service_type + @property + def base_type(self) -> type: + return self._base_type + @property def implementation(self) -> Union[type, Optional[object]]: return self._implementation diff --git a/src/cpl_core/dependency_injection/service_provider.py b/src/cpl_core/dependency_injection/service_provider.py index 45687060..acf3cb95 100644 --- a/src/cpl_core/dependency_injection/service_provider.py +++ b/src/cpl_core/dependency_injection/service_provider.py @@ -37,7 +37,7 @@ class ServiceProvider(ServiceProviderABC): def _find_service(self, service_type: type) -> Optional[ServiceDescriptor]: for descriptor in self._service_descriptors: - if descriptor.service_type == service_type or issubclass(descriptor.service_type, service_type): + if descriptor.service_type == service_type or issubclass(descriptor.base_type, service_type): return descriptor return None diff --git a/src/tests/custom/general/src/general/application.py b/src/tests/custom/general/src/general/application.py index 8f282560..c8889159 100644 --- a/src/tests/custom/general/src/general/application.py +++ b/src/tests/custom/general/src/general/application.py @@ -49,4 +49,5 @@ class Application(ApplicationABC): test2: TestService = self._services.get_service(TestService) ip_pipe2: IPAddressPipe = self._services.get_service(IPAddressPipe) Console.write_line(f'DI working: {test == test2 and ip_pipe != ip_pipe2}') + Console.write_line(self._services.get_service(LoggerABC)) # self.test_send_mail() -- 2.45.1 From 8900bdd446bc2426e70063c9b4cb8d03a01c720b Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Tue, 24 May 2022 18:20:31 +0200 Subject: [PATCH 040/140] Removed invalid import && build for rc1 --- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- .../_templates/new/console/source/name/__init__.py | 4 ++-- .../_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- .../_templates/new/library/source/name/__init__.py | 4 ++-- .../_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl_cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/validators/__init__.py | 4 ++-- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/cpl_core.json | 2 +- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- .../dependency_injection/service_collection.py | 10 ++++------ src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/pipes/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- src/cpl_query/__init__.py | 4 ++-- src/cpl_query/_query/__init__.py | 4 ++-- src/cpl_query/cpl_query.json | 4 ++-- src/cpl_query/extension/__init__.py | 4 ++-- 41 files changed, 83 insertions(+), 85 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 458fec43..dd9130b0 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 90dc5674..16b7f27a 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 766bce3c..09d7467f 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 9d13f4f1..a3cfab2b 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 9859e001..1a507cb6 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 7e6b84e1..3e5c078c 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 4a388111..904dab76 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 836ce626..0a57dd5c 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 8040ac3a..641845d0 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 8e990a5a..6d25f13a 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 272dc58b..3311bfb0 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index bd4c6376..11080dcc 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 15c57e51..8e2ac7b3 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index 8dc739c6..2f57860d 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 1bc37caa..4e8582d7 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index d78562ca..4ad35d94 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index fd56995c..1ff7835d 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "7.dev1" + "Micro": "0.rc1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.7.dev1" + "cpl-core>=2022.6.0.rc1" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 4960611e..a4eabf91 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index b386c513..065d351d 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index b2bf9556..b5afcf24 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index 614bdb05..3314e33c 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index 3fb3894e..c6641bef 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 59986ba6..5d037a20 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index a7033c79..c4028f6a 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index 1fa33ae9..fd894853 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index af26db2b..d4f71278 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "7.dev1" + "Micro": "0.rc1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index 138e67f9..f5ac69f3 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 524aac46..cb9e5717 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index 6f7e96d5..cf5dd3b8 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 0f407f7c..e79e12df 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/dependency_injection/service_collection.py b/src/cpl_core/dependency_injection/service_collection.py index 51817b2d..6a7c6f0d 100644 --- a/src/cpl_core/dependency_injection/service_collection.py +++ b/src/cpl_core/dependency_injection/service_collection.py @@ -1,17 +1,15 @@ -from typing import Union, Type, Callable, Optional, overload - -import lifetime as lifetime +from typing import Union, Type, Callable, Optional from cpl_core.configuration.configuration_abc import ConfigurationABC -from cpl_core.database.database_settings import DatabaseSettings from cpl_core.database.context.database_context_abc import DatabaseContextABC -from cpl_core.dependency_injection.service_provider_abc import ServiceProviderABC +from cpl_core.database.database_settings import DatabaseSettings from cpl_core.dependency_injection.service_collection_abc import ServiceCollectionABC from cpl_core.dependency_injection.service_descriptor import ServiceDescriptor from cpl_core.dependency_injection.service_lifetime_enum import ServiceLifetimeEnum from cpl_core.dependency_injection.service_provider import ServiceProvider -from cpl_core.logging.logger_service import Logger +from cpl_core.dependency_injection.service_provider_abc import ServiceProviderABC from cpl_core.logging.logger_abc import LoggerABC +from cpl_core.logging.logger_service import Logger class ServiceCollection(ServiceCollectionABC): diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 49649053..de305db6 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 484ffa50..8b5baa3a 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 30f30f15..26e7d1ec 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index 87d8e91b..ddf90ee8 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index 206931b3..7d4bbaef 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 2da0bcb3..0a8515b5 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.7.dev1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='7.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index a8a10c8c..e97c2e51 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index 04bc20d1..076ebaa0 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_query/cpl_query.json b/src/cpl_query/cpl_query.json index c8f9fc1b..e2b3468e 100644 --- a/src/cpl_query/cpl_query.json +++ b/src/cpl_query/cpl_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "1" + "Micro": "0.rc1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.1" + "cpl-core>=2022.6.0.rc1" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index ce0ee467..938ab636 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') -- 2.45.1 From f317035342050e3aaebda0502f35c051cdb43794 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Tue, 24 May 2022 19:20:55 +0200 Subject: [PATCH 041/140] Bugfixes for test application & added validators to cli --- src/cpl_cli/live_server/live_server_thread.py | 1 + src/cpl_cli/startup_argument_extension.py | 14 +++++++------- .../custom/general/src/general/application.py | 6 +++--- .../src/general/arguments/generate_argument.py | 3 +-- .../src/general/arguments/install_argument.py | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/cpl_cli/live_server/live_server_thread.py b/src/cpl_cli/live_server/live_server_thread.py index ed91165d..8824d2ee 100644 --- a/src/cpl_cli/live_server/live_server_thread.py +++ b/src/cpl_cli/live_server/live_server_thread.py @@ -60,6 +60,7 @@ class LiveServerThread(threading.Thread): Starts the CPL project :return: """ + Console.write_line(self._build_settings.main) main = self._build_settings.main if '.' in self._build_settings.main: length = len(self._build_settings.main.split('.')) - 1 diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index 29fc300d..6ec1cd3a 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -59,7 +59,7 @@ class StartupArgumentExtension(StartupExtensionABC): def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC): config.add_json_file('cpl-workspace.json', path=env.working_directory, optional=True, output=False) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'add', ['a', 'A'], AddService, True) \ + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'add', ['a', 'A'], AddService, True, validators=[WorkspaceValidator]) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'build', ['b', 'B'], BuildService, True, validators=[ProjectValidator]) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'generate', ['g', 'G'], GenerateService, True) \ @@ -71,20 +71,20 @@ class StartupArgumentExtension(StartupExtensionABC): .add_console_argument(ArgumentTypeEnum.Variable, '', 'settings', ['st', 'ST'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'thread', ['t', 'T'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'validator', ['v', 'V'], ' ') - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'install', ['i', 'I'], InstallService, True) \ + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'install', ['i', 'I'], InstallService, True, validators=[ProjectValidator]) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'new', ['n', 'N'], NewService, True) \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'console', ['c', 'C'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'library', ['l', 'L'], ' ') - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'publish', ['p', 'P'], PublishService, True) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'remove', ['r', 'R'], RemoveService, True) \ + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'publish', ['p', 'P'], PublishService, True, validators=[ProjectValidator]) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'remove', ['r', 'R'], RemoveService, True, validators=[WorkspaceValidator]) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'start', ['s', 'S'], StartService, True) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'uninstall', ['ui', 'UI'], UninstallService, True) \ + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'start', ['s', 'S'], StartService, True, validators=[ProjectValidator]) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'uninstall', ['ui', 'UI'], UninstallService, True, validators=[ProjectValidator]) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'update', ['u', 'U'], UpdateService, True) \ + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'update', ['u', 'U'], UpdateService, True, validators=[ProjectValidator]) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'version', ['v', 'V'], VersionService, True) diff --git a/src/tests/custom/general/src/general/application.py b/src/tests/custom/general/src/general/application.py index c8889159..648ef428 100644 --- a/src/tests/custom/general/src/general/application.py +++ b/src/tests/custom/general/src/general/application.py @@ -1,11 +1,11 @@ import time from typing import Optional -from cpl_core.application import ApplicationABC +from cpl_core.application.application_abc import ApplicationABC from cpl_core.configuration import ConfigurationABC -from cpl_core.console.console import Console +from cpl_core.console import Console from cpl_core.dependency_injection import ServiceProviderABC -from cpl_core.logging.logger_abc import LoggerABC +from cpl_core.logging import LoggerABC from cpl_core.mailing import EMailClientABC, EMail from cpl_core.pipes import IPAddressPipe from test_service import TestService diff --git a/src/tests/custom/general/src/general/arguments/generate_argument.py b/src/tests/custom/general/src/general/arguments/generate_argument.py index c66c7738..1114706b 100644 --- a/src/tests/custom/general/src/general/arguments/generate_argument.py +++ b/src/tests/custom/general/src/general/arguments/generate_argument.py @@ -1,5 +1,4 @@ -from cpl_core.configuration import ConfigurationABC -from cpl_core.configuration.argument_executable_abc import ArgumentExecutableABC +from cpl_core.configuration import ConfigurationABC, ArgumentExecutableABC from cpl_core.console import Console from cpl_core.environment import ApplicationEnvironmentABC diff --git a/src/tests/custom/general/src/general/arguments/install_argument.py b/src/tests/custom/general/src/general/arguments/install_argument.py index ec53cf5a..b99c7bd3 100644 --- a/src/tests/custom/general/src/general/arguments/install_argument.py +++ b/src/tests/custom/general/src/general/arguments/install_argument.py @@ -1,4 +1,4 @@ -from cpl_core.configuration.argument_executable_abc import ArgumentExecutableABC +from cpl_core.configuration import ArgumentExecutableABC from cpl_core.console import Console -- 2.45.1 From a590cfd066a673555236eb547c9d27e91cafde65 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Tue, 24 May 2022 20:12:59 +0200 Subject: [PATCH 042/140] Bugfixes for start service --- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- .../_templates/new/console/source/__init__.py | 4 ++-- .../new/console/source/name/__init__.py | 4 ++-- .../new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- .../_templates/new/library/source/__init__.py | 4 ++-- .../new/library/source/name/__init__.py | 4 ++-- .../new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl_cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/live_server/live_server_thread.py | 8 +++++--- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/startup_argument_extension.py | 16 ++++++++++------ src/cpl_cli/validators/__init__.py | 4 ++-- src/cpl_cli/validators/project_validator.py | 18 +++++++++++++++--- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/configuration/configuration.py | 5 +++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/cpl_core.json | 2 +- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/pipes/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- src/cpl_query/__init__.py | 4 ++-- src/cpl_query/_query/__init__.py | 4 ++-- src/cpl_query/cpl_query.json | 4 ++-- src/cpl_query/extension/__init__.py | 4 ++-- .../custom/general/src/general/application.py | 3 +++ .../custom/general/src/general/startup.py | 2 +- 46 files changed, 116 insertions(+), 94 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index dd9130b0..f3ca3736 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 16b7f27a..acffcedb 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 09d7467f..5279f4e4 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index a3cfab2b..ce3673a1 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 1a507cb6..ef172265 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 3e5c078c..20764c00 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 904dab76..5614e4d3 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 0a57dd5c..a29b81ee 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 641845d0..59230eaf 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 6d25f13a..2cb1352e 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 3311bfb0..9434e616 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 11080dcc..91f30c0b 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 8e2ac7b3..f16b2616 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index 2f57860d..16d2f507 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 4e8582d7..bc697505 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index 4ad35d94..dc79dcd4 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 1ff7835d..5b11a4af 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "0.rc1" + "Micro": "1.dev2" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.0.rc1" + "cpl-core>=2022.6.1.dev2" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index a4eabf91..54a68f6f 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/live_server/live_server_thread.py b/src/cpl_cli/live_server/live_server_thread.py index 8824d2ee..efd1f988 100644 --- a/src/cpl_cli/live_server/live_server_thread.py +++ b/src/cpl_cli/live_server/live_server_thread.py @@ -60,7 +60,6 @@ class LiveServerThread(threading.Thread): Starts the CPL project :return: """ - Console.write_line(self._build_settings.main) main = self._build_settings.main if '.' in self._build_settings.main: length = len(self._build_settings.main.split('.')) - 1 @@ -89,7 +88,10 @@ class LiveServerThread(threading.Thread): Console.set_foreground_color(ForegroundColorEnum.default) self._command = [self._executable, self._main] - if len(self._args) > 0: - self._command.append(''.join(self._args)) + # if len(self._args) > 0: + # self._command.append(' '.join(self._args)) + for arg in self._args: + self._command.append(arg) + Console.write_line(self._command) subprocess.run(self._command, env=self._env_vars) diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index 065d351d..ab11fb75 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index b5afcf24..79fe7928 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index 6ec1cd3a..bca0aa46 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -31,10 +31,10 @@ class StartupArgumentExtension(StartupExtensionABC): pass @staticmethod - def _search_project_json(env: ApplicationEnvironmentABC) -> Optional[str]: + def _search_project_json(working_directory: str) -> Optional[str]: project_name = None - name = os.path.basename(env.working_directory) - for r, d, f in os.walk(env.working_directory): + name = os.path.basename(working_directory) + for r, d, f in os.walk(working_directory): for file in f: if file.endswith('.json'): f_name = file.split('.json')[0] @@ -49,10 +49,14 @@ class StartupArgumentExtension(StartupExtensionABC): if workspace is not None: for script in workspace.scripts: config.create_console_argument(ArgumentTypeEnum.Executable, '', script, [], CustomScriptService) + return - project = workspace.projects[workspace.default_project] - else: - project = f'{self._search_project_json(env)}.json' + project = self._search_project_json(env.working_directory) + if project is not None: + project = f'{project}.json' + + if project is None: + return config.add_json_file(project, optional=True, output=False) diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index 3314e33c..11111016 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_cli/validators/project_validator.py b/src/cpl_cli/validators/project_validator.py index 4f21d0e2..bfd0cf80 100644 --- a/src/cpl_cli/validators/project_validator.py +++ b/src/cpl_cli/validators/project_validator.py @@ -1,17 +1,29 @@ +import os + from cpl_cli import Error from cpl_cli.configuration import WorkspaceSettings, ProjectSettings +from cpl_core.configuration import ConfigurationABC from cpl_core.configuration.validator_abc import ValidatorABC +from cpl_core.environment import ApplicationEnvironmentABC class ProjectValidator(ValidatorABC): - def __init__(self, workspace: WorkspaceSettings, project: ProjectSettings): - self._workspace = workspace - self._project = project + def __init__(self, config: ConfigurationABC, env: ApplicationEnvironmentABC, workspace: WorkspaceSettings, project: ProjectSettings): + self._config: ConfigurationABC = config + self._env: ApplicationEnvironmentABC = env + self._workspace: WorkspaceSettings = workspace + self._project: ProjectSettings = project ValidatorABC.__init__(self) def validate(self) -> bool: + if self._project is None and self._workspace is not None: + project = self._workspace.projects[self._workspace.default_project] + self._config.add_json_file(project, optional=True, output=False) + self._project = self._config.get_configuration(ProjectSettings) + self._env.set_working_directory(os.path.join(self._env.working_directory, os.path.dirname(project))) + result = self._project is not None or self._workspace is not None if not result: Error.error('The command requires to be run in an CPL project, but a project could not be found.') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index c6641bef..8701d7b3 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 5d037a20..0f6fd1f5 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index c4028f6a..54b37ca6 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index 2b882fb0..748590e3 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -1,6 +1,7 @@ import json import os import sys +import traceback from collections.abc import Callable from typing import Union, Type, Optional @@ -304,7 +305,7 @@ class Configuration(ConfigurationABC): break if abort: - continue + sys.exit() cmd: ArgumentExecutableABC = services.get_service(exe.executable_type) self.add_configuration('ACTIVE_EXECUTABLE', exe.name) @@ -312,7 +313,7 @@ class Configuration(ConfigurationABC): prevent = exe.prevent_next_executable success = True except Exception as e: - Console.error('An error occurred while executing arguments.') + Console.error('An error occurred while executing arguments.', traceback.format_exc()) sys.exit() return success diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index fd894853..a099b04a 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index d4f71278..cf40d12d 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "0.rc1" + "Micro": "1.dev2" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index f5ac69f3..7a47fd37 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index cb9e5717..6d846a21 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index cf5dd3b8..ba4fd73b 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index e79e12df..b5c83343 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index de305db6..551a3c11 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 8b5baa3a..66c76d41 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 26e7d1ec..5c942f2e 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index ddf90ee8..c180da44 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index 7d4bbaef..4aaace74 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 0a8515b5..2648dfa4 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index e97c2e51..eae682f3 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index 076ebaa0..6fd82c0e 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/cpl_query/cpl_query.json b/src/cpl_query/cpl_query.json index e2b3468e..c35e94b0 100644 --- a/src/cpl_query/cpl_query.json +++ b/src/cpl_query/cpl_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "0.rc1" + "Micro": "1.dev2" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.0.rc1" + "cpl-core>=2022.6.1.dev2" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index 938ab636..4469bc70 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.0rc1' +__version__ = '2022.6.1.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') diff --git a/src/tests/custom/general/src/general/application.py b/src/tests/custom/general/src/general/application.py index 648ef428..d83d569b 100644 --- a/src/tests/custom/general/src/general/application.py +++ b/src/tests/custom/general/src/general/application.py @@ -37,8 +37,11 @@ class Application(ApplicationABC): self._mailer = self._services.get_service(EMailClientABC) def main(self): + self._configuration.parse_console_arguments(self._services) + if self._configuration.environment.application_name != '': self._logger.header(f'{self._configuration.environment.application_name}:') + self._logger.debug(__name__, f'Args: {self._configuration.additional_arguments}') self._logger.debug(__name__, f'Host: {self._configuration.environment.host_name}') self._logger.debug(__name__, f'Environment: {self._configuration.environment.environment_name}') self._logger.debug(__name__, f'Customer: {self._configuration.environment.customer}') diff --git a/src/tests/custom/general/src/general/startup.py b/src/tests/custom/general/src/general/startup.py index 941dc1ef..e4b7d4f5 100644 --- a/src/tests/custom/general/src/general/startup.py +++ b/src/tests/custom/general/src/general/startup.py @@ -15,7 +15,7 @@ class Startup(StartupABC): def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC) -> ConfigurationABC: config.add_environment_variables('PYTHON_') - config.add_environment_variables('CPL_') + config.add_environment_variables('CPLT_') config.add_json_file(f'appsettings.json') config.add_json_file(f'appsettings.{config.environment.environment_name}.json') config.add_json_file(f'appsettings.{config.environment.host_name}.json', optional=True) -- 2.45.1 From f83755ac774919207794f64ff79ce2b04b5cda03 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Tue, 24 May 2022 20:20:42 +0200 Subject: [PATCH 043/140] Removed console output & build new dev version --- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl_cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/live_server/live_server_thread.py | 1 - src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/validators/__init__.py | 4 ++-- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/cpl_core.json | 2 +- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/pipes/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- src/cpl_query/__init__.py | 4 ++-- src/cpl_query/_query/__init__.py | 4 ++-- src/cpl_query/cpl_query.json | 4 ++-- src/cpl_query/extension/__init__.py | 4 ++-- 41 files changed, 79 insertions(+), 80 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index f3ca3736..cb505c8b 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index acffcedb..d5df0517 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 5279f4e4..d858ee52 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index ce3673a1..55ddb78b 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index ef172265..6856c973 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 20764c00..ecd47e45 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 5614e4d3..bd31b991 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index a29b81ee..a26e50c5 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 59230eaf..7fe376ec 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 2cb1352e..de18ce9a 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 9434e616..ee44dc84 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 91f30c0b..ed0ff1ea 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index f16b2616..6c95bcea 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index 16d2f507..ec5fce4d 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index bc697505..f27a4c9d 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index dc79dcd4..e8218baf 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 5b11a4af..d0ecf4ec 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "1.dev2" + "Micro": "1.dev4" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.1.dev2" + "cpl-core>=2022.6.1.dev4" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 54a68f6f..85ec2412 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/live_server/live_server_thread.py b/src/cpl_cli/live_server/live_server_thread.py index efd1f988..3c88f841 100644 --- a/src/cpl_cli/live_server/live_server_thread.py +++ b/src/cpl_cli/live_server/live_server_thread.py @@ -93,5 +93,4 @@ class LiveServerThread(threading.Thread): for arg in self._args: self._command.append(arg) - Console.write_line(self._command) subprocess.run(self._command, env=self._env_vars) diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index ab11fb75..44325377 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 79fe7928..7e8d080d 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index 11111016..0f804e30 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index 8701d7b3..b290ac73 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 0f6fd1f5..0086ac0f 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 54b37ca6..3e6b196d 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index a099b04a..feb2015f 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index cf40d12d..addfe9be 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "1.dev2" + "Micro": "1.dev4" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index 7a47fd37..28527d76 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 6d846a21..19ffd858 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index ba4fd73b..df3de117 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index b5c83343..9883028d 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 551a3c11..724f9ece 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 66c76d41..9ecc5264 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 5c942f2e..0f59b2f6 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index c180da44..70b9c27e 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index 4aaace74..63a4cadf 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 2648dfa4..40a1f72d 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index eae682f3..4b7767bb 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index 6fd82c0e..5bc4bf00 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') diff --git a/src/cpl_query/cpl_query.json b/src/cpl_query/cpl_query.json index c35e94b0..3d143d21 100644 --- a/src/cpl_query/cpl_query.json +++ b/src/cpl_query/cpl_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "1.dev2" + "Micro": "1.dev4" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.1.dev2" + "cpl-core>=2022.6.1.dev4" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index 4469bc70..b045f5e3 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev2' +__version__ = '2022.6.1.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') -- 2.45.1 From 7a65dbe39b2bc78cff44d2cde317dcc4be63629c Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Tue, 24 May 2022 22:28:38 +0200 Subject: [PATCH 044/140] Readded logic to handle pre and post scripts from workspace --- src/cpl_cli/command/custom_script_service.py | 14 ++++++----- src/cpl_core/configuration/configuration.py | 26 ++++++++++++++++++++ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/cpl_cli/command/custom_script_service.py b/src/cpl_cli/command/custom_script_service.py index 4ed3d91f..4208b8d5 100644 --- a/src/cpl_cli/command/custom_script_service.py +++ b/src/cpl_cli/command/custom_script_service.py @@ -26,9 +26,11 @@ class CustomScriptService(CommandABC): cmd = self._config.get_configuration('ACTIVE_EXECUTABLE') for script in self._workspace.scripts: - if script == cmd: - command = self._workspace.scripts[script] - try: - subprocess.run(command, shell=True if os.name == 'posix' else None) - except Exception as e: - Console.error(str(e)) + if script != cmd: + continue + + command = self._workspace.scripts[script] + try: + subprocess.run(command, shell=True if os.name == 'posix' else None) + except Exception as e: + Console.error(str(e)) diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index 748590e3..4746808b 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -5,6 +5,8 @@ import traceback from collections.abc import Callable from typing import Union, Type, Optional +from cpl_cli.command.custom_script_service import CustomScriptService +from cpl_cli.configuration import WorkspaceSettings from cpl_core.configuration.argument_abc import ArgumentABC from cpl_core.configuration.argument_builder import ArgumentBuilder from cpl_core.configuration.argument_executable_abc import ArgumentExecutableABC @@ -154,6 +156,28 @@ class Configuration(ConfigurationABC): self._print_error(__name__, f'Cannot load config file: {file}! -> {e}') return {} + def _handle_pre_or_post_executables(self, pre: bool, argument: ExecutableArgument, services: ServiceProviderABC): + script_type = 'pre-' if pre else 'post-' + workspace: Optional[WorkspaceSettings] = self.get_configuration(WorkspaceSettings) + if workspace is None or len(workspace.scripts) == 0: + return + + for script in workspace.scripts: + if script_type not in script and not script.startswith(script_type): + continue + + # split in two ifs to prevent exception + if script.split(script_type)[1] != argument.name: + continue + + css: CustomScriptService = services.get_service(CustomScriptService) + if css is None: + continue + + Console.write_line() + self.add_configuration('ACTIVE_EXECUTABLE', script) + css.run([]) + def _parse_arguments(self, executables: list[ArgumentABC], arg_list: list[str], args_types: list[ArgumentABC]): for i in range(0, len(arg_list)): arg_str = arg_list[i] @@ -308,8 +332,10 @@ class Configuration(ConfigurationABC): sys.exit() cmd: ArgumentExecutableABC = services.get_service(exe.executable_type) + self._handle_pre_or_post_executables(True, exe, services) self.add_configuration('ACTIVE_EXECUTABLE', exe.name) cmd.execute(self._additional_arguments) + self._handle_pre_or_post_executables(False, exe, services) prevent = exe.prevent_next_executable success = True except Exception as e: -- 2.45.1 From 477d2d87d3a4a2a879993bf5bb675ce3f0da31df Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 08:41:35 +0200 Subject: [PATCH 045/140] Added run command --- src/cpl_cli/command/run_service.py | 53 +++++++++++++++++++++ src/cpl_cli/cpl_cli.json | 4 +- src/cpl_cli/startup_argument_extension.py | 3 ++ src/cpl_core/configuration/configuration.py | 2 +- src/cpl_core/cpl_core.json | 2 +- src/cpl_query/cpl_query.json | 4 +- 6 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 src/cpl_cli/command/run_service.py diff --git a/src/cpl_cli/command/run_service.py b/src/cpl_cli/command/run_service.py new file mode 100644 index 00000000..e6be3878 --- /dev/null +++ b/src/cpl_cli/command/run_service.py @@ -0,0 +1,53 @@ +import os +import textwrap + +from cpl_cli.command_abc import CommandABC +from cpl_core.console.console import Console +from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC +from cpl_cli.configuration.build_settings import BuildSettings +from cpl_cli.configuration.project_settings import ProjectSettings +from cpl_cli.live_server.live_server_thread import LiveServerThread + + +class RunService(CommandABC): + + def __init__(self, env: ApplicationEnvironmentABC, project_settings: ProjectSettings, build_settings: BuildSettings): + """ + Service for the CLI command start + :param env: + :param project_settings: + :param build_settings: + """ + CommandABC.__init__(self) + + self._env = env + self._project_settings = project_settings + self._build_settings = build_settings + + self._src_dir = os.path.join(self._env.working_directory, self._build_settings.source_path) + + self._args: list[str] = [] + + @property + def help_message(self) -> str: + return textwrap.dedent("""\ + Starts your application. + Usage: cpl run + """) + + def execute(self, args: list[str]): + """ + Entry point of command + :param args: + :return: + """ + ls_thread = LiveServerThread( + self._project_settings.python_executable, + self._src_dir, + self._args, + self._env, + self._build_settings + ) + ls_thread.start() + ls_thread.join() + Console.write_line() diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index d0ecf4ec..3aa44d54 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "1.dev4" + "Micro": "13" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.1.dev4" + "cpl-core>=2022.6.13" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index bca0aa46..1430e699 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -10,6 +10,7 @@ from cpl_cli.command.install_service import InstallService from cpl_cli.command.new_service import NewService from cpl_cli.command.publish_service import PublishService from cpl_cli.command.remove_service import RemoveService +from cpl_cli.command.run_service import RunService from cpl_cli.command.start_service import StartService from cpl_cli.command.uninstall_service import UninstallService from cpl_cli.command.update_service import UpdateService @@ -84,6 +85,7 @@ class StartupArgumentExtension(StartupExtensionABC): config.create_console_argument(ArgumentTypeEnum.Executable, '', 'publish', ['p', 'P'], PublishService, True, validators=[ProjectValidator]) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'remove', ['r', 'R'], RemoveService, True, validators=[WorkspaceValidator]) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) + config.create_console_argument(ArgumentTypeEnum.Executable, '', 'run', [], RunService, True, validators=[ProjectValidator]) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'start', ['s', 'S'], StartService, True, validators=[ProjectValidator]) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'uninstall', ['ui', 'UI'], UninstallService, True, validators=[ProjectValidator]) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) \ @@ -110,6 +112,7 @@ class StartupArgumentExtension(StartupExtensionABC): services.add_transient(NewService) services.add_transient(PublishService) services.add_transient(RemoveService) + services.add_transient(RunService) services.add_transient(StartService) services.add_transient(UninstallService) services.add_transient(UpdateService) diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index 4746808b..a0d1c6c1 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -339,7 +339,7 @@ class Configuration(ConfigurationABC): prevent = exe.prevent_next_executable success = True except Exception as e: - Console.error('An error occurred while executing arguments.', traceback.format_exc()) + Console.error('An error occurred while executing arguments.') sys.exit() return success diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index addfe9be..76e5aa9a 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "1.dev4" + "Micro": "13" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_query/cpl_query.json b/src/cpl_query/cpl_query.json index 3d143d21..3f69f1d3 100644 --- a/src/cpl_query/cpl_query.json +++ b/src/cpl_query/cpl_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "1.dev4" + "Micro": "13" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.1.dev4" + "cpl-core>=2022.6.13" ], "PythonVersion": ">=3.10", "PythonPath": {}, -- 2.45.1 From 9f4077a0732ad540d100a92096e1aace16629d87 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 13:11:41 +0200 Subject: [PATCH 046/140] Improved configuration --- src/cpl_core/configuration/configuration.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index a0d1c6c1..d4a83eb9 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -5,8 +5,6 @@ import traceback from collections.abc import Callable from typing import Union, Type, Optional -from cpl_cli.command.custom_script_service import CustomScriptService -from cpl_cli.configuration import WorkspaceSettings from cpl_core.configuration.argument_abc import ArgumentABC from cpl_core.configuration.argument_builder import ArgumentBuilder from cpl_core.configuration.argument_executable_abc import ArgumentExecutableABC @@ -158,6 +156,8 @@ class Configuration(ConfigurationABC): def _handle_pre_or_post_executables(self, pre: bool, argument: ExecutableArgument, services: ServiceProviderABC): script_type = 'pre-' if pre else 'post-' + + from cpl_cli.configuration.workspace_settings import WorkspaceSettings workspace: Optional[WorkspaceSettings] = self.get_configuration(WorkspaceSettings) if workspace is None or len(workspace.scripts) == 0: return @@ -170,12 +170,13 @@ class Configuration(ConfigurationABC): if script.split(script_type)[1] != argument.name: continue + from cpl_cli.command.custom_script_service import CustomScriptService css: CustomScriptService = services.get_service(CustomScriptService) if css is None: continue Console.write_line() - self.add_configuration('ACTIVE_EXECUTABLE', script) + self._set_variable('ACTIVE_EXECUTABLE', script) css.run([]) def _parse_arguments(self, executables: list[ArgumentABC], arg_list: list[str], args_types: list[ArgumentABC]): @@ -333,7 +334,7 @@ class Configuration(ConfigurationABC): cmd: ArgumentExecutableABC = services.get_service(exe.executable_type) self._handle_pre_or_post_executables(True, exe, services) - self.add_configuration('ACTIVE_EXECUTABLE', exe.name) + self._set_variable('ACTIVE_EXECUTABLE', exe.name) cmd.execute(self._additional_arguments) self._handle_pre_or_post_executables(False, exe, services) prevent = exe.prevent_next_executable -- 2.45.1 From a8756d493ad6b9a8b1c1157c8efca6627d11a5c3 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 13:19:12 +0200 Subject: [PATCH 047/140] Fixed error with RemoveService --- src/cpl_cli/command/remove_service.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/cpl_cli/command/remove_service.py b/src/cpl_cli/command/remove_service.py index 7d7dbe09..42462219 100644 --- a/src/cpl_cli/command/remove_service.py +++ b/src/cpl_cli/command/remove_service.py @@ -52,8 +52,9 @@ class RemoveService(CommandABC): project_json.write(json.dumps(content, indent=2)) project_json.close() - @staticmethod - def _remove_sources(path: str): + def _remove_sources(self, path: str): + if self._is_simulation: + return shutil.rmtree(path) def _create_workspace(self, path: str): -- 2.45.1 From 48c6941f1a488abefd99c2d696d7cfbdc9f44f2e Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 13:43:16 +0200 Subject: [PATCH 048/140] Added run command & tools/set-version project --- cpl-workspace.json | 14 +--- src/cpl_cli/command/run_service.py | 76 +++++++++++++---- src/cpl_cli/live_server/live_server_thread.py | 12 --- src/cpl_cli/live_server/start_executable.py | 81 +++++++++++++++++++ src/cpl_cli/startup.py | 6 +- src/cpl_cli/startup_argument_extension.py | 3 + src/cpl_core/configuration/configuration.py | 2 +- tools/set_version/__init__.py | 1 + tools/set_version/application.py | 16 ++++ tools/set_version/appsettings.json | 15 ++++ tools/set_version/main.py | 14 ++++ tools/set_version/set-version.json | 43 ++++++++++ tools/set_version/startup.py | 16 ++++ 13 files changed, 256 insertions(+), 43 deletions(-) create mode 100644 src/cpl_cli/live_server/start_executable.py create mode 100644 tools/set_version/__init__.py create mode 100644 tools/set_version/application.py create mode 100644 tools/set_version/appsettings.json create mode 100644 tools/set_version/main.py create mode 100644 tools/set_version/set-version.json create mode 100644 tools/set_version/startup.py diff --git a/cpl-workspace.json b/cpl-workspace.json index 116affef..5d9098a3 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -4,7 +4,8 @@ "Projects": { "cpl_core": "src/cpl_core/cpl_core.json", "cpl_cli": "src/cpl_cli/cpl_cli.json", - "cpl_query": "src/cpl_query/cpl_query.json" + "cpl_query": "src/cpl_query/cpl_query.json", + "set-version": "tools/set_version/set-version.json" }, "Scripts": { "hello-world": "echo 'Hello World'", @@ -12,55 +13,44 @@ "db": "cpl build-docs", "docs-open": "xdg-open $PWD/docs/build/html/index.html &", "do": "cpl docs-open", - "build-all": "cpl build-cli; cpl build-core; cpl build-query;", "ba": "cpl build-all", "build-cli": "echo 'Build cpl_cli'; cd ./src/cpl_cli; cpl build; cd ../../;", "build-core": "echo 'Build cpl_core'; cd ./src/cpl_core; cpl build; cd ../../;", "build-query": "echo 'Build cpl_query'; cd ./src/cpl_query; cpl build; cd ../../;", - "publish-all": "cpl publish-cli; cpl publish-core; cpl publish-query;", "pa": "cpl build-all", "publish-cli": "echo 'Publish cpl_cli'; cd ./src/cpl_cli; cpl publish; cd ../../;", "publish-core": "echo 'Publish cpl_core'; cd ./src/cpl_core; cpl publish; cd ../../;", "publish-query": "echo 'Publish cpl_query'; cd ./src/cpl_query; cpl publish; cd ../../;", - "upload-prod-cli": "echo 'PROD Upload cpl_cli'; cpl upl-prod-cli;", "upload-prod-core": "echo 'PROD Upload cpl_core'; cpl upl-prod-core;", "upload-prod-query": "echo 'PROD Upload cpl_query'; cpl upl-prod-query;", - "upload-exp-cli": "echo 'EXP Upload cpl_cli'; cpl upl-exp-cli;", "upload-exp-core": "echo 'EXP Upload cpl_core'; cpl upl-exp-core;", "upload-exp-query": "echo 'EXP Upload cpl_query'; cpl upl-exp-query;", - "upload-dev-cli": "echo 'DEV Upload cpl_cli'; cpl upl-dev-cli;", "upload-dev-core": "echo 'DEV Upload cpl_core'; cpl upl-dev-core;", "upload-dev-query": "echo 'DEV Upload cpl_query'; cpl upl-dev-query;", - "upl-prod-cli": "twine upload -r pip.sh-edraft.de dist/cpl-cli/publish/setup/*", "upl-prod-core": "twine upload -r pip.sh-edraft.de dist/cpl-core/publish/setup/*", "upl-prod-query": "twine upload -r pip.sh-edraft.de dist/cpl-query/publish/setup/*", - "upl-exp-cli": "twine upload -r pip-exp.sh-edraft.de dist/cpl-cli/publish/setup/*", "upl-exp-core": "twine upload -r pip-exp.sh-edraft.de dist/cpl-core/publish/setup/*", "upl-exp-query": "twine upload -r pip-exp.sh-edraft.de dist/cpl-query/publish/setup/*", - "upl-dev-cli": "twine upload -r pip-dev.sh-edraft.de dist/cpl-cli/publish/setup/*", "upl-dev-core": "twine upload -r pip-dev.sh-edraft.de dist/cpl-core/publish/setup/*", "upl-dev-query": "twine upload -r pip-dev.sh-edraft.de dist/cpl-query/publish/setup/*", - "deploy-prod": "cpl deploy-prod-cli; cpl deploy-prod-core; cpl deploy-prod-query;", "dp": "cpl deploy-prod", "deploy-prod-cli": "cpl publish-cli; cpl upload-prod-cli", "deploy-prod-core": "cpl publish-core; cpl upload-prod-core", "deploy-prod-query": "cpl publish-query; cpl upload-prod-query", - "deploy-exp": "cpl deploy-exp-cli; cpl deploy-exp-core; cpl deploy-exp-query;", "de": "cpl deploy-exp", "deploy-exp-cli": "cpl publish-cli; cpl upload-exp-cli", "deploy-exp-core": "cpl publish-core; cpl upload-exp-core", "deploy-exp-query": "cpl publish-query; cpl upload-exp-query", - "deploy-dev": "cpl deploy-dev-cli; cpl deploy-dev-core; cpl deploy-dev-query;", "dd": "cpl deploy-dev", "deploy-dev-cli": "cpl publish-cli; cpl upload-dev-cli", diff --git a/src/cpl_cli/command/run_service.py b/src/cpl_cli/command/run_service.py index e6be3878..78d48a34 100644 --- a/src/cpl_cli/command/run_service.py +++ b/src/cpl_cli/command/run_service.py @@ -1,33 +1,49 @@ import os +import sys import textwrap +from cpl_cli import Error from cpl_cli.command_abc import CommandABC -from cpl_core.console.console import Console -from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC +from cpl_cli.configuration import WorkspaceSettings from cpl_cli.configuration.build_settings import BuildSettings from cpl_cli.configuration.project_settings import ProjectSettings -from cpl_cli.live_server.live_server_thread import LiveServerThread +from cpl_cli.live_server.start_executable import StartExecutable +from cpl_core.configuration import ConfigurationABC +from cpl_core.console.console import Console +from cpl_core.dependency_injection import ServiceProviderABC +from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC class RunService(CommandABC): - def __init__(self, env: ApplicationEnvironmentABC, project_settings: ProjectSettings, build_settings: BuildSettings): + def __init__(self, + config: ConfigurationABC, + env: ApplicationEnvironmentABC, + services: ServiceProviderABC, + project_settings: ProjectSettings, + build_settings: BuildSettings, + workspace: WorkspaceSettings + ): """ Service for the CLI command start + :param config: :param env: + :param services: :param project_settings: :param build_settings: + :param workspace: """ CommandABC.__init__(self) + self._config = config self._env = env + self._services = services self._project_settings = project_settings self._build_settings = build_settings + self._workspace = workspace self._src_dir = os.path.join(self._env.working_directory, self._build_settings.source_path) - self._args: list[str] = [] - @property def help_message(self) -> str: return textwrap.dedent("""\ @@ -35,19 +51,49 @@ class RunService(CommandABC): Usage: cpl run """) + def _set_project_by_args(self, name: str): + if self._workspace is None: + Error.error('The command requires to be run in an CPL workspace, but a workspace could not be found.') + sys.exit() + + if name not in self._workspace.projects: + Error.error(f'Project {name} not found in workspace') + sys.exit() + + project_path = self._workspace.projects[name] + + self._config.add_configuration(ProjectSettings, None) + self._config.add_configuration(BuildSettings, None) + + working_directory = self._config.get_configuration('PATH_WORKSPACE') + if working_directory is not None: + self._env.set_working_directory(working_directory) + + json_file = os.path.join(self._env.working_directory, project_path) + self._config.add_json_file(json_file, optional=True, output=False) + self._project_settings: ProjectSettings = self._config.get_configuration(ProjectSettings) + self._build_settings: BuildSettings = self._config.get_configuration(BuildSettings) + + if self._project_settings is None or self._build_settings is None: + Error.error(f'Project {name} not found') + sys.exit() + + self._src_dir = os.path.dirname(json_file) + def execute(self, args: list[str]): """ Entry point of command :param args: :return: """ - ls_thread = LiveServerThread( - self._project_settings.python_executable, - self._src_dir, - self._args, - self._env, - self._build_settings - ) - ls_thread.start() - ls_thread.join() + if len(args) > 1: + Error.error(f'Unexpected argument(s): {", ".join(args)}') + sys.exit() + + if len(args) == 1: + self._set_project_by_args(args[0]) + args.remove(args[0]) + + start_service = StartExecutable(self._env, self._build_settings) + start_service.run(args, self._project_settings.python_executable, self._src_dir, output=False) Console.write_line() diff --git a/src/cpl_cli/live_server/live_server_thread.py b/src/cpl_cli/live_server/live_server_thread.py index 3c88f841..3018b5ef 100644 --- a/src/cpl_cli/live_server/live_server_thread.py +++ b/src/cpl_cli/live_server/live_server_thread.py @@ -35,8 +35,6 @@ class LiveServerThread(threading.Thread): self._command = [] self._env_vars = os.environ - self._set_venv() - @property def command(self) -> list[str]: return self._command @@ -45,16 +43,6 @@ class LiveServerThread(threading.Thread): def main(self) -> str: return self._main - def _set_venv(self): - if self._executable != sys.executable: - path = os.path.abspath(os.path.dirname(os.path.dirname(self._executable))) - if sys.platform == 'win32': - self._env_vars['PATH'] = f'{path}\\bin' + os.pathsep + os.environ.get('PATH', '') - else: - self._env_vars['PATH'] = f'{path}/bin' + os.pathsep + os.environ.get('PATH', '') - - self._env_vars['VIRTUAL_ENV'] = path - def run(self): """ Starts the CPL project diff --git a/src/cpl_cli/live_server/start_executable.py b/src/cpl_cli/live_server/start_executable.py new file mode 100644 index 00000000..426f03e7 --- /dev/null +++ b/src/cpl_cli/live_server/start_executable.py @@ -0,0 +1,81 @@ +import os +import subprocess +import sys +import threading +from datetime import datetime + +from cpl_core.console.console import Console +from cpl_core.console.foreground_color_enum import ForegroundColorEnum +from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC +from cpl_cli.configuration import BuildSettings + + +class StartExecutable: + + def __init__(self, env: ApplicationEnvironmentABC, build_settings: BuildSettings): + """ + Service to start the CPL project for the live development server + :param env: + :param build_settings: + """ + + self._executable = None + + self._env = env + self._build_settings = build_settings + + self._main = '' + self._command = [] + self._env_vars = os.environ + + self._set_venv() + + def _set_venv(self): + if self._executable is None or self._executable == sys.executable: + return + + path = os.path.abspath(os.path.dirname(os.path.dirname(self._executable))) + if sys.platform == 'win32': + self._env_vars['PATH'] = f'{path}\\bin' + os.pathsep + os.environ.get('PATH', '') + else: + self._env_vars['PATH'] = f'{path}/bin' + os.pathsep + os.environ.get('PATH', '') + + self._env_vars['VIRTUAL_ENV'] = path + + def run(self, args: list[str], executable: str, path: str, output=True): + self._executable = os.path.abspath(executable) + + main = self._build_settings.main + if '.' in self._build_settings.main: + length = len(self._build_settings.main.split('.')) - 1 + main = self._build_settings.main.split('.')[length] + + self._main = os.path.join(path, f'{main}.py') + if not os.path.isfile(self._main): + Console.error('Entry point main.py not found') + return + + # set cwd to src/ + self._env.set_working_directory(os.path.abspath(os.path.join(path))) + src_cwd = os.path.abspath(os.path.join(path, '../')) + if sys.platform == 'win32': + self._env_vars['PYTHONPATH'] = f'{src_cwd};' \ + f'{os.path.join(self._env.working_directory, self._build_settings.source_path)}' + else: + self._env_vars['PYTHONPATH'] = f'{src_cwd}:' \ + f'{os.path.join(self._env.working_directory, self._build_settings.source_path)}' + + if output: + Console.set_foreground_color(ForegroundColorEnum.green) + Console.write_line('Read successfully') + Console.set_foreground_color(ForegroundColorEnum.cyan) + Console.write_line(f'Started at {datetime.now().strftime("%Y-%m-%d %H:%M:%S")}\n\n') + Console.set_foreground_color(ForegroundColorEnum.default) + + self._command = [self._executable, self._main] + # if len(self._args) > 0: + # self._command.append(' '.join(self._args)) + for arg in args: + self._command.append(arg) + + subprocess.run(self._command, env=self._env_vars) diff --git a/src/cpl_cli/startup.py b/src/cpl_cli/startup.py index 6c90f01c..25aebea5 100644 --- a/src/cpl_cli/startup.py +++ b/src/cpl_cli/startup.py @@ -8,7 +8,7 @@ from cpl_core.application.startup_abc import StartupABC from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.dependency_injection.service_collection_abc import ServiceCollectionABC from cpl_core.dependency_injection.service_provider_abc import ServiceProviderABC -from cpl_core.environment import ApplicationEnvironment +from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC class Startup(StartupABC): @@ -16,7 +16,7 @@ class Startup(StartupABC): def __init__(self): StartupABC.__init__(self) - def configure_configuration(self, configuration: ConfigurationABC, environment: ApplicationEnvironment) -> ConfigurationABC: + def configure_configuration(self, configuration: ConfigurationABC, environment: ApplicationEnvironmentABC) -> ConfigurationABC: environment.set_runtime_directory(os.path.dirname(__file__)) configuration.argument_error_function = Error.error @@ -26,7 +26,7 @@ class Startup(StartupABC): return configuration - def configure_services(self, services: ServiceCollectionABC, environment: ApplicationEnvironment) -> ServiceProviderABC: + def configure_services(self, services: ServiceCollectionABC, environment: ApplicationEnvironmentABC) -> ServiceProviderABC: services.add_transient(PublisherABC, PublisherService) services.add_transient(LiveServerService) diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index 1430e699..41b905f8 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -1,6 +1,8 @@ import os from typing import Optional +from cpl_core.console import Console + from cpl_cli.command.add_service import AddService from cpl_cli.command.build_service import BuildService from cpl_cli.command.custom_script_service import CustomScriptService @@ -47,6 +49,7 @@ class StartupArgumentExtension(StartupExtensionABC): def _read_cpl_environment(self, config: ConfigurationABC, env: ApplicationEnvironmentABC): workspace: Optional[WorkspaceSettings] = config.get_configuration(WorkspaceSettings) + config.add_configuration('PATH_WORKSPACE', env.working_directory) if workspace is not None: for script in workspace.scripts: config.create_console_argument(ArgumentTypeEnum.Executable, '', script, [], CustomScriptService) diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index d4a83eb9..9b344ace 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -340,7 +340,7 @@ class Configuration(ConfigurationABC): prevent = exe.prevent_next_executable success = True except Exception as e: - Console.error('An error occurred while executing arguments.') + Console.error('An error occurred while executing arguments.', traceback.format_exc()) sys.exit() return success diff --git a/tools/set_version/__init__.py b/tools/set_version/__init__.py new file mode 100644 index 00000000..ad5eca30 --- /dev/null +++ b/tools/set_version/__init__.py @@ -0,0 +1 @@ +# imports: diff --git a/tools/set_version/application.py b/tools/set_version/application.py new file mode 100644 index 00000000..9ce6fc0a --- /dev/null +++ b/tools/set_version/application.py @@ -0,0 +1,16 @@ +from cpl_core.application import ApplicationABC +from cpl_core.configuration import ConfigurationABC +from cpl_core.console import Console +from cpl_core.dependency_injection import ServiceProviderABC + + +class Application(ApplicationABC): + + def __init__(self, config: ConfigurationABC, services: ServiceProviderABC): + ApplicationABC.__init__(self, config, services) + + def configure(self): + pass + + def main(self): + Console.write_line('Hello World from tools') diff --git a/tools/set_version/appsettings.json b/tools/set_version/appsettings.json new file mode 100644 index 00000000..629e6ebd --- /dev/null +++ b/tools/set_version/appsettings.json @@ -0,0 +1,15 @@ +{ + "TimeFormatSettings": { + "DateFormat": "%Y-%m-%d", + "TimeFormat": "%H:%M:%S", + "DateTimeFormat": "%Y-%m-%d %H:%M:%S.%f", + "DateTimeLogFormat": "%Y-%m-%d_%H-%M-%S" + }, + + "LoggingSettings": { + "Path": "logs/", + "Filename": "log_$start_time.log", + "ConsoleLogLevel": "ERROR", + "FileLogLevel": "WARN" + } +} diff --git a/tools/set_version/main.py b/tools/set_version/main.py new file mode 100644 index 00000000..71943f43 --- /dev/null +++ b/tools/set_version/main.py @@ -0,0 +1,14 @@ +from cpl_core.application import ApplicationBuilder + +from set_version.application import Application +from set_version.startup import Startup + + +def main(): + app_builder = ApplicationBuilder(Application) + app_builder.use_startup(Startup) + app_builder.build().run() + + +if __name__ == '__main__': + main() diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json new file mode 100644 index 00000000..3039cf07 --- /dev/null +++ b/tools/set_version/set-version.json @@ -0,0 +1,43 @@ +{ + "ProjectSettings": { + "Name": "set-version", + "Version": { + "Major": "0", + "Minor": "0", + "Micro": "0" + }, + "Author": "", + "AuthorEmail": "", + "Description": "", + "LongDescription": "", + "URL": "", + "CopyrightDate": "", + "CopyrightName": "", + "LicenseName": "", + "LicenseDescription": "", + "Dependencies": [ + "sh_cpl-core>=2022.6.1.dev4" + ], + "PythonVersion": ">=3.10.4", + "PythonPath": { + "linux": "" + }, + "Classifiers": [] + }, + "BuildSettings": { + "ProjectType": "console", + "SourcePath": "", + "OutputPath": "../../dist", + "Main": "set_version.main", + "EntryPoint": "set-version", + "IncludePackageData": false, + "Included": [], + "Excluded": [ + "*/__pycache__", + "*/logs", + "*/tests" + ], + "PackageData": {}, + "ProjectReferences": [] + } +} \ No newline at end of file diff --git a/tools/set_version/startup.py b/tools/set_version/startup.py new file mode 100644 index 00000000..359c03d2 --- /dev/null +++ b/tools/set_version/startup.py @@ -0,0 +1,16 @@ +from cpl_core.application import StartupABC +from cpl_core.configuration import ConfigurationABC +from cpl_core.dependency_injection import ServiceProviderABC, ServiceCollectionABC +from cpl_core.environment import ApplicationEnvironment + + +class Startup(StartupABC): + + def __init__(self): + StartupABC.__init__(self) + + def configure_configuration(self, configuration: ConfigurationABC, environment: ApplicationEnvironment) -> ConfigurationABC: + return configuration + + def configure_services(self, services: ServiceCollectionABC, environment: ApplicationEnvironment) -> ServiceProviderABC: + return services.build_service_provider() -- 2.45.1 From 5feb44595a28e0252e3c5ec9adc623a2f5d70996 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 14:00:38 +0200 Subject: [PATCH 049/140] Fixed cpl run command --- cpl-workspace.json | 1 + src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- .../_templates/new/console/source/name/__init__.py | 4 ++-- .../_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- .../_templates/new/library/source/name/__init__.py | 4 ++-- .../_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/command/custom_script_service.py | 8 +++++++- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl_cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/validators/__init__.py | 4 ++-- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/cpl_core.json | 2 +- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/pipes/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- src/cpl_query/__init__.py | 4 ++-- src/cpl_query/_query/__init__.py | 4 ++-- src/cpl_query/cpl_query.json | 4 ++-- src/cpl_query/extension/__init__.py | 4 ++-- 42 files changed, 87 insertions(+), 80 deletions(-) diff --git a/cpl-workspace.json b/cpl-workspace.json index 5d9098a3..3a85b29f 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -13,6 +13,7 @@ "db": "cpl build-docs", "docs-open": "xdg-open $PWD/docs/build/html/index.html &", "do": "cpl docs-open", + "pre-build": "cpl run set-version;", "build-all": "cpl build-cli; cpl build-core; cpl build-query;", "ba": "cpl build-all", "build-cli": "echo 'Build cpl_cli'; cd ./src/cpl_cli; cpl build; cd ../../;", diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index cb505c8b..63c9f7ce 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index d5df0517..9a8ac68b 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index d858ee52..779822e0 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 55ddb78b..3e7d6781 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 6856c973..6a00273e 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index ecd47e45..9639dc9a 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index bd31b991..57aee7c7 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index a26e50c5..02140906 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 7fe376ec..2a587b18 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index de18ce9a..44422652 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index ee44dc84..fbbbb29a 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index ed0ff1ea..f20866b7 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 6c95bcea..7df4bb38 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index ec5fce4d..ff9e454c 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index f27a4c9d..f7896c15 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/command/custom_script_service.py b/src/cpl_cli/command/custom_script_service.py index 4208b8d5..3e6bebdf 100644 --- a/src/cpl_cli/command/custom_script_service.py +++ b/src/cpl_cli/command/custom_script_service.py @@ -1,6 +1,8 @@ import os import subprocess +from cpl_core.environment import ApplicationEnvironmentABC + from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.console.console import Console from cpl_cli.command_abc import CommandABC @@ -9,13 +11,14 @@ from cpl_cli.configuration.workspace_settings import WorkspaceSettings class CustomScriptService(CommandABC): - def __init__(self, config: ConfigurationABC, ws: WorkspaceSettings): + def __init__(self, config: ConfigurationABC, env: ApplicationEnvironmentABC, ws: WorkspaceSettings): """ Service for CLI scripts """ CommandABC.__init__(self) self._config = config + self._env = env self._workspace = ws @property @@ -24,6 +27,9 @@ class CustomScriptService(CommandABC): def execute(self, args: list[str]): cmd = self._config.get_configuration('ACTIVE_EXECUTABLE') + wd = self._config.get_configuration('PATH_WORKSPACE') + if wd is not None: + self._env.set_working_directory(wd) for script in self._workspace.scripts: if script != cmd: diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index e8218baf..b12182a6 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 3aa44d54..98e3f128 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "13" + "Micro": "14.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.13" + "cpl-core>=2022.6.14.dev1" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 85ec2412..981729d5 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index 44325377..bb94f9bc 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 7e8d080d..19089840 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index 0f804e30..6eab00eb 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index b290ac73..de58ed87 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 0086ac0f..8e96f77e 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 3e6b196d..75cbf0f2 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index feb2015f..9038717d 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index 76e5aa9a..1fe5377d 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "13" + "Micro": "14.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index 28527d76..ecd2eba7 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 19ffd858..5f15d616 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index df3de117..f8e4c28c 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 9883028d..7511e97a 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 724f9ece..edc415f8 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 9ecc5264..70fbd359 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 0f59b2f6..40393d62 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index 70b9c27e..61c3f7c2 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index 63a4cadf..d9456507 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 40a1f72d..eeb093da 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index 4b7767bb..cd2a1085 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index 5bc4bf00..d0183643 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') diff --git a/src/cpl_query/cpl_query.json b/src/cpl_query/cpl_query.json index 3f69f1d3..fdf516ba 100644 --- a/src/cpl_query/cpl_query.json +++ b/src/cpl_query/cpl_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "13" + "Micro": "14.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.13" + "cpl-core>=2022.6.14.dev1" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index b045f5e3..f732577e 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.1.dev4' +__version__ = '2022.6.14.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='1.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') -- 2.45.1 From 40f132da338f04ce1fb57f651abf449d38bee43b Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 14:14:26 +0200 Subject: [PATCH 050/140] Added workspace scripts --- cpl-workspace.json | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/cpl-workspace.json b/cpl-workspace.json index 3a85b29f..b92e671b 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -9,49 +9,60 @@ }, "Scripts": { "hello-world": "echo 'Hello World'", + + "sv": "cpl set-version", + "set-version": "echo 'Set versions for all projects'; cpl run set-version; echo '';", + "docs-build": "echo 'Build Documentation'; cd docs/; sphinx-apidoc -o source/ ../src/cpl_core; sphinx-apidoc -o source/ ../src/cpl_query; make clean; make html; rm source/cpl_query.tests.rst;", "db": "cpl build-docs", "docs-open": "xdg-open $PWD/docs/build/html/index.html &", "do": "cpl docs-open", - "pre-build": "cpl run set-version;", + + "pre-build-all": "cpl sv", "build-all": "cpl build-cli; cpl build-core; cpl build-query;", "ba": "cpl build-all", "build-cli": "echo 'Build cpl_cli'; cd ./src/cpl_cli; cpl build; cd ../../;", "build-core": "echo 'Build cpl_core'; cd ./src/cpl_core; cpl build; cd ../../;", "build-query": "echo 'Build cpl_query'; cd ./src/cpl_query; cpl build; cd ../../;", + + "pre-publish-all": "cpl sv", "publish-all": "cpl publish-cli; cpl publish-core; cpl publish-query;", "pa": "cpl build-all", "publish-cli": "echo 'Publish cpl_cli'; cd ./src/cpl_cli; cpl publish; cd ../../;", "publish-core": "echo 'Publish cpl_core'; cd ./src/cpl_core; cpl publish; cd ../../;", "publish-query": "echo 'Publish cpl_query'; cd ./src/cpl_query; cpl publish; cd ../../;", + "upload-prod-cli": "echo 'PROD Upload cpl_cli'; cpl upl-prod-cli;", - "upload-prod-core": "echo 'PROD Upload cpl_core'; cpl upl-prod-core;", - "upload-prod-query": "echo 'PROD Upload cpl_query'; cpl upl-prod-query;", - "upload-exp-cli": "echo 'EXP Upload cpl_cli'; cpl upl-exp-cli;", - "upload-exp-core": "echo 'EXP Upload cpl_core'; cpl upl-exp-core;", - "upload-exp-query": "echo 'EXP Upload cpl_query'; cpl upl-exp-query;", - "upload-dev-cli": "echo 'DEV Upload cpl_cli'; cpl upl-dev-cli;", - "upload-dev-core": "echo 'DEV Upload cpl_core'; cpl upl-dev-core;", - "upload-dev-query": "echo 'DEV Upload cpl_query'; cpl upl-dev-query;", "upl-prod-cli": "twine upload -r pip.sh-edraft.de dist/cpl-cli/publish/setup/*", + "upload-prod-core": "echo 'PROD Upload cpl_core'; cpl upl-prod-core;", "upl-prod-core": "twine upload -r pip.sh-edraft.de dist/cpl-core/publish/setup/*", + "upload-prod-query": "echo 'PROD Upload cpl_query'; cpl upl-prod-query;", "upl-prod-query": "twine upload -r pip.sh-edraft.de dist/cpl-query/publish/setup/*", + "upload-exp-cli": "echo 'EXP Upload cpl_cli'; cpl upl-exp-cli;", "upl-exp-cli": "twine upload -r pip-exp.sh-edraft.de dist/cpl-cli/publish/setup/*", + "upload-exp-core": "echo 'EXP Upload cpl_core'; cpl upl-exp-core;", "upl-exp-core": "twine upload -r pip-exp.sh-edraft.de dist/cpl-core/publish/setup/*", + "upload-exp-query": "echo 'EXP Upload cpl_query'; cpl upl-exp-query;", "upl-exp-query": "twine upload -r pip-exp.sh-edraft.de dist/cpl-query/publish/setup/*", + "upload-dev-cli": "echo 'DEV Upload cpl_cli'; cpl upl-dev-cli;", "upl-dev-cli": "twine upload -r pip-dev.sh-edraft.de dist/cpl-cli/publish/setup/*", + "upload-dev-core": "echo 'DEV Upload cpl_core'; cpl upl-dev-core;", "upl-dev-core": "twine upload -r pip-dev.sh-edraft.de dist/cpl-core/publish/setup/*", + "upload-dev-query": "echo 'DEV Upload cpl_query'; cpl upl-dev-query;", "upl-dev-query": "twine upload -r pip-dev.sh-edraft.de dist/cpl-query/publish/setup/*", + "deploy-prod": "cpl deploy-prod-cli; cpl deploy-prod-core; cpl deploy-prod-query;", "dp": "cpl deploy-prod", "deploy-prod-cli": "cpl publish-cli; cpl upload-prod-cli", "deploy-prod-core": "cpl publish-core; cpl upload-prod-core", "deploy-prod-query": "cpl publish-query; cpl upload-prod-query", + "deploy-exp": "cpl deploy-exp-cli; cpl deploy-exp-core; cpl deploy-exp-query;", "de": "cpl deploy-exp", "deploy-exp-cli": "cpl publish-cli; cpl upload-exp-cli", "deploy-exp-core": "cpl publish-core; cpl upload-exp-core", "deploy-exp-query": "cpl publish-query; cpl upload-exp-query", + "deploy-dev": "cpl deploy-dev-cli; cpl deploy-dev-core; cpl deploy-dev-query;", "dd": "cpl deploy-dev", "deploy-dev-cli": "cpl publish-cli; cpl upload-dev-cli", -- 2.45.1 From ed69f5292764d6bb7fbbfe7a76c025d79a373eea Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 15:11:42 +0200 Subject: [PATCH 051/140] Fixed generate service --- src/cpl_cli/command/generate_service.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cpl_cli/command/generate_service.py b/src/cpl_cli/command/generate_service.py index e546218e..dfbcbd93 100644 --- a/src/cpl_cli/command/generate_service.py +++ b/src/cpl_cli/command/generate_service.py @@ -137,7 +137,7 @@ class GenerateService(CommandABC): rel_path = '/'.join(parts[:-1]) class_name = parts[len(parts) - 1] - if 'src' not in rel_path: + if 'src' not in rel_path and not os.path.exists(os.path.join(self._env.working_directory, rel_path)): rel_path = f'src/{rel_path}' template = template(class_name, schematic, self._schematics[schematic]["Upper"], rel_path) -- 2.45.1 From 976a14584bf8777212621e47af93c0bef799355f Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 15:12:30 +0200 Subject: [PATCH 052/140] Dev build 2022.6.15.dev1 --- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl_cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/validators/__init__.py | 4 ++-- src/cpl_core/cpl_core.json | 2 +- src/cpl_query/cpl_query.json | 4 ++-- 23 files changed, 45 insertions(+), 45 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 63c9f7ce..c5361d7b 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 9a8ac68b..71a248d9 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 779822e0..ab55155e 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 3e7d6781..7ff42a9c 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 6a00273e..f435812f 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 9639dc9a..a7b6aea0 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 57aee7c7..d950e41b 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 02140906..54f083d4 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 2a587b18..91262c7e 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 44422652..277cd188 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index fbbbb29a..dddba2b2 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index f20866b7..2914f545 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 7df4bb38..c24de8f9 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index ff9e454c..34090d2c 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index f7896c15..1a5cb45b 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index b12182a6..13893f7c 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 98e3f128..5f3b651e 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "14.dev1" + "Micro": "15.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.14.dev1" + "cpl-core>=2022.6.15.dev1" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 981729d5..71fd3f18 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index bb94f9bc..ec814963 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 19089840..a850c3fb 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index 6eab00eb..c1dcdb8b 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index 1fe5377d..8c8589a5 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "14.dev1" + "Micro": "15.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_query/cpl_query.json b/src/cpl_query/cpl_query.json index fdf516ba..85d40f27 100644 --- a/src/cpl_query/cpl_query.json +++ b/src/cpl_query/cpl_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "14.dev1" + "Micro": "15.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.14.dev1" + "cpl-core>=2022.6.15.dev1" ], "PythonVersion": ">=3.10", "PythonPath": {}, -- 2.45.1 From 036a553f64bef7ee8b622747541b20fdfceb6655 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 15:12:36 +0200 Subject: [PATCH 053/140] Dev build 2022.6.15.dev1 --- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/pipes/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- src/cpl_query/__init__.py | 4 ++-- src/cpl_query/_query/__init__.py | 4 ++-- src/cpl_query/extension/__init__.py | 4 ++-- 17 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index de58ed87..c75dabc0 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 8e96f77e..b08a7519 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 75cbf0f2..b99399e5 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index 9038717d..15b79142 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index ecd2eba7..56fce2c7 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 5f15d616..f1f23e04 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index f8e4c28c..f1490358 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 7511e97a..6ff8454b 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index edc415f8..0b62285f 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 70fbd359..2603cbee 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 40393d62..4be4b8c1 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index 61c3f7c2..03cadeed 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index d9456507..c3797184 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index eeb093da..133249f0 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index cd2a1085..aa9b5081 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index d0183643..67f0585a 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index f732577e..51dd975c 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.14.dev1' +__version__ = '2022.6.15.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='14.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') -- 2.45.1 From 539ed13be4dc8d332711572dd1d2f0d4978f532c Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 16:06:44 +0200 Subject: [PATCH 054/140] Bugfixes for run service --- src/cpl_cli/command/run_service.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/cpl_cli/command/run_service.py b/src/cpl_cli/command/run_service.py index 78d48a34..7aa4e456 100644 --- a/src/cpl_cli/command/run_service.py +++ b/src/cpl_cli/command/run_service.py @@ -86,11 +86,7 @@ class RunService(CommandABC): :param args: :return: """ - if len(args) > 1: - Error.error(f'Unexpected argument(s): {", ".join(args)}') - sys.exit() - - if len(args) == 1: + if len(args) >= 1: self._set_project_by_args(args[0]) args.remove(args[0]) -- 2.45.1 From 6da8e30446a12a9112741dfc48bfa33c6c9f5bbd Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 16:43:28 +0200 Subject: [PATCH 055/140] Added set-version logic && Fixed CustomScriptService to handle arguments --- cpl-workspace.json | 2 +- src/cpl_cli/command/custom_script_service.py | 10 +++- src/cpl_cli/cpl_cli.json | 2 +- src/cpl_core/cpl_core.json | 2 +- src/cpl_query/cpl_query.json | 2 +- tools/set_version/application.py | 50 +++++++++++++++++++- tools/set_version/set-version.json | 6 +-- tools/set_version/startup.py | 13 +++++ 8 files changed, 77 insertions(+), 10 deletions(-) diff --git a/cpl-workspace.json b/cpl-workspace.json index b92e671b..4f0a2a55 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -11,7 +11,7 @@ "hello-world": "echo 'Hello World'", "sv": "cpl set-version", - "set-version": "echo 'Set versions for all projects'; cpl run set-version; echo '';", + "set-version": "echo 'Set versions for all projects'; cpl run set-version $ARGS; echo '';", "docs-build": "echo 'Build Documentation'; cd docs/; sphinx-apidoc -o source/ ../src/cpl_core; sphinx-apidoc -o source/ ../src/cpl_query; make clean; make html; rm source/cpl_query.tests.rst;", "db": "cpl build-docs", diff --git a/src/cpl_cli/command/custom_script_service.py b/src/cpl_cli/command/custom_script_service.py index 3e6bebdf..3ef8b465 100644 --- a/src/cpl_cli/command/custom_script_service.py +++ b/src/cpl_cli/command/custom_script_service.py @@ -35,7 +35,15 @@ class CustomScriptService(CommandABC): if script != cmd: continue - command = self._workspace.scripts[script] + command = '' + external_args = self._config.get_configuration('ARGS') + if external_args is not None: + command += f'ARGS="{external_args}";' + + command += self._workspace.scripts[script] + env_vars = os.environ + env_vars['CPL_ARGS'] = " ".join(args) + try: subprocess.run(command, shell=True if os.name == 'posix' else None) except Exception as e: diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 5f3b651e..cf1da4f6 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev1" + "Micro": "15" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index 8c8589a5..bf3aac9e 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev1" + "Micro": "15" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_query/cpl_query.json b/src/cpl_query/cpl_query.json index 85d40f27..024ae55d 100644 --- a/src/cpl_query/cpl_query.json +++ b/src/cpl_query/cpl_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev1" + "Micro": "15" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/tools/set_version/application.py b/tools/set_version/application.py index 9ce6fc0a..a8ee362d 100644 --- a/tools/set_version/application.py +++ b/tools/set_version/application.py @@ -1,7 +1,12 @@ +import traceback + +from cpl_cli.configuration import WorkspaceSettings from cpl_core.application import ApplicationABC from cpl_core.configuration import ConfigurationABC from cpl_core.console import Console from cpl_core.dependency_injection import ServiceProviderABC +from set_version.git_service import GitService +from set_version.version_setter_service import VersionSetterService class Application(ApplicationABC): @@ -9,8 +14,49 @@ class Application(ApplicationABC): def __init__(self, config: ConfigurationABC, services: ServiceProviderABC): ApplicationABC.__init__(self, config, services) + self._workspace: WorkspaceSettings = config.get_configuration(WorkspaceSettings) + + self._git_service: GitService = self._services.get_service(GitService) + self._version_setter: VersionSetterService = self._services.get_service(VersionSetterService) + def configure(self): - pass + self._configuration.parse_console_arguments(self._services) def main(self): - Console.write_line('Hello World from tools') + Console.write_line('Set versions:') + args = self._configuration.additional_arguments + version = {} + branch = "" + suffix = "" + if len(args) > 1: + Console.error(f'Unexpected argument(s): {", ".join(args[1:])}') + return + + if len(args) == 1: + suffix = f'.{args[0]}' + + try: + branch = self._git_service.get_active_branch_name() + Console.write_line(f'Found branch: {branch}') + except Exception as e: + Console.error('Branch could not be found', traceback.format_exc()) + return + + try: + version['Major'] = branch.split('.')[0] + version['Minor'] = branch.split('.')[1] + version['Micro'] = f'{branch.split(".")[2]}{suffix}' + except Exception as e: + Console.error(f'Branch {branch} does not contain valid version') + return + + try: + for project in self._workspace.projects: + if not project.startswith('cpl'): + continue + + Console.write_line(f'Set version {version["Major"]}.{version["Minor"]}.{version["Micro"]} for {project}') + self._version_setter.set_version(self._workspace.projects[project], version) + except Exception as e: + Console.error('Version could not be set', traceback.format_exc()) + return diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index 3039cf07..c04df303 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -2,9 +2,9 @@ "ProjectSettings": { "Name": "set-version", "Version": { - "Major": "0", - "Minor": "0", - "Micro": "0" + "Major": "2022", + "Minor": "6", + "Micro": "15" }, "Author": "", "AuthorEmail": "", diff --git a/tools/set_version/startup.py b/tools/set_version/startup.py index 359c03d2..7e4701d5 100644 --- a/tools/set_version/startup.py +++ b/tools/set_version/startup.py @@ -1,7 +1,12 @@ +import os + +from cpl_cli.configuration import WorkspaceSettings from cpl_core.application import StartupABC from cpl_core.configuration import ConfigurationABC from cpl_core.dependency_injection import ServiceProviderABC, ServiceCollectionABC from cpl_core.environment import ApplicationEnvironment +from set_version.git_service import GitService +from set_version.version_setter_service import VersionSetterService class Startup(StartupABC): @@ -10,7 +15,15 @@ class Startup(StartupABC): StartupABC.__init__(self) def configure_configuration(self, configuration: ConfigurationABC, environment: ApplicationEnvironment) -> ConfigurationABC: + configuration.add_json_file('cpl-workspace.json', optional=True, output=False) + if configuration.get_configuration(WorkspaceSettings) is None: + environment.set_working_directory(os.path.join(environment.working_directory, '../../')) + configuration.add_json_file('cpl-workspace.json', optional=False, output=False) + return configuration def configure_services(self, services: ServiceCollectionABC, environment: ApplicationEnvironment) -> ServiceProviderABC: + services.add_transient(GitService) + services.add_transient(VersionSetterService) + return services.build_service_provider() -- 2.45.1 From a66ce96dbfb44e049878b7a603d36eaedf2db4da Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 16:43:28 +0200 Subject: [PATCH 056/140] Added set-version logic && Fixed CustomScriptService to handle arguments --- cpl-workspace.json | 2 +- src/cpl_cli/command/custom_script_service.py | 10 +++- src/cpl_cli/cpl_cli.json | 2 +- src/cpl_core/cpl_core.json | 2 +- src/cpl_query/cpl_query.json | 2 +- tools/set_version/application.py | 50 +++++++++++++++++++- tools/set_version/git_service.py | 18 +++++++ tools/set_version/set-version.json | 6 +-- tools/set_version/startup.py | 13 +++++ tools/set_version/version_setter_service.py | 22 +++++++++ 10 files changed, 117 insertions(+), 10 deletions(-) create mode 100644 tools/set_version/git_service.py create mode 100644 tools/set_version/version_setter_service.py diff --git a/cpl-workspace.json b/cpl-workspace.json index b92e671b..4f0a2a55 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -11,7 +11,7 @@ "hello-world": "echo 'Hello World'", "sv": "cpl set-version", - "set-version": "echo 'Set versions for all projects'; cpl run set-version; echo '';", + "set-version": "echo 'Set versions for all projects'; cpl run set-version $ARGS; echo '';", "docs-build": "echo 'Build Documentation'; cd docs/; sphinx-apidoc -o source/ ../src/cpl_core; sphinx-apidoc -o source/ ../src/cpl_query; make clean; make html; rm source/cpl_query.tests.rst;", "db": "cpl build-docs", diff --git a/src/cpl_cli/command/custom_script_service.py b/src/cpl_cli/command/custom_script_service.py index 3e6bebdf..3ef8b465 100644 --- a/src/cpl_cli/command/custom_script_service.py +++ b/src/cpl_cli/command/custom_script_service.py @@ -35,7 +35,15 @@ class CustomScriptService(CommandABC): if script != cmd: continue - command = self._workspace.scripts[script] + command = '' + external_args = self._config.get_configuration('ARGS') + if external_args is not None: + command += f'ARGS="{external_args}";' + + command += self._workspace.scripts[script] + env_vars = os.environ + env_vars['CPL_ARGS'] = " ".join(args) + try: subprocess.run(command, shell=True if os.name == 'posix' else None) except Exception as e: diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 5f3b651e..cf1da4f6 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev1" + "Micro": "15" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index 8c8589a5..bf3aac9e 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev1" + "Micro": "15" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_query/cpl_query.json b/src/cpl_query/cpl_query.json index 85d40f27..024ae55d 100644 --- a/src/cpl_query/cpl_query.json +++ b/src/cpl_query/cpl_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev1" + "Micro": "15" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/tools/set_version/application.py b/tools/set_version/application.py index 9ce6fc0a..a8ee362d 100644 --- a/tools/set_version/application.py +++ b/tools/set_version/application.py @@ -1,7 +1,12 @@ +import traceback + +from cpl_cli.configuration import WorkspaceSettings from cpl_core.application import ApplicationABC from cpl_core.configuration import ConfigurationABC from cpl_core.console import Console from cpl_core.dependency_injection import ServiceProviderABC +from set_version.git_service import GitService +from set_version.version_setter_service import VersionSetterService class Application(ApplicationABC): @@ -9,8 +14,49 @@ class Application(ApplicationABC): def __init__(self, config: ConfigurationABC, services: ServiceProviderABC): ApplicationABC.__init__(self, config, services) + self._workspace: WorkspaceSettings = config.get_configuration(WorkspaceSettings) + + self._git_service: GitService = self._services.get_service(GitService) + self._version_setter: VersionSetterService = self._services.get_service(VersionSetterService) + def configure(self): - pass + self._configuration.parse_console_arguments(self._services) def main(self): - Console.write_line('Hello World from tools') + Console.write_line('Set versions:') + args = self._configuration.additional_arguments + version = {} + branch = "" + suffix = "" + if len(args) > 1: + Console.error(f'Unexpected argument(s): {", ".join(args[1:])}') + return + + if len(args) == 1: + suffix = f'.{args[0]}' + + try: + branch = self._git_service.get_active_branch_name() + Console.write_line(f'Found branch: {branch}') + except Exception as e: + Console.error('Branch could not be found', traceback.format_exc()) + return + + try: + version['Major'] = branch.split('.')[0] + version['Minor'] = branch.split('.')[1] + version['Micro'] = f'{branch.split(".")[2]}{suffix}' + except Exception as e: + Console.error(f'Branch {branch} does not contain valid version') + return + + try: + for project in self._workspace.projects: + if not project.startswith('cpl'): + continue + + Console.write_line(f'Set version {version["Major"]}.{version["Minor"]}.{version["Micro"]} for {project}') + self._version_setter.set_version(self._workspace.projects[project], version) + except Exception as e: + Console.error('Version could not be set', traceback.format_exc()) + return diff --git a/tools/set_version/git_service.py b/tools/set_version/git_service.py new file mode 100644 index 00000000..263cde5b --- /dev/null +++ b/tools/set_version/git_service.py @@ -0,0 +1,18 @@ +import os + +from cpl_core.environment import ApplicationEnvironmentABC + + +class GitService: + + def __init__(self, env: ApplicationEnvironmentABC): + self._env = env + + def get_active_branch_name(self) -> str: + head_dir = os.path.join(self._env.working_directory, '.git/HEAD') + with open(head_dir, 'r') as f: + content = f.read().splitlines() + + for line in content: + if line[0:4] == "ref:": + return line.partition("refs/heads/")[2] diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index 3039cf07..c04df303 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -2,9 +2,9 @@ "ProjectSettings": { "Name": "set-version", "Version": { - "Major": "0", - "Minor": "0", - "Micro": "0" + "Major": "2022", + "Minor": "6", + "Micro": "15" }, "Author": "", "AuthorEmail": "", diff --git a/tools/set_version/startup.py b/tools/set_version/startup.py index 359c03d2..7e4701d5 100644 --- a/tools/set_version/startup.py +++ b/tools/set_version/startup.py @@ -1,7 +1,12 @@ +import os + +from cpl_cli.configuration import WorkspaceSettings from cpl_core.application import StartupABC from cpl_core.configuration import ConfigurationABC from cpl_core.dependency_injection import ServiceProviderABC, ServiceCollectionABC from cpl_core.environment import ApplicationEnvironment +from set_version.git_service import GitService +from set_version.version_setter_service import VersionSetterService class Startup(StartupABC): @@ -10,7 +15,15 @@ class Startup(StartupABC): StartupABC.__init__(self) def configure_configuration(self, configuration: ConfigurationABC, environment: ApplicationEnvironment) -> ConfigurationABC: + configuration.add_json_file('cpl-workspace.json', optional=True, output=False) + if configuration.get_configuration(WorkspaceSettings) is None: + environment.set_working_directory(os.path.join(environment.working_directory, '../../')) + configuration.add_json_file('cpl-workspace.json', optional=False, output=False) + return configuration def configure_services(self, services: ServiceCollectionABC, environment: ApplicationEnvironment) -> ServiceProviderABC: + services.add_transient(GitService) + services.add_transient(VersionSetterService) + return services.build_service_provider() diff --git a/tools/set_version/version_setter_service.py b/tools/set_version/version_setter_service.py new file mode 100644 index 00000000..8d7c17d2 --- /dev/null +++ b/tools/set_version/version_setter_service.py @@ -0,0 +1,22 @@ +import json +import os + +from cpl_core.environment import ApplicationEnvironmentABC + + +class VersionSetterService: + + def __init__(self, env: ApplicationEnvironmentABC): + self._env = env + + def set_version(self, file: str, version: dict): + project_json = {} + with open(os.path.join(self._env.working_directory, file), 'r', encoding='utf-8') as f: + # load json + project_json = json.load(f) + f.close() + + project_json['ProjectSettings']['Version'] = version + with open(os.path.join(self._env.working_directory, file), 'w', encoding='utf-8') as f: + f.write(json.dumps(project_json, indent=2)) + f.close() -- 2.45.1 From 03ac00c6e3bed13a5a7fa55d2f6641bbecded8e6 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 16:51:52 +0200 Subject: [PATCH 057/140] Bugfixes for set-version & CustomScriptService --- cpl-workspace.json | 10 +++++----- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- .../_templates/new/console/source/name/__init__.py | 4 ++-- .../_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- .../_templates/new/library/source/name/__init__.py | 4 ++-- .../_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/validators/__init__.py | 4 ++-- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/pipes/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- src/cpl_query/__init__.py | 4 ++-- src/cpl_query/_query/__init__.py | 4 ++-- src/cpl_query/extension/__init__.py | 4 ++-- 38 files changed, 79 insertions(+), 79 deletions(-) diff --git a/cpl-workspace.json b/cpl-workspace.json index 4f0a2a55..27982c19 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -11,23 +11,23 @@ "hello-world": "echo 'Hello World'", "sv": "cpl set-version", - "set-version": "echo 'Set versions for all projects'; cpl run set-version $ARGS; echo '';", + "set-version": "cpl run set-version $ARGS; echo '';", "docs-build": "echo 'Build Documentation'; cd docs/; sphinx-apidoc -o source/ ../src/cpl_core; sphinx-apidoc -o source/ ../src/cpl_query; make clean; make html; rm source/cpl_query.tests.rst;", "db": "cpl build-docs", "docs-open": "xdg-open $PWD/docs/build/html/index.html &", "do": "cpl docs-open", - "pre-build-all": "cpl sv", + "pre-build-all": "cpl sv $ARGS", "build-all": "cpl build-cli; cpl build-core; cpl build-query;", - "ba": "cpl build-all", + "ba": "cpl build-all $ARGS", "build-cli": "echo 'Build cpl_cli'; cd ./src/cpl_cli; cpl build; cd ../../;", "build-core": "echo 'Build cpl_core'; cd ./src/cpl_core; cpl build; cd ../../;", "build-query": "echo 'Build cpl_query'; cd ./src/cpl_query; cpl build; cd ../../;", - "pre-publish-all": "cpl sv", + "pre-publish-all": "cpl sv $ARGS", "publish-all": "cpl publish-cli; cpl publish-core; cpl publish-query;", - "pa": "cpl build-all", + "pa": "cpl build-all $ARGS", "publish-cli": "echo 'Publish cpl_cli'; cd ./src/cpl_cli; cpl publish; cd ../../;", "publish-core": "echo 'Publish cpl_core'; cd ./src/cpl_core; cpl publish; cd ../../;", "publish-query": "echo 'Publish cpl_query'; cd ./src/cpl_query; cpl publish; cd ../../;", diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index c5361d7b..50516c13 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 71a248d9..a8602f4e 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index ab55155e..82e9f28a 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 7ff42a9c..28badbcf 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index f435812f..90328a17 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index a7b6aea0..b177b172 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index d950e41b..0fdbd4b2 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 54f083d4..74aa3dd1 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 91262c7e..27ee24c3 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 277cd188..a4f33742 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index dddba2b2..c3caf33a 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 2914f545..f0eac21f 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index c24de8f9..45426c78 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index 34090d2c..b292689f 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 1a5cb45b..2aa23351 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index 13893f7c..acfdcdec 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 71fd3f18..0aceaee6 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index ec814963..8bc9b308 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index a850c3fb..2e672ac5 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index c1dcdb8b..25e49975 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index c75dabc0..1b7c4e34 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index b08a7519..42036a74 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index b99399e5..5ad02ae6 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index 15b79142..a9b4e190 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index 56fce2c7..fc04e153 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index f1f23e04..4ba12be7 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index f1490358..23e73889 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 6ff8454b..b7caa413 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 0b62285f..f66ed4be 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 2603cbee..7011334b 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 4be4b8c1..a7ea32b6 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index 03cadeed..69def918 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index c3797184..fef5bb8f 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 133249f0..cc033670 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index aa9b5081..72f6a300 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index 67f0585a..c5c3861f 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index 51dd975c..f2a4ecc3 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev1' +__version__ = '2022.6.15' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='15') -- 2.45.1 From 5bf83c0d774cf0dcd113c2ada5fa6f458c6e20bc Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 16:56:24 +0200 Subject: [PATCH 058/140] Build dev2 --- cpl-workspace.json | 3 ++- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl_cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/validators/__init__.py | 4 ++-- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/cpl_core.json | 2 +- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/pipes/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- src/cpl_query/__init__.py | 4 ++-- src/cpl_query/_query/__init__.py | 4 ++-- src/cpl_query/cpl_query.json | 4 ++-- src/cpl_query/extension/__init__.py | 4 ++-- 41 files changed, 81 insertions(+), 80 deletions(-) diff --git a/cpl-workspace.json b/cpl-workspace.json index 27982c19..36d42fc7 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -63,8 +63,9 @@ "deploy-exp-core": "cpl publish-core; cpl upload-exp-core", "deploy-exp-query": "cpl publish-query; cpl upload-exp-query", + "pre-deploy-dev": "cpl sv $ARGS", "deploy-dev": "cpl deploy-dev-cli; cpl deploy-dev-core; cpl deploy-dev-query;", - "dd": "cpl deploy-dev", + "dd": "cpl deploy-dev $ARGS", "deploy-dev-cli": "cpl publish-cli; cpl upload-dev-cli", "deploy-dev-core": "cpl publish-core; cpl upload-dev-core", "deploy-dev-query": "cpl publish-query; cpl upload-dev-query" diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 50516c13..3a7303f9 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index a8602f4e..2a33f743 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 82e9f28a..55e8e18c 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 28badbcf..76a2e192 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 90328a17..328edf11 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index b177b172..14cb172f 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 0fdbd4b2..09dee974 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 74aa3dd1..89673e55 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 27ee24c3..d42cb41c 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index a4f33742..ab1b9fce 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index c3caf33a..55162b7d 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index f0eac21f..e164dfaf 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 45426c78..b60d9967 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index b292689f..aa2934e6 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 2aa23351..b0a26e3c 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index acfdcdec..c341385e 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index cf1da4f6..78d9f95d 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15" + "Micro": "15.dev2" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15.dev1" + "cpl-core>=2022.6.15.dev2" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 0aceaee6..624d515e 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index 8bc9b308..c951475d 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 2e672ac5..86350419 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index 25e49975..6995e0c4 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index 1b7c4e34..51bdb5e5 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 42036a74..8cb2de9f 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 5ad02ae6..19e6cf3d 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index a9b4e190..e4422966 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index bf3aac9e..9617a5e3 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15" + "Micro": "15.dev2" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index fc04e153..25516fc0 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 4ba12be7..3fb2eae8 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index 23e73889..71131909 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index b7caa413..b97c99df 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index f66ed4be..2f073d06 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 7011334b..571606ac 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index a7ea32b6..84a6eff3 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index 69def918..445fb022 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index fef5bb8f..d99c4b2e 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index cc033670..0fad4f27 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index 72f6a300..b391b3ff 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index c5c3861f..b79c0237 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') diff --git a/src/cpl_query/cpl_query.json b/src/cpl_query/cpl_query.json index 024ae55d..420e88e6 100644 --- a/src/cpl_query/cpl_query.json +++ b/src/cpl_query/cpl_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15" + "Micro": "15.dev2" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15.dev1" + "cpl-core>=2022.6.15.dev2" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index f2a4ecc3..323fb72a 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15' +__version__ = '2022.6.15.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') -- 2.45.1 From 1ab358059cc7f6cb3c3b01abfb21e8b1aafa40ef Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 16:57:21 +0200 Subject: [PATCH 059/140] Added more pre-build scripts --- cpl-workspace.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cpl-workspace.json b/cpl-workspace.json index 36d42fc7..f049627f 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -51,14 +51,16 @@ "upload-dev-query": "echo 'DEV Upload cpl_query'; cpl upl-dev-query;", "upl-dev-query": "twine upload -r pip-dev.sh-edraft.de dist/cpl-query/publish/setup/*", + "pre-deploy-prod": "cpl sv $ARGS", "deploy-prod": "cpl deploy-prod-cli; cpl deploy-prod-core; cpl deploy-prod-query;", - "dp": "cpl deploy-prod", + "dp": "cpl deploy-prod $ARGS", "deploy-prod-cli": "cpl publish-cli; cpl upload-prod-cli", "deploy-prod-core": "cpl publish-core; cpl upload-prod-core", "deploy-prod-query": "cpl publish-query; cpl upload-prod-query", + "pre-deploy-exp": "cpl sv $ARGS", "deploy-exp": "cpl deploy-exp-cli; cpl deploy-exp-core; cpl deploy-exp-query;", - "de": "cpl deploy-exp", + "de": "cpl deploy-exp $ARGS", "deploy-exp-cli": "cpl publish-cli; cpl upload-exp-cli", "deploy-exp-core": "cpl publish-core; cpl upload-exp-core", "deploy-exp-query": "cpl publish-query; cpl upload-exp-query", -- 2.45.1 From ac83555b247deffded236cb31e88acfb6f2d69c0 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 17:04:18 +0200 Subject: [PATCH 060/140] Added logic to handle cpl deps --- src/cpl_cli/cpl_cli.json | 4 ++-- src/cpl_core/cpl_core.json | 2 +- src/cpl_query/cpl_query.json | 4 ++-- tools/set_version/version_setter_service.py | 14 ++++++++++++++ 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 78d9f95d..76cc17ca 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev2" + "Micro": "15.dev3" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15.dev2" + "cpl-core>=2022.6.15.dev3" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index 9617a5e3..db51db87 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev2" + "Micro": "15.dev3" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_query/cpl_query.json b/src/cpl_query/cpl_query.json index 420e88e6..d55fe4f5 100644 --- a/src/cpl_query/cpl_query.json +++ b/src/cpl_query/cpl_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev2" + "Micro": "15.dev3" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15.dev2" + "cpl-core>=2022.6.15.dev3" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/tools/set_version/version_setter_service.py b/tools/set_version/version_setter_service.py index 8d7c17d2..e56ab20b 100644 --- a/tools/set_version/version_setter_service.py +++ b/tools/set_version/version_setter_service.py @@ -1,6 +1,8 @@ import json import os +from cpl_core.console import Console + from cpl_core.environment import ApplicationEnvironmentABC @@ -17,6 +19,18 @@ class VersionSetterService: f.close() project_json['ProjectSettings']['Version'] = version + dependencies = project_json['ProjectSettings']['Dependencies'] + new_deps = [] + for dependency in dependencies: + if not dependency.startswith('cpl-'): + new_deps.append(dependency) + continue + + dep_version = dependency.split('=')[1] + new_deps.append(dependency.replace(dep_version, f'{version["Major"]}.{version["Minor"]}.{version["Micro"]}')) + + project_json['ProjectSettings']['Dependencies'] = new_deps + with open(os.path.join(self._env.working_directory, file), 'w', encoding='utf-8') as f: f.write(json.dumps(project_json, indent=2)) f.close() -- 2.45.1 From 07e43b50d12810de600deaf024d530ad47f825a8 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 17:07:22 +0200 Subject: [PATCH 061/140] Fixed generate pipe argument --- src/cpl_cli/startup_argument_extension.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index 41b905f8..eaa1d899 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -74,7 +74,7 @@ class StartupArgumentExtension(StartupExtensionABC): .add_console_argument(ArgumentTypeEnum.Variable, '', 'abc', ['a', 'A'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'class', ['c', 'C'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'enum', ['e', 'E'], ' ') \ - .add_console_argument(ArgumentTypeEnum.Variable, '', 'pipes', ['p', 'P'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'pipe', ['p', 'P'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'service', ['s', 'S'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'settings', ['st', 'ST'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'thread', ['t', 'T'], ' ') \ -- 2.45.1 From d6677d53a3137ec2dfb8be0ae91adfb19b8fd7f1 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 17:08:03 +0200 Subject: [PATCH 062/140] Added empty lines to generate output --- src/cpl_cli/command/generate_service.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/cpl_cli/command/generate_service.py b/src/cpl_cli/command/generate_service.py index dfbcbd93..6c9861a8 100644 --- a/src/cpl_cli/command/generate_service.py +++ b/src/cpl_cli/command/generate_service.py @@ -192,6 +192,7 @@ class GenerateService(CommandABC): if schematic is None: self._help('Usage: cpl generate [options]') + Console.write_line() sys.exit() name = value @@ -204,4 +205,5 @@ class GenerateService(CommandABC): else: self._help('Usage: cpl generate [options]') + Console.write_line() sys.exit() -- 2.45.1 From a1a3ad6fb54c4e4b3dba1b4ee4139d24bab652fd Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 17:09:31 +0200 Subject: [PATCH 063/140] Build dev4 --- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl_cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/validators/__init__.py | 4 ++-- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/cpl_core.json | 2 +- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/pipes/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- src/cpl_query/__init__.py | 4 ++-- src/cpl_query/_query/__init__.py | 4 ++-- src/cpl_query/cpl_query.json | 4 ++-- src/cpl_query/extension/__init__.py | 4 ++-- 40 files changed, 79 insertions(+), 79 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 3a7303f9..6fb328ee 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 2a33f743..be5412b0 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 55e8e18c..cdd16335 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 76a2e192..541d3ef9 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 328edf11..33f32143 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 14cb172f..bdaeb1db 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 09dee974..783d5a31 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 89673e55..ab788aa6 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index d42cb41c..409dda31 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index ab1b9fce..9c0fb72d 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 55162b7d..42313d55 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index e164dfaf..721a344e 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index b60d9967..9abb88dd 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index aa2934e6..aacaa4da 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index b0a26e3c..4ba407bb 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index c341385e..0c77783e 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 76cc17ca..05756abe 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev3" + "Micro": "15.dev4" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15.dev3" + "cpl-core>=2022.6.15.dev4" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 624d515e..c144e35d 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index c951475d..1123313d 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 86350419..917ea5d3 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index 6995e0c4..75855206 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index 51bdb5e5..1c4b291f 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 8cb2de9f..26ff63b5 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 19e6cf3d..39152b1e 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index e4422966..d1c743bb 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index db51db87..678c0f87 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev3" + "Micro": "15.dev4" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index 25516fc0..96c1e9be 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 3fb2eae8..6d24bad8 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index 71131909..db95d1f0 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index b97c99df..a0880c1b 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 2f073d06..a2158f39 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 571606ac..1d30c1d1 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 84a6eff3..2224b13d 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index 445fb022..a406318d 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index d99c4b2e..0326cb2b 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 0fad4f27..3ab0091c 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index b391b3ff..6410a366 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index b79c0237..482c5d73 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') diff --git a/src/cpl_query/cpl_query.json b/src/cpl_query/cpl_query.json index d55fe4f5..77978a3c 100644 --- a/src/cpl_query/cpl_query.json +++ b/src/cpl_query/cpl_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev3" + "Micro": "15.dev4" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15.dev3" + "cpl-core>=2022.6.15.dev4" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index 323fb72a..d7c451db 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev2' +__version__ = '2022.6.15.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') -- 2.45.1 From 15f200df3af7f25b866b863cc80363693f25bfb4 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 18:40:01 +0200 Subject: [PATCH 064/140] Added version pipe --- src/cpl_cli/cpl_cli.json | 4 ++-- src/cpl_core/cpl_core.json | 2 +- src/cpl_core/pipes/version_pipe.py | 14 ++++++++++++++ src/cpl_query/cpl_query.json | 4 ++-- tools/set_version/application.py | 21 ++++++++++++--------- tools/set_version/set-version.json | 2 +- tools/set_version/startup.py | 2 ++ 7 files changed, 34 insertions(+), 15 deletions(-) create mode 100644 src/cpl_core/pipes/version_pipe.py diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 05756abe..7aab7d34 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev4" + "Micro": "15" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15.dev4" + "cpl-core>=2022.6.15" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index 678c0f87..bf3aac9e 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev4" + "Micro": "15" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/pipes/version_pipe.py b/src/cpl_core/pipes/version_pipe.py new file mode 100644 index 00000000..de116d33 --- /dev/null +++ b/src/cpl_core/pipes/version_pipe.py @@ -0,0 +1,14 @@ +from cpl_cli.configuration import VersionSettingsNameEnum +from cpl_core.pipes.pipe_abc import PipeABC + + +class VersionPipe(PipeABC): + + def __init__(self): pass + + def transform(self, value: dict, *args): + for atr in VersionSettingsNameEnum: + if atr.value not in value: + raise KeyError(atr.value) + + return f'{value[VersionSettingsNameEnum.major.value]}.{value[VersionSettingsNameEnum.minor.value]}.{value[VersionSettingsNameEnum.micro.value]}' diff --git a/src/cpl_query/cpl_query.json b/src/cpl_query/cpl_query.json index 77978a3c..0292ec12 100644 --- a/src/cpl_query/cpl_query.json +++ b/src/cpl_query/cpl_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev4" + "Micro": "15" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15.dev4" + "cpl-core>=2022.6.15" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/tools/set_version/application.py b/tools/set_version/application.py index a8ee362d..9cae3296 100644 --- a/tools/set_version/application.py +++ b/tools/set_version/application.py @@ -1,10 +1,12 @@ import traceback -from cpl_cli.configuration import WorkspaceSettings -from cpl_core.application import ApplicationABC -from cpl_core.configuration import ConfigurationABC -from cpl_core.console import Console -from cpl_core.dependency_injection import ServiceProviderABC +from cpl_cli.configuration.version_settings_name_enum import VersionSettingsNameEnum +from cpl_cli.configuration.workspace_settings import WorkspaceSettings +from cpl_core.application.application_abc import ApplicationABC +from cpl_core.configuration.configuration_abc import ConfigurationABC +from cpl_core.console.console import Console +from cpl_core.dependency_injection.service_provider_abc import ServiceProviderABC +from cpl_core.pipes.version_pipe import VersionPipe from set_version.git_service import GitService from set_version.version_setter_service import VersionSetterService @@ -18,6 +20,7 @@ class Application(ApplicationABC): self._git_service: GitService = self._services.get_service(GitService) self._version_setter: VersionSetterService = self._services.get_service(VersionSetterService) + self._version_pipe: VersionPipe = self._services.get_service(VersionPipe) def configure(self): self._configuration.parse_console_arguments(self._services) @@ -43,9 +46,9 @@ class Application(ApplicationABC): return try: - version['Major'] = branch.split('.')[0] - version['Minor'] = branch.split('.')[1] - version['Micro'] = f'{branch.split(".")[2]}{suffix}' + version[VersionSettingsNameEnum.major.value] = branch.split('.')[0] + version[VersionSettingsNameEnum.minor.value] = branch.split('.')[1] + version[VersionSettingsNameEnum.micro.value] = f'{branch.split(".")[2]}{suffix}' except Exception as e: Console.error(f'Branch {branch} does not contain valid version') return @@ -55,7 +58,7 @@ class Application(ApplicationABC): if not project.startswith('cpl'): continue - Console.write_line(f'Set version {version["Major"]}.{version["Minor"]}.{version["Micro"]} for {project}') + Console.write_line(f'Set version {self._version_pipe.transform(version)} for {project}') self._version_setter.set_version(self._workspace.projects[project], version) except Exception as e: Console.error('Version could not be set', traceback.format_exc()) diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index c04df303..a7c570a1 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "sh_cpl-core>=2022.6.1.dev4" + "sh_cpl-core>=2022.6.15.dev4" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/tools/set_version/startup.py b/tools/set_version/startup.py index 7e4701d5..ec9c6cf2 100644 --- a/tools/set_version/startup.py +++ b/tools/set_version/startup.py @@ -5,6 +5,7 @@ from cpl_core.application import StartupABC from cpl_core.configuration import ConfigurationABC from cpl_core.dependency_injection import ServiceProviderABC, ServiceCollectionABC from cpl_core.environment import ApplicationEnvironment +from cpl_core.pipes.version_pipe import VersionPipe from set_version.git_service import GitService from set_version.version_setter_service import VersionSetterService @@ -25,5 +26,6 @@ class Startup(StartupABC): def configure_services(self, services: ServiceCollectionABC, environment: ApplicationEnvironment) -> ServiceProviderABC: services.add_transient(GitService) services.add_transient(VersionSetterService) + services.add_transient(VersionPipe) return services.build_service_provider() -- 2.45.1 From e23f4187fecfdb95f8c9bce247061d562e546602 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 18:42:47 +0200 Subject: [PATCH 065/140] Added logic to add internal pipes in ServiceCollection --- src/cpl_core/dependency_injection/service_collection.py | 6 ++++++ src/cpl_core/dependency_injection/service_collection_abc.py | 5 +++++ tools/set_version/startup.py | 2 +- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/cpl_core/dependency_injection/service_collection.py b/src/cpl_core/dependency_injection/service_collection.py index 6a7c6f0d..110c8c43 100644 --- a/src/cpl_core/dependency_injection/service_collection.py +++ b/src/cpl_core/dependency_injection/service_collection.py @@ -1,6 +1,7 @@ from typing import Union, Type, Callable, Optional from cpl_core.configuration.configuration_abc import ConfigurationABC +from cpl_core.console import Console from cpl_core.database.context.database_context_abc import DatabaseContextABC from cpl_core.database.database_settings import DatabaseSettings from cpl_core.dependency_injection.service_collection_abc import ServiceCollectionABC @@ -10,6 +11,7 @@ from cpl_core.dependency_injection.service_provider import ServiceProvider from cpl_core.dependency_injection.service_provider_abc import ServiceProviderABC from cpl_core.logging.logger_abc import LoggerABC from cpl_core.logging.logger_service import Logger +from cpl_core.pipes.pipe_abc import PipeABC class ServiceCollection(ServiceCollectionABC): @@ -53,6 +55,10 @@ class ServiceCollection(ServiceCollectionABC): def add_logging(self): self.add_singleton(LoggerABC, Logger) + def add_pipes(self): + for pipe in PipeABC.__subclasses__(): + self.add_transient(PipeABC, pipe) + def add_singleton(self, service_type: Union[type, object], service: Union[type, object] = None): self._add_descriptor_by_lifetime(service_type, ServiceLifetimeEnum.singleton, service) return self diff --git a/src/cpl_core/dependency_injection/service_collection_abc.py b/src/cpl_core/dependency_injection/service_collection_abc.py index 13ddca96..5c828388 100644 --- a/src/cpl_core/dependency_injection/service_collection_abc.py +++ b/src/cpl_core/dependency_injection/service_collection_abc.py @@ -30,6 +30,11 @@ class ServiceCollectionABC(ABC): r"""Adds the CPL internal logger""" pass + @abstractmethod + def add_pipes(self): + r"""Adds the CPL internal pipes as transient""" + pass + @abstractmethod def add_transient(self, service_type: Type, service: Callable = None) -> 'ServiceCollectionABC': r"""Adds a service with transient lifetime diff --git a/tools/set_version/startup.py b/tools/set_version/startup.py index ec9c6cf2..31c8a268 100644 --- a/tools/set_version/startup.py +++ b/tools/set_version/startup.py @@ -24,8 +24,8 @@ class Startup(StartupABC): return configuration def configure_services(self, services: ServiceCollectionABC, environment: ApplicationEnvironment) -> ServiceProviderABC: + services.add_pipes() services.add_transient(GitService) services.add_transient(VersionSetterService) - services.add_transient(VersionPipe) return services.build_service_provider() -- 2.45.1 From bbd0a60f986f91630d6ae0310e553f586e9d1af4 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 18:54:21 +0200 Subject: [PATCH 066/140] Added functionality to set dependencies for all projects in workspace --- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- .../_templates/new/console/__init__.py | 4 ++-- .../_templates/new/console/source/__init__.py | 4 ++-- .../new/console/source/name/__init__.py | 4 ++-- .../new/console/source/tests/__init__.py | 4 ++-- .../_templates/new/library/__init__.py | 4 ++-- .../_templates/new/library/source/__init__.py | 4 ++-- .../new/library/source/name/__init__.py | 4 ++-- .../new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl_cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/validators/__init__.py | 4 ++-- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/cpl_core.json | 2 +- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/pipes/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- src/cpl_query/__init__.py | 4 ++-- src/cpl_query/_query/__init__.py | 4 ++-- src/cpl_query/cpl_query.json | 4 ++-- src/cpl_query/extension/__init__.py | 4 ++-- tools/set_version/application.py | 2 ++ tools/set_version/set-version.json | 2 +- tools/set_version/version_setter_service.py | 20 ++++++++++++++----- 43 files changed, 97 insertions(+), 85 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 6fb328ee..45fe463b 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index be5412b0..11fa49b0 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index cdd16335..2c3a98d5 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 541d3ef9..08dd2e4e 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 33f32143..157f6367 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index bdaeb1db..2bcf5e60 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 783d5a31..08977d40 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index ab788aa6..2325a91c 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 409dda31..965cb756 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 9c0fb72d..b395a0ef 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 42313d55..7d140743 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 721a344e..1ee00f59 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 9abb88dd..65d310c5 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index aacaa4da..efd96230 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 4ba407bb..fcb4e9eb 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index 0c77783e..498bcecf 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index 7aab7d34..c4bb37d9 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15" + "Micro": "15.dev5" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15" + "cpl-core>=2022.6.15.dev5" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index c144e35d..251148fe 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index 1123313d..e7deb73e 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 917ea5d3..314f06e2 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index 75855206..4c47f878 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index 1c4b291f..d426da8b 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 26ff63b5..de30dbde 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 39152b1e..4dd2588f 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index d1c743bb..f5a54096 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl_core.json index bf3aac9e..52ef6a45 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15" + "Micro": "15.dev5" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index 96c1e9be..cd5872a5 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 6d24bad8..73867271 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index db95d1f0..6bee9461 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index a0880c1b..6c924298 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index a2158f39..1c742efc 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 1d30c1d1..2d9d2a34 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 2224b13d..aa8e5585 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index a406318d..fee19c49 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index 0326cb2b..73d6d0e6 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 3ab0091c..6b9b81f0 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index 6410a366..7c6d8f33 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index 482c5d73..a2b481ce 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/src/cpl_query/cpl_query.json b/src/cpl_query/cpl_query.json index 0292ec12..74a4b97f 100644 --- a/src/cpl_query/cpl_query.json +++ b/src/cpl_query/cpl_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15" + "Micro": "15.dev5" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15" + "cpl-core>=2022.6.15.dev5" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index d7c451db..90840ef7 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev4' +__version__ = '2022.6.15.dev5' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') diff --git a/tools/set_version/application.py b/tools/set_version/application.py index 9cae3296..3ad1b23a 100644 --- a/tools/set_version/application.py +++ b/tools/set_version/application.py @@ -55,6 +55,8 @@ class Application(ApplicationABC): try: for project in self._workspace.projects: + Console.write_line(f'Set dependencies {self._version_pipe.transform(version)} for {project}') + self._version_setter.set_dependencies(self._workspace.projects[project], version) if not project.startswith('cpl'): continue diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index a7c570a1..e1a7d005 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "sh_cpl-core>=2022.6.15.dev4" + "cpl-core>=2022.6.15.dev5" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/tools/set_version/version_setter_service.py b/tools/set_version/version_setter_service.py index e56ab20b..fcc3efaa 100644 --- a/tools/set_version/version_setter_service.py +++ b/tools/set_version/version_setter_service.py @@ -11,14 +11,27 @@ class VersionSetterService: def __init__(self, env: ApplicationEnvironmentABC): self._env = env - def set_version(self, file: str, version: dict): + def _read_file(self, file: str) -> dict: project_json = {} with open(os.path.join(self._env.working_directory, file), 'r', encoding='utf-8') as f: # load json project_json = json.load(f) f.close() + return project_json + + def _write_file(self, file: str, project_json: dict): + with open(os.path.join(self._env.working_directory, file), 'w', encoding='utf-8') as f: + f.write(json.dumps(project_json, indent=2)) + f.close() + + def set_version(self, file: str, version: dict): + project_json = self._read_file(file) project_json['ProjectSettings']['Version'] = version + self._write_file(file, project_json) + + def set_dependencies(self, file: str, version: dict): + project_json = self._read_file(file) dependencies = project_json['ProjectSettings']['Dependencies'] new_deps = [] for dependency in dependencies: @@ -30,7 +43,4 @@ class VersionSetterService: new_deps.append(dependency.replace(dep_version, f'{version["Major"]}.{version["Minor"]}.{version["Micro"]}')) project_json['ProjectSettings']['Dependencies'] = new_deps - - with open(os.path.join(self._env.working_directory, file), 'w', encoding='utf-8') as f: - f.write(json.dumps(project_json, indent=2)) - f.close() + self._write_file(file, project_json) -- 2.45.1 From e0f69c9bdf1898ddfffcf0c584172511f43a2ca0 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 18:56:08 +0200 Subject: [PATCH 067/140] Fixed old naming of cpl_core --- src/cpl_cli/command/install_service.py | 14 +++++++------- src/cpl_cli/command/new_service.py | 2 +- src/cpl_cli/command/update_service.py | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/cpl_cli/command/install_service.py b/src/cpl_cli/command/install_service.py index 873d4e72..688632a3 100644 --- a/src/cpl_cli/command/install_service.py +++ b/src/cpl_cli/command/install_service.py @@ -38,7 +38,7 @@ class InstallService(CommandABC): self._build_settings = build_settings self._project_settings = project_settings self._cli_settings = cli_settings - + self._is_simulation = False self._is_virtual = False @@ -53,7 +53,7 @@ class InstallService(CommandABC): Arguments: package The package to install """) - + def _wait(self, t: int, *args, source: str = None, stdout=None, stderr=None): time.sleep(t) @@ -77,7 +77,7 @@ class InstallService(CommandABC): Console.spinner( f'Installing: {dependency}', Pip.install if not self._is_virtual else self._wait, dependency if not self._is_virtual else 2, - source=self._cli_settings.pip_path if 'sh_cpl' in dependency else None, + source=self._cli_settings.pip_path if 'cpl-' in dependency else None, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, text_foreground_color=ForegroundColorEnum.green, @@ -140,13 +140,13 @@ class InstallService(CommandABC): Console.spinner( f'Installing: {package}', Pip.install if not self._is_virtual else self._wait, package if not self._is_virtual else 2, - source=self._cli_settings.pip_path if 'sh_cpl' in package else None, + source=self._cli_settings.pip_path if 'cpl-' in package else None, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, text_foreground_color=ForegroundColorEnum.green, spinner_foreground_color=ForegroundColorEnum.cyan ) - + if self._is_virtual: new_package = name else: @@ -177,7 +177,7 @@ class InstallService(CommandABC): ProjectSettings.__name__: SettingsHelper.get_project_settings_dict(self._project_settings), BuildSettings.__name__: SettingsHelper.get_build_settings_dict(self._build_settings) } - + with open(os.path.join(self._env.working_directory, self._project_file), 'w') as project_file: project_file.write(json.dumps(config, indent=2)) project_file.close() @@ -194,7 +194,7 @@ class InstallService(CommandABC): self._is_virtual = True args.remove('virtual') Console.write_line('Running in virtual mode:') - + if 'simulate' in args: self._is_simulation = True args.remove('simulate') diff --git a/src/cpl_cli/command/new_service.py b/src/cpl_cli/command/new_service.py index ea1fa940..916abec3 100644 --- a/src/cpl_cli/command/new_service.py +++ b/src/cpl_cli/command/new_service.py @@ -99,7 +99,7 @@ class NewService(CommandABC): ProjectSettingsNameEnum.license_name.value: '', ProjectSettingsNameEnum.license_description.value: '', ProjectSettingsNameEnum.dependencies.value: [ - f'sh_cpl-core>={version.parse(cpl_core.__version__)}' + f'cpl-core>={version.parse(cpl_core.__version__)}' ], ProjectSettingsNameEnum.python_version.value: f'>={sys.version.split(" ")[0]}', ProjectSettingsNameEnum.python_path.value: { diff --git a/src/cpl_cli/command/update_service.py b/src/cpl_cli/command/update_service.py index b667ea58..5d082109 100644 --- a/src/cpl_cli/command/update_service.py +++ b/src/cpl_cli/command/update_service.py @@ -73,7 +73,7 @@ class UpdateService(CommandABC): '--upgrade', '--upgrade-strategy', 'eager', - source=self._cli_settings.pip_path if 'sh_cpl' in name else None, + source=self._cli_settings.pip_path if 'cpl-' in name else None, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL ) -- 2.45.1 From 9050dffc53cc16d4b7827b1d2aa029822331663c Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 19:07:29 +0200 Subject: [PATCH 068/140] Renamed projects && build dev6 --- cpl-workspace.json | 33 ++++++++++--------- src/cpl_cli/__init__.py | 4 +-- src/cpl_cli/_templates/__init__.py | 4 +-- src/cpl_cli/_templates/build/__init__.py | 4 +-- src/cpl_cli/_templates/generate/__init__.py | 4 +-- src/cpl_cli/_templates/new/__init__.py | 4 +-- .../_templates/new/console/__init__.py | 4 +-- .../_templates/new/console/source/__init__.py | 4 +-- .../new/console/source/name/__init__.py | 4 +-- .../new/console/source/tests/__init__.py | 4 +-- .../_templates/new/library/__init__.py | 4 +-- .../_templates/new/library/source/__init__.py | 4 +-- .../new/library/source/name/__init__.py | 4 +-- .../new/library/source/tests/__init__.py | 4 +-- src/cpl_cli/_templates/publish/__init__.py | 4 +-- src/cpl_cli/appsettings.json | 2 +- src/cpl_cli/command/__init__.py | 4 +-- src/cpl_cli/configuration/__init__.py | 4 +-- src/cpl_cli/{cpl_cli.json => cpl-cli.json} | 4 +-- src/cpl_cli/live_server/__init__.py | 4 +-- src/cpl_cli/publish/__init__.py | 4 +-- src/cpl_cli/source_creator/__init__.py | 4 +-- src/cpl_cli/validators/__init__.py | 4 +-- src/cpl_core/__init__.py | 4 +-- src/cpl_core/application/__init__.py | 4 +-- src/cpl_core/configuration/__init__.py | 4 +-- src/cpl_core/console/__init__.py | 4 +-- src/cpl_core/{cpl_core.json => cpl-core.json} | 2 +- src/cpl_core/database/__init__.py | 4 +-- src/cpl_core/database/connection/__init__.py | 4 +-- src/cpl_core/database/context/__init__.py | 4 +-- src/cpl_core/dependency_injection/__init__.py | 4 +-- src/cpl_core/environment/__init__.py | 4 +-- src/cpl_core/logging/__init__.py | 4 +-- src/cpl_core/mailing/__init__.py | 4 +-- src/cpl_core/pipes/__init__.py | 4 +-- src/cpl_core/time/__init__.py | 4 +-- src/cpl_core/utils/__init__.py | 4 +-- src/cpl_query/__init__.py | 4 +-- src/cpl_query/_query/__init__.py | 4 +-- .../{cpl_query.json => cpl-query.json} | 4 +-- src/cpl_query/extension/__init__.py | 4 +-- tools/set_version/__init__.py | 24 ++++++++++++++ tools/set_version/appsettings.json | 15 --------- tools/set_version/set-version.json | 26 +++++++-------- 45 files changed, 133 insertions(+), 125 deletions(-) rename src/cpl_cli/{cpl_cli.json => cpl-cli.json} (94%) rename src/cpl_core/{cpl_core.json => cpl-core.json} (98%) rename src/cpl_query/{cpl_query.json => cpl-query.json} (94%) delete mode 100644 tools/set_version/appsettings.json diff --git a/cpl-workspace.json b/cpl-workspace.json index f049627f..df257d8b 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -1,10 +1,10 @@ { "WorkspaceSettings": { - "DefaultProject": "cpl_cli", + "DefaultProject": "cpl-cli", "Projects": { - "cpl_core": "src/cpl_core/cpl_core.json", - "cpl_cli": "src/cpl_cli/cpl_cli.json", - "cpl_query": "src/cpl_query/cpl_query.json", + "cpl-core": "src/cpl_core/cpl-core.json", + "cpl-cli": "src/cpl_cli/cpl-cli.json", + "cpl-query": "src/cpl_query/cpl-query.json", "set-version": "tools/set_version/set-version.json" }, "Scripts": { @@ -19,34 +19,35 @@ "do": "cpl docs-open", "pre-build-all": "cpl sv $ARGS", - "build-all": "cpl build-cli; cpl build-core; cpl build-query;", + "build-all": "cpl build-cli; cpl build-core; cpl build-query; cpl build-set-version", "ba": "cpl build-all $ARGS", - "build-cli": "echo 'Build cpl_cli'; cd ./src/cpl_cli; cpl build; cd ../../;", - "build-core": "echo 'Build cpl_core'; cd ./src/cpl_core; cpl build; cd ../../;", - "build-query": "echo 'Build cpl_query'; cd ./src/cpl_query; cpl build; cd ../../;", + "build-cli": "echo 'Build cpl-cli'; cd ./src/cpl_cli; cpl build; cd ../../;", + "build-core": "echo 'Build cpl-core'; cd ./src/cpl_core; cpl build; cd ../../;", + "build-query": "echo 'Build cpl-query'; cd ./src/cpl_query; cpl build; cd ../../;", + "build-set-version": "echo 'Build set-version'; cd ./tools/set_version; cpl build; cd ../../;", "pre-publish-all": "cpl sv $ARGS", "publish-all": "cpl publish-cli; cpl publish-core; cpl publish-query;", "pa": "cpl build-all $ARGS", - "publish-cli": "echo 'Publish cpl_cli'; cd ./src/cpl_cli; cpl publish; cd ../../;", - "publish-core": "echo 'Publish cpl_core'; cd ./src/cpl_core; cpl publish; cd ../../;", + "publish-cli": "echo 'Publish cpl-cli'; cd ./src/cpl_cli; cpl publish; cd ../../;", + "publish-core": "echo 'Publish cpl-core'; cd ./src/cpl_core; cpl publish; cd ../../;", "publish-query": "echo 'Publish cpl_query'; cd ./src/cpl_query; cpl publish; cd ../../;", - "upload-prod-cli": "echo 'PROD Upload cpl_cli'; cpl upl-prod-cli;", + "upload-prod-cli": "echo 'PROD Upload cpl-cli'; cpl upl-prod-cli;", "upl-prod-cli": "twine upload -r pip.sh-edraft.de dist/cpl-cli/publish/setup/*", - "upload-prod-core": "echo 'PROD Upload cpl_core'; cpl upl-prod-core;", + "upload-prod-core": "echo 'PROD Upload cpl-core'; cpl upl-prod-core;", "upl-prod-core": "twine upload -r pip.sh-edraft.de dist/cpl-core/publish/setup/*", "upload-prod-query": "echo 'PROD Upload cpl_query'; cpl upl-prod-query;", "upl-prod-query": "twine upload -r pip.sh-edraft.de dist/cpl-query/publish/setup/*", - "upload-exp-cli": "echo 'EXP Upload cpl_cli'; cpl upl-exp-cli;", + "upload-exp-cli": "echo 'EXP Upload cpl-cli'; cpl upl-exp-cli;", "upl-exp-cli": "twine upload -r pip-exp.sh-edraft.de dist/cpl-cli/publish/setup/*", - "upload-exp-core": "echo 'EXP Upload cpl_core'; cpl upl-exp-core;", + "upload-exp-core": "echo 'EXP Upload cpl-core'; cpl upl-exp-core;", "upl-exp-core": "twine upload -r pip-exp.sh-edraft.de dist/cpl-core/publish/setup/*", "upload-exp-query": "echo 'EXP Upload cpl_query'; cpl upl-exp-query;", "upl-exp-query": "twine upload -r pip-exp.sh-edraft.de dist/cpl-query/publish/setup/*", - "upload-dev-cli": "echo 'DEV Upload cpl_cli'; cpl upl-dev-cli;", + "upload-dev-cli": "echo 'DEV Upload cpl-cli'; cpl upl-dev-cli;", "upl-dev-cli": "twine upload -r pip-dev.sh-edraft.de dist/cpl-cli/publish/setup/*", - "upload-dev-core": "echo 'DEV Upload cpl_core'; cpl upl-dev-core;", + "upload-dev-core": "echo 'DEV Upload cpl-core'; cpl upl-dev-core;", "upl-dev-core": "twine upload -r pip-dev.sh-edraft.de dist/cpl-core/publish/setup/*", "upload-dev-query": "echo 'DEV Upload cpl_query'; cpl upl-dev-query;", "upl-dev-query": "twine upload -r pip-dev.sh-edraft.de dist/cpl-query/publish/setup/*", diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 45fe463b..7cb6d3f8 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 11fa49b0..53dda839 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 2c3a98d5..07ddd701 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 08dd2e4e..ea97f740 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 157f6367..0c850ce0 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 2bcf5e60..ec149713 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 08977d40..bbbd3059 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 2325a91c..f5406781 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 965cb756..f6d82449 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index b395a0ef..28d0efb2 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 7d140743..6a4455cb 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 1ee00f59..c22556ae 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 65d310c5..d8a59598 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index efd96230..efb9b5b5 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/appsettings.json b/src/cpl_cli/appsettings.json index f4dbfbf1..eb80fe1d 100644 --- a/src/cpl_cli/appsettings.json +++ b/src/cpl_cli/appsettings.json @@ -1,5 +1,5 @@ { "CLI": { - "PipPath": "https://pip.sh-edraft.de" + "PipPath": "https://pip-dev.sh-edraft.de" } } \ No newline at end of file diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index fcb4e9eb..78c14eb3 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index 498bcecf..cac49753 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl-cli.json similarity index 94% rename from src/cpl_cli/cpl_cli.json rename to src/cpl_cli/cpl-cli.json index c4bb37d9..7b6c8ca9 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl-cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev5" + "Micro": "15.dev6" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15.dev5" + "cpl-core>=2022.6.15.dev6" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 251148fe..86125170 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index e7deb73e..fa93a9b9 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 314f06e2..575be513 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index 4c47f878..740afb11 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index d426da8b..5c67e393 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index de30dbde..86327ae6 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 4dd2588f..03f0e052 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index f5a54096..9b692bdf 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_core/cpl_core.json b/src/cpl_core/cpl-core.json similarity index 98% rename from src/cpl_core/cpl_core.json rename to src/cpl_core/cpl-core.json index 52ef6a45..07f1ad74 100644 --- a/src/cpl_core/cpl_core.json +++ b/src/cpl_core/cpl-core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev5" + "Micro": "15.dev6" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index cd5872a5..df923673 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 73867271..5f69fdb3 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index 6bee9461..181a2c39 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 6c924298..2dbe809e 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 1c742efc..f01a86df 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 2d9d2a34..a65b9347 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index aa8e5585..42691554 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index fee19c49..b229f9bf 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index 73d6d0e6..3545cfe2 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 6b9b81f0..db1d6243 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index 7c6d8f33..720b9b90 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index a2b481ce..1dc36a5c 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/src/cpl_query/cpl_query.json b/src/cpl_query/cpl-query.json similarity index 94% rename from src/cpl_query/cpl_query.json rename to src/cpl_query/cpl-query.json index 74a4b97f..c6c29fec 100644 --- a/src/cpl_query/cpl_query.json +++ b/src/cpl_query/cpl-query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev5" + "Micro": "15.dev6" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15.dev5" + "cpl-core>=2022.6.15.dev6" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index 90840ef7..521196c9 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev5' +__version__ = '2022.6.15.dev6' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') diff --git a/tools/set_version/__init__.py b/tools/set_version/__init__.py index ad5eca30..d2f80d42 100644 --- a/tools/set_version/__init__.py +++ b/tools/set_version/__init__.py @@ -1 +1,25 @@ +# -*- coding: utf-8 -*- + +""" +set-version CPL internal tool to set version from branch name +~~~~~~~~~~~~~~~~~~~ + +CPL internal tool to set version from branch name + +:copyright: (c) 2020 - 2022 sh-edraft.de +:license: MIT, see LICENSE for more details. + +""" + +__title__ = 'set_version' +__author__ = 'Sven Heidemann' +__license__ = 'MIT' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6' + +from collections import namedtuple + # imports: + +VersionInfo = namedtuple('VersionInfo', 'major minor micro') +version_info = VersionInfo(major='2022', minor='6', micro='None') diff --git a/tools/set_version/appsettings.json b/tools/set_version/appsettings.json deleted file mode 100644 index 629e6ebd..00000000 --- a/tools/set_version/appsettings.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "TimeFormatSettings": { - "DateFormat": "%Y-%m-%d", - "TimeFormat": "%H:%M:%S", - "DateTimeFormat": "%Y-%m-%d %H:%M:%S.%f", - "DateTimeLogFormat": "%Y-%m-%d_%H-%M-%S" - }, - - "LoggingSettings": { - "Path": "logs/", - "Filename": "log_$start_time.log", - "ConsoleLogLevel": "ERROR", - "FileLogLevel": "WARN" - } -} diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index e1a7d005..06a62dbc 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -4,24 +4,22 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15" + "Micro": "" }, - "Author": "", - "AuthorEmail": "", - "Description": "", - "LongDescription": "", - "URL": "", - "CopyrightDate": "", - "CopyrightName": "", - "LicenseName": "", - "LicenseDescription": "", + "Author": "Sven Heidemann", + "AuthorEmail": "sven.heidemann@sh-edraft.de", + "Description": "CPL internal tool to set version from branch name", + "LongDescription": "CPL internal tool to set version from branch name", + "URL": "https://www.sh-edraft.de", + "CopyrightDate": "2020 - 2022", + "CopyrightName": "sh-edraft.de", + "LicenseName": "MIT", + "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15.dev5" + "cpl-core>=2022.6.15.dev6" ], "PythonVersion": ">=3.10.4", - "PythonPath": { - "linux": "" - }, + "PythonPath": {}, "Classifiers": [] }, "BuildSettings": { -- 2.45.1 From 28505479badafa353b9ddb44a378c19dd39685ec Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 19:30:11 +0200 Subject: [PATCH 069/140] Added new project --- cpl-workspace.json | 3 ++- tools/set_pip_url/__init__.py | 1 + tools/set_pip_url/application.py | 16 +++++++++++ tools/set_pip_url/appsettings.json | 15 +++++++++++ tools/set_pip_url/main.py | 14 ++++++++++ tools/set_pip_url/set-pip-url.json | 43 ++++++++++++++++++++++++++++++ tools/set_pip_url/startup.py | 16 +++++++++++ 7 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 tools/set_pip_url/__init__.py create mode 100644 tools/set_pip_url/application.py create mode 100644 tools/set_pip_url/appsettings.json create mode 100644 tools/set_pip_url/main.py create mode 100644 tools/set_pip_url/set-pip-url.json create mode 100644 tools/set_pip_url/startup.py diff --git a/cpl-workspace.json b/cpl-workspace.json index df257d8b..df26286d 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -5,7 +5,8 @@ "cpl-core": "src/cpl_core/cpl-core.json", "cpl-cli": "src/cpl_cli/cpl-cli.json", "cpl-query": "src/cpl_query/cpl-query.json", - "set-version": "tools/set_version/set-version.json" + "set-version": "tools/set_version/set-version.json", + "set-pip-url": "tools/set_pip_url/set-pip-url.json" }, "Scripts": { "hello-world": "echo 'Hello World'", diff --git a/tools/set_pip_url/__init__.py b/tools/set_pip_url/__init__.py new file mode 100644 index 00000000..ad5eca30 --- /dev/null +++ b/tools/set_pip_url/__init__.py @@ -0,0 +1 @@ +# imports: diff --git a/tools/set_pip_url/application.py b/tools/set_pip_url/application.py new file mode 100644 index 00000000..34a68c80 --- /dev/null +++ b/tools/set_pip_url/application.py @@ -0,0 +1,16 @@ +from cpl_core.application import ApplicationABC +from cpl_core.configuration import ConfigurationABC +from cpl_core.console import Console +from cpl_core.dependency_injection import ServiceProviderABC + + +class Application(ApplicationABC): + + def __init__(self, config: ConfigurationABC, services: ServiceProviderABC): + ApplicationABC.__init__(self, config, services) + + def configure(self): + pass + + def main(self): + Console.write_line('Hello World') diff --git a/tools/set_pip_url/appsettings.json b/tools/set_pip_url/appsettings.json new file mode 100644 index 00000000..629e6ebd --- /dev/null +++ b/tools/set_pip_url/appsettings.json @@ -0,0 +1,15 @@ +{ + "TimeFormatSettings": { + "DateFormat": "%Y-%m-%d", + "TimeFormat": "%H:%M:%S", + "DateTimeFormat": "%Y-%m-%d %H:%M:%S.%f", + "DateTimeLogFormat": "%Y-%m-%d_%H-%M-%S" + }, + + "LoggingSettings": { + "Path": "logs/", + "Filename": "log_$start_time.log", + "ConsoleLogLevel": "ERROR", + "FileLogLevel": "WARN" + } +} diff --git a/tools/set_pip_url/main.py b/tools/set_pip_url/main.py new file mode 100644 index 00000000..542a9d6d --- /dev/null +++ b/tools/set_pip_url/main.py @@ -0,0 +1,14 @@ +from cpl_core.application import ApplicationBuilder + +from set_pip_url.application import Application +from set_pip_url.startup import Startup + + +def main(): + app_builder = ApplicationBuilder(Application) + app_builder.use_startup(Startup) + app_builder.build().run() + + +if __name__ == '__main__': + main() diff --git a/tools/set_pip_url/set-pip-url.json b/tools/set_pip_url/set-pip-url.json new file mode 100644 index 00000000..227fcf72 --- /dev/null +++ b/tools/set_pip_url/set-pip-url.json @@ -0,0 +1,43 @@ +{ + "ProjectSettings": { + "Name": "set-pip-url", + "Version": { + "Major": "0", + "Minor": "0", + "Micro": "0" + }, + "Author": "", + "AuthorEmail": "", + "Description": "", + "LongDescription": "", + "URL": "", + "CopyrightDate": "", + "CopyrightName": "", + "LicenseName": "", + "LicenseDescription": "", + "Dependencies": [ + "cpl-core>=2022.6.15.dev6" + ], + "PythonVersion": ">=3.10.4", + "PythonPath": { + "linux": "" + }, + "Classifiers": [] + }, + "BuildSettings": { + "ProjectType": "console", + "SourcePath": "", + "OutputPath": "../../dist", + "Main": "set_pip_url.main", + "EntryPoint": "set-pip-url", + "IncludePackageData": false, + "Included": [], + "Excluded": [ + "*/__pycache__", + "*/logs", + "*/tests" + ], + "PackageData": {}, + "ProjectReferences": [] + } +} \ No newline at end of file diff --git a/tools/set_pip_url/startup.py b/tools/set_pip_url/startup.py new file mode 100644 index 00000000..359c03d2 --- /dev/null +++ b/tools/set_pip_url/startup.py @@ -0,0 +1,16 @@ +from cpl_core.application import StartupABC +from cpl_core.configuration import ConfigurationABC +from cpl_core.dependency_injection import ServiceProviderABC, ServiceCollectionABC +from cpl_core.environment import ApplicationEnvironment + + +class Startup(StartupABC): + + def __init__(self): + StartupABC.__init__(self) + + def configure_configuration(self, configuration: ConfigurationABC, environment: ApplicationEnvironment) -> ConfigurationABC: + return configuration + + def configure_services(self, services: ServiceCollectionABC, environment: ApplicationEnvironment) -> ServiceProviderABC: + return services.build_service_provider() -- 2.45.1 From 907c3a8fff8309272e9611672ef6b4ecc6d11457 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 19:38:38 +0200 Subject: [PATCH 070/140] First dev build --- cpl-workspace.json | 10 +++-- src/cpl_cli/__init__.py | 4 +- src/cpl_cli/_templates/__init__.py | 4 +- src/cpl_cli/_templates/build/__init__.py | 4 +- src/cpl_cli/_templates/generate/__init__.py | 4 +- src/cpl_cli/_templates/new/__init__.py | 4 +- .../_templates/new/console/__init__.py | 4 +- .../_templates/new/console/source/__init__.py | 4 +- .../new/console/source/name/__init__.py | 4 +- .../new/console/source/tests/__init__.py | 4 +- .../_templates/new/library/__init__.py | 4 +- .../_templates/new/library/source/__init__.py | 4 +- .../new/library/source/name/__init__.py | 4 +- .../new/library/source/tests/__init__.py | 4 +- src/cpl_cli/_templates/publish/__init__.py | 4 +- src/cpl_cli/command/__init__.py | 4 +- src/cpl_cli/configuration/__init__.py | 4 +- src/cpl_cli/cpl-cli.json | 4 +- src/cpl_cli/live_server/__init__.py | 4 +- src/cpl_cli/publish/__init__.py | 4 +- src/cpl_cli/source_creator/__init__.py | 4 +- src/cpl_cli/validators/__init__.py | 4 +- src/cpl_core/__init__.py | 4 +- src/cpl_core/application/__init__.py | 4 +- src/cpl_core/configuration/__init__.py | 4 +- src/cpl_core/console/__init__.py | 4 +- src/cpl_core/cpl-core.json | 2 +- src/cpl_core/database/__init__.py | 4 +- src/cpl_core/database/connection/__init__.py | 4 +- src/cpl_core/database/context/__init__.py | 4 +- src/cpl_core/dependency_injection/__init__.py | 4 +- src/cpl_core/environment/__init__.py | 4 +- src/cpl_core/logging/__init__.py | 4 +- src/cpl_core/mailing/__init__.py | 4 +- src/cpl_core/pipes/__init__.py | 4 +- src/cpl_core/time/__init__.py | 4 +- src/cpl_core/utils/__init__.py | 4 +- src/cpl_query/__init__.py | 4 +- src/cpl_query/_query/__init__.py | 4 +- src/cpl_query/cpl-query.json | 4 +- src/cpl_query/extension/__init__.py | 4 +- tools/set_pip_url/__init__.py | 1 - tools/set_pip_url/appsettings.json | 15 ------- tools/set_pip_url/set-pip-url.json | 43 ------------------- tools/set_pip_urls/__init__.py | 25 +++++++++++ .../application.py | 2 +- tools/set_pip_urls/appsettings.json | 7 +++ tools/{set_pip_url => set_pip_urls}/main.py | 4 +- tools/set_pip_urls/set-pip-urls.json | 41 ++++++++++++++++++ .../{set_pip_url => set_pip_urls}/startup.py | 0 tools/set_version/set-version.json | 4 +- 51 files changed, 164 insertions(+), 146 deletions(-) delete mode 100644 tools/set_pip_url/__init__.py delete mode 100644 tools/set_pip_url/appsettings.json delete mode 100644 tools/set_pip_url/set-pip-url.json create mode 100644 tools/set_pip_urls/__init__.py rename tools/{set_pip_url => set_pip_urls}/application.py (84%) create mode 100644 tools/set_pip_urls/appsettings.json rename tools/{set_pip_url => set_pip_urls}/main.py (71%) create mode 100644 tools/set_pip_urls/set-pip-urls.json rename tools/{set_pip_url => set_pip_urls}/startup.py (100%) diff --git a/cpl-workspace.json b/cpl-workspace.json index df26286d..b262a5ba 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -6,7 +6,7 @@ "cpl-cli": "src/cpl_cli/cpl-cli.json", "cpl-query": "src/cpl_query/cpl-query.json", "set-version": "tools/set_version/set-version.json", - "set-pip-url": "tools/set_pip_url/set-pip-url.json" + "set-pip-urls": "tools/set_pip_urls/set-pip-urls.json" }, "Scripts": { "hello-world": "echo 'Hello World'", @@ -14,17 +14,21 @@ "sv": "cpl set-version", "set-version": "cpl run set-version $ARGS; echo '';", + "spu": "cpl set-pip-urls", + "set-pip-urls": "cpl run set-pip-urls $ARGS; echo '';", + "docs-build": "echo 'Build Documentation'; cd docs/; sphinx-apidoc -o source/ ../src/cpl_core; sphinx-apidoc -o source/ ../src/cpl_query; make clean; make html; rm source/cpl_query.tests.rst;", "db": "cpl build-docs", "docs-open": "xdg-open $PWD/docs/build/html/index.html &", "do": "cpl docs-open", - "pre-build-all": "cpl sv $ARGS", - "build-all": "cpl build-cli; cpl build-core; cpl build-query; cpl build-set-version", + "pre-build-all": "cpl sv $ARGS; cpl spu;", + "build-all": "cpl build-cli; cpl build-core; cpl build-query; cpl build-set-pip-urls; cpl build-set-version", "ba": "cpl build-all $ARGS", "build-cli": "echo 'Build cpl-cli'; cd ./src/cpl_cli; cpl build; cd ../../;", "build-core": "echo 'Build cpl-core'; cd ./src/cpl_core; cpl build; cd ../../;", "build-query": "echo 'Build cpl-query'; cd ./src/cpl_query; cpl build; cd ../../;", + "build-set-pip-urls": "echo 'Build set-pip-urls'; cd ./tools/set_pip_urls; cpl build; cd ../../;", "build-set-version": "echo 'Build set-version'; cd ./tools/set_version; cpl build; cd ../../;", "pre-publish-all": "cpl sv $ARGS", diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 7cb6d3f8..62458b63 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 53dda839..8a5ce5c8 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 07ddd701..20a7c85c 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index ea97f740..c5e240b8 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 0c850ce0..3a36054b 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index ec149713..6061c0ef 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index bbbd3059..35796370 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index f5406781..c67f58e3 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index f6d82449..6d03cfab 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 28d0efb2..e983abe7 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 6a4455cb..a6bbfa24 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index c22556ae..b0ec5cd8 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index d8a59598..49e7fe39 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index efb9b5b5..47b33d9d 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 78c14eb3..4e5021cc 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index cac49753..3645711c 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/cpl-cli.json b/src/cpl_cli/cpl-cli.json index 7b6c8ca9..9f26416f 100644 --- a/src/cpl_cli/cpl-cli.json +++ b/src/cpl_cli/cpl-cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev6" + "Micro": "16.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15.dev6" + "cpl-core>=2022.6.16.dev1" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 86125170..4fe50897 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index fa93a9b9..bf02c376 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 575be513..67728896 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index 740afb11..cd5fdfd7 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index 5c67e393..f9937f9d 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 86327ae6..644f203c 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 03f0e052..b0a782cc 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index 9b692bdf..05da1fa2 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/cpl-core.json b/src/cpl_core/cpl-core.json index 07f1ad74..69ce23e7 100644 --- a/src/cpl_core/cpl-core.json +++ b/src/cpl_core/cpl-core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev6" + "Micro": "16.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index df923673..024f9624 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 5f69fdb3..c8d296f2 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index 181a2c39..62610129 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 2dbe809e..8aa55f8e 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index f01a86df..64dedcc3 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index a65b9347..90a17804 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 42691554..efdab56b 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index b229f9bf..f072cfe9 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index 3545cfe2..6ddaf4a5 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index db1d6243..f56bb280 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index 720b9b90..dace8581 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index 1dc36a5c..b4ba4fe2 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_query/cpl-query.json b/src/cpl_query/cpl-query.json index c6c29fec..064204ac 100644 --- a/src/cpl_query/cpl-query.json +++ b/src/cpl_query/cpl-query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev6" + "Micro": "16.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15.dev6" + "cpl-core>=2022.6.16.dev1" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index 521196c9..144b1ad9 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/tools/set_pip_url/__init__.py b/tools/set_pip_url/__init__.py deleted file mode 100644 index ad5eca30..00000000 --- a/tools/set_pip_url/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# imports: diff --git a/tools/set_pip_url/appsettings.json b/tools/set_pip_url/appsettings.json deleted file mode 100644 index 629e6ebd..00000000 --- a/tools/set_pip_url/appsettings.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "TimeFormatSettings": { - "DateFormat": "%Y-%m-%d", - "TimeFormat": "%H:%M:%S", - "DateTimeFormat": "%Y-%m-%d %H:%M:%S.%f", - "DateTimeLogFormat": "%Y-%m-%d_%H-%M-%S" - }, - - "LoggingSettings": { - "Path": "logs/", - "Filename": "log_$start_time.log", - "ConsoleLogLevel": "ERROR", - "FileLogLevel": "WARN" - } -} diff --git a/tools/set_pip_url/set-pip-url.json b/tools/set_pip_url/set-pip-url.json deleted file mode 100644 index 227fcf72..00000000 --- a/tools/set_pip_url/set-pip-url.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "ProjectSettings": { - "Name": "set-pip-url", - "Version": { - "Major": "0", - "Minor": "0", - "Micro": "0" - }, - "Author": "", - "AuthorEmail": "", - "Description": "", - "LongDescription": "", - "URL": "", - "CopyrightDate": "", - "CopyrightName": "", - "LicenseName": "", - "LicenseDescription": "", - "Dependencies": [ - "cpl-core>=2022.6.15.dev6" - ], - "PythonVersion": ">=3.10.4", - "PythonPath": { - "linux": "" - }, - "Classifiers": [] - }, - "BuildSettings": { - "ProjectType": "console", - "SourcePath": "", - "OutputPath": "../../dist", - "Main": "set_pip_url.main", - "EntryPoint": "set-pip-url", - "IncludePackageData": false, - "Included": [], - "Excluded": [ - "*/__pycache__", - "*/logs", - "*/tests" - ], - "PackageData": {}, - "ProjectReferences": [] - } -} \ No newline at end of file diff --git a/tools/set_pip_urls/__init__.py b/tools/set_pip_urls/__init__.py new file mode 100644 index 00000000..f0590e5c --- /dev/null +++ b/tools/set_pip_urls/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +""" +set-pip-urls CPL internal tool to set pip URL for CLI by environment +~~~~~~~~~~~~~~~~~~~ + +CPL internal tool to set pip URL for CLI by environment + +:copyright: (c) 2020 - 2022 sh-edraft.de +:license: MIT, see LICENSE for more details. + +""" + +__title__ = 'set_pip_urls' +__author__ = 'Sven Heidemann' +__license__ = 'MIT' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.0' + +from collections import namedtuple + +# imports: + +VersionInfo = namedtuple('VersionInfo', 'major minor micro') +version_info = VersionInfo(major='2022', minor='6', micro='0') diff --git a/tools/set_pip_url/application.py b/tools/set_pip_urls/application.py similarity index 84% rename from tools/set_pip_url/application.py rename to tools/set_pip_urls/application.py index 34a68c80..d9f2fff0 100644 --- a/tools/set_pip_url/application.py +++ b/tools/set_pip_urls/application.py @@ -13,4 +13,4 @@ class Application(ApplicationABC): pass def main(self): - Console.write_line('Hello World') + Console.write_line('Hello World', self._environment.environment_name) diff --git a/tools/set_pip_urls/appsettings.json b/tools/set_pip_urls/appsettings.json new file mode 100644 index 00000000..25b04f41 --- /dev/null +++ b/tools/set_pip_urls/appsettings.json @@ -0,0 +1,7 @@ +{ + "PIPSettings": { + "production": "https://pip.sh-edraft.de", + "staging": "https://pip-exp.sh-edraft.de", + "development": "https://pip-dev.sh-edraft.de" + } +} diff --git a/tools/set_pip_url/main.py b/tools/set_pip_urls/main.py similarity index 71% rename from tools/set_pip_url/main.py rename to tools/set_pip_urls/main.py index 542a9d6d..d57a6abb 100644 --- a/tools/set_pip_url/main.py +++ b/tools/set_pip_urls/main.py @@ -1,7 +1,7 @@ from cpl_core.application import ApplicationBuilder -from set_pip_url.application import Application -from set_pip_url.startup import Startup +from set_pip_urls.application import Application +from set_pip_urls.startup import Startup def main(): diff --git a/tools/set_pip_urls/set-pip-urls.json b/tools/set_pip_urls/set-pip-urls.json new file mode 100644 index 00000000..a401e0f3 --- /dev/null +++ b/tools/set_pip_urls/set-pip-urls.json @@ -0,0 +1,41 @@ +{ + "ProjectSettings": { + "Name": "set-pip-urls", + "Version": { + "Major": "2022", + "Minor": "6", + "Micro": "0" + }, + "Author": "Sven Heidemann", + "AuthorEmail": "sven.heidemann@sh-edraft.de", + "Description": "CPL internal tool to set pip URL for CLI by environment", + "LongDescription": "CPL internal tool to set pip URL for CLI by environment", + "URL": "https://www.sh-edraft.de", + "CopyrightDate": "2020 - 2022", + "CopyrightName": "sh-edraft.de", + "LicenseName": "MIT", + "LicenseDescription": "MIT, see LICENSE for more details.", + "Dependencies": [ + "cpl-core>=2022.6.16.dev1" + ], + "PythonVersion": ">=3.10.4", + "PythonPath": {}, + "Classifiers": [] + }, + "BuildSettings": { + "ProjectType": "console", + "SourcePath": "", + "OutputPath": "../../dist", + "Main": "set_pip_url.main", + "EntryPoint": "set-pip-url", + "IncludePackageData": false, + "Included": [], + "Excluded": [ + "*/__pycache__", + "*/logs", + "*/tests" + ], + "PackageData": {}, + "ProjectReferences": [] + } +} \ No newline at end of file diff --git a/tools/set_pip_url/startup.py b/tools/set_pip_urls/startup.py similarity index 100% rename from tools/set_pip_url/startup.py rename to tools/set_pip_urls/startup.py diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index 06a62dbc..cfe95b51 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "" + "Micro": "0" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15.dev6" + "cpl-core>=2022.6.16.dev1" ], "PythonVersion": ">=3.10.4", "PythonPath": {}, -- 2.45.1 From 4224960837a5888e5deefa3f6b2952f718476591 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 19:38:38 +0200 Subject: [PATCH 071/140] First dev build --- cpl-workspace.json | 10 +++-- src/cpl_cli/__init__.py | 4 +- src/cpl_cli/_templates/__init__.py | 4 +- src/cpl_cli/_templates/build/__init__.py | 4 +- src/cpl_cli/_templates/generate/__init__.py | 4 +- src/cpl_cli/_templates/new/__init__.py | 4 +- .../_templates/new/console/__init__.py | 4 +- .../_templates/new/console/source/__init__.py | 4 +- .../new/console/source/name/__init__.py | 4 +- .../new/console/source/tests/__init__.py | 4 +- .../_templates/new/library/__init__.py | 4 +- .../_templates/new/library/source/__init__.py | 4 +- .../new/library/source/name/__init__.py | 4 +- .../new/library/source/tests/__init__.py | 4 +- src/cpl_cli/_templates/publish/__init__.py | 4 +- src/cpl_cli/command/__init__.py | 4 +- src/cpl_cli/configuration/__init__.py | 4 +- src/cpl_cli/cpl-cli.json | 4 +- src/cpl_cli/live_server/__init__.py | 4 +- src/cpl_cli/publish/__init__.py | 4 +- src/cpl_cli/source_creator/__init__.py | 4 +- src/cpl_cli/validators/__init__.py | 4 +- src/cpl_core/__init__.py | 4 +- src/cpl_core/application/__init__.py | 4 +- src/cpl_core/configuration/__init__.py | 4 +- src/cpl_core/console/__init__.py | 4 +- src/cpl_core/cpl-core.json | 2 +- src/cpl_core/database/__init__.py | 4 +- src/cpl_core/database/connection/__init__.py | 4 +- src/cpl_core/database/context/__init__.py | 4 +- src/cpl_core/dependency_injection/__init__.py | 4 +- src/cpl_core/environment/__init__.py | 4 +- src/cpl_core/logging/__init__.py | 4 +- src/cpl_core/mailing/__init__.py | 4 +- src/cpl_core/pipes/__init__.py | 4 +- src/cpl_core/time/__init__.py | 4 +- src/cpl_core/utils/__init__.py | 4 +- src/cpl_query/__init__.py | 4 +- src/cpl_query/_query/__init__.py | 4 +- src/cpl_query/cpl-query.json | 4 +- src/cpl_query/extension/__init__.py | 4 +- tools/set_pip_url/__init__.py | 1 - tools/set_pip_url/appsettings.json | 15 ------- tools/set_pip_url/set-pip-url.json | 43 ------------------- tools/set_pip_urls/__init__.py | 25 +++++++++++ .../application.py | 2 +- tools/set_pip_urls/appsettings.json | 7 +++ tools/{set_pip_url => set_pip_urls}/main.py | 4 +- tools/set_pip_urls/set-pip-urls.json | 41 ++++++++++++++++++ .../{set_pip_url => set_pip_urls}/startup.py | 0 tools/set_version/__init__.py | 4 +- tools/set_version/set-version.json | 4 +- 52 files changed, 166 insertions(+), 148 deletions(-) delete mode 100644 tools/set_pip_url/__init__.py delete mode 100644 tools/set_pip_url/appsettings.json delete mode 100644 tools/set_pip_url/set-pip-url.json create mode 100644 tools/set_pip_urls/__init__.py rename tools/{set_pip_url => set_pip_urls}/application.py (84%) create mode 100644 tools/set_pip_urls/appsettings.json rename tools/{set_pip_url => set_pip_urls}/main.py (71%) create mode 100644 tools/set_pip_urls/set-pip-urls.json rename tools/{set_pip_url => set_pip_urls}/startup.py (100%) diff --git a/cpl-workspace.json b/cpl-workspace.json index df26286d..b262a5ba 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -6,7 +6,7 @@ "cpl-cli": "src/cpl_cli/cpl-cli.json", "cpl-query": "src/cpl_query/cpl-query.json", "set-version": "tools/set_version/set-version.json", - "set-pip-url": "tools/set_pip_url/set-pip-url.json" + "set-pip-urls": "tools/set_pip_urls/set-pip-urls.json" }, "Scripts": { "hello-world": "echo 'Hello World'", @@ -14,17 +14,21 @@ "sv": "cpl set-version", "set-version": "cpl run set-version $ARGS; echo '';", + "spu": "cpl set-pip-urls", + "set-pip-urls": "cpl run set-pip-urls $ARGS; echo '';", + "docs-build": "echo 'Build Documentation'; cd docs/; sphinx-apidoc -o source/ ../src/cpl_core; sphinx-apidoc -o source/ ../src/cpl_query; make clean; make html; rm source/cpl_query.tests.rst;", "db": "cpl build-docs", "docs-open": "xdg-open $PWD/docs/build/html/index.html &", "do": "cpl docs-open", - "pre-build-all": "cpl sv $ARGS", - "build-all": "cpl build-cli; cpl build-core; cpl build-query; cpl build-set-version", + "pre-build-all": "cpl sv $ARGS; cpl spu;", + "build-all": "cpl build-cli; cpl build-core; cpl build-query; cpl build-set-pip-urls; cpl build-set-version", "ba": "cpl build-all $ARGS", "build-cli": "echo 'Build cpl-cli'; cd ./src/cpl_cli; cpl build; cd ../../;", "build-core": "echo 'Build cpl-core'; cd ./src/cpl_core; cpl build; cd ../../;", "build-query": "echo 'Build cpl-query'; cd ./src/cpl_query; cpl build; cd ../../;", + "build-set-pip-urls": "echo 'Build set-pip-urls'; cd ./tools/set_pip_urls; cpl build; cd ../../;", "build-set-version": "echo 'Build set-version'; cd ./tools/set_version; cpl build; cd ../../;", "pre-publish-all": "cpl sv $ARGS", diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 7cb6d3f8..62458b63 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 53dda839..8a5ce5c8 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 07ddd701..20a7c85c 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index ea97f740..c5e240b8 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 0c850ce0..3a36054b 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index ec149713..6061c0ef 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index bbbd3059..35796370 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index f5406781..c67f58e3 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index f6d82449..6d03cfab 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 28d0efb2..e983abe7 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 6a4455cb..a6bbfa24 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index c22556ae..b0ec5cd8 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index d8a59598..49e7fe39 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index efb9b5b5..47b33d9d 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 78c14eb3..4e5021cc 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index cac49753..3645711c 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/cpl-cli.json b/src/cpl_cli/cpl-cli.json index 7b6c8ca9..9f26416f 100644 --- a/src/cpl_cli/cpl-cli.json +++ b/src/cpl_cli/cpl-cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev6" + "Micro": "16.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15.dev6" + "cpl-core>=2022.6.16.dev1" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 86125170..4fe50897 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index fa93a9b9..bf02c376 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 575be513..67728896 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index 740afb11..cd5fdfd7 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index 5c67e393..f9937f9d 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 86327ae6..644f203c 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 03f0e052..b0a782cc 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index 9b692bdf..05da1fa2 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/cpl-core.json b/src/cpl_core/cpl-core.json index 07f1ad74..69ce23e7 100644 --- a/src/cpl_core/cpl-core.json +++ b/src/cpl_core/cpl-core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev6" + "Micro": "16.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index df923673..024f9624 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 5f69fdb3..c8d296f2 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index 181a2c39..62610129 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 2dbe809e..8aa55f8e 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index f01a86df..64dedcc3 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index a65b9347..90a17804 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 42691554..efdab56b 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index b229f9bf..f072cfe9 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index 3545cfe2..6ddaf4a5 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index db1d6243..f56bb280 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index 720b9b90..dace8581 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index 1dc36a5c..b4ba4fe2 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/src/cpl_query/cpl-query.json b/src/cpl_query/cpl-query.json index c6c29fec..064204ac 100644 --- a/src/cpl_query/cpl-query.json +++ b/src/cpl_query/cpl-query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "15.dev6" + "Micro": "16.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15.dev6" + "cpl-core>=2022.6.16.dev1" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index 521196c9..144b1ad9 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.15.dev6' +__version__ = '2022.6.16.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='15.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') diff --git a/tools/set_pip_url/__init__.py b/tools/set_pip_url/__init__.py deleted file mode 100644 index ad5eca30..00000000 --- a/tools/set_pip_url/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# imports: diff --git a/tools/set_pip_url/appsettings.json b/tools/set_pip_url/appsettings.json deleted file mode 100644 index 629e6ebd..00000000 --- a/tools/set_pip_url/appsettings.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "TimeFormatSettings": { - "DateFormat": "%Y-%m-%d", - "TimeFormat": "%H:%M:%S", - "DateTimeFormat": "%Y-%m-%d %H:%M:%S.%f", - "DateTimeLogFormat": "%Y-%m-%d_%H-%M-%S" - }, - - "LoggingSettings": { - "Path": "logs/", - "Filename": "log_$start_time.log", - "ConsoleLogLevel": "ERROR", - "FileLogLevel": "WARN" - } -} diff --git a/tools/set_pip_url/set-pip-url.json b/tools/set_pip_url/set-pip-url.json deleted file mode 100644 index 227fcf72..00000000 --- a/tools/set_pip_url/set-pip-url.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "ProjectSettings": { - "Name": "set-pip-url", - "Version": { - "Major": "0", - "Minor": "0", - "Micro": "0" - }, - "Author": "", - "AuthorEmail": "", - "Description": "", - "LongDescription": "", - "URL": "", - "CopyrightDate": "", - "CopyrightName": "", - "LicenseName": "", - "LicenseDescription": "", - "Dependencies": [ - "cpl-core>=2022.6.15.dev6" - ], - "PythonVersion": ">=3.10.4", - "PythonPath": { - "linux": "" - }, - "Classifiers": [] - }, - "BuildSettings": { - "ProjectType": "console", - "SourcePath": "", - "OutputPath": "../../dist", - "Main": "set_pip_url.main", - "EntryPoint": "set-pip-url", - "IncludePackageData": false, - "Included": [], - "Excluded": [ - "*/__pycache__", - "*/logs", - "*/tests" - ], - "PackageData": {}, - "ProjectReferences": [] - } -} \ No newline at end of file diff --git a/tools/set_pip_urls/__init__.py b/tools/set_pip_urls/__init__.py new file mode 100644 index 00000000..f0590e5c --- /dev/null +++ b/tools/set_pip_urls/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +""" +set-pip-urls CPL internal tool to set pip URL for CLI by environment +~~~~~~~~~~~~~~~~~~~ + +CPL internal tool to set pip URL for CLI by environment + +:copyright: (c) 2020 - 2022 sh-edraft.de +:license: MIT, see LICENSE for more details. + +""" + +__title__ = 'set_pip_urls' +__author__ = 'Sven Heidemann' +__license__ = 'MIT' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.0' + +from collections import namedtuple + +# imports: + +VersionInfo = namedtuple('VersionInfo', 'major minor micro') +version_info = VersionInfo(major='2022', minor='6', micro='0') diff --git a/tools/set_pip_url/application.py b/tools/set_pip_urls/application.py similarity index 84% rename from tools/set_pip_url/application.py rename to tools/set_pip_urls/application.py index 34a68c80..d9f2fff0 100644 --- a/tools/set_pip_url/application.py +++ b/tools/set_pip_urls/application.py @@ -13,4 +13,4 @@ class Application(ApplicationABC): pass def main(self): - Console.write_line('Hello World') + Console.write_line('Hello World', self._environment.environment_name) diff --git a/tools/set_pip_urls/appsettings.json b/tools/set_pip_urls/appsettings.json new file mode 100644 index 00000000..25b04f41 --- /dev/null +++ b/tools/set_pip_urls/appsettings.json @@ -0,0 +1,7 @@ +{ + "PIPSettings": { + "production": "https://pip.sh-edraft.de", + "staging": "https://pip-exp.sh-edraft.de", + "development": "https://pip-dev.sh-edraft.de" + } +} diff --git a/tools/set_pip_url/main.py b/tools/set_pip_urls/main.py similarity index 71% rename from tools/set_pip_url/main.py rename to tools/set_pip_urls/main.py index 542a9d6d..d57a6abb 100644 --- a/tools/set_pip_url/main.py +++ b/tools/set_pip_urls/main.py @@ -1,7 +1,7 @@ from cpl_core.application import ApplicationBuilder -from set_pip_url.application import Application -from set_pip_url.startup import Startup +from set_pip_urls.application import Application +from set_pip_urls.startup import Startup def main(): diff --git a/tools/set_pip_urls/set-pip-urls.json b/tools/set_pip_urls/set-pip-urls.json new file mode 100644 index 00000000..a401e0f3 --- /dev/null +++ b/tools/set_pip_urls/set-pip-urls.json @@ -0,0 +1,41 @@ +{ + "ProjectSettings": { + "Name": "set-pip-urls", + "Version": { + "Major": "2022", + "Minor": "6", + "Micro": "0" + }, + "Author": "Sven Heidemann", + "AuthorEmail": "sven.heidemann@sh-edraft.de", + "Description": "CPL internal tool to set pip URL for CLI by environment", + "LongDescription": "CPL internal tool to set pip URL for CLI by environment", + "URL": "https://www.sh-edraft.de", + "CopyrightDate": "2020 - 2022", + "CopyrightName": "sh-edraft.de", + "LicenseName": "MIT", + "LicenseDescription": "MIT, see LICENSE for more details.", + "Dependencies": [ + "cpl-core>=2022.6.16.dev1" + ], + "PythonVersion": ">=3.10.4", + "PythonPath": {}, + "Classifiers": [] + }, + "BuildSettings": { + "ProjectType": "console", + "SourcePath": "", + "OutputPath": "../../dist", + "Main": "set_pip_url.main", + "EntryPoint": "set-pip-url", + "IncludePackageData": false, + "Included": [], + "Excluded": [ + "*/__pycache__", + "*/logs", + "*/tests" + ], + "PackageData": {}, + "ProjectReferences": [] + } +} \ No newline at end of file diff --git a/tools/set_pip_url/startup.py b/tools/set_pip_urls/startup.py similarity index 100% rename from tools/set_pip_url/startup.py rename to tools/set_pip_urls/startup.py diff --git a/tools/set_version/__init__.py b/tools/set_version/__init__.py index d2f80d42..c98057ae 100644 --- a/tools/set_version/__init__.py +++ b/tools/set_version/__init__.py @@ -15,11 +15,11 @@ __title__ = 'set_version' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6' +__version__ = '2022.6.0' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='None') +version_info = VersionInfo(major='2022', minor='6', micro='0') diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index 06a62dbc..cfe95b51 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "" + "Micro": "0" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.15.dev6" + "cpl-core>=2022.6.16.dev1" ], "PythonVersion": ">=3.10.4", "PythonPath": {}, -- 2.45.1 From d8168f024c385c8024638854b094c9c7ca9e5a3e Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 19:53:05 +0200 Subject: [PATCH 072/140] Added logic to write PipPath & build dev2 --- cpl-workspace.json | 4 +- src/cpl_cli/__init__.py | 4 +- src/cpl_cli/_templates/__init__.py | 4 +- src/cpl_cli/_templates/build/__init__.py | 4 +- src/cpl_cli/_templates/generate/__init__.py | 4 +- src/cpl_cli/_templates/new/__init__.py | 4 +- .../_templates/new/console/__init__.py | 4 +- .../_templates/new/console/source/__init__.py | 4 +- .../new/console/source/name/__init__.py | 4 +- .../new/console/source/tests/__init__.py | 4 +- .../_templates/new/library/__init__.py | 4 +- .../_templates/new/library/source/__init__.py | 4 +- .../new/library/source/name/__init__.py | 4 +- .../new/library/source/tests/__init__.py | 4 +- src/cpl_cli/_templates/publish/__init__.py | 4 +- src/cpl_cli/command/__init__.py | 4 +- src/cpl_cli/configuration/__init__.py | 4 +- src/cpl_cli/cpl-cli.json | 4 +- src/cpl_cli/live_server/__init__.py | 4 +- src/cpl_cli/publish/__init__.py | 4 +- src/cpl_cli/source_creator/__init__.py | 4 +- src/cpl_cli/validators/__init__.py | 4 +- src/cpl_core/__init__.py | 4 +- src/cpl_core/application/__init__.py | 4 +- src/cpl_core/configuration/__init__.py | 4 +- src/cpl_core/console/__init__.py | 4 +- src/cpl_core/cpl-core.json | 2 +- src/cpl_core/database/__init__.py | 4 +- src/cpl_core/database/connection/__init__.py | 4 +- src/cpl_core/database/context/__init__.py | 4 +- src/cpl_core/dependency_injection/__init__.py | 4 +- src/cpl_core/environment/__init__.py | 4 +- src/cpl_core/logging/__init__.py | 4 +- src/cpl_core/mailing/__init__.py | 4 +- src/cpl_core/pipes/__init__.py | 4 +- src/cpl_core/time/__init__.py | 4 +- src/cpl_core/utils/__init__.py | 4 +- src/cpl_query/__init__.py | 4 +- src/cpl_query/_query/__init__.py | 4 +- src/cpl_query/cpl-query.json | 4 +- src/cpl_query/extension/__init__.py | 4 +- tools/set_pip_urls/application.py | 36 +++++++++++++++++- tools/set_pip_urls/pip_settings.py | 37 +++++++++++++++++++ tools/set_pip_urls/set-pip-urls.json | 2 +- tools/set_pip_urls/startup.py | 2 + tools/set_version/set-version.json | 2 +- 46 files changed, 156 insertions(+), 85 deletions(-) create mode 100644 tools/set_pip_urls/pip_settings.py diff --git a/cpl-workspace.json b/cpl-workspace.json index b262a5ba..e99ca505 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -22,7 +22,7 @@ "docs-open": "xdg-open $PWD/docs/build/html/index.html &", "do": "cpl docs-open", - "pre-build-all": "cpl sv $ARGS; cpl spu;", + "pre-build-all": "cpl sv $ARGS; cpl spu $ARGS;", "build-all": "cpl build-cli; cpl build-core; cpl build-query; cpl build-set-pip-urls; cpl build-set-version", "ba": "cpl build-all $ARGS", "build-cli": "echo 'Build cpl-cli'; cd ./src/cpl_cli; cpl build; cd ../../;", @@ -31,7 +31,7 @@ "build-set-pip-urls": "echo 'Build set-pip-urls'; cd ./tools/set_pip_urls; cpl build; cd ../../;", "build-set-version": "echo 'Build set-version'; cd ./tools/set_version; cpl build; cd ../../;", - "pre-publish-all": "cpl sv $ARGS", + "pre-publish-all": "cpl sv $ARGS; cpl spu $ARGS;", "publish-all": "cpl publish-cli; cpl publish-core; cpl publish-query;", "pa": "cpl build-all $ARGS", "publish-cli": "echo 'Publish cpl-cli'; cd ./src/cpl_cli; cpl publish; cd ../../;", diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 62458b63..05e52eb0 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 8a5ce5c8..2f05b3a2 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 20a7c85c..4d15c7c4 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index c5e240b8..f623a461 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 3a36054b..87792c02 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 6061c0ef..d88df923 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 35796370..7d9d4f31 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index c67f58e3..bcf07bec 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 6d03cfab..e6f97f7d 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index e983abe7..983bda70 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index a6bbfa24..05c73fef 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index b0ec5cd8..cff20c14 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 49e7fe39..b5b21f5f 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index 47b33d9d..2b81167c 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 4e5021cc..57edb0da 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index 3645711c..1661d5d3 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/cpl-cli.json b/src/cpl_cli/cpl-cli.json index 9f26416f..c82b9c2d 100644 --- a/src/cpl_cli/cpl-cli.json +++ b/src/cpl_cli/cpl-cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "16.dev1" + "Micro": "16.dev2" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.16.dev1" + "cpl-core>=2022.6.16.dev2" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 4fe50897..15e8c430 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index bf02c376..5e21f69d 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 67728896..c4195351 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index cd5fdfd7..8d8bd93f 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index f9937f9d..808bef50 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 644f203c..068828c5 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index b0a782cc..6942e603 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index 05da1fa2..563b63f7 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_core/cpl-core.json b/src/cpl_core/cpl-core.json index 69ce23e7..572e5760 100644 --- a/src/cpl_core/cpl-core.json +++ b/src/cpl_core/cpl-core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "16.dev1" + "Micro": "16.dev2" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index 024f9624..0a98c239 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index c8d296f2..fdce501a 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index 62610129..1be8611e 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 8aa55f8e..4685b513 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 64dedcc3..327a383e 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 90a17804..e25ff2ce 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index efdab56b..36170fa8 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index f072cfe9..11fb1b38 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index 6ddaf4a5..7f72b984 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index f56bb280..99a83653 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index dace8581..4f131b8e 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index b4ba4fe2..12ad2ee9 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_query/cpl-query.json b/src/cpl_query/cpl-query.json index 064204ac..8ab5fe70 100644 --- a/src/cpl_query/cpl-query.json +++ b/src/cpl_query/cpl-query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "16.dev1" + "Micro": "16.dev2" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.16.dev1" + "cpl-core>=2022.6.16.dev2" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index 144b1ad9..8f8e4483 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev1' +__version__ = '2022.6.16.dev2' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/tools/set_pip_urls/application.py b/tools/set_pip_urls/application.py index d9f2fff0..edaacff2 100644 --- a/tools/set_pip_urls/application.py +++ b/tools/set_pip_urls/application.py @@ -1,7 +1,15 @@ +import json +import os +import sys +from typing import Optional + +from cpl_core.environment import EnvironmentNameEnum + from cpl_core.application import ApplicationABC from cpl_core.configuration import ConfigurationABC from cpl_core.console import Console from cpl_core.dependency_injection import ServiceProviderABC +from set_pip_urls.pip_settings import PIPSettings class Application(ApplicationABC): @@ -9,8 +17,32 @@ class Application(ApplicationABC): def __init__(self, config: ConfigurationABC, services: ServiceProviderABC): ApplicationABC.__init__(self, config, services) + self._pip_settings: Optional[PIPSettings] = config.get_configuration(PIPSettings) + def configure(self): - pass + self._configuration.parse_console_arguments(self._services) def main(self): - Console.write_line('Hello World', self._environment.environment_name) + if self._pip_settings is None: + Console.error('appsettings.json not found') + sys.exit() + + url = None + match self._environment.environment_name: + case EnvironmentNameEnum.production.value: + url = self._pip_settings.production + case EnvironmentNameEnum.staging.value: + url = self._pip_settings.staging + case EnvironmentNameEnum.development.value: + url = self._pip_settings.development + + cli_json = { + "CLI": { + "PipPath": url + } + } + file = os.path.abspath(os.path.join(self._environment.working_directory, '../../src/cpl_cli', 'appsettings.json')) + Console.write_line(f'Writing PipPath: {url} to {file}') + with open(file, 'w') as f: + f.write(json.dumps(cli_json, indent=2)) + f.close() diff --git a/tools/set_pip_urls/pip_settings.py b/tools/set_pip_urls/pip_settings.py new file mode 100644 index 00000000..4d4c5fb4 --- /dev/null +++ b/tools/set_pip_urls/pip_settings.py @@ -0,0 +1,37 @@ +import traceback + +from cpl_core.environment.environment_name_enum import EnvironmentNameEnum + +from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC +from cpl_core.console import Console + + +class PIPSettings(ConfigurationModelABC): + + def __init__(self): + ConfigurationModelABC.__init__(self) + + self._production = '' + self._staging = '' + self._development = '' + + @property + def production(self): + return self._production + + @property + def staging(self): + return self._staging + + @property + def development(self): + return self._development + + def from_dict(self, settings: dict): + try: + self._production = settings[EnvironmentNameEnum.production.value] + self._staging = settings[EnvironmentNameEnum.staging.value] + self._development = settings[EnvironmentNameEnum.development.value] + except Exception as e: + Console.error(f'[ ERROR ] [ {__name__} ]: Reading error in {self.__name__} settings') + Console.error(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}') diff --git a/tools/set_pip_urls/set-pip-urls.json b/tools/set_pip_urls/set-pip-urls.json index a401e0f3..d8140fbb 100644 --- a/tools/set_pip_urls/set-pip-urls.json +++ b/tools/set_pip_urls/set-pip-urls.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.16.dev1" + "cpl-core>=2022.6.16.dev2" ], "PythonVersion": ">=3.10.4", "PythonPath": {}, diff --git a/tools/set_pip_urls/startup.py b/tools/set_pip_urls/startup.py index 359c03d2..b8a52f78 100644 --- a/tools/set_pip_urls/startup.py +++ b/tools/set_pip_urls/startup.py @@ -10,6 +10,8 @@ class Startup(StartupABC): StartupABC.__init__(self) def configure_configuration(self, configuration: ConfigurationABC, environment: ApplicationEnvironment) -> ConfigurationABC: + configuration.add_environment_variables('CPL_') + configuration.add_json_file('appsettings.json', optional=False, output=False) return configuration def configure_services(self, services: ServiceCollectionABC, environment: ApplicationEnvironment) -> ServiceProviderABC: diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index cfe95b51..bb37969d 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.16.dev1" + "cpl-core>=2022.6.16.dev2" ], "PythonVersion": ">=3.10.4", "PythonPath": {}, -- 2.45.1 From 7ee0b951a8b16189ad1727e9391ee069fd98b5c1 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 25 May 2022 19:59:38 +0200 Subject: [PATCH 073/140] Rebuild & improved workspace scripts --- cpl-workspace.json | 6 +++--- src/cpl_query/__init__.py | 4 ++-- src/cpl_query/_query/__init__.py | 4 ++-- src/cpl_query/cpl-query.json | 2 +- src/cpl_query/extension/__init__.py | 4 ++-- tools/set_pip_urls/__init__.py | 4 ++-- tools/set_pip_urls/set-pip-urls.json | 2 +- tools/set_version/__init__.py | 4 ++-- tools/set_version/set-version.json | 2 +- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/cpl-workspace.json b/cpl-workspace.json index e99ca505..00e7534a 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -57,21 +57,21 @@ "upload-dev-query": "echo 'DEV Upload cpl_query'; cpl upl-dev-query;", "upl-dev-query": "twine upload -r pip-dev.sh-edraft.de dist/cpl-query/publish/setup/*", - "pre-deploy-prod": "cpl sv $ARGS", + "pre-deploy-prod": "cpl sv $ARGS; cpl spu --environment=production;", "deploy-prod": "cpl deploy-prod-cli; cpl deploy-prod-core; cpl deploy-prod-query;", "dp": "cpl deploy-prod $ARGS", "deploy-prod-cli": "cpl publish-cli; cpl upload-prod-cli", "deploy-prod-core": "cpl publish-core; cpl upload-prod-core", "deploy-prod-query": "cpl publish-query; cpl upload-prod-query", - "pre-deploy-exp": "cpl sv $ARGS", + "pre-deploy-exp": "cpl sv $ARGS; cpl spu --environment=staging;", "deploy-exp": "cpl deploy-exp-cli; cpl deploy-exp-core; cpl deploy-exp-query;", "de": "cpl deploy-exp $ARGS", "deploy-exp-cli": "cpl publish-cli; cpl upload-exp-cli", "deploy-exp-core": "cpl publish-core; cpl upload-exp-core", "deploy-exp-query": "cpl publish-query; cpl upload-exp-query", - "pre-deploy-dev": "cpl sv $ARGS", + "pre-deploy-dev": "cpl sv $ARGS; cpl spu --environment=development;", "deploy-dev": "cpl deploy-dev-cli; cpl deploy-dev-core; cpl deploy-dev-query;", "dd": "cpl deploy-dev $ARGS", "deploy-dev-cli": "cpl publish-cli; cpl upload-dev-cli", diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index 4f131b8e..d1767b45 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -6,7 +6,7 @@ cpl-query sh-edraft Common Python library Query sh-edraft Common Python library Python integrated Queries -:copyright: (c) 2020 - 2022 sh-edraft.de +:copyright: (c) 2021 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,7 +14,7 @@ sh-edraft Common Python library Python integrated Queries __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' __version__ = '2022.6.16.dev2' from collections import namedtuple diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index 12ad2ee9..77edb5f1 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -6,7 +6,7 @@ cpl-query sh-edraft Common Python library Query sh-edraft Common Python library Python integrated Queries -:copyright: (c) 2020 - 2022 sh-edraft.de +:copyright: (c) 2021 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,7 +14,7 @@ sh-edraft Common Python library Python integrated Queries __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' __version__ = '2022.6.16.dev2' from collections import namedtuple diff --git a/src/cpl_query/cpl-query.json b/src/cpl_query/cpl-query.json index 8ab5fe70..97472344 100644 --- a/src/cpl_query/cpl-query.json +++ b/src/cpl_query/cpl-query.json @@ -11,7 +11,7 @@ "Description": "sh-edraft Common Python library Query", "LongDescription": "sh-edraft Common Python library Python integrated Queries", "URL": "https://www.sh-edraft.de", - "CopyrightDate": "2020 - 2022", + "CopyrightDate": "2021 - 2022", "CopyrightName": "sh-edraft.de", "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index 8f8e4483..de7ba7dd 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -6,7 +6,7 @@ cpl-query sh-edraft Common Python library Query sh-edraft Common Python library Python integrated Queries -:copyright: (c) 2020 - 2022 sh-edraft.de +:copyright: (c) 2021 - 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,7 +14,7 @@ sh-edraft Common Python library Python integrated Queries __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' __version__ = '2022.6.16.dev2' from collections import namedtuple diff --git a/tools/set_pip_urls/__init__.py b/tools/set_pip_urls/__init__.py index f0590e5c..2ac682a4 100644 --- a/tools/set_pip_urls/__init__.py +++ b/tools/set_pip_urls/__init__.py @@ -6,7 +6,7 @@ set-pip-urls CPL internal tool to set pip URL for CLI by environment CPL internal tool to set pip URL for CLI by environment -:copyright: (c) 2020 - 2022 sh-edraft.de +:copyright: (c) 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,7 +14,7 @@ CPL internal tool to set pip URL for CLI by environment __title__ = 'set_pip_urls' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__copyright__ = 'Copyright (c) 2022 sh-edraft.de' __version__ = '2022.6.0' from collections import namedtuple diff --git a/tools/set_pip_urls/set-pip-urls.json b/tools/set_pip_urls/set-pip-urls.json index d8140fbb..4a56be00 100644 --- a/tools/set_pip_urls/set-pip-urls.json +++ b/tools/set_pip_urls/set-pip-urls.json @@ -11,7 +11,7 @@ "Description": "CPL internal tool to set pip URL for CLI by environment", "LongDescription": "CPL internal tool to set pip URL for CLI by environment", "URL": "https://www.sh-edraft.de", - "CopyrightDate": "2020 - 2022", + "CopyrightDate": "2022", "CopyrightName": "sh-edraft.de", "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", diff --git a/tools/set_version/__init__.py b/tools/set_version/__init__.py index c98057ae..34e44564 100644 --- a/tools/set_version/__init__.py +++ b/tools/set_version/__init__.py @@ -6,7 +6,7 @@ set-version CPL internal tool to set version from branch name CPL internal tool to set version from branch name -:copyright: (c) 2020 - 2022 sh-edraft.de +:copyright: (c) 2022 sh-edraft.de :license: MIT, see LICENSE for more details. """ @@ -14,7 +14,7 @@ CPL internal tool to set version from branch name __title__ = 'set_version' __author__ = 'Sven Heidemann' __license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__copyright__ = 'Copyright (c) 2022 sh-edraft.de' __version__ = '2022.6.0' from collections import namedtuple diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index bb37969d..27374888 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -11,7 +11,7 @@ "Description": "CPL internal tool to set version from branch name", "LongDescription": "CPL internal tool to set version from branch name", "URL": "https://www.sh-edraft.de", - "CopyrightDate": "2020 - 2022", + "CopyrightDate": "2022", "CopyrightName": "sh-edraft.de", "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", -- 2.45.1 From c1a1849ad2969f1c2bf3236ea9d3265964f32a64 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 13:12:35 +0200 Subject: [PATCH 074/140] Added logic to create new unittest project --- cpl-workspace.json | 12 +- .../_templates/new/unittest/__init__.py | 25 +++ .../_templates/new/unittest/license.py | 23 +++ .../_templates/new/unittest/readme_py.py | 23 +++ .../new/unittest/source/__init__.py | 25 +++ .../new/unittest/source/name/__init__.py | 25 +++ .../new/unittest/source/name/application.py | 74 ++++++++ .../new/unittest/source/name/init.py | 27 +++ .../new/unittest/source/name/main.py | 63 +++++++ .../new/unittest/source/name/test_case.py | 52 ++++++ src/cpl_cli/cli.py | 2 + src/cpl_cli/command/new_service.py | 60 +++++-- .../configuration/project_type_enum.py | 1 + .../source_creator/unittest_builder.py | 164 ++++++++++++++++++ src/cpl_cli/startup_argument_extension.py | 3 +- 15 files changed, 555 insertions(+), 24 deletions(-) create mode 100644 src/cpl_cli/_templates/new/unittest/__init__.py create mode 100644 src/cpl_cli/_templates/new/unittest/license.py create mode 100644 src/cpl_cli/_templates/new/unittest/readme_py.py create mode 100644 src/cpl_cli/_templates/new/unittest/source/__init__.py create mode 100644 src/cpl_cli/_templates/new/unittest/source/name/__init__.py create mode 100644 src/cpl_cli/_templates/new/unittest/source/name/application.py create mode 100644 src/cpl_cli/_templates/new/unittest/source/name/init.py create mode 100644 src/cpl_cli/_templates/new/unittest/source/name/main.py create mode 100644 src/cpl_cli/_templates/new/unittest/source/name/test_case.py create mode 100644 src/cpl_cli/source_creator/unittest_builder.py diff --git a/cpl-workspace.json b/cpl-workspace.json index 00e7534a..edd91281 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -6,22 +6,19 @@ "cpl-cli": "src/cpl_cli/cpl-cli.json", "cpl-query": "src/cpl_query/cpl-query.json", "set-version": "tools/set_version/set-version.json", - "set-pip-urls": "tools/set_pip_urls/set-pip-urls.json" + "set-pip-urls": "tools/set_pip_urls/set-pip-urls.json", + "unittests": "src/unittests/unittests.json" }, "Scripts": { "hello-world": "echo 'Hello World'", - "sv": "cpl set-version", "set-version": "cpl run set-version $ARGS; echo '';", - "spu": "cpl set-pip-urls", "set-pip-urls": "cpl run set-pip-urls $ARGS; echo '';", - "docs-build": "echo 'Build Documentation'; cd docs/; sphinx-apidoc -o source/ ../src/cpl_core; sphinx-apidoc -o source/ ../src/cpl_query; make clean; make html; rm source/cpl_query.tests.rst;", "db": "cpl build-docs", "docs-open": "xdg-open $PWD/docs/build/html/index.html &", "do": "cpl docs-open", - "pre-build-all": "cpl sv $ARGS; cpl spu $ARGS;", "build-all": "cpl build-cli; cpl build-core; cpl build-query; cpl build-set-pip-urls; cpl build-set-version", "ba": "cpl build-all $ARGS", @@ -30,14 +27,12 @@ "build-query": "echo 'Build cpl-query'; cd ./src/cpl_query; cpl build; cd ../../;", "build-set-pip-urls": "echo 'Build set-pip-urls'; cd ./tools/set_pip_urls; cpl build; cd ../../;", "build-set-version": "echo 'Build set-version'; cd ./tools/set_version; cpl build; cd ../../;", - "pre-publish-all": "cpl sv $ARGS; cpl spu $ARGS;", "publish-all": "cpl publish-cli; cpl publish-core; cpl publish-query;", "pa": "cpl build-all $ARGS", "publish-cli": "echo 'Publish cpl-cli'; cd ./src/cpl_cli; cpl publish; cd ../../;", "publish-core": "echo 'Publish cpl-core'; cd ./src/cpl_core; cpl publish; cd ../../;", "publish-query": "echo 'Publish cpl_query'; cd ./src/cpl_query; cpl publish; cd ../../;", - "upload-prod-cli": "echo 'PROD Upload cpl-cli'; cpl upl-prod-cli;", "upl-prod-cli": "twine upload -r pip.sh-edraft.de dist/cpl-cli/publish/setup/*", "upload-prod-core": "echo 'PROD Upload cpl-core'; cpl upl-prod-core;", @@ -56,21 +51,18 @@ "upl-dev-core": "twine upload -r pip-dev.sh-edraft.de dist/cpl-core/publish/setup/*", "upload-dev-query": "echo 'DEV Upload cpl_query'; cpl upl-dev-query;", "upl-dev-query": "twine upload -r pip-dev.sh-edraft.de dist/cpl-query/publish/setup/*", - "pre-deploy-prod": "cpl sv $ARGS; cpl spu --environment=production;", "deploy-prod": "cpl deploy-prod-cli; cpl deploy-prod-core; cpl deploy-prod-query;", "dp": "cpl deploy-prod $ARGS", "deploy-prod-cli": "cpl publish-cli; cpl upload-prod-cli", "deploy-prod-core": "cpl publish-core; cpl upload-prod-core", "deploy-prod-query": "cpl publish-query; cpl upload-prod-query", - "pre-deploy-exp": "cpl sv $ARGS; cpl spu --environment=staging;", "deploy-exp": "cpl deploy-exp-cli; cpl deploy-exp-core; cpl deploy-exp-query;", "de": "cpl deploy-exp $ARGS", "deploy-exp-cli": "cpl publish-cli; cpl upload-exp-cli", "deploy-exp-core": "cpl publish-core; cpl upload-exp-core", "deploy-exp-query": "cpl publish-query; cpl upload-exp-query", - "pre-deploy-dev": "cpl sv $ARGS; cpl spu --environment=development;", "deploy-dev": "cpl deploy-dev-cli; cpl deploy-dev-core; cpl deploy-dev-query;", "dd": "cpl deploy-dev $ARGS", diff --git a/src/cpl_cli/_templates/new/unittest/__init__.py b/src/cpl_cli/_templates/new/unittest/__init__.py new file mode 100644 index 00000000..d88df923 --- /dev/null +++ b/src/cpl_cli/_templates/new/unittest/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +""" +cpl-cli sh-edraft Common Python library CLI +~~~~~~~~~~~~~~~~~~~ + +sh-edraft Common Python library Command Line Interface + +:copyright: (c) 2020 - 2022 sh-edraft.de +:license: MIT, see LICENSE for more details. + +""" + +__title__ = 'cpl_cli._templates.new.console' +__author__ = 'Sven Heidemann' +__license__ = 'MIT' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.16.dev2' + +from collections import namedtuple + +# imports: + +VersionInfo = namedtuple('VersionInfo', 'major minor micro') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/_templates/new/unittest/license.py b/src/cpl_cli/_templates/new/unittest/license.py new file mode 100644 index 00000000..fb586904 --- /dev/null +++ b/src/cpl_cli/_templates/new/unittest/license.py @@ -0,0 +1,23 @@ +from cpl_cli._templates.template_file_abc import TemplateFileABC + + +class LicenseTemplate(TemplateFileABC): + + def __init__(self): + TemplateFileABC.__init__(self) + + self._name = 'LICENSE' + self._path = '' + self._value = """""" + + @property + def name(self) -> str: + return self._name + + @property + def path(self) -> str: + return self._path + + @property + def value(self) -> str: + return self._value diff --git a/src/cpl_cli/_templates/new/unittest/readme_py.py b/src/cpl_cli/_templates/new/unittest/readme_py.py new file mode 100644 index 00000000..a40286a8 --- /dev/null +++ b/src/cpl_cli/_templates/new/unittest/readme_py.py @@ -0,0 +1,23 @@ +from cpl_cli._templates.template_file_abc import TemplateFileABC + + +class ReadmeTemplate(TemplateFileABC): + + def __init__(self): + TemplateFileABC.__init__(self) + + self._name = 'README.md' + self._path = '' + self._value = """""" + + @property + def name(self) -> str: + return self._name + + @property + def path(self) -> str: + return self._path + + @property + def value(self) -> str: + return self._value diff --git a/src/cpl_cli/_templates/new/unittest/source/__init__.py b/src/cpl_cli/_templates/new/unittest/source/__init__.py new file mode 100644 index 00000000..7d9d4f31 --- /dev/null +++ b/src/cpl_cli/_templates/new/unittest/source/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +""" +cpl-cli sh-edraft Common Python library CLI +~~~~~~~~~~~~~~~~~~~ + +sh-edraft Common Python library Command Line Interface + +:copyright: (c) 2020 - 2022 sh-edraft.de +:license: MIT, see LICENSE for more details. + +""" + +__title__ = 'cpl_cli._templates.new.console.source' +__author__ = 'Sven Heidemann' +__license__ = 'MIT' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.16.dev2' + +from collections import namedtuple + +# imports: + +VersionInfo = namedtuple('VersionInfo', 'major minor micro') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/_templates/new/unittest/source/name/__init__.py b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py new file mode 100644 index 00000000..bcf07bec --- /dev/null +++ b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +""" +cpl-cli sh-edraft Common Python library CLI +~~~~~~~~~~~~~~~~~~~ + +sh-edraft Common Python library Command Line Interface + +:copyright: (c) 2020 - 2022 sh-edraft.de +:license: MIT, see LICENSE for more details. + +""" + +__title__ = 'cpl_cli._templates.new.console.source.name' +__author__ = 'Sven Heidemann' +__license__ = 'MIT' +__copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' +__version__ = '2022.6.16.dev2' + +from collections import namedtuple + +# imports: + +VersionInfo = namedtuple('VersionInfo', 'major minor micro') +version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') diff --git a/src/cpl_cli/_templates/new/unittest/source/name/application.py b/src/cpl_cli/_templates/new/unittest/source/name/application.py new file mode 100644 index 00000000..6c40e867 --- /dev/null +++ b/src/cpl_cli/_templates/new/unittest/source/name/application.py @@ -0,0 +1,74 @@ +import textwrap + +from cpl_cli._templates.template_file_abc import TemplateFileABC + + +class ApplicationTemplate(TemplateFileABC): + + def __init__(self, name: str, path: str, use_async: bool): + TemplateFileABC.__init__(self) + + self._name = 'application.py' + self._path = path + self._use_async = use_async + + if self._use_async: + self._value = textwrap.dedent("""\ + import unittest + from unittest import TestSuite + + from cpl_core.application import ApplicationABC + from cpl_core.configuration import ConfigurationABC + from cpl_core.dependency_injection import ServiceProviderABC + from unittests.test_case import TestCase + + + class Application(ApplicationABC): + + def __init__(self, config: ConfigurationABC, services: ServiceProviderABC): + ApplicationABC.__init__(self, config, services) + self._suite: TestSuite = unittest.TestSuite() + + async def configure(self): + self._suite.addTest(TestCase('test_equal')) + + async def main(self): + runner = unittest.TextTestRunner() + runner.run(self._suite) + """) + else: + self._value = textwrap.dedent("""\ + import unittest + from unittest import TestSuite + + from cpl_core.application import ApplicationABC + from cpl_core.configuration import ConfigurationABC + from cpl_core.dependency_injection import ServiceProviderABC + from unittests.test_case import TestCase + + + class Application(ApplicationABC): + + def __init__(self, config: ConfigurationABC, services: ServiceProviderABC): + ApplicationABC.__init__(self, config, services) + self._suite: TestSuite = unittest.TestSuite() + + def configure(self): + self._suite.addTest(TestCase('test_equal')) + + def main(self): + runner = unittest.TextTestRunner() + runner.run(self._suite) + """) + + @property + def name(self) -> str: + return self._name + + @property + def path(self) -> str: + return self._path + + @property + def value(self) -> str: + return self._value diff --git a/src/cpl_cli/_templates/new/unittest/source/name/init.py b/src/cpl_cli/_templates/new/unittest/source/name/init.py new file mode 100644 index 00000000..b3cbdecb --- /dev/null +++ b/src/cpl_cli/_templates/new/unittest/source/name/init.py @@ -0,0 +1,27 @@ +import textwrap + +from cpl_cli._templates.template_file_abc import TemplateFileABC + + +class MainInitTemplate(TemplateFileABC): + + def __init__(self, name: str, path: str): + TemplateFileABC.__init__(self) + + self._name = '__init__.py' + self._path = path + self._value = textwrap.dedent("""\ + # imports: + """) + + @property + def name(self) -> str: + return self._name + + @property + def path(self) -> str: + return self._path + + @property + def value(self) -> str: + return self._value diff --git a/src/cpl_cli/_templates/new/unittest/source/name/main.py b/src/cpl_cli/_templates/new/unittest/source/name/main.py new file mode 100644 index 00000000..81f0a251 --- /dev/null +++ b/src/cpl_cli/_templates/new/unittest/source/name/main.py @@ -0,0 +1,63 @@ +import textwrap + +from cpl_core.utils.string import String +from cpl_cli._templates.template_file_abc import TemplateFileABC + + +class MainWithApplicationBaseTemplate(TemplateFileABC): + + def __init__(self, name: str, path: str, use_async: bool): + TemplateFileABC.__init__(self) + + name = String.convert_to_snake_case(name) + self._name = 'main.py' + self._path = path + + import_pkg = f'{name}.' + + if use_async: + self._value = textwrap.dedent(f"""\ + import asyncio + + from cpl_core.application import ApplicationBuilder + + from {import_pkg}application import Application + + + async def main(): + app_builder = ApplicationBuilder(Application) + app: Application = await app_builder.build_async() + await app.run_async() + + + if __name__ == '__main__': + ml = asyncio.get_event_loop() + ml.run_until_complete(main()) + """) + else: + self._value = textwrap.dedent(f"""\ + from cpl_core.application import ApplicationBuilder + + from {import_pkg}application import Application + + + def main(): + app_builder = ApplicationBuilder(Application) + app_builder.build().run() + + + if __name__ == '__main__': + main() + """) + + @property + def name(self) -> str: + return self._name + + @property + def path(self) -> str: + return self._path + + @property + def value(self) -> str: + return self._value diff --git a/src/cpl_cli/_templates/new/unittest/source/name/test_case.py b/src/cpl_cli/_templates/new/unittest/source/name/test_case.py new file mode 100644 index 00000000..096518bd --- /dev/null +++ b/src/cpl_cli/_templates/new/unittest/source/name/test_case.py @@ -0,0 +1,52 @@ +import textwrap + +from cpl_cli._templates.template_file_abc import TemplateFileABC + + +class TestCaseTemplate(TemplateFileABC): + + def __init__(self, name: str, path: str, use_async: bool): + TemplateFileABC.__init__(self) + + self._name = 'test_case.py' + self._path = path + self._use_async = use_async + + if self._use_async: + self._value = textwrap.dedent("""\ + import unittest + + + class TestCase(unittest.TestCase): + + async def setUp(self) -> None: + pass + + async def test_equal(self): + self.assertEqual(True, True) + """) + else: + self._value = textwrap.dedent("""\ + import unittest + + + class TestCase(unittest.TestCase): + + def setUp(self) -> None: + pass + + def test_equal(self): + self.assertEqual(True, True) + """) + + @property + def name(self) -> str: + return self._name + + @property + def path(self) -> str: + return self._path + + @property + def value(self) -> str: + return self._value diff --git a/src/cpl_cli/cli.py b/src/cpl_cli/cli.py index 499a5939..d70a777a 100644 --- a/src/cpl_cli/cli.py +++ b/src/cpl_cli/cli.py @@ -29,6 +29,7 @@ class CLI(ApplicationABC): try: result = self._configuration.parse_console_arguments(self._services) if result: + Console.write_line() return if len(self._configuration.additional_arguments) == 0: @@ -37,6 +38,7 @@ class CLI(ApplicationABC): unexpected_arguments = ', '.join(self._configuration.additional_arguments) Error.error(f'Unexpected argument(s): {unexpected_arguments}') + Console.write_line() except KeyboardInterrupt: Console.write_line() sys.exit() diff --git a/src/cpl_cli/command/new_service.py b/src/cpl_cli/command/new_service.py index 916abec3..0f6ccac5 100644 --- a/src/cpl_cli/command/new_service.py +++ b/src/cpl_cli/command/new_service.py @@ -6,6 +6,7 @@ from typing import Optional from packaging import version import cpl_core +from cpl_cli.source_creator.unittest_builder import UnittestBuilder from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.console.foreground_color_enum import ForegroundColorEnum @@ -163,22 +164,23 @@ class NewService(CommandABC): return project_path - def _get_project_information(self): + def _get_project_information(self, is_unittest=False): """ Gets project information's from user :return: """ - result = Console.read('Do you want to use application base? (y/n) ') - if result.lower() == 'y': - self._use_application_api = True + if not is_unittest: + result = Console.read('Do you want to use application base? (y/n) ') + if result.lower() == 'y': + self._use_application_api = True - result = Console.read('Do you want to use startup? (y/n) ') - if result.lower() == 'y': - self._use_startup = True - else: - result = Console.read('Do you want to use service providing? (y/n) ') - if result.lower() == 'y': - self._use_service_providing = True + result = Console.read('Do you want to use startup? (y/n) ') + if result.lower() == 'y': + self._use_startup = True + else: + result = Console.read('Do you want to use service providing? (y/n) ') + if result.lower() == 'y': + self._use_service_providing = True result = Console.read('Do you want to use async? (y/n) ') if result.lower() == 'y': @@ -214,6 +216,32 @@ class NewService(CommandABC): except Exception as e: Console.error('Could not create project', str(e)) + def _unittest(self, args: list[str]): + """ + Generates new unittest project + :param args: + :return: + """ + self._create_project_settings(self._name) + self._create_build_settings() + self._create_project_json() + path = self._get_project_path() + if path is None: + return + + self._get_project_information(is_unittest=True) + try: + UnittestBuilder.build( + path, + self._use_application_api, + self._use_async, + self._project.name, + self._project_json, + self._workspace + ) + except Exception as e: + Console.error('Could not create project', str(e)) + def _library(self, args: list[str]): """ Generates new library project @@ -250,16 +278,22 @@ class NewService(CommandABC): """ console = self._config.get_configuration(ProjectTypeEnum.console.value) library = self._config.get_configuration(ProjectTypeEnum.library.value) - if console is not None and library is None: + unittest = self._config.get_configuration(ProjectTypeEnum.unittest.value) + if console is not None and library is None and unittest is None: self._name = console self._schematic = ProjectTypeEnum.console.value self._console(args) - elif console is None and library is not None: + elif console is None and library is not None and unittest is None: self._name = library self._schematic = ProjectTypeEnum.library.value self._library(args) + elif console is None and library is None and unittest is not None: + self._name = unittest + self._schematic = ProjectTypeEnum.unittest.value + self._unittest(args) + else: self._help('Usage: cpl new [options]') return diff --git a/src/cpl_cli/configuration/project_type_enum.py b/src/cpl_cli/configuration/project_type_enum.py index 9471c59c..235e59c2 100644 --- a/src/cpl_cli/configuration/project_type_enum.py +++ b/src/cpl_cli/configuration/project_type_enum.py @@ -5,3 +5,4 @@ class ProjectTypeEnum(Enum): console = 'console' library = 'library' + unittest = 'unittest' diff --git a/src/cpl_cli/source_creator/unittest_builder.py b/src/cpl_cli/source_creator/unittest_builder.py new file mode 100644 index 00000000..805c6363 --- /dev/null +++ b/src/cpl_cli/source_creator/unittest_builder.py @@ -0,0 +1,164 @@ +import json +import os +from typing import Optional + +from cpl_cli._templates.new.unittest.license import LicenseTemplate +from cpl_cli._templates.new.unittest.readme_py import ReadmeTemplate +from cpl_cli._templates.new.unittest.source.name.application import ApplicationTemplate +from cpl_cli._templates.new.unittest.source.name.init import MainInitTemplate +from cpl_cli._templates.new.unittest.source.name.main import MainWithApplicationBaseTemplate +from cpl_cli._templates.new.unittest.source.name.test_case import TestCaseTemplate +from cpl_cli._templates.template_file_abc import TemplateFileABC +from cpl_cli.configuration.workspace_settings import WorkspaceSettings +from cpl_cli.configuration.workspace_settings_name_enum import WorkspaceSettingsNameEnum +from cpl_cli.source_creator.template_builder import TemplateBuilder +from cpl_core.console.console import Console +from cpl_core.console.foreground_color_enum import ForegroundColorEnum +from cpl_core.utils.string import String + + +class UnittestBuilder: + + def __init__(self): + pass + + @staticmethod + def _create_file(file_name: str, content: dict): + if not os.path.isabs(file_name): + file_name = os.path.abspath(file_name) + + path = os.path.dirname(file_name) + if not os.path.isdir(path): + os.makedirs(path) + + with open(file_name, 'w') as project_json: + project_json.write(json.dumps(content, indent=2)) + project_json.close() + + @classmethod + def _create_workspace(cls, path: str, project_name, projects: dict, scripts: dict): + ws_dict = { + WorkspaceSettings.__name__: { + WorkspaceSettingsNameEnum.default_project.value: project_name, + WorkspaceSettingsNameEnum.projects.value: projects, + WorkspaceSettingsNameEnum.scripts.value: scripts + } + } + + Console.spinner( + f'Creating {path}', + cls._create_file, + path, + ws_dict, + text_foreground_color=ForegroundColorEnum.green, + spinner_foreground_color=ForegroundColorEnum.cyan + ) + + @classmethod + def build(cls, project_path: str, use_application_api: bool, + use_async: bool, project_name: str, project_settings: dict, workspace: Optional[WorkspaceSettings]): + """ + Builds the console project files + :param project_path: + :param use_application_api: + :param use_async: + :param project_name: + :param project_settings: + :param workspace: + :return: + """ + pj_name = project_name + if '/' in pj_name: + pj_name = pj_name.split('/')[len(pj_name.split('/')) - 1] + + project_name_snake = String.convert_to_snake_case(pj_name) + + if workspace is None: + templates: list[TemplateFileABC] = [ + LicenseTemplate(), + ReadmeTemplate(), + MainInitTemplate(project_name, os.path.join('src/', project_name_snake)) + ] + else: + project_path = os.path.join( + os.path.dirname(project_path), + project_name_snake + ) + + templates: list[TemplateFileABC] = [ + MainInitTemplate('', '') + ] + + if not os.path.isdir(project_path): + os.makedirs(project_path) + + py_src_rel_path = '' + src_name = project_name_snake + if workspace is None: + py_src_rel_path = f'src/{src_name}' + + templates.append(ApplicationTemplate(src_name, py_src_rel_path, use_async)) + templates.append(MainWithApplicationBaseTemplate(src_name, py_src_rel_path, use_async)) + templates.append(TestCaseTemplate(src_name, py_src_rel_path, use_async)) + + src_rel_path = '' + if '/' in project_name: + old_pj_name = project_name + parts = project_name.split('/') + project_name = parts[len(parts) - 1] + src_rel_path = old_pj_name.split(project_name)[0] + + proj_name = project_name + if src_rel_path.endswith('/'): + src_rel_path = src_rel_path[:len(src_rel_path) - 1] + + if src_rel_path != '': + proj_name = f'{src_rel_path}/{project_name}' + if workspace is not None: + proj_name = project_name_snake + + if src_rel_path != '': + project_file_path = f'{src_rel_path}/{project_name_snake}/{project_name}.json' + else: + project_file_path = f'{project_name_snake}/{project_name}.json' + + if workspace is None: + src_path = f'src/{project_name_snake}' + workspace_file_path = f'{proj_name}/cpl-workspace.json' + project_file_rel_path = f'{src_path}/{project_name}.json' + project_file_path = f'{proj_name}/{src_path}/{project_name}.json' + cls._create_workspace( + workspace_file_path, + project_name, + { + project_name: project_file_rel_path + }, + {} + ) + + else: + workspace.projects[project_name] = f'src/{project_file_path}' + cls._create_workspace('cpl-workspace.json', workspace.default_project, workspace.projects, workspace.scripts) + + Console.spinner( + f'Creating {project_file_path}', + cls._create_file, + project_file_path if workspace is None else f'src/{project_file_path}', + project_settings, + text_foreground_color=ForegroundColorEnum.green, + spinner_foreground_color=ForegroundColorEnum.cyan + ) + + for template in templates: + divider = '' + if template.path != '' and not template.path.endswith('/'): + divider = '/' + + Console.spinner( + f'Creating {proj_name}/{template.path}{divider}{template.name}', + TemplateBuilder.build, + project_path, + template, + text_foreground_color=ForegroundColorEnum.green, + spinner_foreground_color=ForegroundColorEnum.cyan + ) diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index eaa1d899..ae6ef0a3 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -84,7 +84,8 @@ class StartupArgumentExtension(StartupExtensionABC): .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'new', ['n', 'N'], NewService, True) \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'console', ['c', 'C'], ' ') \ - .add_console_argument(ArgumentTypeEnum.Variable, '', 'library', ['l', 'L'], ' ') + .add_console_argument(ArgumentTypeEnum.Variable, '', 'library', ['l', 'L'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'unittest', ['ut', 'UT'], ' ') config.create_console_argument(ArgumentTypeEnum.Executable, '', 'publish', ['p', 'P'], PublishService, True, validators=[ProjectValidator]) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'remove', ['r', 'R'], RemoveService, True, validators=[WorkspaceValidator]) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) -- 2.45.1 From d0e66d24bd0d3debaad942366dd61921066df746 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 13:17:58 +0200 Subject: [PATCH 075/140] Added logic to generate test cases --- .../_templates/generate/test_case_template.py | 41 +++++++++++++++++++ src/cpl_cli/command/generate_service.py | 23 +++++++---- src/cpl_cli/startup_argument_extension.py | 1 + 3 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 src/cpl_cli/_templates/generate/test_case_template.py diff --git a/src/cpl_cli/_templates/generate/test_case_template.py b/src/cpl_cli/_templates/generate/test_case_template.py new file mode 100644 index 00000000..7fa9a4a7 --- /dev/null +++ b/src/cpl_cli/_templates/generate/test_case_template.py @@ -0,0 +1,41 @@ +import textwrap +from string import Template + +from cpl_core.utils.string import String +from cpl_cli._templates.template_file_abc import TemplateFileABC + + +class TestCaseTemplate(TemplateFileABC): + + def __init__(self, name: str, schematic: str, schematic_upper: str, path: str): + TemplateFileABC.__init__(self) + + self._name = f'{String.convert_to_snake_case(name)}_{schematic}.py' + self._class_name = f'{String.first_to_upper(name)}{schematic_upper}' + self._path = path + self._value = textwrap.dedent("""\ + import unittest + + + class $Name(unittest.TestCase): + + def setUp(self): + pass + + def test_equal(self): + pass + """) + + @property + def name(self) -> str: + return self._name + + @property + def path(self) -> str: + return self._path + + @property + def value(self) -> str: + return Template(self._value).substitute( + Name=self._class_name + ) diff --git a/src/cpl_cli/command/generate_service.py b/src/cpl_cli/command/generate_service.py index 6c9861a8..4fb25a04 100644 --- a/src/cpl_cli/command/generate_service.py +++ b/src/cpl_cli/command/generate_service.py @@ -2,21 +2,22 @@ import os import sys import textwrap -from cpl_cli._templates.generate.pipe_template import PipeTemplate -from cpl_cli._templates.generate.validator_template import ValidatorTemplate -from cpl_core.configuration.configuration_abc import ConfigurationABC -from cpl_core.console.foreground_color_enum import ForegroundColorEnum -from cpl_core.console.console import Console -from cpl_core.utils.string import String -from cpl_cli.command_abc import CommandABC -from cpl_cli._templates.generate.init_template import InitTemplate from cpl_cli._templates.generate.abc_template import ABCTemplate from cpl_cli._templates.generate.class_template import ClassTemplate from cpl_cli._templates.generate.configmodel_template import ConfigModelTemplate from cpl_cli._templates.generate.enum_template import EnumTemplate +from cpl_cli._templates.generate.init_template import InitTemplate +from cpl_cli._templates.generate.pipe_template import PipeTemplate from cpl_cli._templates.generate.service_template import ServiceTemplate +from cpl_cli._templates.generate.test_case_template import TestCaseTemplate from cpl_cli._templates.generate.thread_template import ThreadTemplate +from cpl_cli._templates.generate.validator_template import ValidatorTemplate from cpl_cli._templates.template_file_abc import TemplateFileABC +from cpl_cli.command_abc import CommandABC +from cpl_core.configuration.configuration_abc import ConfigurationABC +from cpl_core.console.console import Console +from cpl_core.console.foreground_color_enum import ForegroundColorEnum +from cpl_core.utils.string import String class GenerateService(CommandABC): @@ -53,6 +54,10 @@ class GenerateService(CommandABC): "Upper": "Settings", "Template": ConfigModelTemplate }, + "test_case": { + "Upper": "TestCase", + "Template": TestCaseTemplate + }, "thread": { "Upper": "Thread", "Template": ThreadTemplate @@ -83,6 +88,7 @@ class GenerateService(CommandABC): pipe service settings + test_case thread validator """) @@ -103,6 +109,7 @@ class GenerateService(CommandABC): 'pipe (p|P)', 'service (s|S)', 'settings (st|ST)', + 'test-case (tc|TC)', 'thread (t|T)', 'validator (v|V)' ] diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index ae6ef0a3..92287027 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -77,6 +77,7 @@ class StartupArgumentExtension(StartupExtensionABC): .add_console_argument(ArgumentTypeEnum.Variable, '', 'pipe', ['p', 'P'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'service', ['s', 'S'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'settings', ['st', 'ST'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Variable, '', 'test_case', ['tc', 'TC'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'thread', ['t', 'T'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'validator', ['v', 'V'], ' ') config.create_console_argument(ArgumentTypeEnum.Executable, '', 'install', ['i', 'I'], InstallService, True, validators=[ProjectValidator]) \ -- 2.45.1 From c2706c7737cfe753d1ddd8bde522c2e778a6cfb2 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 13:37:15 +0200 Subject: [PATCH 076/140] Added unittest projects --- cpl-workspace.json | 6 ++- src/cpl_cli/__init__.py | 4 +- src/cpl_cli/_templates/__init__.py | 4 +- src/cpl_cli/_templates/build/__init__.py | 4 +- src/cpl_cli/_templates/generate/__init__.py | 4 +- src/cpl_cli/_templates/new/__init__.py | 4 +- .../_templates/new/console/__init__.py | 4 +- .../_templates/new/console/source/__init__.py | 4 +- .../new/console/source/name/__init__.py | 4 +- .../new/console/source/tests/__init__.py | 4 +- .../_templates/new/library/__init__.py | 4 +- .../_templates/new/library/source/__init__.py | 4 +- .../new/library/source/name/__init__.py | 4 +- .../new/library/source/tests/__init__.py | 4 +- .../_templates/new/unittest/__init__.py | 6 +-- .../new/unittest/source/__init__.py | 6 +-- .../new/unittest/source/name/__init__.py | 6 +-- src/cpl_cli/_templates/publish/__init__.py | 4 +- src/cpl_cli/command/__init__.py | 4 +- src/cpl_cli/configuration/__init__.py | 4 +- src/cpl_cli/cpl-cli.json | 4 +- src/cpl_cli/live_server/__init__.py | 4 +- src/cpl_cli/publish/__init__.py | 4 +- src/cpl_cli/source_creator/__init__.py | 4 +- src/cpl_cli/validators/__init__.py | 4 +- src/cpl_core/__init__.py | 4 +- src/cpl_core/application/__init__.py | 4 +- src/cpl_core/configuration/__init__.py | 4 +- src/cpl_core/console/__init__.py | 4 +- src/cpl_core/cpl-core.json | 2 +- src/cpl_core/database/__init__.py | 4 +- src/cpl_core/database/connection/__init__.py | 4 +- src/cpl_core/database/context/__init__.py | 4 +- src/cpl_core/dependency_injection/__init__.py | 4 +- src/cpl_core/environment/__init__.py | 4 +- src/cpl_core/logging/__init__.py | 4 +- src/cpl_core/mailing/__init__.py | 4 +- src/cpl_core/pipes/__init__.py | 4 +- src/cpl_core/time/__init__.py | 4 +- src/cpl_core/utils/__init__.py | 4 +- src/cpl_query/__init__.py | 4 +- src/cpl_query/_query/__init__.py | 4 +- src/cpl_query/cpl-query.json | 4 +- src/cpl_query/extension/__init__.py | 4 +- src/tests/unittests/__init__.py | 1 + src/tests/unittests/application.py | 21 +++++++++ src/tests/unittests/main.py | 11 +++++ src/tests/unittests/test_case.py | 10 +++++ src/tests/unittests/unittests.json | 43 +++++++++++++++++++ src/tests/unittests_cli/__init__.py | 1 + src/tests/unittests_cli/unittests_cli.json | 43 +++++++++++++++++++ src/tests/unittests_core/__init__.py | 1 + src/tests/unittests_core/unittests_core.json | 43 +++++++++++++++++++ src/tests/unittests_query/__init__.py | 1 + .../unittests_query/unittests_query.json | 43 +++++++++++++++++++ src/tests/unittests_shared/__init__.py | 1 + .../unittests_shared/unittests_shared.json | 43 +++++++++++++++++++ tools/set_pip_urls/set-pip-urls.json | 2 +- tools/set_version/set-version.json | 2 +- 59 files changed, 357 insertions(+), 91 deletions(-) create mode 100644 src/tests/unittests/__init__.py create mode 100644 src/tests/unittests/application.py create mode 100644 src/tests/unittests/main.py create mode 100644 src/tests/unittests/test_case.py create mode 100644 src/tests/unittests/unittests.json create mode 100644 src/tests/unittests_cli/__init__.py create mode 100644 src/tests/unittests_cli/unittests_cli.json create mode 100644 src/tests/unittests_core/__init__.py create mode 100644 src/tests/unittests_core/unittests_core.json create mode 100644 src/tests/unittests_query/__init__.py create mode 100644 src/tests/unittests_query/unittests_query.json create mode 100644 src/tests/unittests_shared/__init__.py create mode 100644 src/tests/unittests_shared/unittests_shared.json diff --git a/cpl-workspace.json b/cpl-workspace.json index edd91281..3413e861 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -7,7 +7,11 @@ "cpl-query": "src/cpl_query/cpl-query.json", "set-version": "tools/set_version/set-version.json", "set-pip-urls": "tools/set_pip_urls/set-pip-urls.json", - "unittests": "src/unittests/unittests.json" + "unittests": "src/tests/unittests/unittests.json", + "unittests_cli": "src/tests/unittests_cli/unittests_cli.json", + "unittests_core": "src/tests/unittests_core/unittests_core.json", + "unittests_query": "src/tests/unittests_query/unittests_query.json", + "unittests_shared": "src/tests/unittests_shared/unittests_shared.json" }, "Scripts": { "hello-world": "echo 'Hello World'", diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 05e52eb0..b5854530 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 2f05b3a2..d0e69d94 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 4d15c7c4..eb709e22 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index f623a461..d59b88a9 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 87792c02..0afadb75 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index d88df923..7c9cd418 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 7d9d4f31..2a2a0da7 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index bcf07bec..167b3efa 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index e6f97f7d..401c97da 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 983bda70..6a6e2590 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 05c73fef..f2e65272 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index cff20c14..879dd8a9 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index b5b21f5f..2797b086 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/_templates/new/unittest/__init__.py b/src/cpl_cli/_templates/new/unittest/__init__.py index d88df923..5bea2565 100644 --- a/src/cpl_cli/_templates/new/unittest/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/__init__.py @@ -11,15 +11,15 @@ sh-edraft Common Python library Command Line Interface """ -__title__ = 'cpl_cli._templates.new.console' +__title__ = 'cpl_cli._templates.new.unittest' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/_templates/new/unittest/source/__init__.py b/src/cpl_cli/_templates/new/unittest/source/__init__.py index 7d9d4f31..5e46b11a 100644 --- a/src/cpl_cli/_templates/new/unittest/source/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/source/__init__.py @@ -11,15 +11,15 @@ sh-edraft Common Python library Command Line Interface """ -__title__ = 'cpl_cli._templates.new.console.source' +__title__ = 'cpl_cli._templates.new.unittest.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/_templates/new/unittest/source/name/__init__.py b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py index bcf07bec..d180c55d 100644 --- a/src/cpl_cli/_templates/new/unittest/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py @@ -11,15 +11,15 @@ sh-edraft Common Python library Command Line Interface """ -__title__ = 'cpl_cli._templates.new.console.source.name' +__title__ = 'cpl_cli._templates.new.unittest.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index 2b81167c..48d067e4 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 57edb0da..5306254f 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index 1661d5d3..fe0d188b 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/cpl-cli.json b/src/cpl_cli/cpl-cli.json index c82b9c2d..fc6feec3 100644 --- a/src/cpl_cli/cpl-cli.json +++ b/src/cpl_cli/cpl-cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "16.dev2" + "Micro": "17.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.16.dev2" + "cpl-core>=2022.6.17.dev1" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 15e8c430..873f47da 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index 5e21f69d..79d59622 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index c4195351..ab94ef52 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index 8d8bd93f..a6c766fd 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index 808bef50..2ce9ccd9 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 068828c5..420de028 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 6942e603..ff10e540 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index 563b63f7..2e7ef059 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_core/cpl-core.json b/src/cpl_core/cpl-core.json index 572e5760..506659fd 100644 --- a/src/cpl_core/cpl-core.json +++ b/src/cpl_core/cpl-core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "16.dev2" + "Micro": "17.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index 0a98c239..d757b8c8 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index fdce501a..27688ef0 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index 1be8611e..f03c170d 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 4685b513..cce15295 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 327a383e..d25e7291 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index e25ff2ce..76ca8eb1 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 36170fa8..b9c9c0a3 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index 11fb1b38..5fc6e056 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index 7f72b984..e9c8aa2b 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 99a83653..85b0aafe 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index d1767b45..04485c7d 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index 77edb5f1..ebc23ce0 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/cpl_query/cpl-query.json b/src/cpl_query/cpl-query.json index 97472344..e1aa0430 100644 --- a/src/cpl_query/cpl-query.json +++ b/src/cpl_query/cpl-query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "16.dev2" + "Micro": "17.dev1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.16.dev2" + "cpl-core>=2022.6.17.dev1" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index de7ba7dd..b3c24dc9 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.16.dev2' +__version__ = '2022.6.17.dev1' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='16.dev2') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') diff --git a/src/tests/unittests/__init__.py b/src/tests/unittests/__init__.py new file mode 100644 index 00000000..ad5eca30 --- /dev/null +++ b/src/tests/unittests/__init__.py @@ -0,0 +1 @@ +# imports: diff --git a/src/tests/unittests/application.py b/src/tests/unittests/application.py new file mode 100644 index 00000000..a3bd8cdb --- /dev/null +++ b/src/tests/unittests/application.py @@ -0,0 +1,21 @@ +import unittest +from unittest import TestSuite + +from cpl_core.application import ApplicationABC +from cpl_core.configuration import ConfigurationABC +from cpl_core.dependency_injection import ServiceProviderABC +from unittests.test_case import TestCase + + +class Application(ApplicationABC): + + def __init__(self, config: ConfigurationABC, services: ServiceProviderABC): + ApplicationABC.__init__(self, config, services) + self._suite: TestSuite = unittest.TestSuite() + + def configure(self): + self._suite.addTest(TestCase('test_equal')) + + def main(self): + runner = unittest.TextTestRunner() + runner.run(self._suite) diff --git a/src/tests/unittests/main.py b/src/tests/unittests/main.py new file mode 100644 index 00000000..5fae2bbb --- /dev/null +++ b/src/tests/unittests/main.py @@ -0,0 +1,11 @@ +from cpl_core.application import ApplicationBuilder +from unittests.application import Application + + +def main(): + app_builder = ApplicationBuilder(Application) + app_builder.build().run() + + +if __name__ == '__main__': + main() diff --git a/src/tests/unittests/test_case.py b/src/tests/unittests/test_case.py new file mode 100644 index 00000000..0e4dad56 --- /dev/null +++ b/src/tests/unittests/test_case.py @@ -0,0 +1,10 @@ +import unittest + + +class TestCase(unittest.TestCase): + + def setUp(self) -> None: + pass + + def test_equal(self): + self.assertEqual(True, True) diff --git a/src/tests/unittests/unittests.json b/src/tests/unittests/unittests.json new file mode 100644 index 00000000..5b8bd202 --- /dev/null +++ b/src/tests/unittests/unittests.json @@ -0,0 +1,43 @@ +{ + "ProjectSettings": { + "Name": "unittests", + "Version": { + "Major": "0", + "Minor": "0", + "Micro": "0" + }, + "Author": "", + "AuthorEmail": "", + "Description": "", + "LongDescription": "", + "URL": "", + "CopyrightDate": "", + "CopyrightName": "", + "LicenseName": "", + "LicenseDescription": "", + "Dependencies": [ + "cpl-core>=2022.6.17.dev1" + ], + "PythonVersion": ">=3.10.4", + "PythonPath": { + "linux": "" + }, + "Classifiers": [] + }, + "BuildSettings": { + "ProjectType": "unittest", + "SourcePath": "", + "OutputPath": "../../dist", + "Main": "tests/unittest.main", + "EntryPoint": "tests/unittest", + "IncludePackageData": false, + "Included": [], + "Excluded": [ + "*/__pycache__", + "*/logs", + "*/tests" + ], + "PackageData": {}, + "ProjectReferences": [] + } +} \ No newline at end of file diff --git a/src/tests/unittests_cli/__init__.py b/src/tests/unittests_cli/__init__.py new file mode 100644 index 00000000..ad5eca30 --- /dev/null +++ b/src/tests/unittests_cli/__init__.py @@ -0,0 +1 @@ +# imports: diff --git a/src/tests/unittests_cli/unittests_cli.json b/src/tests/unittests_cli/unittests_cli.json new file mode 100644 index 00000000..2288876a --- /dev/null +++ b/src/tests/unittests_cli/unittests_cli.json @@ -0,0 +1,43 @@ +{ + "ProjectSettings": { + "Name": "unittest_cli", + "Version": { + "Major": "0", + "Minor": "0", + "Micro": "0" + }, + "Author": "", + "AuthorEmail": "", + "Description": "", + "LongDescription": "", + "URL": "", + "CopyrightDate": "", + "CopyrightName": "", + "LicenseName": "", + "LicenseDescription": "", + "Dependencies": [ + "cpl-core>=2022.6.17.dev1" + ], + "PythonVersion": ">=3.10.4", + "PythonPath": { + "linux": "" + }, + "Classifiers": [] + }, + "BuildSettings": { + "ProjectType": "library", + "SourcePath": "", + "OutputPath": "../../dist", + "Main": "tests/unittest_cli.main", + "EntryPoint": "tests/unittest_cli", + "IncludePackageData": false, + "Included": [], + "Excluded": [ + "*/__pycache__", + "*/logs", + "*/tests" + ], + "PackageData": {}, + "ProjectReferences": [] + } +} \ No newline at end of file diff --git a/src/tests/unittests_core/__init__.py b/src/tests/unittests_core/__init__.py new file mode 100644 index 00000000..ad5eca30 --- /dev/null +++ b/src/tests/unittests_core/__init__.py @@ -0,0 +1 @@ +# imports: diff --git a/src/tests/unittests_core/unittests_core.json b/src/tests/unittests_core/unittests_core.json new file mode 100644 index 00000000..99fd0717 --- /dev/null +++ b/src/tests/unittests_core/unittests_core.json @@ -0,0 +1,43 @@ +{ + "ProjectSettings": { + "Name": "unittest_core", + "Version": { + "Major": "0", + "Minor": "0", + "Micro": "0" + }, + "Author": "", + "AuthorEmail": "", + "Description": "", + "LongDescription": "", + "URL": "", + "CopyrightDate": "", + "CopyrightName": "", + "LicenseName": "", + "LicenseDescription": "", + "Dependencies": [ + "cpl-core>=2022.6.17.dev1" + ], + "PythonVersion": ">=3.10.4", + "PythonPath": { + "linux": "" + }, + "Classifiers": [] + }, + "BuildSettings": { + "ProjectType": "library", + "SourcePath": "", + "OutputPath": "../../dist", + "Main": "tests/unittest_core.main", + "EntryPoint": "tests/unittest_core", + "IncludePackageData": false, + "Included": [], + "Excluded": [ + "*/__pycache__", + "*/logs", + "*/tests" + ], + "PackageData": {}, + "ProjectReferences": [] + } +} \ No newline at end of file diff --git a/src/tests/unittests_query/__init__.py b/src/tests/unittests_query/__init__.py new file mode 100644 index 00000000..ad5eca30 --- /dev/null +++ b/src/tests/unittests_query/__init__.py @@ -0,0 +1 @@ +# imports: diff --git a/src/tests/unittests_query/unittests_query.json b/src/tests/unittests_query/unittests_query.json new file mode 100644 index 00000000..655d4a42 --- /dev/null +++ b/src/tests/unittests_query/unittests_query.json @@ -0,0 +1,43 @@ +{ + "ProjectSettings": { + "Name": "unittest_query", + "Version": { + "Major": "0", + "Minor": "0", + "Micro": "0" + }, + "Author": "", + "AuthorEmail": "", + "Description": "", + "LongDescription": "", + "URL": "", + "CopyrightDate": "", + "CopyrightName": "", + "LicenseName": "", + "LicenseDescription": "", + "Dependencies": [ + "cpl-core>=2022.6.17.dev1" + ], + "PythonVersion": ">=3.10.4", + "PythonPath": { + "linux": "" + }, + "Classifiers": [] + }, + "BuildSettings": { + "ProjectType": "library", + "SourcePath": "", + "OutputPath": "../../dist", + "Main": "tests/unittest_query.main", + "EntryPoint": "tests/unittest_query", + "IncludePackageData": false, + "Included": [], + "Excluded": [ + "*/__pycache__", + "*/logs", + "*/tests" + ], + "PackageData": {}, + "ProjectReferences": [] + } +} \ No newline at end of file diff --git a/src/tests/unittests_shared/__init__.py b/src/tests/unittests_shared/__init__.py new file mode 100644 index 00000000..ad5eca30 --- /dev/null +++ b/src/tests/unittests_shared/__init__.py @@ -0,0 +1 @@ +# imports: diff --git a/src/tests/unittests_shared/unittests_shared.json b/src/tests/unittests_shared/unittests_shared.json new file mode 100644 index 00000000..907ab2ec --- /dev/null +++ b/src/tests/unittests_shared/unittests_shared.json @@ -0,0 +1,43 @@ +{ + "ProjectSettings": { + "Name": "unittest_shared", + "Version": { + "Major": "0", + "Minor": "0", + "Micro": "0" + }, + "Author": "", + "AuthorEmail": "", + "Description": "", + "LongDescription": "", + "URL": "", + "CopyrightDate": "", + "CopyrightName": "", + "LicenseName": "", + "LicenseDescription": "", + "Dependencies": [ + "cpl-core>=2022.6.17.dev1" + ], + "PythonVersion": ">=3.10.4", + "PythonPath": { + "linux": "" + }, + "Classifiers": [] + }, + "BuildSettings": { + "ProjectType": "library", + "SourcePath": "", + "OutputPath": "../../dist", + "Main": "tests/unittest_shared.main", + "EntryPoint": "tests/unittest_shared", + "IncludePackageData": false, + "Included": [], + "Excluded": [ + "*/__pycache__", + "*/logs", + "*/tests" + ], + "PackageData": {}, + "ProjectReferences": [] + } +} \ No newline at end of file diff --git a/tools/set_pip_urls/set-pip-urls.json b/tools/set_pip_urls/set-pip-urls.json index 4a56be00..d35bf734 100644 --- a/tools/set_pip_urls/set-pip-urls.json +++ b/tools/set_pip_urls/set-pip-urls.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.16.dev2" + "cpl-core>=2022.6.17.dev1" ], "PythonVersion": ">=3.10.4", "PythonPath": {}, diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index 27374888..fad80aad 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.16.dev2" + "cpl-core>=2022.6.17.dev1" ], "PythonVersion": ">=3.10.4", "PythonPath": {}, -- 2.45.1 From e74e39c1894019029d5988d3b2a14c0c9234a222 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 13:49:31 +0200 Subject: [PATCH 077/140] Added CLI command test cases --- src/tests/unittests/application.py | 7 ++-- src/tests/unittests/test_case.py | 10 ------ src/tests/unittests_cli/add_test_case.py | 10 ++++++ src/tests/unittests_cli/build_test_case.py | 10 ++++++ src/tests/unittests_cli/cli_test_suite.py | 34 +++++++++++++++++++ src/tests/unittests_cli/custom_test_case.py | 10 ++++++ src/tests/unittests_cli/generate_test_case.py | 10 ++++++ src/tests/unittests_cli/install_test_case.py | 10 ++++++ src/tests/unittests_cli/new_test_case.py | 10 ++++++ src/tests/unittests_cli/publish_test_case.py | 10 ++++++ src/tests/unittests_cli/remove_test_case.py | 10 ++++++ src/tests/unittests_cli/run_test_case.py | 10 ++++++ src/tests/unittests_cli/start_test_case.py | 10 ++++++ .../unittests_cli/uninstall_test_case.py | 10 ++++++ src/tests/unittests_cli/update_test_case.py | 10 ++++++ src/tests/unittests_cli/version_test_case.py | 10 ++++++ 16 files changed, 167 insertions(+), 14 deletions(-) delete mode 100644 src/tests/unittests/test_case.py create mode 100644 src/tests/unittests_cli/add_test_case.py create mode 100644 src/tests/unittests_cli/build_test_case.py create mode 100644 src/tests/unittests_cli/cli_test_suite.py create mode 100644 src/tests/unittests_cli/custom_test_case.py create mode 100644 src/tests/unittests_cli/generate_test_case.py create mode 100644 src/tests/unittests_cli/install_test_case.py create mode 100644 src/tests/unittests_cli/new_test_case.py create mode 100644 src/tests/unittests_cli/publish_test_case.py create mode 100644 src/tests/unittests_cli/remove_test_case.py create mode 100644 src/tests/unittests_cli/run_test_case.py create mode 100644 src/tests/unittests_cli/start_test_case.py create mode 100644 src/tests/unittests_cli/uninstall_test_case.py create mode 100644 src/tests/unittests_cli/update_test_case.py create mode 100644 src/tests/unittests_cli/version_test_case.py diff --git a/src/tests/unittests/application.py b/src/tests/unittests/application.py index a3bd8cdb..105f0a8c 100644 --- a/src/tests/unittests/application.py +++ b/src/tests/unittests/application.py @@ -4,18 +4,17 @@ from unittest import TestSuite from cpl_core.application import ApplicationABC from cpl_core.configuration import ConfigurationABC from cpl_core.dependency_injection import ServiceProviderABC -from unittests.test_case import TestCase +from unittests_cli.cli_test_suite import CLITestSuite class Application(ApplicationABC): def __init__(self, config: ConfigurationABC, services: ServiceProviderABC): ApplicationABC.__init__(self, config, services) - self._suite: TestSuite = unittest.TestSuite() def configure(self): - self._suite.addTest(TestCase('test_equal')) + pass def main(self): runner = unittest.TextTestRunner() - runner.run(self._suite) + runner.run(CLITestSuite()) diff --git a/src/tests/unittests/test_case.py b/src/tests/unittests/test_case.py deleted file mode 100644 index 0e4dad56..00000000 --- a/src/tests/unittests/test_case.py +++ /dev/null @@ -1,10 +0,0 @@ -import unittest - - -class TestCase(unittest.TestCase): - - def setUp(self) -> None: - pass - - def test_equal(self): - self.assertEqual(True, True) diff --git a/src/tests/unittests_cli/add_test_case.py b/src/tests/unittests_cli/add_test_case.py new file mode 100644 index 00000000..c2f493b3 --- /dev/null +++ b/src/tests/unittests_cli/add_test_case.py @@ -0,0 +1,10 @@ +import unittest + + +class AddTestCase(unittest.TestCase): + + def setUp(self): + pass + + def test_equal(self): + pass diff --git a/src/tests/unittests_cli/build_test_case.py b/src/tests/unittests_cli/build_test_case.py new file mode 100644 index 00000000..2456c099 --- /dev/null +++ b/src/tests/unittests_cli/build_test_case.py @@ -0,0 +1,10 @@ +import unittest + + +class BuildTestCase(unittest.TestCase): + + def setUp(self): + pass + + def test_equal(self): + pass diff --git a/src/tests/unittests_cli/cli_test_suite.py b/src/tests/unittests_cli/cli_test_suite.py new file mode 100644 index 00000000..eda27da3 --- /dev/null +++ b/src/tests/unittests_cli/cli_test_suite.py @@ -0,0 +1,34 @@ +import unittest + +from unittests_cli.add_test_case import AddTestCase +from unittests_cli.build_test_case import BuildTestCase +from unittests_cli.generate_test_case import GenerateTestCase +from unittests_cli.install_test_case import InstallTestCase +from unittests_cli.new_test_case import NewTestCase +from unittests_cli.publish_test_case import PublishTestCase +from unittests_cli.remove_test_case import RemoveTestCase +from unittests_cli.run_test_case import RunTestCase +from unittests_cli.start_test_case import StartTestCase +from unittests_cli.uninstall_test_case import UninstallTestCase +from unittests_cli.update_test_case import UpdateTestCase +from unittests_cli.version_test_case import VersionTestCase + + +class CLITestSuite(unittest.TestSuite): + + def __init__(self): + unittest.TestSuite.__init__(self) + + loader = unittest.TestLoader() + self.addTests(loader.loadTestsFromTestCase(AddTestCase)) + self.addTests(loader.loadTestsFromTestCase(BuildTestCase)) + self.addTests(loader.loadTestsFromTestCase(GenerateTestCase)) + self.addTests(loader.loadTestsFromTestCase(InstallTestCase)) + self.addTests(loader.loadTestsFromTestCase(NewTestCase)) + self.addTests(loader.loadTestsFromTestCase(PublishTestCase)) + self.addTests(loader.loadTestsFromTestCase(RemoveTestCase)) + self.addTests(loader.loadTestsFromTestCase(RunTestCase)) + self.addTests(loader.loadTestsFromTestCase(StartTestCase)) + self.addTests(loader.loadTestsFromTestCase(UninstallTestCase)) + self.addTests(loader.loadTestsFromTestCase(UpdateTestCase)) + self.addTests(loader.loadTestsFromTestCase(VersionTestCase)) diff --git a/src/tests/unittests_cli/custom_test_case.py b/src/tests/unittests_cli/custom_test_case.py new file mode 100644 index 00000000..db59be7d --- /dev/null +++ b/src/tests/unittests_cli/custom_test_case.py @@ -0,0 +1,10 @@ +import unittest + + +class CustomTestCase(unittest.TestCase): + + def setUp(self): + pass + + def test_equal(self): + pass diff --git a/src/tests/unittests_cli/generate_test_case.py b/src/tests/unittests_cli/generate_test_case.py new file mode 100644 index 00000000..e525695a --- /dev/null +++ b/src/tests/unittests_cli/generate_test_case.py @@ -0,0 +1,10 @@ +import unittest + + +class GenerateTestCase(unittest.TestCase): + + def setUp(self): + pass + + def test_equal(self): + pass diff --git a/src/tests/unittests_cli/install_test_case.py b/src/tests/unittests_cli/install_test_case.py new file mode 100644 index 00000000..0271f37b --- /dev/null +++ b/src/tests/unittests_cli/install_test_case.py @@ -0,0 +1,10 @@ +import unittest + + +class InstallTestCase(unittest.TestCase): + + def setUp(self): + pass + + def test_equal(self): + pass diff --git a/src/tests/unittests_cli/new_test_case.py b/src/tests/unittests_cli/new_test_case.py new file mode 100644 index 00000000..d902e011 --- /dev/null +++ b/src/tests/unittests_cli/new_test_case.py @@ -0,0 +1,10 @@ +import unittest + + +class NewTestCase(unittest.TestCase): + + def setUp(self): + pass + + def test_equal(self): + pass diff --git a/src/tests/unittests_cli/publish_test_case.py b/src/tests/unittests_cli/publish_test_case.py new file mode 100644 index 00000000..bad55d55 --- /dev/null +++ b/src/tests/unittests_cli/publish_test_case.py @@ -0,0 +1,10 @@ +import unittest + + +class PublishTestCase(unittest.TestCase): + + def setUp(self): + pass + + def test_equal(self): + pass diff --git a/src/tests/unittests_cli/remove_test_case.py b/src/tests/unittests_cli/remove_test_case.py new file mode 100644 index 00000000..a600c283 --- /dev/null +++ b/src/tests/unittests_cli/remove_test_case.py @@ -0,0 +1,10 @@ +import unittest + + +class RemoveTestCase(unittest.TestCase): + + def setUp(self): + pass + + def test_equal(self): + pass diff --git a/src/tests/unittests_cli/run_test_case.py b/src/tests/unittests_cli/run_test_case.py new file mode 100644 index 00000000..7ace1dd2 --- /dev/null +++ b/src/tests/unittests_cli/run_test_case.py @@ -0,0 +1,10 @@ +import unittest + + +class RunTestCase(unittest.TestCase): + + def setUp(self): + pass + + def test_equal(self): + pass diff --git a/src/tests/unittests_cli/start_test_case.py b/src/tests/unittests_cli/start_test_case.py new file mode 100644 index 00000000..8da691da --- /dev/null +++ b/src/tests/unittests_cli/start_test_case.py @@ -0,0 +1,10 @@ +import unittest + + +class StartTestCase(unittest.TestCase): + + def setUp(self): + pass + + def test_equal(self): + pass diff --git a/src/tests/unittests_cli/uninstall_test_case.py b/src/tests/unittests_cli/uninstall_test_case.py new file mode 100644 index 00000000..f3d1ae15 --- /dev/null +++ b/src/tests/unittests_cli/uninstall_test_case.py @@ -0,0 +1,10 @@ +import unittest + + +class UninstallTestCase(unittest.TestCase): + + def setUp(self): + pass + + def test_equal(self): + pass diff --git a/src/tests/unittests_cli/update_test_case.py b/src/tests/unittests_cli/update_test_case.py new file mode 100644 index 00000000..35e6d8f3 --- /dev/null +++ b/src/tests/unittests_cli/update_test_case.py @@ -0,0 +1,10 @@ +import unittest + + +class UpdateTestCase(unittest.TestCase): + + def setUp(self): + pass + + def test_equal(self): + pass diff --git a/src/tests/unittests_cli/version_test_case.py b/src/tests/unittests_cli/version_test_case.py new file mode 100644 index 00000000..cd7e75e9 --- /dev/null +++ b/src/tests/unittests_cli/version_test_case.py @@ -0,0 +1,10 @@ +import unittest + + +class VersionTestCase(unittest.TestCase): + + def setUp(self): + pass + + def test_equal(self): + pass -- 2.45.1 From 46cceb0910c4af5e27f9a77c2c8167551d085f9d Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 13:59:46 +0200 Subject: [PATCH 078/140] Registered CLI test cases --- src/tests/unittests_cli/cli_test_suite.py | 40 ++++++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/src/tests/unittests_cli/cli_test_suite.py b/src/tests/unittests_cli/cli_test_suite.py index eda27da3..91d3e05b 100644 --- a/src/tests/unittests_cli/cli_test_suite.py +++ b/src/tests/unittests_cli/cli_test_suite.py @@ -1,3 +1,5 @@ +import os +import traceback import unittest from unittests_cli.add_test_case import AddTestCase @@ -19,16 +21,44 @@ class CLITestSuite(unittest.TestSuite): def __init__(self): unittest.TestSuite.__init__(self) + self._setup() + loader = unittest.TestLoader() - self.addTests(loader.loadTestsFromTestCase(AddTestCase)) - self.addTests(loader.loadTestsFromTestCase(BuildTestCase)) + # nothing needed self.addTests(loader.loadTestsFromTestCase(GenerateTestCase)) - self.addTests(loader.loadTestsFromTestCase(InstallTestCase)) self.addTests(loader.loadTestsFromTestCase(NewTestCase)) + self.addTests(loader.loadTestsFromTestCase(VersionTestCase)) + + # project needed + self.addTests(loader.loadTestsFromTestCase(BuildTestCase)) + self.addTests(loader.loadTestsFromTestCase(InstallTestCase)) self.addTests(loader.loadTestsFromTestCase(PublishTestCase)) - self.addTests(loader.loadTestsFromTestCase(RemoveTestCase)) self.addTests(loader.loadTestsFromTestCase(RunTestCase)) self.addTests(loader.loadTestsFromTestCase(StartTestCase)) self.addTests(loader.loadTestsFromTestCase(UninstallTestCase)) self.addTests(loader.loadTestsFromTestCase(UpdateTestCase)) - self.addTests(loader.loadTestsFromTestCase(VersionTestCase)) + + # workspace needed + self.addTests(loader.loadTestsFromTestCase(AddTestCase)) + self.addTests(loader.loadTestsFromTestCase(RemoveTestCase)) + + self._cleanup() + + def _setup(self): + try: + playground = os.path.abspath(os.path.join(os.getcwd(), 'test_cli_playground')) + if os.path.exists(playground): + os.rmdir(playground) + + os.mkdir(playground) + os.chdir(playground) + except Exception as e: + print(f'Setup of {__name__} failed: {traceback.format_exc()}') + + def _cleanup(self): + try: + playground = os.path.abspath(os.path.join(os.getcwd(), 'test_cli_playground')) + if os.path.exists(playground): + os.rmdir(playground) + except Exception as e: + print(f'Cleanup of {__name__} failed: {traceback.format_exc()}') -- 2.45.1 From d937c4c0e67841003e67f0f1a23f14d89b0b5ff6 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 14:47:36 +0200 Subject: [PATCH 079/140] Added tests for generate command --- src/tests/unittests/application.py | 2 +- src/tests/unittests/unittests.json | 4 +- src/tests/unittests_cli/cli_test_suite.py | 27 +++++++------ src/tests/unittests_cli/constants.py | 3 ++ src/tests/unittests_cli/generate_test_case.py | 39 ++++++++++++++++++- src/tests/unittests_cli/unittests_cli.json | 4 +- src/tests/unittests_core/unittests_core.json | 4 +- .../unittests_query/unittests_query.json | 4 +- src/tests/unittests_shared/cli_commands.py | 23 +++++++++++ .../unittests_shared/unittests_shared.json | 4 +- 10 files changed, 89 insertions(+), 25 deletions(-) create mode 100644 src/tests/unittests_cli/constants.py create mode 100644 src/tests/unittests_shared/cli_commands.py diff --git a/src/tests/unittests/application.py b/src/tests/unittests/application.py index 105f0a8c..2b7af5c8 100644 --- a/src/tests/unittests/application.py +++ b/src/tests/unittests/application.py @@ -1,5 +1,5 @@ +import time import unittest -from unittest import TestSuite from cpl_core.application import ApplicationABC from cpl_core.configuration import ConfigurationABC diff --git a/src/tests/unittests/unittests.json b/src/tests/unittests/unittests.json index 5b8bd202..3229906b 100644 --- a/src/tests/unittests/unittests.json +++ b/src/tests/unittests/unittests.json @@ -28,8 +28,8 @@ "ProjectType": "unittest", "SourcePath": "", "OutputPath": "../../dist", - "Main": "tests/unittest.main", - "EntryPoint": "tests/unittest", + "Main": "unittest.main", + "EntryPoint": "unittest", "IncludePackageData": false, "Included": [], "Excluded": [ diff --git a/src/tests/unittests_cli/cli_test_suite.py b/src/tests/unittests_cli/cli_test_suite.py index 91d3e05b..eb82349a 100644 --- a/src/tests/unittests_cli/cli_test_suite.py +++ b/src/tests/unittests_cli/cli_test_suite.py @@ -1,9 +1,11 @@ import os +import shutil import traceback import unittest from unittests_cli.add_test_case import AddTestCase from unittests_cli.build_test_case import BuildTestCase +from unittests_cli.constants import PLAYGROUND from unittests_cli.generate_test_case import GenerateTestCase from unittests_cli.install_test_case import InstallTestCase from unittests_cli.new_test_case import NewTestCase @@ -21,8 +23,6 @@ class CLITestSuite(unittest.TestSuite): def __init__(self): unittest.TestSuite.__init__(self) - self._setup() - loader = unittest.TestLoader() # nothing needed self.addTests(loader.loadTestsFromTestCase(GenerateTestCase)) @@ -42,23 +42,26 @@ class CLITestSuite(unittest.TestSuite): self.addTests(loader.loadTestsFromTestCase(AddTestCase)) self.addTests(loader.loadTestsFromTestCase(RemoveTestCase)) - self._cleanup() - def _setup(self): + print(f'Setup {__name__}') try: - playground = os.path.abspath(os.path.join(os.getcwd(), 'test_cli_playground')) - if os.path.exists(playground): - os.rmdir(playground) + if os.path.exists(PLAYGROUND): + shutil.rmtree(PLAYGROUND) - os.mkdir(playground) - os.chdir(playground) + os.mkdir(PLAYGROUND) + os.chdir(PLAYGROUND) except Exception as e: print(f'Setup of {__name__} failed: {traceback.format_exc()}') def _cleanup(self): + print(f'Cleanup {__name__}') try: - playground = os.path.abspath(os.path.join(os.getcwd(), 'test_cli_playground')) - if os.path.exists(playground): - os.rmdir(playground) + if os.path.exists(PLAYGROUND): + shutil.rmtree(PLAYGROUND) except Exception as e: print(f'Cleanup of {__name__} failed: {traceback.format_exc()}') + + def run(self, *args): + self._setup() + super().run(*args) + self._cleanup() diff --git a/src/tests/unittests_cli/constants.py b/src/tests/unittests_cli/constants.py new file mode 100644 index 00000000..272a19e0 --- /dev/null +++ b/src/tests/unittests_cli/constants.py @@ -0,0 +1,3 @@ +import os + +PLAYGROUND = os.path.abspath(os.path.join(os.getcwd(), '../generated/test_cli_playground')) \ No newline at end of file diff --git a/src/tests/unittests_cli/generate_test_case.py b/src/tests/unittests_cli/generate_test_case.py index e525695a..5530ccba 100644 --- a/src/tests/unittests_cli/generate_test_case.py +++ b/src/tests/unittests_cli/generate_test_case.py @@ -1,10 +1,45 @@ +import os.path import unittest +from unittests_cli.constants import PLAYGROUND +from unittests_shared.cli_commands import CLICommands + class GenerateTestCase(unittest.TestCase): def setUp(self): pass - def test_equal(self): - pass + def _test_file(self, schematic: str, suffix: str): + CLICommands.generate(schematic, 'GeneratedFile') + file_path = os.path.abspath(os.path.join(PLAYGROUND, f'generated_file{suffix}.py')) + file_exists = os.path.exists(file_path) + self.assertTrue(file_exists) + os.remove(file_path) + + def test_abc(self): + self._test_file('abc', '_abc') + + def test_class(self): + self._test_file('class', '') + + def test_enum(self): + self._test_file('enum', '_enum') + + def test_pipe(self): + self._test_file('pipe', '_pipe') + + def test_service(self): + self._test_file('service', '_service') + + def test_settings(self): + self._test_file('settings', '_settings') + + def test_test_case(self): + self._test_file('test_case', '_test_case') + + def test_thread(self): + self._test_file('thread', '_thread') + + def test_validator(self): + self._test_file('validator', '_validator') diff --git a/src/tests/unittests_cli/unittests_cli.json b/src/tests/unittests_cli/unittests_cli.json index 2288876a..44b9eb9f 100644 --- a/src/tests/unittests_cli/unittests_cli.json +++ b/src/tests/unittests_cli/unittests_cli.json @@ -28,8 +28,8 @@ "ProjectType": "library", "SourcePath": "", "OutputPath": "../../dist", - "Main": "tests/unittest_cli.main", - "EntryPoint": "tests/unittest_cli", + "Main": "unittest_cli.main", + "EntryPoint": "unittest_cli", "IncludePackageData": false, "Included": [], "Excluded": [ diff --git a/src/tests/unittests_core/unittests_core.json b/src/tests/unittests_core/unittests_core.json index 99fd0717..33e28883 100644 --- a/src/tests/unittests_core/unittests_core.json +++ b/src/tests/unittests_core/unittests_core.json @@ -28,8 +28,8 @@ "ProjectType": "library", "SourcePath": "", "OutputPath": "../../dist", - "Main": "tests/unittest_core.main", - "EntryPoint": "tests/unittest_core", + "Main": "unittest_core.main", + "EntryPoint": "unittest_core", "IncludePackageData": false, "Included": [], "Excluded": [ diff --git a/src/tests/unittests_query/unittests_query.json b/src/tests/unittests_query/unittests_query.json index 655d4a42..ae2b1bd4 100644 --- a/src/tests/unittests_query/unittests_query.json +++ b/src/tests/unittests_query/unittests_query.json @@ -28,8 +28,8 @@ "ProjectType": "library", "SourcePath": "", "OutputPath": "../../dist", - "Main": "tests/unittest_query.main", - "EntryPoint": "tests/unittest_query", + "Main": "unittest_query.main", + "EntryPoint": "unittest_query", "IncludePackageData": false, "Included": [], "Excluded": [ diff --git a/src/tests/unittests_shared/cli_commands.py b/src/tests/unittests_shared/cli_commands.py new file mode 100644 index 00000000..23cb5589 --- /dev/null +++ b/src/tests/unittests_shared/cli_commands.py @@ -0,0 +1,23 @@ +import os +import subprocess + + +class CLICommands: + + @staticmethod + def _run(cmd: str, *args): + env_vars = os.environ + command = ['python', os.path.abspath(os.path.join(os.getcwd(), '../../../cpl_cli/main.py')), cmd] + for arg in args: + command.append(arg) + + print(f'Running {command}') + subprocess.run(command, env=env_vars) + + @classmethod + def generate(cls, *args): + cls._run('generate', *args) + + @classmethod + def new(cls, *args): + cls._run('new', *args) diff --git a/src/tests/unittests_shared/unittests_shared.json b/src/tests/unittests_shared/unittests_shared.json index 907ab2ec..d1914479 100644 --- a/src/tests/unittests_shared/unittests_shared.json +++ b/src/tests/unittests_shared/unittests_shared.json @@ -28,8 +28,8 @@ "ProjectType": "library", "SourcePath": "", "OutputPath": "../../dist", - "Main": "tests/unittest_shared.main", - "EntryPoint": "tests/unittest_shared", + "Main": "unittest_shared.main", + "EntryPoint": "unittest_shared", "IncludePackageData": false, "Included": [], "Excluded": [ -- 2.45.1 From a72dd0dc2e9edc355159253537da4e916f0d3424 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 15:29:49 +0200 Subject: [PATCH 080/140] Improved tests --- cpl-workspace.json | 11 +++++++++++ src/tests/unittests/application.py | 1 - src/tests/unittests_cli/cli_test_suite.py | 14 +++++++------- src/tests/unittests_cli/constants.py | 3 ++- src/tests/unittests_cli/generate_test_case.py | 7 ++----- src/tests/unittests_shared/cli_commands.py | 4 +++- 6 files changed, 25 insertions(+), 15 deletions(-) diff --git a/cpl-workspace.json b/cpl-workspace.json index 3413e861..cf6608bf 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -15,14 +15,20 @@ }, "Scripts": { "hello-world": "echo 'Hello World'", + "sv": "cpl set-version", "set-version": "cpl run set-version $ARGS; echo '';", + "spu": "cpl set-pip-urls", "set-pip-urls": "cpl run set-pip-urls $ARGS; echo '';", + "docs-build": "echo 'Build Documentation'; cd docs/; sphinx-apidoc -o source/ ../src/cpl_core; sphinx-apidoc -o source/ ../src/cpl_query; make clean; make html; rm source/cpl_query.tests.rst;", "db": "cpl build-docs", "docs-open": "xdg-open $PWD/docs/build/html/index.html &", "do": "cpl docs-open", + + "test": "cpl run unittests", + "pre-build-all": "cpl sv $ARGS; cpl spu $ARGS;", "build-all": "cpl build-cli; cpl build-core; cpl build-query; cpl build-set-pip-urls; cpl build-set-version", "ba": "cpl build-all $ARGS", @@ -31,12 +37,14 @@ "build-query": "echo 'Build cpl-query'; cd ./src/cpl_query; cpl build; cd ../../;", "build-set-pip-urls": "echo 'Build set-pip-urls'; cd ./tools/set_pip_urls; cpl build; cd ../../;", "build-set-version": "echo 'Build set-version'; cd ./tools/set_version; cpl build; cd ../../;", + "pre-publish-all": "cpl sv $ARGS; cpl spu $ARGS;", "publish-all": "cpl publish-cli; cpl publish-core; cpl publish-query;", "pa": "cpl build-all $ARGS", "publish-cli": "echo 'Publish cpl-cli'; cd ./src/cpl_cli; cpl publish; cd ../../;", "publish-core": "echo 'Publish cpl-core'; cd ./src/cpl_core; cpl publish; cd ../../;", "publish-query": "echo 'Publish cpl_query'; cd ./src/cpl_query; cpl publish; cd ../../;", + "upload-prod-cli": "echo 'PROD Upload cpl-cli'; cpl upl-prod-cli;", "upl-prod-cli": "twine upload -r pip.sh-edraft.de dist/cpl-cli/publish/setup/*", "upload-prod-core": "echo 'PROD Upload cpl-core'; cpl upl-prod-core;", @@ -55,18 +63,21 @@ "upl-dev-core": "twine upload -r pip-dev.sh-edraft.de dist/cpl-core/publish/setup/*", "upload-dev-query": "echo 'DEV Upload cpl_query'; cpl upl-dev-query;", "upl-dev-query": "twine upload -r pip-dev.sh-edraft.de dist/cpl-query/publish/setup/*", + "pre-deploy-prod": "cpl sv $ARGS; cpl spu --environment=production;", "deploy-prod": "cpl deploy-prod-cli; cpl deploy-prod-core; cpl deploy-prod-query;", "dp": "cpl deploy-prod $ARGS", "deploy-prod-cli": "cpl publish-cli; cpl upload-prod-cli", "deploy-prod-core": "cpl publish-core; cpl upload-prod-core", "deploy-prod-query": "cpl publish-query; cpl upload-prod-query", + "pre-deploy-exp": "cpl sv $ARGS; cpl spu --environment=staging;", "deploy-exp": "cpl deploy-exp-cli; cpl deploy-exp-core; cpl deploy-exp-query;", "de": "cpl deploy-exp $ARGS", "deploy-exp-cli": "cpl publish-cli; cpl upload-exp-cli", "deploy-exp-core": "cpl publish-core; cpl upload-exp-core", "deploy-exp-query": "cpl publish-query; cpl upload-exp-query", + "pre-deploy-dev": "cpl sv $ARGS; cpl spu --environment=development;", "deploy-dev": "cpl deploy-dev-cli; cpl deploy-dev-core; cpl deploy-dev-query;", "dd": "cpl deploy-dev $ARGS", diff --git a/src/tests/unittests/application.py b/src/tests/unittests/application.py index 2b7af5c8..9af5ad57 100644 --- a/src/tests/unittests/application.py +++ b/src/tests/unittests/application.py @@ -1,4 +1,3 @@ -import time import unittest from cpl_core.application import ApplicationABC diff --git a/src/tests/unittests_cli/cli_test_suite.py b/src/tests/unittests_cli/cli_test_suite.py index eb82349a..9532fe0c 100644 --- a/src/tests/unittests_cli/cli_test_suite.py +++ b/src/tests/unittests_cli/cli_test_suite.py @@ -5,7 +5,7 @@ import unittest from unittests_cli.add_test_case import AddTestCase from unittests_cli.build_test_case import BuildTestCase -from unittests_cli.constants import PLAYGROUND +from unittests_cli.constants import PLAYGROUND_PATH from unittests_cli.generate_test_case import GenerateTestCase from unittests_cli.install_test_case import InstallTestCase from unittests_cli.new_test_case import NewTestCase @@ -45,19 +45,19 @@ class CLITestSuite(unittest.TestSuite): def _setup(self): print(f'Setup {__name__}') try: - if os.path.exists(PLAYGROUND): - shutil.rmtree(PLAYGROUND) + if os.path.exists(PLAYGROUND_PATH): + shutil.rmtree(PLAYGROUND_PATH) - os.mkdir(PLAYGROUND) - os.chdir(PLAYGROUND) + os.mkdir(PLAYGROUND_PATH) + os.chdir(PLAYGROUND_PATH) except Exception as e: print(f'Setup of {__name__} failed: {traceback.format_exc()}') def _cleanup(self): print(f'Cleanup {__name__}') try: - if os.path.exists(PLAYGROUND): - shutil.rmtree(PLAYGROUND) + if os.path.exists(PLAYGROUND_PATH): + shutil.rmtree(PLAYGROUND_PATH) except Exception as e: print(f'Cleanup of {__name__} failed: {traceback.format_exc()}') diff --git a/src/tests/unittests_cli/constants.py b/src/tests/unittests_cli/constants.py index 272a19e0..bcaa9d93 100644 --- a/src/tests/unittests_cli/constants.py +++ b/src/tests/unittests_cli/constants.py @@ -1,3 +1,4 @@ import os -PLAYGROUND = os.path.abspath(os.path.join(os.getcwd(), '../generated/test_cli_playground')) \ No newline at end of file +PLAYGROUND_PATH = os.path.abspath(os.path.join(os.getcwd(), '../generated/test_cli_playground')) +CLI_PATH = os.path.abspath(os.path.join(os.getcwd(), '../../cpl_cli/main.py')) diff --git a/src/tests/unittests_cli/generate_test_case.py b/src/tests/unittests_cli/generate_test_case.py index 5530ccba..ecc11e68 100644 --- a/src/tests/unittests_cli/generate_test_case.py +++ b/src/tests/unittests_cli/generate_test_case.py @@ -1,18 +1,15 @@ import os.path import unittest -from unittests_cli.constants import PLAYGROUND +from unittests_cli.constants import PLAYGROUND_PATH from unittests_shared.cli_commands import CLICommands class GenerateTestCase(unittest.TestCase): - def setUp(self): - pass - def _test_file(self, schematic: str, suffix: str): CLICommands.generate(schematic, 'GeneratedFile') - file_path = os.path.abspath(os.path.join(PLAYGROUND, f'generated_file{suffix}.py')) + file_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, f'generated_file{suffix}.py')) file_exists = os.path.exists(file_path) self.assertTrue(file_exists) os.remove(file_path) diff --git a/src/tests/unittests_shared/cli_commands.py b/src/tests/unittests_shared/cli_commands.py index 23cb5589..8903bf28 100644 --- a/src/tests/unittests_shared/cli_commands.py +++ b/src/tests/unittests_shared/cli_commands.py @@ -1,13 +1,15 @@ import os import subprocess +from unittests_cli.constants import CLI_PATH + class CLICommands: @staticmethod def _run(cmd: str, *args): env_vars = os.environ - command = ['python', os.path.abspath(os.path.join(os.getcwd(), '../../../cpl_cli/main.py')), cmd] + command = ['python', CLI_PATH, cmd] for arg in args: command.append(arg) -- 2.45.1 From 79b51cf8c50f77a30b210cab69ef5ce3897c8c0a Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 15:41:47 +0200 Subject: [PATCH 081/140] Build dev4 & added unittest support to console --- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- .../_templates/new/console/source/__init__.py | 4 ++-- .../_templates/new/console/source/name/__init__.py | 4 ++-- .../_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- .../_templates/new/library/source/__init__.py | 4 ++-- .../_templates/new/library/source/name/__init__.py | 4 ++-- .../_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/__init__.py | 4 ++-- .../_templates/new/unittest/source/__init__.py | 4 ++-- .../_templates/new/unittest/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl-cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/startup.py | 7 +++++++ src/cpl_cli/validators/__init__.py | 4 ++-- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/console/console.py | 12 ++++++++---- src/cpl_core/cpl-core.json | 2 +- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/pipes/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- src/cpl_query/__init__.py | 4 ++-- src/cpl_query/_query/__init__.py | 4 ++-- src/cpl_query/cpl-query.json | 4 ++-- src/cpl_query/extension/__init__.py | 4 ++-- src/tests/unittests/unittests.json | 2 +- src/tests/unittests_cli/unittests_cli.json | 2 +- src/tests/unittests_core/unittests_core.json | 2 +- src/tests/unittests_query/unittests_query.json | 2 +- src/tests/unittests_shared/cli_commands.py | 1 + src/tests/unittests_shared/unittests_shared.json | 2 +- tools/set_pip_urls/set-pip-urls.json | 2 +- tools/set_version/set-version.json | 2 +- 53 files changed, 108 insertions(+), 96 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index b5854530..4453a344 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index d0e69d94..9114e571 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index eb709e22..5a37043e 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index d59b88a9..a41e4be1 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 0afadb75..2f826888 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 7c9cd418..639774f0 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 2a2a0da7..3d59f643 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 167b3efa..f3d64b65 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 401c97da..f19d8cb1 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 6a6e2590..ad2fb302 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index f2e65272..881aa9eb 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 879dd8a9..78dde8dd 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 2797b086..83dcfa8e 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/_templates/new/unittest/__init__.py b/src/cpl_cli/_templates/new/unittest/__init__.py index 5bea2565..45a18338 100644 --- a/src/cpl_cli/_templates/new/unittest/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/_templates/new/unittest/source/__init__.py b/src/cpl_cli/_templates/new/unittest/source/__init__.py index 5e46b11a..7a0fa976 100644 --- a/src/cpl_cli/_templates/new/unittest/source/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/_templates/new/unittest/source/name/__init__.py b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py index d180c55d..f574f941 100644 --- a/src/cpl_cli/_templates/new/unittest/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index 48d067e4..ea19fe0b 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 5306254f..832f98dd 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index fe0d188b..1c91e504 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/cpl-cli.json b/src/cpl_cli/cpl-cli.json index fc6feec3..f703ce15 100644 --- a/src/cpl_cli/cpl-cli.json +++ b/src/cpl_cli/cpl-cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev1" + "Micro": "17.dev4" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev1" + "cpl-core>=2022.6.17.dev4" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 873f47da..1ffe1b09 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index 79d59622..4dc0d603 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index ab94ef52..812c7731 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_cli/startup.py b/src/cpl_cli/startup.py index 25aebea5..48d2f0bd 100644 --- a/src/cpl_cli/startup.py +++ b/src/cpl_cli/startup.py @@ -1,5 +1,7 @@ import os +from cpl_core.console import Console + from cpl_cli.error import Error from cpl_cli.live_server.live_server_service import LiveServerService from cpl_cli.publish.publisher_abc import PublisherABC @@ -22,6 +24,11 @@ class Startup(StartupABC): configuration.add_environment_variables('PYTHON_') configuration.add_environment_variables('CPL_') + + is_unittest = configuration.get_configuration('IS_UNITTEST') + if is_unittest == 'YES': + Console.disable() + configuration.add_json_file('appsettings.json', path=environment.runtime_directory, optional=False, output=False) return configuration diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index a6c766fd..29cb394b 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index 2ce9ccd9..a8ab174f 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 420de028..fed05ec0 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index ff10e540..f317fa21 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index 2e7ef059..f255ae1c 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_core/console/console.py b/src/cpl_core/console/console.py index f7a06291..43f9e044 100644 --- a/src/cpl_core/console/console.py +++ b/src/cpl_core/console/console.py @@ -456,17 +456,21 @@ class Console: cls.write_line(message) cls.set_hold_back(True) - spinner = SpinnerThread(len(message), spinner_foreground_color, spinner_background_color) - spinner.start() + spinner = None + if not cls._disabled: + spinner = SpinnerThread(len(message), spinner_foreground_color, spinner_background_color) + spinner.start() return_value = None try: return_value = call(*args, **kwargs) except KeyboardInterrupt: - spinner.exit() + if spinner is not None: + spinner.exit() cls.close() - spinner.stop_spinning() + if spinner is not None: + spinner.stop_spinning() cls.set_hold_back(False) cls.set_foreground_color(ForegroundColorEnum.default) diff --git a/src/cpl_core/cpl-core.json b/src/cpl_core/cpl-core.json index 506659fd..984d3554 100644 --- a/src/cpl_core/cpl-core.json +++ b/src/cpl_core/cpl-core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev1" + "Micro": "17.dev4" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index d757b8c8..ed634d68 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 27688ef0..03ecf658 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index f03c170d..30c24743 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index cce15295..b03e27c4 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index d25e7291..5194a6e1 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 76ca8eb1..7a040367 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index b9c9c0a3..f2b7dc73 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index 5fc6e056..89a8e972 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index e9c8aa2b..2800356a 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 85b0aafe..78050380 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index 04485c7d..7311ca67 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index ebc23ce0..19c9ce97 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/cpl_query/cpl-query.json b/src/cpl_query/cpl-query.json index e1aa0430..e3d23065 100644 --- a/src/cpl_query/cpl-query.json +++ b/src/cpl_query/cpl-query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev1" + "Micro": "17.dev4" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev1" + "cpl-core>=2022.6.17.dev4" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index b3c24dc9..e63bccea 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev1' +__version__ = '2022.6.17.dev4' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev1') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') diff --git a/src/tests/unittests/unittests.json b/src/tests/unittests/unittests.json index 3229906b..3549aa94 100644 --- a/src/tests/unittests/unittests.json +++ b/src/tests/unittests/unittests.json @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev1" + "cpl-core>=2022.6.17.dev4" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/src/tests/unittests_cli/unittests_cli.json b/src/tests/unittests_cli/unittests_cli.json index 44b9eb9f..be9b35a9 100644 --- a/src/tests/unittests_cli/unittests_cli.json +++ b/src/tests/unittests_cli/unittests_cli.json @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev1" + "cpl-core>=2022.6.17.dev4" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/src/tests/unittests_core/unittests_core.json b/src/tests/unittests_core/unittests_core.json index 33e28883..98e8b50d 100644 --- a/src/tests/unittests_core/unittests_core.json +++ b/src/tests/unittests_core/unittests_core.json @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev1" + "cpl-core>=2022.6.17.dev4" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/src/tests/unittests_query/unittests_query.json b/src/tests/unittests_query/unittests_query.json index ae2b1bd4..0b6a6597 100644 --- a/src/tests/unittests_query/unittests_query.json +++ b/src/tests/unittests_query/unittests_query.json @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev1" + "cpl-core>=2022.6.17.dev4" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/src/tests/unittests_shared/cli_commands.py b/src/tests/unittests_shared/cli_commands.py index 8903bf28..fd4af8ce 100644 --- a/src/tests/unittests_shared/cli_commands.py +++ b/src/tests/unittests_shared/cli_commands.py @@ -9,6 +9,7 @@ class CLICommands: @staticmethod def _run(cmd: str, *args): env_vars = os.environ + env_vars['CPL_IS_UNITTEST'] = 'YES' command = ['python', CLI_PATH, cmd] for arg in args: command.append(arg) diff --git a/src/tests/unittests_shared/unittests_shared.json b/src/tests/unittests_shared/unittests_shared.json index d1914479..babe5a4f 100644 --- a/src/tests/unittests_shared/unittests_shared.json +++ b/src/tests/unittests_shared/unittests_shared.json @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev1" + "cpl-core>=2022.6.17.dev4" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/tools/set_pip_urls/set-pip-urls.json b/tools/set_pip_urls/set-pip-urls.json index d35bf734..be77c6ed 100644 --- a/tools/set_pip_urls/set-pip-urls.json +++ b/tools/set_pip_urls/set-pip-urls.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev1" + "cpl-core>=2022.6.17.dev4" ], "PythonVersion": ">=3.10.4", "PythonPath": {}, diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index fad80aad..e1498a4d 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev1" + "cpl-core>=2022.6.17.dev4" ], "PythonVersion": ">=3.10.4", "PythonPath": {}, -- 2.45.1 From df32978a31437435e41d81b7bc3e53ec89ee738d Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 15:49:52 +0200 Subject: [PATCH 082/140] Moved unittests --- cpl-workspace.json | 10 ++++---- src/tests/__init__.py | 25 ------------------- .../tests => unittests}/unittests/__init__.py | 0 .../unittests/application.py | 0 {src/tests => unittests}/unittests/main.py | 0 .../unittests/unittests.json | 0 .../unittests_cli/__init__.py | 0 .../unittests_cli/add_test_case.py | 0 .../unittests_cli/build_test_case.py | 0 .../unittests_cli/cli_test_suite.py | 6 ++--- .../unittests_cli/constants.py | 2 +- .../unittests_cli/custom_test_case.py | 0 .../unittests_cli/generate_test_case.py | 0 .../unittests_cli/install_test_case.py | 0 .../unittests_cli/new_test_case.py | 0 .../unittests_cli/publish_test_case.py | 0 .../unittests_cli/remove_test_case.py | 0 .../unittests_cli/run_test_case.py | 0 .../unittests_cli/start_test_case.py | 0 .../unittests_cli/uninstall_test_case.py | 0 .../unittests_cli/unittests_cli.json | 0 .../unittests_cli/update_test_case.py | 0 .../unittests_cli/version_test_case.py | 0 .../unittests_core/__init__.py | 0 .../unittests_core/unittests_core.json | 0 .../unittests_query/__init__.py | 0 .../unittests_query/unittests_query.json | 0 .../unittests_shared/__init__.py | 0 .../unittests_shared/cli_commands.py | 0 .../unittests_shared/unittests_shared.json | 0 30 files changed, 9 insertions(+), 34 deletions(-) delete mode 100644 src/tests/__init__.py rename {src/tests => unittests}/unittests/__init__.py (100%) rename {src/tests => unittests}/unittests/application.py (100%) rename {src/tests => unittests}/unittests/main.py (100%) rename {src/tests => unittests}/unittests/unittests.json (100%) rename {src/tests => unittests}/unittests_cli/__init__.py (100%) rename {src/tests => unittests}/unittests_cli/add_test_case.py (100%) rename {src/tests => unittests}/unittests_cli/build_test_case.py (100%) rename {src/tests => unittests}/unittests_cli/cli_test_suite.py (92%) rename {src/tests => unittests}/unittests_cli/constants.py (56%) rename {src/tests => unittests}/unittests_cli/custom_test_case.py (100%) rename {src/tests => unittests}/unittests_cli/generate_test_case.py (100%) rename {src/tests => unittests}/unittests_cli/install_test_case.py (100%) rename {src/tests => unittests}/unittests_cli/new_test_case.py (100%) rename {src/tests => unittests}/unittests_cli/publish_test_case.py (100%) rename {src/tests => unittests}/unittests_cli/remove_test_case.py (100%) rename {src/tests => unittests}/unittests_cli/run_test_case.py (100%) rename {src/tests => unittests}/unittests_cli/start_test_case.py (100%) rename {src/tests => unittests}/unittests_cli/uninstall_test_case.py (100%) rename {src/tests => unittests}/unittests_cli/unittests_cli.json (100%) rename {src/tests => unittests}/unittests_cli/update_test_case.py (100%) rename {src/tests => unittests}/unittests_cli/version_test_case.py (100%) rename {src/tests => unittests}/unittests_core/__init__.py (100%) rename {src/tests => unittests}/unittests_core/unittests_core.json (100%) rename {src/tests => unittests}/unittests_query/__init__.py (100%) rename {src/tests => unittests}/unittests_query/unittests_query.json (100%) rename {src/tests => unittests}/unittests_shared/__init__.py (100%) rename {src/tests => unittests}/unittests_shared/cli_commands.py (100%) rename {src/tests => unittests}/unittests_shared/unittests_shared.json (100%) diff --git a/cpl-workspace.json b/cpl-workspace.json index cf6608bf..8d2d7423 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -7,11 +7,11 @@ "cpl-query": "src/cpl_query/cpl-query.json", "set-version": "tools/set_version/set-version.json", "set-pip-urls": "tools/set_pip_urls/set-pip-urls.json", - "unittests": "src/tests/unittests/unittests.json", - "unittests_cli": "src/tests/unittests_cli/unittests_cli.json", - "unittests_core": "src/tests/unittests_core/unittests_core.json", - "unittests_query": "src/tests/unittests_query/unittests_query.json", - "unittests_shared": "src/tests/unittests_shared/unittests_shared.json" + "unittests": "unittests/unittests/unittests.json", + "unittests_cli": "unittests/unittests_cli/unittests_cli.json", + "unittests_core": "unittests/unittests_core/unittests_core.json", + "unittests_query": "unittests/unittests_query/unittests_query.json", + "unittests_shared": "unittests/unittests_shared/unittests_shared.json" }, "Scripts": { "hello-world": "echo 'Hello World'", diff --git a/src/tests/__init__.py b/src/tests/__init__.py deleted file mode 100644 index 71ee2167..00000000 --- a/src/tests/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -sh_cpl sh-edraft Common Python library -~~~~~~~~~~~~~~~~~~~ - -sh-edraft Common Python library - -:copyright: (c) 2020 - 2021 sh-edraft.de -:license: MIT, see LICENSE for more details. - -""" - -__title__ = 'sh_cpl.tests' -__author__ = 'Sven Heidemann' -__license__ = 'MIT' -__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.1' - -from collections import namedtuple - -# imports: - -VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major=2021, minor=4, micro=1) diff --git a/src/tests/unittests/__init__.py b/unittests/unittests/__init__.py similarity index 100% rename from src/tests/unittests/__init__.py rename to unittests/unittests/__init__.py diff --git a/src/tests/unittests/application.py b/unittests/unittests/application.py similarity index 100% rename from src/tests/unittests/application.py rename to unittests/unittests/application.py diff --git a/src/tests/unittests/main.py b/unittests/unittests/main.py similarity index 100% rename from src/tests/unittests/main.py rename to unittests/unittests/main.py diff --git a/src/tests/unittests/unittests.json b/unittests/unittests/unittests.json similarity index 100% rename from src/tests/unittests/unittests.json rename to unittests/unittests/unittests.json diff --git a/src/tests/unittests_cli/__init__.py b/unittests/unittests_cli/__init__.py similarity index 100% rename from src/tests/unittests_cli/__init__.py rename to unittests/unittests_cli/__init__.py diff --git a/src/tests/unittests_cli/add_test_case.py b/unittests/unittests_cli/add_test_case.py similarity index 100% rename from src/tests/unittests_cli/add_test_case.py rename to unittests/unittests_cli/add_test_case.py diff --git a/src/tests/unittests_cli/build_test_case.py b/unittests/unittests_cli/build_test_case.py similarity index 100% rename from src/tests/unittests_cli/build_test_case.py rename to unittests/unittests_cli/build_test_case.py diff --git a/src/tests/unittests_cli/cli_test_suite.py b/unittests/unittests_cli/cli_test_suite.py similarity index 92% rename from src/tests/unittests_cli/cli_test_suite.py rename to unittests/unittests_cli/cli_test_suite.py index 9532fe0c..06a30252 100644 --- a/src/tests/unittests_cli/cli_test_suite.py +++ b/unittests/unittests_cli/cli_test_suite.py @@ -46,9 +46,9 @@ class CLITestSuite(unittest.TestSuite): print(f'Setup {__name__}') try: if os.path.exists(PLAYGROUND_PATH): - shutil.rmtree(PLAYGROUND_PATH) + shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH, '../'))) - os.mkdir(PLAYGROUND_PATH) + os.makedirs(PLAYGROUND_PATH) os.chdir(PLAYGROUND_PATH) except Exception as e: print(f'Setup of {__name__} failed: {traceback.format_exc()}') @@ -57,7 +57,7 @@ class CLITestSuite(unittest.TestSuite): print(f'Cleanup {__name__}') try: if os.path.exists(PLAYGROUND_PATH): - shutil.rmtree(PLAYGROUND_PATH) + shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH, '../'))) except Exception as e: print(f'Cleanup of {__name__} failed: {traceback.format_exc()}') diff --git a/src/tests/unittests_cli/constants.py b/unittests/unittests_cli/constants.py similarity index 56% rename from src/tests/unittests_cli/constants.py rename to unittests/unittests_cli/constants.py index bcaa9d93..917dda78 100644 --- a/src/tests/unittests_cli/constants.py +++ b/unittests/unittests_cli/constants.py @@ -1,4 +1,4 @@ import os PLAYGROUND_PATH = os.path.abspath(os.path.join(os.getcwd(), '../generated/test_cli_playground')) -CLI_PATH = os.path.abspath(os.path.join(os.getcwd(), '../../cpl_cli/main.py')) +CLI_PATH = os.path.abspath(os.path.join(os.getcwd(), '../../src/cpl_cli/main.py')) diff --git a/src/tests/unittests_cli/custom_test_case.py b/unittests/unittests_cli/custom_test_case.py similarity index 100% rename from src/tests/unittests_cli/custom_test_case.py rename to unittests/unittests_cli/custom_test_case.py diff --git a/src/tests/unittests_cli/generate_test_case.py b/unittests/unittests_cli/generate_test_case.py similarity index 100% rename from src/tests/unittests_cli/generate_test_case.py rename to unittests/unittests_cli/generate_test_case.py diff --git a/src/tests/unittests_cli/install_test_case.py b/unittests/unittests_cli/install_test_case.py similarity index 100% rename from src/tests/unittests_cli/install_test_case.py rename to unittests/unittests_cli/install_test_case.py diff --git a/src/tests/unittests_cli/new_test_case.py b/unittests/unittests_cli/new_test_case.py similarity index 100% rename from src/tests/unittests_cli/new_test_case.py rename to unittests/unittests_cli/new_test_case.py diff --git a/src/tests/unittests_cli/publish_test_case.py b/unittests/unittests_cli/publish_test_case.py similarity index 100% rename from src/tests/unittests_cli/publish_test_case.py rename to unittests/unittests_cli/publish_test_case.py diff --git a/src/tests/unittests_cli/remove_test_case.py b/unittests/unittests_cli/remove_test_case.py similarity index 100% rename from src/tests/unittests_cli/remove_test_case.py rename to unittests/unittests_cli/remove_test_case.py diff --git a/src/tests/unittests_cli/run_test_case.py b/unittests/unittests_cli/run_test_case.py similarity index 100% rename from src/tests/unittests_cli/run_test_case.py rename to unittests/unittests_cli/run_test_case.py diff --git a/src/tests/unittests_cli/start_test_case.py b/unittests/unittests_cli/start_test_case.py similarity index 100% rename from src/tests/unittests_cli/start_test_case.py rename to unittests/unittests_cli/start_test_case.py diff --git a/src/tests/unittests_cli/uninstall_test_case.py b/unittests/unittests_cli/uninstall_test_case.py similarity index 100% rename from src/tests/unittests_cli/uninstall_test_case.py rename to unittests/unittests_cli/uninstall_test_case.py diff --git a/src/tests/unittests_cli/unittests_cli.json b/unittests/unittests_cli/unittests_cli.json similarity index 100% rename from src/tests/unittests_cli/unittests_cli.json rename to unittests/unittests_cli/unittests_cli.json diff --git a/src/tests/unittests_cli/update_test_case.py b/unittests/unittests_cli/update_test_case.py similarity index 100% rename from src/tests/unittests_cli/update_test_case.py rename to unittests/unittests_cli/update_test_case.py diff --git a/src/tests/unittests_cli/version_test_case.py b/unittests/unittests_cli/version_test_case.py similarity index 100% rename from src/tests/unittests_cli/version_test_case.py rename to unittests/unittests_cli/version_test_case.py diff --git a/src/tests/unittests_core/__init__.py b/unittests/unittests_core/__init__.py similarity index 100% rename from src/tests/unittests_core/__init__.py rename to unittests/unittests_core/__init__.py diff --git a/src/tests/unittests_core/unittests_core.json b/unittests/unittests_core/unittests_core.json similarity index 100% rename from src/tests/unittests_core/unittests_core.json rename to unittests/unittests_core/unittests_core.json diff --git a/src/tests/unittests_query/__init__.py b/unittests/unittests_query/__init__.py similarity index 100% rename from src/tests/unittests_query/__init__.py rename to unittests/unittests_query/__init__.py diff --git a/src/tests/unittests_query/unittests_query.json b/unittests/unittests_query/unittests_query.json similarity index 100% rename from src/tests/unittests_query/unittests_query.json rename to unittests/unittests_query/unittests_query.json diff --git a/src/tests/unittests_shared/__init__.py b/unittests/unittests_shared/__init__.py similarity index 100% rename from src/tests/unittests_shared/__init__.py rename to unittests/unittests_shared/__init__.py diff --git a/src/tests/unittests_shared/cli_commands.py b/unittests/unittests_shared/cli_commands.py similarity index 100% rename from src/tests/unittests_shared/cli_commands.py rename to unittests/unittests_shared/cli_commands.py diff --git a/src/tests/unittests_shared/unittests_shared.json b/unittests/unittests_shared/unittests_shared.json similarity index 100% rename from src/tests/unittests_shared/unittests_shared.json rename to unittests/unittests_shared/unittests_shared.json -- 2.45.1 From 8f8a9f7dd7b8e891c66b3f83faf20382d0e307d2 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 15:53:23 +0200 Subject: [PATCH 083/140] Moved query unittests --- src/cpl_query/tests/__init__.py | 0 src/cpl_query/tests/tester.py | 25 ------------------- unittests/unittests/application.py | 2 ++ .../unittests_query/iterable_test_case.py | 2 +- .../unittests_query}/models.py | 0 .../unittests_query/query_test_case.py | 4 +-- unittests/unittests_query/query_test_suite.py | 17 +++++++++++++ 7 files changed, 22 insertions(+), 28 deletions(-) delete mode 100644 src/cpl_query/tests/__init__.py delete mode 100644 src/cpl_query/tests/tester.py rename src/cpl_query/tests/iterable_test.py => unittests/unittests_query/iterable_test_case.py (91%) rename {src/cpl_query/tests => unittests/unittests_query}/models.py (100%) rename src/cpl_query/tests/query_test.py => unittests/unittests_query/query_test_case.py (99%) create mode 100644 unittests/unittests_query/query_test_suite.py diff --git a/src/cpl_query/tests/__init__.py b/src/cpl_query/tests/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/src/cpl_query/tests/tester.py b/src/cpl_query/tests/tester.py deleted file mode 100644 index 084071c3..00000000 --- a/src/cpl_query/tests/tester.py +++ /dev/null @@ -1,25 +0,0 @@ -import unittest - -from cpl_query.tests.iterable_test import IterableTest -from cpl_query.tests.query_test import QueryTest - - -class Tester: - - def __init__(self): - self._suite = unittest.TestSuite() - - def create(self): - loader = unittest.TestLoader() - self._suite.addTests(loader.loadTestsFromTestCase(QueryTest)) - self._suite.addTests(loader.loadTestsFromTestCase(IterableTest)) - - def start(self): - runner = unittest.TextTestRunner() - runner.run(self._suite) - - -if __name__ == '__main__': - tester = Tester() - tester.create() - tester.start() diff --git a/unittests/unittests/application.py b/unittests/unittests/application.py index 9af5ad57..9ec49cc6 100644 --- a/unittests/unittests/application.py +++ b/unittests/unittests/application.py @@ -4,6 +4,7 @@ from cpl_core.application import ApplicationABC from cpl_core.configuration import ConfigurationABC from cpl_core.dependency_injection import ServiceProviderABC from unittests_cli.cli_test_suite import CLITestSuite +from unittests_query.query_test_suite import QueryTestSuite class Application(ApplicationABC): @@ -17,3 +18,4 @@ class Application(ApplicationABC): def main(self): runner = unittest.TextTestRunner() runner.run(CLITestSuite()) + runner.run(QueryTestSuite()) diff --git a/src/cpl_query/tests/iterable_test.py b/unittests/unittests_query/iterable_test_case.py similarity index 91% rename from src/cpl_query/tests/iterable_test.py rename to unittests/unittests_query/iterable_test_case.py index a8936a88..2523f500 100644 --- a/src/cpl_query/tests/iterable_test.py +++ b/unittests/unittests_query/iterable_test_case.py @@ -3,7 +3,7 @@ import unittest from cpl_query.extension.list import List -class IterableTest(unittest.TestCase): +class IterableTestCase(unittest.TestCase): def setUp(self) -> None: self._list = List(int) diff --git a/src/cpl_query/tests/models.py b/unittests/unittests_query/models.py similarity index 100% rename from src/cpl_query/tests/models.py rename to unittests/unittests_query/models.py diff --git a/src/cpl_query/tests/query_test.py b/unittests/unittests_query/query_test_case.py similarity index 99% rename from src/cpl_query/tests/query_test.py rename to unittests/unittests_query/query_test_case.py index 9f1e48e2..00d4fed8 100644 --- a/src/cpl_query/tests/query_test.py +++ b/unittests/unittests_query/query_test_case.py @@ -5,10 +5,10 @@ from random import randint from cpl_core.utils import String from cpl_query.exceptions import InvalidTypeException, ArgumentNoneException from cpl_query.extension.list import List -from cpl_query.tests.models import User, Address +from unittests_query.models import User, Address -class QueryTest(unittest.TestCase): +class QueryTestCase(unittest.TestCase): def setUp(self) -> None: self._tests = List(User) diff --git a/unittests/unittests_query/query_test_suite.py b/unittests/unittests_query/query_test_suite.py new file mode 100644 index 00000000..35c3fe03 --- /dev/null +++ b/unittests/unittests_query/query_test_suite.py @@ -0,0 +1,17 @@ +import unittest + +from unittests_query.iterable_test_case import IterableTestCase +from unittests_query.query_test_case import QueryTestCase + + +class QueryTestSuite(unittest.TestSuite): + + def __init__(self): + unittest.TestSuite.__init__(self) + + loader = unittest.TestLoader() + self.addTests(loader.loadTestsFromTestCase(QueryTestCase)) + self.addTests(loader.loadTestsFromTestCase(IterableTestCase)) + + def run(self, *args): + super().run(*args) -- 2.45.1 From b05ca7e980ed4cfb21c42670295e36205651ab7d Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 16:03:14 +0200 Subject: [PATCH 084/140] Set dev version --- src/cpl_query/cpl-query.json | 4 +--- tools/set_version/application.py | 2 +- unittests/unittests/unittests.json | 6 +++--- unittests/unittests_cli/unittests_cli.json | 9 +++++---- unittests/unittests_core/unittests_core.json | 6 +++--- unittests/unittests_query/unittests_query.json | 9 +++++---- unittests/unittests_shared/cli_commands.py | 1 - unittests/unittests_shared/unittests_shared.json | 6 +++--- 8 files changed, 21 insertions(+), 22 deletions(-) diff --git a/src/cpl_query/cpl-query.json b/src/cpl_query/cpl-query.json index e3d23065..ab3bf7f2 100644 --- a/src/cpl_query/cpl-query.json +++ b/src/cpl_query/cpl-query.json @@ -15,9 +15,7 @@ "CopyrightName": "sh-edraft.de", "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", - "Dependencies": [ - "cpl-core>=2022.6.17.dev4" - ], + "Dependencies": [], "PythonVersion": ">=3.10", "PythonPath": {}, "Classifiers": [] diff --git a/tools/set_version/application.py b/tools/set_version/application.py index 3ad1b23a..5acf6e50 100644 --- a/tools/set_version/application.py +++ b/tools/set_version/application.py @@ -57,7 +57,7 @@ class Application(ApplicationABC): for project in self._workspace.projects: Console.write_line(f'Set dependencies {self._version_pipe.transform(version)} for {project}') self._version_setter.set_dependencies(self._workspace.projects[project], version) - if not project.startswith('cpl'): + if not project.startswith('cpl') and not project.startswith('unittest'): continue Console.write_line(f'Set version {self._version_pipe.transform(version)} for {project}') diff --git a/unittests/unittests/unittests.json b/unittests/unittests/unittests.json index 3549aa94..2a05e376 100644 --- a/unittests/unittests/unittests.json +++ b/unittests/unittests/unittests.json @@ -2,9 +2,9 @@ "ProjectSettings": { "Name": "unittests", "Version": { - "Major": "0", - "Minor": "0", - "Micro": "0" + "Major": "2022", + "Minor": "6", + "Micro": "17.dev4" }, "Author": "", "AuthorEmail": "", diff --git a/unittests/unittests_cli/unittests_cli.json b/unittests/unittests_cli/unittests_cli.json index be9b35a9..156906ac 100644 --- a/unittests/unittests_cli/unittests_cli.json +++ b/unittests/unittests_cli/unittests_cli.json @@ -2,9 +2,9 @@ "ProjectSettings": { "Name": "unittest_cli", "Version": { - "Major": "0", - "Minor": "0", - "Micro": "0" + "Major": "2022", + "Minor": "6", + "Micro": "17.dev4" }, "Author": "", "AuthorEmail": "", @@ -16,7 +16,8 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev4" + "cpl-core>=2022.6.17.dev4", + "cpl-cli>=2022.6.17.dev4" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_core/unittests_core.json b/unittests/unittests_core/unittests_core.json index 98e8b50d..d137cff1 100644 --- a/unittests/unittests_core/unittests_core.json +++ b/unittests/unittests_core/unittests_core.json @@ -2,9 +2,9 @@ "ProjectSettings": { "Name": "unittest_core", "Version": { - "Major": "0", - "Minor": "0", - "Micro": "0" + "Major": "2022", + "Minor": "6", + "Micro": "17.dev4" }, "Author": "", "AuthorEmail": "", diff --git a/unittests/unittests_query/unittests_query.json b/unittests/unittests_query/unittests_query.json index 0b6a6597..5a6ac20c 100644 --- a/unittests/unittests_query/unittests_query.json +++ b/unittests/unittests_query/unittests_query.json @@ -2,9 +2,9 @@ "ProjectSettings": { "Name": "unittest_query", "Version": { - "Major": "0", - "Minor": "0", - "Micro": "0" + "Major": "2022", + "Minor": "6", + "Micro": "17.dev4" }, "Author": "", "AuthorEmail": "", @@ -16,7 +16,8 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev4" + "cpl-core>=2022.6.17.dev4", + "cpl-query>=2022.6.17.dev4" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_shared/cli_commands.py b/unittests/unittests_shared/cli_commands.py index fd4af8ce..4577e8e0 100644 --- a/unittests/unittests_shared/cli_commands.py +++ b/unittests/unittests_shared/cli_commands.py @@ -14,7 +14,6 @@ class CLICommands: for arg in args: command.append(arg) - print(f'Running {command}') subprocess.run(command, env=env_vars) @classmethod diff --git a/unittests/unittests_shared/unittests_shared.json b/unittests/unittests_shared/unittests_shared.json index babe5a4f..a7fe4bbb 100644 --- a/unittests/unittests_shared/unittests_shared.json +++ b/unittests/unittests_shared/unittests_shared.json @@ -2,9 +2,9 @@ "ProjectSettings": { "Name": "unittest_shared", "Version": { - "Major": "0", - "Minor": "0", - "Micro": "0" + "Major": "2022", + "Minor": "6", + "Micro": "17.dev4" }, "Author": "", "AuthorEmail": "", -- 2.45.1 From 9e0e85d646b7525e3944c88f1823cc2b5cb66940 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 16:06:56 +0200 Subject: [PATCH 085/140] Fixed install command --- src/cpl_cli/command/install_service.py | 3 ++- src/cpl_cli/cpl-cli.json | 4 ++-- src/cpl_core/cpl-core.json | 2 +- src/cpl_query/cpl-query.json | 2 +- tools/set_pip_urls/set-pip-urls.json | 2 +- tools/set_version/set-version.json | 2 +- unittests/unittests/unittests.json | 4 ++-- unittests/unittests_cli/unittests_cli.json | 6 +++--- unittests/unittests_core/unittests_core.json | 4 ++-- unittests/unittests_query/unittests_query.json | 6 +++--- unittests/unittests_shared/unittests_shared.json | 4 ++-- 11 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/cpl_cli/command/install_service.py b/src/cpl_cli/command/install_service.py index 688632a3..e53e8082 100644 --- a/src/cpl_cli/command/install_service.py +++ b/src/cpl_cli/command/install_service.py @@ -42,7 +42,7 @@ class InstallService(CommandABC): self._is_simulation = False self._is_virtual = False - self._project_file = f'{self._config.get_configuration("ProjectName")}.json' + self._project_file = f'{self._project_settings.name}.json' @property def help_message(self) -> str: @@ -178,6 +178,7 @@ class InstallService(CommandABC): BuildSettings.__name__: SettingsHelper.get_build_settings_dict(self._build_settings) } + Console.write_line(self._project_file) with open(os.path.join(self._env.working_directory, self._project_file), 'w') as project_file: project_file.write(json.dumps(config, indent=2)) project_file.close() diff --git a/src/cpl_cli/cpl-cli.json b/src/cpl_cli/cpl-cli.json index f703ce15..e43fa127 100644 --- a/src/cpl_cli/cpl-cli.json +++ b/src/cpl_cli/cpl-cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev4" + "Micro": "17.dev5" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev4" + "cpl-core>=2022.6.17.dev5" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_core/cpl-core.json b/src/cpl_core/cpl-core.json index 984d3554..7a8a6fbc 100644 --- a/src/cpl_core/cpl-core.json +++ b/src/cpl_core/cpl-core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev4" + "Micro": "17.dev5" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_query/cpl-query.json b/src/cpl_query/cpl-query.json index ab3bf7f2..b4bb2e73 100644 --- a/src/cpl_query/cpl-query.json +++ b/src/cpl_query/cpl-query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev4" + "Micro": "17.dev5" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/tools/set_pip_urls/set-pip-urls.json b/tools/set_pip_urls/set-pip-urls.json index be77c6ed..96156cfa 100644 --- a/tools/set_pip_urls/set-pip-urls.json +++ b/tools/set_pip_urls/set-pip-urls.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev4" + "cpl-core>=2022.6.17.dev5" ], "PythonVersion": ">=3.10.4", "PythonPath": {}, diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index e1498a4d..3ee90398 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev4" + "cpl-core>=2022.6.17.dev5" ], "PythonVersion": ">=3.10.4", "PythonPath": {}, diff --git a/unittests/unittests/unittests.json b/unittests/unittests/unittests.json index 2a05e376..890f9782 100644 --- a/unittests/unittests/unittests.json +++ b/unittests/unittests/unittests.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev4" + "Micro": "17.dev5" }, "Author": "", "AuthorEmail": "", @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev4" + "cpl-core>=2022.6.17.dev5" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_cli/unittests_cli.json b/unittests/unittests_cli/unittests_cli.json index 156906ac..df178f97 100644 --- a/unittests/unittests_cli/unittests_cli.json +++ b/unittests/unittests_cli/unittests_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev4" + "Micro": "17.dev5" }, "Author": "", "AuthorEmail": "", @@ -16,8 +16,8 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev4", - "cpl-cli>=2022.6.17.dev4" + "cpl-core>=2022.6.17.dev5", + "cpl-cli>=2022.6.17.dev5" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_core/unittests_core.json b/unittests/unittests_core/unittests_core.json index d137cff1..176f837a 100644 --- a/unittests/unittests_core/unittests_core.json +++ b/unittests/unittests_core/unittests_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev4" + "Micro": "17.dev5" }, "Author": "", "AuthorEmail": "", @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev4" + "cpl-core>=2022.6.17.dev5" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_query/unittests_query.json b/unittests/unittests_query/unittests_query.json index 5a6ac20c..81421fe8 100644 --- a/unittests/unittests_query/unittests_query.json +++ b/unittests/unittests_query/unittests_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev4" + "Micro": "17.dev5" }, "Author": "", "AuthorEmail": "", @@ -16,8 +16,8 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev4", - "cpl-query>=2022.6.17.dev4" + "cpl-core>=2022.6.17.dev5", + "cpl-query>=2022.6.17.dev5" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_shared/unittests_shared.json b/unittests/unittests_shared/unittests_shared.json index a7fe4bbb..76f369a2 100644 --- a/unittests/unittests_shared/unittests_shared.json +++ b/unittests/unittests_shared/unittests_shared.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev4" + "Micro": "17.dev5" }, "Author": "", "AuthorEmail": "", @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev4" + "cpl-core>=2022.6.17.dev5" ], "PythonVersion": ">=3.10.4", "PythonPath": { -- 2.45.1 From ddff9dec11a92871cc95a4d6a0829055cbadd9bc Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 16:08:37 +0200 Subject: [PATCH 086/140] Fixed install command --- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/command/install_service.py | 1 - src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/validators/__init__.py | 4 ++-- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/pipes/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- src/cpl_query/__init__.py | 4 ++-- src/cpl_query/_query/__init__.py | 4 ++-- src/cpl_query/extension/__init__.py | 4 ++-- tools/set_version/set-version.json | 3 ++- 42 files changed, 82 insertions(+), 82 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 4453a344..7e4adf48 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 9114e571..2085ae73 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 5a37043e..4c1a359a 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index a41e4be1..08102786 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 2f826888..2e4b01da 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 639774f0..4aa53bba 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 3d59f643..034bfe62 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index f3d64b65..089cd9a6 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index f19d8cb1..9f962d4c 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index ad2fb302..8a798796 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 881aa9eb..1bac84f9 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 78dde8dd..8a452402 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 83dcfa8e..12786bca 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/_templates/new/unittest/__init__.py b/src/cpl_cli/_templates/new/unittest/__init__.py index 45a18338..e9df9410 100644 --- a/src/cpl_cli/_templates/new/unittest/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/_templates/new/unittest/source/__init__.py b/src/cpl_cli/_templates/new/unittest/source/__init__.py index 7a0fa976..90228071 100644 --- a/src/cpl_cli/_templates/new/unittest/source/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/_templates/new/unittest/source/name/__init__.py b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py index f574f941..2470cbf3 100644 --- a/src/cpl_cli/_templates/new/unittest/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index ea19fe0b..9cb1d1aa 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 832f98dd..05f1b18f 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/command/install_service.py b/src/cpl_cli/command/install_service.py index e53e8082..d4342988 100644 --- a/src/cpl_cli/command/install_service.py +++ b/src/cpl_cli/command/install_service.py @@ -178,7 +178,6 @@ class InstallService(CommandABC): BuildSettings.__name__: SettingsHelper.get_build_settings_dict(self._build_settings) } - Console.write_line(self._project_file) with open(os.path.join(self._env.working_directory, self._project_file), 'w') as project_file: project_file.write(json.dumps(config, indent=2)) project_file.close() diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index 1c91e504..bbd53400 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 1ffe1b09..6094ed35 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index 4dc0d603..27f9d1cf 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 812c7731..bc77e307 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index 29cb394b..7fae4a43 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index a8ab174f..fa5c4b17 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index fed05ec0..935bf9e8 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index f317fa21..b6500994 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index f255ae1c..bc1476a9 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index ed634d68..d5ff0988 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 03ecf658..1f0b2b73 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index 30c24743..2906617e 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index b03e27c4..e12cb685 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 5194a6e1..e7acb259 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 7a040367..02da5f23 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index f2b7dc73..59c458a1 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index 89a8e972..23a253e4 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index 2800356a..150b1172 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 78050380..c540adf6 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index 7311ca67..8bfc996f 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index 19c9ce97..60a7f996 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index e63bccea..be7474ec 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev4' +__version__ = '2022.6.17.dev5' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev4') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index 3ee90398..2c076df7 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -16,7 +16,8 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev5" + "cpl-core>=2022.6.17.dev5", + "gitpython==3.1.27" ], "PythonVersion": ">=3.10.4", "PythonPath": {}, -- 2.45.1 From def92c78c8bb7688c44c943bf8cd6d305236559a Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 16:25:15 +0200 Subject: [PATCH 087/140] Added logic to change version only for projects with changes --- src/cpl_cli/cpl-cli.json | 4 ++-- src/cpl_core/cpl-core.json | 2 +- src/cpl_query/cpl-query.json | 2 +- tools/set_pip_urls/set-pip-urls.json | 2 +- tools/set_version/application.py | 9 +++++++++ tools/set_version/git_service.py | 13 ++++++------- tools/set_version/set-version.json | 2 +- tools/set_version/startup.py | 2 +- unittests/unittests/unittests.json | 4 ++-- unittests/unittests_cli/unittests_cli.json | 6 +++--- unittests/unittests_core/unittests_core.json | 4 ++-- unittests/unittests_query/unittests_query.json | 6 +++--- unittests/unittests_shared/unittests_shared.json | 4 ++-- 13 files changed, 34 insertions(+), 26 deletions(-) diff --git a/src/cpl_cli/cpl-cli.json b/src/cpl_cli/cpl-cli.json index e43fa127..b5a709e3 100644 --- a/src/cpl_cli/cpl-cli.json +++ b/src/cpl_cli/cpl-cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev5" + "Micro": "17" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev5" + "cpl-core>=2022.6.17" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_core/cpl-core.json b/src/cpl_core/cpl-core.json index 7a8a6fbc..7ac905aa 100644 --- a/src/cpl_core/cpl-core.json +++ b/src/cpl_core/cpl-core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev5" + "Micro": "17" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_query/cpl-query.json b/src/cpl_query/cpl-query.json index b4bb2e73..876fc3f2 100644 --- a/src/cpl_query/cpl-query.json +++ b/src/cpl_query/cpl-query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev5" + "Micro": "17" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/tools/set_pip_urls/set-pip-urls.json b/tools/set_pip_urls/set-pip-urls.json index 96156cfa..a3c936e3 100644 --- a/tools/set_pip_urls/set-pip-urls.json +++ b/tools/set_pip_urls/set-pip-urls.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev5" + "cpl-core>=2022.6.17" ], "PythonVersion": ">=3.10.4", "PythonPath": {}, diff --git a/tools/set_version/application.py b/tools/set_version/application.py index 5acf6e50..0f139550 100644 --- a/tools/set_version/application.py +++ b/tools/set_version/application.py @@ -1,3 +1,4 @@ +import os import traceback from cpl_cli.configuration.version_settings_name_enum import VersionSettingsNameEnum @@ -27,6 +28,7 @@ class Application(ApplicationABC): def main(self): Console.write_line('Set versions:') + args = self._configuration.additional_arguments version = {} branch = "" @@ -53,8 +55,15 @@ class Application(ApplicationABC): Console.error(f'Branch {branch} does not contain valid version') return + diff_paths = [] + for file in self._git_service.get_diff_files(): + diff_paths.append(os.path.basename(os.path.dirname(file))) + try: for project in self._workspace.projects: + if project not in diff_paths: + continue + Console.write_line(f'Set dependencies {self._version_pipe.transform(version)} for {project}') self._version_setter.set_dependencies(self._workspace.projects[project], version) if not project.startswith('cpl') and not project.startswith('unittest'): diff --git a/tools/set_version/git_service.py b/tools/set_version/git_service.py index 263cde5b..0e43b226 100644 --- a/tools/set_version/git_service.py +++ b/tools/set_version/git_service.py @@ -1,4 +1,4 @@ -import os +from git import Repo, DiffIndex from cpl_core.environment import ApplicationEnvironmentABC @@ -7,12 +7,11 @@ class GitService: def __init__(self, env: ApplicationEnvironmentABC): self._env = env + self._repo = Repo(env.working_directory) def get_active_branch_name(self) -> str: - head_dir = os.path.join(self._env.working_directory, '.git/HEAD') - with open(head_dir, 'r') as f: - content = f.read().splitlines() + branch = self._repo.active_branch + return branch.name - for line in content: - if line[0:4] == "ref:": - return line.partition("refs/heads/")[2] + def get_diff_files(self) -> list[str]: + return [item.a_path for item in self._repo.index.diff(None)] diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index 2c076df7..ae872c29 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev5", + "cpl-core>=2022.6.17", "gitpython==3.1.27" ], "PythonVersion": ">=3.10.4", diff --git a/tools/set_version/startup.py b/tools/set_version/startup.py index 31c8a268..609ef337 100644 --- a/tools/set_version/startup.py +++ b/tools/set_version/startup.py @@ -25,7 +25,7 @@ class Startup(StartupABC): def configure_services(self, services: ServiceCollectionABC, environment: ApplicationEnvironment) -> ServiceProviderABC: services.add_pipes() - services.add_transient(GitService) + services.add_singleton(GitService) services.add_transient(VersionSetterService) return services.build_service_provider() diff --git a/unittests/unittests/unittests.json b/unittests/unittests/unittests.json index 890f9782..be802510 100644 --- a/unittests/unittests/unittests.json +++ b/unittests/unittests/unittests.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev5" + "Micro": "17.dev6" }, "Author": "", "AuthorEmail": "", @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev5" + "cpl-core>=2022.6.17.dev6" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_cli/unittests_cli.json b/unittests/unittests_cli/unittests_cli.json index df178f97..bd09248a 100644 --- a/unittests/unittests_cli/unittests_cli.json +++ b/unittests/unittests_cli/unittests_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev5" + "Micro": "17.dev6" }, "Author": "", "AuthorEmail": "", @@ -16,8 +16,8 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev5", - "cpl-cli>=2022.6.17.dev5" + "cpl-core>=2022.6.17.dev6", + "cpl-cli>=2022.6.17.dev6" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_core/unittests_core.json b/unittests/unittests_core/unittests_core.json index 176f837a..fdf7b69a 100644 --- a/unittests/unittests_core/unittests_core.json +++ b/unittests/unittests_core/unittests_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev5" + "Micro": "17.dev6" }, "Author": "", "AuthorEmail": "", @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev5" + "cpl-core>=2022.6.17.dev6" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_query/unittests_query.json b/unittests/unittests_query/unittests_query.json index 81421fe8..326c72d1 100644 --- a/unittests/unittests_query/unittests_query.json +++ b/unittests/unittests_query/unittests_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev5" + "Micro": "17.dev6" }, "Author": "", "AuthorEmail": "", @@ -16,8 +16,8 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev5", - "cpl-query>=2022.6.17.dev5" + "cpl-core>=2022.6.17.dev6", + "cpl-query>=2022.6.17.dev6" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_shared/unittests_shared.json b/unittests/unittests_shared/unittests_shared.json index 76f369a2..cab18497 100644 --- a/unittests/unittests_shared/unittests_shared.json +++ b/unittests/unittests_shared/unittests_shared.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev5" + "Micro": "17.dev6" }, "Author": "", "AuthorEmail": "", @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev5" + "cpl-core>=2022.6.17.dev6" ], "PythonVersion": ">=3.10.4", "PythonPath": { -- 2.45.1 From c28f551682a66fca5b20afd446ab13b4721b42f4 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 16:26:55 +0200 Subject: [PATCH 088/140] Added skip message to set-version --- tools/set_version/application.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/set_version/application.py b/tools/set_version/application.py index 0f139550..0b8b19ec 100644 --- a/tools/set_version/application.py +++ b/tools/set_version/application.py @@ -62,11 +62,13 @@ class Application(ApplicationABC): try: for project in self._workspace.projects: if project not in diff_paths: + Console.write_line(f'Skipping {project} due to missing changes') continue Console.write_line(f'Set dependencies {self._version_pipe.transform(version)} for {project}') self._version_setter.set_dependencies(self._workspace.projects[project], version) if not project.startswith('cpl') and not project.startswith('unittest'): + Console.write_line(f'Skipping {project}') continue Console.write_line(f'Set version {self._version_pipe.transform(version)} for {project}') -- 2.45.1 From 6c1d7a3b29476575798280185d3ae1eb3311f18e Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 16:29:07 +0200 Subject: [PATCH 089/140] Removed prints from CLITestSuite --- unittests/unittests_cli/cli_test_suite.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/unittests/unittests_cli/cli_test_suite.py b/unittests/unittests_cli/cli_test_suite.py index 06a30252..bb53effd 100644 --- a/unittests/unittests_cli/cli_test_suite.py +++ b/unittests/unittests_cli/cli_test_suite.py @@ -43,7 +43,6 @@ class CLITestSuite(unittest.TestSuite): self.addTests(loader.loadTestsFromTestCase(RemoveTestCase)) def _setup(self): - print(f'Setup {__name__}') try: if os.path.exists(PLAYGROUND_PATH): shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH, '../'))) @@ -54,7 +53,6 @@ class CLITestSuite(unittest.TestSuite): print(f'Setup of {__name__} failed: {traceback.format_exc()}') def _cleanup(self): - print(f'Cleanup {__name__}') try: if os.path.exists(PLAYGROUND_PATH): shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH, '../'))) -- 2.45.1 From 15d938b172e3de1fc7ad23e8d3bbd7585b5e68cd Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 21:01:41 +0200 Subject: [PATCH 090/140] Fixed handing of unregistered console arguments --- src/cpl_core/configuration/configuration.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index 9b344ace..6ea17122 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -215,16 +215,11 @@ class Configuration(ConfigurationABC): # flags elif isinstance(arg, FlagArgument): - if arg_str.startswith(arg.token) \ - and arg_str_without_token == arg.name or arg_str_without_token in arg.aliases: + if arg_str.startswith(arg.token) and arg_str_without_token == arg.name or arg_str_without_token in arg.aliases: self._additional_arguments.append(arg.name) self._handled_args.append(arg_str) self._parse_arguments(executables, arg_list[i + 1:], arg.console_arguments) - # add left over values to args - if arg_str not in self._additional_arguments and arg_str not in self._handled_args: - self._additional_arguments.append(arg_str) - def add_environment_variables(self, prefix: str): for env_var in os.environ.keys(): if not env_var.startswith(prefix): @@ -310,6 +305,10 @@ class Configuration(ConfigurationABC): arg_list = sys.argv[1:] executables: list[ExecutableArgument] = [] self._parse_arguments(executables, arg_list, self._argument_types) + for arg_str in arg_list: + # add left over values to args + if arg_str not in self._additional_arguments and arg_str not in self._handled_args: + self._additional_arguments.append(arg_str) except Exception as e: Console.error('An error occurred while parsing arguments.') sys.exit() -- 2.45.1 From d23ea86ccfe5b418ef2d4a32276f6cfb61afd415 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 21:18:57 +0200 Subject: [PATCH 091/140] Added logic to answer questions of new command dialog by flag arguments --- src/cpl_cli/command/new_service.py | 46 +++++++++++++++-------- src/cpl_cli/startup_argument_extension.py | 6 ++- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/src/cpl_cli/command/new_service.py b/src/cpl_cli/command/new_service.py index 0f6ccac5..f8b5781e 100644 --- a/src/cpl_cli/command/new_service.py +++ b/src/cpl_cli/command/new_service.py @@ -169,22 +169,22 @@ class NewService(CommandABC): Gets project information's from user :return: """ - if not is_unittest: - result = Console.read('Do you want to use application base? (y/n) ') - if result.lower() == 'y': - self._use_application_api = True + if self._use_application_api or self._use_startup or self._use_service_providing or self._use_async: + Console.set_foreground_color(ForegroundColorEnum.default) + Console.write_line('Skipping question due to given flags') + return - result = Console.read('Do you want to use startup? (y/n) ') - if result.lower() == 'y': - self._use_startup = True - else: - result = Console.read('Do you want to use service providing? (y/n) ') - if result.lower() == 'y': - self._use_service_providing = True - - result = Console.read('Do you want to use async? (y/n) ') - if result.lower() == 'y': - self._use_async = True + if not is_unittest: + self._use_application_api = Console.read('Do you want to use application base? (y/n) ').lower() == 'y' + + if not is_unittest and self._use_application_api: + self._use_startup = Console.read('Do you want to use startup? (y/n) ').lower() == 'y' + + if not is_unittest and not self._use_application_api: + self._use_service_providing = Console.read('Do you want to use service providing? (y/n) ').lower() == 'y' + + if not self._use_async: + self._use_async = Console.read('Do you want to use async? (y/n) ').lower() == 'y' Console.set_foreground_color(ForegroundColorEnum.default) @@ -276,6 +276,22 @@ class NewService(CommandABC): :param args: :return: """ + if 'async' in args: + self._use_async = True + args.remove('async') + + if 'application-base' in args: + self._use_application_api = True + args.remove('application-base') + + if 'startup' in args: + self._use_startup = True + args.remove('startup') + + if 'service-providing' in args: + self._use_service_providing = True + args.remove('service-providing') + console = self._config.get_configuration(ProjectTypeEnum.console.value) library = self._config.get_configuration(ProjectTypeEnum.library.value) unittest = self._config.get_configuration(ProjectTypeEnum.unittest.value) diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index 92287027..64710b11 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -86,7 +86,11 @@ class StartupArgumentExtension(StartupExtensionABC): config.create_console_argument(ArgumentTypeEnum.Executable, '', 'new', ['n', 'N'], NewService, True) \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'console', ['c', 'C'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'library', ['l', 'L'], ' ') \ - .add_console_argument(ArgumentTypeEnum.Variable, '', 'unittest', ['ut', 'UT'], ' ') + .add_console_argument(ArgumentTypeEnum.Variable, '', 'unittest', ['ut', 'UT'], ' ') \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'async', ['a', 'A']) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'application-base', ['ab', 'AB']) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'startup', ['s', 'S']) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'service-providing', ['sp', 'SP']) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'publish', ['p', 'P'], PublishService, True, validators=[ProjectValidator]) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'remove', ['r', 'R'], RemoveService, True, validators=[WorkspaceValidator]) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) -- 2.45.1 From d0b0f4bfcb7073d57e2b9e7f36a2e23077343adc Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 21:41:42 +0200 Subject: [PATCH 092/140] Fixed set-version --- tools/set_version/application.py | 4 +++- tools/set_version/set-version.json | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/set_version/application.py b/tools/set_version/application.py index 0b8b19ec..83ea7b63 100644 --- a/tools/set_version/application.py +++ b/tools/set_version/application.py @@ -1,6 +1,8 @@ import os import traceback +from cpl_core.utils import String + from cpl_cli.configuration.version_settings_name_enum import VersionSettingsNameEnum from cpl_cli.configuration.workspace_settings import WorkspaceSettings from cpl_core.application.application_abc import ApplicationABC @@ -61,7 +63,7 @@ class Application(ApplicationABC): try: for project in self._workspace.projects: - if project not in diff_paths: + if project not in diff_paths and String.convert_to_snake_case(project) not in diff_paths: Console.write_line(f'Skipping {project} due to missing changes') continue diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index ae872c29..da0b3d1d 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17", + "cpl-core>=2022.6.17.dev6", "gitpython==3.1.27" ], "PythonVersion": ">=3.10.4", -- 2.45.1 From 698f80adfe271ce948bdd32c6f75960b22bc3c4b Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 21:42:28 +0200 Subject: [PATCH 093/140] Build dev6 --- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl-cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/validators/__init__.py | 4 ++-- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/cpl-core.json | 2 +- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/pipes/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- src/cpl_query/__init__.py | 4 ++-- src/cpl_query/_query/__init__.py | 4 ++-- src/cpl_query/cpl-query.json | 2 +- src/cpl_query/extension/__init__.py | 4 ++-- 43 files changed, 84 insertions(+), 84 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 7e4adf48..210b3e03 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 2085ae73..d5752d0a 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 4c1a359a..36e4e03a 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 08102786..444862d5 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 2e4b01da..b46f91ee 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 4aa53bba..8ce45135 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 034bfe62..336bce89 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 089cd9a6..3cf58f40 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 9f962d4c..43f3a725 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 8a798796..002a81b7 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 1bac84f9..d32db8e1 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 8a452402..401218db 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 12786bca..9c3afc45 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/_templates/new/unittest/__init__.py b/src/cpl_cli/_templates/new/unittest/__init__.py index e9df9410..aa7e7935 100644 --- a/src/cpl_cli/_templates/new/unittest/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/_templates/new/unittest/source/__init__.py b/src/cpl_cli/_templates/new/unittest/source/__init__.py index 90228071..8bc89c89 100644 --- a/src/cpl_cli/_templates/new/unittest/source/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/_templates/new/unittest/source/name/__init__.py b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py index 2470cbf3..79609b9a 100644 --- a/src/cpl_cli/_templates/new/unittest/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index 9cb1d1aa..da2493e5 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 05f1b18f..c5796c33 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index bbd53400..c86bacc3 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/cpl-cli.json b/src/cpl_cli/cpl-cli.json index b5a709e3..cf804054 100644 --- a/src/cpl_cli/cpl-cli.json +++ b/src/cpl_cli/cpl-cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17" + "Micro": "17.dev6" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17" + "cpl-core>=2022.6.17.dev6" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 6094ed35..ba00f9e8 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index 27f9d1cf..e45859c9 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index bc77e307..08b2fb5d 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index 7fae4a43..e9654bb4 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index fa5c4b17..099c8f37 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 935bf9e8..244b9dc2 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index b6500994..2641ee35 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index bc1476a9..ccd0e484 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_core/cpl-core.json b/src/cpl_core/cpl-core.json index 7ac905aa..525bfd9a 100644 --- a/src/cpl_core/cpl-core.json +++ b/src/cpl_core/cpl-core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17" + "Micro": "17.dev6" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index d5ff0988..0998767a 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 1f0b2b73..2abf24f8 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index 2906617e..bc7b32ad 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index e12cb685..abdec782 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index e7acb259..3575e3c7 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 02da5f23..b85f8d6b 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 59c458a1..6589ae0d 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index 23a253e4..20c70858 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index 150b1172..d5b857df 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index c540adf6..0dc46e2b 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index 8bfc996f..5c98e23f 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index 60a7f996..eccaf9d5 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') diff --git a/src/cpl_query/cpl-query.json b/src/cpl_query/cpl-query.json index 876fc3f2..73259f0a 100644 --- a/src/cpl_query/cpl-query.json +++ b/src/cpl_query/cpl-query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17" + "Micro": "17.dev6" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index be7474ec..6dc5bf71 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev5' +__version__ = '2022.6.17.dev6' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev5') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') -- 2.45.1 From ce0ad4013f88819f31eb5b0c487cca83960ebd2c Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 21:42:43 +0200 Subject: [PATCH 094/140] [WIP] Improved unittest --- unittests/unittests_cli/cli_test_suite.py | 26 +++++++++---------- unittests/unittests_cli/constants.py | 2 +- unittests/unittests_cli/generate_test_case.py | 9 +++++++ unittests/unittests_cli/new_test_case.py | 26 +++++++++++++++++-- unittests/unittests_shared/cli_commands.py | 10 +++---- 5 files changed, 52 insertions(+), 21 deletions(-) diff --git a/unittests/unittests_cli/cli_test_suite.py b/unittests/unittests_cli/cli_test_suite.py index bb53effd..e64b3e7f 100644 --- a/unittests/unittests_cli/cli_test_suite.py +++ b/unittests/unittests_cli/cli_test_suite.py @@ -25,27 +25,27 @@ class CLITestSuite(unittest.TestSuite): loader = unittest.TestLoader() # nothing needed - self.addTests(loader.loadTestsFromTestCase(GenerateTestCase)) + # self.addTests(loader.loadTestsFromTestCase(GenerateTestCase)) self.addTests(loader.loadTestsFromTestCase(NewTestCase)) - self.addTests(loader.loadTestsFromTestCase(VersionTestCase)) + # self.addTests(loader.loadTestsFromTestCase(VersionTestCase)) # project needed - self.addTests(loader.loadTestsFromTestCase(BuildTestCase)) - self.addTests(loader.loadTestsFromTestCase(InstallTestCase)) - self.addTests(loader.loadTestsFromTestCase(PublishTestCase)) - self.addTests(loader.loadTestsFromTestCase(RunTestCase)) - self.addTests(loader.loadTestsFromTestCase(StartTestCase)) - self.addTests(loader.loadTestsFromTestCase(UninstallTestCase)) - self.addTests(loader.loadTestsFromTestCase(UpdateTestCase)) + # self.addTests(loader.loadTestsFromTestCase(BuildTestCase)) + # self.addTests(loader.loadTestsFromTestCase(InstallTestCase)) + # self.addTests(loader.loadTestsFromTestCase(PublishTestCase)) + # self.addTests(loader.loadTestsFromTestCase(RunTestCase)) + # self.addTests(loader.loadTestsFromTestCase(StartTestCase)) + # self.addTests(loader.loadTestsFromTestCase(UninstallTestCase)) + # self.addTests(loader.loadTestsFromTestCase(UpdateTestCase)) # workspace needed - self.addTests(loader.loadTestsFromTestCase(AddTestCase)) - self.addTests(loader.loadTestsFromTestCase(RemoveTestCase)) + # self.addTests(loader.loadTestsFromTestCase(AddTestCase)) + # self.addTests(loader.loadTestsFromTestCase(RemoveTestCase)) def _setup(self): try: if os.path.exists(PLAYGROUND_PATH): - shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH, '../'))) + shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH))) os.makedirs(PLAYGROUND_PATH) os.chdir(PLAYGROUND_PATH) @@ -55,7 +55,7 @@ class CLITestSuite(unittest.TestSuite): def _cleanup(self): try: if os.path.exists(PLAYGROUND_PATH): - shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH, '../'))) + shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH))) except Exception as e: print(f'Cleanup of {__name__} failed: {traceback.format_exc()}') diff --git a/unittests/unittests_cli/constants.py b/unittests/unittests_cli/constants.py index 917dda78..766d72c0 100644 --- a/unittests/unittests_cli/constants.py +++ b/unittests/unittests_cli/constants.py @@ -1,4 +1,4 @@ import os -PLAYGROUND_PATH = os.path.abspath(os.path.join(os.getcwd(), '../generated/test_cli_playground')) +PLAYGROUND_PATH = os.path.abspath(os.path.join(os.getcwd(), '../test_cli_playground')) CLI_PATH = os.path.abspath(os.path.join(os.getcwd(), '../../src/cpl_cli/main.py')) diff --git a/unittests/unittests_cli/generate_test_case.py b/unittests/unittests_cli/generate_test_case.py index ecc11e68..5a718416 100644 --- a/unittests/unittests_cli/generate_test_case.py +++ b/unittests/unittests_cli/generate_test_case.py @@ -15,28 +15,37 @@ class GenerateTestCase(unittest.TestCase): os.remove(file_path) def test_abc(self): + print(f'{__name__} generate abc') self._test_file('abc', '_abc') def test_class(self): + print(f'{__name__} generate class') self._test_file('class', '') def test_enum(self): + print(f'{__name__} generate enum') self._test_file('enum', '_enum') def test_pipe(self): + print(f'{__name__} generate pipe') self._test_file('pipe', '_pipe') def test_service(self): + print(f'{__name__} generate service') self._test_file('service', '_service') def test_settings(self): + print(f'{__name__} generate settings') self._test_file('settings', '_settings') def test_test_case(self): + print(f'{__name__} generate test_case') self._test_file('test_case', '_test_case') def test_thread(self): + print(f'{__name__} generate thread') self._test_file('thread', '_thread') def test_validator(self): + print(f'{__name__} generate validator') self._test_file('validator', '_validator') diff --git a/unittests/unittests_cli/new_test_case.py b/unittests/unittests_cli/new_test_case.py index d902e011..1309eb99 100644 --- a/unittests/unittests_cli/new_test_case.py +++ b/unittests/unittests_cli/new_test_case.py @@ -1,10 +1,32 @@ +import os +import shutil import unittest +from cpl_core.utils import String + +from unittests_cli.constants import PLAYGROUND_PATH +from unittests_shared.cli_commands import CLICommands + class NewTestCase(unittest.TestCase): def setUp(self): pass - def test_equal(self): - pass + def _test_project(self, project_type: str, name: str, *args): + CLICommands.new(project_type, name, *args) + project_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, String.convert_to_snake_case(name))) + self.assertTrue(os.path.exists(project_path)) + shutil.rmtree(project_path) + + def test_console(self): + print(f'{__name__} new console') + self._test_project('console', 'test-console', '--ab', '--s', '--sp') + + def test_library(self): + print(f'{__name__} new library') + self._test_project('library', 'test-library', '--ab', '--s', '--sp') + + def test_unittest(self): + print(f'{__name__} new unittests') + self._test_project('unittest', 'test-unittest', '--ab', '--s', '--sp') diff --git a/unittests/unittests_shared/cli_commands.py b/unittests/unittests_shared/cli_commands.py index 4577e8e0..9465effd 100644 --- a/unittests/unittests_shared/cli_commands.py +++ b/unittests/unittests_shared/cli_commands.py @@ -9,7 +9,7 @@ class CLICommands: @staticmethod def _run(cmd: str, *args): env_vars = os.environ - env_vars['CPL_IS_UNITTEST'] = 'YES' + # env_vars['CPL_IS_UNITTEST'] = 'YES' command = ['python', CLI_PATH, cmd] for arg in args: command.append(arg) @@ -17,9 +17,9 @@ class CLICommands: subprocess.run(command, env=env_vars) @classmethod - def generate(cls, *args): - cls._run('generate', *args) + def generate(cls, schematic: str, name: str): + cls._run('generate', schematic, name) @classmethod - def new(cls, *args): - cls._run('new', *args) + def new(cls, project_type: str, name: str, *args): + cls._run('new', project_type, name, *args) -- 2.45.1 From 833dd83008e0a51e9ca1b603801373d49109a9c1 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 22:21:16 +0200 Subject: [PATCH 095/140] Improved unittests & added tests for cpl new --- unittests/unittests_cli/cli_test_suite.py | 20 +++++------- unittests/unittests_cli/generate_test_case.py | 10 ------ unittests/unittests_cli/new_test_case.py | 32 +++++++++++++++---- unittests/unittests_shared/cli_commands.py | 2 +- 4 files changed, 35 insertions(+), 29 deletions(-) diff --git a/unittests/unittests_cli/cli_test_suite.py b/unittests/unittests_cli/cli_test_suite.py index e64b3e7f..f1a7d7ea 100644 --- a/unittests/unittests_cli/cli_test_suite.py +++ b/unittests/unittests_cli/cli_test_suite.py @@ -2,20 +2,12 @@ import os import shutil import traceback import unittest +from typing import Optional +from unittest import TestResult -from unittests_cli.add_test_case import AddTestCase -from unittests_cli.build_test_case import BuildTestCase from unittests_cli.constants import PLAYGROUND_PATH from unittests_cli.generate_test_case import GenerateTestCase -from unittests_cli.install_test_case import InstallTestCase from unittests_cli.new_test_case import NewTestCase -from unittests_cli.publish_test_case import PublishTestCase -from unittests_cli.remove_test_case import RemoveTestCase -from unittests_cli.run_test_case import RunTestCase -from unittests_cli.start_test_case import StartTestCase -from unittests_cli.uninstall_test_case import UninstallTestCase -from unittests_cli.update_test_case import UpdateTestCase -from unittests_cli.version_test_case import VersionTestCase class CLITestSuite(unittest.TestSuite): @@ -24,8 +16,9 @@ class CLITestSuite(unittest.TestSuite): unittest.TestSuite.__init__(self) loader = unittest.TestLoader() + self._result: Optional[TestResult] = None # nothing needed - # self.addTests(loader.loadTestsFromTestCase(GenerateTestCase)) + self.addTests(loader.loadTestsFromTestCase(GenerateTestCase)) self.addTests(loader.loadTestsFromTestCase(NewTestCase)) # self.addTests(loader.loadTestsFromTestCase(VersionTestCase)) @@ -54,6 +47,9 @@ class CLITestSuite(unittest.TestSuite): def _cleanup(self): try: + if self._result is not None and (len(self._result.errors) > 0 or len(self._result.failures) > 0): + return + if os.path.exists(PLAYGROUND_PATH): shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH))) except Exception as e: @@ -61,5 +57,5 @@ class CLITestSuite(unittest.TestSuite): def run(self, *args): self._setup() - super().run(*args) + self._result = super().run(*args) self._cleanup() diff --git a/unittests/unittests_cli/generate_test_case.py b/unittests/unittests_cli/generate_test_case.py index 5a718416..53c03839 100644 --- a/unittests/unittests_cli/generate_test_case.py +++ b/unittests/unittests_cli/generate_test_case.py @@ -12,40 +12,30 @@ class GenerateTestCase(unittest.TestCase): file_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, f'generated_file{suffix}.py')) file_exists = os.path.exists(file_path) self.assertTrue(file_exists) - os.remove(file_path) def test_abc(self): - print(f'{__name__} generate abc') self._test_file('abc', '_abc') def test_class(self): - print(f'{__name__} generate class') self._test_file('class', '') def test_enum(self): - print(f'{__name__} generate enum') self._test_file('enum', '_enum') def test_pipe(self): - print(f'{__name__} generate pipe') self._test_file('pipe', '_pipe') def test_service(self): - print(f'{__name__} generate service') self._test_file('service', '_service') def test_settings(self): - print(f'{__name__} generate settings') self._test_file('settings', '_settings') def test_test_case(self): - print(f'{__name__} generate test_case') self._test_file('test_case', '_test_case') def test_thread(self): - print(f'{__name__} generate thread') self._test_file('thread', '_thread') def test_validator(self): - print(f'{__name__} generate validator') self._test_file('validator', '_validator') diff --git a/unittests/unittests_cli/new_test_case.py b/unittests/unittests_cli/new_test_case.py index 1309eb99..53072308 100644 --- a/unittests/unittests_cli/new_test_case.py +++ b/unittests/unittests_cli/new_test_case.py @@ -11,22 +11,42 @@ from unittests_shared.cli_commands import CLICommands class NewTestCase(unittest.TestCase): def setUp(self): - pass + os.chdir(os.path.abspath(PLAYGROUND_PATH)) def _test_project(self, project_type: str, name: str, *args): CLICommands.new(project_type, name, *args) - project_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, String.convert_to_snake_case(name))) + workspace_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, name)) + self.assertTrue(os.path.exists(workspace_path)) + + project_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, name, 'src', String.convert_to_snake_case(name))) self.assertTrue(os.path.exists(project_path)) - shutil.rmtree(project_path) + self.assertTrue(os.path.join(project_path, f'{name}.json')) + + def _test_sub_project(self, project_type: str, name: str, workspace_name: str, *args): + os.chdir(os.path.abspath(os.path.join(os.getcwd(), workspace_name))) + CLICommands.new(project_type, name, *args) + workspace_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, workspace_name)) + self.assertTrue(os.path.exists(workspace_path)) + + project_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, workspace_name, 'src', String.convert_to_snake_case(name))) + self.assertTrue(os.path.exists(project_path)) + self.assertTrue(os.path.join(project_path, f'{name}.json')) + os.chdir(os.path.abspath(os.path.join(os.getcwd(), '../'))) def test_console(self): - print(f'{__name__} new console') self._test_project('console', 'test-console', '--ab', '--s', '--sp') + def test_sub_console(self): + self._test_sub_project('console', 'test-sub-console', 'test-console', '--ab', '--s', '--sp') + def test_library(self): - print(f'{__name__} new library') self._test_project('library', 'test-library', '--ab', '--s', '--sp') + def test_sub_library(self): + self._test_sub_project('library', 'test-sub-library', 'test-console', '--ab', '--s', '--sp') + def test_unittest(self): - print(f'{__name__} new unittests') self._test_project('unittest', 'test-unittest', '--ab', '--s', '--sp') + + def test_sub_unittest(self): + self._test_sub_project('unittest', 'test-unittest', 'test-console', '--ab', '--s', '--sp') diff --git a/unittests/unittests_shared/cli_commands.py b/unittests/unittests_shared/cli_commands.py index 9465effd..da9c1ce7 100644 --- a/unittests/unittests_shared/cli_commands.py +++ b/unittests/unittests_shared/cli_commands.py @@ -9,7 +9,7 @@ class CLICommands: @staticmethod def _run(cmd: str, *args): env_vars = os.environ - # env_vars['CPL_IS_UNITTEST'] = 'YES' + env_vars['CPL_IS_UNITTEST'] = 'YES' command = ['python', CLI_PATH, cmd] for arg in args: command.append(arg) -- 2.45.1 From e0da77fd4b661f2501fc8e3494cf81b80fefbc33 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 22:24:19 +0200 Subject: [PATCH 096/140] Added new test condition for cpl new --- unittests/unittests_cli/new_test_case.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/unittests/unittests_cli/new_test_case.py b/unittests/unittests_cli/new_test_case.py index 53072308..1caa725e 100644 --- a/unittests/unittests_cli/new_test_case.py +++ b/unittests/unittests_cli/new_test_case.py @@ -21,6 +21,11 @@ class NewTestCase(unittest.TestCase): project_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, name, 'src', String.convert_to_snake_case(name))) self.assertTrue(os.path.exists(project_path)) self.assertTrue(os.path.join(project_path, f'{name}.json')) + self.assertTrue(os.path.join(project_path, f'application.py')) + self.assertTrue(os.path.join(project_path, f'main.py')) + self.assertTrue(os.path.join(project_path, f'startup.py')) + if project_type == 'unittest': + self.assertTrue(os.path.join(project_path, f'test_case_test_case.py')) def _test_sub_project(self, project_type: str, name: str, workspace_name: str, *args): os.chdir(os.path.abspath(os.path.join(os.getcwd(), workspace_name))) -- 2.45.1 From df7bd066299d447a87a51e3dc5a08d6813648a8a Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 22:51:29 +0200 Subject: [PATCH 097/140] Fixed additional argument & flag bug --- src/cpl_core/configuration/configuration.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index 6ea17122..28f40355 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -190,8 +190,7 @@ class Configuration(ConfigurationABC): # executable if isinstance(arg, ExecutableArgument): - if arg_str.startswith(arg.token) \ - and arg_str_without_token == arg.name or arg_str_without_token in arg.aliases: + if arg_str.startswith(arg.token) and arg_str_without_token == arg.name or arg_str_without_token in arg.aliases: executables.append(arg) self._handled_args.append(arg_str) self._parse_arguments(executables, arg_list[i + 1:], arg.console_arguments) @@ -202,8 +201,7 @@ class Configuration(ConfigurationABC): if arg.value_token in arg_str_without_value: arg_str_without_value = arg_str_without_token.split(arg.value_token)[0] - if arg_str.startswith(arg.token) \ - and arg_str_without_value == arg.name or arg_str_without_value in arg.aliases: + if arg_str.startswith(arg.token) and arg_str_without_value == arg.name or arg_str_without_value in arg.aliases: if arg.value_token != ' ': value = arg_str_without_token.split(arg.value_token)[1] else: @@ -216,10 +214,16 @@ class Configuration(ConfigurationABC): # flags elif isinstance(arg, FlagArgument): if arg_str.startswith(arg.token) and arg_str_without_token == arg.name or arg_str_without_token in arg.aliases: + if arg_str in self._additional_arguments: + self._additional_arguments.remove(arg_str) self._additional_arguments.append(arg.name) self._handled_args.append(arg_str) self._parse_arguments(executables, arg_list[i + 1:], arg.console_arguments) + # add left over values to args + if arg_str not in self._additional_arguments and arg_str not in self._handled_args: + self._additional_arguments.append(arg_str) + def add_environment_variables(self, prefix: str): for env_var in os.environ.keys(): if not env_var.startswith(prefix): @@ -305,10 +309,6 @@ class Configuration(ConfigurationABC): arg_list = sys.argv[1:] executables: list[ExecutableArgument] = [] self._parse_arguments(executables, arg_list, self._argument_types) - for arg_str in arg_list: - # add left over values to args - if arg_str not in self._additional_arguments and arg_str not in self._handled_args: - self._additional_arguments.append(arg_str) except Exception as e: Console.error('An error occurred while parsing arguments.') sys.exit() -- 2.45.1 From 49cce5fa1a87e42be3ba5cd087f20413d33b087b Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 22:52:03 +0200 Subject: [PATCH 098/140] Extended cpl new options --- src/cpl_cli/command/new_service.py | 17 ++++++++++++++--- src/cpl_cli/startup_argument_extension.py | 3 ++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/cpl_cli/command/new_service.py b/src/cpl_cli/command/new_service.py index f8b5781e..3f1857c2 100644 --- a/src/cpl_cli/command/new_service.py +++ b/src/cpl_cli/command/new_service.py @@ -276,18 +276,29 @@ class NewService(CommandABC): :param args: :return: """ + if 'nothing' in args: + self._use_async = False + self._use_application_api = False + self._use_startup = False + self._use_service_providing = False + if 'async' in args: + args.remove('async') + if 'application-base' in args: + args.remove('application-base') + if 'startup' in args: + args.remove('startup') + if 'service-providing' in args: + args.remove('service-providing') + if 'async' in args: self._use_async = True args.remove('async') - if 'application-base' in args: self._use_application_api = True args.remove('application-base') - if 'startup' in args: self._use_startup = True args.remove('startup') - if 'service-providing' in args: self._use_service_providing = True args.remove('service-providing') diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index 64710b11..01f89e2c 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -90,7 +90,8 @@ class StartupArgumentExtension(StartupExtensionABC): .add_console_argument(ArgumentTypeEnum.Flag, '--', 'async', ['a', 'A']) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'application-base', ['ab', 'AB']) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'startup', ['s', 'S']) \ - .add_console_argument(ArgumentTypeEnum.Flag, '--', 'service-providing', ['sp', 'SP']) + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'service-providing', ['sp', 'SP']) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'nothing', ['n', 'N']) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'publish', ['p', 'P'], PublishService, True, validators=[ProjectValidator]) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'remove', ['r', 'R'], RemoveService, True, validators=[WorkspaceValidator]) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) -- 2.45.1 From a593f34cde8437468d58eaf87154e32541c186ff Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 23:00:55 +0200 Subject: [PATCH 099/140] Build dev7 --- cpl-workspace.json | 8 +++++++- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- .../_templates/new/console/source/name/__init__.py | 4 ++-- .../_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- .../_templates/new/library/source/name/__init__.py | 4 ++-- .../_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/source/__init__.py | 4 ++-- .../_templates/new/unittest/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl-cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/validators/__init__.py | 4 ++-- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/cpl-core.json | 2 +- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/pipes/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- src/cpl_query/__init__.py | 4 ++-- src/cpl_query/_query/__init__.py | 4 ++-- src/cpl_query/cpl-query.json | 2 +- src/cpl_query/extension/__init__.py | 4 ++-- tools/set_pip_urls/set-pip-urls.json | 2 +- tools/set_version/set-version.json | 2 +- 46 files changed, 93 insertions(+), 87 deletions(-) diff --git a/cpl-workspace.json b/cpl-workspace.json index 8d2d7423..0ccfebed 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -83,7 +83,13 @@ "dd": "cpl deploy-dev $ARGS", "deploy-dev-cli": "cpl publish-cli; cpl upload-dev-cli", "deploy-dev-core": "cpl publish-core; cpl upload-dev-core", - "deploy-dev-query": "cpl publish-query; cpl upload-dev-query" + "deploy-dev-query": "cpl publish-query; cpl upload-dev-query", + + "dev-install": "cpl di-core; cpl di-cli; cpl di-query;", + "di": "cpl dev-install", + "di-core": "pip install cpl-query --pre --upgrade --extra-index-url https://pip-dev.sh-edraft.de", + "di-cli": "pip install cpl-query --pre --upgrade --extra-index-url https://pip-dev.sh-edraft.de", + "di-query": "pip install cpl-query --pre --upgrade --extra-index-url https://pip-dev.sh-edraft.de" } } } \ No newline at end of file diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 210b3e03..ed75bd53 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index d5752d0a..f5695c7b 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 36e4e03a..209ba198 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 444862d5..0df0a7e7 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index b46f91ee..9cb917a8 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 8ce45135..d814cc99 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 336bce89..e9383fb3 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 3cf58f40..286ec8f2 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 43f3a725..531f5e63 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 002a81b7..d4b30ae2 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index d32db8e1..2731bca4 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 401218db..ca97b9a9 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 9c3afc45..b7b84387 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/_templates/new/unittest/__init__.py b/src/cpl_cli/_templates/new/unittest/__init__.py index aa7e7935..1bff3dcb 100644 --- a/src/cpl_cli/_templates/new/unittest/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/_templates/new/unittest/source/__init__.py b/src/cpl_cli/_templates/new/unittest/source/__init__.py index 8bc89c89..357b901c 100644 --- a/src/cpl_cli/_templates/new/unittest/source/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/_templates/new/unittest/source/name/__init__.py b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py index 79609b9a..61ae70da 100644 --- a/src/cpl_cli/_templates/new/unittest/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index da2493e5..d9c5204c 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index c5796c33..37e94b7b 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index c86bacc3..f33f8123 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/cpl-cli.json b/src/cpl_cli/cpl-cli.json index cf804054..2cdbf03b 100644 --- a/src/cpl_cli/cpl-cli.json +++ b/src/cpl_cli/cpl-cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev6" + "Micro": "17.dev7" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev6" + "cpl-core>=2022.6.17.dev7" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index ba00f9e8..e8a7744c 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index e45859c9..a9989102 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 08b2fb5d..1cb5d1e2 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index e9654bb4..8633839c 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index 099c8f37..4d8ffbe9 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 244b9dc2..31853279 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 2641ee35..b5fc73a9 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index ccd0e484..10521167 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_core/cpl-core.json b/src/cpl_core/cpl-core.json index 525bfd9a..27b2dd82 100644 --- a/src/cpl_core/cpl-core.json +++ b/src/cpl_core/cpl-core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev6" + "Micro": "17.dev7" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index 0998767a..c93b6226 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 2abf24f8..140f1734 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index bc7b32ad..e23f0598 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index abdec782..3f12ff68 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 3575e3c7..fff7d821 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index b85f8d6b..1473adfb 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 6589ae0d..83708258 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index 20c70858..466f7209 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index d5b857df..d0e04f3b 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 0dc46e2b..c12a51e4 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index 5c98e23f..71ad1b14 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index eccaf9d5..b148157c 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/src/cpl_query/cpl-query.json b/src/cpl_query/cpl-query.json index 73259f0a..18772f6c 100644 --- a/src/cpl_query/cpl-query.json +++ b/src/cpl_query/cpl-query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev6" + "Micro": "17.dev7" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index 6dc5bf71..80fbf742 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev6' +__version__ = '2022.6.17.dev7' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev6') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') diff --git a/tools/set_pip_urls/set-pip-urls.json b/tools/set_pip_urls/set-pip-urls.json index a3c936e3..3c2405e6 100644 --- a/tools/set_pip_urls/set-pip-urls.json +++ b/tools/set_pip_urls/set-pip-urls.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17" + "cpl-core>=2022.6.17.dev7" ], "PythonVersion": ">=3.10.4", "PythonPath": {}, diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index da0b3d1d..ebb1bb8d 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev6", + "cpl-core>=2022.6.17.dev7", "gitpython==3.1.27" ], "PythonVersion": ">=3.10.4", -- 2.45.1 From 3a1630b68763d0958c8932292ede400c8c621ad2 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 23:01:23 +0200 Subject: [PATCH 100/140] Added force option to set-version --- tools/set_version/application.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/set_version/application.py b/tools/set_version/application.py index 83ea7b63..35948d7e 100644 --- a/tools/set_version/application.py +++ b/tools/set_version/application.py @@ -35,6 +35,11 @@ class Application(ApplicationABC): version = {} branch = "" suffix = "" + force = False + if '--force' in args: + args.remove('--force') + force = True + if len(args) > 1: Console.error(f'Unexpected argument(s): {", ".join(args[1:])}') return @@ -63,7 +68,7 @@ class Application(ApplicationABC): try: for project in self._workspace.projects: - if project not in diff_paths and String.convert_to_snake_case(project) not in diff_paths: + if project not in diff_paths and String.convert_to_snake_case(project) not in diff_paths and not force: Console.write_line(f'Skipping {project} due to missing changes') continue -- 2.45.1 From 56380763a9c5aed7e96045cfa8ffd162daee4b1d Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 23:01:50 +0200 Subject: [PATCH 101/140] Improved unittests --- unittests/unittests/unittests.json | 4 +-- unittests/unittests_cli/new_test_case.py | 28 ++++++++++++++++--- unittests/unittests_cli/unittests_cli.json | 6 ++-- unittests/unittests_core/unittests_core.json | 4 +-- .../unittests_query/unittests_query.json | 6 ++-- .../unittests_shared/unittests_shared.json | 4 +-- 6 files changed, 36 insertions(+), 16 deletions(-) diff --git a/unittests/unittests/unittests.json b/unittests/unittests/unittests.json index be802510..c9be15f0 100644 --- a/unittests/unittests/unittests.json +++ b/unittests/unittests/unittests.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev6" + "Micro": "17.dev7" }, "Author": "", "AuthorEmail": "", @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev6" + "cpl-core>=2022.6.17.dev7" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_cli/new_test_case.py b/unittests/unittests_cli/new_test_case.py index 1caa725e..fa2f8070 100644 --- a/unittests/unittests_cli/new_test_case.py +++ b/unittests/unittests_cli/new_test_case.py @@ -21,11 +21,22 @@ class NewTestCase(unittest.TestCase): project_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, name, 'src', String.convert_to_snake_case(name))) self.assertTrue(os.path.exists(project_path)) self.assertTrue(os.path.join(project_path, f'{name}.json')) - self.assertTrue(os.path.join(project_path, f'application.py')) self.assertTrue(os.path.join(project_path, f'main.py')) - self.assertTrue(os.path.join(project_path, f'startup.py')) + + if '--ab' in args: + self.assertTrue(os.path.isfile(os.path.join(project_path, f'application.py'))) + else: + self.assertFalse(os.path.isfile(os.path.join(project_path, f'application.py'))) + + if '--sp' in args: + self.assertTrue(os.path.isfile(os.path.join(project_path, f'startup.py'))) + else: + self.assertFalse(os.path.isfile(os.path.join(project_path, f'startup.py'))) + if project_type == 'unittest': - self.assertTrue(os.path.join(project_path, f'test_case_test_case.py')) + self.assertTrue(os.path.isfile(os.path.join(project_path, f'test_case.py'))) + else: + self.assertFalse(os.path.isfile(os.path.join(project_path, f'test_case.py'))) def _test_sub_project(self, project_type: str, name: str, workspace_name: str, *args): os.chdir(os.path.abspath(os.path.join(os.getcwd(), workspace_name))) @@ -41,6 +52,15 @@ class NewTestCase(unittest.TestCase): def test_console(self): self._test_project('console', 'test-console', '--ab', '--s', '--sp') + def test_console_without_sp(self): + self._test_project('console', 'test-console-without-sp', '--ab', '--s') + + def test_console_without_s(self): + self._test_project('console', 'test-console-without-s', '--ab') + + def test_console_without_ab(self): + self._test_project('console', 'test-console-without-ab', '--sp') + def test_sub_console(self): self._test_sub_project('console', 'test-sub-console', 'test-console', '--ab', '--s', '--sp') @@ -51,7 +71,7 @@ class NewTestCase(unittest.TestCase): self._test_sub_project('library', 'test-sub-library', 'test-console', '--ab', '--s', '--sp') def test_unittest(self): - self._test_project('unittest', 'test-unittest', '--ab', '--s', '--sp') + self._test_project('unittest', 'test-unittest', '--ab') def test_sub_unittest(self): self._test_sub_project('unittest', 'test-unittest', 'test-console', '--ab', '--s', '--sp') diff --git a/unittests/unittests_cli/unittests_cli.json b/unittests/unittests_cli/unittests_cli.json index bd09248a..c8681484 100644 --- a/unittests/unittests_cli/unittests_cli.json +++ b/unittests/unittests_cli/unittests_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev6" + "Micro": "17.dev7" }, "Author": "", "AuthorEmail": "", @@ -16,8 +16,8 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev6", - "cpl-cli>=2022.6.17.dev6" + "cpl-core>=2022.6.17.dev7", + "cpl-cli>=2022.6.17.dev7" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_core/unittests_core.json b/unittests/unittests_core/unittests_core.json index fdf7b69a..f8dedcd3 100644 --- a/unittests/unittests_core/unittests_core.json +++ b/unittests/unittests_core/unittests_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev6" + "Micro": "17.dev7" }, "Author": "", "AuthorEmail": "", @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev6" + "cpl-core>=2022.6.17.dev7" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_query/unittests_query.json b/unittests/unittests_query/unittests_query.json index 326c72d1..c4f1ed2e 100644 --- a/unittests/unittests_query/unittests_query.json +++ b/unittests/unittests_query/unittests_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev6" + "Micro": "17.dev7" }, "Author": "", "AuthorEmail": "", @@ -16,8 +16,8 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev6", - "cpl-query>=2022.6.17.dev6" + "cpl-core>=2022.6.17.dev7", + "cpl-query>=2022.6.17.dev7" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_shared/unittests_shared.json b/unittests/unittests_shared/unittests_shared.json index cab18497..9f28e0b7 100644 --- a/unittests/unittests_shared/unittests_shared.json +++ b/unittests/unittests_shared/unittests_shared.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev6" + "Micro": "17.dev7" }, "Author": "", "AuthorEmail": "", @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev6" + "cpl-core>=2022.6.17.dev7" ], "PythonVersion": ">=3.10.4", "PythonPath": { -- 2.45.1 From f9748cdb7674e6c7f9fd3c3e9088dc4aa19a9b11 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 23:03:18 +0200 Subject: [PATCH 102/140] Improved gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 1c6827be..104190c6 100644 --- a/.gitignore +++ b/.gitignore @@ -135,3 +135,6 @@ dmypy.json # IDE .idea/ PythonImportHelper-v2-Completion.json + +# cpl unittest stuff +unittests/test_*_playground -- 2.45.1 From 348fad24c7fbd665005634a35ce695e1c281b800 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 23:27:20 +0200 Subject: [PATCH 103/140] Build dev8 & improved set-version change handling --- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/command/new_service.py | 4 +++- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl-cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/validators/__init__.py | 4 ++-- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/cpl-core.json | 2 +- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/pipes/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- src/cpl_query/__init__.py | 4 ++-- src/cpl_query/_query/__init__.py | 4 ++-- src/cpl_query/cpl-query.json | 2 +- src/cpl_query/extension/__init__.py | 4 ++-- tools/set_pip_urls/set-pip-urls.json | 2 +- tools/set_version/application.py | 5 ++++- tools/set_version/set-version.json | 2 +- 47 files changed, 93 insertions(+), 88 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index ed75bd53..24f73b13 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index f5695c7b..68b96145 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 209ba198..3912c53b 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 0df0a7e7..545d4865 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 9cb917a8..61127d5d 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index d814cc99..dee5faba 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index e9383fb3..fc6d8264 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 286ec8f2..3cd4ecd6 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 531f5e63..0f704402 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index d4b30ae2..1b96a923 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 2731bca4..b1f2ad85 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index ca97b9a9..0a2b7e52 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index b7b84387..e719eea5 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/_templates/new/unittest/__init__.py b/src/cpl_cli/_templates/new/unittest/__init__.py index 1bff3dcb..1867ff43 100644 --- a/src/cpl_cli/_templates/new/unittest/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/_templates/new/unittest/source/__init__.py b/src/cpl_cli/_templates/new/unittest/source/__init__.py index 357b901c..539ebd18 100644 --- a/src/cpl_cli/_templates/new/unittest/source/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/_templates/new/unittest/source/name/__init__.py b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py index 61ae70da..1748abbc 100644 --- a/src/cpl_cli/_templates/new/unittest/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index d9c5204c..fafac1c5 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 37e94b7b..770f5f59 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/command/new_service.py b/src/cpl_cli/command/new_service.py index 3f1857c2..940d276a 100644 --- a/src/cpl_cli/command/new_service.py +++ b/src/cpl_cli/command/new_service.py @@ -45,6 +45,7 @@ class NewService(CommandABC): self._name: str = '' self._schematic: ProjectTypeEnum = ProjectTypeEnum.console + self._use_nothing: bool = False self._use_application_api: bool = False self._use_startup: bool = False self._use_service_providing: bool = False @@ -169,7 +170,7 @@ class NewService(CommandABC): Gets project information's from user :return: """ - if self._use_application_api or self._use_startup or self._use_service_providing or self._use_async: + if self._use_application_api or self._use_startup or self._use_service_providing or self._use_async or self._use_nothing: Console.set_foreground_color(ForegroundColorEnum.default) Console.write_line('Skipping question due to given flags') return @@ -277,6 +278,7 @@ class NewService(CommandABC): :return: """ if 'nothing' in args: + self._use_nothing = True self._use_async = False self._use_application_api = False self._use_startup = False diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index f33f8123..b1bf3345 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/cpl-cli.json b/src/cpl_cli/cpl-cli.json index 2cdbf03b..e5a3f1bb 100644 --- a/src/cpl_cli/cpl-cli.json +++ b/src/cpl_cli/cpl-cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev7" + "Micro": "17.dev8" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev7" + "cpl-core>=2022.6.17.dev8" ], "PythonVersion": ">=3.10", "PythonPath": {}, diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index e8a7744c..6cab5836 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index a9989102..08b202f2 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 1cb5d1e2..28e7ba67 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index 8633839c..0b4f1b7e 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index 4d8ffbe9..e985e960 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 31853279..d8ad0d85 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index b5fc73a9..8a802ae6 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index 10521167..5b16b63e 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_core/cpl-core.json b/src/cpl_core/cpl-core.json index 27b2dd82..37028396 100644 --- a/src/cpl_core/cpl-core.json +++ b/src/cpl_core/cpl-core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev7" + "Micro": "17.dev8" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index c93b6226..dfbe4285 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index 140f1734..a0e4504c 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index e23f0598..825fbd5f 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 3f12ff68..2251a9bf 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index fff7d821..0deabdb2 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 1473adfb..d0e23b68 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 83708258..719c40bb 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index 466f7209..0a2735af 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index d0e04f3b..b6e833e1 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index c12a51e4..4f51d293 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index 71ad1b14..f4bc40d2 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index b148157c..059cab97 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/src/cpl_query/cpl-query.json b/src/cpl_query/cpl-query.json index 18772f6c..355d295b 100644 --- a/src/cpl_query/cpl-query.json +++ b/src/cpl_query/cpl-query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev7" + "Micro": "17.dev8" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index 80fbf742..76f7b2c6 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev7' +__version__ = '2022.6.17.dev8' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev7') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') diff --git a/tools/set_pip_urls/set-pip-urls.json b/tools/set_pip_urls/set-pip-urls.json index 3c2405e6..644962a9 100644 --- a/tools/set_pip_urls/set-pip-urls.json +++ b/tools/set_pip_urls/set-pip-urls.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev7" + "cpl-core>=2022.6.17.dev8" ], "PythonVersion": ">=3.10.4", "PythonPath": {}, diff --git a/tools/set_version/application.py b/tools/set_version/application.py index 35948d7e..908d2d38 100644 --- a/tools/set_version/application.py +++ b/tools/set_version/application.py @@ -64,7 +64,10 @@ class Application(ApplicationABC): diff_paths = [] for file in self._git_service.get_diff_files(): - diff_paths.append(os.path.basename(os.path.dirname(file))) + if '/' in file: + diff_paths.append(file.split('/')[1]) + else: + diff_paths.append(os.path.basename(os.path.dirname(file))) try: for project in self._workspace.projects: diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index ebb1bb8d..5ac3d70b 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev7", + "cpl-core>=2022.6.17.dev8", "gitpython==3.1.27" ], "PythonVersion": ">=3.10.4", -- 2.45.1 From 162f06001acf863c4cac1eaef5bb949d240fe0a3 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 May 2022 23:27:32 +0200 Subject: [PATCH 104/140] Build dev8 & improved cpl new unittests --- unittests/unittests/unittests.json | 4 ++-- unittests/unittests_cli/new_test_case.py | 11 ++++++----- unittests/unittests_cli/unittests_cli.json | 6 +++--- unittests/unittests_core/unittests_core.json | 4 ++-- unittests/unittests_query/unittests_query.json | 6 +++--- unittests/unittests_shared/unittests_shared.json | 4 ++-- 6 files changed, 18 insertions(+), 17 deletions(-) diff --git a/unittests/unittests/unittests.json b/unittests/unittests/unittests.json index c9be15f0..1408486c 100644 --- a/unittests/unittests/unittests.json +++ b/unittests/unittests/unittests.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev7" + "Micro": "17.dev8" }, "Author": "", "AuthorEmail": "", @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev7" + "cpl-core>=2022.6.17.dev8" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_cli/new_test_case.py b/unittests/unittests_cli/new_test_case.py index fa2f8070..6b831117 100644 --- a/unittests/unittests_cli/new_test_case.py +++ b/unittests/unittests_cli/new_test_case.py @@ -28,7 +28,8 @@ class NewTestCase(unittest.TestCase): else: self.assertFalse(os.path.isfile(os.path.join(project_path, f'application.py'))) - if '--sp' in args: + # s depends on ab + if '--ab' in args and '--s' in args: self.assertTrue(os.path.isfile(os.path.join(project_path, f'startup.py'))) else: self.assertFalse(os.path.isfile(os.path.join(project_path, f'startup.py'))) @@ -50,10 +51,7 @@ class NewTestCase(unittest.TestCase): os.chdir(os.path.abspath(os.path.join(os.getcwd(), '../'))) def test_console(self): - self._test_project('console', 'test-console', '--ab', '--s', '--sp') - - def test_console_without_sp(self): - self._test_project('console', 'test-console-without-sp', '--ab', '--s') + self._test_project('console', 'test-console', '--ab', '--s') def test_console_without_s(self): self._test_project('console', 'test-console-without-s', '--ab') @@ -61,6 +59,9 @@ class NewTestCase(unittest.TestCase): def test_console_without_ab(self): self._test_project('console', 'test-console-without-ab', '--sp') + def test_console_without_anything(self): + self._test_project('console', 'test-console-without-anything', '--n') + def test_sub_console(self): self._test_sub_project('console', 'test-sub-console', 'test-console', '--ab', '--s', '--sp') diff --git a/unittests/unittests_cli/unittests_cli.json b/unittests/unittests_cli/unittests_cli.json index c8681484..5d0cc83f 100644 --- a/unittests/unittests_cli/unittests_cli.json +++ b/unittests/unittests_cli/unittests_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev7" + "Micro": "17.dev8" }, "Author": "", "AuthorEmail": "", @@ -16,8 +16,8 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev7", - "cpl-cli>=2022.6.17.dev7" + "cpl-core>=2022.6.17.dev8", + "cpl-cli>=2022.6.17.dev8" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_core/unittests_core.json b/unittests/unittests_core/unittests_core.json index f8dedcd3..0286b34d 100644 --- a/unittests/unittests_core/unittests_core.json +++ b/unittests/unittests_core/unittests_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev7" + "Micro": "17.dev8" }, "Author": "", "AuthorEmail": "", @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev7" + "cpl-core>=2022.6.17.dev8" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_query/unittests_query.json b/unittests/unittests_query/unittests_query.json index c4f1ed2e..bbb2aa8f 100644 --- a/unittests/unittests_query/unittests_query.json +++ b/unittests/unittests_query/unittests_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev7" + "Micro": "17.dev8" }, "Author": "", "AuthorEmail": "", @@ -16,8 +16,8 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev7", - "cpl-query>=2022.6.17.dev7" + "cpl-core>=2022.6.17.dev8", + "cpl-query>=2022.6.17.dev8" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_shared/unittests_shared.json b/unittests/unittests_shared/unittests_shared.json index 9f28e0b7..89c58db2 100644 --- a/unittests/unittests_shared/unittests_shared.json +++ b/unittests/unittests_shared/unittests_shared.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev7" + "Micro": "17.dev8" }, "Author": "", "AuthorEmail": "", @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev7" + "cpl-core>=2022.6.17.dev8" ], "PythonVersion": ">=3.10.4", "PythonPath": { -- 2.45.1 From ff5f9b833d2afdf12c10d78626b7c06c8ecb73f7 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Fri, 27 May 2022 18:07:12 +0200 Subject: [PATCH 105/140] Improved unittest for cpl new --- unittests/unittests_cli/new_test_case.py | 31 ++++++++++++++++++++++ unittests/unittests_shared/cli_commands.py | 13 ++++----- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/unittests/unittests_cli/new_test_case.py b/unittests/unittests_cli/new_test_case.py index 6b831117..3013e028 100644 --- a/unittests/unittests_cli/new_test_case.py +++ b/unittests/unittests_cli/new_test_case.py @@ -1,3 +1,4 @@ +import json import os import shutil import unittest @@ -50,6 +51,33 @@ class NewTestCase(unittest.TestCase): self.assertTrue(os.path.join(project_path, f'{name}.json')) os.chdir(os.path.abspath(os.path.join(os.getcwd(), '../'))) + def _test_sub_directory_project(self, project_type: str, directory: str, name: str, workspace_name: str, *args): + os.chdir(os.path.abspath(os.path.join(os.getcwd(), workspace_name))) + CLICommands.new(project_type, f'{directory}/{name}', *args) + workspace_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, workspace_name)) + self.assertTrue(os.path.exists(workspace_path)) + + project_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, workspace_name, f'src/{directory}', String.convert_to_snake_case(name))) + self.assertTrue(os.path.exists(project_path)) + project_file = os.path.join(project_path, f'{name}.json') + self.assertTrue(project_file) + project_json = {} + with open(project_file, 'r', encoding='utf-8') as cfg: + # load json + project_json = json.load(cfg) + cfg.close() + + project_settings = project_json['ProjectSettings'] + build_settings = project_json['BuildSettings'] + + self.assertEqual(project_settings['Name'], name) + self.assertEqual(build_settings['ProjectType'], 'library') + self.assertEqual(build_settings['OutputPath'], '../../dist') + self.assertEqual(build_settings['Main'], f'{String.convert_to_snake_case(name)}.main') + self.assertEqual(build_settings['EntryPoint'], name) + + os.chdir(os.path.abspath(os.path.join(os.getcwd(), '../'))) + def test_console(self): self._test_project('console', 'test-console', '--ab', '--s') @@ -71,6 +99,9 @@ class NewTestCase(unittest.TestCase): def test_sub_library(self): self._test_sub_project('library', 'test-sub-library', 'test-console', '--ab', '--s', '--sp') + def test_sub_directory_library(self): + self._test_sub_directory_project('library', 'directory', 'test-sub-library', 'test-console', '--ab', '--s', '--sp') + def test_unittest(self): self._test_project('unittest', 'test-unittest', '--ab') diff --git a/unittests/unittests_shared/cli_commands.py b/unittests/unittests_shared/cli_commands.py index da9c1ce7..5c04db12 100644 --- a/unittests/unittests_shared/cli_commands.py +++ b/unittests/unittests_shared/cli_commands.py @@ -7,9 +7,10 @@ from unittests_cli.constants import CLI_PATH class CLICommands: @staticmethod - def _run(cmd: str, *args): + def _run(cmd: str, *args, output=False): env_vars = os.environ - env_vars['CPL_IS_UNITTEST'] = 'YES' + env_vars['CPL_IS_UNITTEST'] = 'NO' if output else 'YES' + command = ['python', CLI_PATH, cmd] for arg in args: command.append(arg) @@ -17,9 +18,9 @@ class CLICommands: subprocess.run(command, env=env_vars) @classmethod - def generate(cls, schematic: str, name: str): - cls._run('generate', schematic, name) + def generate(cls, schematic: str, name: str, output=False): + cls._run('generate', schematic, name, output=output) @classmethod - def new(cls, project_type: str, name: str, *args): - cls._run('new', project_type, name, *args) + def new(cls, project_type: str, name: str, *args, output=False): + cls._run('new', project_type, name, *args, output=output) -- 2.45.1 From beadbf8e91ffbb68020e44c7dc89f94cf5fe62b8 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Fri, 27 May 2022 18:17:07 +0200 Subject: [PATCH 106/140] Improved set-version to ignore skipped deps --- tools/set_version/application.py | 4 +++- tools/set_version/version_setter_service.py | 12 +++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/tools/set_version/application.py b/tools/set_version/application.py index 908d2d38..f052750e 100644 --- a/tools/set_version/application.py +++ b/tools/set_version/application.py @@ -70,13 +70,15 @@ class Application(ApplicationABC): diff_paths.append(os.path.basename(os.path.dirname(file))) try: + skipped = [] for project in self._workspace.projects: if project not in diff_paths and String.convert_to_snake_case(project) not in diff_paths and not force: Console.write_line(f'Skipping {project} due to missing changes') + skipped.append(project) continue Console.write_line(f'Set dependencies {self._version_pipe.transform(version)} for {project}') - self._version_setter.set_dependencies(self._workspace.projects[project], version) + self._version_setter.set_dependencies(self._workspace.projects[project], version, skipped=skipped) if not project.startswith('cpl') and not project.startswith('unittest'): Console.write_line(f'Skipping {project}') continue diff --git a/tools/set_version/version_setter_service.py b/tools/set_version/version_setter_service.py index fcc3efaa..0ae94c93 100644 --- a/tools/set_version/version_setter_service.py +++ b/tools/set_version/version_setter_service.py @@ -1,5 +1,8 @@ import json import os +from string import ascii_letters + +from cpl_core.utils import String from cpl_core.console import Console @@ -30,7 +33,7 @@ class VersionSetterService: project_json['ProjectSettings']['Version'] = version self._write_file(file, project_json) - def set_dependencies(self, file: str, version: dict): + def set_dependencies(self, file: str, version: dict, skipped=None): project_json = self._read_file(file) dependencies = project_json['ProjectSettings']['Dependencies'] new_deps = [] @@ -40,6 +43,13 @@ class VersionSetterService: continue dep_version = dependency.split('=')[1] + dep_name = dependency.split('=')[0] + if dep_name[len(dep_name)-1] not in ascii_letters: + dep_name = dep_name[:len(dep_name)-1] + + if skipped is not None and (dep_name in skipped or String.convert_to_snake_case(dep_name) in skipped): + new_deps.append(dependency) + continue new_deps.append(dependency.replace(dep_version, f'{version["Major"]}.{version["Minor"]}.{version["Micro"]}')) project_json['ProjectSettings']['Dependencies'] = new_deps -- 2.45.1 From e5dd89093130c470503393b521f636cf4a2f1ae3 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Fri, 27 May 2022 18:57:00 +0200 Subject: [PATCH 107/140] Improved unittest for cpl new & Fixed subdirectory handling with cpl new --- src/cpl_cli/command/new_service.py | 42 +++++++++++++----------- unittests/unittests_cli/new_test_case.py | 3 +- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/cpl_cli/command/new_service.py b/src/cpl_cli/command/new_service.py index 940d276a..73f50ced 100644 --- a/src/cpl_cli/command/new_service.py +++ b/src/cpl_cli/command/new_service.py @@ -44,6 +44,7 @@ class NewService(CommandABC): self._project_json = {} self._name: str = '' + self._rel_path: str = '' self._schematic: ProjectTypeEnum = ProjectTypeEnum.console self._use_nothing: bool = False self._use_application_api: bool = False @@ -83,9 +84,10 @@ class NewService(CommandABC): for name in schematics: Console.write(f'\n\t{name} ') - def _create_project_settings(self, name: str): + def _create_project_settings(self): + self._rel_path = os.path.dirname(self._name) self._project_dict = { - ProjectSettingsNameEnum.name.value: name, + ProjectSettingsNameEnum.name.value: os.path.basename(self._name), ProjectSettingsNameEnum.version.value: { VersionSettingsNameEnum.major.value: '0', VersionSettingsNameEnum.minor.value: '0', @@ -113,15 +115,11 @@ class NewService(CommandABC): self._project.from_dict(self._project_dict) def _create_build_settings(self): - main = f'{String.convert_to_snake_case(self._project.name)}.main' - if self._schematic == ProjectTypeEnum.library.value: - main = f'{String.convert_to_snake_case(self._project.name)}.main' - self._build_dict = { BuildSettingsNameEnum.project_type.value: self._schematic, BuildSettingsNameEnum.source_path.value: '', BuildSettingsNameEnum.output_path.value: '../../dist', - BuildSettingsNameEnum.main.value: main, + BuildSettingsNameEnum.main.value: f'{String.convert_to_snake_case(self._project.name)}.main', BuildSettingsNameEnum.entry_point.value: self._project.name, BuildSettingsNameEnum.include_package_data.value: False, BuildSettingsNameEnum.included.value: [], @@ -151,15 +149,12 @@ class NewService(CommandABC): :return: """ if self._workspace is None: - project_path = os.path.join(self._env.working_directory, self._project.name) + project_path = os.path.join(self._env.working_directory, self._rel_path, self._project.name) else: - project_path = os.path.join( - self._env.working_directory, - 'src', - String.convert_to_snake_case(self._project.name) - ) + project_path = os.path.join(self._env.working_directory, 'src', self._rel_path, String.convert_to_snake_case(self._project.name)) if os.path.isdir(project_path) and len(os.listdir(project_path)) > 0: + Console.write_line(project_path) Console.error('Project path is not empty\n') return None @@ -195,7 +190,7 @@ class NewService(CommandABC): :param args: :return: """ - self._create_project_settings(self._name) + self._create_project_settings() self._create_build_settings() self._create_project_json() path = self._get_project_path() @@ -203,6 +198,9 @@ class NewService(CommandABC): return self._get_project_information() + project_name = self._project.name + if self._rel_path != '': + project_name = f'{self._rel_path}/{project_name}' try: ConsoleBuilder.build( path, @@ -210,7 +208,7 @@ class NewService(CommandABC): self._use_startup, self._use_service_providing, self._use_async, - self._project.name, + project_name, self._project_json, self._workspace ) @@ -223,7 +221,7 @@ class NewService(CommandABC): :param args: :return: """ - self._create_project_settings(self._name) + self._create_project_settings() self._create_build_settings() self._create_project_json() path = self._get_project_path() @@ -231,12 +229,15 @@ class NewService(CommandABC): return self._get_project_information(is_unittest=True) + project_name = self._project.name + if self._rel_path != '': + project_name = f'{self._rel_path}/{project_name}' try: UnittestBuilder.build( path, self._use_application_api, self._use_async, - self._project.name, + project_name, self._project_json, self._workspace ) @@ -249,7 +250,7 @@ class NewService(CommandABC): :param args: :return: """ - self._create_project_settings(self._name) + self._create_project_settings() self._create_build_settings() self._create_project_json() path = self._get_project_path() @@ -257,6 +258,9 @@ class NewService(CommandABC): return self._get_project_information() + project_name = self._project.name + if self._rel_path != '': + project_name = f'{self._rel_path}/{project_name}' try: LibraryBuilder.build( path, @@ -264,7 +268,7 @@ class NewService(CommandABC): self._use_startup, self._use_service_providing, self._use_async, - self._project.name, + project_name, self._project_json, self._workspace ) diff --git a/unittests/unittests_cli/new_test_case.py b/unittests/unittests_cli/new_test_case.py index 3013e028..94bb652c 100644 --- a/unittests/unittests_cli/new_test_case.py +++ b/unittests/unittests_cli/new_test_case.py @@ -60,8 +60,7 @@ class NewTestCase(unittest.TestCase): project_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, workspace_name, f'src/{directory}', String.convert_to_snake_case(name))) self.assertTrue(os.path.exists(project_path)) project_file = os.path.join(project_path, f'{name}.json') - self.assertTrue(project_file) - project_json = {} + self.assertTrue(os.path.exists(project_file)) with open(project_file, 'r', encoding='utf-8') as cfg: # load json project_json = json.load(cfg) -- 2.45.1 From 9fca2018e55c3e199d9067c88c006f047f76a2b7 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Fri, 27 May 2022 18:57:12 +0200 Subject: [PATCH 108/140] Build dev10 --- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl-cli.json | 2 +- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/validators/__init__.py | 4 ++-- unittests/unittests_cli/unittests_cli.json | 4 ++-- 25 files changed, 49 insertions(+), 49 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 24f73b13..51dbf5a5 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 68b96145..25bbfbe6 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 3912c53b..3e4b72ef 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index 545d4865..b284b1eb 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 61127d5d..1d55e913 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index dee5faba..2844a979 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index fc6d8264..9d5993a1 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 3cd4ecd6..73b5e446 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 0f704402..12090cae 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 1b96a923..528a3ed3 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index b1f2ad85..d8b99a19 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 0a2b7e52..2cb90ed0 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index e719eea5..e7b146b9 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/_templates/new/unittest/__init__.py b/src/cpl_cli/_templates/new/unittest/__init__.py index 1867ff43..70895e74 100644 --- a/src/cpl_cli/_templates/new/unittest/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/_templates/new/unittest/source/__init__.py b/src/cpl_cli/_templates/new/unittest/source/__init__.py index 539ebd18..85a5acfd 100644 --- a/src/cpl_cli/_templates/new/unittest/source/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/_templates/new/unittest/source/name/__init__.py b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py index 1748abbc..ba02fcf1 100644 --- a/src/cpl_cli/_templates/new/unittest/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index fafac1c5..4c6c7c23 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 770f5f59..64d2b8a1 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index b1bf3345..3ef7fcfd 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/cpl-cli.json b/src/cpl_cli/cpl-cli.json index e5a3f1bb..1f2c75d9 100644 --- a/src/cpl_cli/cpl-cli.json +++ b/src/cpl_cli/cpl-cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev8" + "Micro": "17.dev10" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 6cab5836..b059e535 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index 08b202f2..cb7586fa 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index 28e7ba67..fbcf7624 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index 0b4f1b7e..0b420956 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.17.dev10' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') diff --git a/unittests/unittests_cli/unittests_cli.json b/unittests/unittests_cli/unittests_cli.json index 5d0cc83f..eecb81c0 100644 --- a/unittests/unittests_cli/unittests_cli.json +++ b/unittests/unittests_cli/unittests_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev8" + "Micro": "17.dev10" }, "Author": "", "AuthorEmail": "", @@ -17,7 +17,7 @@ "LicenseDescription": "", "Dependencies": [ "cpl-core>=2022.6.17.dev8", - "cpl-cli>=2022.6.17.dev8" + "cpl-cli>=2022.6.17.dev10" ], "PythonVersion": ">=3.10.4", "PythonPath": { -- 2.45.1 From 9b56650d4b19e63cdef1b43998393ed683f9da1d Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Fri, 3 Jun 2022 23:35:07 +0200 Subject: [PATCH 109/140] Added cpl add test --- src/cpl_cli/main.py | 18 ++++---- unittests/unittests_cli/add_test_case.py | 50 ++++++++++++++++++++-- unittests/unittests_cli/cli_test_suite.py | 3 +- unittests/unittests_shared/cli_commands.py | 4 ++ 4 files changed, 61 insertions(+), 14 deletions(-) diff --git a/src/cpl_cli/main.py b/src/cpl_cli/main.py index 5ccac3ed..4b6959d9 100644 --- a/src/cpl_cli/main.py +++ b/src/cpl_cli/main.py @@ -41,12 +41,12 @@ def main(): if __name__ == '__main__': main() -# (( -# ( `) -# ; / , -# / \/ -# / | -# / ~/ -# / ) ) ~ edraft -# ___// | / -# `--' \_~-, +# (( +# ( `) +# ; / , +# / \/ +# / | +# / ~/ +# / ) ) ~ edraft +# ___// | / +# `--' \_~-, diff --git a/unittests/unittests_cli/add_test_case.py b/unittests/unittests_cli/add_test_case.py index c2f493b3..27964fbe 100644 --- a/unittests/unittests_cli/add_test_case.py +++ b/unittests/unittests_cli/add_test_case.py @@ -1,10 +1,52 @@ +import json +import os +import shutil import unittest +from cpl_core.utils import String + +from unittests_cli.constants import PLAYGROUND_PATH +from unittests_shared.cli_commands import CLICommands + class AddTestCase(unittest.TestCase): - def setUp(self): - pass + def __init__(self, methodName: str): + unittest.TestCase.__init__(self, methodName) + self._source = 'add-test-project' + self._target = 'add-test-library' + self._project_file = f'src/{String.convert_to_snake_case(self._source)}/{self._source}.json' - def test_equal(self): - pass + def _get_project_settings(self): + with open(os.path.join(os.getcwd(), self._project_file), 'r', encoding='utf-8') as cfg: + # load json + project_json = json.load(cfg) + cfg.close() + + return project_json + + def setUp(self): + os.chdir(os.path.abspath(PLAYGROUND_PATH)) + # create projects + CLICommands.new('console', self._source, '--ab', '--s') + os.chdir(os.path.join(os.getcwd(), self._source)) + CLICommands.new('console', self._target, '--ab', '--s') + + def cleanUp(self): + # remove projects + if not os.path.exists(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))): + return + + shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))) + + def test_add(self): + CLICommands.add(self._source, self._target) + settings = self._get_project_settings() + self.assertNotEqual(settings, {}) + self.assertIn('ProjectSettings', settings) + self.assertIn('ProjectReferences', settings['BuildSettings']) + self.assertIn('BuildSettings', settings) + self.assertIn( + f'../{String.convert_to_snake_case(self._target)}/{self._target}.json', + settings['BuildSettings']['ProjectReferences'] + ) diff --git a/unittests/unittests_cli/cli_test_suite.py b/unittests/unittests_cli/cli_test_suite.py index f1a7d7ea..ffc3eb95 100644 --- a/unittests/unittests_cli/cli_test_suite.py +++ b/unittests/unittests_cli/cli_test_suite.py @@ -5,6 +5,7 @@ import unittest from typing import Optional from unittest import TestResult +from unittests_cli.add_test_case import AddTestCase from unittests_cli.constants import PLAYGROUND_PATH from unittests_cli.generate_test_case import GenerateTestCase from unittests_cli.new_test_case import NewTestCase @@ -32,7 +33,7 @@ class CLITestSuite(unittest.TestSuite): # self.addTests(loader.loadTestsFromTestCase(UpdateTestCase)) # workspace needed - # self.addTests(loader.loadTestsFromTestCase(AddTestCase)) + self.addTests(loader.loadTestsFromTestCase(AddTestCase)) # self.addTests(loader.loadTestsFromTestCase(RemoveTestCase)) def _setup(self): diff --git a/unittests/unittests_shared/cli_commands.py b/unittests/unittests_shared/cli_commands.py index 5c04db12..68ed508c 100644 --- a/unittests/unittests_shared/cli_commands.py +++ b/unittests/unittests_shared/cli_commands.py @@ -17,6 +17,10 @@ class CLICommands: subprocess.run(command, env=env_vars) + @classmethod + def add(cls, source: str, target: str): + cls._run('add', source, target) + @classmethod def generate(cls, schematic: str, name: str, output=False): cls._run('generate', schematic, name, output=output) -- 2.45.1 From dad4913bcdb1a73575d6ef52c7aa2e229444ada7 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Fri, 3 Jun 2022 23:44:26 +0200 Subject: [PATCH 110/140] Added cpl remove test --- unittests/unittests_cli/cli_test_suite.py | 3 ++- unittests/unittests_cli/remove_test_case.py | 30 ++++++++++++++++++--- unittests/unittests_shared/cli_commands.py | 4 +++ 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/unittests/unittests_cli/cli_test_suite.py b/unittests/unittests_cli/cli_test_suite.py index ffc3eb95..58638afb 100644 --- a/unittests/unittests_cli/cli_test_suite.py +++ b/unittests/unittests_cli/cli_test_suite.py @@ -9,6 +9,7 @@ from unittests_cli.add_test_case import AddTestCase from unittests_cli.constants import PLAYGROUND_PATH from unittests_cli.generate_test_case import GenerateTestCase from unittests_cli.new_test_case import NewTestCase +from unittests_cli.remove_test_case import RemoveTestCase class CLITestSuite(unittest.TestSuite): @@ -34,7 +35,7 @@ class CLITestSuite(unittest.TestSuite): # workspace needed self.addTests(loader.loadTestsFromTestCase(AddTestCase)) - # self.addTests(loader.loadTestsFromTestCase(RemoveTestCase)) + self.addTests(loader.loadTestsFromTestCase(RemoveTestCase)) def _setup(self): try: diff --git a/unittests/unittests_cli/remove_test_case.py b/unittests/unittests_cli/remove_test_case.py index a600c283..a397c44f 100644 --- a/unittests/unittests_cli/remove_test_case.py +++ b/unittests/unittests_cli/remove_test_case.py @@ -1,10 +1,32 @@ +import json +import os +import shutil import unittest +from cpl_core.utils import String + +from unittests_cli.constants import PLAYGROUND_PATH +from unittests_shared.cli_commands import CLICommands + class RemoveTestCase(unittest.TestCase): - def setUp(self): - pass + def __init__(self, methodName: str): + unittest.TestCase.__init__(self, methodName) + self._source = 'add-test-project' + self._target = 'add-test-library' + self._project_file = f'src/{String.convert_to_snake_case(self._source)}/{self._source}.json' - def test_equal(self): - pass + def setUp(self): + os.chdir(os.path.abspath(PLAYGROUND_PATH)) + # create projects + CLICommands.new('console', self._source, '--ab', '--s') + os.chdir(os.path.join(os.getcwd(), self._source)) + CLICommands.new('console', self._target, '--ab', '--s') + + def test_remove(self): + CLICommands.remove(self._target) + path = os.path.abspath(os.path.join(os.getcwd(), f'../{String.convert_to_snake_case(self._target)}')) + self.assertTrue(os.path.exists(os.getcwd())) + self.assertTrue(os.path.exists(os.path.join(os.getcwd(), self._project_file))) + self.assertFalse(os.path.exists(path)) diff --git a/unittests/unittests_shared/cli_commands.py b/unittests/unittests_shared/cli_commands.py index 68ed508c..dd1e0029 100644 --- a/unittests/unittests_shared/cli_commands.py +++ b/unittests/unittests_shared/cli_commands.py @@ -28,3 +28,7 @@ class CLICommands: @classmethod def new(cls, project_type: str, name: str, *args, output=False): cls._run('new', project_type, name, *args, output=output) + + @classmethod + def remove(cls, project: str): + cls._run('remove', project) -- 2.45.1 From 77c560b40cfcfb774dc51f906bb1a8474655d4e2 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Fri, 3 Jun 2022 23:46:03 +0200 Subject: [PATCH 111/140] Improved cpl remove test --- unittests/unittests_cli/remove_test_case.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/unittests/unittests_cli/remove_test_case.py b/unittests/unittests_cli/remove_test_case.py index a397c44f..b61a5d3f 100644 --- a/unittests/unittests_cli/remove_test_case.py +++ b/unittests/unittests_cli/remove_test_case.py @@ -17,6 +17,14 @@ class RemoveTestCase(unittest.TestCase): self._target = 'add-test-library' self._project_file = f'src/{String.convert_to_snake_case(self._source)}/{self._source}.json' + def _get_project_settings(self): + with open(os.path.join(os.getcwd(), self._project_file), 'r', encoding='utf-8') as cfg: + # load json + project_json = json.load(cfg) + cfg.close() + + return project_json + def setUp(self): os.chdir(os.path.abspath(PLAYGROUND_PATH)) # create projects @@ -30,3 +38,11 @@ class RemoveTestCase(unittest.TestCase): self.assertTrue(os.path.exists(os.getcwd())) self.assertTrue(os.path.exists(os.path.join(os.getcwd(), self._project_file))) self.assertFalse(os.path.exists(path)) + settings = self._get_project_settings() + self.assertIn('ProjectSettings', settings) + self.assertIn('ProjectReferences', settings['BuildSettings']) + self.assertIn('BuildSettings', settings) + self.assertNotIn( + f'../{String.convert_to_snake_case(self._target)}/{self._target}.json', + settings['BuildSettings']['ProjectReferences'] + ) -- 2.45.1 From 89d591ce0a827aeed91ef0a35bc960316babb7e8 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sat, 4 Jun 2022 00:36:31 +0200 Subject: [PATCH 112/140] Added project reference handling in cpl remove --- src/cpl_cli/command/remove_service.py | 54 +++++++++++++++++++-- unittests/unittests_cli/remove_test_case.py | 1 + 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/src/cpl_cli/command/remove_service.py b/src/cpl_cli/command/remove_service.py index 42462219..87db8b7a 100644 --- a/src/cpl_cli/command/remove_service.py +++ b/src/cpl_cli/command/remove_service.py @@ -3,12 +3,14 @@ import shutil import json import textwrap +from cpl_cli.configuration.settings_helper import SettingsHelper + from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.console.console import Console from cpl_core.console.foreground_color_enum import ForegroundColorEnum from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC from cpl_cli.command_abc import CommandABC -from cpl_cli.configuration import WorkspaceSettings, WorkspaceSettingsNameEnum +from cpl_cli.configuration import WorkspaceSettings, WorkspaceSettingsNameEnum, BuildSettingsNameEnum, ProjectSettings, BuildSettings class RemoveService(CommandABC): @@ -68,6 +70,50 @@ class RemoveService(CommandABC): self._create_file(path, ws_dict) + def _get_project_settings(self, project: str) -> dict: + with open(os.path.join(os.getcwd(), self._workspace.projects[project]), 'r', encoding='utf-8') as cfg: + # load json + project_json = json.load(cfg) + cfg.close() + + return project_json + + def _write_project_settings(self, project: str, project_settings: dict, build_settings: dict): + with open(os.path.join(os.getcwd(), self._workspace.projects[project]), 'w', encoding='utf-8') as file: + file.write(json.dumps({ + ProjectSettings.__name__: project_settings, + BuildSettings.__name__: build_settings + }, indent=2)) + file.close() + + def _find_deps_in_projects(self, project_name: str, rel_path: str): + for project in self._workspace.projects: + if project == project_name: + continue + + project_settings = self._get_project_settings(project) + if BuildSettings.__name__ not in project_settings or BuildSettingsNameEnum.project_references.value not in project_settings[BuildSettings.__name__]: + continue + + ref_to_delete = '' + for ref in project_settings[BuildSettings.__name__][BuildSettingsNameEnum.project_references.value]: + if os.path.basename(ref) == f'{project_name}.json': + ref_to_delete = ref + + if ref_to_delete not in project_settings[BuildSettings.__name__][BuildSettingsNameEnum.project_references.value]: + continue + + project_settings[BuildSettings.__name__][BuildSettingsNameEnum.project_references.value].remove(ref_to_delete) + Console.spinner( + f'Removing {project_name} from {project}', + self._write_project_settings, + project, + project_settings[ProjectSettings.__name__], + project_settings[BuildSettings.__name__], + text_foreground_color=ForegroundColorEnum.green, + spinner_foreground_color=ForegroundColorEnum.cyan + ) + def execute(self, args: list[str]): """ Entry point of command @@ -88,15 +134,17 @@ class RemoveService(CommandABC): Console.error(f'Project {project_name} is the default project.') return - src_path = os.path.abspath(os.path.dirname(self._workspace.projects[project_name])) + src_path = os.path.dirname(self._workspace.projects[project_name]) Console.spinner( f'Removing {src_path}', self._remove_sources, - src_path, + os.path.abspath(src_path), text_foreground_color=ForegroundColorEnum.green, spinner_foreground_color=ForegroundColorEnum.cyan ) + self._find_deps_in_projects(project_name, src_path) + del self._workspace.projects[project_name] path = 'cpl-workspace.json' Console.spinner( diff --git a/unittests/unittests_cli/remove_test_case.py b/unittests/unittests_cli/remove_test_case.py index b61a5d3f..e53d9f1a 100644 --- a/unittests/unittests_cli/remove_test_case.py +++ b/unittests/unittests_cli/remove_test_case.py @@ -31,6 +31,7 @@ class RemoveTestCase(unittest.TestCase): CLICommands.new('console', self._source, '--ab', '--s') os.chdir(os.path.join(os.getcwd(), self._source)) CLICommands.new('console', self._target, '--ab', '--s') + CLICommands.add(self._source, self._target) def test_remove(self): CLICommands.remove(self._target) -- 2.45.1 From c0789cf4f7a6ed5640de4823f50375246a830f28 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Tue, 21 Jun 2022 08:56:26 +0200 Subject: [PATCH 113/140] Added tests for install command --- src/cpl_cli/command/version_service.py | 1 - unittests/unittests_cli/cli_test_suite.py | 3 +- unittests/unittests_cli/install_test_case.py | 85 +++++++++++++++++++- unittests/unittests_shared/cli_commands.py | 4 + 4 files changed, 87 insertions(+), 6 deletions(-) diff --git a/src/cpl_cli/command/version_service.py b/src/cpl_cli/command/version_service.py index 5e93660f..7b74b007 100644 --- a/src/cpl_cli/command/version_service.py +++ b/src/cpl_cli/command/version_service.py @@ -5,7 +5,6 @@ import pkg_resources import textwrap import cpl_cli -import cpl_core from cpl_core.console.console import Console from cpl_core.console.foreground_color_enum import ForegroundColorEnum from cpl_cli.command_abc import CommandABC diff --git a/unittests/unittests_cli/cli_test_suite.py b/unittests/unittests_cli/cli_test_suite.py index 58638afb..626902b4 100644 --- a/unittests/unittests_cli/cli_test_suite.py +++ b/unittests/unittests_cli/cli_test_suite.py @@ -8,6 +8,7 @@ from unittest import TestResult from unittests_cli.add_test_case import AddTestCase from unittests_cli.constants import PLAYGROUND_PATH from unittests_cli.generate_test_case import GenerateTestCase +from unittests_cli.install_test_case import InstallTestCase from unittests_cli.new_test_case import NewTestCase from unittests_cli.remove_test_case import RemoveTestCase @@ -26,7 +27,7 @@ class CLITestSuite(unittest.TestSuite): # project needed # self.addTests(loader.loadTestsFromTestCase(BuildTestCase)) - # self.addTests(loader.loadTestsFromTestCase(InstallTestCase)) + self.addTests(loader.loadTestsFromTestCase(InstallTestCase)) # self.addTests(loader.loadTestsFromTestCase(PublishTestCase)) # self.addTests(loader.loadTestsFromTestCase(RunTestCase)) # self.addTests(loader.loadTestsFromTestCase(StartTestCase)) diff --git a/unittests/unittests_cli/install_test_case.py b/unittests/unittests_cli/install_test_case.py index 0271f37b..bb992206 100644 --- a/unittests/unittests_cli/install_test_case.py +++ b/unittests/unittests_cli/install_test_case.py @@ -1,10 +1,87 @@ +import json +import os +import shutil import unittest +import pkg_resources + +from cpl_core.utils import String + +from unittests_cli.constants import PLAYGROUND_PATH +from unittests_shared.cli_commands import CLICommands + class InstallTestCase(unittest.TestCase): - def setUp(self): - pass + def __init__(self, methodName: str): + unittest.TestCase.__init__(self, methodName) + self._source = 'install-test-source' + self._project_file = f'src/{String.convert_to_snake_case(self._source)}/{self._source}.json' + + def _get_project_settings(self): + with open(os.path.join(os.getcwd(), self._project_file), 'r', encoding='utf-8') as cfg: + # load json + project_json = json.load(cfg) + cfg.close() + + return project_json + + def _save_project_settings(self, settings: dict): + with open(os.path.join(os.getcwd(), self._project_file), 'w', encoding='utf-8') as project_file: + project_file.write(json.dumps(settings, indent=2)) + project_file.close() + + def setUp(self): + os.chdir(os.path.abspath(PLAYGROUND_PATH)) + # create projects + CLICommands.new('console', self._source, '--ab', '--s') + os.chdir(os.path.join(os.getcwd(), self._source)) + + def cleanUp(self): + # remove projects + if not os.path.exists(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))): + return + + shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))) + + def test_install_package(self): + version = '1.7.3' + package_name = 'discord.py' + package = f'{package_name}=={version}' + CLICommands.install(package) + settings = self._get_project_settings() + self.assertNotEqual(settings, {}) + self.assertIn('ProjectSettings', settings) + self.assertIn('Dependencies', settings['ProjectSettings']) + self.assertIn( + package, + settings['ProjectSettings']['Dependencies'] + ) + packages = dict(tuple(str(ws).split()) for ws in pkg_resources.working_set) + self.assertIn(package_name, packages) + self.assertEqual(version, packages[package_name]) + + def test_install_all(self): + version = '1.7.3' + package_name = 'discord.py' + package = f'{package_name}=={version}' + settings = self._get_project_settings() + self.assertIn('ProjectSettings', settings) + self.assertIn('Dependencies', settings['ProjectSettings']) + self.assertNotIn( + package, + settings['ProjectSettings']['Dependencies'] + ) + settings['ProjectSettings']['Dependencies'].append(package) + self._save_project_settings(settings) + CLICommands.install() + new_settings = self._get_project_settings() + self.assertEqual(settings, new_settings) + self.assertIn('ProjectSettings', new_settings) + self.assertIn('Dependencies', new_settings['ProjectSettings']) + self.assertIn( + package, + new_settings['ProjectSettings']['Dependencies'] + ) + - def test_equal(self): - pass diff --git a/unittests/unittests_shared/cli_commands.py b/unittests/unittests_shared/cli_commands.py index dd1e0029..cccfb675 100644 --- a/unittests/unittests_shared/cli_commands.py +++ b/unittests/unittests_shared/cli_commands.py @@ -25,6 +25,10 @@ class CLICommands: def generate(cls, schematic: str, name: str, output=False): cls._run('generate', schematic, name, output=output) + @classmethod + def install(cls, package: str = '', output=False): + cls._run('install', package, output=output) + @classmethod def new(cls, project_type: str, name: str, *args, output=False): cls._run('new', project_type, name, *args, output=output) -- 2.45.1 From 2925788d019ebe066007afbfcb6ebf27af62caf5 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Tue, 21 Jun 2022 09:24:56 +0200 Subject: [PATCH 114/140] Added tests for uninstall command --- src/cpl_cli/command/uninstall_service.py | 6 +- unittests/unittests_cli/cli_test_suite.py | 16 +++++- .../unittests_cli/uninstall_test_case.py | 56 +++++++++++++++++-- unittests/unittests_shared/cli_commands.py | 4 ++ 4 files changed, 74 insertions(+), 8 deletions(-) diff --git a/src/cpl_cli/command/uninstall_service.py b/src/cpl_cli/command/uninstall_service.py index c5c132c4..f2b88d5f 100644 --- a/src/cpl_cli/command/uninstall_service.py +++ b/src/cpl_cli/command/uninstall_service.py @@ -35,6 +35,7 @@ class UninstallService(CommandABC): self._is_simulating = False self._is_virtual = False + self._project_file = f'{self._project_settings.name}.json' @property def help_message(self) -> str: @@ -59,8 +60,7 @@ class UninstallService(CommandABC): Console.error(f'Expected package') Console.error(f'Usage: cpl uninstall ') return - - + if '--virtual' in args: self._is_virtual = True args.remove('--virtual') @@ -110,7 +110,7 @@ class UninstallService(CommandABC): ProjectSettings.__name__: SettingsHelper.get_project_settings_dict(self._project_settings), BuildSettings.__name__: SettingsHelper.get_build_settings_dict(self._build_settings) } - with open(os.path.join(self._env.working_directory, f'{self._config.get_configuration("ProjectName")}.json'), 'w') as project_file: + with open(os.path.join(self._env.working_directory, self._project_file), 'w') as project_file: project_file.write(json.dumps(config, indent=2)) project_file.close() diff --git a/unittests/unittests_cli/cli_test_suite.py b/unittests/unittests_cli/cli_test_suite.py index 626902b4..a0e49f09 100644 --- a/unittests/unittests_cli/cli_test_suite.py +++ b/unittests/unittests_cli/cli_test_suite.py @@ -11,6 +11,7 @@ from unittests_cli.generate_test_case import GenerateTestCase from unittests_cli.install_test_case import InstallTestCase from unittests_cli.new_test_case import NewTestCase from unittests_cli.remove_test_case import RemoveTestCase +from unittests_cli.uninstall_test_case import UninstallTestCase class CLITestSuite(unittest.TestSuite): @@ -23,15 +24,28 @@ class CLITestSuite(unittest.TestSuite): # nothing needed self.addTests(loader.loadTestsFromTestCase(GenerateTestCase)) self.addTests(loader.loadTestsFromTestCase(NewTestCase)) + + # compare console output # self.addTests(loader.loadTestsFromTestCase(VersionTestCase)) # project needed + # compare two file states/directory content # self.addTests(loader.loadTestsFromTestCase(BuildTestCase)) + self.addTests(loader.loadTestsFromTestCase(InstallTestCase)) + + # compare two file states/directory content # self.addTests(loader.loadTestsFromTestCase(PublishTestCase)) + + # check if application was executed properly # self.addTests(loader.loadTestsFromTestCase(RunTestCase)) + + # check if application was executed properly and file watcher is working # self.addTests(loader.loadTestsFromTestCase(StartTestCase)) - # self.addTests(loader.loadTestsFromTestCase(UninstallTestCase)) + + self.addTests(loader.loadTestsFromTestCase(UninstallTestCase)) + + # check in project settings if package is updated # self.addTests(loader.loadTestsFromTestCase(UpdateTestCase)) # workspace needed diff --git a/unittests/unittests_cli/uninstall_test_case.py b/unittests/unittests_cli/uninstall_test_case.py index f3d1ae15..66bde537 100644 --- a/unittests/unittests_cli/uninstall_test_case.py +++ b/unittests/unittests_cli/uninstall_test_case.py @@ -1,10 +1,58 @@ +import json +import os +import shutil +import time import unittest +import pkg_resources + +from cpl_core.utils import String + +from unittests_cli.constants import PLAYGROUND_PATH +from unittests_shared.cli_commands import CLICommands + class UninstallTestCase(unittest.TestCase): - def setUp(self): - pass + def __init__(self, methodName: str): + unittest.TestCase.__init__(self, methodName) + self._source = 'uninstall-test-source' + self._project_file = f'src/{String.convert_to_snake_case(self._source)}/{self._source}.json' + self._version = '1.7.3' + self._package_name = 'discord.py' + self._package = f'{self._package_name}=={self._version}' - def test_equal(self): - pass + def _get_project_settings(self): + with open(os.path.join(os.getcwd(), self._project_file), 'r', encoding='utf-8') as cfg: + # load json + project_json = json.load(cfg) + cfg.close() + + return project_json + + def setUp(self): + os.chdir(os.path.abspath(PLAYGROUND_PATH)) + # create projects + CLICommands.new('console', self._source, '--ab', '--s') + os.chdir(os.path.join(os.getcwd(), self._source)) + CLICommands.install(self._package) + + def cleanUp(self): + # remove projects + if not os.path.exists(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))): + return + + shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))) + + def test_uninstall(self): + CLICommands.uninstall(self._package) + settings = self._get_project_settings() + self.assertNotEqual(settings, {}) + self.assertIn('ProjectSettings', settings) + self.assertIn('Dependencies', settings['ProjectSettings']) + self.assertNotIn( + self._package, + settings['ProjectSettings']['Dependencies'] + ) + packages = dict(tuple(str(ws).split()) for ws in pkg_resources.working_set) + self.assertNotIn(self._package_name, packages) diff --git a/unittests/unittests_shared/cli_commands.py b/unittests/unittests_shared/cli_commands.py index cccfb675..41ab4b4c 100644 --- a/unittests/unittests_shared/cli_commands.py +++ b/unittests/unittests_shared/cli_commands.py @@ -36,3 +36,7 @@ class CLICommands: @classmethod def remove(cls, project: str): cls._run('remove', project) + + @classmethod + def uninstall(cls, package: str, output=False): + cls._run('uninstall', package, output=output) -- 2.45.1 From 32478926c8a0b2659d5cee1dd87aff1383371e76 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 23 Jun 2022 21:49:44 +0200 Subject: [PATCH 115/140] Added tests for build command --- src/cpl_cli/publish/publisher_service.py | 4 +- unittests/unittests_cli/build_test_case.py | 86 +++++++++++++++++++++- unittests/unittests_cli/cli_test_suite.py | 48 ++++++------ unittests/unittests_shared/cli_commands.py | 4 + 4 files changed, 115 insertions(+), 27 deletions(-) diff --git a/src/cpl_cli/publish/publisher_service.py b/src/cpl_cli/publish/publisher_service.py index dc85215c..64988545 100644 --- a/src/cpl_cli/publish/publisher_service.py +++ b/src/cpl_cli/publish/publisher_service.py @@ -426,7 +426,7 @@ class PublisherService(PublisherABC): :return: """ self._env.set_working_directory(os.path.join(self._env.working_directory, '../')) - self.exclude(f'*/{self._config.get_configuration("ProjectName")}.json') + self.exclude(f'*/{self._project_settings.name}.json') self._output_path = os.path.abspath(os.path.join(self._output_path, self._project_settings.name, 'build')) Console.spinner('Reading source files:', self._read_sources, text_foreground_color=ForegroundColorEnum.green, @@ -449,7 +449,7 @@ class PublisherService(PublisherABC): :return: """ self._env.set_working_directory(os.path.join(self._env.working_directory, '../')) - self.exclude(f'*/{self._config.get_configuration("ProjectName")}.json') + self.exclude(f'*/{self._project_settings.name}.json') self._output_path = os.path.abspath(os.path.join(self._output_path, self._project_settings.name, 'publish')) Console.write_line('Build:') diff --git a/unittests/unittests_cli/build_test_case.py b/unittests/unittests_cli/build_test_case.py index 2456c099..e35d5cbd 100644 --- a/unittests/unittests_cli/build_test_case.py +++ b/unittests/unittests_cli/build_test_case.py @@ -1,10 +1,88 @@ +import filecmp +import json +import os +import shutil import unittest +from cpl_core.utils import String + +from unittests_cli.constants import PLAYGROUND_PATH +from unittests_shared.cli_commands import CLICommands + class BuildTestCase(unittest.TestCase): - def setUp(self): - pass + def __init__(self, methodName: str): + unittest.TestCase.__init__(self, methodName) + self._source = 'build-test-source' + self._project_file = f'src/{String.convert_to_snake_case(self._source)}/{self._source}.json' - def test_equal(self): - pass + def _get_project_settings(self): + with open(os.path.join(os.getcwd(), self._project_file), 'r', encoding='utf-8') as cfg: + # load json + project_json = json.load(cfg) + cfg.close() + + return project_json + + def _save_project_settings(self, settings: dict): + with open(os.path.join(os.getcwd(), self._project_file), 'w', encoding='utf-8') as project_file: + project_file.write(json.dumps(settings, indent=2)) + project_file.close() + + def setUp(self): + os.chdir(os.path.abspath(PLAYGROUND_PATH)) + # create projects + CLICommands.new('console', self._source, '--ab', '--s') + os.chdir(os.path.join(os.getcwd(), self._source)) + + def cleanUp(self): + # remove projects + if not os.path.exists(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))): + return + + shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))) + + def _are_dir_trees_equal(self, dir1, dir2): + """ + found at https://stackoverflow.com/questions/4187564/recursively-compare-two-directories-to-ensure-they-have-the-same-files-and-subdi + + Compare two directories recursively. Files in each directory are + assumed to be equal if their names and contents are equal. + + @param dir1: First directory path + @param dir2: Second directory path + + @return: True if the directory trees are the same and + there were no errors while accessing the directories or files, + False otherwise. + """ + + dirs_cmp = filecmp.dircmp(dir1, dir2) + if len(dirs_cmp.left_only) > 0 or len(dirs_cmp.right_only) > 0 or len(dirs_cmp.funny_files) > 0: + return False + + (_, mismatch, errors) = filecmp.cmpfiles(dir1, dir2, dirs_cmp.common_files, shallow=False) + + if len(mismatch) > 0 or len(errors) > 0: + return False + + for common_dir in dirs_cmp.common_dirs: + new_dir1 = os.path.join(dir1, common_dir) + new_dir2 = os.path.join(dir2, common_dir) + if not self._are_dir_trees_equal(new_dir1, new_dir2): + return False + + return True + + def test_build(self): + CLICommands.build() + dist_path = './dist' + full_dist_path = f'{dist_path}/{self._source}/build/{String.convert_to_snake_case(self._source)}' + self.assertTrue(os.path.exists(dist_path)) + self.assertTrue(os.path.exists(full_dist_path)) + self.assertFalse(self._are_dir_trees_equal(f'./src/{String.convert_to_snake_case(self._source)}', full_dist_path)) + with open(f'{full_dist_path}/{self._source}.json', 'w') as file: + file.write(json.dumps(self._get_project_settings(), indent=2)) + file.close() + self.assertTrue(self._are_dir_trees_equal(f'./src/{String.convert_to_snake_case(self._source)}', full_dist_path)) diff --git a/unittests/unittests_cli/cli_test_suite.py b/unittests/unittests_cli/cli_test_suite.py index a0e49f09..fac4682b 100644 --- a/unittests/unittests_cli/cli_test_suite.py +++ b/unittests/unittests_cli/cli_test_suite.py @@ -6,12 +6,14 @@ from typing import Optional from unittest import TestResult from unittests_cli.add_test_case import AddTestCase +from unittests_cli.build_test_case import BuildTestCase from unittests_cli.constants import PLAYGROUND_PATH from unittests_cli.generate_test_case import GenerateTestCase from unittests_cli.install_test_case import InstallTestCase from unittests_cli.new_test_case import NewTestCase from unittests_cli.remove_test_case import RemoveTestCase from unittests_cli.uninstall_test_case import UninstallTestCase +from unittests_cli.update_test_case import UpdateTestCase class CLITestSuite(unittest.TestSuite): @@ -21,36 +23,40 @@ class CLITestSuite(unittest.TestSuite): loader = unittest.TestLoader() self._result: Optional[TestResult] = None - # nothing needed - self.addTests(loader.loadTestsFromTestCase(GenerateTestCase)) - self.addTests(loader.loadTestsFromTestCase(NewTestCase)) - # compare console output - # self.addTests(loader.loadTestsFromTestCase(VersionTestCase)) + active_tests = [ + # nothing needed + GenerateTestCase, + NewTestCase, - # project needed - # compare two file states/directory content - # self.addTests(loader.loadTestsFromTestCase(BuildTestCase)) + # compare console output + # VersionTestCase, - self.addTests(loader.loadTestsFromTestCase(InstallTestCase)) + # project needed + # compare two file states/directory content + BuildTestCase, + InstallTestCase, - # compare two file states/directory content - # self.addTests(loader.loadTestsFromTestCase(PublishTestCase)) + # compare two file states/directory content + # PublishTestCase, - # check if application was executed properly - # self.addTests(loader.loadTestsFromTestCase(RunTestCase)) + # check if application was executed properly + # RunTestCase, - # check if application was executed properly and file watcher is working - # self.addTests(loader.loadTestsFromTestCase(StartTestCase)) + # check if application was executed properly and file watcher is working + # StartTestCase, - self.addTests(loader.loadTestsFromTestCase(UninstallTestCase)) + UninstallTestCase, + # check in project settings if package is updated + # UpdateTestCase, - # check in project settings if package is updated - # self.addTests(loader.loadTestsFromTestCase(UpdateTestCase)) + # workspace needed + AddTestCase, + RemoveTestCase + ] - # workspace needed - self.addTests(loader.loadTestsFromTestCase(AddTestCase)) - self.addTests(loader.loadTestsFromTestCase(RemoveTestCase)) + for test in active_tests: + self.addTests(loader.loadTestsFromTestCase(test)) def _setup(self): try: diff --git a/unittests/unittests_shared/cli_commands.py b/unittests/unittests_shared/cli_commands.py index 41ab4b4c..431e6d13 100644 --- a/unittests/unittests_shared/cli_commands.py +++ b/unittests/unittests_shared/cli_commands.py @@ -21,6 +21,10 @@ class CLICommands: def add(cls, source: str, target: str): cls._run('add', source, target) + @classmethod + def build(cls): + cls._run('build') + @classmethod def generate(cls, schematic: str, name: str, output=False): cls._run('generate', schematic, name, output=output) -- 2.45.1 From 9e978f3ece005da838d9a8d3bf122c2553109c08 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 23 Jun 2022 23:39:41 +0200 Subject: [PATCH 116/140] Fixed tests for un/install commands --- unittests/unittests_cli/install_test_case.py | 13 +++++++++++-- unittests/unittests_cli/uninstall_test_case.py | 12 +++++++----- unittests/unittests_shared/cli_commands.py | 6 +++++- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/unittests/unittests_cli/install_test_case.py b/unittests/unittests_cli/install_test_case.py index bb992206..4986ba15 100644 --- a/unittests/unittests_cli/install_test_case.py +++ b/unittests/unittests_cli/install_test_case.py @@ -1,6 +1,8 @@ import json import os import shutil +import subprocess +import sys import unittest import pkg_resources @@ -44,6 +46,10 @@ class InstallTestCase(unittest.TestCase): shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))) + def _get_installed_packages(self) -> dict: + reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze']) + return dict([tuple(r.decode().split('==')) for r in reqs.split()]) + def test_install_package(self): version = '1.7.3' package_name = 'discord.py' @@ -57,11 +63,11 @@ class InstallTestCase(unittest.TestCase): package, settings['ProjectSettings']['Dependencies'] ) - packages = dict(tuple(str(ws).split()) for ws in pkg_resources.working_set) + packages = self._get_installed_packages() self.assertIn(package_name, packages) self.assertEqual(version, packages[package_name]) - def test_install_all(self): + def _test_install_all(self): version = '1.7.3' package_name = 'discord.py' package = f'{package_name}=={version}' @@ -83,5 +89,8 @@ class InstallTestCase(unittest.TestCase): package, new_settings['ProjectSettings']['Dependencies'] ) + packages = self._get_installed_packages() + self.assertIn(package_name, packages) + self.assertEqual(version, packages[package_name]) diff --git a/unittests/unittests_cli/uninstall_test_case.py b/unittests/unittests_cli/uninstall_test_case.py index 66bde537..ac29aaf3 100644 --- a/unittests/unittests_cli/uninstall_test_case.py +++ b/unittests/unittests_cli/uninstall_test_case.py @@ -1,13 +1,11 @@ import json import os import shutil -import time +import subprocess +import sys import unittest -import pkg_resources - from cpl_core.utils import String - from unittests_cli.constants import PLAYGROUND_PATH from unittests_shared.cli_commands import CLICommands @@ -44,6 +42,10 @@ class UninstallTestCase(unittest.TestCase): shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))) + def _get_installed_packages(self) -> dict: + reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze']) + return dict([tuple(r.decode().split('==')) for r in reqs.split()]) + def test_uninstall(self): CLICommands.uninstall(self._package) settings = self._get_project_settings() @@ -54,5 +56,5 @@ class UninstallTestCase(unittest.TestCase): self._package, settings['ProjectSettings']['Dependencies'] ) - packages = dict(tuple(str(ws).split()) for ws in pkg_resources.working_set) + packages = self._get_installed_packages() self.assertNotIn(self._package_name, packages) diff --git a/unittests/unittests_shared/cli_commands.py b/unittests/unittests_shared/cli_commands.py index 431e6d13..e11b1274 100644 --- a/unittests/unittests_shared/cli_commands.py +++ b/unittests/unittests_shared/cli_commands.py @@ -30,7 +30,11 @@ class CLICommands: cls._run('generate', schematic, name, output=output) @classmethod - def install(cls, package: str = '', output=False): + def install(cls, package: str = None, output=False): + if package is None: + cls._run('install', output=output) + return + cls._run('install', package, output=output) @classmethod -- 2.45.1 From 6e50d0cb228f13fa44f01c6dfccf14f5c06fbc2f Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 23 Jun 2022 23:47:29 +0200 Subject: [PATCH 117/140] Added tests for publish command --- unittests/unittests_cli/cli_test_suite.py | 12 +-- unittests/unittests_cli/publish_test_case.py | 90 +++++++++++++++++++- unittests/unittests_shared/cli_commands.py | 4 + 3 files changed, 92 insertions(+), 14 deletions(-) diff --git a/unittests/unittests_cli/cli_test_suite.py b/unittests/unittests_cli/cli_test_suite.py index fac4682b..cac0af7d 100644 --- a/unittests/unittests_cli/cli_test_suite.py +++ b/unittests/unittests_cli/cli_test_suite.py @@ -11,6 +11,7 @@ from unittests_cli.constants import PLAYGROUND_PATH from unittests_cli.generate_test_case import GenerateTestCase from unittests_cli.install_test_case import InstallTestCase from unittests_cli.new_test_case import NewTestCase +from unittests_cli.publish_test_case import PublishTestCase from unittests_cli.remove_test_case import RemoveTestCase from unittests_cli.uninstall_test_case import UninstallTestCase from unittests_cli.update_test_case import UpdateTestCase @@ -28,28 +29,19 @@ class CLITestSuite(unittest.TestSuite): # nothing needed GenerateTestCase, NewTestCase, - # compare console output # VersionTestCase, - # project needed - # compare two file states/directory content BuildTestCase, InstallTestCase, - - # compare two file states/directory content - # PublishTestCase, - + PublishTestCase, # check if application was executed properly # RunTestCase, - # check if application was executed properly and file watcher is working # StartTestCase, - UninstallTestCase, # check in project settings if package is updated # UpdateTestCase, - # workspace needed AddTestCase, RemoveTestCase diff --git a/unittests/unittests_cli/publish_test_case.py b/unittests/unittests_cli/publish_test_case.py index bad55d55..7c828ced 100644 --- a/unittests/unittests_cli/publish_test_case.py +++ b/unittests/unittests_cli/publish_test_case.py @@ -1,10 +1,92 @@ +import filecmp +import json +import os +import shutil import unittest +from cpl_core.utils import String + +from unittests_cli.constants import PLAYGROUND_PATH +from unittests_shared.cli_commands import CLICommands + class PublishTestCase(unittest.TestCase): - def setUp(self): - pass + def __init__(self, methodName: str): + unittest.TestCase.__init__(self, methodName) + self._source = 'publish-test-source' + self._project_file = f'src/{String.convert_to_snake_case(self._source)}/{self._source}.json' - def test_equal(self): - pass + def _get_project_settings(self): + with open(os.path.join(os.getcwd(), self._project_file), 'r', encoding='utf-8') as cfg: + # load json + project_json = json.load(cfg) + cfg.close() + + return project_json + + def _save_project_settings(self, settings: dict): + with open(os.path.join(os.getcwd(), self._project_file), 'w', encoding='utf-8') as project_file: + project_file.write(json.dumps(settings, indent=2)) + project_file.close() + + def setUp(self): + os.chdir(os.path.abspath(PLAYGROUND_PATH)) + # create projects + CLICommands.new('console', self._source, '--ab', '--s') + os.chdir(os.path.join(os.getcwd(), self._source)) + + def cleanUp(self): + # remove projects + if not os.path.exists(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))): + return + + shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))) + + def _are_dir_trees_equal(self, dir1, dir2): + """ + found at https://stackoverflow.com/questions/4187564/recursively-compare-two-directories-to-ensure-they-have-the-same-files-and-subdi + + Compare two directories recursively. Files in each directory are + assumed to be equal if their names and contents are equal. + + @param dir1: First directory path + @param dir2: Second directory path + + @return: True if the directory trees are the same and + there were no errors while accessing the directories or files, + False otherwise. + """ + + dirs_cmp = filecmp.dircmp(dir1, dir2) + if len(dirs_cmp.left_only) > 0 or len(dirs_cmp.right_only) > 0 or len(dirs_cmp.funny_files) > 0: + return False + + (_, mismatch, errors) = filecmp.cmpfiles(dir1, dir2, dirs_cmp.common_files, shallow=False) + + if len(mismatch) > 0 or len(errors) > 0: + return False + + for common_dir in dirs_cmp.common_dirs: + new_dir1 = os.path.join(dir1, common_dir) + new_dir2 = os.path.join(dir2, common_dir) + if not self._are_dir_trees_equal(new_dir1, new_dir2): + return False + + return True + + def test_publish(self): + CLICommands.publish() + dist_path = './dist' + setup_path = f'{dist_path}/{self._source}/publish/setup' + full_dist_path = f'{dist_path}/{self._source}/publish/build/lib/{String.convert_to_snake_case(self._source)}' + self.assertTrue(os.path.exists(dist_path)) + self.assertTrue(os.path.exists(setup_path)) + self.assertTrue(os.path.exists(os.path.join(setup_path, f'{self._source}-0.0.0.tar.gz'))) + self.assertTrue(os.path.exists(os.path.join(setup_path, f'{String.convert_to_snake_case(self._source)}-0.0.0-py3-none-any.whl'))) + self.assertTrue(os.path.exists(full_dist_path)) + self.assertFalse(self._are_dir_trees_equal(f'./src/{String.convert_to_snake_case(self._source)}', full_dist_path)) + with open(f'{full_dist_path}/{self._source}.json', 'w') as file: + file.write(json.dumps(self._get_project_settings(), indent=2)) + file.close() + self.assertTrue(self._are_dir_trees_equal(f'./src/{String.convert_to_snake_case(self._source)}', full_dist_path)) diff --git a/unittests/unittests_shared/cli_commands.py b/unittests/unittests_shared/cli_commands.py index e11b1274..e685a73e 100644 --- a/unittests/unittests_shared/cli_commands.py +++ b/unittests/unittests_shared/cli_commands.py @@ -41,6 +41,10 @@ class CLICommands: def new(cls, project_type: str, name: str, *args, output=False): cls._run('new', project_type, name, *args, output=output) + @classmethod + def publish(cls): + cls._run('publish') + @classmethod def remove(cls, project: str): cls._run('remove', project) -- 2.45.1 From 6de3bbdaf4df9154b45becec0a89bde8b7dc0588 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 26 Jun 2022 00:15:05 +0200 Subject: [PATCH 118/140] Added tests for run command --- unittests/unittests_cli/cli_test_suite.py | 11 ++- unittests/unittests_cli/run_test_case.py | 89 +++++++++++++++++++++- unittests/unittests_shared/cli_commands.py | 28 ++++--- 3 files changed, 111 insertions(+), 17 deletions(-) diff --git a/unittests/unittests_cli/cli_test_suite.py b/unittests/unittests_cli/cli_test_suite.py index cac0af7d..f0242a88 100644 --- a/unittests/unittests_cli/cli_test_suite.py +++ b/unittests/unittests_cli/cli_test_suite.py @@ -13,6 +13,7 @@ from unittests_cli.install_test_case import InstallTestCase from unittests_cli.new_test_case import NewTestCase from unittests_cli.publish_test_case import PublishTestCase from unittests_cli.remove_test_case import RemoveTestCase +from unittests_cli.run_test_case import RunTestCase from unittests_cli.uninstall_test_case import UninstallTestCase from unittests_cli.update_test_case import UpdateTestCase @@ -24,6 +25,7 @@ class CLITestSuite(unittest.TestSuite): loader = unittest.TestLoader() self._result: Optional[TestResult] = None + self._is_online = True active_tests = [ # nothing needed @@ -33,13 +35,10 @@ class CLITestSuite(unittest.TestSuite): # VersionTestCase, # project needed BuildTestCase, - InstallTestCase, PublishTestCase, - # check if application was executed properly - # RunTestCase, + RunTestCase, # check if application was executed properly and file watcher is working # StartTestCase, - UninstallTestCase, # check in project settings if package is updated # UpdateTestCase, # workspace needed @@ -47,6 +46,10 @@ class CLITestSuite(unittest.TestSuite): RemoveTestCase ] + if self._is_online: + active_tests.append(InstallTestCase) + active_tests.append(UninstallTestCase) + for test in active_tests: self.addTests(loader.loadTestsFromTestCase(test)) diff --git a/unittests/unittests_cli/run_test_case.py b/unittests/unittests_cli/run_test_case.py index 7ace1dd2..1d86b68d 100644 --- a/unittests/unittests_cli/run_test_case.py +++ b/unittests/unittests_cli/run_test_case.py @@ -1,10 +1,91 @@ +import json +import os +import shutil +import subprocess +import sys import unittest +import pkg_resources + +from cpl_core.utils import String + +from unittests_cli.constants import PLAYGROUND_PATH +from unittests_shared.cli_commands import CLICommands + class RunTestCase(unittest.TestCase): - def setUp(self): - pass + def __init__(self, methodName: str): + unittest.TestCase.__init__(self, methodName) + self._source = 'run-test' + self._project_file = f'src/{String.convert_to_snake_case(self._source)}/{self._source}.json' + self._appsettings = f'src/{String.convert_to_snake_case(self._source)}/appsettings.json' + self._application = f'src/{String.convert_to_snake_case(self._source)}/application.py' + self._test_code = f""" + import json + settings = dict() + with open('appsettings.json', 'r', encoding='utf-8') as cfg: + # load json + settings = json.load(cfg) + cfg.close() + + settings['RunTest']['WasStarted'] = 'True' + + with open('appsettings.json', 'w', encoding='utf-8') as project_file: + project_file.write(json.dumps(settings, indent=2)) + project_file.close() + """ - def test_equal(self): - pass + def _get_appsettings(self): + with open(os.path.join(os.getcwd(), self._appsettings), 'r', encoding='utf-8') as cfg: + # load json + project_json = json.load(cfg) + cfg.close() + + return project_json + + def _save_appsettings(self, settings: dict): + with open(os.path.join(os.getcwd(), self._appsettings), 'w', encoding='utf-8') as project_file: + project_file.write(json.dumps(settings, indent=2)) + project_file.close() + + def setUp(self): + os.chdir(os.path.abspath(PLAYGROUND_PATH)) + # create projects + CLICommands.new('console', self._source, '--ab', '--s') + os.chdir(os.path.join(os.getcwd(), self._source)) + settings = {'RunTest': {'WasStarted': 'False'}} + self._save_appsettings(settings) + with open(os.path.join(os.getcwd(), self._application), 'a', encoding='utf-8') as file: + file.write(f'\t\t{self._test_code}') + file.close() + + def cleanUp(self): + # remove projects + if not os.path.exists(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))): + return + + shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))) + + def test_run(self): + CLICommands.run() + settings = self._get_appsettings() + self.assertNotEqual(settings, {}) + self.assertIn('RunTest', settings) + self.assertIn('WasStarted', settings['RunTest']) + self.assertEqual( + 'True', + settings['RunTest']['WasStarted'] + ) + + def test_run_by_project(self): + os.chdir(os.path.join(os.getcwd())) + CLICommands.run(self._source) + settings = self._get_appsettings() + self.assertNotEqual(settings, {}) + self.assertIn('RunTest', settings) + self.assertIn('WasStarted', settings['RunTest']) + self.assertEqual( + 'True', + settings['RunTest']['WasStarted'] + ) diff --git a/unittests/unittests_shared/cli_commands.py b/unittests/unittests_shared/cli_commands.py index e685a73e..4a2d38e2 100644 --- a/unittests/unittests_shared/cli_commands.py +++ b/unittests/unittests_shared/cli_commands.py @@ -15,15 +15,18 @@ class CLICommands: for arg in args: command.append(arg) - subprocess.run(command, env=env_vars) + if output: + subprocess.run(command, env=env_vars) + else: + subprocess.run(command, env=env_vars, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) @classmethod - def add(cls, source: str, target: str): - cls._run('add', source, target) + def add(cls, source: str, target: str, output=False): + cls._run('add', source, target, output=output) @classmethod - def build(cls): - cls._run('build') + def build(cls, output=False): + cls._run('build', output=output) @classmethod def generate(cls, schematic: str, name: str, output=False): @@ -42,12 +45,19 @@ class CLICommands: cls._run('new', project_type, name, *args, output=output) @classmethod - def publish(cls): - cls._run('publish') + def publish(cls, output=False): + cls._run('publish', output=output) @classmethod - def remove(cls, project: str): - cls._run('remove', project) + def remove(cls, project: str, output=False): + cls._run('remove', project, output=output) + + @classmethod + def run(cls, project: str = None, output=False): + if project is None: + cls._run('run', output=output) + return + cls._run('run', project, output=output) @classmethod def uninstall(cls, package: str, output=False): -- 2.45.1 From 32507afae97badaf823e1f74a61eee2eb0e5b42d Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 26 Jun 2022 00:39:16 +0200 Subject: [PATCH 119/140] Added tests for start command --- unittests/unittests_cli/cli_test_suite.py | 20 ++-- unittests/unittests_cli/install_test_case.py | 3 - unittests/unittests_cli/new_test_case.py | 2 - unittests/unittests_cli/remove_test_case.py | 2 - unittests/unittests_cli/start_test_case.py | 95 ++++++++++++++++++- unittests/unittests_cli/threads/__init__.py | 1 + .../threads/start_test_thread.py | 12 +++ unittests/unittests_shared/cli_commands.py | 6 +- 8 files changed, 119 insertions(+), 22 deletions(-) create mode 100644 unittests/unittests_cli/threads/__init__.py create mode 100644 unittests/unittests_cli/threads/start_test_thread.py diff --git a/unittests/unittests_cli/cli_test_suite.py b/unittests/unittests_cli/cli_test_suite.py index f0242a88..c615ab5a 100644 --- a/unittests/unittests_cli/cli_test_suite.py +++ b/unittests/unittests_cli/cli_test_suite.py @@ -14,6 +14,7 @@ from unittests_cli.new_test_case import NewTestCase from unittests_cli.publish_test_case import PublishTestCase from unittests_cli.remove_test_case import RemoveTestCase from unittests_cli.run_test_case import RunTestCase +from unittests_cli.start_test_case import StartTestCase from unittests_cli.uninstall_test_case import UninstallTestCase from unittests_cli.update_test_case import UpdateTestCase @@ -25,25 +26,24 @@ class CLITestSuite(unittest.TestSuite): loader = unittest.TestLoader() self._result: Optional[TestResult] = None - self._is_online = True + self._is_online = False active_tests = [ # nothing needed - GenerateTestCase, - NewTestCase, + # GenerateTestCase, + # NewTestCase, # compare console output # VersionTestCase, # project needed - BuildTestCase, - PublishTestCase, - RunTestCase, - # check if application was executed properly and file watcher is working - # StartTestCase, + # BuildTestCase, + # PublishTestCase, + # RunTestCase, + StartTestCase, # check in project settings if package is updated # UpdateTestCase, # workspace needed - AddTestCase, - RemoveTestCase + # AddTestCase, + # RemoveTestCase ] if self._is_online: diff --git a/unittests/unittests_cli/install_test_case.py b/unittests/unittests_cli/install_test_case.py index 4986ba15..ceefbf4f 100644 --- a/unittests/unittests_cli/install_test_case.py +++ b/unittests/unittests_cli/install_test_case.py @@ -5,10 +5,7 @@ import subprocess import sys import unittest -import pkg_resources - from cpl_core.utils import String - from unittests_cli.constants import PLAYGROUND_PATH from unittests_shared.cli_commands import CLICommands diff --git a/unittests/unittests_cli/new_test_case.py b/unittests/unittests_cli/new_test_case.py index 94bb652c..4125993d 100644 --- a/unittests/unittests_cli/new_test_case.py +++ b/unittests/unittests_cli/new_test_case.py @@ -1,10 +1,8 @@ import json import os -import shutil import unittest from cpl_core.utils import String - from unittests_cli.constants import PLAYGROUND_PATH from unittests_shared.cli_commands import CLICommands diff --git a/unittests/unittests_cli/remove_test_case.py b/unittests/unittests_cli/remove_test_case.py index e53d9f1a..81aa8ee0 100644 --- a/unittests/unittests_cli/remove_test_case.py +++ b/unittests/unittests_cli/remove_test_case.py @@ -1,10 +1,8 @@ import json import os -import shutil import unittest from cpl_core.utils import String - from unittests_cli.constants import PLAYGROUND_PATH from unittests_shared.cli_commands import CLICommands diff --git a/unittests/unittests_cli/start_test_case.py b/unittests/unittests_cli/start_test_case.py index 8da691da..8782b5ca 100644 --- a/unittests/unittests_cli/start_test_case.py +++ b/unittests/unittests_cli/start_test_case.py @@ -1,10 +1,97 @@ +import json +import os +import shutil import unittest +from cpl_core.utils import String +from unittests_cli.constants import PLAYGROUND_PATH +from unittests_cli.threads.start_test_thread import StartTestThread +from unittests_shared.cli_commands import CLICommands + class StartTestCase(unittest.TestCase): - def setUp(self): - pass + def __init__(self, methodName: str): + unittest.TestCase.__init__(self, methodName) + self._source = 'start-test' + self._project_file = f'src/{String.convert_to_snake_case(self._source)}/{self._source}.json' + self._appsettings = f'src/{String.convert_to_snake_case(self._source)}/appsettings.json' + self._application = f'src/{String.convert_to_snake_case(self._source)}/application.py' + self._test_code = f""" + import json + settings = dict() + with open('appsettings.json', 'r', encoding='utf-8') as cfg: + # load json + settings = json.load(cfg) + cfg.close() + + if settings['RunTest']['WasStarted']: + settings['RunTest']['WasRestarted'] = 'True' + + settings['RunTest']['WasStarted'] = 'True' - def test_equal(self): - pass + with open('appsettings.json', 'w', encoding='utf-8') as project_file: + project_file.write(json.dumps(settings, indent=2)) + project_file.close() + """ + + def _get_appsettings(self): + with open(os.path.join(os.getcwd(), self._appsettings), 'r', encoding='utf-8') as cfg: + # load json + project_json = json.load(cfg) + cfg.close() + + return project_json + + def _save_appsettings(self, settings: dict): + with open(os.path.join(os.getcwd(), self._appsettings), 'w', encoding='utf-8') as project_file: + project_file.write(json.dumps(settings, indent=2)) + project_file.close() + + def setUp(self): + os.chdir(os.path.abspath(PLAYGROUND_PATH)) + # create projects + CLICommands.new('console', self._source, '--ab', '--s') + os.chdir(os.path.join(os.getcwd(), self._source)) + settings = {'RunTest': {'WasStarted': 'False', 'WasRestarted': 'False'}} + self._save_appsettings(settings) + with open(os.path.join(os.getcwd(), self._application), 'a', encoding='utf-8') as file: + file.write(f'\t\t{self._test_code}') + file.close() + + def cleanUp(self): + # remove projects + if not os.path.exists(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))): + return + + shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))) + + def test_start(self): + thread = StartTestThread() + thread.run() + settings = self._get_appsettings() + self.assertNotEqual(settings, {}) + self.assertIn('RunTest', settings) + self.assertIn('WasStarted', settings['RunTest']) + self.assertEqual( + 'True', + settings['RunTest']['WasStarted'] + ) + + with open(os.path.join(os.getcwd(), self._application), 'a', encoding='utf-8') as file: + file.write(f'# trigger restart (comment generated by unittest)') + file.close() + + settings = self._get_appsettings() + self.assertNotEqual(settings, {}) + self.assertIn('RunTest', settings) + self.assertIn('WasStarted', settings['RunTest']) + self.assertIn('WasRestarted', settings['RunTest']) + self.assertEqual( + 'True', + settings['RunTest']['WasStarted'] + ) + self.assertEqual( + 'True', + settings['RunTest']['WasRestarted'] + ) diff --git a/unittests/unittests_cli/threads/__init__.py b/unittests/unittests_cli/threads/__init__.py new file mode 100644 index 00000000..425ab6c1 --- /dev/null +++ b/unittests/unittests_cli/threads/__init__.py @@ -0,0 +1 @@ +# imports diff --git a/unittests/unittests_cli/threads/start_test_thread.py b/unittests/unittests_cli/threads/start_test_thread.py new file mode 100644 index 00000000..1a80b8d1 --- /dev/null +++ b/unittests/unittests_cli/threads/start_test_thread.py @@ -0,0 +1,12 @@ +import threading + +from unittests_shared.cli_commands import CLICommands + + +class StartTestThread(threading.Thread): + + def __init__(self): + threading.Thread.__init__(self, daemon=True) + + def run(self): + CLICommands.start() diff --git a/unittests/unittests_shared/cli_commands.py b/unittests/unittests_shared/cli_commands.py index 4a2d38e2..eeb253e1 100644 --- a/unittests/unittests_shared/cli_commands.py +++ b/unittests/unittests_shared/cli_commands.py @@ -18,7 +18,7 @@ class CLICommands: if output: subprocess.run(command, env=env_vars) else: - subprocess.run(command, env=env_vars, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + subprocess.run(command, env=env_vars, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, stdin=subprocess.DEVNULL) @classmethod def add(cls, source: str, target: str, output=False): @@ -59,6 +59,10 @@ class CLICommands: return cls._run('run', project, output=output) + @classmethod + def start(cls, output=False): + cls._run('start', output=output) + @classmethod def uninstall(cls, package: str, output=False): cls._run('uninstall', package, output=output) -- 2.45.1 From fa002a50ac9623def08d1f685fd27fc480084b38 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 26 Jun 2022 00:41:25 +0200 Subject: [PATCH 120/140] Fixed for start command --- unittests/unittests_cli/cli_test_suite.py | 14 +++++++------- unittests/unittests_cli/start_test_case.py | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/unittests/unittests_cli/cli_test_suite.py b/unittests/unittests_cli/cli_test_suite.py index c615ab5a..eea5426e 100644 --- a/unittests/unittests_cli/cli_test_suite.py +++ b/unittests/unittests_cli/cli_test_suite.py @@ -30,20 +30,20 @@ class CLITestSuite(unittest.TestSuite): active_tests = [ # nothing needed - # GenerateTestCase, - # NewTestCase, + GenerateTestCase, + NewTestCase, # compare console output # VersionTestCase, # project needed - # BuildTestCase, - # PublishTestCase, - # RunTestCase, + BuildTestCase, + PublishTestCase, + RunTestCase, StartTestCase, # check in project settings if package is updated # UpdateTestCase, # workspace needed - # AddTestCase, - # RemoveTestCase + AddTestCase, + RemoveTestCase ] if self._is_online: diff --git a/unittests/unittests_cli/start_test_case.py b/unittests/unittests_cli/start_test_case.py index 8782b5ca..a0c86a03 100644 --- a/unittests/unittests_cli/start_test_case.py +++ b/unittests/unittests_cli/start_test_case.py @@ -25,7 +25,7 @@ class StartTestCase(unittest.TestCase): settings = json.load(cfg) cfg.close() - if settings['RunTest']['WasStarted']: + if settings['RunTest']['WasStarted'] == 'True': settings['RunTest']['WasRestarted'] = 'True' settings['RunTest']['WasStarted'] = 'True' -- 2.45.1 From d83d1a244e6371c0020d52e1c315f7d93a325f6b Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 26 Jun 2022 01:05:45 +0200 Subject: [PATCH 121/140] Fixed for start command [WIP] output is needed --- unittests/unittests_cli/cli_test_suite.py | 14 +++++++------- unittests/unittests_cli/start_test_case.py | 8 ++++++-- .../unittests_cli/threads/start_test_thread.py | 2 +- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/unittests/unittests_cli/cli_test_suite.py b/unittests/unittests_cli/cli_test_suite.py index eea5426e..c615ab5a 100644 --- a/unittests/unittests_cli/cli_test_suite.py +++ b/unittests/unittests_cli/cli_test_suite.py @@ -30,20 +30,20 @@ class CLITestSuite(unittest.TestSuite): active_tests = [ # nothing needed - GenerateTestCase, - NewTestCase, + # GenerateTestCase, + # NewTestCase, # compare console output # VersionTestCase, # project needed - BuildTestCase, - PublishTestCase, - RunTestCase, + # BuildTestCase, + # PublishTestCase, + # RunTestCase, StartTestCase, # check in project settings if package is updated # UpdateTestCase, # workspace needed - AddTestCase, - RemoveTestCase + # AddTestCase, + # RemoveTestCase ] if self._is_online: diff --git a/unittests/unittests_cli/start_test_case.py b/unittests/unittests_cli/start_test_case.py index a0c86a03..f41eb450 100644 --- a/unittests/unittests_cli/start_test_case.py +++ b/unittests/unittests_cli/start_test_case.py @@ -1,6 +1,7 @@ import json import os import shutil +import time import unittest from cpl_core.utils import String @@ -29,7 +30,7 @@ class StartTestCase(unittest.TestCase): settings['RunTest']['WasRestarted'] = 'True' settings['RunTest']['WasStarted'] = 'True' - + with open('appsettings.json', 'w', encoding='utf-8') as project_file: project_file.write(json.dumps(settings, indent=2)) project_file.close() @@ -68,7 +69,8 @@ class StartTestCase(unittest.TestCase): def test_start(self): thread = StartTestThread() - thread.run() + thread.start() + time.sleep(1) settings = self._get_appsettings() self.assertNotEqual(settings, {}) self.assertIn('RunTest', settings) @@ -82,6 +84,8 @@ class StartTestCase(unittest.TestCase): file.write(f'# trigger restart (comment generated by unittest)') file.close() + time.sleep(1) + settings = self._get_appsettings() self.assertNotEqual(settings, {}) self.assertIn('RunTest', settings) diff --git a/unittests/unittests_cli/threads/start_test_thread.py b/unittests/unittests_cli/threads/start_test_thread.py index 1a80b8d1..6c413e6d 100644 --- a/unittests/unittests_cli/threads/start_test_thread.py +++ b/unittests/unittests_cli/threads/start_test_thread.py @@ -9,4 +9,4 @@ class StartTestThread(threading.Thread): threading.Thread.__init__(self, daemon=True) def run(self): - CLICommands.start() + CLICommands.start(True) -- 2.45.1 From 78ffbcc33dabdf6dcf344c826d320696f5c15746 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 26 Jun 2022 01:07:10 +0200 Subject: [PATCH 122/140] Readded all test cases --- unittests/unittests_cli/cli_test_suite.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/unittests/unittests_cli/cli_test_suite.py b/unittests/unittests_cli/cli_test_suite.py index c615ab5a..3b74a429 100644 --- a/unittests/unittests_cli/cli_test_suite.py +++ b/unittests/unittests_cli/cli_test_suite.py @@ -26,24 +26,24 @@ class CLITestSuite(unittest.TestSuite): loader = unittest.TestLoader() self._result: Optional[TestResult] = None - self._is_online = False + self._is_online = True active_tests = [ # nothing needed - # GenerateTestCase, - # NewTestCase, + GenerateTestCase, + NewTestCase, # compare console output # VersionTestCase, # project needed - # BuildTestCase, - # PublishTestCase, - # RunTestCase, + BuildTestCase, + PublishTestCase, + RunTestCase, StartTestCase, # check in project settings if package is updated # UpdateTestCase, # workspace needed - # AddTestCase, - # RemoveTestCase + AddTestCase, + RemoveTestCase ] if self._is_online: -- 2.45.1 From 45be77dd10206b23f3ef62d1b49bf3987cf8869c Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 26 Jun 2022 19:51:18 +0200 Subject: [PATCH 123/140] Added tests for version command --- unittests/unittests_cli/cli_test_suite.py | 8 +- unittests/unittests_cli/version_test_case.py | 91 +++++++++++++++++++- unittests/unittests_shared/cli_commands.py | 15 ++++ 3 files changed, 108 insertions(+), 6 deletions(-) diff --git a/unittests/unittests_cli/cli_test_suite.py b/unittests/unittests_cli/cli_test_suite.py index 3b74a429..6cfcc39f 100644 --- a/unittests/unittests_cli/cli_test_suite.py +++ b/unittests/unittests_cli/cli_test_suite.py @@ -17,6 +17,7 @@ from unittests_cli.run_test_case import RunTestCase from unittests_cli.start_test_case import StartTestCase from unittests_cli.uninstall_test_case import UninstallTestCase from unittests_cli.update_test_case import UpdateTestCase +from unittests_cli.version_test_case import VersionTestCase class CLITestSuite(unittest.TestSuite): @@ -29,12 +30,11 @@ class CLITestSuite(unittest.TestSuite): self._is_online = True active_tests = [ - # nothing needed + # # nothing needed + VersionTestCase, GenerateTestCase, NewTestCase, - # compare console output - # VersionTestCase, - # project needed + # # project needed BuildTestCase, PublishTestCase, RunTestCase, diff --git a/unittests/unittests_cli/version_test_case.py b/unittests/unittests_cli/version_test_case.py index cd7e75e9..73a7053a 100644 --- a/unittests/unittests_cli/version_test_case.py +++ b/unittests/unittests_cli/version_test_case.py @@ -1,10 +1,97 @@ +import pkgutil +import platform +import sys +import textwrap import unittest +import pkg_resources +from art import text2art +from tabulate import tabulate + +import cpl_cli +from cpl_core.console import ForegroundColorEnum +from termcolor import colored + +from unittests_shared.cli_commands import CLICommands + class VersionTestCase(unittest.TestCase): + def __init__(self, methodName: str): + unittest.TestCase.__init__(self, methodName) + self._block_banner = "" + self._block_version = "" + self._block_package_header = "" + self._block_cpl_packages = "" + self._block_packages = "" + self._name = "CPL CLI" + def setUp(self): pass - def test_equal(self): - pass + def _get_version_output(self, version: str): + index = 0 + + for line in version.split('\n'): + if line == "": + continue + + if index <= 5: + self._block_banner += f'{line}\n' + + if 7 <= index <= 9: + self._block_version += f'{line}\n' + + if 10 <= index <= 15: + self._block_cpl_packages += f'{line}\n' + + if index >= 17: + self._block_packages += f'{line}\n' + + index += 1 + + def test_version(self): + version = CLICommands.version() + self._get_version_output(version) + reference_banner = colored(text2art(self._name), ForegroundColorEnum.yellow.value).split('\n') + reference_banner = "\n".join(reference_banner[:len(reference_banner) - 1]) + '\n' + self.assertEqual(reference_banner, self._block_banner) + + reference_version = [ + colored(f'{colored("Common Python library CLI: ")}{colored(cpl_cli.__version__)}'), + colored(f'{colored("Python: ")}{colored(f"{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}")}'), + colored(f'OS: {colored(f"{platform.system()} {platform.processor()}")}') + '\n' + ] + self.assertEqual('\n'.join(reference_version), self._block_version) + packages = [] + cpl_packages = [ + 'cpl_core', + 'cpl_cli', + 'cpl_query' + ] + for modname in cpl_packages: + module = pkgutil.find_loader(modname) + if module is None: + break + + module = module.load_module(modname) + if '__version__' in dir(module): + packages.append([f'{modname}', module.__version__]) + + reference_cpl_packages = [ + colored(colored(f'CPL packages:')), + colored(f'{tabulate(packages, headers=["Name", "Version"])}') + '\n' + ] + self.assertEqual('\n'.join(reference_cpl_packages), self._block_cpl_packages) + + packages = [] + dependencies = dict(tuple(str(ws).split()) for ws in pkg_resources.working_set) + for p in dependencies: + packages.append([p, dependencies[p]]) + + reference_packages = [ + colored(colored(f'Python packages:')), + colored(f'{tabulate(packages, headers=["Name", "Version"])}'), + '\x1b[0m\x1b[0m\n\x1b[0m\x1b[0m\n' # fix colored codes + ] + self.assertEqual('\n'.join(reference_packages), self._block_packages) diff --git a/unittests/unittests_shared/cli_commands.py b/unittests/unittests_shared/cli_commands.py index eeb253e1..2e30bf82 100644 --- a/unittests/unittests_shared/cli_commands.py +++ b/unittests/unittests_shared/cli_commands.py @@ -20,6 +20,17 @@ class CLICommands: else: subprocess.run(command, env=env_vars, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, stdin=subprocess.DEVNULL) + @staticmethod + def _run_with_output(cmd: str, *args) -> str: + env_vars = os.environ + env_vars['CPL_IS_UNITTEST'] = 'NO' + + command = ['python', CLI_PATH, cmd] + for arg in args: + command.append(arg) + + return subprocess.run(command, env=env_vars, check=True, capture_output=True, text=True).stdout + @classmethod def add(cls, source: str, target: str, output=False): cls._run('add', source, target, output=output) @@ -66,3 +77,7 @@ class CLICommands: @classmethod def uninstall(cls, package: str, output=False): cls._run('uninstall', package, output=output) + + @classmethod + def version(cls) -> str: + return cls._run_with_output('version') -- 2.45.1 From c2632253aceeb7988fdb332d2bff309b25952d9d Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Mon, 27 Jun 2022 09:10:21 +0200 Subject: [PATCH 124/140] Added tests for update command --- src/cpl_cli/command/update_service.py | 7 +- unittests/unittests_cli/cli_test_suite.py | 7 +- unittests/unittests_cli/update_test_case.py | 86 ++++++++++++++++++++- unittests/unittests_shared/cli_commands.py | 4 + 4 files changed, 93 insertions(+), 11 deletions(-) diff --git a/src/cpl_cli/command/update_service.py b/src/cpl_cli/command/update_service.py index 5d082109..3b1895f5 100644 --- a/src/cpl_cli/command/update_service.py +++ b/src/cpl_cli/command/update_service.py @@ -40,6 +40,8 @@ class UpdateService(CommandABC): self._cli_settings = cli_settings self._is_simulation = False + self._project_file = f'{self._project_settings.name}.json' + @property def help_message(self) -> str: return textwrap.dedent("""\ @@ -81,7 +83,7 @@ class UpdateService(CommandABC): new_package = Pip.get_package(name) if new_package is None: Console.error(f'Update for package {package} failed') - return + continue self._project_json_update_dependency(package, new_package) @@ -151,8 +153,7 @@ class UpdateService(CommandABC): BuildSettings.__name__: SettingsHelper.get_build_settings_dict(self._build_settings) } - with open(os.path.join(self._env.working_directory, f'{self._config.get_configuration("ProjectName")}.json'), - 'w') as project: + with open(os.path.join(self._env.working_directory, self._project_file), 'w') as project: project.write(json.dumps(config, indent=2)) project.close() diff --git a/unittests/unittests_cli/cli_test_suite.py b/unittests/unittests_cli/cli_test_suite.py index 6cfcc39f..f26f3f3a 100644 --- a/unittests/unittests_cli/cli_test_suite.py +++ b/unittests/unittests_cli/cli_test_suite.py @@ -30,17 +30,15 @@ class CLITestSuite(unittest.TestSuite): self._is_online = True active_tests = [ - # # nothing needed + # nothing needed VersionTestCase, GenerateTestCase, NewTestCase, - # # project needed + # project needed BuildTestCase, PublishTestCase, RunTestCase, StartTestCase, - # check in project settings if package is updated - # UpdateTestCase, # workspace needed AddTestCase, RemoveTestCase @@ -49,6 +47,7 @@ class CLITestSuite(unittest.TestSuite): if self._is_online: active_tests.append(InstallTestCase) active_tests.append(UninstallTestCase) + active_tests.append(UpdateTestCase) for test in active_tests: self.addTests(loader.loadTestsFromTestCase(test)) diff --git a/unittests/unittests_cli/update_test_case.py b/unittests/unittests_cli/update_test_case.py index 35e6d8f3..36c6fd4f 100644 --- a/unittests/unittests_cli/update_test_case.py +++ b/unittests/unittests_cli/update_test_case.py @@ -1,10 +1,88 @@ +import json +import os +import shutil +import subprocess +import sys import unittest +from cpl_core.utils import String +from unittests_cli.constants import PLAYGROUND_PATH +from unittests_shared.cli_commands import CLICommands + class UpdateTestCase(unittest.TestCase): - def setUp(self): - pass + def __init__(self, methodName: str): + unittest.TestCase.__init__(self, methodName) + self._source = 'install-test-source' + self._project_file = f'src/{String.convert_to_snake_case(self._source)}/{self._source}.json' + + self._old_version = '1.7.1' + self._old_package_name = 'discord.py' + self._old_package = f'{self._old_package_name}=={self._old_version}' + + self._new_version = '1.7.3' + self._new_package_name = 'discord.py' + self._new_package = f'{self._new_package_name}=={self._new_version}' + + def _get_project_settings(self): + with open(os.path.join(os.getcwd(), self._project_file), 'r', encoding='utf-8') as cfg: + # load json + project_json = json.load(cfg) + cfg.close() + + return project_json + + def _save_project_settings(self, settings: dict): + with open(os.path.join(os.getcwd(), self._project_file), 'w', encoding='utf-8') as project_file: + project_file.write(json.dumps(settings, indent=2)) + project_file.close() + + def setUp(self): + CLICommands.uninstall(self._old_package) + CLICommands.uninstall(self._new_package) + os.chdir(os.path.abspath(PLAYGROUND_PATH)) + # create projects + CLICommands.new('console', self._source, '--ab', '--s') + os.chdir(os.path.join(os.getcwd(), self._source)) + CLICommands.install(self._old_package) + + def cleanUp(self): + # remove projects + if not os.path.exists(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))): + return + + shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH, self._source))) + + def _get_installed_packages(self) -> dict: + reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze']) + return dict([tuple(r.decode().split('==')) for r in reqs.split()]) + + def test_install_package(self): + settings = self._get_project_settings() + self.assertNotEqual(settings, {}) + self.assertIn('ProjectSettings', settings) + self.assertIn('Dependencies', settings['ProjectSettings']) + self.assertIn( + self._old_package, + settings['ProjectSettings']['Dependencies'] + ) + packages = self._get_installed_packages() + self.assertIn(self._old_package_name, packages) + self.assertEqual(self._old_version, packages[self._old_package_name]) + + CLICommands.update() + + settings = self._get_project_settings() + self.assertNotEqual(settings, {}) + self.assertIn('ProjectSettings', settings) + self.assertIn('Dependencies', settings['ProjectSettings']) + self.assertIn( + self._new_package, + settings['ProjectSettings']['Dependencies'] + ) + packages = self._get_installed_packages() + self.assertIn(self._new_package_name, packages) + self.assertEqual(self._new_version, packages[self._new_package_name]) + - def test_equal(self): - pass diff --git a/unittests/unittests_shared/cli_commands.py b/unittests/unittests_shared/cli_commands.py index 2e30bf82..a458390c 100644 --- a/unittests/unittests_shared/cli_commands.py +++ b/unittests/unittests_shared/cli_commands.py @@ -78,6 +78,10 @@ class CLICommands: def uninstall(cls, package: str, output=False): cls._run('uninstall', package, output=output) + @classmethod + def update(cls, output=False): + cls._run('update', output=output) + @classmethod def version(cls) -> str: return cls._run_with_output('version') -- 2.45.1 From e8a4fe6142007401d0f7c9889db111ab0a88f11f Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Mon, 27 Jun 2022 10:52:26 +0200 Subject: [PATCH 125/140] Added venv support to install command --- src/cpl_cli/command/install_service.py | 31 +++++++--- src/cpl_cli/configuration/project_settings.py | 18 +++--- .../configuration/venv_helper_service.py | 15 +++++ src/cpl_cli/cpl-cli.json | 4 +- src/cpl_cli/main.py | 2 + src/cpl_cli/startup.py | 36 +++++++++++ src/cpl_cli/startup_argument_extension.py | 61 +------------------ src/cpl_cli/startup_workspace_extension.py | 55 +++++++++++++++++ src/cpl_core/utils/pip.py | 41 ++++++------- .../custom/general/src/general/general.json | 2 +- 10 files changed, 163 insertions(+), 102 deletions(-) create mode 100644 src/cpl_cli/configuration/venv_helper_service.py create mode 100644 src/cpl_cli/startup_workspace_extension.py diff --git a/src/cpl_cli/command/install_service.py b/src/cpl_cli/command/install_service.py index d4342988..ec27a067 100644 --- a/src/cpl_cli/command/install_service.py +++ b/src/cpl_cli/command/install_service.py @@ -1,5 +1,6 @@ import json import os +import shutil import subprocess import textwrap import time @@ -9,12 +10,12 @@ from cpl_cli.command_abc import CommandABC from cpl_cli.configuration.build_settings import BuildSettings from cpl_cli.configuration.project_settings import ProjectSettings from cpl_cli.configuration.settings_helper import SettingsHelper +from cpl_cli.configuration.venv_helper_service import VenvHelper from cpl_cli.error import Error from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.console.console import Console from cpl_core.console.foreground_color_enum import ForegroundColorEnum -from cpl_core.environment.application_environment_abc import \ - ApplicationEnvironmentABC +from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC from cpl_core.utils.pip import Pip from packaging import version @@ -57,12 +58,27 @@ class InstallService(CommandABC): def _wait(self, t: int, *args, source: str = None, stdout=None, stderr=None): time.sleep(t) + def _init_venv(self): + if self._is_virtual: + return + venv_path = os.path.abspath(os.path.join(self._env.working_directory, self._project_settings.python_executable)) + + if not os.path.exists(venv_path): + Console.spinner( + f'Creating venv {venv_path}', + VenvHelper.create_venv, + venv_path, + text_foreground_color=ForegroundColorEnum.green, + spinner_foreground_color=ForegroundColorEnum.cyan + ) + + Pip.set_executable(venv_path) + def _install_project(self): """ Installs dependencies of CPl project :return: """ - if self._project_settings is None or self._build_settings is None: Error.error('The command requires to be run in an CPL project, but a project could not be found.') return @@ -71,8 +87,6 @@ class InstallService(CommandABC): Error.error(f'Found invalid dependencies in {self._project_file}.') return - if not self._is_virtual: - Pip.set_executable(self._project_settings.python_executable) for dependency in self._project_settings.dependencies: Console.spinner( f'Installing: {dependency}', @@ -94,9 +108,6 @@ class InstallService(CommandABC): :return: """ is_already_in_project = False - if not self._is_virtual: - Pip.set_executable(self._project_settings.python_executable) - if self._project_settings is None or self._build_settings is None: Error.error('The command requires to be run in an CPL project, but a project could not be found.') return @@ -200,7 +211,11 @@ class InstallService(CommandABC): args.remove('simulate') Console.write_line('Running in simulation mode:') + self._init_venv() + if len(args) == 0: self._install_project() else: self._install_package(args[0]) + + # shutil.rmtree(os.path.abspath(os.path.join(self._env.working_directory, self._project_settings.python_executable))) diff --git a/src/cpl_cli/configuration/project_settings.py b/src/cpl_cli/configuration/project_settings.py index c73bde40..94d490c6 100644 --- a/src/cpl_cli/configuration/project_settings.py +++ b/src/cpl_cli/configuration/project_settings.py @@ -3,12 +3,12 @@ import sys import traceback from typing import Optional +from cpl_cli.configuration.project_settings_name_enum import ProjectSettingsNameEnum +from cpl_cli.configuration.version_settings import VersionSettings +from cpl_cli.error import Error from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC from cpl_core.console.console import Console from cpl_core.console.foreground_color_enum import ForegroundColorEnum -from cpl_cli.configuration.version_settings import VersionSettings -from cpl_cli.configuration.project_settings_name_enum import ProjectSettingsNameEnum -from cpl_cli.error import Error class ProjectSettings(ConfigurationModelABC): @@ -114,13 +114,10 @@ class ProjectSettings(ConfigurationModelABC): self._python_version = settings[ProjectSettingsNameEnum.python_version.value] self._python_path = settings[ProjectSettingsNameEnum.python_path.value] - if ProjectSettingsNameEnum.python_path.value in settings and \ - sys.platform in settings[ProjectSettingsNameEnum.python_path.value]: + if ProjectSettingsNameEnum.python_path.value in settings and sys.platform in settings[ProjectSettingsNameEnum.python_path.value]: path = settings[ProjectSettingsNameEnum.python_path.value][sys.platform] - if not os.path.isfile(path) and not os.path.islink(path): - if path != '' and path is not None: - Error.warn(f'{ProjectSettingsNameEnum.python_path.value} not found') - + if path == '' or path is None: + Error.warn(f'{ProjectSettingsNameEnum.python_path.value} not found') path = sys.executable else: path = sys.executable @@ -134,7 +131,6 @@ class ProjectSettings(ConfigurationModelABC): except Exception as e: Console.set_foreground_color(ForegroundColorEnum.red) - Console.write_line( - f'[ ERROR ] [ {__name__} ]: Reading error in {ProjectSettings.__name__} settings') + Console.write_line(f'[ ERROR ] [ {__name__} ]: Reading error in {ProjectSettings.__name__} settings') Console.write_line(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}') Console.set_foreground_color(ForegroundColorEnum.default) diff --git a/src/cpl_cli/configuration/venv_helper_service.py b/src/cpl_cli/configuration/venv_helper_service.py new file mode 100644 index 00000000..fcc6b9b9 --- /dev/null +++ b/src/cpl_cli/configuration/venv_helper_service.py @@ -0,0 +1,15 @@ +import os +import subprocess +import sys + + +class VenvHelper: + + @staticmethod + def create_venv(path): + subprocess.run( + [sys.executable, '-m', 'venv', os.path.abspath(os.path.join(path, '../../'))], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + stdin=subprocess.DEVNULL + ) diff --git a/src/cpl_cli/cpl-cli.json b/src/cpl_cli/cpl-cli.json index 1f2c75d9..f0b0ebb9 100644 --- a/src/cpl_cli/cpl-cli.json +++ b/src/cpl_cli/cpl-cli.json @@ -19,7 +19,9 @@ "cpl-core>=2022.6.17.dev8" ], "PythonVersion": ">=3.10", - "PythonPath": {}, + "PythonPath": { + "linux": "../../venv" + }, "Classifiers": [] }, "BuildSettings": { diff --git a/src/cpl_cli/main.py b/src/cpl_cli/main.py index 4b6959d9..4ee21688 100644 --- a/src/cpl_cli/main.py +++ b/src/cpl_cli/main.py @@ -5,6 +5,7 @@ import pkg_resources from cpl_cli.cli import CLI from cpl_cli.startup import Startup from cpl_cli.startup_argument_extension import StartupArgumentExtension +from cpl_cli.startup_workspace_extension import StartupWorkspaceExtension from cpl_core.application.application_builder import ApplicationBuilder from cpl_core.application.startup_extension_abc import StartupExtensionABC @@ -31,6 +32,7 @@ def get_startup_extensions() -> list[Type[StartupExtensionABC]]: def main(): app_builder = ApplicationBuilder(CLI) app_builder.use_startup(Startup) + app_builder.use_extension(StartupWorkspaceExtension) app_builder.use_extension(StartupArgumentExtension) for extension in get_startup_extensions(): app_builder.use_extension(extension) diff --git a/src/cpl_cli/startup.py b/src/cpl_cli/startup.py index 48d2f0bd..847f8e3c 100644 --- a/src/cpl_cli/startup.py +++ b/src/cpl_cli/startup.py @@ -1,5 +1,23 @@ import os +from cpl_cli.command.add_service import AddService +from cpl_cli.command.build_service import BuildService +from cpl_cli.command.custom_script_service import CustomScriptService +from cpl_cli.command.generate_service import GenerateService +from cpl_cli.command.help_service import HelpService +from cpl_cli.command.install_service import InstallService +from cpl_cli.command.new_service import NewService +from cpl_cli.command.publish_service import PublishService +from cpl_cli.command.remove_service import RemoveService +from cpl_cli.command.run_service import RunService +from cpl_cli.command.start_service import StartService +from cpl_cli.command.uninstall_service import UninstallService +from cpl_cli.command.update_service import UpdateService +from cpl_cli.command.version_service import VersionService +from cpl_cli.validators.project_validator import ProjectValidator + +from cpl_cli.validators.workspace_validator import WorkspaceValidator + from cpl_core.console import Console from cpl_cli.error import Error @@ -37,4 +55,22 @@ class Startup(StartupABC): services.add_transient(PublisherABC, PublisherService) services.add_transient(LiveServerService) + services.add_transient(WorkspaceValidator) + services.add_transient(ProjectValidator) + + services.add_transient(AddService) + services.add_transient(BuildService) + services.add_transient(CustomScriptService) + services.add_transient(GenerateService) + services.add_transient(HelpService) + services.add_transient(InstallService) + services.add_transient(NewService) + services.add_transient(PublishService) + services.add_transient(RemoveService) + services.add_transient(RunService) + services.add_transient(StartService) + services.add_transient(UninstallService) + services.add_transient(UpdateService) + services.add_transient(VersionService) + return services.build_service_provider() diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index 01f89e2c..8e795305 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -1,11 +1,5 @@ -import os -from typing import Optional - -from cpl_core.console import Console - from cpl_cli.command.add_service import AddService from cpl_cli.command.build_service import BuildService -from cpl_cli.command.custom_script_service import CustomScriptService from cpl_cli.command.generate_service import GenerateService from cpl_cli.command.help_service import HelpService from cpl_cli.command.install_service import InstallService @@ -17,7 +11,6 @@ from cpl_cli.command.start_service import StartService from cpl_cli.command.uninstall_service import UninstallService from cpl_cli.command.update_service import UpdateService from cpl_cli.command.version_service import VersionService -from cpl_cli.configuration.workspace_settings import WorkspaceSettings from cpl_cli.validators.project_validator import ProjectValidator from cpl_cli.validators.workspace_validator import WorkspaceValidator from cpl_core.application.startup_extension_abc import StartupExtensionABC @@ -25,7 +18,6 @@ from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.dependency_injection.service_collection_abc import ServiceCollectionABC from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC -from cpl_core.utils.string import String class StartupArgumentExtension(StartupExtensionABC): @@ -33,40 +25,7 @@ class StartupArgumentExtension(StartupExtensionABC): def __init__(self): pass - @staticmethod - def _search_project_json(working_directory: str) -> Optional[str]: - project_name = None - name = os.path.basename(working_directory) - for r, d, f in os.walk(working_directory): - for file in f: - if file.endswith('.json'): - f_name = file.split('.json')[0] - if f_name == name or String.convert_to_camel_case(f_name).lower() == String.convert_to_camel_case(name).lower(): - project_name = f_name - break - - return project_name - - def _read_cpl_environment(self, config: ConfigurationABC, env: ApplicationEnvironmentABC): - workspace: Optional[WorkspaceSettings] = config.get_configuration(WorkspaceSettings) - config.add_configuration('PATH_WORKSPACE', env.working_directory) - if workspace is not None: - for script in workspace.scripts: - config.create_console_argument(ArgumentTypeEnum.Executable, '', script, [], CustomScriptService) - return - - project = self._search_project_json(env.working_directory) - if project is not None: - project = f'{project}.json' - - if project is None: - return - - config.add_json_file(project, optional=True, output=False) - def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC): - config.add_json_file('cpl-workspace.json', path=env.working_directory, optional=True, output=False) - config.create_console_argument(ArgumentTypeEnum.Executable, '', 'add', ['a', 'A'], AddService, True, validators=[WorkspaceValidator]) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'build', ['b', 'B'], BuildService, True, validators=[ProjectValidator]) @@ -107,23 +66,5 @@ class StartupArgumentExtension(StartupExtensionABC): config.for_each_argument(lambda a: a.add_console_argument(ArgumentTypeEnum.Flag, '--', 'help', ['h', 'H'])) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'help', ['h', 'H'], HelpService) - self._read_cpl_environment(config, env) - def configure_services(self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC): - services.add_transient(WorkspaceValidator) - services.add_transient(ProjectValidator) - - services.add_transient(AddService) - services.add_transient(BuildService) - services.add_transient(CustomScriptService) - services.add_transient(GenerateService) - services.add_transient(HelpService) - services.add_transient(InstallService) - services.add_transient(NewService) - services.add_transient(PublishService) - services.add_transient(RemoveService) - services.add_transient(RunService) - services.add_transient(StartService) - services.add_transient(UninstallService) - services.add_transient(UpdateService) - services.add_transient(VersionService) + pass diff --git a/src/cpl_cli/startup_workspace_extension.py b/src/cpl_cli/startup_workspace_extension.py new file mode 100644 index 00000000..26fe4d0d --- /dev/null +++ b/src/cpl_cli/startup_workspace_extension.py @@ -0,0 +1,55 @@ +import os +from typing import Optional + +from cpl_cli.command.custom_script_service import CustomScriptService +from cpl_cli.configuration.workspace_settings import WorkspaceSettings +from cpl_core.application.startup_extension_abc import StartupExtensionABC +from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum +from cpl_core.configuration.configuration_abc import ConfigurationABC +from cpl_core.dependency_injection.service_collection_abc import ServiceCollectionABC +from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC +from cpl_core.utils.string import String + + +class StartupWorkspaceExtension(StartupExtensionABC): + + def __init__(self): + pass + + @staticmethod + def _search_project_json(working_directory: str) -> Optional[str]: + project_name = None + name = os.path.basename(working_directory) + for r, d, f in os.walk(working_directory): + for file in f: + if file.endswith('.json'): + f_name = file.split('.json')[0] + if f_name == name or String.convert_to_camel_case(f_name).lower() == String.convert_to_camel_case(name).lower(): + project_name = f_name + break + + return project_name + + def _read_cpl_environment(self, config: ConfigurationABC, env: ApplicationEnvironmentABC): + workspace: Optional[WorkspaceSettings] = config.get_configuration(WorkspaceSettings) + config.add_configuration('PATH_WORKSPACE', env.working_directory) + if workspace is not None: + for script in workspace.scripts: + config.create_console_argument(ArgumentTypeEnum.Executable, '', script, [], CustomScriptService) + return + + project = self._search_project_json(env.working_directory) + if project is not None: + project = f'{project}.json' + + if project is None: + return + + config.add_json_file(project, optional=True, output=False) + + def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC): + config.add_json_file('cpl-workspace.json', path=env.working_directory, optional=True, output=False) + self._read_cpl_environment(config, env) + + def configure_services(self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC): + pass diff --git a/src/cpl_core/utils/pip.py b/src/cpl_core/utils/pip.py index bea3da12..c0ebf062 100644 --- a/src/cpl_core/utils/pip.py +++ b/src/cpl_core/utils/pip.py @@ -4,19 +4,22 @@ import sys from contextlib import suppress from typing import Optional +from cpl_core.console import Console + class Pip: r"""Executes pip commands""" _executable = sys.executable _env = os.environ - _is_venv = False """Getter""" + @classmethod def get_executable(cls) -> str: return cls._executable """Setter""" + @classmethod def set_executable(cls, executable: str): r"""Sets the executable @@ -26,25 +29,28 @@ class Pip: executable: :class:`str` The python command """ - if executable is not None and executable != sys.executable: - cls._executable = executable - if os.path.islink(cls._executable): - cls._is_venv = True - path = os.path.dirname(os.path.dirname(cls._executable)) - cls._env = os.environ - if sys.platform == 'win32': - cls._env['PATH'] = f'{path}\\bin' + os.pathsep + os.environ.get('PATH', '') - else: - cls._env['PATH'] = f'{path}/bin' + os.pathsep + os.environ.get('PATH', '') - cls._env['VIRTUAL_ENV'] = path + if executable is None or executable == sys.executable: + return + + cls._executable = executable + if not os.path.islink(cls._executable): + return + + path = os.path.dirname(os.path.dirname(cls._executable)) + cls._env = os.environ + if sys.platform == 'win32': + cls._env['PATH'] = f'{path}\\bin' + os.pathsep + os.environ.get('PATH', '') + else: + cls._env['PATH'] = f'{path}/bin' + os.pathsep + os.environ.get('PATH', '') + cls._env['VIRTUAL_ENV'] = path @classmethod def reset_executable(cls): r"""Resets the executable to system standard""" cls._executable = sys.executable - cls._is_venv = False """Public utils functions""" + @classmethod def get_package(cls, package: str) -> Optional[str]: r"""Gets given package py local pip list @@ -60,8 +66,6 @@ class Pip: result = None with suppress(Exception): args = [cls._executable, "-m", "pip", "show", package] - if cls._is_venv: - args = ["pip", "show", package] result = subprocess.check_output( args, @@ -92,8 +96,6 @@ class Pip: Bytes string of the command result """ args = [cls._executable, "-m", "pip", "list", "--outdated"] - if cls._is_venv: - args = ["pip", "list", "--outdated"] return subprocess.check_output(args, env=cls._env) @@ -115,8 +117,6 @@ class Pip: Stderr of subprocess.run """ pip_args = [cls._executable, "-m", "pip", "install"] - if cls._is_venv: - pip_args = ["pip", "install"] for arg in args: pip_args.append(arg) @@ -126,6 +126,7 @@ class Pip: pip_args.append(source) pip_args.append(package) + print(pip_args) subprocess.run(pip_args, stdout=stdout, stderr=stderr, env=cls._env) @classmethod @@ -142,8 +143,6 @@ class Pip: Stderr of subprocess.run """ args = [cls._executable, "-m", "pip", "uninstall", "--yes", package] - if cls._is_venv: - args = ["pip", "uninstall", "--yes", package] subprocess.run( args, diff --git a/src/tests/custom/general/src/general/general.json b/src/tests/custom/general/src/general/general.json index 448345cd..fc68548e 100644 --- a/src/tests/custom/general/src/general/general.json +++ b/src/tests/custom/general/src/general/general.json @@ -20,7 +20,7 @@ ], "PythonVersion": ">=3.10", "PythonPath": { - "linux": "../../../../../../cpl-env/bin/python3.9", + "linux": "../../venv/bin/python", "win32": "" }, "Classifiers": [] -- 2.45.1 From 323e363b4286270082ae5f3b27efa4bea6636a41 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Mon, 27 Jun 2022 11:50:22 +0200 Subject: [PATCH 126/140] Improved venv support to all related commands --- src/cpl_cli/command/install_service.py | 21 ++----------- src/cpl_cli/command/new_service.py | 31 +++++++++++++++++-- src/cpl_cli/command/uninstall_service.py | 4 +-- src/cpl_cli/command/update_service.py | 4 ++- .../configuration/venv_helper_service.py | 28 +++++++++++++++++ src/cpl_cli/startup_argument_extension.py | 3 +- unittests/unittests_cli/new_test_case.py | 18 ++++++++--- 7 files changed, 81 insertions(+), 28 deletions(-) diff --git a/src/cpl_cli/command/install_service.py b/src/cpl_cli/command/install_service.py index ec27a067..43db92b9 100644 --- a/src/cpl_cli/command/install_service.py +++ b/src/cpl_cli/command/install_service.py @@ -58,22 +58,6 @@ class InstallService(CommandABC): def _wait(self, t: int, *args, source: str = None, stdout=None, stderr=None): time.sleep(t) - def _init_venv(self): - if self._is_virtual: - return - venv_path = os.path.abspath(os.path.join(self._env.working_directory, self._project_settings.python_executable)) - - if not os.path.exists(venv_path): - Console.spinner( - f'Creating venv {venv_path}', - VenvHelper.create_venv, - venv_path, - text_foreground_color=ForegroundColorEnum.green, - spinner_foreground_color=ForegroundColorEnum.cyan - ) - - Pip.set_executable(venv_path) - def _install_project(self): """ Installs dependencies of CPl project @@ -211,11 +195,12 @@ class InstallService(CommandABC): args.remove('simulate') Console.write_line('Running in simulation mode:') - self._init_venv() + VenvHelper.init_venv(self._is_virtual, self._env, self._project_settings) if len(args) == 0: self._install_project() else: self._install_package(args[0]) - # shutil.rmtree(os.path.abspath(os.path.join(self._env.working_directory, self._project_settings.python_executable))) + if not self._is_virtual: + Pip.reset_executable() diff --git a/src/cpl_cli/command/new_service.py b/src/cpl_cli/command/new_service.py index 73f50ced..e01bbf92 100644 --- a/src/cpl_cli/command/new_service.py +++ b/src/cpl_cli/command/new_service.py @@ -6,6 +6,7 @@ from typing import Optional from packaging import version import cpl_core +from cpl_cli.configuration.venv_helper_service import VenvHelper from cpl_cli.source_creator.unittest_builder import UnittestBuilder from cpl_core.configuration.configuration_abc import ConfigurationABC @@ -36,7 +37,7 @@ class NewService(CommandABC): self._config = configuration self._env = self._config.environment - self._workspace = self._config.get_configuration(WorkspaceSettings) + self._workspace: WorkspaceSettings = self._config.get_configuration(WorkspaceSettings) self._project: ProjectSettings = ProjectSettings() self._project_dict = {} self._build: BuildSettings = BuildSettings() @@ -51,6 +52,7 @@ class NewService(CommandABC): self._use_startup: bool = False self._use_service_providing: bool = False self._use_async: bool = False + self._use_venv: bool = False @property def help_message(self) -> str: @@ -107,7 +109,7 @@ class NewService(CommandABC): ], ProjectSettingsNameEnum.python_version.value: f'>={sys.version.split(" ")[0]}', ProjectSettingsNameEnum.python_path.value: { - sys.platform: '' + sys.platform: '../../venv/bin/python' if self._use_venv else '' }, ProjectSettingsNameEnum.classifiers.value: [] } @@ -275,6 +277,22 @@ class NewService(CommandABC): except Exception as e: Console.error('Could not create project', str(e)) + def _create_venv(self): + + project = self._project.name + if self._workspace is not None: + project = self._workspace.default_project + + if self._env.working_directory.endswith(project): + project = '' + + VenvHelper.init_venv( + False, + self._env, + self._project, + explicit_path=os.path.join(self._env.working_directory, project, self._project.python_executable.replace('../', '')) + ) + def execute(self, args: list[str]): """ Entry point of command @@ -308,6 +326,9 @@ class NewService(CommandABC): if 'service-providing' in args: self._use_service_providing = True args.remove('service-providing') + if 'venv' in args: + self._use_venv = True + args.remove('venv') console = self._config.get_configuration(ProjectTypeEnum.console.value) library = self._config.get_configuration(ProjectTypeEnum.library.value) @@ -316,16 +337,22 @@ class NewService(CommandABC): self._name = console self._schematic = ProjectTypeEnum.console.value self._console(args) + if self._use_venv: + self._create_venv() elif console is None and library is not None and unittest is None: self._name = library self._schematic = ProjectTypeEnum.library.value self._library(args) + if self._use_venv: + self._create_venv() elif console is None and library is None and unittest is not None: self._name = unittest self._schematic = ProjectTypeEnum.unittest.value self._unittest(args) + if self._use_venv: + self._create_venv() else: self._help('Usage: cpl new [options]') diff --git a/src/cpl_cli/command/uninstall_service.py b/src/cpl_cli/command/uninstall_service.py index f2b88d5f..ab83dcbd 100644 --- a/src/cpl_cli/command/uninstall_service.py +++ b/src/cpl_cli/command/uninstall_service.py @@ -4,6 +4,7 @@ import subprocess import textwrap import time +from cpl_cli.configuration.venv_helper_service import VenvHelper from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.console.console import Console from cpl_core.console.foreground_color_enum import ForegroundColorEnum @@ -71,8 +72,7 @@ class UninstallService(CommandABC): args.remove('--simulate') Console.write_line('Running in simulation mode:') - if not self._is_virtual: - Pip.set_executable(self._project_settings.python_executable) + VenvHelper.init_venv(self._is_virtual, self._env, self._project_settings) package = args[0] is_in_dependencies = False diff --git a/src/cpl_cli/command/update_service.py b/src/cpl_cli/command/update_service.py index 3b1895f5..5ce2df95 100644 --- a/src/cpl_cli/command/update_service.py +++ b/src/cpl_cli/command/update_service.py @@ -3,6 +3,7 @@ import os import subprocess import textwrap +from cpl_cli.configuration.venv_helper_service import VenvHelper from cpl_core.configuration.configuration_abc import ConfigurationABC from cpl_core.console.console import Console from cpl_core.console.foreground_color_enum import ForegroundColorEnum @@ -168,7 +169,8 @@ class UpdateService(CommandABC): Console.write_line('Running in simulation mode:') self._is_simulation = True - Pip.set_executable(self._project_settings.python_executable) + VenvHelper.init_venv(False, self._env, self._project_settings) + self._check_project_dependencies() self._check_outdated() Pip.reset_executable() diff --git a/src/cpl_cli/configuration/venv_helper_service.py b/src/cpl_cli/configuration/venv_helper_service.py index fcc6b9b9..28a59171 100644 --- a/src/cpl_cli/configuration/venv_helper_service.py +++ b/src/cpl_cli/configuration/venv_helper_service.py @@ -2,9 +2,37 @@ import os import subprocess import sys +from cpl_cli.configuration import ProjectSettings +from cpl_core.environment import ApplicationEnvironmentABC + +from cpl_core.utils import Pip + +from cpl_core.console import Console, ForegroundColorEnum + class VenvHelper: + @staticmethod + def init_venv(is_virtual: bool, env: ApplicationEnvironmentABC, project_settings: ProjectSettings, explicit_path=None): + if is_virtual: + return + + venv_path = os.path.abspath(os.path.join(env.working_directory, project_settings.python_executable)) + + if explicit_path is not None: + venv_path = os.path.abspath(explicit_path) + + if not os.path.exists(venv_path): + Console.spinner( + f'Creating venv: {venv_path}', + VenvHelper.create_venv, + venv_path, + text_foreground_color=ForegroundColorEnum.green, + spinner_foreground_color=ForegroundColorEnum.cyan + ) + + Pip.set_executable(venv_path) + @staticmethod def create_venv(path): subprocess.run( diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index 8e795305..e3f1fef4 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -50,7 +50,8 @@ class StartupArgumentExtension(StartupExtensionABC): .add_console_argument(ArgumentTypeEnum.Flag, '--', 'application-base', ['ab', 'AB']) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'startup', ['s', 'S']) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'service-providing', ['sp', 'SP']) \ - .add_console_argument(ArgumentTypeEnum.Flag, '--', 'nothing', ['n', 'N']) + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'nothing', ['n', 'N']) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'venv', ['v', 'V']) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'publish', ['p', 'P'], PublishService, True, validators=[ProjectValidator]) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'remove', ['r', 'R'], RemoveService, True, validators=[WorkspaceValidator]) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) diff --git a/unittests/unittests_cli/new_test_case.py b/unittests/unittests_cli/new_test_case.py index 4125993d..b2b24177 100644 --- a/unittests/unittests_cli/new_test_case.py +++ b/unittests/unittests_cli/new_test_case.py @@ -12,10 +12,15 @@ class NewTestCase(unittest.TestCase): def setUp(self): os.chdir(os.path.abspath(PLAYGROUND_PATH)) - def _test_project(self, project_type: str, name: str, *args): + def _test_project(self, project_type: str, name: str, *args, test_venv=False): CLICommands.new(project_type, name, *args) workspace_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, name)) self.assertTrue(os.path.exists(workspace_path)) + if test_venv: + self.assertTrue(os.path.exists(os.path.join(workspace_path, 'venv'))) + self.assertTrue(os.path.exists(os.path.join(workspace_path, 'venv/bin'))) + self.assertTrue(os.path.exists(os.path.join(workspace_path, 'venv/bin/python'))) + self.assertTrue(os.path.islink(os.path.join(workspace_path, 'venv/bin/python'))) project_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, name, 'src', String.convert_to_snake_case(name))) self.assertTrue(os.path.exists(project_path)) @@ -38,11 +43,16 @@ class NewTestCase(unittest.TestCase): else: self.assertFalse(os.path.isfile(os.path.join(project_path, f'test_case.py'))) - def _test_sub_project(self, project_type: str, name: str, workspace_name: str, *args): + def _test_sub_project(self, project_type: str, name: str, workspace_name: str, *args, test_venv=False): os.chdir(os.path.abspath(os.path.join(os.getcwd(), workspace_name))) CLICommands.new(project_type, name, *args) workspace_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, workspace_name)) self.assertTrue(os.path.exists(workspace_path)) + if test_venv: + self.assertTrue(os.path.exists(os.path.join(workspace_path, 'venv'))) + self.assertTrue(os.path.exists(os.path.join(workspace_path, 'venv/bin'))) + self.assertTrue(os.path.exists(os.path.join(workspace_path, 'venv/bin/python'))) + self.assertTrue(os.path.islink(os.path.join(workspace_path, 'venv/bin/python'))) project_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, workspace_name, 'src', String.convert_to_snake_case(name))) self.assertTrue(os.path.exists(project_path)) @@ -76,7 +86,7 @@ class NewTestCase(unittest.TestCase): os.chdir(os.path.abspath(os.path.join(os.getcwd(), '../'))) def test_console(self): - self._test_project('console', 'test-console', '--ab', '--s') + self._test_project('console', 'test-console', '--ab', '--s', '--venv', test_venv=True) def test_console_without_s(self): self._test_project('console', 'test-console-without-s', '--ab') @@ -88,7 +98,7 @@ class NewTestCase(unittest.TestCase): self._test_project('console', 'test-console-without-anything', '--n') def test_sub_console(self): - self._test_sub_project('console', 'test-sub-console', 'test-console', '--ab', '--s', '--sp') + self._test_sub_project('console', 'test-sub-console', 'test-console', '--ab', '--s', '--sp', '--venv', test_venv=True) def test_library(self): self._test_project('library', 'test-library', '--ab', '--s', '--sp') -- 2.45.1 From cbd2964f42d3752329faf4f825377cab3d6b4e24 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Mon, 27 Jun 2022 20:02:01 +0200 Subject: [PATCH 127/140] Added dev-dependencies to install command --- src/cpl_cli/command/install_service.py | 25 +++++++++++++++---- src/cpl_cli/configuration/project_settings.py | 8 ++++++ .../project_settings_name_enum.py | 1 + src/cpl_cli/configuration/settings_helper.py | 1 + src/cpl_cli/startup_argument_extension.py | 2 ++ src/cpl_core/utils/pip.py | 1 - .../custom/general/src/general/general.json | 3 +++ 7 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/cpl_cli/command/install_service.py b/src/cpl_cli/command/install_service.py index 43db92b9..bc7ee764 100644 --- a/src/cpl_cli/command/install_service.py +++ b/src/cpl_cli/command/install_service.py @@ -42,6 +42,7 @@ class InstallService(CommandABC): self._is_simulation = False self._is_virtual = False + self._is_dev = False self._project_file = f'{self._project_settings.name}.json' @@ -107,7 +108,11 @@ class InstallService(CommandABC): package_version = package.split('==')[1] to_remove_list = [] - for dependency in self._project_settings.dependencies: + deps = self._project_settings.dependencies + if self._is_dev: + deps = self._project_settings.dev_dependencies + + for dependency in deps: dependency_version = '' if '==' in dependency: @@ -121,7 +126,10 @@ class InstallService(CommandABC): is_already_in_project = True for to_remove in to_remove_list: - self._project_settings.dependencies.remove(to_remove) + if self._is_dev: + self._project_settings.dev_dependencies.remove(to_remove) + else: + self._project_settings.dependencies.remove(to_remove) local_package = Pip.get_package(package) if local_package is not None and local_package in self._project_settings.dependencies: @@ -133,9 +141,9 @@ class InstallService(CommandABC): return Console.spinner( - f'Installing: {package}', + f'Installing: {package}' if not self._is_dev else f'Installing dev: {package}', Pip.install if not self._is_virtual else self._wait, package if not self._is_virtual else 2, - source=self._cli_settings.pip_path if 'cpl-' in package else None, + source=self._cli_settings.pip_path if 'cpl-' in package or 'cpl_' in package else None, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, text_foreground_color=ForegroundColorEnum.green, @@ -165,7 +173,10 @@ class InstallService(CommandABC): if '\r' in new_name: new_name = new_name.replace('\r', '') - self._project_settings.dependencies.append(new_name) + if self._is_dev: + self._project_settings.dev_dependencies.append(new_name) + else: + self._project_settings.dependencies.append(new_name) if not self._is_simulation: config = { @@ -185,6 +196,10 @@ class InstallService(CommandABC): :param args: :return: """ + if 'dev' in args: + self._is_dev = True + args.remove('dev') + if 'virtual' in args: self._is_virtual = True args.remove('virtual') diff --git a/src/cpl_cli/configuration/project_settings.py b/src/cpl_cli/configuration/project_settings.py index 94d490c6..98d0fa97 100644 --- a/src/cpl_cli/configuration/project_settings.py +++ b/src/cpl_cli/configuration/project_settings.py @@ -28,6 +28,7 @@ class ProjectSettings(ConfigurationModelABC): self._license_name: Optional[str] = None self._license_description: Optional[str] = None self._dependencies: Optional[list[str]] = None + self._dev_dependencies: Optional[list[str]] = None self._python_version: Optional[str] = None self._python_path: Optional[str] = None self._python_executable: Optional[str] = None @@ -81,6 +82,10 @@ class ProjectSettings(ConfigurationModelABC): def dependencies(self) -> list[str]: return self._dependencies + @property + def dev_dependencies(self) -> list[str]: + return self._dev_dependencies + @property def python_version(self) -> str: return self._python_version @@ -111,6 +116,9 @@ class ProjectSettings(ConfigurationModelABC): self._license_name = settings[ProjectSettingsNameEnum.license_name.value] self._license_description = settings[ProjectSettingsNameEnum.license_description.value] self._dependencies = settings[ProjectSettingsNameEnum.dependencies.value] + if ProjectSettingsNameEnum.dev_dependencies.value not in settings: + settings[ProjectSettingsNameEnum.dev_dependencies.value] = [] + self._dev_dependencies = settings[ProjectSettingsNameEnum.dev_dependencies.value] self._python_version = settings[ProjectSettingsNameEnum.python_version.value] self._python_path = settings[ProjectSettingsNameEnum.python_path.value] diff --git a/src/cpl_cli/configuration/project_settings_name_enum.py b/src/cpl_cli/configuration/project_settings_name_enum.py index 7b4b6557..17d2319b 100644 --- a/src/cpl_cli/configuration/project_settings_name_enum.py +++ b/src/cpl_cli/configuration/project_settings_name_enum.py @@ -14,6 +14,7 @@ class ProjectSettingsNameEnum(Enum): license_name = 'LicenseName' license_description = 'LicenseDescription' dependencies = 'Dependencies' + dev_dependencies = 'DevDependencies' python_version = 'PythonVersion' python_path = 'PythonPath' classifiers = 'Classifiers' diff --git a/src/cpl_cli/configuration/settings_helper.py b/src/cpl_cli/configuration/settings_helper.py index 8a7c47ad..660c1285 100644 --- a/src/cpl_cli/configuration/settings_helper.py +++ b/src/cpl_cli/configuration/settings_helper.py @@ -26,6 +26,7 @@ class SettingsHelper: ProjectSettingsNameEnum.license_name.value: project.license_name, ProjectSettingsNameEnum.license_description.value: project.license_description, ProjectSettingsNameEnum.dependencies.value: project.dependencies, + ProjectSettingsNameEnum.dev_dependencies.value: project.dev_dependencies, ProjectSettingsNameEnum.python_version.value: project.python_version, ProjectSettingsNameEnum.python_path.value: project.python_path, ProjectSettingsNameEnum.classifiers.value: project.classifiers diff --git a/src/cpl_cli/startup_argument_extension.py b/src/cpl_cli/startup_argument_extension.py index e3f1fef4..de0047fd 100644 --- a/src/cpl_cli/startup_argument_extension.py +++ b/src/cpl_cli/startup_argument_extension.py @@ -40,6 +40,7 @@ class StartupArgumentExtension(StartupExtensionABC): .add_console_argument(ArgumentTypeEnum.Variable, '', 'thread', ['t', 'T'], ' ') \ .add_console_argument(ArgumentTypeEnum.Variable, '', 'validator', ['v', 'V'], ' ') config.create_console_argument(ArgumentTypeEnum.Executable, '', 'install', ['i', 'I'], InstallService, True, validators=[ProjectValidator]) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'dev', ['d', 'D']) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'new', ['n', 'N'], NewService, True) \ @@ -58,6 +59,7 @@ class StartupArgumentExtension(StartupExtensionABC): config.create_console_argument(ArgumentTypeEnum.Executable, '', 'run', [], RunService, True, validators=[ProjectValidator]) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'start', ['s', 'S'], StartService, True, validators=[ProjectValidator]) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'uninstall', ['ui', 'UI'], UninstallService, True, validators=[ProjectValidator]) \ + .add_console_argument(ArgumentTypeEnum.Flag, '--', 'dev', ['d', 'D']) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'virtual', ['v', 'V']) \ .add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S']) config.create_console_argument(ArgumentTypeEnum.Executable, '', 'update', ['u', 'U'], UpdateService, True, validators=[ProjectValidator]) \ diff --git a/src/cpl_core/utils/pip.py b/src/cpl_core/utils/pip.py index c0ebf062..7d97e496 100644 --- a/src/cpl_core/utils/pip.py +++ b/src/cpl_core/utils/pip.py @@ -126,7 +126,6 @@ class Pip: pip_args.append(source) pip_args.append(package) - print(pip_args) subprocess.run(pip_args, stdout=stdout, stderr=stderr, env=cls._env) @classmethod diff --git a/src/tests/custom/general/src/general/general.json b/src/tests/custom/general/src/general/general.json index fc68548e..4af74368 100644 --- a/src/tests/custom/general/src/general/general.json +++ b/src/tests/custom/general/src/general/general.json @@ -18,6 +18,9 @@ "Dependencies": [ "cpl_core==2022.6.1" ], + "DevDependencies": [ + "cpl-cli==2022.6.17.dev10" + ], "PythonVersion": ">=3.10", "PythonPath": { "linux": "../../venv/bin/python", -- 2.45.1 From 0710b25317db3761876fc586a5ef9609688537c2 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Mon, 27 Jun 2022 20:04:19 +0200 Subject: [PATCH 128/140] Added dev-dependencies to uninstall command --- src/cpl_cli/command/uninstall_service.py | 22 +++++++++++++++---- .../custom/general/src/general/general.json | 4 +--- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/cpl_cli/command/uninstall_service.py b/src/cpl_cli/command/uninstall_service.py index ab83dcbd..585f728a 100644 --- a/src/cpl_cli/command/uninstall_service.py +++ b/src/cpl_cli/command/uninstall_service.py @@ -36,6 +36,8 @@ class UninstallService(CommandABC): self._is_simulating = False self._is_virtual = False + self._is_dev = False + self._project_file = f'{self._project_settings.name}.json' @property @@ -62,6 +64,10 @@ class UninstallService(CommandABC): Console.error(f'Usage: cpl uninstall ') return + if 'dev' in args: + self._is_dev = True + args.remove('dev') + if '--virtual' in args: self._is_virtual = True args.remove('--virtual') @@ -82,7 +88,11 @@ class UninstallService(CommandABC): else: pip_package = package - for dependency in self._project_settings.dependencies: + deps = self._project_settings.dependencies + if self._is_dev: + deps = self._project_settings.dev_dependencies + + for dependency in deps: if package in dependency: is_in_dependencies = True package = dependency @@ -95,7 +105,7 @@ class UninstallService(CommandABC): package = pip_package Console.spinner( - f'Uninstalling: {package}', + f'Uninstalling: {package}' if not self._is_dev else f'Uninstalling dev: {package}', Pip.uninstall if not self._is_virtual else self._wait, package if not self._is_virtual else 2, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, @@ -103,8 +113,12 @@ class UninstallService(CommandABC): spinner_foreground_color=ForegroundColorEnum.cyan ) - if package in self._project_settings.dependencies: - self._project_settings.dependencies.remove(package) + deps = self._project_settings.dependencies + if self._is_dev: + deps = self._project_settings.dev_dependencies + + if package in deps: + deps.remove(package) if not self._is_simulating: config = { ProjectSettings.__name__: SettingsHelper.get_project_settings_dict(self._project_settings), diff --git a/src/tests/custom/general/src/general/general.json b/src/tests/custom/general/src/general/general.json index 4af74368..3c53ccda 100644 --- a/src/tests/custom/general/src/general/general.json +++ b/src/tests/custom/general/src/general/general.json @@ -18,9 +18,7 @@ "Dependencies": [ "cpl_core==2022.6.1" ], - "DevDependencies": [ - "cpl-cli==2022.6.17.dev10" - ], + "DevDependencies": [], "PythonVersion": ">=3.10", "PythonPath": { "linux": "../../venv/bin/python", -- 2.45.1 From db29ad36fe86a21d383488c4053d0509bf4732eb Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Mon, 27 Jun 2022 20:05:34 +0200 Subject: [PATCH 129/140] Added dev-deps support to cpl install without package --- src/cpl_cli/command/install_service.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/cpl_cli/command/install_service.py b/src/cpl_cli/command/install_service.py index bc7ee764..b68c20dc 100644 --- a/src/cpl_cli/command/install_service.py +++ b/src/cpl_cli/command/install_service.py @@ -1,10 +1,11 @@ import json import os -import shutil import subprocess import textwrap import time +from packaging import version + from cpl_cli.cli_settings import CLISettings from cpl_cli.command_abc import CommandABC from cpl_cli.configuration.build_settings import BuildSettings @@ -17,7 +18,6 @@ from cpl_core.console.console import Console from cpl_core.console.foreground_color_enum import ForegroundColorEnum from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC from cpl_core.utils.pip import Pip -from packaging import version class InstallService(CommandABC): @@ -83,6 +83,17 @@ class InstallService(CommandABC): spinner_foreground_color=ForegroundColorEnum.cyan ) + for dependency in self._project_settings.dev_dependencies: + Console.spinner( + f'Installing dev: {dependency}', + Pip.install if not self._is_virtual else self._wait, dependency if not self._is_virtual else 2, + source=self._cli_settings.pip_path if 'cpl-' in dependency else None, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + text_foreground_color=ForegroundColorEnum.green, + spinner_foreground_color=ForegroundColorEnum.cyan + ) + if not self._is_virtual: Pip.reset_executable() -- 2.45.1 From 8692686cb59af41a76ace7233df50ced6bed8fcc Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Mon, 27 Jun 2022 20:07:52 +0200 Subject: [PATCH 130/140] Added dev-deps support to new command --- src/cpl_cli/command/new_service.py | 4 ++++ src/cpl_cli/cpl-cli.json | 1 + src/cpl_core/cpl-core.json | 1 + src/cpl_query/cpl-query.json | 1 + 4 files changed, 7 insertions(+) diff --git a/src/cpl_cli/command/new_service.py b/src/cpl_cli/command/new_service.py index e01bbf92..387cf8ce 100644 --- a/src/cpl_cli/command/new_service.py +++ b/src/cpl_cli/command/new_service.py @@ -5,6 +5,7 @@ from typing import Optional from packaging import version +import cpl_cli import cpl_core from cpl_cli.configuration.venv_helper_service import VenvHelper from cpl_cli.source_creator.unittest_builder import UnittestBuilder @@ -107,6 +108,9 @@ class NewService(CommandABC): ProjectSettingsNameEnum.dependencies.value: [ f'cpl-core>={version.parse(cpl_core.__version__)}' ], + ProjectSettingsNameEnum.dev_dependencies.value: [ + f'cpl-cli>={version.parse(cpl_cli.__version__)}' + ], ProjectSettingsNameEnum.python_version.value: f'>={sys.version.split(" ")[0]}', ProjectSettingsNameEnum.python_path.value: { sys.platform: '../../venv/bin/python' if self._use_venv else '' diff --git a/src/cpl_cli/cpl-cli.json b/src/cpl_cli/cpl-cli.json index f0b0ebb9..95803358 100644 --- a/src/cpl_cli/cpl-cli.json +++ b/src/cpl_cli/cpl-cli.json @@ -18,6 +18,7 @@ "Dependencies": [ "cpl-core>=2022.6.17.dev8" ], + "DevDependencies": [], "PythonVersion": ">=3.10", "PythonPath": { "linux": "../../venv" diff --git a/src/cpl_core/cpl-core.json b/src/cpl_core/cpl-core.json index 37028396..fb2e6f38 100644 --- a/src/cpl_core/cpl-core.json +++ b/src/cpl_core/cpl-core.json @@ -28,6 +28,7 @@ "watchdog==2.1.7", "wheel==0.37.1" ], + "DevDependencies": [], "PythonVersion": ">=3.10", "PythonPath": {}, "Classifiers": [] diff --git a/src/cpl_query/cpl-query.json b/src/cpl_query/cpl-query.json index 355d295b..3fde0ce7 100644 --- a/src/cpl_query/cpl-query.json +++ b/src/cpl_query/cpl-query.json @@ -16,6 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [], + "DevDependencies": [], "PythonVersion": ">=3.10", "PythonPath": {}, "Classifiers": [] -- 2.45.1 From e9fdd201812b1b8e3a4b85797cc89db442d42a3f Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Mon, 27 Jun 2022 20:16:37 +0200 Subject: [PATCH 131/140] Updated unittests --- unittests/unittests_cli/install_test_case.py | 34 +++++++++++++++++++ .../unittests_cli/uninstall_test_case.py | 25 +++++++++++++- unittests/unittests_shared/cli_commands.py | 8 ++--- 3 files changed, 62 insertions(+), 5 deletions(-) diff --git a/unittests/unittests_cli/install_test_case.py b/unittests/unittests_cli/install_test_case.py index ceefbf4f..527256d1 100644 --- a/unittests/unittests_cli/install_test_case.py +++ b/unittests/unittests_cli/install_test_case.py @@ -64,6 +64,28 @@ class InstallTestCase(unittest.TestCase): self.assertIn(package_name, packages) self.assertEqual(version, packages[package_name]) + def test_dev_install_package(self): + version = '1.7.3' + package_name = 'discord.py' + package = f'{package_name}=={version}' + CLICommands.install(package, is_dev=True) + settings = self._get_project_settings() + self.assertNotEqual(settings, {}) + self.assertIn('ProjectSettings', settings) + self.assertIn('Dependencies', settings['ProjectSettings']) + self.assertIn('DevDependencies', settings['ProjectSettings']) + self.assertNotIn( + package, + settings['ProjectSettings']['Dependencies'] + ) + self.assertIn( + package, + settings['ProjectSettings']['DevDependencies'] + ) + packages = self._get_installed_packages() + self.assertIn(package_name, packages) + self.assertEqual(version, packages[package_name]) + def _test_install_all(self): version = '1.7.3' package_name = 'discord.py' @@ -71,21 +93,33 @@ class InstallTestCase(unittest.TestCase): settings = self._get_project_settings() self.assertIn('ProjectSettings', settings) self.assertIn('Dependencies', settings['ProjectSettings']) + self.assertIn('DevDependencies', settings['ProjectSettings']) + self.assertNotIn( + package, + settings['ProjectSettings']['Dependencies'] + ) + self.assertIn('DevDependencies', settings['ProjectSettings']) self.assertNotIn( package, settings['ProjectSettings']['Dependencies'] ) settings['ProjectSettings']['Dependencies'].append(package) + settings['ProjectSettings']['DevDependencies'].append(package) self._save_project_settings(settings) CLICommands.install() new_settings = self._get_project_settings() self.assertEqual(settings, new_settings) self.assertIn('ProjectSettings', new_settings) self.assertIn('Dependencies', new_settings['ProjectSettings']) + self.assertIn('DevDependencies', new_settings['ProjectSettings']) self.assertIn( package, new_settings['ProjectSettings']['Dependencies'] ) + self.assertIn( + package, + new_settings['ProjectSettings']['DevDependencies'] + ) packages = self._get_installed_packages() self.assertIn(package_name, packages) self.assertEqual(version, packages[package_name]) diff --git a/unittests/unittests_cli/uninstall_test_case.py b/unittests/unittests_cli/uninstall_test_case.py index ac29aaf3..d81bddf9 100644 --- a/unittests/unittests_cli/uninstall_test_case.py +++ b/unittests/unittests_cli/uninstall_test_case.py @@ -33,7 +33,6 @@ class UninstallTestCase(unittest.TestCase): # create projects CLICommands.new('console', self._source, '--ab', '--s') os.chdir(os.path.join(os.getcwd(), self._source)) - CLICommands.install(self._package) def cleanUp(self): # remove projects @@ -47,6 +46,7 @@ class UninstallTestCase(unittest.TestCase): return dict([tuple(r.decode().split('==')) for r in reqs.split()]) def test_uninstall(self): + CLICommands.install(self._package) CLICommands.uninstall(self._package) settings = self._get_project_settings() self.assertNotEqual(settings, {}) @@ -56,5 +56,28 @@ class UninstallTestCase(unittest.TestCase): self._package, settings['ProjectSettings']['Dependencies'] ) + self.assertNotIn( + self._package, + settings['ProjectSettings']['DevDependencies'] + ) + packages = self._get_installed_packages() + self.assertNotIn(self._package_name, packages) + + def test_dev_uninstall(self): + CLICommands.install(self._package, is_dev=True) + CLICommands.uninstall(self._package, is_dev=True) + settings = self._get_project_settings() + self.assertNotEqual(settings, {}) + self.assertIn('ProjectSettings', settings) + self.assertIn('Dependencies', settings['ProjectSettings']) + self.assertIn('DevDependencies', settings['ProjectSettings']) + self.assertNotIn( + self._package, + settings['ProjectSettings']['Dependencies'] + ) + self.assertNotIn( + self._package, + settings['ProjectSettings']['DevDependencies'] + ) packages = self._get_installed_packages() self.assertNotIn(self._package_name, packages) diff --git a/unittests/unittests_shared/cli_commands.py b/unittests/unittests_shared/cli_commands.py index a458390c..70570bc7 100644 --- a/unittests/unittests_shared/cli_commands.py +++ b/unittests/unittests_shared/cli_commands.py @@ -44,12 +44,12 @@ class CLICommands: cls._run('generate', schematic, name, output=output) @classmethod - def install(cls, package: str = None, output=False): + def install(cls, package: str = None, is_dev=False, output=False): if package is None: cls._run('install', output=output) return - cls._run('install', package, output=output) + cls._run('install', package, '--dev' if is_dev else '', output=output) @classmethod def new(cls, project_type: str, name: str, *args, output=False): @@ -75,8 +75,8 @@ class CLICommands: cls._run('start', output=output) @classmethod - def uninstall(cls, package: str, output=False): - cls._run('uninstall', package, output=output) + def uninstall(cls, package: str, is_dev=False, output=False): + cls._run('uninstall', package, '--dev' if is_dev else '', output=output) @classmethod def update(cls, output=False): -- 2.45.1 From 63ad13e09a641b6d5c7ac93fa60284beee6c6155 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Mon, 27 Jun 2022 20:46:01 +0200 Subject: [PATCH 132/140] Improved version handling of set-version --- tools/set_version/application.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/set_version/application.py b/tools/set_version/application.py index f052750e..a35e7f0a 100644 --- a/tools/set_version/application.py +++ b/tools/set_version/application.py @@ -55,9 +55,13 @@ class Application(ApplicationABC): return try: + version[VersionSettingsNameEnum.major.value] = branch.split('.')[0] version[VersionSettingsNameEnum.minor.value] = branch.split('.')[1] - version[VersionSettingsNameEnum.micro.value] = f'{branch.split(".")[2]}{suffix}' + if len(branch.split('.')) == 2: + version[VersionSettingsNameEnum.micro.value] = 0 + else: + version[VersionSettingsNameEnum.micro.value] = f'{branch.split(".")[2]}{suffix}' except Exception as e: Console.error(f'Branch {branch} does not contain valid version') return -- 2.45.1 From 4b9e428abb57156cd0d2e8ab3f69818fa00474da Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Mon, 27 Jun 2022 20:52:27 +0200 Subject: [PATCH 133/140] Updated tools --- tools/set_pip_urls/set-pip-urls.json | 2 +- tools/set_version/application.py | 2 +- tools/set_version/set-version.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/set_pip_urls/set-pip-urls.json b/tools/set_pip_urls/set-pip-urls.json index 644962a9..9a03d92e 100644 --- a/tools/set_pip_urls/set-pip-urls.json +++ b/tools/set_pip_urls/set-pip-urls.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev8" + "cpl-core>=2022.6.0" ], "PythonVersion": ">=3.10.4", "PythonPath": {}, diff --git a/tools/set_version/application.py b/tools/set_version/application.py index a35e7f0a..1ca6425a 100644 --- a/tools/set_version/application.py +++ b/tools/set_version/application.py @@ -59,7 +59,7 @@ class Application(ApplicationABC): version[VersionSettingsNameEnum.major.value] = branch.split('.')[0] version[VersionSettingsNameEnum.minor.value] = branch.split('.')[1] if len(branch.split('.')) == 2: - version[VersionSettingsNameEnum.micro.value] = 0 + version[VersionSettingsNameEnum.micro.value] = f'0{suffix}' else: version[VersionSettingsNameEnum.micro.value] = f'{branch.split(".")[2]}{suffix}' except Exception as e: diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index 5ac3d70b..60a67909 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev8", + "cpl-core>=2022.6.0", "gitpython==3.1.27" ], "PythonVersion": ">=3.10.4", -- 2.45.1 From b9e0b7ccd0aa2f47e3dca2cef45bfbe1dd31691b Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Mon, 27 Jun 2022 20:55:44 +0200 Subject: [PATCH 134/140] Build 2022.6.0.rc1 --- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/unittest/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/appsettings.json | 2 +- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl-cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- src/cpl_cli/validators/__init__.py | 4 ++-- src/cpl_core/__init__.py | 4 ++-- src/cpl_core/application/__init__.py | 4 ++-- src/cpl_core/configuration/__init__.py | 4 ++-- src/cpl_core/console/__init__.py | 4 ++-- src/cpl_core/cpl-core.json | 2 +- src/cpl_core/database/__init__.py | 4 ++-- src/cpl_core/database/connection/__init__.py | 4 ++-- src/cpl_core/database/context/__init__.py | 4 ++-- src/cpl_core/dependency_injection/__init__.py | 4 ++-- src/cpl_core/environment/__init__.py | 4 ++-- src/cpl_core/logging/__init__.py | 4 ++-- src/cpl_core/mailing/__init__.py | 4 ++-- src/cpl_core/pipes/__init__.py | 4 ++-- src/cpl_core/time/__init__.py | 4 ++-- src/cpl_core/utils/__init__.py | 4 ++-- src/cpl_query/__init__.py | 4 ++-- src/cpl_query/_query/__init__.py | 4 ++-- src/cpl_query/cpl-query.json | 2 +- src/cpl_query/extension/__init__.py | 4 ++-- tools/set_pip_urls/set-pip-urls.json | 2 +- tools/set_version/set-version.json | 2 +- unittests/unittests/unittests.json | 4 ++-- unittests/unittests_cli/unittests_cli.json | 6 +++--- unittests/unittests_core/unittests_core.json | 4 ++-- unittests/unittests_query/unittests_query.json | 6 +++--- unittests/unittests_shared/unittests_shared.json | 4 ++-- 51 files changed, 99 insertions(+), 99 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index 51dbf5a5..dd9130b0 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -27,4 +27,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 25bbfbe6..16b7f27a 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index 3e4b72ef..09d7467f 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index b284b1eb..a3cfab2b 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index 1d55e913..1a507cb6 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 2844a979..3e5c078c 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 9d5993a1..904dab76 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 73b5e446..0a57dd5c 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index 12090cae..641845d0 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index 528a3ed3..6d25f13a 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index d8b99a19..3311bfb0 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 2cb90ed0..11080dcc 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index e7b146b9..8e2ac7b3 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/unittest/__init__.py b/src/cpl_cli/_templates/new/unittest/__init__.py index 70895e74..1c8d938c 100644 --- a/src/cpl_cli/_templates/new/unittest/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/unittest/source/__init__.py b/src/cpl_cli/_templates/new/unittest/source/__init__.py index 85a5acfd..2ddd261f 100644 --- a/src/cpl_cli/_templates/new/unittest/source/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/new/unittest/source/name/__init__.py b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py index ba02fcf1..dcd5f771 100644 --- a/src/cpl_cli/_templates/new/unittest/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/unittest/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.unittest.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index 4c6c7c23..2f57860d 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/appsettings.json b/src/cpl_cli/appsettings.json index eb80fe1d..18012c59 100644 --- a/src/cpl_cli/appsettings.json +++ b/src/cpl_cli/appsettings.json @@ -1,5 +1,5 @@ { "CLI": { - "PipPath": "https://pip-dev.sh-edraft.de" + "PipPath": "https://pip-exp.sh-edraft.de" } } \ No newline at end of file diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 64d2b8a1..4e8582d7 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index 3ef7fcfd..4ad35d94 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/cpl-cli.json b/src/cpl_cli/cpl-cli.json index 95803358..746514de 100644 --- a/src/cpl_cli/cpl-cli.json +++ b/src/cpl_cli/cpl-cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev10" + "Micro": "0.rc1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.17.dev8" + "cpl-core>=2022.6.0.rc1" ], "DevDependencies": [], "PythonVersion": ">=3.10", diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index b059e535..a4eabf91 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index cb7586fa..065d351d 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index fbcf7624..b5afcf24 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_cli/validators/__init__.py b/src/cpl_cli/validators/__init__.py index 0b420956..3314e33c 100644 --- a/src/cpl_cli/validators/__init__.py +++ b/src/cpl_cli/validators/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.validators' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev10' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev10') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index e985e960..c6641bef 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_core' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index d8ad0d85..5d037a20 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.application' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -28,4 +28,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 8a802ae6..c4028f6a 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -34,4 +34,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index 5b16b63e..fd894853 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -27,4 +27,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/cpl-core.json b/src/cpl_core/cpl-core.json index fb2e6f38..fce735fa 100644 --- a/src/cpl_core/cpl-core.json +++ b/src/cpl_core/cpl-core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev8" + "Micro": "0.rc1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index dfbe4285..f5ac69f3 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -25,4 +25,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index a0e4504c..cb9e5717 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.connection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index 825fbd5f..cf5dd3b8 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.database.context' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -24,4 +24,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 2251a9bf..e79e12df 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.dependency_injection' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -30,4 +30,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 0deabdb2..de305db6 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.environment' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -25,4 +25,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index d0e23b68..8b5baa3a 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.logging' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -27,4 +27,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index 719c40bb..26e7d1ec 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.mailing' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -27,4 +27,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index 0a2735af..ddf90ee8 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.pipes' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -29,4 +29,4 @@ from .to_camel_case_pipe import ToCamelCasePipe from .to_snake_case_pipe import ToSnakeCasePipe VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index b6e833e1..7d4bbaef 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.time' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -24,4 +24,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 4f51d293..0a8515b5 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_core.utils' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -25,4 +25,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_query/__init__.py b/src/cpl_query/__init__.py index f4bc40d2..3a430fbb 100644 --- a/src/cpl_query/__init__.py +++ b/src/cpl_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_query/_query/__init__.py b/src/cpl_query/_query/__init__.py index 059cab97..53e597a7 100644 --- a/src/cpl_query/_query/__init__.py +++ b/src/cpl_query/_query/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_query._query' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.0rc1' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/src/cpl_query/cpl-query.json b/src/cpl_query/cpl-query.json index 3fde0ce7..ff5a8521 100644 --- a/src/cpl_query/cpl-query.json +++ b/src/cpl_query/cpl-query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev8" + "Micro": "0.rc1" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_query/extension/__init__.py b/src/cpl_query/extension/__init__.py index 76f7b2c6..eb82c545 100644 --- a/src/cpl_query/extension/__init__.py +++ b/src/cpl_query/extension/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_query.extension' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2021 - 2022 sh-edraft.de' -__version__ = '2022.6.17.dev8' +__version__ = '2022.6.0rc1' from collections import namedtuple @@ -27,4 +27,4 @@ from .ordered_iterable_abc import OrderedIterableABC from .ordered_iterable import OrderedIterable VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2022', minor='6', micro='17.dev8') +version_info = VersionInfo(major='2022', minor='6', micro='0.rc1') diff --git a/tools/set_pip_urls/set-pip-urls.json b/tools/set_pip_urls/set-pip-urls.json index 9a03d92e..efbe393a 100644 --- a/tools/set_pip_urls/set-pip-urls.json +++ b/tools/set_pip_urls/set-pip-urls.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.0" + "cpl-core>=2022.6.0.rc1" ], "PythonVersion": ">=3.10.4", "PythonPath": {}, diff --git a/tools/set_version/set-version.json b/tools/set_version/set-version.json index 60a67909..51339ee5 100644 --- a/tools/set_version/set-version.json +++ b/tools/set_version/set-version.json @@ -16,7 +16,7 @@ "LicenseName": "MIT", "LicenseDescription": "MIT, see LICENSE for more details.", "Dependencies": [ - "cpl-core>=2022.6.0", + "cpl-core>=2022.6.0.rc1", "gitpython==3.1.27" ], "PythonVersion": ">=3.10.4", diff --git a/unittests/unittests/unittests.json b/unittests/unittests/unittests.json index 1408486c..988e6bb8 100644 --- a/unittests/unittests/unittests.json +++ b/unittests/unittests/unittests.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev8" + "Micro": "0.rc1" }, "Author": "", "AuthorEmail": "", @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev8" + "cpl-core>=2022.6.0.rc1" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_cli/unittests_cli.json b/unittests/unittests_cli/unittests_cli.json index eecb81c0..24939e77 100644 --- a/unittests/unittests_cli/unittests_cli.json +++ b/unittests/unittests_cli/unittests_cli.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev10" + "Micro": "0.rc1" }, "Author": "", "AuthorEmail": "", @@ -16,8 +16,8 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev8", - "cpl-cli>=2022.6.17.dev10" + "cpl-core>=2022.6.0.rc1", + "cpl-cli>=2022.6.0.rc1" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_core/unittests_core.json b/unittests/unittests_core/unittests_core.json index 0286b34d..983ce9fe 100644 --- a/unittests/unittests_core/unittests_core.json +++ b/unittests/unittests_core/unittests_core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev8" + "Micro": "0.rc1" }, "Author": "", "AuthorEmail": "", @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev8" + "cpl-core>=2022.6.0.rc1" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_query/unittests_query.json b/unittests/unittests_query/unittests_query.json index bbb2aa8f..5b7d1718 100644 --- a/unittests/unittests_query/unittests_query.json +++ b/unittests/unittests_query/unittests_query.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev8" + "Micro": "0.rc1" }, "Author": "", "AuthorEmail": "", @@ -16,8 +16,8 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev8", - "cpl-query>=2022.6.17.dev8" + "cpl-core>=2022.6.0.rc1", + "cpl-query>=2022.6.0.rc1" ], "PythonVersion": ">=3.10.4", "PythonPath": { diff --git a/unittests/unittests_shared/unittests_shared.json b/unittests/unittests_shared/unittests_shared.json index 89c58db2..7d6c385d 100644 --- a/unittests/unittests_shared/unittests_shared.json +++ b/unittests/unittests_shared/unittests_shared.json @@ -4,7 +4,7 @@ "Version": { "Major": "2022", "Minor": "6", - "Micro": "17.dev8" + "Micro": "0.rc1" }, "Author": "", "AuthorEmail": "", @@ -16,7 +16,7 @@ "LicenseName": "", "LicenseDescription": "", "Dependencies": [ - "cpl-core>=2022.6.17.dev8" + "cpl-core>=2022.6.0.rc1" ], "PythonVersion": ">=3.10.4", "PythonPath": { -- 2.45.1 From 4083ac0c14c7ffe07da9f3643ae51183f8c695f4 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Mon, 27 Jun 2022 21:42:34 +0200 Subject: [PATCH 135/140] Build docs and added tutorial files --- cpl-workspace.json | 2 +- docs/build/doctrees/cli.add.doctree | Bin 10353 -> 12431 bytes docs/build/doctrees/cli.build.doctree | Bin 6664 -> 6936 bytes docs/build/doctrees/cli.generate.doctree | Bin 17194 -> 20024 bytes docs/build/doctrees/cli.help.doctree | Bin 7804 -> 7801 bytes docs/build/doctrees/cli.install.doctree | Bin 8619 -> 11948 bytes docs/build/doctrees/cli.new.doctree | Bin 12742 -> 18247 bytes docs/build/doctrees/cli.overview.doctree | Bin 24238 -> 24065 bytes docs/build/doctrees/cli.publish.doctree | Bin 8019 -> 7952 bytes docs/build/doctrees/cli.remove.doctree | Bin 8679 -> 10835 bytes docs/build/doctrees/cli.start.doctree | Bin 3862 -> 3944 bytes docs/build/doctrees/cli.uninstall.doctree | Bin 8305 -> 11753 bytes docs/build/doctrees/cli.update.doctree | Bin 3849 -> 5756 bytes docs/build/doctrees/cli.version.doctree | Bin 3916 -> 3996 bytes docs/build/doctrees/contributing.doctree | Bin 24283 -> 23989 bytes docs/build/doctrees/cpl_cli.doctree | Bin 2867 -> 2978 bytes .../doctrees/cpl_core.application.doctree | Bin 70556 -> 74914 bytes .../doctrees/cpl_core.configuration.doctree | Bin 121819 -> 165504 bytes docs/build/doctrees/cpl_core.console.doctree | Bin 166905 -> 201897 bytes .../cpl_core.database.connection.doctree | Bin 24303 -> 28381 bytes .../cpl_core.database.context.doctree | Bin 32352 -> 36249 bytes docs/build/doctrees/cpl_core.database.doctree | Bin 33983 -> 46162 bytes .../cpl_core.dependency_injection.doctree | Bin 136885 -> 169361 bytes docs/build/doctrees/cpl_core.doctree | Bin 3350 -> 3493 bytes .../doctrees/cpl_core.environment.doctree | Bin 60496 -> 77091 bytes docs/build/doctrees/cpl_core.logging.doctree | Bin 115541 -> 129812 bytes docs/build/doctrees/cpl_core.mailing.doctree | Bin 83881 -> 98631 bytes docs/build/doctrees/cpl_core.pipes.doctree | Bin 0 -> 61778 bytes docs/build/doctrees/cpl_core.time.doctree | Bin 23145 -> 26926 bytes docs/build/doctrees/cpl_core.utils.doctree | Bin 72371 -> 78762 bytes docs/build/doctrees/cpl_query.doctree | Bin 3150 -> 3271 bytes .../doctrees/cpl_query.exceptions.doctree | Bin 20467 -> 23263 bytes .../doctrees/cpl_query.extension.doctree | Bin 276000 -> 303500 bytes docs/build/doctrees/cpl_query.tests.doctree | Bin 50076 -> 0 bytes docs/build/doctrees/environment.pickle | Bin 210738 -> 285878 bytes docs/build/doctrees/getting_started.doctree | Bin 2688 -> 2816 bytes docs/build/doctrees/index.doctree | Bin 4566 -> 4677 bytes docs/build/doctrees/introduction.doctree | Bin 6134 -> 16794 bytes docs/build/doctrees/modules.doctree | Bin 2664 -> 2775 bytes docs/build/doctrees/quickstart.doctree | Bin 23609 -> 23678 bytes docs/build/doctrees/setup.doctree | Bin 20265 -> 20612 bytes .../doctrees/tutorials.appsettings.doctree | Bin 0 -> 2786 bytes .../tutorials.console-arguments.doctree | Bin 0 -> 2800 bytes docs/build/doctrees/tutorials.console.doctree | Bin 0 -> 2806 bytes .../doctrees/tutorials.create-startup.doctree | Bin 0 -> 2781 bytes docs/build/doctrees/tutorials.doctree | Bin 0 -> 2968 bytes .../tutorials.extend-application.doctree | Bin 0 -> 2777 bytes .../doctrees/tutorials.extend-startup.doctree | Bin 0 -> 2757 bytes docs/build/doctrees/tutorials.logging.doctree | Bin 0 -> 2766 bytes docs/build/doctrees/tutorials.mail.doctree | Bin 0 -> 2731 bytes docs/build/html/.buildinfo | 2 +- docs/build/html/_sources/cli.add.md.txt | 14 +- docs/build/html/_sources/cli.generate.md.txt | 19 +- docs/build/html/_sources/cli.install.md.txt | 14 +- docs/build/html/_sources/cli.new.md.txt | 27 +- docs/build/html/_sources/cli.remove.md.txt | 12 +- docs/build/html/_sources/cli.uninstall.md.txt | 14 +- docs/build/html/_sources/cli.update.md.txt | 6 + .../html/_sources/cpl_core.pipes.rst.txt | 77 + docs/build/html/_sources/cpl_core.rst.txt | 1 + .../html/_sources/cpl_query.tests.rst.txt | 45 - .../html/_sources/getting_started.rst.txt | 1 + docs/build/html/_sources/introduction.md.txt | 47 + .../_sources/tutorials.appsettings.md.txt | 1 + .../tutorials.console-arguments.md.txt | 1 + .../html/_sources/tutorials.console.md.txt | 1 + .../_sources/tutorials.create-startup.md.txt | 1 + .../tutorials.extend-application.md.txt | 1 + .../_sources/tutorials.extend-startup.md.txt | 1 + .../html/_sources/tutorials.logging.md.txt | 1 + .../build/html/_sources/tutorials.mail.md.txt | 1 + docs/build/html/_sources/tutorials.rst.txt | 14 + .../_sphinx_javascript_frameworks_compat.js | 134 + docs/build/html/_static/basic.css | 152 +- docs/build/html/_static/css/theme.css | 4 +- docs/build/html/_static/doctools.js | 453 ++- .../html/_static/documentation_options.js | 6 +- .../html/_static/fonts/Inconsolata-Bold.ttf | Bin 109948 -> 0 bytes .../_static/fonts/Inconsolata-Regular.ttf | Bin 96964 -> 0 bytes docs/build/html/_static/fonts/Inconsolata.ttf | Bin 63184 -> 0 bytes docs/build/html/_static/fonts/Lato-Bold.ttf | Bin 656544 -> 0 bytes .../build/html/_static/fonts/Lato-Regular.ttf | Bin 656568 -> 0 bytes .../html/_static/fonts/Lato/lato-bold.eot | Bin 256056 -> 0 bytes .../html/_static/fonts/Lato/lato-bold.ttf | Bin 600856 -> 0 bytes .../html/_static/fonts/Lato/lato-bold.woff | Bin 309728 -> 0 bytes .../html/_static/fonts/Lato/lato-bold.woff2 | Bin 184912 -> 0 bytes .../_static/fonts/Lato/lato-bolditalic.eot | Bin 266158 -> 0 bytes .../_static/fonts/Lato/lato-bolditalic.ttf | Bin 622572 -> 0 bytes .../_static/fonts/Lato/lato-bolditalic.woff | Bin 323344 -> 0 bytes .../_static/fonts/Lato/lato-bolditalic.woff2 | Bin 193308 -> 0 bytes .../html/_static/fonts/Lato/lato-italic.eot | Bin 268604 -> 0 bytes .../html/_static/fonts/Lato/lato-italic.ttf | Bin 639388 -> 0 bytes .../html/_static/fonts/Lato/lato-italic.woff | Bin 328412 -> 0 bytes .../html/_static/fonts/Lato/lato-italic.woff2 | Bin 195704 -> 0 bytes .../html/_static/fonts/Lato/lato-regular.eot | Bin 253461 -> 0 bytes .../html/_static/fonts/Lato/lato-regular.ttf | Bin 607720 -> 0 bytes .../html/_static/fonts/Lato/lato-regular.woff | Bin 309192 -> 0 bytes .../_static/fonts/Lato/lato-regular.woff2 | Bin 182708 -> 0 bytes .../html/_static/fonts/RobotoSlab-Bold.ttf | Bin 170616 -> 0 bytes .../html/_static/fonts/RobotoSlab-Regular.ttf | Bin 169064 -> 0 bytes .../fonts/RobotoSlab/roboto-slab-v7-bold.eot | Bin 79520 -> 0 bytes .../fonts/RobotoSlab/roboto-slab-v7-bold.ttf | Bin 170616 -> 0 bytes .../fonts/RobotoSlab/roboto-slab-v7-bold.woff | Bin 87624 -> 0 bytes .../RobotoSlab/roboto-slab-v7-bold.woff2 | Bin 67312 -> 0 bytes .../RobotoSlab/roboto-slab-v7-regular.eot | Bin 78331 -> 0 bytes .../RobotoSlab/roboto-slab-v7-regular.ttf | Bin 169064 -> 0 bytes .../RobotoSlab/roboto-slab-v7-regular.woff | Bin 86288 -> 0 bytes .../RobotoSlab/roboto-slab-v7-regular.woff2 | Bin 66444 -> 0 bytes .../_static/fonts/fontawesome-webfont.eot | Bin 165742 -> 0 bytes .../_static/fonts/fontawesome-webfont.svg | 2671 ----------------- .../_static/fonts/fontawesome-webfont.ttf | Bin 165548 -> 0 bytes .../_static/fonts/fontawesome-webfont.woff | Bin 98024 -> 0 bytes .../_static/fonts/fontawesome-webfont.woff2 | Bin 77160 -> 0 bytes .../{jquery-3.5.1.js => jquery-3.6.0.js} | 227 +- docs/build/html/_static/jquery.js | 4 +- docs/build/html/_static/js/modernizr.min.js | 4 - docs/build/html/_static/js/theme.js | 2 +- docs/build/html/_static/language_data.js | 102 +- docs/build/html/_static/pygments.css | 34 +- docs/build/html/_static/searchtools.js | 767 ++--- ...erscore-1.12.0.js => underscore-1.13.1.js} | 151 +- docs/build/html/_static/underscore.js | 8 +- docs/build/html/cli.add.html | 203 +- docs/build/html/cli.build.html | 167 +- docs/build/html/cli.generate.html | 239 +- docs/build/html/cli.help.html | 173 +- docs/build/html/cli.install.html | 205 +- docs/build/html/cli.new.html | 226 +- docs/build/html/cli.overview.html | 253 +- docs/build/html/cli.publish.html | 167 +- docs/build/html/cli.remove.html | 199 +- docs/build/html/cli.start.html | 153 +- docs/build/html/cli.uninstall.html | 205 +- docs/build/html/cli.update.html | 173 +- docs/build/html/cli.version.html | 153 +- docs/build/html/contributing.html | 223 +- docs/build/html/cpl_cli.html | 164 +- docs/build/html/cpl_core.application.html | 256 +- docs/build/html/cpl_core.configuration.html | 484 ++- docs/build/html/cpl_core.console.html | 424 ++- .../html/cpl_core.database.connection.html | 211 +- .../build/html/cpl_core.database.context.html | 215 +- docs/build/html/cpl_core.database.html | 286 +- .../html/cpl_core.dependency_injection.html | 369 +-- docs/build/html/cpl_core.environment.html | 378 +-- docs/build/html/cpl_core.html | 171 +- docs/build/html/cpl_core.logging.html | 350 +-- docs/build/html/cpl_core.mailing.html | 340 +-- docs/build/html/cpl_core.pipes.html | 333 ++ docs/build/html/cpl_core.time.html | 232 +- docs/build/html/cpl_core.utils.html | 244 +- docs/build/html/cpl_query.exceptions.html | 199 +- docs/build/html/cpl_query.extension.html | 455 ++- docs/build/html/cpl_query.html | 152 +- docs/build/html/cpl_query.tests.html | 421 --- docs/build/html/genindex.html | 667 ++-- docs/build/html/getting_started.html | 164 +- docs/build/html/index.html | 156 +- docs/build/html/introduction.html | 244 +- docs/build/html/modules.html | 186 +- docs/build/html/objects.inv | Bin 4024 -> 4195 bytes docs/build/html/py-modindex.html | 210 +- docs/build/html/quickstart.html | 198 +- docs/build/html/search.html | 141 +- docs/build/html/searchindex.js | 2 +- docs/build/html/setup.html | 234 +- docs/build/html/tutorials.appsettings.html | 125 + .../html/tutorials.console-arguments.html | 125 + docs/build/html/tutorials.console.html | 125 + docs/build/html/tutorials.create-startup.html | 125 + .../html/tutorials.extend-application.html | 125 + docs/build/html/tutorials.extend-startup.html | 125 + docs/build/html/tutorials.html | 136 + docs/build/html/tutorials.logging.html | 125 + docs/build/html/tutorials.mail.html | 125 + docs/source/cli.add.md | 14 +- docs/source/cli.generate.md | 19 +- docs/source/cli.install.md | 14 +- docs/source/cli.new.md | 27 +- docs/source/cli.remove.md | 12 +- docs/source/cli.uninstall.md | 14 +- docs/source/cli.update.md | 6 + docs/source/cpl_core.pipes.rst | 77 + docs/source/cpl_core.rst | 1 + docs/source/getting_started.rst | 1 + docs/source/introduction.md | 47 + docs/source/tutorials.appsettings.md | 1 + docs/source/tutorials.console-arguments.md | 1 + docs/source/tutorials.console.md | 1 + docs/source/tutorials.create-startup.md | 1 + docs/source/tutorials.extend-application.md | 1 + docs/source/tutorials.extend-startup.md | 1 + docs/source/tutorials.logging.md | 1 + docs/source/tutorials.mail.md | 1 + docs/source/tutorials.rst | 14 + src/cpl_core/cpl-core.json | 6 +- 196 files changed, 6064 insertions(+), 10979 deletions(-) create mode 100644 docs/build/doctrees/cpl_core.pipes.doctree delete mode 100644 docs/build/doctrees/cpl_query.tests.doctree create mode 100644 docs/build/doctrees/tutorials.appsettings.doctree create mode 100644 docs/build/doctrees/tutorials.console-arguments.doctree create mode 100644 docs/build/doctrees/tutorials.console.doctree create mode 100644 docs/build/doctrees/tutorials.create-startup.doctree create mode 100644 docs/build/doctrees/tutorials.doctree create mode 100644 docs/build/doctrees/tutorials.extend-application.doctree create mode 100644 docs/build/doctrees/tutorials.extend-startup.doctree create mode 100644 docs/build/doctrees/tutorials.logging.doctree create mode 100644 docs/build/doctrees/tutorials.mail.doctree create mode 100644 docs/build/html/_sources/cpl_core.pipes.rst.txt delete mode 100644 docs/build/html/_sources/cpl_query.tests.rst.txt create mode 100644 docs/build/html/_sources/tutorials.appsettings.md.txt create mode 100644 docs/build/html/_sources/tutorials.console-arguments.md.txt create mode 100644 docs/build/html/_sources/tutorials.console.md.txt create mode 100644 docs/build/html/_sources/tutorials.create-startup.md.txt create mode 100644 docs/build/html/_sources/tutorials.extend-application.md.txt create mode 100644 docs/build/html/_sources/tutorials.extend-startup.md.txt create mode 100644 docs/build/html/_sources/tutorials.logging.md.txt create mode 100644 docs/build/html/_sources/tutorials.mail.md.txt create mode 100644 docs/build/html/_sources/tutorials.rst.txt create mode 100644 docs/build/html/_static/_sphinx_javascript_frameworks_compat.js delete mode 100644 docs/build/html/_static/fonts/Inconsolata-Bold.ttf delete mode 100644 docs/build/html/_static/fonts/Inconsolata-Regular.ttf delete mode 100644 docs/build/html/_static/fonts/Inconsolata.ttf delete mode 100644 docs/build/html/_static/fonts/Lato-Bold.ttf delete mode 100644 docs/build/html/_static/fonts/Lato-Regular.ttf delete mode 100644 docs/build/html/_static/fonts/Lato/lato-bold.eot delete mode 100644 docs/build/html/_static/fonts/Lato/lato-bold.ttf delete mode 100644 docs/build/html/_static/fonts/Lato/lato-bold.woff delete mode 100644 docs/build/html/_static/fonts/Lato/lato-bold.woff2 delete mode 100644 docs/build/html/_static/fonts/Lato/lato-bolditalic.eot delete mode 100644 docs/build/html/_static/fonts/Lato/lato-bolditalic.ttf delete mode 100644 docs/build/html/_static/fonts/Lato/lato-bolditalic.woff delete mode 100644 docs/build/html/_static/fonts/Lato/lato-bolditalic.woff2 delete mode 100644 docs/build/html/_static/fonts/Lato/lato-italic.eot delete mode 100644 docs/build/html/_static/fonts/Lato/lato-italic.ttf delete mode 100644 docs/build/html/_static/fonts/Lato/lato-italic.woff delete mode 100644 docs/build/html/_static/fonts/Lato/lato-italic.woff2 delete mode 100644 docs/build/html/_static/fonts/Lato/lato-regular.eot delete mode 100644 docs/build/html/_static/fonts/Lato/lato-regular.ttf delete mode 100644 docs/build/html/_static/fonts/Lato/lato-regular.woff delete mode 100644 docs/build/html/_static/fonts/Lato/lato-regular.woff2 delete mode 100644 docs/build/html/_static/fonts/RobotoSlab-Bold.ttf delete mode 100644 docs/build/html/_static/fonts/RobotoSlab-Regular.ttf delete mode 100644 docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot delete mode 100644 docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf delete mode 100644 docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff delete mode 100644 docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 delete mode 100644 docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot delete mode 100644 docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf delete mode 100644 docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff delete mode 100644 docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 delete mode 100644 docs/build/html/_static/fonts/fontawesome-webfont.eot delete mode 100644 docs/build/html/_static/fonts/fontawesome-webfont.svg delete mode 100644 docs/build/html/_static/fonts/fontawesome-webfont.ttf delete mode 100644 docs/build/html/_static/fonts/fontawesome-webfont.woff delete mode 100644 docs/build/html/_static/fonts/fontawesome-webfont.woff2 rename docs/build/html/_static/{jquery-3.5.1.js => jquery-3.6.0.js} (98%) delete mode 100644 docs/build/html/_static/js/modernizr.min.js rename docs/build/html/_static/{underscore-1.12.0.js => underscore-1.13.1.js} (94%) create mode 100644 docs/build/html/cpl_core.pipes.html delete mode 100644 docs/build/html/cpl_query.tests.html create mode 100644 docs/build/html/tutorials.appsettings.html create mode 100644 docs/build/html/tutorials.console-arguments.html create mode 100644 docs/build/html/tutorials.console.html create mode 100644 docs/build/html/tutorials.create-startup.html create mode 100644 docs/build/html/tutorials.extend-application.html create mode 100644 docs/build/html/tutorials.extend-startup.html create mode 100644 docs/build/html/tutorials.html create mode 100644 docs/build/html/tutorials.logging.html create mode 100644 docs/build/html/tutorials.mail.html create mode 100644 docs/source/cpl_core.pipes.rst create mode 100644 docs/source/tutorials.appsettings.md create mode 100644 docs/source/tutorials.console-arguments.md create mode 100644 docs/source/tutorials.console.md create mode 100644 docs/source/tutorials.create-startup.md create mode 100644 docs/source/tutorials.extend-application.md create mode 100644 docs/source/tutorials.extend-startup.md create mode 100644 docs/source/tutorials.logging.md create mode 100644 docs/source/tutorials.mail.md create mode 100644 docs/source/tutorials.rst diff --git a/cpl-workspace.json b/cpl-workspace.json index 0ccfebed..202f5853 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -23,7 +23,7 @@ "set-pip-urls": "cpl run set-pip-urls $ARGS; echo '';", "docs-build": "echo 'Build Documentation'; cd docs/; sphinx-apidoc -o source/ ../src/cpl_core; sphinx-apidoc -o source/ ../src/cpl_query; make clean; make html; rm source/cpl_query.tests.rst;", - "db": "cpl build-docs", + "db": "cpl docs-build", "docs-open": "xdg-open $PWD/docs/build/html/index.html &", "do": "cpl docs-open", diff --git a/docs/build/doctrees/cli.add.doctree b/docs/build/doctrees/cli.add.doctree index ed82226abe61e2c9499e9328643f0832a6ce878a..afd4f6b3467e15cd6bdfab2d8c72b5931b3a42fd 100644 GIT binary patch literal 12431 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 literal 10353 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 XB8kX{H@D82cG9| diff --git a/docs/build/doctrees/cli.generate.doctree b/docs/build/doctrees/cli.generate.doctree index ac51d86619da7cce7dcdcf96e04ab45aaa54c976..8148d5007190513dac0e5643c97c7a5f5158c5e6 100644 GIT binary patch literal 20024 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 literal 17194 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 JbXEoJ{2N+A!GZt) literal 7804 zcmd5>TaO$^72fq;XZG&P=3#7Wg2CEdGdqdo2;?}%C`ec=tRarV16b{z?wYA;_jGr< ztM?+|kO(5hQoXq&Azpa{At7D^`3E3HNFXF0fG7R~NbsHN>&)zByvPDewJFOkuOYZF1%Y39Z4B z>9^Sd(XPyVm}ow*(FHXdn4l~Zz7}^(RX3#!MJJZvoH(5lc0^pwS*{sH0OEVbGyCb+ zyd4MSpkrE(L)N7=v6_=+kERm7qNZKpv1Dgb&E`VC)8>AkwWB@ewRgdu<@&L0JfPtN zi-$~fq=+ou?g?o`yv6L$>`KE11~(vI8#;>G>1J)q72725cHd5TgD=J%2t5T2SG98U z_RFnS^V+rMo4zL@Zd9+gn&0~xi>y!tq}_)b*I=!DwApO6?$lEauB)>lmr9-mTiehs zzYLY~tFTHFzt7?KdHk+JrL$c>?3*%C(_Hr5MAZ)Z?yV>=$wB6WkVP!qV@b?6_!s#W zzriA$q1V1CA{jN!JyW=5$7M~+@Apm5ZqiS3Cc68{0`}pZ|(BU-ID|*$?n4h^V$@pWZy2#@Q7k?Ym2;cYpc0+-IcFr(p>M!*SDIt zJK>#rw&t`2_l{bi#oplSYMORQ3Nf-VWHG9;ARuNV8TwwYs`2SEOJE~CsBDx@Hn>yW z=y(?j&J7L{w$3c01GAo!rP3NXcjgh@IabpWF9N z<(5AwdDTHTF%WFiWX7DgbWpH`4Bg<*#$%?4{?Wjx=M1Epte2M71O|JbO2WPt8-~`VuClE3;1)|nX-a}w4A0-XH~D~<&kp615Vd~>*|cyr5M*z zFH5!BRQ9QjeiiSN1|b4o0S^bf2?)Hwu_FGI^}0qJsC`ePK(U zeEsg-pT80O>`!%Q#d#~`|33ZE#>q2;^8ldSYcr;ftwH~I$Cd7v1;&ezuFPLq?G-XX?Y3@!@3Mpw9z2f zq0;f~QNMQ%fHUYt8z+0#%A-e*in1Husrr$tTmb`{ZY8v;F((28f^(@W)B||>#_`DB7e=Z0eZP#I?W)Awt5ww%l^x6aN@8hnj`z%c~Ln5=s znz+N`qAH@|<|;h8xMJue;Xhl{%B>prD5H?}F;$!7KC1eg2u`Ve>lZP z!!G<8t#3G^dEt0!=n|mxNOqcA-jyY6M;dE7HW!OzeWmSF4GWWUr4lEv*s_zWe5de zF=PR{a)!(Hn49dJQ*~~-#c)Qgu>j#BzGz0x*sK%xKyG>83_U0cD?(=W0jbFl zZBLRY`A97bFNmeVJj=JS3XRcNc3WR=MFQWK2PX{{hJI*p^b1`SBf8@yEc8@Y{8$d| zGNX4%)Rm!`p)H&rBOR#abl;MP9Q*R%#1OJtB^e?p3jOTB)veqm*YtWZ&I)MUMr-#R zTK?)n$Sgm!(cKQ<93UgmT;El*I5xTv6B-e=fgW&I93*^JEmQOvB}knU@Tes_?gvKU zbx^DZ2&&6G6T!Z#Rx||K^&&EV2?`<>+rEL8Gghs#gTRlNQN`3=Vo769L?ZRi6~h)0 zU3wr$#^qcd4g7{$gfJ2O-_-9G@S1Fy(G_m`aFON2o?5{4nsLv#@})G%j3>kF^kgj$xvt~Er4 zASId0IT`6AC2k8QyP6EO;X$G%%??6I#CTZxpdruy3TD`lo7Lb0a*o>q&C> zE$PUHBQM}Rq8K9ZR-;2tng<3KJ&qEZQ|sTQ{;XPz`X=J(-5B8;0rP?$r$fW_Ei=>L z6^o;dZo$53SixeHd<OQJYSnYW`3;@_cwm7zYb9HK;pqo4=eL+HYL>}Ya`N~Zr2hNks2{QE zG4x|~en1E5GaEh0jY!~p0&++4`#a);4Aafg)hs0vDESG_Y67O;8;*gc&iCoRn>e+d zSLwg+((rA)M~&9fg-qK_uin)wclD~>m|q2NdIP?gVp9uCV>`N0qL!+GqZwGT1kMF= z1~8RED7oe9Qm3gx(sghpgipWYyG1POr5A^Q#p>F?jpn?ig6$Jg9J9F>MyltT&!ii? z8R}OeKM4(%@+tH%EZa3h=A}=ie1*Elwi|8c^z#ujV%zr=xz(`dtof(X4Xeo;u^qdt z^ocJSf!ngZDArv!rEcgody(za^wp0qq=Fk7j?V=;=8seBC~s`Xqcl*1Pm6 zwN|ZD+tb!b{^>2t@3F0Dk9k`=;M#Eg#MCa(>jlFKnY|m^kzs9h?O2PfHZw!L6Kf_Y zEDe%xf%j-D<9W+)?af>hn>{nN)~#jhCTk|ywU#nN6q-CD8~DOm-;1G&C{x~AsiCAW zjCCiCWu4ryPLWQm_dyZX%~1C(_`enZx8wgbgtR^&ghN;B4v@8T7Mgr%H*sASYpxv? z*eFG_2H2rLC%*Cq^r0gU^b2`E2hh1ZVxqx&S3To{>Xg zr?#iYX_wDI1lXLQU06GXhp|qqhg}w@e7URyfRsL64S+dabTj>)ZhPqtU&05rAGo$* z$LUL=-xWRd(wE4DF!OdJH{r)J6OOm}!zF?T>kynR5j>C)Smz`xbJLuc@BD@*KN@yL zScza|NSZz8HhxU@%jqu4civQF(u$>)stvDYMi>V04eOGn54GHj8PNomv)qcc77Jni z8(YogwtBvf>d97;;MqC^WGhLK+lq~h0DLZU^psDxML4*>WN8@=3d^24p9Sxz)wL1! zS^)y4-es*lTW-kitV zy79edTKDaS_b=w%4(f1zSO+2EhPB3LX_T}o$!ldv5C-R>IP|@4DU9*?%JR2XyjMs1 zWqG9W&in>+vY6{cFn~2=jZYuM+XCwamLAzrnY-qFxwh_?rYyBoIs9#X4&R)JL+PH- z-wbk*GJCURKFL}3Qf2BN^_b#w9Y5^ph`+N|+;b6<_j~R=5oAZwvk-(VV&NVW{_wWY zENOV%Drt9dtmVg|L&^6G75JuYDHNV65;@1Fr>5!&MJvH%SWuk&MsZRyx5&@dc&Vkz z+50Er>^d>6sfl+rF@AeqwE$f_%;VvhPsTNU@8pGXU| zcUZ}yv-5OLi2z+JT2JRoYTt?)`>i1K9c-`U;<~x`DLc0OB<|~J$E_>2tM*l`*kUb{ z1;)cL0ZgC*Jh#*th`SdwDR=DMrTN$kH7PxRE^X> zX8|M$p7I`ukauLjNCgdFDs5HL0)KtYeGtseUT0%h%5!DdEpp+iWZ&)6`1s_2;CDQi z>^lYgXmhUbRyOCw1}pA{eiD?{-Ru)>>E{jKjRIy2d>ox%!f)Lxwi#RL_Ra8e=T+ij z-TA2!L&i|&H8ja^pK~*6<4T_Y{~Q&nXu!{Ob5IeKwfN<%rO;jjTletlAW0Dn7NphX z>QFRPQSdjVzF}LS!L)hZ`KzLk3LlFc=g-uC-TBi1ne!Jk_1USApb|I_4yH?oCP{A| z215&qVz?Z9DaO%E+kmcF2w$xpcU-Sni=WipgtfB0IUQWB@p4nuIJYPk>l&w}DBfA2 ziV!v=>^XnPO#J%+6OTv6TN&A)2Me#*_02(uJAWL&%*J>etzNoxNo_{(oH+y{kc%^? zP(vuV(KSrtT%g{kwr|J-=wmtYxI>>Tky&>hQ4a@6N4UPCo$4W%GWTX%d#Foi{ z*%2}WoC@qQ*AM8vx7EW1u+-4?5myzeD~4+*ROAq!Q53^9QxDLCimC?r9EnZ!UFy2jQdQuKilZ6|l!!c)Bl7v2xDFzpRTB-@`v^pSZh&k&BHITd zGS^%MiW5>*RrpQCVht4v41Qfv4A(_H3=XR1UBloJfx*b`C9WQ`;UHXWw`B*3!g5np zhp#J*)X<@X;rntJ{wyc11H)I;M8j1-0){^tAR7IOv^*~WenlB)9FQq0v* zo&eyRiek7H>H%<2Dc1?W@nrdKVQ^I+O(u5>hf2GJUmcK4I6p>*frFcThp;}7Qx}u- zMn`1v#R08q=-V0OnYr8OZKskli~rA*7RB`ay-3lWQB6vUuf>!>Qf>fl-#g+OM?=fuHO=@NH!hc~;- z!x>5Jho~HBng|T2xatK|Mv_f~vL5d;UKjJ%By{n1IQ9*VN}%X#l!~J=eyrpBvFFFE z^ksXRAEv@DFX?Ifbd#E*Wd-|hJJ2ZOfIJb#ThCgU%S4NI1=kmvtir-{IYC~QwZoS~ z7Wg4*jwnq@w-50}OLx_4gCAx4R9F@3aT3W+4c;)>ZqmhcD^w6el|vYp={>YG;}AEx zBoRtxR%|awVhxufKGhfD&NqoW?GGa~;`yfPM~#J{A8Hm-Cl`l^;vU~Na9zBL>zC>% z4KYf}PxgK38^U>Tc4~^RWaAb*Na~xaANq*-5t1Q-qEKWOxZ;-ju&aCB1hp5?I5IhY z2o-w#c*qPtG*NO!RaDvi5A-mHtFsQoghp&r!}WH@-cM0jw?cbyt!UzhY#{2ene+lp zp$>`_4K|&pdOEiLJA75NK)YT<<}aFph$W`4;Wiz;j-X)4kC;}b6euxbZO@ME44)f+HFj6G)_%T^+oWXYd=XI1ZwFwzkk5Z3b6y z3+HY6VRtL#C#a`j06jHS!@)eUC?a4%`_?<}f<9Nmj?p(fwG_kOCWnWo>IB)#EZnqN z+!1rY=eMXx0h2XxX9F)1cPR_}B>b(XDfd(YXjvV@HGU+z>c#rLX4zfK#XprhxKxh9 zm!qBzNBe97zmA}&y!6`Yq-V5YarOt|n>uwXHi$X(+nP-m%M z))-3RTn)9WD9@le&X@Sny!sSibvs#1yT+HZ5ybEjsArhBN0p&`Aqy|?XF$_Nks+KV z*0Mr8Q5AX=Oaf{#DqI00lj=aJfOPc=T*~khFK*Kl4vCulhW@U$XA6LqsuB;~eV5EA z=&_n9dYSvXeVjKr3H^MV ze!fLNuOnk{UZtNKsmlp5ZjJBf8Oco!2`%VKn^oefQw z_Sw*Me=3G{=s+*whs(YvI6jQ(OcAKa-?J79v9e!=vT{q-4;9Jq)!we}Dt8uL-_zHq zdN(U0Hs!2>=vZZZtd?O+%kzo;vGOldd=U$PfH$plOE{=?;TP}#BpmZ+3HE4z8TNP~ y{RDy;3VRV2Q9T{OeX|MGI#6j|Qq98SmTb>(6O%l?OC{KgCM{KYRL|0;&Hn(|X*(nU literal 8619 zcmd5?U5F(|72es|J2Usr@9w&@>TJUGFU(AK<|YtP@@I4daTy(d5)8U-I(@tA-m2cd z-EDXE%q$Ynhd=@ag6WV~AqWyp1YZQ-{CO2Yg(M*Qsy+$oyWgqquI~G@bMFR&F3e2# z={i;Ce09#LQ|Ih=8n6D~BWLtKwVp&=1Sk8p>jt6Al1weRp_2|+AhTDpo$qEZWZSA4 z+s8?m#tzHW8H{ka@ZFdN+09I?(QqmJWWV5FOqe4@7#Mcm;0t{5X12|nsv(8+S?!Zr zb|Swmf<)TBpV2UkI`<4aq2-4^zL;rgFx^G95ZPE?X8e5GwN=ZOG8WxbLVl8WUbqR# zw&?hFl7NWkMqm%}rzJOys+X?q+=^L`#-wUd+I{+z@pX017Xix-=F~!|`qw)=9I#Gu z#DdNtBy{{Rb*-oA^=XI4OmwA49Ny^*X(fD*xv|}omJ1GULCX%1N;>&u9mf~@h1UB6 zH{)A;CGGO%9PkRUjgp|2u7!bw%1I8=W{pq*^C0Hw01Sr`bW zlA(Z!ood*R)o{I9;9B8$@AW*$B<;R{%eEspzTIc-BVo5A5tX1#8)lH?uK~YTXTz^F zlcmz_#-wv74DRk0Az^p7y?dW8A1P$KuP-0jZ9m$LA8!@IrVY40X@FL7n{TRfG)rbQ zDc+&Z>veVD*$at`!=PVx&c&fvy{XK5HJu@0#<%J-o*tKeg6(S+0BJ!Gn>N*4T~NGC zkaCF)B5o%lsms}Xv;gn%a%XFlO4b??Gyi6GX@50UTK>yQRs`FfgEKnV&f_qx3wnlQ)3N|Fs$-fOwNzdED6Uo2Gmes1q{skOU9ms)c( zT9ExXOrzRypMRpO@S+p?NyMD7k9W**DH8a{!j(LG>WL@bcr1GT?H1ys_hv5t8}vtC zf6CzPy#-Qvyc9y+>1O!rE>qvL#iTF z_VDK%&p#PFr(GxMuzCva@vh-0ci_~F*Lyo(=#OJ;-a89}t&^&aT0N@|s%82! z)4jjks3pVkerQ)kxCv3w`+dG8zncQ^D3-s?*~Xn*yGl27$L-$x19*n5X!~@_T7Ule z=gqwd&pG^vRX%DzvF+DftDZj>n^a4l%^txyx4g#;+%uS;_Xv&NIk;Se*-sVB(^3&~ zz=zC2llOHL)WQKD9Ai5jrp;%Nh?MmMq%$K|;yZmdpm^V;1-HC!n005sMMs!t4aZ~! z@5U|fR_i7V0`-8>EWAe{OKDwd9$!jl)z3y*Z2?C{?in;4wSc%_p2Y$}v(Wni&`h4a zKShL5BfLuEx4d!BzVm9R*dTex4(93j|4|+pemEtdsI@YCNcQYhhQr}nHFPLP&D>=@ zJM|?M3cS~8&YgoxwTx#hiEEmYWG#goB90_*MgCMKaFv$2+`m^kQ!O8)a#ckhnQkr@ z4rSjdwOUii=l9b&Fb6==n7Rm7QQ$vRDIA8nEIrq9tsNeq>EH&YAx zpsJOf)(=&)&jN%>8O9l2TpK+JX%8a2Ea%Ih${yUpYpZxoV;^s;GIT8JMbOtI(?_Se z&YbK@HV#SvT!txwT_E4geHJ#LOOm z(v&eOPoz=yl3Ei%lu8TNw$Q~W)TUC|+xzrhBJg}=_@l+*IE*cB2d2d_k>|4_XyTofWXCRW}_( zma#ejs|kYgtH6fKAF6dt0lGm#+h38Qgr#n1q3VZG8|)+s6K2&pwUs#1IuePOs#9^Vw1eB$&S+Z#F6AwHDSk~g6GqMa( zs%5T}%g7LcabGam)5}mL6iYO5LxT&@&FNrC-2-PCSjM-E_*PyleOYa4X%KN(Oq#=P z2_qMVyo}HilfA|xsLkLa$NaT{#V zWiDLuHrC>dNz8T$O-uWh#Rj(UEi`>m7N!R2OKP44M;V%CYAKHda6MR&2wVZXmX<`6 zXNWB5q@Kq@unLK;FR;OJkvCn}k74~zmp3tXks>`E8MIf{-)w+FWKlwnJIMCy8 z-teLM$u%f7wwhh5Jb0JEM#lowIbVr25P@zHdmqGSlex^9~NP|PdG<+fC(74>?bvrn%buS3>$#)QOc$FrM+JixI+tb{yR7!vHDASY_~boWemyQh2T zhrRxY2thzB>IbC*0zm+gNRg1DAU==)5h)0SKp^phKp-AMARZrlARZqexVO5h`Z=>T z>&+6$o9U{$RdvrjRduVnZa+Q#{HX_b(f`Oo&@(M}V^!64*VBz4CR4hnMP0)UkCz85mktqDEW952$9Gx&H$GkwEqg;t=MYaJ_80<&T0 zzS<5I9VAQzG+u+g2Wv^6*EGjk1q4>RdTcJ6v*tl_G-{bM3HT{`dw2qwy3cb%fFVdg zTgoJ4z=FDN!Me;tP4h6~VO|d)m`4ES8{prK@b4)6I|d4xH&ex+sCfd!8mtR7GSiA2 z#|Rb23Q|6#U8<29<|tNZbTdXx>d{)f1LW4b4evj+2>8wH%pTS{|Io`h&AV#%Q}_ta}+0H;Q1L z0gxU^!~w9w>$?V_OC~@Cus7u$wR8+4%4mnG-!a0N%w_?ALYQ^A2V7HWG2QE`mK!(8 z3}hG^J;&0lFn*SnyQKPV{4AOeOuRnM%=fOue1q-%P)6XLG6MHy1nx})%=z9ERYm~q#|4=EjJ~rsnMfw-n2a>& zRDKUg^SOXe<>|~>F`4@tosu^|F)$5jPg_i2nnfdFUUkAScit&Wd zOC?shp|`KXJV*Z2pCiTj7y+&o7Ozy}XVAqsejJwAocx1(n@G71iI7L_sN2FE0M$hUi!bh~7t?fG35{Dd(x z>^k5&Y;>KIbj*S$-t&#X@GlxT?(I9UQuN>uyk#?E+UbFe8^}rl?yfAjBQDnte&tnr zR9ZFkTZZGJ=uE-V5**Zq>DG>NFxsJ>-I+DurVRbKbgu+M?FT@{eh~jW1b?Wgfjv&6c-eHG^Q z{_9YBqcIl;>3#0uc0DwWy5@De)YS~?e&o8a!w0VuJk0wZd3Wkso~T=4{gUN4)cr&; zaDTE+C?*NlRXCz=Xd8KS{xdW>`^xCxahTf59fzgI8)3)yqF%G*h7*5V5OApO>{Rqy>`*(w@ux#(e|Is5NF{3U)68E84Z~7e@;eh;q)(TLJ0~1ue z3($bDD-n0fz=k z7aZ8vMb{GO%>GBH5I-u^mY;)cd9&cgP{EG?8jGDiT zhN`W*RcHnph0lMVDmA{v*@_q9NeEmQ7MOFku!P7*xcf{}he~3D zC#eHC%^)a+Ns2SBZ+@PI_lssFV4)-Jw2-LQPmWH*s(Upf?Y!u*gpPcD;--Is3Co!N z1EQhrg=UK*ZLnC3BeQC+&|eIWxnYYEuaDwhV^1PKR~q2?Rfo*;-9*q(qtGjRjWbxo z;r0EcomAQpGLw0k3^lM9-Nod>=>glZ%e;CoywzgvP9Zfva=s{xEx{^!f^Z$v@biLF z_AKbm7mQ>tV=tDHR_rbA-fqk63BM}3%enam)p}>C|67>xv#%ccj5eD~%p2n;LOU5_ zpu_NEA;Iy;^R~}4{lk*j;AwiuE!!VO^|E^WUPx5yAvYbD)k+5+A8i%8o9}PZco9Ul zyQ$#f^Ci}7VOui?{s9~?2A*S7dkS#GLUTE##B-iaOJiH`6%Mn}y_X5gEEo%-p=#q5 z@najB*^<~`5*|EV53Fv_!E-vQe_ie2g%g!t=wg%I;6izT-YPmEOVe9~M75@JG%YJG zMblcT@!_W=-p6PJK;ZNL1?}$C|QATV%~(G3HQ}C%67$ z+@ac?aj0I|WKOj|2?a_=Z_J50SaLDa#>pHz$4Kt~WZWp8kz5pljDjP@92Xf!YWx95 z?T8DE>?u!!SAnONQdbkqIy|9{w5@<^^luW%4($pZGgk{(@h#LPRh(- zs$k2uIZTa)8eDd@K8qU5<#YQaf6lY%E#q5om~LdFy3T}U7PUj7p=#q5@na6tbtSRE zB)t9%yoa;e7F?#gWE$`?3U16HNOdcyM}Ywsx|5}D({g#3PK$2HlJy=TQLV2WS@tqj4AaqUeB*WgB{r5O$I!Y^7F1XInreZab6NzT8@yga;r z7GO!h%bB>snD_@KEW^a#iH54J(uaw^DTxhc;>{IIEW%Ud$GCRyG3A4V@^Lz-5HZB@YyuO=Eo2nxo z$H}6xfsx;#8b$#xG)~5KqZM_a`|}vN3qU~$-%z`dQVV?u!$XZAws+ogdr_zuuI8ct z2SGnk*lxV75m@m1U_MhZeBbjG6K+*IaMzMXk69YT3oUq2n6G7=))JFLg`7ea_FrIt zlli3Hv=3bRU_PTDO!lA-0RRP2@I41~ipiX#x}6A4{sD0vo_E8i1IRw#&^%v&39)Z%ngZy$0h&Ke>IFumdkTb8L8(0uS?vXel9i+^(L&{-6<8tV=YpbJ0bbb#MOZH< z`DidtkXcYB0RAVh%YZekn9{bK^Vy2dqz*eKyVm{8U+j@<$J()=sS)Ka;+JLz2M~98YBm+z00BLxvQSv zS&PYjEJ-^6B^3zS2lIqrjwwiQ+<43Ffakp5)(X{QN?QF*ym}a^DpK}>;jdao*rsj3 zm|w#vHE65`SKDC}(JSXu z2tvJ}7!b4XC=fgg@p<^6iD$_o`z!{K)oCYl+7&XJ)Ih5bKzbBbbNqA#nM$S?7|%dW z3%-N^gC$gwF9y)hRxCm%fodUqdIM;rm!iM(KEm-y2~dqTfEcbepwMF4v99IPFLKz&Ae-N5AtSf) z_Tg8)^^^Ttuc)+7`w`ijLjmu@^+C)&3e8pa_wCpZG)t#CQIV%0mK+n4-z)a_ zU@c4 z)ua;5$UK5&umN+H)^0YEsxjy&sTwa2(W-59J0dcd9euRNbMPSvI#uC_Pf~D_<>eBd zWmA%J@X-_)t=*RAhyhKDUQ`Jn$>&YRBBz-!&>Quf zcI+5+nzcMLj-e8sE56y0Pjhw>=7pwdU5rQz+a!FJnQeTP(iMKlb9|ESOz|0I@@KYb z&>`FLCE{;4Ks(C|65DtTi;r0}B2JSzu|>Dr4l`o9N$kjMF~bH4YJhdyfKa?GJKMHA zXA7*|>ewl*(Z!@m7bM6zN{3YipF0=$49txsIBSK99F$w3pKU;ct^)-0B!F0l{~v_^ zH^Ki?U>@C|EA;fvG(AIahQ?=M&?;YOCZ0!_;W=?W)438=Ud1I5bc$fO8HD}13KsI2X((+2l6t zDGIhV=;_8V82AhfoJ3B_7mIoccs>d6R5ExT#_oo7gm|7W2s}8Bzyk$=k4pi1PEB-% z>O-o`k6*YyYKuh}1B#}4&M<7~c2(U>VOFTg5i3-}{Kw!nmrvx(i$WXs<4+tpYpOqufoQ4mbCq9WxaIbZrl@UeHG^AmGS09t=y{ege8l=h`Z65 zGvJ}moT;BV<*~bvNvGQEuB?c=geczKjP9M!T90a5FEnn9YAmqYplkdP_MU1(vocuw zTG3kY#WOLB0>52!r_*{zUE|_8??%3=(O(yP8NPe`5?Hd3VI~HL9b}D96_tZRAI;`S zC!}WV#6{g^?nX@SRh&@8Ttig@9lkxjl7AVgB>i))BJ6~xcMgCZZ)s;bb2m z>XkL9(SN@`y{dc~LaHJthmax)5?Rm#!}d^f7p4vz7;jKM(+Z-F$x?oZvW}PX>R!jY zQ!HJG-NJ~(B)UYrNNVRLq%5S`1)rQ9`7!|4AD2rKg0XUqh zGn1(fLS1!*L(x2Rqz*-k=v%?{4LOZ<9Y@4zb*=j>qJ5hCQ$(QV{sewToh0yNwj%dd z_eY}r|5*U${#+XSI{u7x62rBElek(iJA*%uJuf`msxwOJR?z8)fHST~iSIjp8)8q0 zGtWKxNFHFGtvjr~>v*0BLQxFjpJFJARXTv(QY-$dj*+wB_Y$DrP7Kh|GC+8RVm7<3 zQ1qF6hP9(02@7F`e1#V;vsU26A+bs?2ObY_)p)y(&1ic5zWcs+Px$h0=Fv6(Q(E(P zZH;oO?t4(BHi}HCL3a}WTb%v4XS!3E;nKVw|Bc7;bVG)QFk)Z6V%*~ zYKi`)@Kpx)Zkwj(wEa6Rz@0>?*>lIWU;E}iYkCP0HwbE)idFeUJu0nhXkEv(ZbwU8 z4eRo~PwjVwi$C|6RQkvW6?(BeEXB%;Tr8DlV3&En;jV#DH;p!iQ)}_bC!dsuL3ohh zgQxP~&M`8*!ouSEM2L69Yr3fC1{P(_eOB8z#>BYKVC&O6$1@lE`Am4!c6}ZO+SLQ~ zpU++}vxUb>V#Cq7?Qz(&@R(8$jLgw!wKn*mo|czbYSsB|IH9nlc%{iar2 z0!#A?$coTHt(&Z*rvD2r_E!*Yv>sCu$6@o&^gvewprI3_ywg)9 z753>%#QjWvxJTXY2+;qf6`26^4`eRny$L{nR}a)5^Z_p9os!sa7jhh(0D{uvLKN=? zzSmrIubUR($r1dSC_Guw68%k_WZ_L}_xo9RTUzgZaNtZPJkG-Vh#u%_0JP7AH(V@0 z{?*)aSTI-&uC3wZk?u_6+2I{|cKB=Q?9ja(@MU%Mh&RoI1>Lb8uZTDhKJ(h7WhNdI zSD9~NpQm?@m5xlgYJ8#aJrerNzLWM=_uLR5PnAS z1#bzi&rIux_U_xI)0X?UQq{)34`mO_1cAbd@3|6RuWsk7KsL2o%2U@qc7@^>Kjrln zyDIbfcv;TJx3!&PH~;!TB5%xlX&g2 zefe5ci?7dF<)slS^rD%aRr=5~EHP*whm<9VC*V#o4m{F7vVf}<@mA4Gmo>9QZ1I*h zYmB*2$CH!Un*UQKJjzdC#QUZmsQ(o9;+Gvy-YAI;XXE<)_1Niz9$wK2`|D;HdX8m^ z=E_1H6>}B3#B{+;Om4`- zH=RLP>SjtR2ialZQ--lx=lao`!8SSt0ca9oqM?!H05nI;;c<>+Yo@dP(_-o;N*RxZeQ>z?WsexeiKtz57LvFh7ho!~hf| zfrcK~l=3Cd^xFyeD?r?a@Chtifks<7|PMfQVxokeJbO z_EI{-m+{PFBj1B_a-lTK)8)&a1h!okaM--IJpgRh7hK-Z6P`tzzVCW##wkOu;- z4wJnwh>1~@6fCiramk4tCiuBx*iMXJn!u1u%UQJ==*@f)jERB&a<>Q8WX+70Z} z<&cDi&h=7jl zNJRyd8K61`^_w5QKihB<_cdE+BiPs&|sVcyhV&`Ao2oa^ynfiyuwqAvSfE5f9!T}pNp3A)K z75MaOTS4NpO?-k2;VM7g+f-x}cBPH;gSX$Iwtalm`@INt-h`Fg&!_X!XvKZO{R8g! zkn#lPtmbNU9A9LSyMKh&>d?ujZc)R-Q}^iq7&LmHP6v#i@FQIq;62>{yxccnxW4+n zi+bS1w3N8WbH+sYr{RVKE9LWs`z$ndpT<8wgnI(_`}oJjExnC@_V7g_daI(8yt#*z zav|3cG7ZtbA=)+)dJ^AahjdZ&M$gKwFpWWU<%+8czEoUKLa!yuf$ai00*cET^m(eC z~dBA?K0V06eb4YHee-TiBKK(SfCCHBlM+Y++!)71{)Q-8UdO=rvq31@TInTmJ!sa2i|y diff --git a/docs/build/doctrees/cli.overview.doctree b/docs/build/doctrees/cli.overview.doctree index d18959861bd87c824d22c8d01de941af85e3a4fe..219aa2b4ab6b1aedb77decaeeeb10083107b09c6 100644 GIT binary patch literal 24065 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 diff --git a/docs/build/doctrees/cli.publish.doctree b/docs/build/doctrees/cli.publish.doctree index 8cca234d7428390091b5ce4bbfede213eabfe0da..d78cbc7ae5dde7e50c284e77115ec807c81e8f13 100644 GIT binary patch literal 7952 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 Kb0EC3Zu`IEhDJI7 diff --git a/docs/build/doctrees/cli.remove.doctree b/docs/build/doctrees/cli.remove.doctree index d899e973f0094b6f32675e2393d26b32c8229c4a..8287aa7aa8d9f4d397cc7af132655ad1234267f0 100644 GIT binary patch literal 10835 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 literal 8679 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 diff --git a/docs/build/doctrees/cli.start.doctree b/docs/build/doctrees/cli.start.doctree index 9f25efe1e8c057aeb526b3bb22abf5da74083fd0..85ccbbd03517abd583c6359268b2e1ed2dc5a02f 100644 GIT binary patch delta 1302 zcmb7EO-~a+7-s2qL$@VB)P@A8AXF4e8}-n{#G8f#p^2VQQ=4UX=(}{k+?|c#V5$dW zNcKWzG+xj@U_uNBBJmH%!MiuT7%#@Z;5%Ci*ibEp$?nX~`#jJ4@$Bo|&z$@$`Kr1l ze=I1G;%Po{D2I_KRWn>YwBubOQUW*hb;2u=Y?%%|w?3~ZkXw>qg58iF$uJHHwk5r} zt-u(R#11AZkgJ5N8eDwJufSB5!!)iuu321Ht2~5xSU?QC3Izj;T`=`U;X+2YaJf6?zCdh!rGhC=jgBu(-c{5cn@lASD0qMU!&3jsSw%&*MD{TN-a z9Exo*s9hOQGfI$k&+4KAOOa#uo<0T{A)g&@qo5R=x{)f zBcc@caUr0ZPr23}@Az=CeRyKl)s|l{w=uLwJnP-f(Q@1XS`G@B*zSSyTav!*?hjm- zqyqbunr1)Lx$KBAW6dH?okGnrZIkll;aN7MUK$+*O1 zoVwipXlPWUzNR;bUo;6_6E{j|e72*O*>HM0J80Tk9VuMRFr7M&?cd<+eY!X^5)hr5 zu2Tz$wTA3YgKtI|Vy_aT7DokqlYLFUD|h|?qM;|QZ|H95&;{`pVDXOYv_2vA^$A!rcR5m;=D8;mlKul;JsS@udg{eLz!_NB{yZiRN_r33%@BNOyjZ4o1Z$cZ= z*YGrvP1VwL%pkJyXL*W9t){NA5+br~I95$#w1^(iFX-LkRhWS+An?O{8B%4ZszPjy zB_Up6kl^P6KbQEqTwx9*;R>WmJQdQsEG){LDrD&T#NE?Gs+p|>(+28yFUM*`jEKmix1-;e`E2}-ba_JWB41L9*B8t(}~;34rRl7y8$szC2kp%Llab&rw&iMm|9QTB4@`lRTxG}k4_7DGN82Y;aO(Zu1NM_T}u ze0-++Bf`=`)w;#t7{9bAeeXYW=hb-NL~a;XTjdwkf;Q;lwhxdZ?@BQO-X{hu?jDbR z3J4vRgbts_8%1Crr~}9&%|Z5H2F}$EcW&3U?$A-Lb-fA_nht%SKSCLr4}UD|-C}aG zV_5Z?;pjLc-fX7sSnS8=kQF*d>V_$8=t8F)R2Wy8_znpv$+k&1=g1Xw)@T$o( v*BES-ZHV({Z*%%Y9;KAJRx>OWHw~SYg?{8zqy5l!sy1$7M}$R{Q_cPZUUs4) diff --git a/docs/build/doctrees/cli.uninstall.doctree b/docs/build/doctrees/cli.uninstall.doctree index bde41ad42208a6ee3c84fd743136c5e106ec75b6..074b870e1b8f5ce857924270560caa769df632b5 100644 GIT binary patch literal 11753 zcmc&)|BEC?72mzx+1=Uid&zAM_wJk!lWf+^ZU`}i7iHRqaDyj(y+=69|S>2ge0JX2!a@Y^u6k?>h9^8*`71T zg&n%9>s7rkpZDrj)%#}SJMXq9TN}f+P zMKd%HBR>u;l86cDVNvGVA@P!D60wZkIdh}!jD9vE7H7Vv$!UYm(Aj5_P1+O<&bUho zpTv?CxUJY@Uc^n;O|T>Mn|_iUAp`xNUrr=PIHZ^fOyGehbWJo3%`}}7Ga0XYV%lXM zN%rD>Q_P#3hipIQAS22&#q0?ApS4^wil7mm8=l!qpXTg1$Y1tN>uN|k*e4dV-0b3~ zgs#wYyOZ>+czTEWJ+c!W5N~G>__ka>wv9{pddZ?8Vf&m#7TxJGZbYk@9bEXom* zv(yw#{9-UpdIdA52mr%2!DwbTGy_`rDmI>ej6_z*0tC)8o3{ZF)!SXEL=$2$AfC;< zu5kpWC=lzRXP76=tzb(VVxcgs(oCtXtenfkm9r_P<-B6LcMSw5{mQxoO8QDl4hlQB zJ26VTVg^J2t0TON_D;alNQawYm+(X^7S#Yi#ZT7)z?~_(*?!MtUa}_^-~%}dTxKzz zyej)0nxU7xibe!O?=~_cela!TXsbV7AoyGzf=3GkpG^tqV+xp=aW1NNam&+>gk2e4 zBCs<^nm%V%{<7+q(LJf&MN^Y0I~H2XR=l2?VGzVO=@n`YwB0Ky(HOR)Zpm8nxiJ5Y zt!6S?y;Mi_Xe&kVVjTjsl_JP&MTW)zF_XG_A|~51AY3R|S_OpMvaQQ1h)1n1gW%T+ zAZ(gl(mG&fD`0^#-0>aD_I!P~J^Q^76*AWsvT_c)xYTTI>F~O>)!MqltY(mNy^f^U6cj_;!MOt-|H3vnrLbcmC6b&<T~$sSR5)>1szU7 zeo|y_8jYwpOJB-N{ktAhVy5GVJriQ_H03=P!t+tjeJ}#qArYDjLK2bifJoo?m((n3 zc!L(SJ3rF;BN3wI`>hUwCt{|g!pD+K&dJG%iF#t;x-cFZG%xRKUYfbVWzM!P3N2;M zJ~b9+H;94{HD||J-?_gwKNHU`R!DN^VIY;{*2uF<$zz85Qd`+RFN~!H z+)pg05!!h!ql6%xFJNuG#P+SQozU;Kg3xzh>!p_4Z3UY#smcaZp&8 z(oeV#p0#{83W!ztI6NBzP`iiB<}}&86%Mexb!sA;$R?G^uEqaWib6hi>uz z92Hd2;FOqlRS~$X`^9BF*Iom5y5Y4dN$x3g%IeAq@`f@B{-)J8XunX+FE^aOY6_+B zk$IQ%XY9Y>d{7~C{sK*XcFH9vMU~?t&D4o;R{zI=p$SbfSPrqk;Vh$Vfv!mizFIyV zxKXj@pEBK;w9<_%p7pGYVpG{T8=A$s#yPDiK3bvj5T+KC!byqqUTWe$RZKh@8SkWI zRS%Y4vG3beh&%6BFta%tM=MvZT+yi-Jf{u;5y*ujn$UC$UR2EBRP@xO{h5bWbPdxu zyV(2O?s^tLzmO4+IwMI}`3>hWJ<(u`4#DLk6|&K4I{hRidc(^7{u9Y{F}y<=vyPs) zhGHO(*>Jj=Vz7ku9C2KMn}7w_dMZRXUji;vFcMSnMMX~eT$b?_&2bGG`;GrnMqJ1E zFY1XtTGiBY=L^S7-jBTV*niN1JbX4dA%Hv}*`2}#{q-~){PdV8B9_&X9ktDv`_<6= zV;te!?#-2SC1*r5_0d})4J$SFC1F|eQzr>)eBL#?`XoAgDm_~0xSXTwoMKOF9i+xO)Uo5TNy{^wKi+uNG%6vGJk#`Bd)U?d`3?+*lhg~ zIfLK56|&LryYCY0%vgt!sC7sQY)`@#{Io2;*E2o4#iADTTA(oE`T<^)wt8@Lsx)+C z#AStkO*33Wp)!YfN>dEhOg%tX6;%t+JC(`DMmc$_Pc&HXLlDU;WTO$;J{FOg=1Nc;ld7!3?`alms8C|?yP9IK zF6v>hs+x}tgR2sQ5$naS$;n_4&bQmDgF<1ksjS1dv_@*^P{HtA2E$)w#C2f!hMs7! z>W9GaXBD#1Fx)y8hDtY3w~%h`#~~>z?;Xut4dqDy{!vp5)EIvP^)eU_+gDf*wJA=XySliRi zFEjI@`ig$c!eI)<6M3kr0TXUOrHZV48J-{MS|55h9vDo*<|q!aD#*|^K#Qs+tpyTu z5#b!_NTAedP1i2L0Xo*t*ol~t2ULaI&XqmU>=F;oO1K|Fxkb~4-~h!+y#Q-3(rKU? z#=8oy^Vw@0y70EdeapbwA^aL8^2kh_?D#(Sd`=2qb|=LWR!w#{^oIVGqs% z1G5g0CxY=d(iY+p*T_MYKVqS_Tw&0w~SRJSa1X560-*_O&-G4CrSi$Cd4^!koQ|9Gps3H3 zKlBlcRg@tDML~5|;L7XVCD-)2F_bHS#vz*%C!oAd+!PYa4{fN`!r~*C2695s!wlRn zbwEte2(t~i2kx+=1S-;&aX)V4P2vOtL@n8IFEBLfK(Vrc;kl}3!uEeptjHG7t{0*C z^QIsovF#gh?F_wEp~}aPh*6}JD6zP4z#^97bH%V(gm)4kNXF%?@&1PcwDxTspI{QW+{Qj&VI0i{lP|zMyM6_TuAxf-a=b18(PcfTKYC*IPO%)2 zz`&v;a70Tg3~ILmz&r4co*_h{N23nRX1nR4BQ*>QcQ_2#_EDl@;^!OI@I)DKc7*1lSh+-%zgi^}9 zAL}7_UEfT-5lbJhCV-jVKC!`tuK^2`Kwa5&aS93)&8r51`Z3pl!cVAUzyiou#adRn z31D?QX-vB=7Sj>r@DWf?5$^y?D#ctHUcjFLnha|5z*)GFR_5Do@qO4Zqli;eRv zkl|Vb;;iLt^_VB?M4jj0v)W*bNj*J0m1h^jW*;!c&VyWx%P?d&_>GP&@8oD~C@aG85oSYbcetJ|%JIWFEB=w%8+>=y$l438Ww*v2S0=g(ir|ooTyxC5N#(Pvbw1bCwu~;hlp5%B5 zN*ZOLLVr(NFvO~UDawj1X+J3C1z+v$`>u9p+4bhWM%}wv8nLNnl|&~??TZ{q8PD!!c6auDlgpksNgU2I?ryR>7f(cTFP>f?hUG@NyZ9yKIz8PrQ`PC| zZo8{@Hy;jE2qaj3x;{h%5uzaKiT{G0f(j~#a{3R5r(gXn{;ImGx@TrzW)BVxWVZXM zda9o1_q^28PkpWScDH#-{S(VcL|L%EZM$v|x+KZOtQ$IMp9DO6E8F;b_GY#&>ao3- zglX)MOq{|Dhce%dNs!&i#FCuOnV)PI{4)u0I12;APHS|U&fLk?Xs+cI)0eC)@$eJ9IvWy~J%r6U6MxVZfnuk^{9?A(YTu#X2ouLeB#TdJ%v&@&76Oe;WTUK}ot! zm+8jN6y2nkG5HEMt&90i>idLSK1)j5mqOGQiVeiu*P{(Rh1 zVVM9$TR#^Vw#~e{nWizTP)fuqMA$zW4=?(Lm@Bt7FijUQh2v-~VbTo#I1Cad%}~HZ zj&$r7D!5)La4m6c-qNWiY4#YxwizM#?H+0FGP@bENW*sgM1v;%HZXj9JPfs~%<9k^ zk+3Hd;^wAF44a$H%}YLiu8{Lmk3YBBe7+OEI9E($$IZBP^Pm|@(RI2ePRn&NqfPM+ zl^$1BLWEBzJPw0iHAw45OpRNGQZ88`V%?ur*F8E*{S?NWE1**1AXBZ0iK@7GIY8D~ z(vPT}uw+2m=L-;DG}4xoinJvWEB|VIX@7aFwDcFHtVq2ZJEv6Yox%ZI74)>Uua+@? zG2$ULH0a;P6G}{X!?KoHKYI9a|pb5A+}Oefm!c;mPc7%sFCt`V;Lqg(FGNt{DB+ zO=EOCme5YhfrfW=Y#si0cE5fi84s}g(Fd128g;HK4z7{`MYpc}Y+cR`&?=?f92U~0 z-GX#fSmKD9a-gVE_4nFfMP-cTbtM7~&&8kP>LFQQF6Eiqv(kINKgu{d$9O*gNoT=AsKdT!{=XJi zs8V9Pqv+JdR2){%`V!I_zU$)qqbz0E%xe4Vh$soAKm0kz^G^oP<359OXK#3aG#uIj zM|zX@`+TF{jj(xt0BOi@r4lDdH~-3ac;DNocl+fPZ8-;dBj$m6z3Dh)L?sgmi0{Bwe=)bRfEp=wuVIDO7k+6LZla+Cb} z7!iiCd^cws4RRGKozNZid+)d48T6v{qdjZ+?%lhlp2KqvKXR3io<(f?mC&k|d4-WG zHJ-5%g0ta0dlCbASLN)DowXv(ZWYYO9hWz-(WcqxV6PnpwFtmZj<6jK(??#X#C-Mg zaJc!lCJvuqfbm|Hn>M^Jo4v;k%~uS^!AhPaG*7B|9ZrF7SnV3#ryz^=FfoM@9kA-z zD671{H*$}m>97~jf_WS-AZDWv1E8^@`{`pu7m!GxXcjTHIJ5N-qo{>VXZrW*;GH!r4 zRKyiElrG{*EmgaEtL%xCRpC&Z+pgqPD(m%$TtKufRlR=r$!l8C^s+p-Cjd$s%RabO zw5Z!+K~q%sx-DiC!Z{0iXzs6?Zape(*-3UYF|7`)N~2`CE$TfIAZ79}&hX;e=&EzO zAK_&_-v(Xc;2vJ*iq|yu@wUiA$CBN2IhthZ2o-0#VaS7!lgbEM>WlK8AV~YxzU)!R zCi@a1kVTdg_T}|Mg7q3Xh4@5KtUbojMlTxr*sfqOgoT(yVT=|w*(H9qGb!e%?VHz{ zSS9|sVs>^>-U9-~(xHOd}}B^E>}x6r5#UCcr^ zCFR|%&u%3Q&*ujREfU9JY*9OKeH0g}cg7qvVwS^{53W*Et7PKB(8$md-d_-9Vkuv@ zltFW!9~>BB7AsPR1VG`ABJx%LXVJHVUW(Qy5O>iJn#6^UI2#iuj9uJVL~ssl!*F5J z7Ss6p>_SZ-!dwfDqb}Re=(JdpacGq!G0EUji*DMFEaP*!7Cd8_8Dlc)kwaXHg`{%OdvP6EwK#@Yq866GuvRHsJ3H;wy zw^Hz$Vw%-uetsLY6p_d>mk?5x1xe}H*jhTaXj0Cjx3{+)-RCq6w!^sBa>;HB zGm};(&PfirqU5k}M*@_&>avk&>l4p>8n7(IU1w+;Nh!BEueaeLlH)cbysNg6y*q4C z$CnyHKz>2(%!&&LmcC_T%ZP8~?Y&20O-X}`H4;nB;kOba7mhrScB6Sk;H@P018(nI zl=Ub|Vk-NEzU=ghg`{sIp1ztQd=qeC4@`~@Fm?FV$hD#qYn`Z)q9=wPJE`wilizCw$WER{7u3{s21;^bbu)&d$ zUmGs(!TX&s4fvLP!aZAEJUKj-1x)!;<+f__+0W?WK|T)F4$D&q_e;dcZq;+aTLhat z7NE{*DOR5a>XOr2!mz1cCZ5sT<7sgBj~%xA0gE28e=5!lV31#(%4^mU4ZHe*4F@Ik7evVYLhDJa5P(}3ulmgJ{+MCpSj(Q4v?ZKL_&e^V6YI!p+FSP_0IHe_jxGt**PC$gVvSVz_@ zNKcXG%dXFq0ukShkOleIikHTdL7%zD2_FzoYL+z{(o`lk#Dl|mv1{J$i74Pbb;85m z5tMfQDD|8tG<@QUgv-8`$`!q#)Q%Dz?j>xX9Sx%fyaY z75BwL+6N#_*vp0qi$xW=hfghPYEKKk_vR13zsEvvFHWKn@Za-z%tMcduH>ql1G{Z* zv7!PuROyi_V)sZqAVkHN0i$>kXZ02QUc&EX{2l@#@iox_G+-5vDi(BeKN1b|h)(<9 zAh+}2VDI&Q@`m*Q(CWjd2M1Q|eX(s8X;oHN>04EmfYFlDNfZvN04-JBYTFdU`aa*Q z?sK(i--T(7v1wL34rklUU#HmuqNl3XA{kvANj|8n^v=yxGE0Lf37F2zqR@e#ndVvG zzoueFVY(70T=C?D+e7)O)ta>55f#l_S7Lf4?l|8EhjRent@3Q=)50ix)h$YIW)b<% z?LaQo_*tpOwebG(X3CWCijg=LKIwKl7)#x54dl}j$fr|4{`O|NUkapHsvk@(iukpG zU3hV_Q;;wXV@>ijP+3=jLvu`>0v2D2}qOzG-XR>>U^2@+4!^ z_uUL@u8yNmVE*6h=GO&IOZeLiXCwdUN8XIX{zo0j{VSl|eD>^Fr=w($`l!Az$fFez z;!D`d{E91?)`YVN>ME&z3U8E{-k@X{y-wT@4%hPd9=$qVe0`;{Gx}yJX!hYvV~Num zJ-)E!3XBe(AXCTzs;IqF!4Z>*Ew|h#2&mkWYOlZ#H5-+$+vYY)>ae|2YIXzIP-*Rq z-Y!?nw*PwPodL(S{yXYjBX$b*QHS_1q|D3ZpyET0&JOQTvi%cQ{_(1SG3!NoRvnh= z=wgum0q)hVUmp|UrZKQr6)Vcw387NgwkkK!`1-4CK{ae=Ty9SGsrELkS|rnE=pS%q zJE*Jeb#{3UD7zZ*h~SuqxoJZEk5hI#s|6+Rdd!OATFVgkuh}a5vjOU3jiw+oOFvhy0Q*(C^ zMLLW$uaFPt%^J0ZVH!ARRJCTHtfOL=u|uH*V-z;q$tm3Dmg1aBjXr7Ir9swsK}lFm zcpN3#@%ah&;Vq^mm|qSXW{aOuiRAXyGv$v zr)H+M82uhGW7hM1Cpr|X@7E`$7Mo47K>;WDz)T<_JqNACK%Ql2yw@qboC(R?k#MIqFAZX+bU6TP36d_%kRgtb z%!Z`^-B8i-Pe`%isTVouT)?%-&*DgNr@GR5iL0Fxsbub)8;&Ox6@D;etmSeM3gVGj zg)s`w&uqm2uNkvB1L@~2{x*F<2>K)9!3ooD9*(??R;?VuMYkxP;5p$Cj_Auk>g)%b zFPrt4#|}W@h(Z^89+_35^ci%gurOZ|TF2_OUJqo|jnB1+!fuoddzraMoK^vFI+_PK z9z1=ZVdHV^L7fe&n(- zw7agrQ-zCz&*Kd!TL`iG80GkL`&?w-fW~>?IlL!wWjKHj6p7(3r3#he?F4T{6FwP` z^ZF6Xqmf>Cjx+d7(B~dP_#7$-&NYPG!#fN+c6h*~@8D$%tuVdwd}y}DZ&Pqqe~>4% z=VmqE!EUdxdVz;0^m1fY^7MjuhHJ{ulL!{=XqF5)(iL8fwxA?jP2>FwZsgHB5j`+% zoFb&$C=GRozK|80=8My;GL+Uq%N*P=cOHMes3GXHUK{)m>0nkxbWvLMrWyT*ZeCn8 zFlTF`Rv<(B95(tdri+5n%)e5I$5&l?`_3iOXKZ?j{M6j7VURzv&BSZ;Ipw|?TaQ|# z2OZ3ySZ{Cj`&8|*R4=-;pCpTWP>G>Jo>$M6P7wme66{wNhM5``9s zRm&|tPR&|1TC9vUS0d)ku~|s9 zi|*F;$NiRQx=`;;?=_y8GcBZS>yUIewNWkk@MPG4`e6A@a#YYi0wNz|KSKJ!YaFuBX zy7W0bOk`Vk3==a@>c8#}kx;p48f+C2*|j_;Z!o%o*61hna`8GuK?4Lqn9e{VUOM;GGWt1iSDEcfoIhE}O zmwpK*l{h?XfC}&i6^cS*b8SijW7Ox`?&M$YT%QD84o%ev@Y@&|ND6yQ2;uw=@U24RhdJ<7DU7eCsw11?o_Z2vL}z|WnJ12+&#((i+p>4I`e zRRLq$y`4^1t5wb3z+jo0324Tx8yIRq}>mrE$P;S0ars;*D zcl7H}icSn~)@J8?OOOD6J)&Z10`+hU9Upu$P_>*w-ttVG5^pZk5B&>D7kQeHz{?S( z9at%v9yVN7it*!?Dd|`wx{y8zr$c&2B#I+ibevb|2&f^t7rCawKJ2=r*VHQp-mrNm xTMYIyF2wkA7sBq&^oWKMeFYlQVn4l|G5q4VX;8x0GBCK^IA zo8~>k#;-r%MiwMQ|AEH8U`$wRTpAbNH!W1rYFWI@%$s-5IrrRq-}~INvG~Kp(`GaN zt{{i9t9rzy9Ma)HO?R}wioRl@>^p&{5nc`BreWi=`C(Cp+=2vIR*~+;VH9F)TY7s< zh7l->FUVFQR}Gd`7+dG(U}A~GB(6NJX|M#g@FBt%`VQutq5JP zw8gd26@z43(disM-- zHpnV8z!Vico&$%pzk6`{NGT!{J|^-TkqIw)6DQRC)dY~c)f=lp{?(rwQG*_|P`g1p z5n&SRSiDa>-*9ZM9yEBgJ>J>=rQem-%wT>aI3iKMcOQ^YPPNAl3YgrR6JI3h)6UnE z7bU5{CY4Dxnw-g`#XQzbV%I6uOv5rLzj11s%_(Pwhk;Vpzg#Z6#Pv(=8U@ELIbNM@ zD)SR(4}R(@RjH?H4dRsyLRZ9zGR{8RS1Rm!@_A;^u+%zIII3>gbspUS4bDC%OH*l| zXcTj=`NUj7cDup1!W6NViC&AMe7?noQZFkgyAe z#r9M4m;Q)NcVaEW4k+msO$P6c?!m4f4%n(i=$eZs*E#G}eVD-K?#{Qt3({25ur)K# WMTT|0#6v|Vn&YV=FJ5icsPq$0^}v+? delta 1211 zcma)5O>YuW6y?bPcKC=$i%mpCu?C8O7!wn1Oqx`QAwgG-QAwSlgBJtLI3Hja23;6U ze2F3NxlKcRc*ieI(3@VCIfrO6JW`QLh zArnr)-2o=Y9#A2x!s11T5{HP|T%AGob7%Ub$xC6Wi&2}8_;?olp~45#hC2>v4pefn zneN$iJy=+g^{W(o?9rm+i+kb5tJ%P@x2Eb%iFu|0O=$7go+3rTmSPP2ml&`%IUf1u z;X15y9X`x93df$R19-=pgV%u>I#>C(bGx>6M}D%c>r`Mrb8mKJRB2@WK{(-r|JVeP z36E@hx;d@?txjmXc#vV_KKgzl^nK^o;R^_5NK#Ca7viZz0!&jgF6Z-|PA8{rnV`0E zs{SCqskHN&q8a3~SUeURC7G()FmiRptnnn0@?Rp?#bvVLe@7yLEKvgQLz9b4!olc* zL*U^Fi$dpu*uvGcUI?BMm7O!p+pl84D|WKZnGj6FN?IGbcAPN%x-c31Uu zSM}Co#TPkyya6fP`57^8@jn`>3j0 z{ho26AjQ(OyQ}WGkMlm~o_pUM`^DeBxsU&g=Yy8*xVMU?Wx1Zkf_6M~VYI zW_!V&ipN4HY_QC$_~^3dhQ3oqA8ySEJ!5(8YMYv)^}!qL7EPmjqqo|8cGP`5-ZC+t zux%fSr%K5J>;v(*ocC&cu;I9@y&9Fxc-jobkXSFR?|@?kw3dlV!wdpE#P>1RY>ID_ zR@6#=l+DVf&#KfWiYG#|Mz7lTynS+IzkMS9;*#w(*;25@+@)2_zS8g_tF%r(*DJQq zoO0*{6?>`Xgr&ePFv~ZqVaWo7U8=MiOPG7GB<8$S$zZ0~wA%KA_N@JoeIP0WH&a-# zS@X@7oyF#FzRZkmFKSpu!`os;)$@%VFCw%ioiT}I!*ngfW{sB7G&h;yga*SbjWP>E z<{P1Hy7bHm(A+Y2P8k;h!%Tbe{6zr!%mCiem>IRmu^6E^Ft(F9IOtf8U-cRdZ~MF; z?eX~IKhX?(0r5+Oc>BbveUdoH{uJ28J_ROy7=LH*cNTx=z!LT&b^)w_ruL#nubFbx zXt1!1ndz^~L9hXall5%u@IN!ITR_6;HJJ)+-XCXewXAmE3?qKCC zkF7Oe>6!os#!jy6>xbTW9E*X7wBy-?pRvX^G!(0bre9+rUS;tCp{7?mEy(EWyqV=S zO~-Ao#xr=qZnYXt#R=Q*@OIm#@3!9|BCcR6W0Hu^3!xiKbp`O;FaQ@bBRner>}5sg z4!S?QahaK61Yx_*z7(+_B(jSq1z$Xoq`#W$<3;s5p3ilmsN3;eC+^#VI^9@*!MF&o2t)F#0Df{90HUM<7);5fjrFM9bbSSuPE&$T^}FSS`k8Cx4JnxUAz_GG62_L)Vm)21cwBf^?RbBI`(K|0w6es? zU!GA$P=z9g)q{BUGI>w%ZQ)EktEi_x)JeFKkfNJO%=nhs`)3*^vq@yh~gW zW7`RB092h@MUK-2`*{5Hu2pk5lxfjtrB-v1*4{_x2cv7*(ARHs)B!?McHqrpupdrsv3cZIrUg)@eE5Xqq zIpS`Akb1{jZi#&do!L<0ngK1I+^{>(}Cs(>I{@xxOKL{7S`R$nC zx16jfl=OJ3B)_cW?EtY>c9Bs$)}_ zcqS7ew@nqa$Fuw~Xa%MFES_hA_~}$_CrOt+Mx-Nz;u);togtUL%)d@ZHb?|$nPf`l zr3`;pLPCbq zhgvl7*bEruivr|@D4)cP!1*#Wyej`*L4K)*tdnbaK7a2S7DM8xi3}2N;5#)tG=h+| zCsB`&Sx2G%9-7wM z_{eCiBa+l=c3fS*Q#3v%gwWTjCON#os^xX#g$MHg$hF;655R(vj)J_BEfkmh?=(w8eRKXQ)2!i^ou$GwUHu}|tkzOEJk}3~FReErTS|ZfC5K!r!0EIJ zVL3i{9O#nPi5?SnHoArzg_eIVjVaFWzWbaJIG$T~pP*tkJ2B1tdm7)9Mx}X22z-KUW$f_D>J^E zdZm1wPWMf^O2fEsJ+h?I&i8n$llaAiRKvP*_e+efN=RU|kB515owCD8uunTR*wUbV z(&KU0clz|oBTw%^IlWRkz0}kEy^9RSP;Bn0h(|`(iSHLM)34ZEPx2&$5&GCWW!N}u znmaJXDjZk4l-zEY;ZDLB`^>a<40a1!V$cN85nS5}+fC-S$-P6z#Uz?MH6rb==~FT% z08^NjLl$+*bQ&f)O_b~Z!h-o60s9~DEZ17OeSp_!(fqBL&Ao9p_FReQUxAx z4xJ3IDsX_!MMO*?+$7Ee0HHKDkD_Sr*M*->T_L69dsb8-N?Q~Oz;|oH6@v$x@%qzN z2*Ti8p#zFuU=lC~xNhV|p`R^85o9nO*MU7r`X=A2XuM!S*LU&DFI?!#VtRN0?yPJ=xhR$voWB6?uLX8NbOOeq zQVH%gf_F)$og?wtW{@oWuK+oNgW;)$LP`PWhtz>oa!oQ{q;iVJ=c^%e7mL3|Ff-fqxz0qz5R4>BaS)=qp#!Z_c3=Uar)U?zsQMnPqtT#B2cJJGQbpo$Ju`98ZWG1Du(U{Uir0k)Or5o`|ZMO)&{pS0hpqvlG8Vvr@y2qX(UBP-Nb-jotUFH%CqL8gNu zU-xW?%_!3s){%22Y;`i2u$;gND&WAPiL=Lr!17qY;Yo6t>qRx2n_t2qq#^MMEXAAg z-+UxX0weEnQKE;z%hKupjgjepri1>Ouqm^#m23fKLZ{5@gf5-olk)$E3s3IPh9}xS zp$by^w9t|9XConllHzA2GX6wDYDw{x&QOIX39~W0v9Nai9GT@bSuN@nNx7%BI7#*5 z9qm(J{r5&%J-PSiI#)jx&odWAygtO+>Q!>syV&gK*VE8#1H#yCub4+|kZPWah3mt` z+%nd#3p3|4vOPST%CXIZL|*e$G+u>EFZ73sI#ebV%78*X!n(}13I#w3|C!9Ba#@ET z-;E zc7Q^@m7|xy)J7M9p#oa&QK7WGXgnu#2jDDfDFLGv>=rzBO4xH=MX66Rw{1pai%bOU zl1R>r4F*c}C#LCpBd!Rv+})Z0cqdjR#_zK(ormTQjG7NFNFkV!kb_Euh=&x+P&{<{ zGVssom@5IGU4QZ(yo5NzG}YI8X5{rQ$@QKdVZ92b_j(sH8@m^fG2vJ`^X6sAN&?+i6t89{ES|}UModN=vf>;=qk3C|4T50wnTkC7Mikb9d(s;6g-Rj7! z;rz>8fsJzWTg}G#pk>m5m`Q|z0rR&QuQvG!S`^j(pImv|ez2adF?G+nWx`1W6kd9> zM1~_ivkU=-@6NfRWrh`d5p=IKBC%D~LcrJZ9clq9OuL^rGLQ(x?tpci)kdcKlalUM zLifR@MZu&v>5a#Dl6)Rs>K~8ea7@|3Ie~Fd2i(%8GeSXBrLQq|EohtlAIMy#)+^&Y zPQ?ds;wj67KlaS2Lcw^VXk6yUSVS#dwnX>lg2?yC^4_9RD10tq%3VV12!Ce~la50< zAlK23587d~(XPJ+fci~>!eZYhqzk@$8hn{9w*GyfLDf2_>d2gHm{mphEPGAtLkPx` z8Yf|_?l1Lq{5s8Kq{B2nE*a-nC1g~tui&eibbN$s2r;cf0XdKa@m=2NllfirGm7Nv zNX-cQXMxmoei=cnialg3=p!aw=uld_KLO=^oNG+UY{ksaLQm*t> z$KQ8yee{*+`d?D(lPeb_J=FxblYDhpEZlzc1K{EIo4>{}fnR=;e(2cHXQ>7n-VIh$ zOi9{X?P_daVbQXrxSA2C`2O<)=G!0T6#A-u|209mt{F~}W@r(jJtWoP7iqpjq9z74)46Hl z;2qK#m!LD!nfG5UIS6XCy%{W{cZzTspQqApB<*k#&@h1qXcSc$2xb!}PR|PmN{RTW zU^;3Hpk_4PenoP|2?^Ox87o0kFex5-<1XVA)PELSl5q&?U&HVETl8=Y33@+luZ(B> z0wvC=sZ2+S?-!fil&QeEOTuiI5`|2o9Qr%6Z7PK|T(<4L>uk$m+hXe>o5)gR?A<^o z*b5^OjB;%&l3mp34k1fHlv<)-rZrzl_K|sV!A-MPofe1wxqt#zBrs zILOE`(9mgukF+jMof{i+%Z{JW!a)knqvO`bY@y;0@U-;{ZGtWllTgl(hNdoH#t|i8 zN(jYVhC}h3AY_-n{gL2>=ZWq-W^#)93puXoS1Ogosp3u?-sNEmM|7@lGuO9nX?mAR zy`I4BzEtYYoo2fxr9@$h8@wlX%R{=%sy>JJX4GslGTW!p=mFF_LRcoGZ@KGOWjCwZ}B{=-wFM z*R?L!^^Jrsx@cx|xSJQazDW&@g1Oq!eB$STgACAl$uXU)C6gTk$h=ir8hW|;b zuaKzf^q5noRfj_FIP|2{Z)z(tFf2TZ3a5M%9l)?-pp9ytQ_Am%v^_%*~ZQ^ z$n4Q}y4JGJc9=R~{eZo!uGJsv^t^X$lz@l)=hr1Y?~#z2d3*hahjIwM1;sa`k=k}E zJFo>PYpwBuL{k6Sx!_I4T4XFxW5L}i%KoEvgO|_~GgILQZC8P2i6Z>4htY9#W+WVu z34NmzN1s#Kz8)#cjQw1`0Baz(0ud9SKm|vtp)TRKHzVZ2QD8zjad_!C5a;2{5Ss96 zFp4z_^eWAi-;us_bUZyWI?56qPb4fe*zziv#}k;m<;`I1M+sxCsEpH0#)Y*j2)9uE ziYjV_F16{3Q&UO{jsl{ue{JOTTXOx^lC=z8zk(TR{ja@DS7p%&Fq}ELv}Qa7`)aI* zJE-yF7qoDTu(kuFxW+PkubT_%81nY^cCp1@6g|JTgc8D~7EUbEN8!;&AAM>mb5vzI z9VHj@)N&}%6Lmi_%#;*e&WOgh-+Zs%0&?Sfx$%3WmuL6lb3-pbdjh*E$*5KCRc zCUZ&lBW`S=)XNt?yqV_&>6x2opNG0~kZ=D7HI5(d`f_+&D z_TEsRmHN8mDTSH{*|dNG_7(0;(5Lsd-cld%DT4C+VNb+#@_)Oed8Oo zgIfPOM$@C4%>HQ;(M>wDbTzbl#_tNs2z};J?s5SsYf9cT-5gEB4ycjPE1;+))1~&B z5~$*Ju6x`?i9FbYxU-O77}=Zf$qkwIBB_D>@mwYH=`PJua&zXadcyAuT#Y9K+z|;C zhs#2bkZZti|Kx>K*l56(`xndxZm3K55a(CpsTxCNzKI)WaPi(0PiBN>vqiV?iD6Kr z=x*ZYwEP+Q4g5M3dX*9-p6D%x8^gT(opyY8)$>9maarc&%KrEeT|J5#fYL463UA}d zTmXI5Dp4jGpaHskP&{Gc+Jc}&soavf_Y)&Z0C^GUYCKEX1|Rn}(&>Qq%3blajiW>A z=U99M6^p=Ch|Bqc^y!$z;B{iSIl591xIzmQY&7v?iYojW&!)W-&pB=@3QO?vxzRvn zNfcHKPZdzs){Y<2UzV8fdwvOFs?}gP%Q;R{tzf@@9!Y4umoeT;J3f(nlk1{>&p0+e z=0v~g92E3J`imTJe3;e{08zNswAJ9XFo#r~3@~m{u?+5rjgR7VFAmbVG!(k(562qOubpSXL1ImCCN{)=n;}CaE@C8BQ_k=RfmQWRDqRxR( zdjeTsIwZq)gHkl!D=D2EZE4Rn}_Mj;(5gM7QafM zK;HtoF8SVkQyi8gs8kb=#Rr~v@-gK!@b9{bT!%vFW+FSs%Q~?27Xd~F2MaoqP7G;? zh)7w#j@OCt-v787AK&!RE4@bV(rJ(JqxfzO3*zGDt{AJYVYsgIEz>-RG*t!8Z=j-E zqQ8PO^z=}CU#R~OK1KaM>Ek;TCHw__te~Q*{sMg*p%-)X@kjLY59#9~Qh@bm>0^ps zjMK+{`uJaZ_C9_4CHnX``uG=oMDY}jNQG^j_I%7$KHe%HYn6|)%Ewsc{jc)AS9!my zyw6qM-)dx^0xtN3?O8Efx-d!1mX6?y*-}DI%(g_|_-tt(T+EhIgJQOnR28$OP>9c# zyGBubD60ZE+74lxmg`GWJK_mxdeu%ad-jQF2Z4vmXqLT3qE&d)dvXtx)>B%KQ)*NW zbhp;O-1OfcAItY8-|UO0VTZVsk-?p*AV&bT0g-|)GO*K%k{nzf||MKai=?CGpqU(8K6Ejn^6NHwcmf4IU7+{ z_ndmP&YWr#JDX8P@acw_1k-Ut&+%Ek=``Fm<^-w3FhZxy(v-zc>boI53lbFf+|47- zsl;(jD^Wa;$}w|*FA6hfH48jOP$bTV9z%eJW&hQvUXM0TiX}XpfBFZi$>`@`te}db zKjv@uA6xS0mO$$MgP?E!VQ`Cs|3~rvbNK&x(5^r0&--)dP}Dz8#6;CNLG3AL^*T#S z^&l}UZu95_y(tALYgiN~SlBNJiQtdt&dS*&$-qpUzMjigldH3jRHH2P3T~mCtJ|D{Kha92yRtjYq%d; zS&TeV;iYnF03$Ze`ug=e+~ryd}svswhcoAw_5`DC&S=Cz^MxF z4O4-DQx&!b?%>M#pu)n00kgXJ)&|DU2141BsBjz%uERy zRpAH2R3K3Go*)L#y~AStI%qHs3EJ3jooz@ z(E8a{+H@LY*dt;27@E|m!Vk|@x%E>Gc&AW)P7rcqNf>vqraU&!i&S83aa$})obsl# z!i7-EO<%IZpizkc%+rD!7WmUSvgTldJ1Z|hGrLd>%_s@dDBirf0{fD=Pz=rJYSB4u zj62h%><5Tkgz~qvirrJ8iFaDRI2%Fgqe3;fR^$-Q`iJu`-tK52KShxue6^rosexf(yAs|+(URM=G;o=N~tIva&m?ttb<0g&M1!3-qpN= z$8N&N#ZKT#lMBwAB=|aWqALGhflIy$M?G|+n7@x4kHJ@O!0F}%;$YQJog`&Va@w6{ z990lSJSQ7h$ZFGkKXg9zt&!f_+}m zx$Gml#knLww1UD@i39r!tRsV9l?a>`gl-BRM60Zdcv_l(Q)3F1r49mwu*qGDY7&!f zMDf}@9}G9;WZGJL#PAxce%!LmD-M3egFzkP3@)GMI;K zhR|LOgDMCkOtGdhD{RDpFy&DPHRmDYvoHnCQAoAH>02rswa%Y-w;IMzyk{)gAC0_Z zhXyU#OUn&#vl1DJ;(X4C;4O-KdqE7Y!s1GL z_NN_?St@kOo`bS%+aH?MZhwx3|GJ~$L25Ifly)ot(st{;a%t2Ex%wO{T2sf59y8cl zVW^gk!Z3C6X~{v#QMC+J^-9@z-L|SU4|OzrKn$T@U%!O7znP8wrljbS&b;ch}bYn?8)uDC8Q!(fJjj+yIiI_w&@A;7EP zVlIA#J|`92;P!72qH2RjRisXKV+#8uSboa zLJ?o?AJU#+2xo+vLO?2xysSct?UB0!ldb^^4HmZL+L%&sFJW_`0dmnGw=o7-bYxwj zoprcMq(p--fY8@%lSx)|zT&Qn5p=$$u{sIjs%{)a&T6oZ?J8J)E_!k62ycOK;HJUY zquC3B5>_4szhG%Ps}VI!d%}DYm@jH!ZZs+pAcMU?gTR>hP7S^$irhZK_D*1H7~*ch z5c@}Fh+i1M5czMP>Pcnojspm^vIY^Os9F&JER4b?CxSer=_26>L zUPE||K5HbbPLgB;X)xruF{EhpmOnx~LA*jQp+$%pQf8292@*$WcnNu|LZ4w|z8iDN ziChwBOC)N*e+|BEQJt@JB!W0oBkq@aXjfg9&Hw*ZU>+gI9IT6UgdpWKSS1=+;Iu&Oz?GX2Vx2mbXnLLkE&(DTX<~~A}?=3jQP24cLnqrw++mhy?AMkl(GrQi$pe(>n1%! zr?uVIHuaQm^H67M?#Q$>XQ3!pdLo}@Au>W^hzPG=+F1W&re9w+uHXt7y4SWfPhf;( z;Ne~vQCw7b&c#bYTgHr37?0TUmE%q)Pw6Q-UxOtsWRP-URJ0ZXg|mA{K3r;l5w%z|V@lOq!`Es4UBB-x8b0W$|TfVNe@a#QFUTn$L~+lfBzi3N=nb;I!tRc zq)%6n$xMW58C#&(W7@dqabp!p7UfV2ab%7tRZ}~XR1Mj^ax)R>*+u7h83F-8Q%PAd zYeMD1<)FO?&LYSn(qr3T)VBzzK&6U(2eEfTyBJ!l{?mvv0@2*uoKW$0%u4h>U|yP7 zYu}|6ovD3iXueZnlY(TpKhPx6pI504k&&u16d4^ogC*cg*^x#;nG1yEJ#ScHv%N8PJc*dEoFTQu^}$wVYjX!j%1`PMGi%pIrIbHB8T&Ys1)DF zM=pv}j@_{0YZZMPS~7^lNMFd@Rh$*smiVoF z;##AAGHJSWcw{%6<%GrSjCK)fH)v9G=bq@A<6sd_e5P>ePgE97ePI!T0`3i`tEQV) z{CQALrJjkcz9!t_W*krn7#XyIjI4Iec{f*CV^$m6&c)BqMqc`-BrG56rQcfos5%Cg zfl$_(Vg;1)Bhy(MecN&9$EK}ceC9}@;5=D$&hQf+A{lY9E!$VbyJWI&(J2(ZtZD5g zYik@i?actofwZ?1QUigWR=&ee8}(N0BTT6FQ+yD)-A^k)ry=IfeG!CgCR=+0B~
KwLX`x*b=^#$W0hpT&YzvAa%YOVpI{@`@Pi>#x6FaPa}} ztI?nU8BgyJr4WXoaA}rCSXFGaQ()^TY@wq(8h5e`c*Y6ocAvS^7*xnrN0f%<2O5+>`zS{&f}t_C^aUrS%1=+ z${1$eJ?6pdLD^lZ)DyHd`3#@n1*)0pK(-IRi z^1-tu>Ql4rPkolqE5eq2fpYT^E@cpGE^vT2QyHkBL~#)Gq_E4B5E-?ah9)1iCKmjA zLsOJ;i_S{e{!A};e=1aNk*Z^08wjdDZGhOgy)8lwVpox(|0Wh-lO(phXlscSaTW&Yrqf`JGVO$I_z^azkPC^h zO_?Djb2W;vrH`HOuOr%^6PH!JqO+VK`J>EGCqOt)7~6=8P}e4|N^%&dy`2?dH#+=~ zSm&8BuEg9X5-?Gpw%j2?&?NjD3e{5A)C3F%cpMlK9K(>|Fgj-@vIPF>6TyWC(QZF7 zmVEw;Ph=i`gb(127}``h`8!EJ!*?FK)ml%>&4Eg>XnnfFaEpq70!&=25DPT7yAF z^dxJCc5oSX5Pyb|VJ}Lo_w({bhUN3fyT^W_o2>Czs0#6{2Rx60f|xW&F33V1^vr#3?9IT(j&$8*@? z8id-@V&$G3d1}jYYEQ_TTdg};PO8ocU1yNp{;~|&@biaRldB}yk>nn7TN3()6E@gU!$Afu`VDSE{wcnFUckQs)oPaOh48cJwWsZkwZZL zmD8u5pHxP?w%3O)uL0qP`>W`F5Vdqh4|_%$UhbO9VBtvQr{-_SZ(to|fhwvcX(eT< z$%8$98L2$SD23+;&X~C28c`eXlG$RzS= zm%uU*&uYK)1w3aiqKiq28V_EV}yD$E901-bL!$*IKIgL#!&(Vx!SVFaY7}@N2#JQto?{a zGgJFuWC%P7!TWkTgH2FUdaBM)5WM;_-6KY)BXK(F^hM`sSOCs)x``B5es2y}Y!^3y zOXw`Z@Vq*!E&|xt*eEvni((Y7E+B(;p^3A}^ieo*;>6Pn)}g9N(~ITY+E0PbM;+)` z&f@2W8Jb$6M@8Wq*WVsA5o;Vnwmwt)zm5_1UkiAhb3+5A4_8&?YAYl}yw*BgRr_a3 z#p{O3sI`7>qH6jlBM_3RV+d(*KXhM<;=gxwKcm-9OvaN;ql&c{2+k7#ZcV4f=m0D%n<4_2c@3^SuXGT zfon$@;xHu>=fc^`j=broIJt~AR?eSYJiWAh+Hf4q@vX1kNaD(Z*z{Ns0pltRQb_#pEfr6XTvr zI*`*kw=JLaab{2b9M2CRyBAocxF|6(Psec>CR;^!`!?J-1Xd`4?4JgnOwgek9F;+U z^IQ48AZ%u73H}eyU_qKvmR1W-7m$nD${%chSz>V<#U*(7UY*6jnTA?HmdP}BA=+CR z=dHBzhdSPLG*SC5I3nLC+BIWPwI6JM(NQ_yPjg5B6z-U9)_G#pUX^qO#68Nq!sWdA zL7aWZ#TK}67Pn}4=muLTz+orIyozZ8k-#ek=!OX`zj@S5Sms3~B!HpRes&GH->hWU6jb)0S&q7ubn~Fy6b1l1^M-qOP_iM+YD^22;I0qzHkDSHNVOBi_|G&Co z1zTaoNdA;ido63W-r`q2^Lv~nyT1h@i7Iq_*6{z`BoVMf+g@%z?I(I*Nq7~B&sd7q z4k6j!T`Msh-K&>ml!=dTI}6uaxa2n9EhGV04^)KM1HaRul+y7xNEVFv06GFyq!5U} z#-rPt>DuRM1SULw1xJCtC3L0qy`4n^xXq|#gywj@{mG{uR~nvwZ`WoY_R(hD{n_?w z?T4gOk$#2=9WVn!EG47msQn19wVoY&LiLYt?Y;j`zutQ^+Nb|4zq<_uart#m#A+X) zyPo6yZyEfhG6VjFK3eqRx9B6MkGJS!mYRB$KCaP6hL0?tpdQoBCa}azc%MtWza`$+ z67Oe;_p!v=U*c^q@phMZn@haCrObbrTA%^@Q+%}k$6}~-A%z$!#Sz6&>2?G$RLW8i zL#2qO7%Ih$#Zbu&;zQ*oOqTDpxt(LS7yId4u8~|3Pe>xGa)Q$BC!!qaA3WbEM|CYg zc+q=09_rE)Z7oiyUU{Xv+uDb6jZ@O*hdSGmZ|=$`p)WX#kz(9aLHq!G4}OBpuxpWS zzrpjju_E7WU4qcWL0O1l9D7Z$TQ54)YNPG(9{ree{iH{lObUH6tn&TUM#&~(!YeBm F{~zOAV~PL( diff --git a/docs/build/doctrees/cpl_cli.doctree b/docs/build/doctrees/cpl_cli.doctree index d2d16c1f0d4d71069b7e26cf0b3deafdeb7b54b5..3aff0849113eef39f11024a3971739c073087628 100644 GIT binary patch delta 569 zcmZ9JPiqrF7{(d1ZL&4R_7W?$)!1sSO*Ys|!Gnm1RjZ+h6cNHQnSHbG*xlL9>?~5S z=(VsO%8c~nMf?W&9D4D4=+&Ff#y=?@UIylw=l49kGirQ1@4TIQe{$@6t{1K!BrK0X zD0BREIJJlsT+$E83$m;~k=u<+hvqsqdj?nRT(z@iXI=jwKQG+DyLb=p;{$wzkFkrp z_!OVv9zNG|6@0USo4AB6T;6f;B6jjV#nY_foJyFI0PRuW2t=sRk9f?Lc`~=Ai|Uny1ym}{Zgn~-q?wl< zC`^Qx$WVW&Za1&}6$7fMl9cU(^f;(N`J!XLM7L^N`d#fqW0uD>v=IpnxCl+**u;IK z*IjRQJ_DwBBK!=ZflasfM@1dtJ_P>Qm6;>G=e}MXqR0wY&=}M~3Yj@HIP7NFw5J$- gb8nK>vs|z!56Ya-^h_}m081n->84w5Ebn{2032J(i2wiq delta 441 zcmY+9%}N4c7=`&}#$Rd?gi?(${Scx#gKdHqg+xe*hDZc~i%~y2g3e6ylSoKifE)Ry zT1C(WL@>}@v~SZjbO|*YYAp`$;yv&4p7R{{V#00UE;$t5IgsJ!Wq^Q($SUNVB-jht zkFECIB&4c~bzhslwtOWS$9*pyAcsR7A&+AeP{aw!sNfW5Y?((Qg)Bs*kthgQf$Y>& z%vkJ+kKIgZRo6iZ+rDiMNlmKNsjE)nj2F`1#W>$DG3pcf z8L`0q3z7KOsOk=amhPB79BDs}R~Ehqx%YCx9YWH~4sEcH(3&K{whe1fQM%o(Z1imC znyi}_N`qc01~n|U5YETNiOJUWwk5Zy-5i-%FTBehLMiqdeq@bEhP_3uMFSmc5Yf~Q lwR;A&+`bE=WI^(0$16s&WHH*Hb=_3$mae&_Q5&Zw{{U)_mMZ`N diff --git a/docs/build/doctrees/cpl_core.application.doctree b/docs/build/doctrees/cpl_core.application.doctree index 2e514333362fe069b930dec5460ae7573f31b4eb..22d735eff07e0c4441f666d274b286a6b9059499 100644 GIT binary patch literal 74914 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 diff --git a/docs/build/doctrees/cpl_core.configuration.doctree b/docs/build/doctrees/cpl_core.configuration.doctree index 285dd7dc10e0b27e0a1ebded5c834cf627f55461..ef32c21da33a9288f9358e666e44776708cc366c 100644 GIT binary patch literal 165504 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 CFJD9e literal 121819 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⪼9#b14P zN|!M`z@Ga|f74&>rvHrkt9w$2A?be&L4VRG_4ilzrF0$R17ZMt2siYm2MAB;!ISV@ n%nSGl*MoAjN|k-c95~CxFIJD)s{P0$R-%Za4Q!=7vGxB0V&&%s diff --git a/docs/build/doctrees/cpl_core.console.doctree b/docs/build/doctrees/cpl_core.console.doctree index 818867e9c1c63496a1f0497aaaa04119d27d35b6..ec0de8956fc172547ce7103782f391407e6df3a3 100644 GIT binary patch literal 201897 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

1MB05;HzPMdPo#Yb;Swhr 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 literal 115541 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 Mo_j;QYfnx5f12W2N&o-= diff --git a/docs/build/doctrees/cpl_core.pipes.doctree b/docs/build/doctrees/cpl_core.pipes.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0fbc26ff1f5af4a381203fbb9dc06339052b2ea8 GIT binary patch literal 61778 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/cpl_core.time.doctree b/docs/build/doctrees/cpl_core.time.doctree index 6a7dec2b6868f1e9e17b5e3b36e117281c66c870..75121de8b1333de601172af811d089d1f96f754e 100644 GIT binary patch literal 26926 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 literal 72371 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 diff --git a/docs/build/doctrees/cpl_query.doctree b/docs/build/doctrees/cpl_query.doctree index 83106a741658b50511c8d5f22496a425c0cc11dc..a505b70115838edc2ba6fa36574483a651490302 100644 GIT binary patch delta 703 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 literal 20467 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 W^O&5`Tdrhlh4Mh78z|R%=Keo3AO6t* literal 276000 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 diff --git a/docs/build/doctrees/cpl_query.tests.doctree b/docs/build/doctrees/cpl_query.tests.doctree deleted file mode 100644 index 1c8943d633039d1099f8047ca632975bbb40c0bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50076 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

HvOe!tOFQdXn9K8Z)J;3BymN}K%R>qg& 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 E0d-1ubN~PV diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index f9154c816d1f836e418fddfc807d757a8b67fdc9..9a6b370e9caa3ecc257dc7d888a1fa19474ca658 100644 GIT binary patch literal 285878 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 L0l7Leotfaz5>Pd= literal 210738 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 Ak~qC5EXD& zT<$=zU1c#}W+F;>w>d?o9bJ>!Y48z?Q2v#v>^qGP3oN+!f=C^t_#B-YEqqVQ<#k36 zmv1Zv!wU0PvGMgO*f>GXybMykW3Xqk58HrqnWAcO>6i*8+)=1Pv;^N

kJev4(D+H#QM< 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 TkSZ0*O?b#J-P4?CPI&(Z&gwi@ diff --git a/docs/build/doctrees/getting_started.doctree b/docs/build/doctrees/getting_started.doctree index a4704eec1d37f7d0556ae6906a284055a8decf7c..23692bd81428483baf88603ec6dd462576bf9b0f 100644 GIT binary patch delta 553 zcmZWmO=}ZD7-lz{q^S|@!L`t)8e6T}bc4MJ3ROh#P@21iWtrW5yYJBba_3zkU@@SV z!d}XZM^FBNLJs~8Pof9^f+z3JMw%QvJPge9zR$6k*2Eg+b}*%KQ{LaV<5k_ zHswY8p}i9G6ucPHh|r69!bu%o-KwL!yIzq-)2+3yBY*H`@~GOnzBWedjM4Da0QD delta 460 zcmZ9IJx{_=6ozxlHzBYf3>H&AVhBhZ95ivjI606onUIh$^y9*5g1xo9wIPPsAJB!| zIvRg~g9DqR|3DXKe}R*`7f>M%Z|-p3^W-@Bm(9K@3FJMH;HG zXVfZfO`$ z_$@~ld?u}C3+E*^%dxQ)wk`ZuTlWZ)F7X^4M^NWVv!~c6Lc#1Iafnczy(M?qQEFR~ zfKuB%Q54_zWqVA4STb>jih-{c8`~};sq?buA$&tB3E wR?OUpJ?Oe&#!@da9ozh0ClT~IE=c_C&K@&ORLmM!Cyq)@Vnv<#F`g!W12goXod5s; diff --git a/docs/build/doctrees/index.doctree b/docs/build/doctrees/index.doctree index e8ce2a606e07b2cd356ce1c1c4abf639503adc3e..f0e9294f0298e60ce6f502c91381af63d573ed56 100644 GIT binary patch delta 637 zcmY+ByK59t6o;9t<2w7evsuUz%T1PjBw@xRMIcQg78b!3JDX*k$IYBc=EcsPB9N#l z0|O%W2C=YD6IdC7seBY#Sy>1+{sUTAYNdBJF3EIp(52r>4+S+{DZdni@9F2tion_5>OB3878=v8<73UmzD+=L9nT@` zUado$Xl`~E2nnNgRSj_%Dd8T0z*mByO-*#S*`72lo#RfQ-NR%r#L@UQ=Y1IUW4M{U>5O0F6b31+sY0vl_@*0MS**c{n_aWZH%p7QD5BlPnh}RB`InN|+8iB7y9_Vc{idB6o7h@Mh2$N| z!Bq}QTIDDQCl@)mIk`HyaqT=Z-}}({(jkwPTg6I0!iGD`C>N zPiOcv?J`CkW3bBD?HIua{(1g_f)Rg$W;n9oayQ!b=KkxYs2z*D{tL?ZB5_SfdwZxEw0s-|F&r0L<#T30cpz}fZjk->f&0}pWsv=8@4rXRT00LRk18Y zf_pxlnT18wf*8I9W{F%G3Z4@3T6wAMCnSazl{O(_U*?AIaS3ykkB~ybfhBd36*9&u%UeH3GPCkGd9AF4 diff --git a/docs/build/doctrees/introduction.doctree b/docs/build/doctrees/introduction.doctree index 9e5713f732697009ea5ce440af35086c542e769e..409c498baf3daf09815b44199c2ecbf2ad93f415 100644 GIT binary patch literal 16794 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 Ug-A+6?D`<_+n|%a^8W6B0aqCDzyJUM diff --git a/docs/build/doctrees/modules.doctree b/docs/build/doctrees/modules.doctree index bba726227f167d9b53927a72bb48554b6bd9711b..e436a9a825a2a7a706769c2c849b3b905bbdf9d8 100644 GIT binary patch delta 514 zcmY+Ay-OoO7>Ai`k~JDZ;S7N@N{pYE+=del;fmuB(LzkG7?;WJWZ%Wz*>z{O5R|*- z3b`$mnFAZ~k4R-DceTBpm4%)Eg0qqMQT!NY=6&90=6(2ZJCXgB`+IYiy(%UJ(+;fI zCzQ*x>x0}RXiyPf(GHptr|5fW`dBVPwJo8hGN-bjvLx;i)qlV$tiih2&OoIO%TR#^ zOl@Z2BQ)aL{FO)HvewgT%b;=g`T z8g+f_C`Ev6mpU@ZD&xKsdqc+TI3pH!18Oqjb(LM6pCm=%cZhBFDJDLe delta 420 zcmcaE`a*=Ifpu!^M3$XQ8H^K87P2yCFlWe2wr7lDl$|__(N0XRc8W%ZLhO_bB_LJ- zVl^PvnEZ}0kKI1QF~d2-b#gLOM!i;sVTMeGc807sONMlYUTIQd2C~i`{*wIUlA_d9 z-SVQuf`ZhdDTxTfVyBd5Xl3XC_3>nYtp}OoSDKUxH=>6*xgZCq1?mPE7wir&upDwImIsX!1IC z^T}t}v?f1gpF4RbhwkLp9Mv*$8PUZ(oOy}4sU?*Ksl`)jr)0$W6=x^_>FCW(oQ8}d XTq&u^`9+B(nfZBB{6L;5P0|AZ7J`wD diff --git a/docs/build/doctrees/quickstart.doctree b/docs/build/doctrees/quickstart.doctree index 7b962556a1788e340047e70c43aa0dde03fc3037..322875c730501b3488294c4af64d92d56ecd99d3 100644 GIT binary patch literal 23678 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 u@P=!x>+h?2ezUIww~H(nFu^w zL#1`2(A_MHOI6(Ubm^WWE~v-ZiFZ{hbt@=Mk5Jl9ik@JzRHS|5x9ZVgEATzr5! zGs-9%r5l~iy~z#H`Xb~!nvKUz*C3!Dl3(P2qj|!?2cb{^v}3cYwKL+{Ehvt{8PO5c zRgF&K!T}D%p&Tf`)@ngGR--YPx+c&BMJ!!S%RJ3$sI;l3P0-fa}vs#`vt zhz25jmE%Go%=6JSkny1c?A|U0o#EZorey;;6k0t^zc2~DJ?KCcctfM_FbJc2bT^y%MA2OErO_`=}>d0D7t@ zUkUaE?B=u4sXg|@$3f3oui3~APc7;2kBf3BP*#mZcFXYUmJu{r-65#`64}iqNGu9% zL5uXj?5-S(&O#>JYNDPA0&0Bu`ffDu?>d3Dqng&HY2zPRVB00ppZ43RnybDNLa%)g z>Lh!PAF+qm&^T$&HgG{nYk+;RzJbb&gn-@(JKejij4!Lr%k98jNRQjFoF-&I7={yM zD*O<2Yf-~D?Z=KiV=^t)Myjs6)rHKoH&7?k4|cHx(?DsccbZeg!oi7phpbnHdXD7j>YB$`V7%TE|=ZTQR4!dOpuOa zkq|YMpCvKE0h746?;M>mZMdNm)aVx~r%puo=eyF4RY0Ydcr+S$@`)!!AjE#lZu5J6 z+-9_AzHBa`^(Wk40-@vS!caVc6(eqa7q63Zn}K4jOlu=_b+H2#G0l6XO+09o-(d}jZ^> z>-6V6Y{Inup8kZ0j9VW4d5JoImd!9hBT>OS##1)dDjR2&jj_t$R~hUogIf*FbHIg7 zXil@)%$0bmWty2yMQ7IIsVG^*reYCH7|mq$lHoFgdaKNcku8W@$oz_au>@vY;(jo2 z(Bt-oYbUDCx}M54CcP)55hui~4CsV3J_~=yb>EjCi@(8DJU9m?`s4+t8mLhRU51<^ zKtOB{l|cI&;M5no&%@B6rZh|@s$TnaU65?^iNr@p%~MG;)5a;wY1p9-)9h{%6b{zH Mjd6<~M^*Lz1)#7pi~s-t literal 23609 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 OXHmG6kws*0>;DHUlO-Vl literal 20265 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 O)vo7-nD9y)>;DH1kEjIz diff --git a/docs/build/doctrees/tutorials.appsettings.doctree b/docs/build/doctrees/tutorials.appsettings.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d2a486713bb601860ffb914285cf882e0ddffa93 GIT binary patch literal 2786 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 KR@!{49RCXvW>$^> literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/tutorials.doctree b/docs/build/doctrees/tutorials.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f197f99f28676f8d9783e04f0fb28a8a0d7723ef GIT binary patch literal 2968 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 DSPxZ* literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/tutorials.extend-startup.doctree b/docs/build/doctrees/tutorials.extend-startup.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d87e750ac9b8bdfc18e053fcd667d48b905074b3 GIT binary patch literal 2757 zcmZuz%WfMt6piD^wq#kdoF*-hxNQ)mY0y{-f-Z_~i>{1%(G*2D0YMEZkuZmxk{nxJ z1ZWolVt~6a?H{!N(68&^j5K=01_YCrm-oeU@0mYZAO7pys{TUX6+-ISkTRwX<1U6h zX0kHp+Q;|t*`M)E{5rHPy>zCu8IR!>G%_I-vs}m5G4ztUm&y(2_jeu7yfnJGE?Qzo z?7oho9a>&`#aB*3@5hLn#Z$pOhboyZ{@i3NHQh0EtyLR>}HBO2O-uiP4jxS$I4>48Pn|C@=4Mu z!>*^(bQDEje15tmj>BXmOwLE{g6q*40?(8w8F`hquQFk|9DC_9F`7zGoH*gk(upSw zHw4KFHA3ueRL4B>r8ibm)DwnKnUi^ChB=Gkf#`~dVjJm*FOY+HlpbJRFH-RswSKZZ zX=+QwQ=B|Q4&ocpsbd$nQu$0usiT3 zBk6_GDcrRXm%WPNXkv`l#`BfK)2(oj@Ttq3%qGU>5t5z*Fba~HJi*?<e#44l902Wstt{-gN42LNJhbo~53WbDXI8aniOFHE!H^crm zrbxJJd1fp_M-%`D+(;nfEbL@PPmm+ZAsH#qfN~bm_dSXpAxlxXErF;5R^|n1P=~5k z0tvubjedfeekDO^wM%cm6cvt_%#c~0@N~#$g>js$-mD;!d2%70tnt|=OgcJNDUo@U zyNhlR&qEifR&e6DO*(kqWR2my_c3mpE$}%=Ed|)C)tMiBw3pOYGEFoN)uksxgARGCzTKM{7Cp*!CBkWF6Q01zGxP1d8ET zR~cHjVj`IH2+ZVT&d|SC2tjb};p84@fSwbcQ>h5})$)pF-i5)OApur3sb|`C=++i0 z^A5MSxxPrm753`cf@TIZrDhV%;tA+-$}y`j<_8E8Py=x!7_mfCiQoE{XsOJU+MlGA zOZ@xkrmEC(gR8^V%bJAmr_~DGf+zl7C7uOGeC%kAXFiBykj6L+mf_@5S1c_4s=qHp zD{Q@JoW9s_`tOZSZ!mY0+cF%jrCd|`&E-KQZ;0`qGQGfLaWU+qF@$Qq!Iwi4)@$)n zj9h3ZfxjvM&NorKJagg^{*Of0g@aYVSGNx`iMB~k28*>M&9#MI{j{r+S`QD72Fb@p zH9b_RezGBKwA*VI+Y7JNrK2_b)t5#h#Cw~z<|ns82UEAgRN|KX%qRsgA_vg!?hgrT zkiSRrZ{yFHAoxDREW#I+L(kL>o8h}A-fzSe%=e|vRLN4CO%uX9Eb+s9l-A!W!~X#! Cj7{4B literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/tutorials.logging.doctree b/docs/build/doctrees/tutorials.logging.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ce6f6587c15996fae7a094c37eda5a1347af6358 GIT binary patch literal 2766 zcmZuzTW=gS6mFVslHF`Jm(qgN23ny~Dw5r*@PK&bF(MBX5HFSGo$-#Xch=YFy=lNqed*CfQZc}*NrjYW_ zk?<$&>uQ22e~Q;<2!emb2aWUm2+G%2l`qsR1iF;+qa?c)MwvG$`J_wra6xHO9=0rV zC~g60?RQw28Lb>sc?=uBQ0bBD1=#rRY3LVBF+-7nh)YgUDo4u-m+i(3f$lS02kq4x ziQA6T8A&BduQ1nxU*-}CnrZEncI?{Y$y(S+KvljZ^O-hf1Z8A_jEZEsO!&7@`JkaN z$!ZF@5DukkfdY%IKt~uFR%zpiWamuAliOjysqC)3u+QeH_KrGl7fij-%h}WyFgLoO zMj=<=FpQR<^qrv@OF_lAVI)-L9bqcdIk;lzdpA4&_Sg!XA1*%ScpDceprzVdno{mETIW1iGX6*kyI6)77Xdm zalegm67Cw7X_KQRDu4rK1dwqWHZrYdh!N=!IjPWrVjj`>BZ?*=SEO)T08u-+FDufa z4q2@U0)R6L4Fxs3H3g|vHr4)$R9WV8P3C37(;k~w+A?xovW7_J$hokh!RIc?g{4!O z0%^V6Tyz6J3PS{Afqz=hL_nrxBQqhJ5pzGCV8k+$cu?M?El0h#F?YKw@VTE_3b0WH zP$)$yT>N40X&6kHpL`{dx^7l z0G!0J66J9y#}??vPo95+e2&a4TT!1VSL(l5s7I&Lgx51>#)7$7Z38_&;jWZ0)^~J@ z7RnuuCtKkVfGkPZn_U3JRtX{R!k)cUj?M`e1()~%ymzEdxF6b*qRW2sXljc@-L3D< zl}Me@HnoQtr|<`bZ<-BRu2TrU4>BoLDE-l1+tGe2kTVa5yTVpEimhDVS2{0lC ztliD;6V^a~kKo_LA2C7jfreRxPb!O^X$*G5cZs~+k!zT53zbQqr#34R!UuWU5A7&z IzE#Hm0Z~CvKL7v# literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/tutorials.mail.doctree b/docs/build/doctrees/tutorials.mail.doctree new file mode 100644 index 0000000000000000000000000000000000000000..92e155baa46dfa478b602b3f2d1634d68f71237b GIT binary patch literal 2731 zcmZuz&2Jnv6mObtlHF`}vnee|ZGZ}uQqg3qiUZ=xF(LA`#7C15?6|-E&S1}9{yO+wHF64I|&%89c6&D?`BX(a! z(G49hz2Yk`q4$z&_IXaBATF5h{KV(U_}bf>ShPqVUQ3cE7Tai zyK(LF*q7c|Ns-5tjMJP&@j&#&L$Qq@#AonaJc6e^hkTvX`J&~`o0s@iKOjQBhi+EZV;hN%-ej8DoL%nh!n)yNe%ET=grU2kc| zQ&9137)V`|o^YKR2Cf*orJtUBd*UR{57!?Fx7Ju9sAh^=R=RYc5q-G+upt=^QveQG0^$pWfMPgMRL@E}<48Bd{WfMrxNCW4ECc=v zfCFYEkZ~S%GNY%65$TYO6lga&kLdCNMMsb&DcqJo)B!8=g0!eZRx5%8;H*aXK+UkC zAhp`1+Am3k<0Ug>o+msV@_At#C##YbL^4k$I3`{@KDj@!h8@+NHz_1?!&ZLh%RD76$|qh~;&lDYKphr=gfQ1F5v zDIATMRSD}S%7nuA)EVIu;eFx08;?PDr^U4wMxPox8^>@jaaIn1lX#w^JRarP1O4Rj z^KX#Pft_X>>Jw$D{>w%^I+Z58UT}LVxt~@x(DP&Aa|L5vPbX+0=0!Z)3&#LtPTJmV z10b$Q2zeI{-L>{~PK2BZg&)9sN125CzRM}P?6(q4?U1Ou)xEwFWiq-*?Qte3{6XRC zW%6hiu20nr)0zr< z^=v^i1DaAZiDvP{Q#<3BRT%LjI0>j>O(Ynxw3N~|8(yKMGE-`Ql1^Bn-SF`ytJHF1 zBZsXQ^}4;EPAkh5d*ZLvh12Ya{~KD{Gatk;mc}HEmhR+IS36hyS${={PS|?h8hyTD z^xqqe-k|O#vt>A13%Oq4H>U@gyurtR%2a`ABN%ql7(zB*<2xY{>$7+v#x8Ud!Cw~u z=j$k5oICLd|Hq>5!oe!wE9rwwqHR*ips}W;xz_O2rCp`ed?+{?B%c`7_E5$8(FU>Q z?yhO``` | Name of the project to which the reference has to be added | ```str``` -| `````` | Name of the project to be referenced | ```str``` +| Argument | Description | Value type | +|------------------------|:----------------------------------------------------------:|:----------:| +| `````` | Name of the project to which the reference has to be added | ```str``` | +| `````` | Name of the project to be referenced | ```str``` | + +## Flags + +| Argument | Description | +|------------------|:------------------------------------------:| +| ```--simulate``` | Specifies whether the command is simulated | diff --git a/docs/build/html/_sources/cli.generate.md.txt b/docs/build/html/_sources/cli.generate.md.txt index 524aa093..40d79fdf 100644 --- a/docs/build/html/_sources/cli.generate.md.txt +++ b/docs/build/html/_sources/cli.generate.md.txt @@ -25,11 +25,14 @@ Generates files based on a schematic. ## Schematics -| Schematic | Description | Arguments | -| ----------------- |:-------------------:|:----------------:| -| ```abc``` | Abstract base class | `````` -| ```class``` | Class | `````` -| ```enum``` | Enum class | `````` -| ```service``` | Service class | `````` -| ```settings``` | [Configmodel](cpl_core.configuration) | `````` -| ```thread``` | Thread class | `````` +| Schematic | Description | Arguments | +|-----------------|:-------------------------------------:|:------------:| +| ```abc``` | Abstract base class | `````` | +| ```class``` | Class | `````` | +| ```enum``` | Enum class | `````` | +| ```pipe``` | Pipe class | `````` | +| ```service``` | Service class | `````` | +| ```settings``` | [Configmodel](cpl_core.configuration) | `````` | +| ```test``` | Test class | `````` | +| ```thread``` | Thread class | `````` | +| ```validator``` | Validator class | `````` | diff --git a/docs/build/html/_sources/cli.install.md.txt b/docs/build/html/_sources/cli.install.md.txt index b2eaaa47..29a293cf 100644 --- a/docs/build/html/_sources/cli.install.md.txt +++ b/docs/build/html/_sources/cli.install.md.txt @@ -18,6 +18,14 @@ Without given package it will install the depedencies of the CPL project your in ## Arguments -| Argument | Description | Value type | -| ----------------- |:-----------------------------:|:-------------:| -| `````` | The package to install | ```str``` | +| Argument | Description | Value type | +|-----------------|:----------------------:|:----------:| +| `````` | The package to install | ```str``` | + +## Flags + +| Argument | Description | +|------------------|:----------------------------------------------------:| +| ```--dev``` | Specifies whether the command is in development mode | +| ```--virtual``` | Specifies whether the command is virtual mode | +| ```--simulate``` | Specifies whether the command is simulated | diff --git a/docs/build/html/_sources/cli.new.md.txt b/docs/build/html/_sources/cli.new.md.txt index b849a09e..2ddcb9e7 100644 --- a/docs/build/html/_sources/cli.new.md.txt +++ b/docs/build/html/_sources/cli.new.md.txt @@ -18,14 +18,25 @@ Generates a workspace and initial project or add a project to workspace. If the command is running in a CPL workspace, it will add the new project to the workspace. -| Argument | Description | Value type | -| ----------------- |:-----------------------------------------------------:|:-------------:| -| `````` | The type of the project, see [types](#project-types) | ```str``` | -| `````` | The name of the project | ```str``` | +| Argument | Description | Value type | +|--------------|:----------------------------------------------------:|:----------:| +| `````` | The type of the project, see [types](#project-types) | ```str``` | +| `````` | The name of the project | ```str``` | ## Project types -| Project type | Description | -| ----------------- |:-----------------------------:| -| ```console``` | A simple console application | -| ```library``` | A package | +| Project type | Description | +|---------------|:----------------------------:| +| ```console``` | A simple console application | +| ```library``` | A package | + +## Flags + +| Argument | Description | +|---------------------------|:-------------------------------------------:| +| ```--async``` | Specifies whether async is used | +| ```--application-base``` | Specifies whether application base is used | +| ```--startup``` | Specifies whether startup is used | +| ```--service-providing``` | Specifies whether service-providing is used | +| ```--nothing``` | Specifies whether nothing is used | +| ```--venv``` | Specifies whether venv is used | diff --git a/docs/build/html/_sources/cli.remove.md.txt b/docs/build/html/_sources/cli.remove.md.txt index dab91804..a4a9fbf2 100644 --- a/docs/build/html/_sources/cli.remove.md.txt +++ b/docs/build/html/_sources/cli.remove.md.txt @@ -19,6 +19,12 @@ If you call the command in a CPL workspace, you can use the project names. Other ## Arguments -| Argument | Description | Value type | -| ------------------------- |:-------------------------------------:|:----------------:| -| `````` | The name of the project to delete | ```str``` +| Argument | Description | Value type | +|-----------------|:---------------------------------:|:----------:| +| `````` | The name of the project to delete | ```str``` | + +## Flags + +| Argument | Description | +|------------------|:----------------------------------------------------:| +| ```--simulate``` | Specifies whether the command is simulated | diff --git a/docs/build/html/_sources/cli.uninstall.md.txt b/docs/build/html/_sources/cli.uninstall.md.txt index 8646615d..a87c1320 100644 --- a/docs/build/html/_sources/cli.uninstall.md.txt +++ b/docs/build/html/_sources/cli.uninstall.md.txt @@ -17,6 +17,14 @@ Uninstall given package from project via pip. ## Arguments -| Argument | Description | Value type | -| ----------------- |:-----------------------------:|:-------------:| -| `````` | The package to uninstall | ```str``` | +| Argument | Description | Value type | +|-----------------|:------------------------:|:----------:| +| `````` | The package to uninstall | ```str``` | + +## Flags + +| Argument | Description | +|------------------|:----------------------------------------------------:| +| ```--dev``` | Specifies whether the command is in development mode | +| ```--virtual``` | Specifies whether the command is virtual mode | +| ```--simulate``` | Specifies whether the command is simulated | diff --git a/docs/build/html/_sources/cli.update.md.txt b/docs/build/html/_sources/cli.update.md.txt index 586c32c7..0bbcb72a 100644 --- a/docs/build/html/_sources/cli.update.md.txt +++ b/docs/build/html/_sources/cli.update.md.txt @@ -5,3 +5,9 @@ Updates the CPL and project dependencies. cpl **update**
cpl **u**
cpl **U** + +## Flags + +| Argument | Description | +|------------------|:----------------------------------------------------:| +| ```--simulate``` | Specifies whether the command is simulated | diff --git a/docs/build/html/_sources/cpl_core.pipes.rst.txt b/docs/build/html/_sources/cpl_core.pipes.rst.txt new file mode 100644 index 00000000..8af5814b --- /dev/null +++ b/docs/build/html/_sources/cpl_core.pipes.rst.txt @@ -0,0 +1,77 @@ +cpl\_core.pipes +======================= + +Submodules +---------- + +cpl\_core.pipes.bool\_pipe module +--------------------------------- + +.. automodule:: cpl_core.pipes.bool_pipe + :members: + :undoc-members: + :show-inheritance: + +cpl\_core.pipes.first\_char\_to\_lower\_pipe module +--------------------------------------------------- + +.. automodule:: cpl_core.pipes.first_char_to_lower_pipe + :members: + :undoc-members: + :show-inheritance: + +cpl\_core.pipes.first\_to\_upper\_pipe module +--------------------------------------------- + +.. automodule:: cpl_core.pipes.first_to_upper_pipe + :members: + :undoc-members: + :show-inheritance: + +cpl\_core.pipes.ip\_address\_pipe module +---------------------------------------- + +.. automodule:: cpl_core.pipes.ip_address_pipe + :members: + :undoc-members: + :show-inheritance: + +cpl\_core.pipes.pipe\_abc module +-------------------------------- + +.. automodule:: cpl_core.pipes.pipe_abc + :members: + :undoc-members: + :show-inheritance: + +cpl\_core.pipes.to\_camel\_case\_pipe module +-------------------------------------------- + +.. automodule:: cpl_core.pipes.to_camel_case_pipe + :members: + :undoc-members: + :show-inheritance: + +cpl\_core.pipes.to\_snake\_case\_pipe module +-------------------------------------------- + +.. automodule:: cpl_core.pipes.to_snake_case_pipe + :members: + :undoc-members: + :show-inheritance: + +cpl\_core.pipes.version\_pipe module +------------------------------------ + +.. automodule:: cpl_core.pipes.version_pipe + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: cpl_core.pipes + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/build/html/_sources/cpl_core.rst.txt b/docs/build/html/_sources/cpl_core.rst.txt index f322e8e1..a71547b3 100644 --- a/docs/build/html/_sources/cpl_core.rst.txt +++ b/docs/build/html/_sources/cpl_core.rst.txt @@ -12,5 +12,6 @@ API Reference cpl_core.environment cpl_core.logging cpl_core.mailing + cpl_core.pipes cpl_core.time cpl_core.utils diff --git a/docs/build/html/_sources/cpl_query.tests.rst.txt b/docs/build/html/_sources/cpl_query.tests.rst.txt deleted file mode 100644 index ca15d156..00000000 --- a/docs/build/html/_sources/cpl_query.tests.rst.txt +++ /dev/null @@ -1,45 +0,0 @@ -cpl\_query.tests package -======================== - -Submodules ----------- - -cpl\_query.tests.iterable\_test module --------------------------------------- - -.. automodule:: cpl_query.tests.iterable_test - :members: - :undoc-members: - :show-inheritance: - -cpl\_query.tests.models module ------------------------------- - -.. automodule:: cpl_query.tests.models - :members: - :undoc-members: - :show-inheritance: - -cpl\_query.tests.query\_test module ------------------------------------ - -.. automodule:: cpl_query.tests.query_test - :members: - :undoc-members: - :show-inheritance: - -cpl\_query.tests.tester module ------------------------------- - -.. automodule:: cpl_query.tests.tester - :members: - :undoc-members: - :show-inheritance: - -Module contents ---------------- - -.. automodule:: cpl_query.tests - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/build/html/_sources/getting_started.rst.txt b/docs/build/html/_sources/getting_started.rst.txt index ee746fb1..22dc00e9 100644 --- a/docs/build/html/_sources/getting_started.rst.txt +++ b/docs/build/html/_sources/getting_started.rst.txt @@ -6,4 +6,5 @@ Getting started quickstart setup + tutorials diff --git a/docs/build/html/_sources/introduction.md.txt b/docs/build/html/_sources/introduction.md.txt index 9e43037c..fc9721da 100644 --- a/docs/build/html/_sources/introduction.md.txt +++ b/docs/build/html/_sources/introduction.md.txt @@ -4,6 +4,53 @@ The Common Python Library (CPL) is a package for python and a development platfo This CPL docs help you learn, understand and use the package. From your first application to complex apps for enterprises. +## Feature overview + +- Expandle +- Application base + - Standardized application classes + - Application object builder + - Application extension classes + - Startup classes + - Startup extension classes +- Configuration + - Configure via object mapped JSON + - Console argument handling +- Console class for in and output + - Banner + - Spinner + - Options (menu) + - Table + - Write + - Write_at + - Write_line + - Write_line_at +- Dependency injection + - Service lifetimes: singleton, scoped and transient +- Providing of application environment + - Environment (development, staging, testing, production) + - Appname + - Customer + - Hostname + - Runtime directory + - Working directory +- Logging + - Standardized logger + - Log-level (FATAL, ERROR, WARN, INFO, DEBUG & TRACE) +- Mail handling + - Send mails +- Pipe classes + - Convert input +- Utils + - Credential manager + - Encryption via BASE64 + - PIP wrapper class based on subprocess + - Run pip commands + - String converter to different variants + - to_lower_case + - to_camel_case + - ... + ## Explore - [Getting started](quickstart) diff --git a/docs/build/html/_sources/tutorials.appsettings.md.txt b/docs/build/html/_sources/tutorials.appsettings.md.txt new file mode 100644 index 00000000..73be2413 --- /dev/null +++ b/docs/build/html/_sources/tutorials.appsettings.md.txt @@ -0,0 +1 @@ +# Using appsettings.json \ No newline at end of file diff --git a/docs/build/html/_sources/tutorials.console-arguments.md.txt b/docs/build/html/_sources/tutorials.console-arguments.md.txt new file mode 100644 index 00000000..fb0d7286 --- /dev/null +++ b/docs/build/html/_sources/tutorials.console-arguments.md.txt @@ -0,0 +1 @@ +# Handle console arguments \ No newline at end of file diff --git a/docs/build/html/_sources/tutorials.console.md.txt b/docs/build/html/_sources/tutorials.console.md.txt new file mode 100644 index 00000000..7629307e --- /dev/null +++ b/docs/build/html/_sources/tutorials.console.md.txt @@ -0,0 +1 @@ +# Use cpl_core.console.Console \ No newline at end of file diff --git a/docs/build/html/_sources/tutorials.create-startup.md.txt b/docs/build/html/_sources/tutorials.create-startup.md.txt new file mode 100644 index 00000000..91ffde56 --- /dev/null +++ b/docs/build/html/_sources/tutorials.create-startup.md.txt @@ -0,0 +1 @@ +# Create startup class \ No newline at end of file diff --git a/docs/build/html/_sources/tutorials.extend-application.md.txt b/docs/build/html/_sources/tutorials.extend-application.md.txt new file mode 100644 index 00000000..2dbabc35 --- /dev/null +++ b/docs/build/html/_sources/tutorials.extend-application.md.txt @@ -0,0 +1 @@ +# Extend application \ No newline at end of file diff --git a/docs/build/html/_sources/tutorials.extend-startup.md.txt b/docs/build/html/_sources/tutorials.extend-startup.md.txt new file mode 100644 index 00000000..a9048dda --- /dev/null +++ b/docs/build/html/_sources/tutorials.extend-startup.md.txt @@ -0,0 +1 @@ +# Extend startup \ No newline at end of file diff --git a/docs/build/html/_sources/tutorials.logging.md.txt b/docs/build/html/_sources/tutorials.logging.md.txt new file mode 100644 index 00000000..89eb815b --- /dev/null +++ b/docs/build/html/_sources/tutorials.logging.md.txt @@ -0,0 +1 @@ +# Use builtin logger \ No newline at end of file diff --git a/docs/build/html/_sources/tutorials.mail.md.txt b/docs/build/html/_sources/tutorials.mail.md.txt new file mode 100644 index 00000000..9d98bf92 --- /dev/null +++ b/docs/build/html/_sources/tutorials.mail.md.txt @@ -0,0 +1 @@ +# Send mails \ No newline at end of file diff --git a/docs/build/html/_sources/tutorials.rst.txt b/docs/build/html/_sources/tutorials.rst.txt new file mode 100644 index 00000000..f85e9b8c --- /dev/null +++ b/docs/build/html/_sources/tutorials.rst.txt @@ -0,0 +1,14 @@ +Tutorials +============= + +.. toctree:: + :maxdepth: 4 + + tutorials.extend-application + tutorials.create-startup + tutorials.extend-startup + tutorials.appsettings + tutorials.console-arguments + tutorials.console + tutorials.logging + tutorials.mail \ No newline at end of file diff --git a/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js b/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js new file mode 100644 index 00000000..8549469d --- /dev/null +++ b/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js @@ -0,0 +1,134 @@ +/* + * _sphinx_javascript_frameworks_compat.js + * ~~~~~~~~~~ + * + * Compatability shim for jQuery and underscores.js. + * + * WILL BE REMOVED IN Sphinx 6.0 + * xref RemovedInSphinx60Warning + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} diff --git a/docs/build/html/_static/basic.css b/docs/build/html/_static/basic.css index be19270e..7d5974c3 100644 --- a/docs/build/html/_static/basic.css +++ b/docs/build/html/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -130,7 +130,7 @@ ul.search li a { font-weight: bold; } -ul.search li div.context { +ul.search li p.context { color: #888; margin: 2px 0 0 30px; text-align: left; @@ -222,7 +222,7 @@ table.modindextable td { /* -- general body styles --------------------------------------------------- */ div.body { - min-width: 450px; + min-width: 360px; max-width: 800px; } @@ -236,7 +236,6 @@ div.body p, div.body dd, div.body li, div.body blockquote { a.headerlink { visibility: hidden; } - a.brackets:before, span.brackets > a:before{ content: "["; @@ -247,6 +246,7 @@ span.brackets > a:after { content: "]"; } + h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, @@ -277,25 +277,25 @@ p.rubric { font-weight: bold; } -img.align-left, .figure.align-left, object.align-left { +img.align-left, figure.align-left, .figure.align-left, object.align-left { clear: left; float: left; margin-right: 1em; } -img.align-right, .figure.align-right, object.align-right { +img.align-right, figure.align-right, .figure.align-right, object.align-right { clear: right; float: right; margin-left: 1em; } -img.align-center, .figure.align-center, object.align-center { +img.align-center, figure.align-center, .figure.align-center, object.align-center { display: block; margin-left: auto; margin-right: auto; } -img.align-default, .figure.align-default { +img.align-default, figure.align-default, .figure.align-default { display: block; margin-left: auto; margin-right: auto; @@ -319,7 +319,8 @@ img.align-default, .figure.align-default { /* -- sidebars -------------------------------------------------------------- */ -div.sidebar { +div.sidebar, +aside.sidebar { margin: 0 0 0.5em 1em; border: 1px solid #ddb; padding: 7px; @@ -333,13 +334,11 @@ div.sidebar { p.sidebar-title { font-weight: bold; } - div.admonition, div.topic, blockquote { clear: left; } /* -- topics ---------------------------------------------------------------- */ - div.topic { border: 1px solid #ccc; padding: 7px; @@ -377,12 +376,14 @@ div.body p.centered { /* -- content of sidebars/topics/admonitions -------------------------------- */ div.sidebar > :last-child, +aside.sidebar > :last-child, div.topic > :last-child, div.admonition > :last-child { margin-bottom: 0; } div.sidebar::after, +aside.sidebar::after, div.topic::after, div.admonition::after, blockquote::after { @@ -425,10 +426,6 @@ table.docutils td, table.docutils th { border-bottom: 1px solid #aaa; } -table.footnote td, table.footnote th { - border: 0 !important; -} - th { text-align: left; padding-right: 5px; @@ -455,20 +452,22 @@ td > :last-child { /* -- figures --------------------------------------------------------------- */ -div.figure { +div.figure, figure { margin: 0.5em; padding: 0.5em; } -div.figure p.caption { +div.figure p.caption, figcaption { padding: 0.3em; } -div.figure p.caption span.caption-number { +div.figure p.caption span.caption-number, +figcaption span.caption-number { font-style: italic; } -div.figure p.caption span.caption-text { +div.figure p.caption span.caption-text, +figcaption span.caption-text { } /* -- field list styles ----------------------------------------------------- */ @@ -503,6 +502,63 @@ table.hlist td { vertical-align: top; } +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + /* -- other body styles ----------------------------------------------------- */ @@ -553,6 +609,7 @@ ul.simple p { margin-bottom: 0; } +/* Docutils 0.17 and older (footnotes & citations) */ dl.footnote > dt, dl.citation > dt { float: left; @@ -570,6 +627,33 @@ dl.citation > dd:after { clear: both; } +/* Docutils 0.18+ (footnotes & citations) */ +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +/* Footnotes & citations ends */ + dl.field-list { display: grid; grid-template-columns: fit-content(30%) auto; @@ -629,14 +713,6 @@ dl.glossary dt { font-size: 1.1em; } -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - .versionmodified { font-style: italic; } @@ -677,8 +753,9 @@ dl.glossary dt { .classifier:before { font-style: normal; - margin: 0.5em; + margin: 0 0.5em; content: ":"; + display: inline-block; } abbr, acronym { @@ -702,6 +779,7 @@ span.pre { -ms-hyphens: none; -webkit-hyphens: none; hyphens: none; + white-space: nowrap; } div[class*="highlight-"] { @@ -765,8 +843,12 @@ div.code-block-caption code { table.highlighttable td.linenos, span.linenos, -div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */ - user-select: none; +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ } div.code-block-caption span.caption-number { @@ -781,16 +863,6 @@ div.literal-block-wrapper { margin: 1em 0; } -code.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -code.descclassname { - background-color: transparent; -} - code.xref, a code { background-color: transparent; font-weight: bold; diff --git a/docs/build/html/_static/css/theme.css b/docs/build/html/_static/css/theme.css index 8cd4f101..0d9ae7e1 100644 --- a/docs/build/html/_static/css/theme.css +++ b/docs/build/html/_static/css/theme.css @@ -1,4 +1,4 @@ -html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a,.wy-menu-vertical li.current>a span.toctree-expand:before,.wy-menu-vertical li.on a,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li span.toctree-expand:before,.wy-nav-top a,.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! +html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,.wy-nav-top a,.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li span.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p.caption .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a span.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-left.toctree-expand,.wy-menu-vertical li span.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p.caption .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a span.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-right.toctree-expand,.wy-menu-vertical li span.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p.caption .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a span.pull-left.toctree-expand,.wy-menu-vertical li.on a span.pull-left.toctree-expand,.wy-menu-vertical li span.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p.caption .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a span.pull-right.toctree-expand,.wy-menu-vertical li.on a span.pull-right.toctree-expand,.wy-menu-vertical li span.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li span.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li span.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li span.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li a span.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li span.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p.caption .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a span.toctree-expand,.btn .wy-menu-vertical li.on a span.toctree-expand,.btn .wy-menu-vertical li span.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p.caption .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a span.toctree-expand,.nav .wy-menu-vertical li.on a span.toctree-expand,.nav .wy-menu-vertical li span.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p.caption .btn .headerlink,.rst-content p.caption .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn span.toctree-expand,.wy-menu-vertical li.current>a .btn span.toctree-expand,.wy-menu-vertical li.current>a .nav span.toctree-expand,.wy-menu-vertical li .nav span.toctree-expand,.wy-menu-vertical li.on a .btn span.toctree-expand,.wy-menu-vertical li.on a .nav span.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p.caption .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li span.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p.caption .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li span.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p.caption .btn .fa-large.headerlink,.rst-content p.caption .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn span.fa-large.toctree-expand,.wy-menu-vertical li .nav span.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p.caption .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li span.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p.caption .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li span.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p.caption .btn .fa-spin.headerlink,.rst-content p.caption .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn span.fa-spin.toctree-expand,.wy-menu-vertical li .nav span.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p.caption .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li span.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p.caption .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li span.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p.caption .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li span.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p.caption .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini span.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol li,.rst-content ol.arabic li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content ol.arabic li p:last-child,.rst-content ol.arabic li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.rst-content .wy-breadcrumbs li tt,.wy-breadcrumbs li .rst-content tt,.wy-breadcrumbs li code{padding:5px;border:none;background:none}.rst-content .wy-breadcrumbs li tt.literal,.wy-breadcrumbs li .rst-content tt.literal,.wy-breadcrumbs li code.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li span.toctree-expand{display:block;float:left;margin-left:-1.2em;font-size:.8em;line-height:1.6em;color:#4d4d4d}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover span.toctree-expand,.wy-menu-vertical li.on a:hover span.toctree-expand{color:grey}.wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand{display:block;font-size:.8em;line-height:1.6em;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover span.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 span.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 span.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover span.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active span.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p.caption .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p.caption .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content img{max-width:100%;height:auto}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure p.caption{font-style:italic}.rst-content div.figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp{user-select:none;pointer-events:none}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink{visibility:hidden;font-size:14px}.rst-content .code-block-caption .headerlink:after,.rst-content .toctree-wrapper>p.caption .headerlink:after,.rst-content dl dt .headerlink:after,.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content p.caption .headerlink:after,.rst-content table>caption .headerlink:after{content:"\f0c1";font-family:FontAwesome}.rst-content .code-block-caption:hover .headerlink:after,.rst-content .toctree-wrapper>p.caption:hover .headerlink:after,.rst-content dl dt:hover .headerlink:after,.rst-content h1:hover .headerlink:after,.rst-content h2:hover .headerlink:after,.rst-content h3:hover .headerlink:after,.rst-content h4:hover .headerlink:after,.rst-content h5:hover .headerlink:after,.rst-content h6:hover .headerlink:after,.rst-content p.caption:hover .headerlink:after,.rst-content table>caption:hover .headerlink:after{visibility:visible}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .hlist{width:100%}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl dt span.classifier:before{content:" : "}html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.field-list>dt:after,html.writer-html5 .rst-content dl.footnote>dt:after{content:":"}html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.footnote>dt>span.brackets{margin-right:.5rem}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{font-style:italic}html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.footnote>dd p,html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{font-size:inherit;line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code,html.writer-html4 .rst-content dl:not(.docutils) tt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file + */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.rst-content .wy-breadcrumbs li tt,.wy-breadcrumbs li .rst-content tt,.wy-breadcrumbs li code{padding:5px;border:none;background:none}.rst-content .wy-breadcrumbs li tt.literal,.wy-breadcrumbs li .rst-content tt.literal,.wy-breadcrumbs li code.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.field-list>dt:after,html.writer-html5 .rst-content dl.footnote>dt:after{content:":"}html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.footnote>dt>span.brackets{margin-right:.5rem}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{font-style:italic}html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.footnote>dd p,html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{font-size:inherit;line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/docs/build/html/_static/doctools.js b/docs/build/html/_static/doctools.js index 61ac9d26..c3db08d1 100644 --- a/docs/build/html/_static/doctools.js +++ b/docs/build/html/_static/doctools.js @@ -2,320 +2,263 @@ * doctools.js * ~~~~~~~~~~~ * - * Sphinx JavaScript utilities for all documentation. + * Base JavaScript utilities for all Sphinx HTML documentation. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ +"use strict"; -/** - * select a different prefix for underscore - */ -$u = _.noConflict(); - -/** - * make the code below compatible with browsers without - * an installed firebug like debugger -if (!window.console || !console.firebug) { - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", - "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", - "profile", "profileEnd"]; - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {}; -} - */ - -/** - * small helper function to urldecode strings - * - * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL - */ -jQuery.urldecode = function(x) { - if (!x) { - return x +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); } - return decodeURIComponent(x.replace(/\+/g, ' ')); }; /** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; - } - return result; -}; - -/** - * highlight a given string on a jquery object by wrapping it in + * highlight a given string on a node by wrapping it in * span elements with the given class name. */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - var bbox = node.parentElement.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); } } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; }; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; /** * Small JavaScript module for the documentation. */ -var Documentation = { - - init : function() { - this.fixFirefoxAnchorBug(); - this.highlightSearchWords(); - this.initIndexTable(); - if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { - this.initOnKeyListeners(); - } +const Documentation = { + init: () => { + Documentation.highlightSearchWords(); + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); }, /** * i18n support */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, - LOCALE : 'unknown', + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", // gettext and ngettext don't access this so that the functions // can safely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { - var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated === 'undefined') - return string; - return (typeof translated === 'string') ? translated : translated[0]; + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } }, - ngettext : function(singular, plural, n) { - var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated === 'undefined') - return (n == 1) ? singular : plural; - return translated[Documentation.PLURALEXPR(n)]; + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; }, - addTranslations : function(catalog) { - for (var key in catalog.messages) - this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); - this.LOCALE = catalog.locale; - }, - - /** - * add context elements like header anchor links - */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('
\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); - }); - $('dt[id]').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); - }); - }, - - /** - * workaround a firefox stupidity - * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 - */ - fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; - }, 10); + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; }, /** * highlight the search words provided in the url in the text */ - highlightSearchWords : function() { - var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; - if (terms.length) { - var body = $('div.body'); - if (!body.length) { - body = $('body'); - } - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlighted'); - }); - }, 10); - $('

') - .appendTo($('#searchbox')); - } - }, + highlightSearchWords: () => { + const highlight = + new URLSearchParams(window.location.search).get("highlight") || ""; + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do - /** - * init the domain index toggle buttons - */ - initIndexTable : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - $('tr.cg-' + idnum).toggle(); - if (src.substr(-9) === 'minus.png') - $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); - else - $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); - }).css('display', ''); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { - togglers.click(); - } + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); }, /** * helper function to hide the search marks again */ - hideSearchWords : function() { - $('#searchbox .highlight-link').fadeOut(300); - $('span.highlighted').removeClass('highlighted'); + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + const url = new URL(window.location); + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); }, /** - * make the url absolute + * helper function to focus on search bar */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); }, /** - * get the current relative url + * Initialise the domain index toggle buttons */ - getCurrentURL : function() { - var path = document.location.pathname; - var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this === '..') - parts.pop(); - }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); }, - initOnKeyListeners: function() { - $(document).keydown(function(event) { - var activeElementType = document.activeElement.tagName; - // don't navigate when in search box, textarea, dropdown or button - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' - && activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey - && !event.shiftKey) { - switch (event.keyCode) { - case 37: // left - var prevHref = $('link[rel="prev"]').prop('href'); - if (prevHref) { - window.location.href = prevHref; - return false; + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + const blacklistedElements = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", + ]); + document.addEventListener("keydown", (event) => { + if (blacklistedElements.has(document.activeElement.tagName)) return; // bail for input elements + if (event.altKey || event.ctrlKey || event.metaKey) return; // bail with special keys + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); } - case 39: // right - var nextHref = $('link[rel="next"]').prop('href'); - if (nextHref) { - window.location.href = nextHref; - return false; + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); } + break; + case "Escape": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.hideSearchWords(); + event.preventDefault(); } } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } }); - } + }, }; // quick alias for translations -_ = Documentation.gettext; +const _ = Documentation.gettext; -$(document).ready(function() { - Documentation.init(); -}); +_ready(Documentation.init); diff --git a/docs/build/html/_static/documentation_options.js b/docs/build/html/_static/documentation_options.js index 2fa8c97f..a750e4d5 100644 --- a/docs/build/html/_static/documentation_options.js +++ b/docs/build/html/_static/documentation_options.js @@ -1,12 +1,14 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), VERSION: '', - LANGUAGE: 'None', + LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', FILE_SUFFIX: '.html', LINK_SUFFIX: '.html', HAS_SOURCE: true, SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: false + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: false, }; \ No newline at end of file diff --git a/docs/build/html/_static/fonts/Inconsolata-Bold.ttf b/docs/build/html/_static/fonts/Inconsolata-Bold.ttf deleted file mode 100644 index 809c1f5828f86235347019a50e78b4b486a6a045..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109948 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 lSJOz#fX%lhbk8e1i0vq836dY`S4{>Iiq8{2xe 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

bO)#R zarzLak8t`Vr_XWv_sz#`+U$Id(>I;Yv322Nge>_%4srx8xe zIj!Nek<)fgh0a>G=2uO;bqtxZPrJ?Y@O?Hed@@WKJ*a29xL00JQM$&Mq;JFxps0bkailezmU9|0 zQ|R1AOk}7um98>WrW&EL)JT=B+{Ξ29ypp!R(LOYK$fsCU(S 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 YaFbT>1t<8 diff --git a/docs/build/html/_static/fonts/Inconsolata.ttf b/docs/build/html/_static/fonts/Inconsolata.ttf deleted file mode 100644 index 4b8a36d249a05a0fe1575dc3d96ef7079dba6b07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63184 zcmaI934C1Dc{YCUon14UMYC(0k!CcbeYB5c%hq_)VjJ58uq24VK=49BY$wDE*+|n^ zHfg`OZSX>xK)(iWNxqCOm$6OK#!bPtob*FYK(dIw*lj?v4K1`G1d<^CpXZE5SPA|A z{PQ#C-kE#uS>E?O?{%f*@&1SI-ToIp{HrhF z`Yl{*_wRf-Y@CwalJws%;X1l$`{sxKI#u{PNqXzsk|f`|`QA@&mrA9GB)xMM-#a&d zV$Y^3-KL!=zadH2(_0?6_havT^1gaW`j3ZkuWbu%819mrQ2!@z9o_QK!@J8Ti@u5P zzl-|*@e|wbzxV0(SKgMS*MErX(+}Odd%N;qrW?5aTl_x!$$KAqplBqy8tr)(-*4Z( z?b8px{lga@m87?~NRo2L_D?;qebxJu_u+dpem^29l6K=aa*gu0k`3+Lnl>lW%A~qc zk$0$90NSW>MNu}Stm~AG%68>Z<$z+?kamuytlxHO&gY#kIbU_+hS`}e9+lG4ih*=~ zqG&kZxp+`q7;s@QwI? z(Lf*)2?TupVns0&G&y9QPFFNo5b#IJ1A(a07_YO2JS{VC$R1~;tTZnYM{g8qoBX%( zUn);X`BJg8A#F;eIME=YcQWn3FC72JA%5ZbsbkXd zh6BIwI@7_)Y=;WahXQs;KbkIZrUR4dywQe6InIWo*(Osw*%qI7)g~`A7P?%;<$tV~`cOz*W$}haHpZ zHU~yrKdS2V4&HP)({|KoXN~qg`=FgQ^2%%v*eiK;4p-XC_SfvF(J-nS4R$=ITCyMS zTKH2-z*1?^?MPdkY4a#ZM$NMu_@jLBk0m-F%HA#(olxH^#tSXQ!Q!f7w5=q2vou?8NOVaOV+G2SFj10y z@t~@R8qx}e(8*cTgQlHn<0!FsQhT%bMzQj#v}IH+$-cTIfhkRwIMc34?NQeOm$D!zV?r%i$MUQo+8qKdR4|)jpt40DflRzE>$+Tlcwe*{+lA=zbP3p z;eWE3|NZ#tdyBlE^epz=WxUIKzu|u0BHuReLhrr$`#lfowzYXa=>?O0=a_snaiT7x zKlO~P)_teG?&L`cvZ(XMzsf&VzADvAt%sLO}CAv>oJec;bz0z_~GyZ!`o82K7n_n>z$~Rm^Z1tn0FbYqc*U*dgpLb zemm_LRom)I_`WtL-me~UW-Bceqa2>Z3x+H3yEf-=OnEz<7)@6=(NqrjH0V$DgXYzK z!a+C2zu&#tjW-i4fu`4ETq%{^#`aFK0zcmJtyI4uO zy=`r+EwOm3(dhNOo|297-N_n*Y>0H$bX9r$HH+g5KC!GuuWMShW{tn9BeI~Otzmmz zo$^&#Q7opIb!nSoH&o^QlfASe5h`h`3mdu?nR`2Rc72;^val~%)EFx?%>4MgWnm;* zv-Nw1`jQUGAQj(uNB(!^5m2*NDgzxam3Nan8x!gHq$*gR4+=n zcpZ>ABAt-VNV*N`1aIl|asFJF(7vX7QU_tBjH-tePUKM~qnuO56b#a9xRKUF=1mU! zjBlefT#S!K=kP*&#GS)Sj38PrTNVfp3xtQb$Vn1$QHyVCxrXs)3N930K=ipLfx|)F z+mH~$A$-(2)8&)H?V>ciSobyvR_ikk8bJ*`)_yBL9Q{~n)XgAxt=ByOveo)LgC2aW zsJNp7-)yQt&vpT{?yB`w{5mn1;79Xdv$8?bdW`+7uG_jE)v3EtPo~c~=-lem%~jaz z89;?8OHW0A#pa4#6(Hx{ssYy3n;2kSJh}B;(8_75{s0B9DL19 zZGLgvu0+b~6%vg9gRfd!UHWN&p9qSUU8toS1CE$1Aqa-HGtM0>B6_s`N zK&Zf3UJ@`lWTVZfuj_2Tt9Brs2vj9QT^|pxUr`L+^i?E+!KS(j>o;9ZvfQxRwW6%7 zuJU?tUECWfa^yMOW|t&O{};M=7j$ul)b#(WiQ8uNY(1!4Pd(cT^T0i;P#a+tK)-JL zPoYK24p%VwfgbHzT%T2*AtPkzt2b_wPvCt4IgoZGhK=BC$OZpo+B%x{JJY^d`^1OW z_;U7%V6!~Fb5wiD`YL29Ip063zK#`JeFZ>*eu2z3MR);XMI9#`Bn3|qh6wxe0V9NK zgncBF6Qr97`!&+d6TESeu$$C!f-pd?I!@S6I74`Xu+K|+yvi4j5H9hBBLwl9OLOlM zuQ|?Iuku|Z_6fX8JLow|dDPFUh6txb36;w6a#NNx{3aS&AP>J${+3l|9JsHv{nn;% z=iN&pk)<0JmKv42WL?WMpK5>T{@Y4gLw9Ze((>h>|M*7=7b#+_dvAP1{)BP_tN7b# zV?qssYtqsr3=nGE(ETywM(40AC)#9;xttqwD=w@YbJ@w|oh!Tg3LtIeqw32xT)zt7 z$PZ!p*3K*AFhSL$9Ex)UF%^ec8W;CCGUv#tBW=Iq2v^%J9PE9BBLHb$ zrK~SAq&uWLrh~{~b=rt!fa~x4=i>!-?|_aYG0?^wYa$dq0cW}_Qh>?mUI@~a?gY9?GJtwX1Od?Ne{{w6_ezW z{s1~vQ(VAc>VZ}bldx7&`Gxvw{Q~_;{hj&;^~N1(1C;4W)nSr%q%3LES<|TLiU}4f zZo~EhS|<5yzCgRE$1$0*{K)a5coF#zApX2~h_z}!?*tW7tWvVLFpBi)O-%epsph7DSm zZY^~Vqol()l0B?CVfb1TQrezS4`68MV|fy^4L^v-6sOo0LLCkTx#{EO#T8Dsv#hYN z+Ozhd(!x%6p3CXY50=A8MEdEGgYx&~k5Y%GCJ+YAqB;rXVM&J0=`Qn@^~hUh4$B{1 z#@{~!|4y~E1^%5Lj@LFb>^^03*0CczJ@dUg!taw+Np5!E+{n3a{>XPD2MQv=V0qN< z?=SHC%gX|R@@zX(H^$^=AtQ9sT^K9&csqJbC&f=_HPaOXhB_%f$B+H;5qwa3Kxung z_bdib+p9asaeSUk`E%W`P-Z8Eu9Oof4UK-;FQ?>=&Y5%h%F)pKaMV#>Y(k%ZtbAH> z!>3iPEK+s(&=)tNqO9VS(9spe%L9ZIf#ax#C|VQw_%_T^3Xs-0hbys`(ooHvder;Xsp9ujyzb;Q2B zL9*@y+3`UFt$l64xdlQ%y#Rrr_7Ns18phmHkalVhW#?vqw$F2z8t(M8Ap@EqmXTNhZY#;SJ+uTos;0`vno3M#3p6$ZRY~?wz4vO{?UgeOF5nka~ zzfRZ}23#eK5MBYuJ{Z*>7(&fW{up#DJB%iOQs;xMv>5tWO#ZWyNTj2;BG%hpR@UAd zTjTSz6a^b&e*3Q{1FeNciHO&zgyUaWv-UG5Me7Q`VEZ=X4i!ujsBrUZGwPm@DFf6qajNe8Ktm%J%mU zD8Y*O9ilCLXv-<^QiHroH5Y-8E*GH%VS)r%qK2veTp_F@NJX@b$nizaw0l%N%2_CM zSG$!R+AjAH=qdB8`vv#QZp_-N_>OW|IR3~S(VWJhLnm~(P88yzkoHfhu8<7#F6Yc# z3OQB^7w4#Yjav9S1fzq_E$6UXep@Ya^T%Z0DsY|-9;8V%+#vLdl=XysMjnwTa7~I_C<;@Sz@~ORA<~bpMhdpfW6XDN9B^ zCy&Wfa51aL=)z!)nIXd=!!ZNcV#s*Nc#O=r50$#x;6A414dvZr*O|(i+M1iaWvy*( z$z)ckAdQ)frZq(y+A5Yd6}yTnJe~RBP^ncm7_0`}%wJcmuWSg03XBD1RldTiPyswM zioKz=s38?CX-U)+wA;#J)m}??ZQp~@T7NuR=JHjQxgB1=#iGNyumUpjgt9|wK_`rq zkL%dsM+r_N?!8F~=%g%^jQQCqRm<{e|E9|ls;-P{n%YK5x*h=en6{7R{KioJ3L!Hk zIPf4d>$6Y6H&}!^Qq?Z&AJUTq8&N00>_-s@1GMSFyBnALZ;Ni`2yvDWFmi~ zxw>ItQS-{gN0+qf^#;4Sv9PGV+ zI{V%1ue{W6?jT&l z7jm;JrvtwGhY8yW)ov2DdZHR5y07|hHQjTkt1nbvs=itcRlZsnLW-5)5JoLYv!9iG8T`_xl$}ykO3DwZzA$(o>_f}86Rr?0 zQymBst`HQTkV}{>9o8R+96I)>CfY~gK^Shx&C)z-7al&&64l&EN=FMsoJ*n?kEWpA zB}(wC)nQWL8*HUMFRMpMLwh+=e!?NbUTQFh2nXqJ@)L#t+EDP2aFNl~bQNop)*Bg! zV2Un8F5yEx6T$u7DBv2XQQcXCU-Z{(rVDUa5{sC&*L{!_%r|L6ovMq-{y=PO=8PP;Sb`Duha9 z`e0Ga`JHt}Pu7(sY$VLQ99pxm(PFeZLUvDUeVOd-sf;X66csltsYvuT7KRqwdavv* zuP>}gc|vh_bg8nlqt)!z=b79s_pFLkmb9&^ufHW(TDAJ2<+p!npl;@?aC60%HWaVy ziM2&sjkF(RX)PcPzRr{W6-o}M;ROj@7$USu5D~AjR3?DLt}~0pP&g-E(vfY+!CG9O zq%XQ%57XV%rytaB)$h^o*B{ZJ(4WzpcVsT=U(sLJLu$QF?wln2gzy|7ll>jEg#q63 z5#AvfQ5#*>XQ&+uXDWTGS=l--h#~xGq&5U8%#aC^g@P3HWK>L%wt{3?YnhzxdZ>PF z!z+=&;4tv(TQ<*iYvnvLYQ!tu$_=1 zT%i^oCP+f;&_?z-g=F_ZWsrm;-RsEtb~dHhU(06(h#+>`SM9UNa=Qr5TM3$ zoNz<{h1E&I)dIjjlkJ`*?1w8Y%M^#n6ekEHgy#qWx_%D_kCR6(&{2JcaFpEQCmaH3 zr%KMlZw=j|^k`|O^js-4Mn4tFoltzV{<6(wczCD+H%=!2mjIbN6AvaHNq`_O^49Bw zO;BgmO^tvtf`|i7qoj>DO+(#K$D2{!(z?5qvN=Fue8hZ$vi&%_dnDIq?MVKKeB3?E zzS3){PP4;vf+ce-a4K*<02TIN@Mtg-L>v6<(|H2>l(HNuIab0x>HoA(+CbTsx$X!b z`~cg&n{a_}hH#zm3&LmE7161ix}uFWPc@^7JL$RK47gc?nstcJdBkUZoU@i$oa$B9 z#gaAK6r(BTM#U8R&MinJX3^ekdnA*o4T3F`#hbeYr?7C>|A3Sm1zaf_8eEH5NqD|jP9 zRbaR##~uMJ`GMT}FP0hddUjbMyW0bT&Fl%S%-%>B^jn-*$qomcP@s3HR(pVq7yy%C zxv^u_$}&lS41AcdAE51X9d_YyI;FM!z9T-A8O+dnO8b%TFq`(E_QHDBPFGxD$Yo0m z&z>gi0f6%6Rj3|zv1-B)8EG$O z$8eYL@Rtki0Csp=G8Y|TR8tu3?zR@X*05~ME+P}_7Bm`6`jYBZEA_tRaj|kVE~&Wd z{z&J#O|m;&?Q8BTD5>yNcI9=n>I!uJ9bXK=n(C{qU6l-d^LuL_UKNuchRz*N)dg2C z4L3*K2v90nADes(KDMCrFmqeBc_H(y_jtE?zv%s%_en3zY$O_uIJg_E_KyJy8f}@k4EUwULsD-9An~q1=0K=3 z@SjVka^HL*2arqUkHSCa&N=GjgY?vu`vc`O>6?9aO4h%LemJEP=`l+06xX;bSn~d7 zH)qzld9$07`i&dZnm`Vfb~*SaBq7EkxGng_;Mamr2GQMZLA3l$fRrvy{IOG%Nj5(8 zmelZ;kGlIGJ4to(I(W0kv@qA%KXRSQ8**J1>w82>$p4}w;a|BGJ{9;RwdduR;DA)0 zwbUIdObIfwP+ zNUFp9S0{gC<^l0Pv*@oEiGEa~A3qcQ7@#j$I5O$dWH1KqBB&w8QSB$jU(lWQh7rB` z2H^}qV%~+E?U7NYS7;H;g#a63WJA!LVS~cAw;H^L){1KRIQp_deyitl!+WcrM_*Dm zel4r;@7knB`3}`f55i?Go7>6M;e3&A6izTm0k89$SbX3D{!>pgxPiHbLy&q@p+gXK zNGW1i9u9>@SV33~vdWFHadJVV5A{r^!;@-JSlBy{QHmZR#GKR!v`p+ABnGvPdQ2FM zpvFn{GU}#&eF2hDJ7PaUDJcTHk8}AGSw?jBXb0U#b1HFm;TtRD_k``Qg|MS)0>v$(=r-RHlvf;PHGF^Y6%IGyOQ@L0&`~$G%b&vBYnA$T>gYkL)<+0u2=5UdBb)?ihYiQ+Abc0{ zR|^`dSbmJM_#)u~)u;}_34qp~*9-r8=6K%eybB1GWkX&h20Zi*mtfk^stN0``V|LC zbXlsuWoe8nYxpbK)ldt`tDc~2hjD_%o^YBy4eF~n9Q%1g3_^f?p6!1XyDPl* zZS1blna{J&NAog_DHs{uOXl^kETXXQz;Mm%wX^pa2_yUbTlQY`d5C=$9iM<1JKJ&X zYT#Y=pS{j?_#FF{1Y`~sA1gjpjH+9^QR`NU(K!kd|r5tzn5O%SvbmmoHQKWh} zo96_knY{sTt56K+$7iNQQYVxIsu8X7GfP%A-My-=X2l&f)jcgGo$&=F4N=bn+Z^7C z#-eblIb6}XI^NNwbFJyCFYc%)t%|RG=R z8A~3WbGUg9S6Qh&&rM~5&T67Q1NT;*%!<=_$kf1Ehqco(nz?9s#d6)EgHTq(q_6@K z*D}j(bg#BpmRpn^>Thr>W3YHF6-YqNran#LRl}y)4ul9t zlw%&sb8C+p3b0J|Oo!k=71wSb?+me1e|jdp zX2FLtWzN+kW*t1}on<~GFNpkN5nRgj==yb=DP<3Vk+k!=aUBNhJbAFk(hqqBmk6Rv zr!40!kSy0o0t}Q(>Ood>ijW}>=c>_|frQz;sUo$PBJeQbG(kkdsbZ)jfLYE%Tsq=* zanZuOwEfk(!NsM~u8*z!%F@)w@0SO+D%)y5@^D}8r*5rQT4$6m?Rn%eu0OK05O4-D zAFH%o&9h=uU&KnSu4VKiK~VC9mks_0xX{cPEeLF5_MQ=0EDYhz^K9qFj6Q80eA;?R zJP!jWgdrI=LFHyeH(N8bXco#}n0a0{%=}*NnE8sbeeu7frnB*HER*n+Y?mz3$5h3F z_AyyT4HKT^2wW!o2q2uB+4dO}CZNKc`;hj{IWvP6UhlWadTrvizp3L$=qG$n*J;{3652)2uS$6l-PB zIqbw3dm}-<(wi9eWGVClhFTq>$l>-LwU^e<1;T_Vk&!0|y=8zgvh*}S(oX9yQ0Eg* zW^zwzBSjNX*|l@wF^Yk1Jfn?QOhfd@rr10okYuKm_a;5dCtqwdnjBr#C5xIuh4oz( zOIi`EySsg`tE_R&tz{keDfvx$M_E;1!9Bf8KDI0p`}(4{m(+da;hy{cd_`f0pilDs zS@6AAx=(d_G3NBA&@l91Na6f;IB^ME4jG2RU-Bme>BX3Oxw4uhVTi(X2|+~DGhq>4 z7MCzWkSD;5FS-*dMHsfwBq5ZNg41in9^V%Xl7>IV5Y=bGwvcal8In{(&9PY2qem6 zHJISAlE5dh0AR<}T+U$x9$gQ9K(#$`8_F-k)!WqMYg)(*m53Q8 z?j=po6i%7Wa}~M@rB4J;rA)xYl?l@EG}pxu!nNGDaA!nZBB4e&?!ZzMU#`e^<&us5 zrUm7L3y_|rv*`=`0b5i3Zg%pUi$2nZv}Iks-e#~`Ox^wR$Fg#)`oi601hm>tkG=z5&Sm)HZ2*13`232fTF>pl!A7!N{xm1`0UsQvOxy78kkFpU6MM z@@_KyVZevb)x2~d2iU?PCKnPsC$tfK=hi?q1EN)50BA26UWJXDhW8751(}sUn_8^q z8O3Hmk$@$pdyL)5w^Q5I&g74XC;}UnZ6posQ+emnP3^pOoTGl8ow`Q2&gQDm@}1KJ zksrzoX?L^7=yl1y=4PGSq%*l9)wf$@y|1+JjX&Hu-ndHHZp=5${7#MLuQcyYT=WZnhzPF+~PoOkJ5mz$Ktf~BNn-K z=Bvs!Q-S6Ex3c~=ID4@cY?o|^_Zz59xl2SEP>yktPjXtsItjD)#qvdCglwItL8m%mRC7LxQ}3w{MlBaJ9X z4G@%3I3tnEdy<59Iqywc}?wj3wb)8!#CPjrL&bHWP*?!8h635E3Ntzzlpgg+2EdGDj#QEV`IO~?f^3 zQ*KqB+ku0vp~y*nT=z8fv-P@7I=ruq2DOGE%KWpAsi`_KiFz@KNJsgG^*h!dSP?J# zsddu&1`67sb*mN6bwIh|uuri?*D(!J=9G>)ANc)24tpn|o^YHJ=n=w20M;hiB`7l@ zyPB5E#+9bz%zt2nn&cOacGLUck+0AAC=(T_1p3N2av9uGT;8NQ4CDk7V2JQVf=D4m z!~vp_&L_qm)B^;GaF$;@1xP!b!$p*tH<_<_5FmNEA<9LahJDcQ@|?qA`io_CfSsFW z9|lM`mk8_0^1A@qxNVxkY$r@-t-oM1GfBp2Mn6qMrJHb&AoeW0Kv(i9LLXgW!t6Xj zW3QJw*J;8Cp}QP#o^Uh*I0Vqf!;o^2Q>>|{fPjn;45%!W+!#sFKuD6h7) zU=N!#!5g9t;`My9cDnQeLs1v_o->5QeA#rIF{lqrAZGN%;YMOsC?ZcWI+%Pj&9^NK zmv!FWRJ*z>99w+Lfka19OHHu2CQ%e>sV^zXOWd)mw|D19>SDL-zU|J>t}gq0yMMub zt5@FB9+U%ZcduOWV0Lb)w_kvavm?&*2Y4PZx55+>7LTxugaIU+7$K^1_t2d&=gFWa zA|Eq~J-;x2pi6y-G!*;ysX5ssk@bgd-0Ltz3`4;>5oy1 z^l^|ygq_JhsvitDn{TJ?=a}w?-Yf~*M^rFt_uO2CcG!GeI3D=yhEorN)u(uwxY&Vl$mj0nYzh^johv{ z%PZSvd8I}E19rP%JiBV}iZ2pEgeL*%8iaYUeq148hCO5y!dYHE1;Cbe${TejBUZ5* zv9m9h81`eNW7t4Ft7Xm0d5nRNVi;xGA539%A+WRukMjZlD6wo(bC!h>I3F&|vQ-Zx z+w3T7Y2-;xYXcnwlBXlR)ql6^yK^!PaZcjb%?b#iISk*>tvFJMFl@EjOp# z7vT8M1bmggb{{IZ$`%j$wlWaC1*Gud%??B>qwUe&=s#huT+_m)f2Rr?x|Nhuhp0a91R+i^Q zTjPeBH9J<{{kh(7bS)1Bf&6XNeMYWS#=&dJ!Ca?`ji09ZWpC? zh^6qH5Jzc)Y7yrns7a3PQNnrv4H7JASOiJ3arj1Pl0ekcDFUkqwt+V%80P6Ac95){ zf+1g~5{QF7REsP`gq=B0x;N+CGC#ra&kaSU;F7#-dj+XC^@j^u{}LK zdzN)NOB%|RZTGD!YOOCf&0Lq=vw|Riqzw$W)PgnhJaXLI<@2hi5hK2xyqzYzMc7Dw zcM?W zo*VTx40Ky=jh%B2;HU%{8JOEn$j0T-DA#ZMKd872wS z_scSV4X;5t$WELAQ-B?!t(Lv(@fe4wBQ$0?VMYYNB7|`J-yl zT%W`Op~YM(5%%eXdv27-(HAoZKr>)A9E%sD~PGp_7v@>lW9-! z{$lECQ*%#E+4(#l-Q(L&Ngn`VXnXwo`Fwzn?k?KLM|T(R!=sP{bm6!V%JXCQgsVC0 zV1U?eS}R)=PqeX^(YR$r?JMi+R<@QX+Z4USIy2PLQBj~M&iH~h`QXgQ7v0`oT->&X z>5mw@AbbnI#9SF=B?w1OK<(oEe2Mdu0x(u5B6K2P$E8jU0ET6Z;&HP2C4w2}@zAn^ z|8y$_b~}L9hbk1OIL!zXcTeCaIBTbmjMxs~wQ=-AjKN&OJZ+oj*_4L?+Rv3=F$gH^ zKdNRTd^kW+k&RYsBZdjCvN!Fnl2naPzNEa0C$rL4SaHR?yIT1u@BV@1I%N^c!bHEk!g&}cPP^C@fFU}Z8xtY96ig4`>!davRO;z+L3GdN3ZeTFDs|~sNST!=-?Q{tnX|y(Dw-KhK&lrP; zg$#o;8>+B6Xj{#Ds6zI$eBL~cGQY)%KMYrMaABlXSv#zKu+7vvtr*7%A0ILiIjbD~nH_%h4h)z28N#1);Qn5DhJ*M|yrIjQ?%2JE+L4%pnSzZj zyh>>#>A)0yjHLfr!cPfr5bh*AM>qlC#P*ZSCIA_BeLcrObRK(f&@oA^;mfR~Q_dsp z?G0)zFK1Y~i{xcR{+L?K5(M53^?jDg_>PYd{+r+?G!yP8=s2Gd!g5|dOz`mXD=fVN z5Yz!19$`N$#7mZa%=bXY!uyLp{ty^#<}P{H%#eKS{l8@D68MTfl$XF)R;48fA5SRF|O};xoMQb3huqq%FBTYIxXwp?{s)@I^9M5}^6? zG29@B?%{w{0yxZAiT98xs^kvldhzfkbqjzK0e(tij50hoW=erQk9(LXAZY3u>F9#_ z66pvex`!ls(ew&QG={SJ>MV)AMxCY-bgBi7Rdo8b<3`G|*Lcu))R=)YP=GoVC%nr^#Ukt`PF7*33W7i3f5S{~QgNCgJxEDlj2IU8KW(${G z#(Iukw>A>@PQoS*v)JYG8ZQ-ta4De`5Kv|-JyayKs~oj`9G(ouM9b*Tar{N^MB2H~ z#e`iiB2!mEd$Xrt2{)dkPLSN*W2bo# zgeroCZC=RI?*TI0f|0l>f^9i|`Lo^M8eaR@-qk0Mt@<*A(u*_y^xNOci{+;O0G$PsBm$CalkCxrCfgdb!@EizS# z*ByCmai!m zdc=By?ksVf(GK+;@q_H~dqO#*j3^Vz zH5@Of?k4rTL%=>)o-#MA!|(HSbbqV;lsu;>dB`=Yg_pZf%ACuiM;-F~D6UAwW_*QU zgUqd!h@8k}i{&rP{6vnKT&9`(b)FGaj8X;5)f-WP&b;npu42IN-wE? zG&7=~&|iZmAPr^FIGQC5#Lbjy`Pk~ z$nULEt5uRzGXWjgQD?;xW!Sz!2<{pMC9+!-0Eg% z0Cqd$Z_mg-hi9%1Bx#`Cjqv7S8Vje>P_737? zNF)_fuP?vMWmv*)P5|RN9r=BX@l>O%jxe}(lJE_}4+!H? z{AjFVsscZ{T8SH1t0?Hatn^ues9q#2F6ZJ33c3{@P^^+LGOsj`ph3hN#bwC;v_Aj{9d`Yg*)s*85ki)4P_pHGfTZ z6qdQe_3ok)tEXJdd8dfE9+3i=^Htb#fjJM+Q{9EkeC^G^4Wu$^jzA~?v3n1b^~3m* z2}LxurnsUB*X#`%J8;*+`eRAtoQV`PpHb}4fX&XlGNUtHHJT*=VS(jxp@m@0QG*-K z19y%Z{J8MbWn;96qc+7WeQuE_fr&4M^$6h_%})GYwuc(9>L=_XOcTV3JU-6RPTO9( z%%?bMJ2~Bc!VqU`mum=~1MC3h6CYBGHfEdRvwqgI%QnPvfDi6*?&mZIIK#UM+!=yH zSQv%-Amy2xKuwWk&T_|$8co8o@4VgWTNRHjZz(NnTOO_M_6O@f?=H>vG*lI>><+f) z+w?Y%azrs$j5nl;+LDC>3m4zDs5DmA*_~%{#8QoSZH$(dF0Wn?4^VElb3WytNfEhG z^%i3`H!}Eeg>Zn7B7_ND-1{G58tRJ#dRkP;%dHF1fEVk-8^>Urhrf^%9>FTL}mF=vGeQdN>fZ zjN=?0R5!Cc`}FMg_A%y+O%tYA4=aPmrHww9EVGH6TK~MPkdbBs;`#;U3rkun1A*!V zkrhqV%kOWzZBcpoqC1+}2IbE$)R}Arj^aRFR~%b1i`pA|qpALu=7Fv#!+(&mb@0=j z#h!yA?4hbwjULRc2ALp4+FG4uKjeT1w_n(@CYG5 zH`hJ_{ry?L#y}P;V#2Un|sUcL8p=afw zA5~gr5YN!Zpf8fL((&64Qf-s^e?X>l_O%!Q2hd3{RZPXFM>jZ9~ zQ-g%ZIPv@GS>4Bpq9;s!jjP#t0Cr$22Wb$9_fb#Rcs?0!jFT^46S9{=bT)oD&Ku+N zU$CDq7~%`OtXq)71-@VpVFDnFvqy}kGG^c45V#ykn3`MWHd^bV%bP>8Jo5vkq_(Z7 zCsDazQ`2n=!et$+@BTfu%GCrDtL2vpTR+lnc9|RC7j2GrhdKv47Tmcg{A0bz5UeZn zEQ3t#f?)lX@}yKE{iCWNmrDyP4eZ}2N0zdbd0p@=rg4&st3cQfm`6xU-y|{cVM|_a z8mU9-CbhM?doVzpHEyU6WT!TeK#e32q$|yOC3ymKUllNwFKZ%fFB>Ax^(qx<@&shPuHGUEO$D z7?AE3Sqkcv5E>JPpiPIwGNO9ALtJE_6yhN2Kte4EbyK~Ii4Q!LUNV|qk`QMR;9}8e zdQl?XJgGL&JN^{mQNVCNn5Jt8wBwt09_6>nnT}4XT~RV9;rmq898vjGV#Qj8`Nh0=Rz+DgHsBQDswBEfv|D_n z+nwop>?(p|U%gU~3IH31H^A!as^7q$o#=u>^;p*vUCNHkiLNtUBVCYnhr96eW!YNW zox`^aJ!Uqds2#Q*hwDQ->^ROP>>L948Gl*4ELjHg^;Fq;?nw5R6Z zx3U+%Ki!M_?R|jLgv@Hd`C9?g07*M69ft=(J7_ox*NAq|di17t2g>lXc7S%e>;l_d z#Tx-Oyq$2G5NiM=32kh4oXzfO>~CZXS}W0F?NaMiew=9?Vf)+Bel>V=C$!3i?F;eE z0DEv@Ip7T86dIoK_r?2?edy?^T;p-j(XHoh9lLevRy_ize-t@QVrPw?N#Z6En?uMY zyTm|0&mMP_6*WA+G?_h%8t4Dd)*-T(%OQ+n-*DKSMHL=zwAhJ#Yo4kn8kXi;O!=nT zh`+F|v%I)894~jrU3E(;J%uf6Ta#-Wf~zW8!qMWyqVTf49sYQ0$)a^iRjnb<5bKn` z? z`3Hcy0b-L}j>SZ>QI4zTX(J_Iu@b8A79003aA!V(F{994hW%iV;u0R`2-Q!!ly?^dC7hL)7YZ;#uP_8x9-nWkmo#WI0kV0Xwl#~6-=%)}i@M-L9$m2&PoAAWXo z9hqzen0;38q0b^U$&-z~%&O~Ig{fl>b6GfZT7N^sQ$U?A8{ipTT_rmnqx=bev+t zEKmM|MmBFB^$ztdSh*>Suj$anm=gIA?q%72`@gfmpXgns&9Z7A6+_oozaZuT#3h{F;^ph-cox2LqBr;?e$dnaDZ%6Fvk=b)4Rx%3H@IRrrJ$+sBCbAiCFbO?ouDCee{_ zgPT|#*s(_wM4Wkc-ac-h#-6_n>1>LpIX^+-|1JP3EmXYBpZo%2$xuEbw52*fR8pn{ z&l}Y*{JOYtX>6b+0jE%b*B7i?aPp+XCq_7g5x%9Ruimeu78~+x4y$$13i)%tc9i;Z z!wtS&ia6C}@U2t+yKJs7GlVmjoo_mC@B~4TH2g=Y!p~U$neKCuD!iOt=-pJoP7ogC z`CJr3=!Y}-nr!9$7z0v zl-kWK`QX6Rp3QrK*_*F%zEK}?h4+&Hp8(9B>6-bD?FY7>FlG1=-t4svWnc=R=O0s6m8tJqIQ!i zMUs$@r3$_bi9lRo!0g51M>MIi3sJ3zai+=VZ5&B)tmrP3v^&fXFyi{S8D;JaMR_mE zYBy*3=3Qz1q{UtNLv;3inu}5kK=axwxIy{>lqGdJtA3c^B|Odg*PAz?&Ut5(iPpMV z|NVq0;da6b!eKSpWSF~hTY+bnF1VgzOPx){C3VL9 z_Oe8+veam|Tk{J&wq@SJK%G2N7YxNpN-LH%&HSCbJQQ^syx}T0!ZeFJVjayhFA92G z4q8Zq7W~qGi4&N4_HZ`if<(aNKo9{^D{+queTA7=7<1%jeu$HI-X!NdMwm(-Ae+ty z9Ya7v9q_q$L#PArh@-zE9kT}$kvV2QWj=3)koYa9g_Ep4O(1Ql83J=PMSxsV$AodK z$MrZt)Y6UTQdaITJ!j^j&!*LX0kipbaO)tjqfIHVEM|zTdPZ3VqU5O z4e_8na_c-LprWNrC;^I8iNE*oQ~1)E!|cua(y!1(@HN8s2^%RaZcefn32>LO{A*o~ zwNUxf@Bwgfgx?%ob(7f3NxBdG=J+EXSlr+Ok7PZeelEkilp$ED8iNfO$DJGyF)G6N zpQa(X)3g_cWbT0MAq?ux?x)Zf!6TVrm*tM;Wi#OW8W7c(_mP1Zb{2ms;X~?m&(o&y_c?MTJbUi{O!cbvvT*zAn%Y|ylt&h>N&91s zMMe0tTRi%oxiIq2ao%jQeW0r>+BMMJd}mk1f7L9j4+QF$R8=l*DD>AYg^tpBV-Wtw zpGzL>eydaS=x=*-&ZFjFJ{%L^=uvZHs1aWeQ_627qzTLd;h+B5p{@ha$Kqwm2NmS( zj0jyfHzPvg<}QSZPc4M{Np4j_z*;Os1tLr`9DwHy(~N^cDUqfqEc_G}yG%nIOJY%9(T6Z>!W zvl4NNDE)ZwU{ku}Odk9#o``$SdmX28+}Y>9B_3PR8Y*jB5v}g^uk2G&iC|N8uy3iS z8ez+k?uwd{1p}R(A6*oRmH$e9U}ee~Pc;nOtJv{Z9JuBwQZ?r1Ir(MmldF&$vZq{M zA*HTkj8|gpH?2EM-;p>J2B+0v*FUFeE!!#%yWWNpQ#YCDkC<0vG&?WiHTJ9GB?xBbBFqUVrB#j@lR>UJD2x*SJ%W>G?#>veO0$t zn!a3EAHlZtL{Z0*?#wIjRxhckUC|I+zwy3XsFU1}{ec&; z26!Y@HGz9HhbQErKa)&EPRg;4GMdSr?GFJRCLK4x2}K>njBRJ;YaqSsyv$>fdCZe@ ziGf9gXA^NtGY$d5f`Vncz|F8C*M)XnFQpB`u^0vh+9YjEH^qBNT@UY_=72G_=WZ6~ zG4fAE2y4z8xqp@7y{lzqLz%U}i$i1=)D-r~BLfZ1O)DH8yE)XnGozDuRujL0r>rx9{v!Zwl@n7Z&DPsgz6gL*KsK`(;q<~(tJ z3UZ4?{!G^MQ|K2b@D;P`O#g;&bex+<8cBZ6f~~)LHG4_o^2keZE1a*S_Mrjt@!e^A6&!Ize~Gb;2dgwL6If zSreSrv%WUr^p7R+mxSQL{viS|wu1+8$V<4WzTLN?uXm|VZ~XWtm1X%ByZ#dk2iG(# zjd`m&n)~mIZeNLANZ|3sh?Sm}N03|m8`aLecyCHKIB*WCxt9qE0Cioa#5x$>ev|aM zoh87A^z3e=++XIIC(h$Wj?W!k~iIOnJ~ z=A7cf%O#U{T%+oQ3qvH<`*~9|H!Gl2%!o}Seos*|8YjGf3e*uks{WYQ&j7Tan}0<$ z>g(ojQxW?LZ}pi6S+;P8{DZtvXs$M+r@!YzA%Hv1jgKC`8;6}Gn~nG@u}yjFb@HFD z43wIecpA60%juxWs#oM0^K~(e2-yv zhXsFBg=wLE@}Rs`#z^+j>-RlMQJnb$4+k%62wMp$-ZM*7cCvp2%AYMy%!(0seZ*g7 zn*beBtiWq$Eub_I85MN>;^YGL9Sjbp!R2$sTy3sy*Lv3`7p4JT9xtZBI|U}@g>Q70 zvpF3B{Eb%zM#lnENG{=>AifS>$H`#XDVpcfoIA?~Nvsx0#7GhG#6#GxgU}hQ`~d5x zW6>|B?>rT?b5zIJ9$&r#%kjN z<4U6e`#g+$`L%{`GXHG+x$##>?BkPjna*e+D$7!;Fu-$bpm1<-4V;(je1^jO9Y8AI zXz&?ghBiaDVZFhK!)rx?v-%#WDV1-r2Cdn2{y{6g`;e?=^)x!hHDZJU^*Z5$O<7a4 z#xEJJQiYnPJ9e5Qe4TVV#f5|pcWvA{4dX&meQc6A_)jD;|ALp(9K#o^FI!(ja;)5p zoHHgX#gU-=;L5Kb|Hv11edO=HwRV?0^2^s%_3FQ!$jW*j{Qob4CZqCW&$tXxG3 ziZo-yPt#FqB5IIw|3T>yuBswexkKvX8o-@fJg7~r!u)6YOoOJaCg`kP5GQIMv;@^0 z6~~G3&w`DrF)jx?DgXOe8fOV^R|sgrmjPlY;5)EpG0Hcs2^h%-=#)Y=*plj>^^wk7 z0$>OYM>%U;rNx;mwAj&l$Q!!nTzGGlwU^-Lz-Pq)aN<=kDH%1KMNYxHko&F zL3s~1HH$e2X_VRH-tRubzc}+CsuX{>DD$A_5zk{DgeWfhs5jxe@$x@eYp~dum@gwv zDrv|bd6it4Kd4vs_UAhdt1Mo}=iGr+*cBGj>1A`i$5v8@5ZZ|_a_J$B(!Yr;3KlM{ zoH^69EE!Mf@)e8498EBH5PP!#KgRsqO`)IQ@UbJ|@G6pOeY;3?gi*3LQB*6{|7%06s zP2(kPFinD&Y>ZD2Bb#s=+7d4`EoyJ@LfqopCSD-_K>kgDw8g%^-*;x@1=8DlpXXYS z-#P1dzV-dy{k`Y%yRwBA-s@!_qJ*4ixx9}S-i!1#*Ky@8dAITfsYZHH*!D6BLvAnh zBNaUTJ!p!eIxEO8lg>h%935K;_t(5vrXb%b_b{48R5@c(go*<}i%@Z@(f?~JzE=9>at*5%U^U9H{2Kj>aN zxGv(~dh5*gE|a@a%)K*L*2sS4Sy-WXp(`=aH-bHjO%7B949u0J&~t>(%$T7(`yc-( z-dT*kdkuY8FMUhIr-qf4=)M|c6A>N9kV5D&>M(rO>;b*wu8Vag1bOVZ!Y~DSu(TH1 zRtRYs(#lt8dU-) z6hO{*kr6#+6n)5Ox#&h%9^`u!iFFnjnwuQXc)~D$;ewRQXDcmiFx)z7XlTeErw{|6_FJH8!HeGv%}L1USW4*mdQ|bBCJf zDrQhw3=4_u#JR-8+6x64&!}bH|EN5<+O4UX71Tz77DU} z*18V9Rqs{e&gw9j%^OHQ^QulEc<{6J^1g+KQTHb0pFvFAPOn-R8Pr zsIH>MYw=p@(HDxOfhUYBe~S1l)zTL*ixBo3u9jPs=ajv0?0`T@nbFf-WDa0zxk2j8)fB z1^Yg51$6$Hz0ku`yCZb+c53C3SPPV-2vqrF8^WPSYCT?$+pj2v6|EN8U@-WVl-290 zMYQzrCvVorO9PH}*?IXrOHDXX5{`)WHD5U-|22Hq0Y>(U zoB&iLmV{~&<?S7h@&sKjDVhMBdDK+#90P;(V%*i7?(Y8 zR(*~7dkN8)h0FmV${3d`=jHOv$06^cnrt^D8XcMAzCFQ zR8fO4fD9x3ood2@JOLY1U;H3I2g=4UlC6^nYK$x{mD?>qKI>fZtPV#v( z7sP&mbm^`DLyR5^oC;vU@9xHRFTp{AJv|)o%_Pk?ajI;}zotDE*v+t{hcRQ-g83G2I)+zHr0U5pgoGc6{ukEMOjIGB4LfxRCctP6CLf&#-U1grP)*vwoGp~F?9NDr7u-v zHQLS9$)LBsyQ^Vtk1Us4%Khyzv&~%BU0RN4b*UMVsogcz4KtFJ0*B0$zKz^M7GTJh zf;NVK0Pd>Rv)Uk?A&`Wkp8yqtD>RmhOdv**Yw(2RNp`q+tavrTACqk-I?x|Mrz2XM zRX-7P1=hb};?R~BI7L4J!;giF+>CX|jE%{L5Cd>*vY%Cz0^uWK)PIJ+;bru%A`j;V z#1avASJ8}RAuU++Zw~`$tL1iqh;kLsPjVFyC+a9{uGE!!2uD#B{TWdewOW+StuSF{1kB~oE#mgJC22(d;ks(k$4W)D*_7EHa$ewXua{rD_0%LSfI_NnC4ERR4xpWq zFJMH{kn4HmdbtaOl+`5>sK9L;oIwC>Vc|-6E@$Z;eH6libZORf)I|O3hbE42v5BDo zx=n29HRD5Jq1I5;&7tw(c+&7dw|?3n@_(xbNfDkPaB>6~b6=x9BfiHp)gLn`{RxVs zBj|L^XmMFkTqlmvtCrK2i-rH&7aQF!cb&TvgQFdGAE)kR7!t3mBXfYGafDzPqmdn| z8m(GY1^R$lqVVuBjEFtu24RB%rhzT9XA1^3w|jwjtGnueLk-K!+OCGyWUQ;UtGX&x zn{p&Pt+7;Xm)UH#yk6blpn+}9&{qCsxU0&a3a4VNtqu6Gn5(uU@=TQcGB2We5m6H9%C-Pco?@r>YhLiTs9k)lfhdh64W# zR6rpFOl@4^3KB*@js+S_xCP)_pvI8Tf&yJgX@z7~kUq^V+Mg?bP1BDjh)v!C$T?7+&BY6;?zwznn*K9;Ce<-g1{pdi6hdmg zLsLnyBY4r9tinqGnW@5+O`SGX7@#?);nFmn1stlL%EHbM;n8t|N`fJR%>+jY_5oyu ztcO}apSXuape1abHEA zUP=I5q-ysd!Eh_UtTup02+k0EkDx0Bum?bUx@%7tXd6#&Jq_|t_u~2y0L{}^--ioF z`f%ZV8Xz@DdP$_yKF&soC{Fv>C_x(wCA4UiNZ&15wu>zj!uwrlltwidi)7o*09;jy ziOeGJlHPikjiO-UnnoRDqi$%~EVk?sf?>Ajz+|JI?!sx7%{a+sxO<~)R~F6C+$6za<9Ft%;~p!{60rT<6w11d3&k|;|j&CuwJ(}h3f5Cuj`d|c{}V=nIr6vkQ0f~n6D^kwT1B;Milu$ z^(7v?kE85*Wt*}C3_V$4CnQtw^t9lCD;!=6Nrd-#`Vx+^dJZv2Lm^C2gCuw)0Bu|0 z4$OBFmk8_rAQ@vkPZs$KWoi~25yMnaas#Cj@QltXqbIq$TzhiVQthA}wc{^&P*vr0 zD9>1+`>b|20u~-r!Kxi74$>sEWS9Scr9z4zirrkp9hs(NCI!DBPVS{Cd>a5Me3}Gz zQk~2$tzK8XwHk{kiG2+=?CK7Rcjvp7xz48kuDwa<`a~Gx(Q(KJyd}wU?Bnrf}pe6nFg1xZsWewYCY6l@S9A%_0Wt0VRtsh zrE|o`fa#zBy8W{dkScq`f5LwT_#xXBWa0)Kyb^pP_%;vn629#Iy79VWb*NOT4sHAp z_##VA^%(6hx?&jGgRvvA6EU3q4oqwIK>Tq0cpL>BNFGiePx7H=KGb}q`9w3$I@@u! zzkR&@SUb)>!ZwiI-!a~CtOIAi#VXA1>&kW=?ZR1IFD6K;cL*y{>+BokBHV=qnJ(pu zO!W=*jrKvAlS&Vzc?Zi=8%mF+8EI)+-8B59rVUNQt3%U9dDb;BJb>rM22iMXpkV++ z(Qd3}t$T3RAfB2vv}g#I_RPkmS+f_-<{NW{=kSd=d}B_-9GIo6*Y{$Vf0(^^*nixA zn!T6`4h2WqdE>!j!BafQhK`0#LQa}JPj!!jB4LAv!PLl_}A&xvtC}=sMhW9KEP@^$ru2)w45a z^)BjV!}^BNnVPq+p$|>2OXJSqw1wAnnR{9kXX--sRcc@e{ieAGqU^FETvF=>d3|sQ z{YE^90%s4;#&N@J9*bVnhUbi-!#?e84bqR4AYz^ge%58b=7eU51{xjatV01{bp-;csJrd*#o6_Pi#s}&Fwy3cj_8N+QP5Lpr-u_ma= z(qvaA5BcyALc}wB7}(hO*+Y#6v9^aG56ec1JBkO8mMFWhcxCY>9O!AQOu)WUwyvnN zXppMYAuxtnid}yP!K+$K)V#>H#`cH}D#3O=le^1RrHBX>#ImqvfTx_k$3g50THS<@ zBJ#lOsll4oTl)w46J4np{hh%^tJz?Ub=8!r4y0}$#g<(UM+}bQ8j7ouV0n-xIe}1}*+T}AFOE49*@(&bI~}1rAdyd)!tokYj; zg2{cU0v;OeQm^3=N>X7{wUj)z(3>uS1ebl_!FB?JzZw%_qnd;kHHvuaz$NNlfJ`G; zg+{b`N8<~PSeHRq0cN7sL+yAx+1|*BniK-Or1elMt~Iox{M7(RWteHS9!jC~b}N$L ziRe3JXAjx2lfa9ss^B+jeVM}d>#=RsFRMqFM$hUW{t>^9Ds0G(M3+X_5xG6bOKnlH z&$T7B^=;b_XH%PKJI8RF$u@C4YUM|uO+Ex+?3~Z-c&t*YsN|FvJcU3XHPD zoWV#CKipOE@y-y&WGFOxwcoVL+SoN+HXIpaUu^^xqJE8FAHjBlaf1EqxMKuc&_(Ie zrxSY;2NOpUClVm0wy>`b5IhZVLqfh!?MenDGZN%Ja75UdYVBwbhn@0w{_~CKxjUz& zs{HBX)amU*vs;$@@3x)G-;isYBi_cMFPOgYxozYBQv5&1#T@mrBcE+oB0-5u!o0OlTXL)c5Oqg#L~^t|98LJf9TNsekJkUDX+dNVs*(# z8u5v|1G?;}^nGThwLpZ3osk||OTY{vtO5xHuwE|6hiET%D1e$_zo|u5QzHy?bXAJ* zexT&ZeO4`Z)3S;tHsGZJ4p|L|L}8`Huj(_1pIP7&)Yk#fl0!AP9TnFzQ7GGG5zAd0 zGLF)Iijh7fJ-Yis$gNcf_gF!B z0oKEM>EGp@%41Se`h@y^2+6Jh^Qdr#22myyQ)D>d3cy_}gg9d%A=-ll1*tSR9@L|= z61wUtajkZb5Qb2zjO&zXQu`by8(N0(0-zn$oD8e#G2_OUVVS&qrxKAx>Y~pMVfLGTupRFU;4#AsPC5#$R<{TNE_0Cw3dq!6?dx;^8O zq7yJB(7sdt3T{OlG-lB4+=Y<5F6wZY!tGNFgvGWVD!K!SRUWQ4R~e1INLw&bU>k@; z`pxoG1EO;qrdxesyS=u`mVS7^Q(o4VY6?bSkJG)O+uSucZ+J?@mCL`5bp*|dVhgp` z7R$x#+w_%JWesv3n=}RXAcqtz1_+=F&mJ<0WdR&UNsZ`;$uMq^#6Sp4svJFl{l`Qd z7(6HWmkUuYYdv#&>!vmPy}fr1z~wlseEXBd@{>w+67jR93f-bC{kdEr$K)?V#^gsJ zQ$t+BO2z2Tr+jdNU>)Q>DEeCQj_jGt3;&SK?XC%VJR!E@8&^i;ZI~@~>C14CCVC8l z#^LxBfN%ySL;D|`nR7wPh3hfR|0wp&J5R$FQ?PG{HHpv-#ODIq*gkD}(ZjF>(N>ji zrk$A!Io%{}rD+p3%A5_Kwx;xv{H;O|0x6hQ>Q#@XxB}&&WOZqy(KfTYx3}FJ@2Yg% z@3}207q3`fMI4q!M;{7UhIEazG} zI3M)ep|D_5wZn$vF!DmI8yO)mL;OZkTqY;skzRcc#bm zJ&E<5doh>BO`|a;pD*j;Ylq8^V<}~i*iP8afRoJ^bGYI-im?kxL*Bake$}y| z0lV=s$O5VZaLDn-Quu9f?}~JG)(!e6^ENpF_jCI5RSpP0v3UBjW{vT(Nv-SBNsnkzwMEzeADyMt&c=MaUZOI zc2mPw^&ix;Kq|cQiu{kti}rcgXirXZp7MuKaJ1TxLt;N~~>g(lib~fh(L+h^@-# z*heu%vu_!GVfZZ%3Jp#}#9)9Lv)wS$aI0ZCjM_O3OUc^`-W=i73v9yH&U6;^DAusn zZyo^;2f9aH%#GQ}42v}KIjedcRQ*e&im?CWP?ylUQLh8kRdQA>E)*?9ZnBrqwTFyg zIe{7=E5K@k2Z`CH3vo!#sg<17RO_7;-Unw@r-upL)8&=Un6t+@+j+ZltSO=`PSyxzLn!W}#1@4bqdM$G-cUbPl6K!qY(6cVOnCI)(gBN`VC!iX*-0*$rw8d;aD0%V|6kn*7cHv-IW#SLlVHkst_v+7577`b*>8#q=l+*{g zG1l1AIJ@!o#T)Z8Lbd5{010}bW ztUzk=v@KsuxwSsWw0=M=ybuC=ibq>r%TX zi+8dd{ZxFQWVB>e$>x&nCA(P8Q^A8% zIQR`gf=^Q5*UhI6H ze@ltdXCWa-MY+;}jnz8+s4l6N)rokt*xxueK?OEpeYLp+wbzDLSr7H$`t%7LWl|Gr z$8@1R>N=a5Zq4)qZ}pG#18+^6&=ya-4_XOf&ICNwdBaS`Zh&~HFFDWyu>zqSk0rAs zv8Azf)DOG~F$O2DS{4hlh7Mup1_d`Hb6hXY;s@HLOee&5XVsog(XlI!Lw;GznQCHr4h4g(6rFB63!Y~-P;QXbkT=!jJFwAu@ zuG7h~XS;59twq^t`(%;s>S#4IsVF-gOZTMpscjSU8oJh;1OQ|fc%4aRrv}Up=6;UT z1haD;qPUC6x9HBF?ntt5$iZu zIcatWDqJWYvMM{g-Rc$DYqbUHs#`A)<}fvBgDd|kXN5jBi9Cnp z%n~eI9k)VBr&gEKY!*fcA{HBVdJv$K*2gy(9@7?CSRbp~!3<{LoPtzLR0AX@t|89y zR>xMbHC9?lV&j8y6?)Yr>Ic-T&c{)v>a6OmB1@}1;r$x<%UUZP1hgZyCm@cbiUF?V z_{k)ph=4c@J6v|BnetOi!eeHX0q+Yi_e(=A5WIJjBf zr3k%ESn{?p=azHbFS3VqIXX>ahvJQK_?*vzO$EGJd z$!eG1I?Yh-bJzN8{)i(s%OfnVLp9(!F1NR&Xj0ie!&~7_1Y!@-?{kCL1 zWcncI<$p1_l{#U0WRy-{l%%S3vDF+jH=EOJWRfz{33lQ(faVr# zeEuY!FK2M}y%+`%^rEi7<`(#@{)@qfe9~qqqOA6UH1+5TD;RJdrX9I=0;W1zg|~*2 zs~Pk4kO9~clNE%Ou=^MXXD zM?6n^_IPL)$;5}lzA@iwAJa_j_8ssY_K9o$G5=~mb58B{AMhXc^BNV?tAd+@+k?A; z`-9^_aSg)sRiVwH?V(+v{h{#?uMO5NtX)~Vsg{|{_SI&Qkx)ApIR!bFq*=>@6lMIH z%@`n92!I;6$K0#kTigr}eZYO#ElP&|W0j9VqIdcB`^H7BhWw-cRsPNX?fzZ<{r>Ua zTPuq3S4Xx)o{H>_9Eco_pav%*XHWzCHGG>rYO*82N*Ebd^5Hqj;2D2y^LlMIk7wrC z{M+9f9yr=Ja4MWMduyO_^qP~(uPYt)%1XPV@{@o6)vx5OpL{JluH0A98mnAS~ID+kUT^B+`+yJ8`_S`{_lR} zD+kX%-kJWmbj`!c`l)}LzA*LRL8bLF)Cy7q`9nkQv4s=Yyv?w^F!r1~>bJMRLJtO}xE8bFo{#<=k; zy#+cT^6tPRfsVXL`#LYTHf(imd5KN|P71K^sY)9qBivBo{Q;6H$&WCg4VM-o`wI3# z{E!6z+0`ies_870keN>8y6eQFIP4NKAZGHy)b~=t&E#I{aY!WeY+SDp{k}~wM#L%{ zK;9sB-D%s0!0Ot`n)5YyHClt4JAvxd6v1tvF^Ur+ut`Sav&lDJfmbR==9d_{6&@`>cvk}oD-P8uN>_Mk@EY2!s!@dS^LmY#$_ zN_)BN#}tk*asqzz`lxlNh<2*x0xG5L4DW;Gk*JY292;Y0PO~yc2;Lz0VI0*eUy<0D zcp~w&#EXfS6Gl|?XyRnzeBwh^)0lAm*QzNbV>u}y=r?$^z_FnY;^@4+hp-GWeOh!@ z5*wLXn;5ty66kHKFPl+daHMOIsnA!M?5~XsINK{1G#6ecTbol*Klh<|%O0CmT@h^Z zhY+pb7>b5xESu7M*FarExF*(Nth*|G!@kOV#Ye=R4gWA%-?M#chHG79D4pQZHi9$& zcEKCpfz<8{_R3FPM_H#nktCbi&#CbN0UT+uIbZuM_gnqDCykQi#zwdcyo{rtM;uc_m8*ICEku#O}N)OYd~&DT+X zmUYy>c@oiuBdp^)Tu^%f^3kF`;BnB=40Ch6#%QD>Rin;GVFW#7K(5zwLHEOHLk)5j zr3pUZ?kkZfLP`-B(eV^VT&Rq74+tcQMawXG2p~xRP4GQcVyDb!Exrz6<~{DzDn0RQ zRg!xt_f|x%L0O2Zi{K(uZUUnM6%ad$2==3fRdh+-MaFP4;kifvv#SJ^+QmgaPQc{8 zDx+wqr$O7OmtYPcsUnB$PP{A9$7Xdk4Ty|myd+8)V=21{hFQvP0PSGu5z3Cwv&6Sp z;u(}E@Aq#l7cCoFqpVBZvT>+s z(M?mVb~(}0^P4Yi+Vafb_F%5khx@33bRZ@k#`~>8NwPBO_LA&Y^K<6Cpz6hZ5jok# z{Nfw>I&f;%I8>&X|8dlIeta2@^K;|I=eY*T^sLl;`ZLQsg=bvqJM?kuC-@P;G5{8e zy6R=Ju6i9!%RgBK0ULrV8W!Ogm+Ii(e+UtLa4{D6k1T=i9=y#N5Uo8HZqF=^w zP(K2YG`g|yhWs%k8|p`#NWx6x5;p#vsknBj@OOn*U%r6%wDYAOVopJ!29=r+5WD5a znjhbq*!qRW#~w?5UjC@@$tM#}e6jIMPb9uX8DiCyzeIlV7o`&LER9M^EvLt5KPI)h zl^{T{7l6K*%nEvr#2t{uptyxC`oP=91-;r3Ys<`k~U^{|{TETR>W8l%?8s2`UGggc_M zf*A-@5Ow^i(SIWKML5%HBCVh&)jDyeM)5_C)*uE-+a>L%p^O->3oMnP((Jj&d!Z1kTMRpHVMZap62Uj$H(&2u{<>a}mKMg7>%yGlMxk^sIA)$4C<@0}j(y``63& z3rXovK5=BRwyta|NHS3__DIqn$FWB`r5d?Fmk}+c0};H4fX;Z7=21Qi2{%GGN5a!G zom+^&Mm%EpEUv-HxTQjKn_oeB239pmg8PIJ9sZQeoeVs8$R!-8^X~mSOZIUhxrt47 zic}AJx-FW`scwQ@;s_H;%Vj`&idf?5ASbMg7;Gm2LtltDwOytAxzBmHPV{US+5zif z&PuPCl>|?+h^J75y^Z=)6E-~%ie>|Ly|5i82#o-Di{5!kk@9%^tfX5}+)YDm+Xn}? z2OF!(6~$7W48f6KHk21HqLik#KjC{`KKzfis(QD(LC>L{Ld?er zt1D}PS~Mv^{8-Jk76eEaFSD(;ZL{sLfwr1YE6f1F1fA*A1VMsgn*^jHw9nQ`U&LF}Htl0=e;P(B%S|U!Yx*z+Uw%xpoLI*b~xcvax z1D?a4;~wZu&v-7;+j2K?)YAkPiKw1z-`NfUfKK7K{x_u_V5wdJ2;d>3IN>?tLFc^- zshzgHY8P?MB_fum+Zp1TUL1mNH!&vGR8oI?h(-!6EN}ulVD3Nzcn(wr79Nj zCxSMA>-1<(B3vDJHU#a89a-|KYbzpE6-bfc^~I_!^8U|1TGgBm$A|63HOcNk!$5mg zpv&V7#oaYsQD?Wgx+&NrH?MpS-?^*uwZ)gR-sSq-+J>eiNE3#Dp; zM!D`e;F67aju$bb-r6 zg!PM~l-4g~3%n6-^Yp!M#TyWQ^ye*YJ{_MoZ+4TP=VH?P!NL1E=?jZE>D6-aL+v+a zInz5}%EQQNn|%jG%w88abRxZ}xD|nCId&)rJq|VC6tWK}_8=96eU7ye*OB8ch3l}C zo1w20^70yWcqr;ZF&ZrVjDJQEa~BPW8VGv04~T`(P}5Cb{vapt34&J$-WI2%V_yN# z-mZVQ9uMu}h`u!w7qT;t&gAkr&sF#fd_}7(?&KHYp}s^I+5NxG@%b2*(RVbpMqArTEDA@$bPeQpz@MTpo?xX_WiY;*?V zvub;-w(jbgeG^^H317Hzux^IK)>m8A61J~g=xz)*1^&bpX|5_Qb9l?+VR_2VNT{|^ z{?k;bsw%X0Nu8;=XD|}$hy;TXPhGQT;1+{i+0q^V8a&$ItYP*#%Q{lX#&&n1v!#1F z8DHiv9D!-TKS-Uh3#+3{=}mS71WUlLJPHZ`l0w}niJW8wSQEaE`N~~*jl#Bax?L}yK)In?`Y0K)^me^CV-7($&$b>8R#2<=( zDgM>?x8i>u|LeGEN%my?eEdUrb7{u7D-H*!oR~>FRdxXcj5@>*3wl>@!}N|)SCh6B zpFM_e=K{=YCu`61!^7gkD`FdCPsF|!dolKM?8h;Fcx8N3{K@#v_`Y~Hev}_R6~7Sw zh#xk^-T1J!Ch-WAN7o6F7#Ri09AWD=DMP~S|11eo#c<2gmUYy#_P6j5MEm=k${!F&n9rH1 zlXU2E)b3gF?Z4FP`FF6H(?-gdQluXw^=Jhzr`PkwXE%P#eUQ=EwHL}WcpCds= zdYP~PlJ!o)E#TU6Sa1FQ8kAE5@ryQ6v6NO`%PQ7W$@c-)iY8T9D|%I%RCbF*k%l&{F|Uv;N=+rh6uc*k-ttbO{nGnN;rsnnbJ` zb!9V}_zMDui(zKesCY#CPV^N9-Km7*in@q^mYQlTN;42445a}IWWzu=P01)Pwl)i5 z3}I{9Co=6hBCZ)2qB&2*MQ{?y;|?EAeAv%uqmSM4Pzi`PN+eKDgvG@otd4djc8TIw zM=R}I)M!M6P}vowrzM8f$(r2;z}mzo;6A3VkE4tx@%Us29pZ;$He6qbE>%|%yhU>C zU&ubZMIgeVK1rdKn_x4+1psYJ)l;C&v@PMM$dd|J&r96W-o-3b561uw5`3NDKogG$ zULja4b~?;CE!8^I%AJmN&=yv#Zb0Sn_~CbTAfWZo114eRJa9{irbpZB2C8eD{dJXAZ=?$HQLOQqSX~)G=>f_mZ>|~*4F@p z{7U2v5o_^geJx_W+teTjlyWn58330U%e(Pe(wb(iKR!a4-21r)C!gb5)XRJw&v~>! zeX<@rsgSg7<#0CFb8${SPg+!e{urJ&sey+4+SR|ywX5G>gZnnf*s}f2Bh5?Uf|`@4 zQGPTeJt)7V@W?7vNjE|DtESObkZCkC`;mh0_5;vQ84htU*E2#rOuIWeO{i8d6k>6} zsFdkZ=;j9}3fEbLy@yi^3^XZDFd~c~$eFg*>pZ}Rs z*~ZOv8G!aeSq57jtbz~4fLTn1Vu4-+AEg$>=u4ozUGy%*cWOx)BNwZ7kFdEzE1}wQ z=_eprp_mTnC$JX}PG}9mZrH}c-VtWDT0^KCUQKF^C{LY5iZ4g%g~jKzx5B@`veYS) z>w>aRMz=;7MRYVk&qY-wfow|9Ijo~i#Dj!Mr2}I0B;vsF9J!u^ zDqWTv(^3GDTKhbYHj7h= z^EU(J5?+WTu-Zxcc~I}!Jx&GQe+Ffh`kr=<(dnK%k+%OYjSl&msjhX?43G5+I+-3#YD;P31*Xj70MvzLq*y z&DXv6&JK3XiM7V-+Z$(xdq*0h(MZSaZ&U?+&B#i#)7#WvH@8Lhm6y(ZxaW@kkZZQ@ z=ApHnw@-`M2CAOA{6B4;rgZ%RtTPdRUaWO6nUMdGrv!b#A>LNAgZ;V;$NGMG+($-zUf=C^+N-oeg8o z!U;X3`weocW=f6c1CVcnL`0w0lWqnSeTe)m`7KoNhk5clF9-&In3MC815_{K^Fjy$ z=1xzLq@64|KPkkb0VO(7%u6??(dN?alt-Q79Noyt<09Bjz;yB2X6tqcrzDZlP7mWM zgkiaIHnE74rRP}$i_1+-%TwgyJbZtPo*3p4inN{q5V_)WfzVbWRS8PE{rUrSj zT0&2HVLnk?LKE&xEo>quR70&WbAXLxEhPS!PlcFIN!6rZhVZhM);8Ept|rd9P78RQ z@s9BN$cxqTwsEjK6>eS70u}&gBDVy;j&B4YQWr`FI{V>Hxm8enAUDay!8#6cCy4@2 z5x2RiwA@XChhFp;{%1<tPQ0a%n$;Bkh#u0_AE^L^PX>{Q$i^Up>P@8hG?BkGyz0 zUCg4Mw(X(VaU)A|5zw$nd(yd+K~eR<`kLDlW#aK46Vqi04q#EM#|e%A*kSH=)!>7c zaQYtVG6`hpf>JRB&z(;$9DMG%{pW4cX{+X@8+qZn~=bnm%OIo46hEqB>cLGtDZ0te=WI#U*(2V7MSe(lN`x`!kk}-#>!!plb&7cHGv=X? zq2?!LKJlCoCtXcABm($pbxNm#3h03XDYIqpP>d?}Yk2!@!_rlqdN{xs`@EZdF8r5; z{D1*R!NoI@BwRaU_(5Dr$XwO)Xd|XX_81Z?USI^5l?vY8M{pD%m#0k~=Y>H`FZC$F zc>s;hv#8N1FPtJcNe+KM>5pBc;GbYU_7R+9WmY*ia{`PzkI_+`$$HeMNL?NV(Drx_ z(&CP(4%FR5JzfHl#N9(t*3$&LIZ=*?DT6s8sc*?R7h&-(@JQ7Bno4W?m2r021=f9l zHD-W&Tv&+X?9sxLh3DxfehRhL_Lq%QEI`B1>}uy0=TqF=8FmgA83187eMb_&XX)!h$ZZ)IFLh`Yj*IpL$2*SZt18(GdF4KO)s_f!4;9w>|FnHg!I6AQ6kiS5}1l*7hbx zH5{vo{qjE~5{vJc+BvhPem-p4;;r4Xj=8F3M#IhyM3WFn@_Vx6d z>2uH`s2KoIzS>^HO9l*Gz>wt6dc!vSsD%=>q?1Z!HObK* zF#;a|Kqn0q4T1q>Uy~=~b9ARM3VrjF=zGjJt-D|r6a4%Rk7o5eD+t5KG%Lymd#a84 z-zV3(9!Si)SqVM+hv8K#fq!L5gRkZs;j7u3C&2j~`f3WV&HtLirX8jK>sadw<%eIb z-Y)R^i%KD)S-cEek7`-bea^KJWho{Psb?2VJRz9%GXxSe?@1He3BU*!RI6l1Y)ftH z;Ju}8#hHjX0lk#BfT$Msi=bmxNt>nZ5;e5rlCUx?94%Z`xVdmU(&Fqd953WGJ?iL| z;-`vt7au4-Tr94c$IPqEBpi2}510>|#WmrpvjsagwNZyHMR3vi%#REgjuoyh+*0^d z;qF2PMfiOm8M2I8R#}+UZI@-gWgG>5%0c}a`$c)058_b-{PJ2X-cUuP7B-7E*e)u6 z;tN*=(Ay@?_Rh9w<+i!%GLg;K-Fn z498U5qlg`oUE_Gf@ibEt{Mh}L`xgktJNy7}IKcZ$8lW_6Z(Y7(f&i>ODdsK*q& z9_iAT3_miwX?Vx*KEAE>8%DUIjrzx6HBzeAgP%2v2n>6HL(z#2xL^Y#2?0HjncRAB z4ZiEJ@ViQUYoFkb3p>p#`^oNchg+yUb@yzgL&y$Q!T z2Rg3Vk!H|%w?pusZVa1yuN%YW*Dv_dfACaPNbNBw_+IP-ux&+0-Y|X$n}6MS%GGPx zu}(`(Wo5&g*Bnm{uGJ<6HimEeFpb^IvHRjsW8^VNsu;n?C3$4dO>d-XYF zvvVBLylYQMgHOSn+9T#vNP7JLa8}Ws%61lGnQPJY&Ad8{SKFuV!jLhKySjs82fG8| zQh*VKG=w90gZ(e?l zzd5GQwQ?o7&)XUfx3<-U%vN1_sv%79`M6|!ZJ3GE#vZ=mQhp~N=K=Rh{ zfngNw}nnBcM(A3t(N>3DFuLI2^>R#X-XaLgDiuj{TdxDKrUr zo1MJ!fM)QZ(B9!pXoj;1IF90GstCZr2xEURO<-SwU|)o-t50m#jGyii0@vUKy}96T z0}oti7x8qQGf}-rL&B4e^FT}5cE>Jar`5CyJ6v^~mKrBWhX0Uc_>ra)O}H?e;D$Te zvZ`fs%l4LCEy#F*(@DY%`|o=wQQb$S!!CluG$L6;aDwIPVY<~HQ~Z!67({{UzLpzH zl|?pJxUHJPMu*dhAG-Gm-F8BWBEkYx*zE}ZjJ$@3i9g{rm@4Dpt|hjQT<=RRb< zbJ~^QOd1J>~VXAywX1)-rWg?E+=$OvUMP%)PnC<}da1+_JEtwXLe>w(g$7 zQe#zBPtSrjx4;=q@MAwNk78XoNh34o3>JSr%8xFWZer*jc@)ulWND%D4f&v1PehgFw>|C>!?~4vQkBBpw!=A9l;?Zjaj2QbFp<@3} zqQw5tf(WsQ3F}0ZSf`_^%HcE^KO;)4EIp_^CqHR$1MeTucSrRKDa!yro>yCGli zp9{gQZ6(VVAlM6L4C8G~8vBhSMvV7MxQgYg?M1Xdpw)n!l>4u;ayt6T{!QV}3f}`G z&1K2(^vF)oVN6pWe zzi$2xju9x&d>rb9Yp-cO~&C2zo)^FPX^^5@NuTb{9&*|dsp+Ku){?OFRjIs8tu>lOFIo`v3d-hZo{ zUAeqNnS>T>pdmcN;1j z9&h+|?D_bUjSHJP6U~WNn|HSix4hc=aNF{>eeK`tnB8ga{HN3px?NP?XNCQ zEFNBb>*BSGA7A|S#rqb&y7=sp=a;BU-dJ*W$#3p7-dTI+50+V%1(!80o4#!EvIp*} zy}R}9!MhjSefQmu-u*{+AGqiIin%N9Uh%++$5y;^6>qQjc-5_|R<8Q|svWBi ztUA2v?^f5YS-j@KHBYYDy(Y8fuh#Bdn^}AQ-oLy5*8BI}{|^s5{=nsR)7L$=?$z~O z>kn+G-q5#U(}wSDIQwAVLtPKef9TbRyB>c2;gcJ!8^^@R$;#g^pSNn`QcK@&C7%KA zy^?hN<9}Gf-=EBy^$fJOBl0JP={POISc`u$9BlYcX1aAAYl!XUmHJ>ETr2&Z^as+g zh${OcG^u}%@EomJ*|VepiJ>}XNF#V|Ca%ATm_1GK6iUNP)q;BsQYS2j=b?m7=xAG{ zm^2;NTA_jM#s4nETnOOIi%2gG_)e?zCA@iyv;?KJpu{ee)q>SrCk;aO-;8%ha6A*` z_o1YFq;6cFiZd(LybEu4z;bypN@Crc5s_{tzI#TRhWKk{#1)zWO~Vk5J|{hba@XPN zPavg8qt@R*WFy`$#9t|XE!X@NpuFDP-_2+P|Efg`s?Y-d-G=|Ixj#RiOrg$K|4Pt` z{MmA}f`9d*4fXit-w^&!&HcI1G8djG22Otxt#}c2&H}!OmQTUocR}la1$A8s&2W>n zP+B292uaiTF*;&B8}7I=T^~JU<^JTlHH-(a$_?_rf=?)vij-%RS8?T8{Z~E*+EKyU zFEth$fPy7yn}j}<@)GupE6A{7s4e4Z|JMU*LwFHxY+$9e#p57PE;3I8Y36 zhy!1J0l&4lUx2@*z&MXdSL7D?7Uih&wsJOD8LST01bc!rgAWJ4S5pDq5X)L7-6g$% zrxxU%@&x^Os{86wSN=tM^vXY9`O7OiuB`v$@+ZIi_7jPks9Y@isp|UlI8!l=&*d{iOiR)5Yv3=olP0JF&G?JGczMEYsx5%895ee z$`~4hgBe3)aKTu3QSh1IGqaXI6C4b#zH51=AR>NoW5qLzlEI90%h(#gTgO6~^djHn z;fh6zdYUo?ECz4j>1P(9fVH^-@GCAQKWWMoHqHrV40ZFzZXU~Qo9WA>XD;%ELcxK| zYxBo4ug&y@7AU=YEhvH(ZTeF)5rNC^)&)$>K;}RQ~4n^P==$eW%5Rb6xhhP1`nwt1XprL zxNF8EFA=;+fJZj+k&V2uQN3ct!$~V{ECt|Hav**9bYQL+Fk+vSz?HHqizE~Dk`}B3 z6ZllPdPyefcCLVeV$4Dp&h=vj_{WtyHeemp=8g-lc?J=hrEli08-ed$%^jQZ&3^{Y zeE^tm9pFQN_hFShjQ@Hxp)xZ-gq)pNqzz5(NIR{4%;{Sd4yH&au z&)kD&_(VO99>Kj8xON{}v<}CsfcJW^4nO;Q!5hBFCtHDYTL5*e^bo$pS_W|~A?~#O zp0b*5C~GxZ^f2n*0}PZzEAJ7tUXN=Jp(K`jwT?;P#X+GxFOejvTf}i1{ zf~O3?K!q3|6ZXAgP&=iRw_r>x*h6g43D_~ZPK<>cJA)VF;KQy|1$-YsJ3>+o_N7{6 zWT?a5Qjh+LVOlo=4<}Ghz3punqYmtKDPa9>w4fI=WD0P5KXB(X%$k|lF$aP1htU_a zF(PxNo3J~MNb|9)EWplpD|VBG&?1aUi!gugz;3ogx>MlHyQJ?)-;%y8Jt6&fX{U4% zyTgA2*8c|bUw>ORNY6-bWAFT`Tp$-pe<&NJr=-7@{z*1T&r9Etek=V(`Vcef`$+h8 zO!|RzH+pmj_L#rHcpsPEklw^T__x^MFJV{tABcDP_tHxk{SUCuoRoely@fgQp7j4A z*Y;ZU{Jqls==}$P(bq{EFh&nzJT_uvHc6YMccm@ZM<2od`UUCp(qZY(q^+3Y+oUf_ zzm$F@y#lYLjC4pkEf-1uh+R1g{mARs;a-Nd$#(1|KayURi{%pOeYsRFlgnkZY>{RZ z%)4#w+>(dZt$cX(BkNbMc)+yrfi=y|(_3@DZH4!*x#z)kxwCHZ+d5-9f04JZy1!7IlI4E^;wHNX diff --git a/docs/build/html/_static/fonts/Lato-Bold.ttf b/docs/build/html/_static/fonts/Lato-Bold.ttf deleted file mode 100644 index 1d23c7066e095b5bff2c373d4064dc4f33659783..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 656544 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

f8495bJUR}lganziPo-_m8XTO;| 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%0AXJ$}2tfE_bG!=1%jk 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 MBJ=^|GbTs>0dZJj*Z=?k diff --git a/docs/build/html/_static/fonts/Lato-Regular.ttf b/docs/build/html/_static/fonts/Lato-Regular.ttf deleted file mode 100644 index 0f3d0f837d24834b9b5b0a6b735459c56f5e75c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 656568 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 w-9m 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

{e2O2{s7^`lE9GCT@J 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

!ump=_U%Ldm`W#$)AJp;TW26LE?`p+s$fwQ%}C zp)_rQwQ)K?p(H1P_0%F@igOy6s+I!NoUefC&M9C6wFH=<76ThvZvvY*{{a5nItcs^ z>kx2;>^F8t-t)kF7Gu}(Iq=tW!9}md%KUEJpnCxN3f`xq*oQn#=g@kB*o}-q`$^)u zTpul{CH5unLL2Ic74wJvRzy#OTE(FEdNF$;R^!fr?71;>)f!{+DR-watweX5F|jN0 zl9&muSz|1A6WxtsCb^r%tmVEeX0p3U%-Zf2G3&Tn#Y}Oxi<#=~5Hro)C1$$2Tg(i1 zkC+W{b_4b2&Ik5Fe=+qp2AGSJ6R0P(+SHH>M9x-#M)B?fV1kR9L!J!9lUzgVTCSmN zvTLYZ+g%2%<1PoLxGRCF?kZrKy9Suwpc>V@>NRhS^5;=+bbGr4@4Kpm)dO z{EBH+&4K-J?gaTkIE@{QQd@7>%vzhq8I)4LCWxUI<_!ubLTX^8>@UzIf&Q+01m+pO z#M|a=@HTocdz)~x;1+MIYrC%NxIwp~Tgm+yPMI)%^(ao_yn}lWK2{UJ?~HNAg5N3Q z>&@-kkZvcJUF8N`?OJYi{3^(Q0h)15VT|%FpBmmN;h;!3D8nHIaUZGwJF`=4Y`Qdc adHZ(BTZNev*8X&ls2nqVA4NVRa`gZB#}q{X diff --git a/docs/build/html/_static/fonts/Lato/lato-bold.eot b/docs/build/html/_static/fonts/Lato/lato-bold.eot deleted file mode 100644 index 3361183a419c188282a8545eaa8d8e298b8ffaab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256056 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

LiF6s4qCmqR)As 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℞{!~>f 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 diff --git a/docs/build/html/_static/fonts/Lato/lato-bold.ttf b/docs/build/html/_static/fonts/Lato/lato-bold.ttf deleted file mode 100644 index 29f691d5ed0c2d3d224423bb0288e6bd59292511..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600856 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

8(RS%1n6kJInt)@EwW0s*7{=S!BxlrK2Yv$^ z@3fIAD^N#SC%Uv|NwvpAERAA4{#)69YJgvNs9H>cIOGavtZ7cK1>_jyp{yzsa&X@0 zoQU%Vxpj!L-f-se-~L?JG~Y36pNG6k*Yf@-173%W38anR77x=?bX}L=v~ko<*e^G5 z1diK9^c*E~fnTQp7a)CTEbQgl`I-0M>}+drmve_w)Z#z8{ql|LN$* z?+Es;3GSJ*akoueQf4x)Wap(8Ho2BvF zhmmC*4(y-88}6U~bVfLwAsFmLkM_S^ef;@r_uRi51<<_+&V|2&S406TJQk%I_n|@Y z0pjm~mKDVg%$y8I=1?p0WFnWHZ&G1HbXLOE70tvyqxbb9kd@8Q9>go@J;HbwuR?OK zwi^_U^*55u@s-9Wb~ZF_5l2fgT-*NyZzBfxCM7|AR2=TC7|m;o=bypW3z7nvWRjP)epf=b+l0-;U$Z0b>5>;s++nvtO zx!N$D*oGdN%rVk>`4jy7)_toxP7MVslmehu9X?e6@{zB2B?f zQ{EM)z>7EObM^Xs{qQ+2i6d%!Egnyc54TIz@brnV)ib4?Aq{9_!#MdcPRMUFftYd7 zRb!Y0H{^qo03l(>NFe!t*O<5;v(l1Z;2M>Gzu|D+zHSJ@aDfttw zfRiHTzLji)CAj<-wFbL~xS$meU($rN+K2|1F!P!P%18&ai+piX$jbwbBaz%jbch9% z3j5cU&!PO}B}zo368ESxg~RKfnh8P!A-;R{$#gO3C}I1qe@2Pdxj<;Nws z;bRlruorV{ePWx%o~xrC$=+5UZI79nl`1Yz=}ixr+@%>B^W>O5cFG%+Ont(e7Q|(kfzE#F_)<<+m5TkKDeJp#zVAK5&8H>tf&6H4-4B{ zwX((UZ&_JYwW>7`XkArRQdCq@UR1<-%Giq~g8}Ol#NPF?*d#l}i!IwJRk2lXs8}lLt}pK; zvo-?*>g1cglnQEU_%gf;+A|ZkV3%3vU_K#UaKrh89Y7mDE6yh{`jFnI+tCD>i_;Mhh40aZcabPTi@d;(|as;B_KSWlk*r?=lC0eoC zF4I+JI?IAOQ(kk1KSxQBQsLlf(j(yU&Dm}TzzU@DWg4TkY(^|^pvrC4DkW+7W#D-i z%*8P45ju-)jQ=AZkcFcTG|{X69PG_xKA$I1=;UF4RzR(jNnnJT>S#2o2}~_}0Sftzfs%XXDz>P)%KnU0X0C5GXeqHa43S0cfihuJ!Z$zv-= zW3G0~#TWb;V!uZ-kl?3=6quI9D}*Xwk1o9N{25wB_~~F(`y9sl%P5{ zKUb4Iz1m|dot7VNE3^oda&}&q(%wbWj6RltErjT-5i!!QlaqG zgmo+u{JbW(@x{S<6nI*l)Bv4~@uNzz(xF-j3e}>#eF)&f?ukcm>32ts(?kF_5ynNH zO1?#}x4{4Q8Gt_oO6`wC+nxjMU9Bs1IG0droH zzc@s`Vo+-g293%{y&~YT2(dU-%uhDpmSVn$l`NDyV?HIp;R=#*mL@yPS{61b?3rq_ zm(R25R3VYPGT3Ac+C!bg8jMyDvbO@e!`eq-?pf?RVa7lk07er{owKK*B`UQV(I1mVkVfsqMGy~xI8+r{ zbLfj8UmN*?xD(Acy?1Njy?+}s!E*EZE1k~D{=B^YDyOrmKQALaJtH$co%M*VVn(d6 zzrt>>=r4@TsIXCerBziWB~?|B{(}0b#J|O>;C#5AES})cM>7uU#}5hFB+&?rPO;F? z5RD6CB$v+26Uxc4vREdaVfNa}`)OG$7rl&M;0vH%5A^GSe)+UNAIZeTrbQx=sqTVO z*y)5X03BfKL^g>lz=H!@YX_d!RWL^YNW(y$ipAB#&5gX`MkEepQf%gM&Bt0(LK+%X zBJk+be1si^K0)V+uO|mY5(*9_Tk&{LZ z^%^b`Bh{KdSAPj>gR~TA1i7_--uFch1iObP<-ul^K(<(Z$fAo*iD)80pTNnHiUe|{ zQE5_I!uer~I@B1>>C>^Cl9bdGqev=}n!_GvNrom>tl*b$)3|Ul@Wc|K)Rv!NDe!Au z0Aa?G3~;_3W#=TJ2pgY1(isCahJm^$16&oOOwmx4qsDr7eY2A@d^||g|oy3y2*`g3*0qNm&VbTWqFFzL)zB57AolR!uMfYmN313b zlhfE7L2@yn5~0R$k&yqUxzK1VwEUVcM082vR;{Vf4(RfdL?dyzFs@0c)_@LMy8fg9 z)wPn|Ceji4$sB9XkP3#-*3-78}8@Ynj!#Wu0TCi#qB2O*4W63_$sJ0q_WnFkJ4#iAPen`?(5Uzha19hYbl&dIH&IiJT7yfkj+S{%yBtE#e{86B;!jyfGGF7yiXg!}B?1aBe3_;80T_Y`Fuw zBGoCR+)vKyOj7DaP8psej~;7 zso;CH255oyiBhKhxJ?6*bE1@bMrzfbe>YXC)JZvI)St!4n1C;$3yxt)5poayHyAf! zB>HR_lP7}zZDLBu#KaFQDF|cwfn&V>?|(Qi@F*t1>95%7EWh1m^|4XMHaw;S={i#3NKKbK{kP32H`^^1^@^5@vQ(xQ#ZWSZfw$bX9oZ zC88Nm$|JYof1&egkzPJQH@YS>r|}y2{~ZAT*FoJ|lzRhtH8%ObMfEfNrn8gq?>MQ9 z9`$eg%|WfJ{Z_f$>Q|%Qu&1CruO^Yd1KB___GV4MDwSFTnnZ5UglE(*mefx^hhJoM z(z*`V<^6ce@I$Q5BlKr8*id7Z{b=H|8F<_9DfXkc(w|KycjC{%9szxn_Lc|Z_(*y| zustn<75Xz=U8cj4spFo}S1cuW`s!!p=mRFP*c8y`%&G^$jQTHUr{bS*G%)V5?J&%O z?WtMa;(wM8@brd)XZH+p@O3T(E5Nj`65zIB`5>kI^(UO&s1UK`fy!?o$Y>X1$ss`lA~LAyHxjAK0M z1=iPiFK5obZ~p~zwA$sai<-^RI=8DjYF?4fw4cs?$WxK2)n-2;ew~ zN8vv}Ji^Mp$@+kpl-xk~57yw%_RnJaCxUMpL*;fz`ZpTG6;6A3$hg4cw)_2dw+B~J zZ%QrN^DoenmA%bb98jwR#ZE_2x>}uH8PNm<$aojk3cne(pHf94}knlfl(zv z?sk0EOmX_*tWdutHEWmc5@xz^A4N%Bx-Cyivs@hG*CNRuRobt`;y)^Bya$%_J&APi zx9OH9NCVtI5wge17=r`{d+m(M!nV3hJHh)JwfOjxegjuL) z4y_&nh*>e}w8iye7L!mnxqib{AMHgUoi~>|-_5%kVWQi_6x2<4%E(D{RSaCYR5lYr4!fU^5HLt&;P?( zoka16v;L!MolLE<w)}G_nMR!!8Tkq`bp}ePy^dFYZ&4G2 zo|)0Xwkx+V717Z?uLb|{ozM;eUPPoEfG&srhf0o6ARa*5p)CFWFptHtX#fx?DM)gv$j^>EPQyE0Gi(*~4DMRwSjusRY6s@Qess;Gi+j zNVTL1A~`ZkD4i~;5(x!~-*xSulan)Nf7eLYUFgMKT_XpF9_e;BF1zFWz{sJYN4mNn z89F$E8SwJu_qMkmUQv$YJNPeC6w>_%fb4`J$_5$ zrXGynySd5YhX#iKwc+jkZ5-+Z){)${|LyfSC(BMXPu|=SViQZR+|17E*gOS0V+S`o zhT@i>**}5uN}%>H8w!JuMg7oyA}kP)pr9uKgOcndBT&#Pu~P%?;jhY8b!1hnI@aEP zY-L4O$Evd7uiSyp{L=$d@0gQ2{{@WLzaJx>UywWJj;VoZ{y*%r`LO_R%BE923s1}o zhv%JG*mG*r6dv`C-?lS_V_b6R;_N-&KQ?2=W8d$YeevL+k&^;@7GXcn0+vmh6a%ua z)-FMQ-$)#i32Qgr{Tcxi2@VC?lSjz-?(9-WpuNmx$*cEzYIB{**kdwhj@4d~pCL3i zwM=!R%4g+kPEDV7S5P4E-<5?Yqa11cEltp_aJKB|ZCzbsHkL1}r+znGs8{l(t^$w0 z$R#e{{LFGFJJwJYE%punJ<#K^W|@UR^D62DnaR2U*kusxqa`2GaSs+^+|}SV04>xJ z*KJ|?Im{k_Sdz$sEwZ&2m&_o%y}d)2D9i7y8HiSQhomn`eN~}3eNcjUM)FOs-CP|T*i$8$FU`7LOwq+tT_$SVPg%Xt*|XScUqa< zUAv%!TR1ga6|0E$H-=NOkBbJ%ZH>Dw&b{fv^5~QUzg;(NYm;R$__~rOZ(ra`Ka%5XM{l z&DVb&psKOQr(QU9`@Dj7iAlvDc$)gx(TXGY9jo>lVa;MA-;;Xq3rmu~xs|9H3~YsX zh(7Tc@X^FH9$G%2nNi?@NJp{NRob56Z!2-?@;a~wSUSC^ytUg|90|8ATE3_)T(bVD zrOTe$P)736@14=-I^(FGQ&PFGtxPY;Z5gaBm_I2%mKdc%snDU*XNB{t zyH+0PnRRwUMdkWOXC3>jSQRd6$c*-sIoMo53hd?bk?)CxfO$lFIk6GIHyx*KOxZ1j zkp^$hsJ{$($P~mv*R+8F-{b?!%6jTtIaX0<_T4j=Ka`uzSBiwzP<3c($E;~5PAu$G z`OCa{brCld#5))$v@ z-rz0U0abFW4wqPLwpt~c%IOdp17ye7WLs4p+}^jySbPh7yH zPj@3-2w`qgSm%L`5}*RAvmw#ShDCwNM`E6#02Toa84hH`<2v{rBPrr5g-!=tbpMlS zj_e9=UJU=y?ry;GqD`-DoppG2mMODxQcbYE*xox0xtNJt|9GI$*RrPW$!`PX9aW`d zPIrkl_m|TQ0Zml@F!jYR=M)Sc?>`#~O*aO0B@3F)F58m3_5DLR*|=xY>ZZJb8uy2v zFuXK4@&ld+abnPQBq+THSURC{4-SQ6U8ZoErMR!eOya}o#iccBhlcNKT2Msup>pIO zWF3qJ3WKQU*&bgut z`VrqDO#IU@76|vjIUJ{l*04c0($SjsSeOJX0Qt1c6}7tSi!#%~yV~-)t*M+fS<#`k zmd3^Ap~CEk;fPZ3l^M0c$sI<6r^E40D3knR_`a@1ZH@TmVP7fYLkx7_B)DjX!FsS$ zp$aZj>z9TuFk+Rh>sonh{lPdYg0D#NmW7-`mJ8(RChG6h50_^%Xaw&RclDVko|x=F zt`?|wcag}1eO`{ZiVsH~I_ct42fez{o{uL)g6fL)y+x$4h`VxnN^P4~%{T}lGc6py z4S7vLdAjfU6tOUss}0!d_be!u1)B1z>a-cf_O;nQa3U4T&B`=${*>U9rWcTV@J3-tg+PBg&=1_gkpA-o zGpsjel(;R{k)t)1#i<2Z#ZYTS)XKBkikezV);u!zO_9bd?l0^vFl=7gkMIAtqJn}F~Z0BI9@f(gx=*f?`AAdL$;S*G?IFSRMPH)1`VD_p#Hy>C0|zJ53Egy}DA%;)!`DO78sn^enzXEdm)cA9y=JO2FDe z+Pd}jCtA={(SY%Z9R<)2(&9g3}bY)Rj_t@Wt#-K5>&Axx7S zOk`eIO8bjuKfJQIV*870P`*bbKuv`{p-vq6A(;erC2e7_WkTAs1BVN}y%^!fY%_We z@ZFExGrVyP-w-h28m?3){wP*ivE}06l8f7_n+|-ulPG)WH1)#CQ=wT?i-i}LaaFRk z$b*B6p4nMjvGw_tYvA$}SOVZ1biN&g^8+c@wD2CSayjvgVpeQ6(LA&@PDIq)PZHlXjfz9yl^DI;0I& zdfbzX-CUuVjq{{x9*M_REL{=X_x?_}3~Nt2N|p3iWopb*Zk-qG>zfgj8zdm8(0Nrz zonyTY^GnyRwiUpU#3*EA*@)Hi19G*z|eR2J~V>)8|`0xu>=Do=>)*7cDL5#RC}n0KO2wumJPQj}ddRnw>AL zT=nv<8k#h$X4lKBR=%{e2E*<^^M#F2)V;(PaFH0u1US?a=N!xl?JR?f)W#li5Ya@H z*8vv>wr`O5A_YSCftH#=&Fv&V`C*Pp_ZU`xjIXt%o9wvI>44t%pE!q8GeedBv`VHM_cW<}F{?G^Q#b8-b@_UX804y*dg0`SYjfsouh%&%XXJkWeeR4(r>=hcoSd}_ zCkypXHFDWt<>X3;A^uMi8y-+l6Yk3^j~=ind5g)F*g}t$`V{d9_(90^L=Nj~_?{Z+ zL-Ft061r5}JiR8EQNpx^%@P}2khZTEi}mQQK|K7a*yvKqo#-8>TEPJL z?G7Zmuy%Xfx;h2P)%ql9I=uy3_5k(kEdjoR@2IM7@U75VL2ev_mL3M);-O69gk3l0 z-W7Bs8YBUI!2?A92^J7)46b7&gVZvfD_m?R>-_fne)%<+p1% z#9eQb$?sE7Tz)K{vRm9(8})<5jXMOzE1!Z}4rcuACuDX&Z%N5hpfB)HB>aWY3o1^V z@EU?l03Ral0fMs|N{P^rnfT>ZKp430lBb-{ZC1f`g2lmu!v`}<)YM0+$vKZ>t1ZnT zZ%jw+e&1Cl!u%H#_ayx%>yTb%A$tOtmzM}8*}-}(v=zYVckc4-OYUv z9+XOHzJ)cX{h>%HhQ$MqCQKQ4G2%-JJ~a9gEaW3)rAYnq;SW<(daL9Oxa15T6}S@~ zEmHdWt6jlGvFsk}mHPyGg#a$~SRPy)%kH%j-RK#uCF%>^FJ>HFOQstW!Z?jvFxI?( z*n@KFO`gW!P#r_}iS2OZsj+-%*!~%{LRIX{YqmQb*k>}0h>flkg9Wf-zcV_ApRs51 zMOB3`G&ozXK;2_M^rvEcy{R}owX|wUBJO1Qsc)%e{9r}LyqiiZi|f>(P|)u(so2C_ zIQVd8Z-ac4YVZ5?;k5kIElOS zF#dHZxO$x))92Or0@5cS-gX^70l*Q_jgF)72CR=;we)ar?>$SaxCFm?@L*Th!KKxF z>?P(Vu<;=We0ASF^P zd`zXV@zt&$;1U$LuFg_4IUoTpNmhETONoD))x&@Hw)ono;9~kR6l~;M;QLMBvs1(T zFuNWZ%!%t|PHRNv>&1Zuy@xZK~_9pJHiAHC_groB@ zAAICI)_*5-y6eXY@bPhi<8>Q4gTc-XbtCobJ2Nvo*Vm71|MUHwo%jEF`^dIGAMflu z{^xBY*iCp||MvP?NL>A*>^c1IiskPd?q)qm z?{PRAFqm7w*ucdH%!v?ZI1HTt=sLxvnBZ+jn-^J`Wn zmFc%1gR5=e*GSl)vjS^leop_k9?my(M=pwx!f)Z~8wf-|8+y1ZM?^kAeY@<#i-+dt zVS=2kzdwdrz)N)6)X<#!2eCg;mdOjVQXTmH3=eTWhIWvG65lC^e9p%|{tEhL!~c?* zON1E0$qyO2lTX2KP_%9=)#!&NQSvDm_mAHsevR=bj6E@ax`qhrd1&Y7bbt^f5T3c7 z4nWPqPh5A;lJ9(gHY?~YAb;66L;Ge7b_no|i2MWm9jkkQ1$HC3aed7LOS^8LAdzXA zgeBR)2D=33An45WIXHUTs@Y24Rtr`qZRx|sK*+Pl9DdO$KODIi<2*ZS`UQ$QdY&3? zn=6z9(!Qi-YNUDJU>$FGI(|35deQAuS{Bu0%H^sQ^77V^A7j_s^`vukkxG!gA#xBF5gUe`1!khIiPRFiTe+3^PRGHQ8gdGd$^BRyL4ak zzrE8JZX@gYRsZ36+3`z#nRS43g#&XXp}l@_`;-pBfD+GCGr8(?#T^WLu{wGW%+Ai9 zeV{k~clZ~AxsQIe=kV}jy}geOAHMCYv-1ShWppj+H8%m`vv2<5q3(sRQs3SS()5=L zyH0(+d-yI`yuFB?k?&wnouT;=ynZOtigAnuF%$hdZlaBP@J+ZsH5b>&X{uQKwHf=T=@uZNl`cq)O>dkyVC2DRZd$`+I7#O z7_1d=BkNV@--Ol*DNx8y7Y|LPqZ^*#AAKbvaUr1#x3nZqH8|S8r#6v3s+(v`sKcYY zI=qQ|_x<;&^)O7-&&UYtB=iFz0FcjM*+IjAu?J6jyaW8?;2RHb@5!XTbIyPH&}h3= zS}hkz5UK!sxp`q$ifwo~YL;G0h_$ospy%$!XK{$89uk&`P1oJg_hVgf>EVM^>nPo0 zb$e3z%hzB3<*#7>qBvO__=>r-MV|l&fj3jaCpZPLznHnZ>Zy;|=-U!HH>_K;Zrzr( zzv|xF>LXQE9dq*sjt}NT0hlEVFYc(#+48|*Y(~;zKN&Z;EF;7JE;g_R7M!P1Zlqsc@mFN5i|yRv>FEr zp)-yK2&jYa2hRrAqs><{BkZZqvuN|W<#`#oy=ykE>CLU&`t*|JPppaEbE~&L#}w$= z-ip2DvYfHkEUqn|)0n50<~GeOD_k@=K#FZTeJ~@dX!3$vI~HA7Us}20+?>Pj6v(rR zCxs$?HNJbTR#+o~uDSLg*wCr4@?clewQ5lG6J06JIEO5e_}nD|pJ0LM>N^DXqRe01 zXU+2}h4z@AGwqg6ugFs!4NlH870th`p6YzCwivK$QtB)GDe8NfBV<(gEV5(v;*OB1 zqBtzzI&vE_>X%eop>yCru+WGMc*)pikjYGBP=!PIlSIvx3+NkHzwn?ZzR7S8w0KrAw#H>X-_#NUKn!EUQkYX3Ujca+ z;RqW%IFR;%;yuV~$>xNi=t%_r55mdPAr>iB;?`)Tt#tw4r@ITD<#LREUdT_^p{!86 zRT0sqTkv3Gf7Y72Wl)@J_(6Cl!-!`#_J`KoEqBCui}XXk2-uChYw^{gq05PNWsGY4 zPvQd0OJA$dGN`|KxTsQfmo(uOr9im75bjIFz=2|S61I`omA8HdOSC| zSepgcN&OysKdWspRtfoy*CB%15}!Mk0dj23@PKkWo_cg$tdH1{I~AF&+E@Fz|( z^`1PS4#=suI4OU6Qymn2C)DzI8sRtMOf^aVbOq0|wAqJ0@OW^az1=$e3Q5XMRHMGc zY%bMdkD38e81EPAoZ*a~ii#hgR3X^aKMqlgp!CxowEEbqR1Qr48f+{24b+!{J&Wc) z6`iQpowGzUK@s`rf(@&{cztPw@uZol@;GHgu)%%3W zTpnw?#c|~`CIXq+6X==&b5jU*4#L2(AuejRZtb7)yVaGE|mp!|qkwZO!RdX75 zJiBb^GdmhM*qvy;;G95*%UC-NF%Yc$1*hTAm6O0jLr*gDpTyDJAi+=nj^?}ZHX6fv z)HygxsB>}dqrO9D2lHEIjmlvDk3*jj4@Y|iY&5v*90g;LjYb?F+VbZUT|=&^H}}!Z zyU&;syLCA>g?cwuXJ$*WmlNyEW>cnSkt?B%RHT(&fA4^4hX3=LUDHXuircQUWr)hB z6MF^rC98>UTg7;PQ7s|RL&i$8pa@MFuDiDVFNsUn+mf*Hw_rD+600x=^xh}#jrVbV z`k|2I^;*9U>8NSM3vM`1Z-zY%5_rsciW0?`gOo&D9vOD9dlwdYT0v(&p@-(qR zoVIh*sim7_DwzHZ481X(!#gym{jNnJ~9-7U6Wv4!G2mWed;sA6t}{kaq=3 zPtKwmVD4#L3@j@6?h!vCH+kGPlLrx#pvi`7V8FKur+GrV#&6%|FK`HZ8nJ;dJ$i>m zl6st{vG`37V}vZ*UfExu^-VuC56{AU8c$eV(TKeT=f^#ei!Qn%Gs?Kw9D6!HEmAev z6`eOZ2)@-1sHaID)G9=}3LI>4XfzGW1JewIB_f2rEe_0Rx~TBQ^QQdP$ZP540VRsB zqT<5Gj}Kw_)XPM6wEXXXo&DZhzwE4OJAMB7+10a(_0i1XWn}i#|Mg!_)BFp&j%;A1 z{mj_~y`duz%qjdgXqOcE-gpC@UGzC$_0v!E&Dq!CW}^He#-sjm@dfAyOR6R};~#)* zhW_Zf+3}H~R@x!V2Cyc z)gE7g4W(Qq-9awEceAQ~w$0m=1~Ge+TxKijibOg~Am3&qTdXJloT6|V>~dSKOD=ci z+T?bFQ;|Z`$-07nz!Cp!o7bn4y@GGaOZTdS^;sHCR((+IP0zEyUc!^sk9>!ng|Vj~ zDTE<)(}E;4F^d00n>ZcEZWZ%S@x=~>E8A$uMwtF=gE8Bs0KdU29cQOcKih%lUH-En z+o@DK;gg6{p>Re}`xPVK0k-Z5Ks@9kiIFf&NdaboaAdr28tTI_F>Ry5+|<3Gu=Tcq zY;SQxd61=eP{ejXNl8E4HSdTvMC<~q@Fs;b+h}BR42;HXr-EhChn3n%4; zg2uh~`zvxIMNQe(s7tOgsPsR*c@33_&N`s;G1g09zZM`a7`2{hU4=m0PQQidMix$l z0VBmD{WPfk>9KSGU6{EiqkcqAm|*sS!VXw)QT z7&Buqw@xLwgvWQ(FRg1{SRV=H`|hr|w;rDsrBbD(ZclEsD4@--%adg&lmmR$Lj46> zhZ&F_55O2uMZs2}`4&RG2|ISVn48Qs8Z{hamQ5zJhmH2AO`^+g4*ejICrgug7GFrO zaE6UqNV(GZ^UZ-db7r`~ceo7NK2CfNzQYIzIRb+WT>N!-e-7}>LHhk1paQ)w#a~CX z!24T)7VyVLCh$+o#D&^1aTTCl_&w_!{N4;LCM8+09MTJap?#dOm1>D&*nGB<#@3}H zIfpzNd>n3XWpj=M%-X3nbyAWmvkSylu~0=EYdC%KV7@=i&Q(nsSem2rq(C2&i9Og- zHV0ZQOp=fg+ky9>UHli&t{DU01$>f+L8bxoUHk?3t|k6m_zl*Begk7IqMpR2Vd-eB zpyz^V3u-P2w zsQ*ILKlIU_v<`cpc!G&9L#{0r!T>u08NN^x0DDE0YHS*TZ#5ZHMZ5T7F&`uKS$sQo zvk|-5&JXFoR11Y_x}8PP&ZT%eGQbd`JlzN?9}LOF*rgF@fh*dLTG%b(8k=ypky>i! zXX!7Y2ENpX_;#QXXd(2_h8ZiSX)MO7=sAM6i4gsM3H^QvdLO9D897GGfwKYx7oD;M zlLHVAyQs!78?O`=d*=|4#s7gD9pOnQs8d)!q{D;lG@*y>JAMlm<%XEKmb}Yf!!CaYxyXKXvpRHik zT|S@qtdjbK=p0#%e#e3=5u)?TrEN!#!q1?;JxRwveGH$y`xfjV_BJ87-tSv?^jJJ~yOd8h#`|u@cy$07k;u95#*_W^|7S>)UFx$;9Jy^vr>aX#4cI#*%#leUHk19e_c|{7AXv}N2tYUd=Y5>_wn|# z04WV?4fnGG3Enn^I_iDce8~ zff)%66a|Tj%tE9WAZMZ75<;F=<}r?H#J(!8=B4pu&ZyNIb;{snb$JR$EaHZ`cXxQx zL}}4jEDC?T9lN_jT#=Z=n%hF??E+e)+Dsa#ifsm)C5TOqVfb;Qy4Y$hRvW4L ze63e+D6g)uCEl{tRF@g`UM-)9QAe(PDun+KMr`^d$Tt_K@&zpHZ|E&b!4mLO#c&nM zr13Nq0UrXNGa8s9K}-THi{cbFqRNCH$Mzv|jAi4=DK{W;uzf#AEHxjCjFLzx5Q*5| zMoGkzM?brkd_1XbWIJ&P@{0sXZ9qL}&fo?^JH)}q67@vrh!U7e>~UULM#ZAtu<2~X z1`O(&mgT{muBB0@HM@Orw$F)UA|qY1+g<2U`0M*-_0{`pntjpH%H4F8T~~H}?xc=D zWB=^_#z6Cw^qh?8dwS-ajpFaS^D}&EX};B)pXpUAaUtNA_*tt#heo;pGWXEGgbrq6t^VMn zFF%@fYDH1eic_>uDV5)p=qtP#xbw)9hF6OYo`XZChh18MB6ODzQusHRCo}9V;bo5V+6$8+Ei3W#oy zK_=6OQex?WdpPWP`Uwrsr&TOaBoJQdkBwFKqSlPIy}5YhcXq#eM$e_4&BxZ&dF$sD zh69mV2YTCf_eEKUz0wq&Gi-4e`;)WF94)&I=n$@hYxvipR`;6Rh`_ckaieK%w$aEP+R(*DMu9;dKySY-K-SSO8jHzQp zz^-Bq0KfOb>@dl5OeRVUVD9VxvQ15UUthW9(-U0-k9~V{-L^%YR<$$5Jd66`u?y6j|7U$< zV9%q!S#&GLdVOVV@xk`8InvxMb+N9PL6_6IY+qabf*@gLhdWmk7FGydr9pLJlV2R_ z-BQ2l)vYCcr@z>K{9g}D7U^s<0Z%!#v}MWrSmyI{-#7<}lRf7~j?TTftD&%>vcOw6 zyCAx3eoqC!Dq(p+^8x*xt%mh=Lxu&Kjd(sbb3CHq(7c0O1@WLVOok1rXTwp1>X!jt zD4mQj*i~d0!ZV*F)l$Kv?1u+u+_$8l{H6z{FFYD90^qzz?7lDUOzoLi3$n8Ev_14Mi+88ZQ}0Z5`CQescznezg3 z=l1NH>hZMi?w$1^=DcPk+vEwsClo!eOICs--ODL*>Bs!{ogOZm1vw<43ifnwIDJOmI z+>4KNPLmt>7k=Xt?@3juA|GPq|GV*iFEVEu4Ss`w8o}=0wsz`PJ>Q|Geq#cxy#O*G z{%?kjCru)1SUn)iILPY-ndY=~w}F6<5OmCkP{3>8Z3Bj?sL=(UCSl(lfB1e@+J5c< ziBstk9pLWYCztX!iBehol&yTJjCJy6Dg%4_=HU}qdN1|9&4ziWQSad$DWVa$%E>Ak z5rNeNvSlt&41GV56sB*CU?aVg_A&lkDSD7Na>dWnhg|_RNUpc5bPi{3S*}wbZ4PPk zqCts^CE=!NOm3acNPnPae~%5um-J5(zr zGO@x{9P-vgjXb$tT${oZNCYO8QYn_X06$)mWw7Zo(Qx~y_h7iL?)Y#`HnAl>To`W| zA;2%wbx0vZInh#z3kJ}-839rj>RMk_wZ1DHX8wjwtNk&%E#_ClUmJwz)ns4A+Rjj@ zb8SW0P3UVkmDmdX8jZiuW(OyVHUR1sp0pt8O;SxRhqD{pRY+eME3q+J97DBE2d#}j zEGq(wjAl5Zpp_RkM}h4`CKwo9$OLoHCYbat_w;a9kNe=7yVN?3>fqY_p6TIGkNZIU z89!!czHX0OZd5Y*qVm8^i7&3+kA4W>clV)&4xs&qC8+^lJcso-!v9MEY<*Rtf}}+L zZ?K3=Y^e;&WHYbz$Q_Otf~kuEN*MS{?OCBbEMie_Rm|A)#N6Glmb9hFU_}K*zuvask&TnYYZt@Nmf*kdIW#Y)vAjy41V{hkxjvPHujRYamCny~W}Q@0 z)zXo__{g*csZuVy4}_!GriqNQ7ea2L1l{=-&+>s1#&os?)OVxJUFIfsgn@`K`m932 z*xB)FjvyZ6XP^ULF=xIequ4P$yFOC^OliNP^47)W1uGv}#KUab4)LYjGd6O6v?J&4@Ahan2H7eJw>g&M1t$21I4YvaQQx7hRm27-=bsAyO zbx0dFgkz~P319EXFy@3Rf)1%pNK6qux^LSFow>1=vrp-GKW)<13ya~7#L29~3ddjh zC7G>!ewtL8Jlq4x>dJTw9HcNg9b_WHb0DjJ)CA(N?X;!{H?1Z{E>~ID%8_7p z{BOgJa}G>T-{`Q(1NGVXaWOBm|Bhe1vE5-n&$m2E%LU+264@UJkAPw!@DC0p2*RO% zw78cJ=I}{)KUN_Us~j zMlGfE)!OVeKJ0S^j10yJDj#Vk=c0QUU`R}_P*jip7o@%A2mu7rl1bjeU%o{B0kcql z_#+@JY}D_+qK-ZzF>7S(`xJ)MWS!zDzr_0x?%dM0^|jZwwr#;n(q!s1>Vu4Gi?up{ zIkf;KC6hc5bKAjs27HPcaL*XhuV|+tof(aAoe9UxRlyiPFF^)^6KY~bGN?d8AEzK> z!sHt~tMU9#Z}DvEr?3ap(rVhCYT4GE5uUzt(v*#^7+WL|C=7l_!*m^_^LnCM0oj^8 za9dmJo`LM_fjzBl5T$r=pu2nK%Tz|6rxBqzzFXCVjXV>k;HP+=m1Vka2* zJ;6QzXEUnL3MwY(tfj@9KAYdW$*9c#+VS9fIfAs;D@vV+LEz>AQ<1vEqPOQv=eI;WI!PWnVc~E+1~_zgZ&?Iav(G#c#GYXoc3|;5|Lh-!peCw zH@VQUpmxx1Oip_)_<;nzvM4_}$FaEXH+2i_>Fj)>o4SO(I@4~WF8Lz$)GVRaCc`qR zmjZ6=fG^yDN#P@`*y*L_VEZ#{)C*|75uWmU@(6hoNO#aZuH}^RMhkhQ<<8d@EqZm| zlqvgOU9{-6J6rylHDz8TGG}sD*5o;n$h;|8cx3yB`x_hgf4F_eNBbKZ_J6cv_TCP+ zyJPR{S+{q(T%EVW9s+*>zLH!3*l)0_X&ey4x{FZ*+FoK>nBLTp6Er8EAs?oD^!~pT~x$wN{ z59qlG&fqlGWO&}3%6uLmeno%2c#0OXY0tKZm>WjqH*xfImKYt!K$4a-z z+3Go%{Yn{HU%-IF?>~V#3ZQ5`T~#ZdGJ#|%q%5%(V8 zaTQkssOH{n(rS0Ly*F*sO4=fAQ}4YOtM}q2$-Nu*ijA=i#>NFO#(*){U;@~bP(llk z1PnNVgda#qLI?>xRBNx^nR|C-Ne2Eu-}k=vLgei;XU?2CZBEg8a?C0fL8zLppO+oz z-BOn~(%+u)I|0@wa14W)yaezRgB*)aJKZ4`R7B$BX^j`luZZT$K!JZA3 zqX(1hC%4w@TUeCbvT;_rOsgqK))Q(9Xip=xuP)>S&xzKZOD~2#D+uUI4tv3( zqo-jfXo*W3e7N^5P%y-m>=jZ2q{^&WcQO2Wyh<)2WW@SEqjYp@K~wnk4O#>B2&#@1 zD})Qkit*=}J*oye{WZ`b#77~Jn)HP$aBv)2l80};7}XpzZLR}MF|6*QwQcotZyOC& zZ96}fzjU}Iu}qSy_bo2T>nk*GUF{z9-nfvs!;?nMCe}-!M|Ioi0~<;;shOq$b%M;2 z?u5$HW2>a1WMbdiqyW7(xUXiBa5m^Z#I}fi8+BNK3l^&sQy{~RN?HmLmh7H_L`z|3 zD7&Z7V$Sa-;uU;*r?2*gB_(AWe=)Z3folru8c|47>b`Wpv%Dve)m>nA7Posd`pX=| z1yD1kGT+=Ib9(PyUs1Z@+~~k73(yG*#NY$1v`%=*ZvZcF*^01MGa2V$#y1+|H*x&% ze>f^*qWC-!FHKU0Z_uZ(Mpvl4%F7=JHL`f}-VBT;k;NOsA+*8fOvB2Nc`Nl`KYA-XDqP?xQ011XycG|xUR=E9 z-nnz`T~oYxO>b}R!o%HNM;GSx-e=CL_bgblWPztX%S=*6U#TsrI@@B&u1>O*`izv$ zd1__Xfw>tOa}RW_JmpM2JX*VbAR}X7d+o>(Oe0X&8+g$>zuBy?wns(vi82Y^G>bESEd#^sgGoN z$(M+?7cH~oHhY7!G7X8j%~XogrLZQY4cs`;d3<$g!SXu>^H(leoJp;v^LX1K-{l?9 zNh7j@pkas<$N?yjgdI7#(Zp=lJN+kKU$W%l?R|Z>UtF@}^%MOQG5(Gfg@w!8{r>jl zg@r3R{KT72QvW>P(QzIrpL_}_@H6V;r*3_9ZCcveS8t6xVw^xN1whPt_B~7v6(dJ* zoE?@V>%S$4dxUm-Vtge!f!)q5mNul{7cYQP!R=@+{2cgu8OUrqz)zqXe!#B_VLeXz z^^J@?fzRi$Pr>I0r1st~GZY98*Si02=%M>~v-p4; zz|o}Kh#&`|viReFMmF-I#9~x&>d<4qdF-*r$m;aK{X#DEz!^oWF2m0dU3V}Q;J+d} z=ua3(VanQF#)Vldp|M1-_i#+usS=8g6 zp5zZ*wws#NA*g_xF=u#groTR@Rl9PmZUavV#fk#iV~2Yhu3fi0hk6KV%;UWC&soU; zPr($~F*Bz9YT*HgoR)NsF$RDWOLL7`t-&pu8m@h4c)=a3XBifxREs4kIgJ_lz4=B( z+17HNB&#CgxgvAdUKr4R1yaY@7`OG&`&ENXQ6 zTXGW5Aya09cg{#;5ts&WO`jH^Ar|C}g0?eVW?-cUM8-?8R6bd%QEhuGe4E zM3dc=TEC!R<#u~2@znePj)6ciaJ#`O0T>|0G{ToLqX8yF^JP|vEH3;%;ynLDghy&q zhHI3NI6CUhmR&w#R%^SFP zQ&ri9bMuQ=FBu#b`Vvf;gU`g`|4 z_89ZM4ESvm{od)x_vG-sG5WXnPX4wCzE?@Vci+TBbWOx#hOZ*+j24TMD6Nf-8#5_L)2Pv0oypCNP5Am|B&_53@UAh#_^X0~}*m0cd zXT#Uiv#(&{oB6%vjpvn4~Dm{sp~mgHp_ zw(zij8^r`Cz9Sj{2DkzJc^#OJVt`nS$ce@oGLA}~r>xVL*^z7VW#;6$tH4-qEl!uz z7<_zAg3=^+d4=YTtY6YeotxS2+Drb%NIDG)k>HsIjR^SB?~-&F;`i^gkraoYm;f8LCLi zc2@r(&@(Dqj;n;?3mp>yb&7F<*sy$knQsryT3iOsICshn)XDx-!)|T89Co^s? z2-wR9bFzoZ9Dzcw+g8}&4|Eh--5Y`qUuvq)5k#K~6*{5E)s2fmf2{7vOm7BTE2}v@ zvqP*swgf6(boD;8T4 z*Fq0Ejz4PQj^j(7G^owcM@AcFZS>RJo}mb}jW4V7)79!Dixs3)j1 zm|nVL?qa2|j>0n~K6`i$6p5gT(ua7)>u&P3@ibIFGwgZhYk(3xJtLwu+&<$CSR@g% z3*AIckY@k}E&~CMUZ+<|ueRn{%73BqS=4Ow?ZR^lUn9Og{pi2`_2}sf@4kBh=DGz9kpCqA3O>1f7zKNw zp(;9-O|&Kmar;Fn>;eiYX`E!nMM^T!|$xGP^J3fBBr; zB$O*-Z&lk=e52hclB;76>5??@Mw^kk<)=Pj=-}pHmifvy) zp7V@9^>zA7~_k`7;>6t+aRLMVZ)WX z$uGwLAycAJJQ8(KDI+coQ-kMZiTo$W#{O<>V_^bsSxi=Vy_cTEm6lhka9P9 z5&CXlq^^01T93BAgt!+-$D`DJsO3>KNZm&N{%lMG`6B2YB<6PX?`N*&EU6y<2ilUJ zpP!EUO-j5Zg$aft{vj0#WhVqy**$2(5W40bnH7Q`G5tIXW4<$O%$ciu7LSSllqS@V zN2ZRO6nM;Uho~)hpc68oPYjc^ya3OSJ$(@@XEzc?!P zL*S!y!8amy8eFk3SEY2F{YaS?I*>&nQJPu5gZ{pqZTshCk+I|7=B+q2a@}8Aw|my! z^6aYnseisOlHR@T&Sw`qgai-wurHq>Z)o2?Hxue`w;QO}+m5X$S+KURd~vOF;d4lM z`@CoF+Bx7~`&;Vk8vvFp@Xd69PdpxTdt3n%65T;xiQd{qsT+74RPBXWY>C{}Y*=tNJ%ubj5R@b-g=2>M+n_S3{YcwP`Is}=s7H&DzR6M)L+<)$y zLoBLk-!qGndPkOK2Xn*D(d(MbmaMvzw1%C78Ns#B@8t=(CwY>%IWIhTa4gqVH%`2 z8U3CVxje<=4?k-NxbahWz@QJ{q>BKtwP4K1+1Q1CmCWg9~{1<1C_U>cG zhl7!5{6mZ#JmPkL@GdL^JtHWcdu@ZY*&-l#5`#Lc-ml|q7L?4}*%*1x$h^n8H23BK zk4Q2PB5~Qu^xDwn-g)>9>0BI|t4yoK0R=H8uTJ*8f<4 z4FBokCu{5>)DJy==RjjcjwlXoffl=*d%tfbw!o!@Mn=7yJS#P^)XMrT(~q_c>JsLF zOb2;L#~flA3j%_jb83QWg*?x1SZ{s*CypKey@uf^hkB<_@q)Hh%}5R&TQgQA$@wMraf;$7lxu|v{|c~H~DU92GVs}a$* zJjD9o6Gui?1gne%_ebUH5_K$3Eq?7~nKm{~Cqs`?!)LI(KSNwZ58G=Tj%piKMYW~O zN=|N0M)!^Xo=hP@C}UXrV{*7dtc#%4#Yhn(cVLZ(xyl7?+hIVso0R3%Hv6HB5*94Sr>RnPE|J}G)satnR8Pv4l@fXD8aufW3omDp!c{7>ew}&5X(*#s+;Nj!m z<@4;JOUi(zoq_-4gn^yGF=O~4{evD4pr+d@GSSW0xP~hB>?Obtx)2>s2sN^q zyjmtq8rX!Etg{(Omb2GC{=3^qUtnRtQ0AoGPD~}(f$Eo8{w>tsQ)ll2+~M@wOj3(OogE+Cvn5bkO!wsB<~2eZ*i_J!NV ze}{ib8g1*yd?GcGdfQoMfVuX;kiId$p(Kg=gE28ZsBy z#dsflVkO-W1EW8LpyeupvJEh!T)7mm#3GaW{G<=o0+8p`qa;8QnM1hD)E{UJ`N_~N z<1fL)yaFfAPtHn3rQfPE18bMX@`YUXo$+!ZuP!H0uWUWUh0d@# zUK}qThdRgng8d(&n;T%p1s@~bHtwo{e_>itICp{Enx+%4^rt#ZQlnZP%NKAtl*(9> zqfIs|dHzLQtyrq!@pNGrrhdDaDVPRT1oaW_F9>Vk<28Waz(f0Bjku-vwB;<-S0#V{ zxlAV)$Mz5{GZw@ivc@LA#}&%r*N;zG4agYkBf9V3y)ZuB)oJ4cL!GjmX%h@w)tK-# zW(KKX{lBKSC}j45JkD7U`v6|Bnfri4b!e~h)ueRQ#so~Q{v_yOU6GN{=l2`+LX}(+ z8!zBa+oRjn2B|&E?yr|6ui)5}GHry;==~y(L*K>(TE_-rowmTA1LUd={3%GL@8x|_ zP^8Jrxz;P7FgPK;=KKR}Mi1a5l6ykme@3fW)7~iv@|^}G@wLWZ<4do~_GuL+S?po0 zzXsYCW~bvZzg5Po1P5zu%ce&7uNEa0~KSy-lH zjQHWlyC!OJN5vawk_fLWy}NvBAH^s%znD%iM2w5Ii)3*g0i740TkPZY;S0z}qdz*P z1#cGGKXh%g?M%zyV9Oa>^R-CKw6lZ8Z%hNhoYK-9+&qv-o$O&p#P~UEvW=Go^sdL; zmF5M&1IQV(kZsf%==!i8tl3q`u&)3+@f8Q_>pucJi9wWw~DEI(GxR(hX$zv>T|vj8D{_wvNi%gmj&Fw4Y;4m z*}+jg<)ltlh>mOxYMNyBa3Ec#C58Ulbah!kz7m~)%^8~9Dvp6`Rmk)-k1kXh<&f_m zXi&D&Z60ykN4#qQ2kaB9wfHCDh{}ko;HaM}8{AW52D%mYZfFu2+@%~^R$w7is5VsR zXj4ooZa{(eF}kM_eBg7++!@WF6719Y@vfpX_E&|E=b;}zy3=ma9%J5C-B>*An`PTd?13W^r&rueAH2hb7b3ROh!V zKh>q%6$(2vwuC09(DW46f_vv3Pu<;P(wpsVZyxc>}rId5=yez?*IDv& zS%xulc5|*MxTbXN^Si66c0a#%&GXk*^|T2x5);%Kv&xl*@v|6m&#D0~Ea{{8!7?lo zF9Hrdnw5vdz9|S|=W)2u)1&j|G=Vt(@Z4FO+g;zbwc#oz#U(Txtm80!(TesEJFIjy z71U?W+t-R4MfA?iOea1(!^=;a1Oa?P)e{736Xe8`An8H6LX6+5gwVeTo6^(&4 zFOC^tJ;QncXah&JdLXK`9PYmRVn$xvnl3nH&+UUdR$aR(sY0Uu24b%QvqD6eAjCP1kI0VZaQ zH!iMF1~x7_ows0gEN9N?Yf1{%onL7Rq`B3JJiSDe?hQ4Ebepzi&*^M(P+vZ;a3a=6 z1&ywR+HDUGhre2K|H@o;oQQvoULw$Bb`=uFjr$CthV*e3`|czNSH?A{5C4A#&-l@q z@Q|x#!czxzP;`JFa3n{y-bg+Pq)G;7;Kdk4AzRme;&0c_J%4P2yImrSm!@V`^scJD z_sr(45yU*F1jOVn7+H{uaY*Q{eQi&bGFj{^8Z6_1yS;U$(b1Zxr7L2 zOd6|qEMu)C2 z{tlWtqPao%-tbeLnSnDjh!w}o0cBH4N;G!^KUSBpd60TB7g8|7CnTzF-qgH|o@1cO zV4PS1Cw`a{2XW97SQ6p(2B$95de+qahwSC(wFe3(s0BK6vZmErF{{FBEgddMtSrq{ zWN;LM1e3#ScDlS3%@y9nqJg}!wMp!^ArMHIuhA9*NA5JBW44)C7R#d^Lp9-F#qv-&^=l%P;}_`!l;=>j zP|Zhg9)h2QZ-aVjgPeyzAB(}i4d2Fk{&EiIA$2>fAY$$b1PJKf@P^iF2&IPy_Bf(6StcoV2kmAn>B*_E~3= zaN}&fE#cSq(LS;VSLiH~arXI$dCe6{1z(9|IJFGM+Xz0f6I>IF2i8q=JP)!&N4B9e zNxp>LD|CsnSAXyH%Pwr!Ib{^ZHR;svNyVS(Rqsh8p8@=gFW^^TuYs3*rjagXjJ+J(lQ28XfM=&?ph~9NhA=_QAneam>_-@^gK}Ysh8JTO7TVvkyxee>uTOV4 z()IkahVo_XN3el!@FqeFRxfSv1G<3*q^uso#tG2;6+<~08v^+U(OPThh#}1?m0Hsc z7QaQ@({2&Q;!A!7kL|`T1g$Gk3Q@3@=A&gsA=J*`#;Ocf8NfIWV+&zy?2Q48;NE|9 zm=Y9b0&|EdHbV$ymNWxbl%Bwi6}azk$EB7g zx?tP`VT#x>@j8w!VdD!y_>b6ej(QRmdnnhjTaRJ*$gHv@SE`S;3E7mF$ycIsb4(8d*%!BCoL!9yv4xc_p9lP~b6r^66J`bDD zn}>6`YnQ z61)PV;LnDr4Mgw6zj3`^Hl$cy&5_aFkD7{xOYG%&KItmHm=!OSXq1*z*&JVArAv}j z=ykCPiCmlpu0}lG6ENQS$aqmviu0)91{b&g^`T{{7Ntf4*QDb3l~P|`xxHk#$n@x1 zZ<<&xA=oZ&VUomE+2@-B^nZ?06N@Ks|7K7(ug+@+L5;Kbzz#fT&23C|HRaiCc}=d= z#$4-8cWRQ?o0RINK5*9r4Y(C2bgI+q163|Zdb%Sy4Xe;7gYuw{09L>YJHo4EG^>Jj zIH}u-&nBM4^Z+*^c(={OXQ!xL_Yf~qx9{JN^z?ULp}%8--!rI-)*+!QFZqJ>gEBoA z5uX`?RjJ-Ot+vjaS`{>$^Q4}0d5RU8%^{5u{-+5wXDSqhM7}~%fC?4#*f&JyXJbVk zXodJJoOKUcRZLw%smG54exkHQ$3(F$a-R}v8=+61d+zpdm>{1&eGt7#?}-ce_`fEe zz<23vkaJu+HxW0uv0Lmo-UExiAYrQ=5uG8SkoGy!nM$4!jn)9P8Kw0tt{{=6*Jlwy zS4+Lg06`0&)3TO=1Zx2uA_nrZah5;i_lK0|^Swj+_73mcH@tV>5PNvv&|dr+|4Z|P zO$79xqR%buwSc24XG+=7sDn!{gjOm~Tz34jK<3vtH(j zyf}ywX?jCa_9ujxm;Te^rU!p)T+X91i_>pSE%)gTA*Ehsb^5HXa-a5~3fAXgC4(AtaqR$=$+qh3b6->$fBXm_jQw!zWS!CM`z*Rd`}KhycJ^U;Tj)7saR z_bguAQ@*C1_ElX9|BXnV_%*#Api7|0LpKe7`Qu@#2&)uK*s%&>L2|xMFVqWjQ*wo>SU$Wd(dMT< z!Q&I`1Y4CAG(?rDx-vm0fO3M?Dq8}Z;PY%%HlCEPPOPp<&h_YO;lPpu7gUF7QZjQ3Rs2ZP#hz^ZTr_t(ke~UaK2TqMtxr&@=Wpa6GnzP8Q zR=eR&dfP^E_Ic(P*3c9KeZrf>l8r;#^19IK)vx`N)D( zp+$%|v}wIY#LFMwh#&IU4^ubkly{;r_y_;4mP+9*oVcFZD=P#aC^;;%3HmG<2o|g7 zCWJnIe`(?C;mgzu)QjOCE*30%?_(50{Y9Bt;5^wjZ(iF;XF;kGVtQ*?n|KS^AHnHH-}ooYnkvwW$+yCXWxlmKhK=Q`K%SZCWs57bsB6S z;kqPnD1zYPp*GYe&)M&seaz?%x{b{}XC99{VaBXw9Raw0 zV9qT>)pH#|tJ%a-a@~ZL)pKwn=HvI46A)y6hVj@n-XY%=7U}tr%M=T-(nK~;K3vBR9#9`ZJ1ngnw8Zh=-Q ztnK!tKrtU-rq(Rsmhis)ETWfifGo))Ps zQi)k55~<7*sYNZ~7^y<^^eqyzS}0V*Tg>C+TJm8nv`#cN{t=HSopK^kWvCOUig$)W zUAWL~g21aLN)3x-v7np(l4icV=c+K_ay)uc#;w|1q>P0DGu`7zG>vcxA&t zk-y^YCo}`X1TIgT?{?%QD~{=PGMku_MUF(20n#~`F<}qTcK|o; zj>X&^ME&P^CdEkJS{aXMWvM{2&J(urO)qIr8eYRjk%rKnQa#KbG$g% z=8~NJ;&@>^vjLDnobBr@w%ftVkM6yRn*d&PJTtyEh}KXGhNROLM;i}tZGg6m5+!1T zLJ%iW3H3Jdv3@W>;&r8IK!_Rx2z#qn#(qr57Z`nZi$@nPl@iKugHT}5Sqf#MfA0ZfwO)(m(B;WjtJnqsmHhG#T@-IbM~Zt*m>9fNeaV_LP$ zEIf+W0p(#0sn%3$e;b}7&jhi<$Ya(El*h4TJbj$r9Dl4^DPgg{vn402l(O_{sDAyP7~5*utafyO^E}-v2k$wAaMJ(K z-Vp4hlH;5X3^6*OFS3_c+4z!LJxANPY?(nM5O75-);77aq3ELoQNDOYy?wzSP4Thd z;KDFw0d508qgXE?p`iQ`V>o05;E6Gr-kR310B2+?5oajAK{9{Sgwu*+w z_z5sZK8#TbV_?1;;Y&<3Q3x8$g3$tlf!l^lRNe&j-RnpWD~~M`?Y`~ig9#!|11HWO zr@a1VR(}Hjy0`@H2tVQbzw_dD%B9`%Kf`HflV6fr(3_$;6CuQ%yxOKI4WgH4aDp4x zq5T`E@4-aZX`xiP!k(tpfyqt~pzK_^eg)-+edjuA>AE3Yc3f^tgG*ROA4-KbT5=pu z6?p^jbTu3fq`ay|eFUDU^*6B|?O(T30o*tW2H5WG4o~Yc(~f6J%Ir~KCw`t z=&&)xogh#GFR*yrA-5&jB32vJVsL{KseY5)BsW@(@)Tc+Dn6bsh!>|gv~5s*1|r8q z+<0*R+2ni=Gjn&T3JWyh9x{1t$hkbjqK$YFQFZYWth7KISW0SaN z5C=L6KzzSE8dXk5jGJ+DHrhmv>Y-f5=?X#5Or94V3K?;nu-LdEp`l=QIrYU`yY_Cn zcJIrZa}4?Y#mHH<B?A=E41ArlVvSFIr4@zr@`f^4(KRIkEeQv7cA+& z7#!Z);p=HEQWj5i-?F5D^;bZJQ{(2VTyYj(cSh5WJ|DnLU|%U4_o_~yy+l#%(JY4M z)Z)pYf9TQV-t*e7;FVa^Y4nA2tEmsk2dX#U+dKRIjg{n*Q)n+0 z8@Biw`dpr_^3?EuFpn@muJhl(j|dqUQeZL$;1W0!(oN^_&<7s#(dk__?-wZI=-!!K zCssnif)fLgu9>{fmT#cXCg;g{1LvX7=EKxP`-m8|@MCf7%+f7StzGlv)>682=K7i4 zHDSFdrVio^@;RU48g$XzDTt&e5+O_&7^@yv`(YHnsCWY92tzle;;AHP#k`VbHC3Ok7 z2IoDAxW}uvXR~i9SlgQg*L!ihC2}6gV)u5_>TO1i0`2Ofz)>*;WHy6&ro09 z8GidJ(uzcNY%Lq-ur7{1O??ARH@|si#O8<#5-OQP zefivfG3_H~SEKJJ9&VSDv+3pQ{{=na(HXeiOmjiMMAoGrIty0aJ*WAG(LA){BE5gG zZ{%ArKB$yV1Z8xRn7+#)Zeo=E1mrG)MK_sg zLtlMOA}Q({H8W}nP^1G@r}bXj*1l&>LHsy3ckhwowTBS-^n(6}pd;10Z zr^KKBu5Dv~rCDy`6P3-^4QB*~_CV-Z@BEK12LJKXj%$ z#X_LLS&#>`oqYk?njV#`?V(NAAF1zs>_C^T zxGyumEvTy8^YZ5Uoy!NDIby3&?yFlmtEewmfBm-4sqd>7l$n$2m)DjIl%+}Ilt7E` zlyn3Yp+$Eu%o*#fP|NdcT2gBFjuk3Xa%}SrB53w!@DEOgkdy6wc(7BFfm?gB3=|LlI-_S?$0} zB4;wH%uhMea&|?nBrDNe)Hu6n^z7QAvJGeFcJItRuhFAFhgR)4+Ho88^{*C;Jckr# z+Yc4ZIMNArSxGMI`?X+(OYJ&I#g1PtU;o^Wax?G=z5HwCFvE*!iR}@5^!13_uIry_9?7~Nnt}2k!t>! zw2vZDM)6Q$W@S?OSf!19>hj6T;x<#NmY>$P8b}c02LQe;?1$*Pag1Fi2puOFFJEjH;LM@>^X)kOqDJiPw`r zEs*)V?bKIDKvu|&Xl_Qw5sqnSObRXz{Ka= zj{s-s@B(%lY*pHG9nCJA781rphXGY^KiX58pf^=^j1-hC=`2xN`WLOqUi*ucnMhCeoaUEx3?EyPgt-t2)IalQHb0<)l`PJTy5VOO@c^19z_ArFp^&f3_Lk^k_{Eg8OP$KZOg zT8iu00o#uhtSibGzpm}Zk?d&#fqjxLV3%Pj(UXg?o`GZhSRhaT|L_gEI}4H8y=m#W)%lsdt2eCf&0IUTdbA-^BQ?g=Cy!mTqjdG-n~SsPkFqp@I)7eQ zNxDp?i)R}u8cLSjR6nqzC)@1|)n)hffIyTAH>Z@PYYUd07;N9rndeOnRR$czUL6Fn zOXUC~*xKw&*e`si4_s$bVa7d+Chr=}>`bbb`s&uaCa)}(MWR@_^cJZ+Yw?{UWDo1* z%OTdwVr$5*a`B;%o0vUC{{`KYTERL1gF3p~QLmTU*ci+W0ZGp2H2jjtMU?*A`l^$}>a6^-z z4-2el4K0jNs5p#k`C-0l!1Z?#i}W6%!p|(o9y!qA9q@eUO(vwJYr6d9t50-xo>)`v z?^;tzNRz!EdIr25P|tqh(^NQN_`$FC&wt{`GBY=Jm(4?6>?=HB4)GqN#&ouw~L}a z_~p*(>@|;VBwra1md!3S24?Sj_|j_ktb99*O~%Tw+?x0T@bm=GAf|pM9tq2CD1{4H zfshD*g?6+sAr>L>dTVX_P`1J6f!H}(pWr(c?jjv^jQT44#V3|zA>t`4LV;Du`fWi+ zh8pV@TP1R+vp~jqyy3gTuM+9x@1`ZqmxJ$cC*~4GcUs+`j>I18@O^K%|2%1+l!iOu?kW9#u5K(Am&OP3&8I@kD?6 z*y&Z&O&THjX7~iEm5ZNiTU~9o16*01CEf&;TF6rg-dVYj53YYMI~Q8=WW z#7Gk$GfM;YuJ(21hjzTUwIHQt&Z^A?Z3otmdU^!%IE7M`S<#iz<6#K21%L$G%I#e`#V+b&01;%% z7d$E87FRyNM2GRph+&8Tz|55Xk7W2gbAu0J2awz6>sno^>pJ+%aNE)4CE*V0OC%&t z0mp5w%NnXm_LnB8g56uyyII3B-wZRUzc*0pwV z+#qvLP!F&h0dFFF%58a9>dr+FQV;!OJDtJ&ql)~b%6+a~^m-_N2VsL+WpRJgTaeWAnO+cNQ&sk3bZly8cSdZ#G zpqkiYFCb{8yYbo<(t6=ct?b-5cC5;C(E zs_W$xuIda_?|);*&Nuc~hq~7k=PqdS>g>-NRYIY}T{l154<2@jP@wWWr_1Rp$?B}g z)@idVJF`mqa&)Y}ddAW!mUNUG%nc*Ey9RGxnxDV)_QCdTvujMo%HCDAf!<7)L7ndm zHWh``s!&Nw(2}nthv#N0?-f78knnFwOwE?!8-@ z4Ycj zk5{T;5=uY=_%Nc%f|500DXZ)7_usLiC~NNCX8*i_b~{nzWi*AZe{9|O)~y}$&VREn zFxcIeOd_lHd0L$int7~DTb4s!y7Pt2Yc8zKRr?z=!%#0id;X1W2m9s>TtK|LA3?h3 z=O)%=AI4VV0air^sv3J4zyciSAZw8BB2^Y6E1e*gC;bSfV%ru%v zpPX!>zAKfP1o1{GYNWoVzM}p^{o$D-pIDs2G4#SHRBQkA$TQ^cccs+WY&9vnC=N9oQ22rs&hUfu83siwGWU#A>#^T4e*M&AO4;$S(+?+#Nd#W^ zPdF$4jsNzcc;!#|Z@&irE%(WJgO7m!_8}_VKAP}f_-{c^Ab$({jpM7M&Ob5v+wmpD z=I~z$JvOA@LifEz;68oe*MPdMxc5y=RNS#zqtc96O-rj2;Gg*zbPy-xH6_sA1_LlT zU_24k7viC!))%di0Pn_oNT)Qx%^6yfJd}xRSL%ax-r5D8+@o`5T{kPhCMs z&1W0bckJK)?FS#ASfA6@u%V-Kb)~T&>uf=7!G@*!oxXD!UW zzo4#k+p`;%J-@$EnwVxN)hO7nJ^(oRHNepFU%>!32Iv-yjjo@E;XR~(^nZhaeB&Tp z+!w{*Iz4x=kJ22P@y*k>22uGiGj2f1cmQ#A9BfvBx(ICy3i)ywM7Wmv3I_{KmZIM5 z?8`^-53s`ue6#Z7y(%Dm$mPQkPU0fc;C0 zH9;lZr~yAJh2HL8(|Ci*7ob^RktyI;yE-`zlQ2O|rJ*tJw~($U&pRxtU! zv|hr{GJO|?dlcduf2L{f=Cb?KD zhNP`PFsHg__2IsG4{R*2*m!Q>o@ zMjYV@j1CYGb27ZMkByEUo9%6F$H|r7=IkGswWZB9tFf_}MTD2P?wgm1Gb@p@cWzdC zSi^ob{9;B~=G=X))IUdthDPW@g+M!NfnO)HXa2Cnz|zs2-|$<;>fC^v>FEA)|7C((u~-Eeq!t=A0;RPwU&$)pz&4HA8he z>JxS&aB#dn;EOKc=h*gV{Jl7FVWy84f*CM@Og&0yiCe7~O(ZysA5gzaOp=>LsP%n) zvXJ^gXfR}aOXI%PJBfSZ8i5RD%N5jCmr9hRq=Zs6+O8B*$t-8vjm!o}<2(B>OcUc1 z|6%C?CWvi|=$l~u;nGZ;NE1mqywwfGHluWFgjg{y*wsFkKEdcVBsEm#DYnJNv-#5V zyhQ!mXqW17-{T2$WowKU*hn`g}(nW`XGu zMOPf0fJnxTLXw)^YRC@Wl3$xF_}0JR)MRGx@VTg?afL3?y-p@H~MO7MZZ z?mFwpF4m)x-3v>jiNV?V+4Ye>b z>CwK%bJfoNB>&D2Qq}C$({>lp_11%cvmDslh>wZ(DAI-)aOo=*5QKnCM)8NlFEVIo z7+93sy>Hl`TG`XzQ<>UQ?JfzVNJa9vjI3X*=-l0x=Bn%&=&5u`lZ)KJia@f;Az!F< zCrVT67nKzBmZsUwc5k9L7aF7r5;`)=zztAT*i-DWnH)Z=(v>L3@y&ofI1?7?X5xKz z4&GHZhjxuHcT7zCALf>eHhrQOD^vLq!GoSUJ%!f!GTmK%wob7LNvKafPNh*Pi5;V* zN@JRoXA+5=`gAud-cdPHMC58TgIc7LDX1sUg)e!7{CNI<^4Iia%4Ea9mWptlEYQ1% zcbRj_PP7LYfN+}8v{M=3kyD(u2wmK<4`8`FMY(&izs@P)nS~;=353KIu=qk=Rd7$j z&D$A3-deRVK{5yv*VL_xg2U&pc3~C~!vena5bPhIingPtumq+#fs}>_7f^#h?DvIf z6@&Tyx@1@}o>u1)Q!c*6^5`>E{~rw|-krzYw0lNv3$m3&wy z3IAIg(q#Y_fO&zE!GBB85qr2I5(M8v;bK~cl}3t*l06d99jB;2y@-Ao|3^Z?uU|qH zcTr+8j=V*ap78s7sLM~y6?^1}d(WSqWcE3SItIOD2&`Gr6)kD^D>nP4;E!>GMqFco z#l+WCI!ZM?R@|SfyMA4;639%U=Vux!+eZr4KfSrg-MfE~`cS505l>S4G>%$JetTg3 zE~Qo}5%*$ZtlV&_w|2`=K|HFJ1EkpZ|E_|OE=uZhIhTIHV_mR2Ob{Gt!~PZnfDnG>OjXH>ad>H6AhT0N(3TQ<_( z^&nw#X#V!(9CL>F**I_YV9w!RC^-^^T41t+A-M>G4%nvrzWmku#qkX#`K2_@y^tST z0Y3#2R#m4c3MvWNz399P^@eVYM zgbIydVRITN|Crb1gO2qv&?ArbY|#t@8&P0)(o&MvV`wR1X7n$7m!j7On=(eOk%YUP zvllH3jy`s6UCE{k%LY!aDq;&1VqzWt;F_HF!gPf}g!Xt_3T$f^qxWcC@4DaZnE%-B zhP+j07eObc*xPQ>CFcMMcvF=#FE8uz_VqH=>^V#`7T7Oxk(2^`bu$lKEusm z?~sLIeYl4q(;Rwgi)ifn6~T2Pt%c#xZTKZe=|gD=OBZfg1Hs}oOLrC9v-p4Q>QcH& zUG5T>vWp-#t6Ekb>X>(YNm1PF?Vf&bc2P-PNA7}y?M2JekX@zkmgkNhXfveI>x1*<~)lvui1T~*di+qx!O(1 zdwOfGX>)5e-AWBx9LTQ$>f*5ZO0iNI#}Vp+?ZtRc(8N2`&15mq4Q3cqv`L^_yem-) z221ZrPd9pDaDT76aP!j}3Pw6A44HhrLX{k-4CW1%T6It;`Y|&~q0))3q4?t8`GrGU zYH=ewX`)-(E0)0NvX&0z1={m1wMlBU1c*EUZV@u3lsW?U8n1#5rNf>%b~F+fuFhs? z<4Wi=38xJFa0;yYVx)u7fMrn#NB3g|lyTf)ZY%b&HrbP`$%dd>l0luAp|GQhhK%M6 zEkc^C{?e+s_E<4bl4PpUWtl`8L45x4sjB?9zqRQ#Nh-M~iF|3QLjRgjCrGm8)+RX` z3Y=*!p+ThKEBxLLhqE)iyu9s-rcdbc8OVc7)N!zF|KIUH>QkHY?atCJUvgE*XwPp# z&nxB7sU(!WU{-q3x(638esEn;dh=LzaH!g)&_1k}^WykGCZ41+zdkOOr${}c&Fsu8 zn%i7t&=)lh=N0wjXjwnF7N%7!Y%4XIYv=9io^#jo{Jf>N^>=QYU2QT|_pYh;^#@Z- z>KsF6M|qY;omJkJVaQXPfiYv=?+1EX0`vswMNA!>C>K-uEu(TGe+IBxSUtXUEvP@>n0pg@#R`9iP3O~S{ zbz?ia%osH+!qsRD*yPx(fi)yk2T333Q+!mFD)lSp9rh^?hQiVzN{7I;@Z)hhjfcgbHORHZr-+1<%cSCv{N3SY#3laOL*Hwlc8_&@`sep&-N53nqE#3AU?dYh;Db>kvo^TrV zAh{mS2xR(1Shd5=zEZ(}cHl)^91(Suw!yGi#X=TRoWXKrg5JsXY0c^RttGj3OI}tm z7}RI-4N9dmSecQU@06yLclC9Zr=$fm3=*e=ZHHkV9R$yhw6J08+J5g&&De5oDU)tg;%j`%HfL)T8 zZg#=j&iwYg{Dp1V0*L}Tsfe(jAM?NmSyJGE*bhN(1SnWnu3dof8K6QqRuq*iDJ-F| zzd9!)ySl&Nq!{zQ1mJx_N?E_Gy|lQ}dj&SVCnrD0qo2wH*KsncTgp9nR+wtydpHnF zSOTo?Pu9W)ltJ$86@L=wR9tiK(oIFPPpv9S>sVLyZQc5IuOX)+JGZ0Ar!b1h+4j6t zRcQ9!wwmn=n$;hm9=^M*KhIkiGBOGj_{yl`tp9+&BOxXOre$hXj-kBB^$UGb zjTah%M1U(-F9hWrzT$ly^P+FkTC*CK*Vv|zT>loIK#+E`%cpnZ5RU0ywD8SxDMYap z+*H^Q6|hAaS+2`}tS+LFLBwdF7WHP>11|Q-K*?GqF7&{*0C-UB6x!qZm=p!(wu9?K zpEt+^ki1uo9{3%#nxANW^tsRf=it1z!S1O?ZB;y*^2IsV5?h}O1$80qvkBuPVE5cb z*iU?_lRWc`O!Fz`{}X#b_HE(B0q=y!0cli&0ka^26!17*(M>?*y@HUx1+y}Pfvim8 z&9s)l;NGs3oTkzxO)g*8=DNDg-RafUW{XIy=do%^i;7C{-w(@}@D=hFldFDFQQ3-F z9&h)KmdnF^T?`GvT{jEg-QwF7P>`@qK*y}mRv5njW2&FgSE{u36w$&t(By$s2{c0L zac@sDT86uc$yDe7G-$2$dav{o3#DJ_C+4!>M$|wGC2kWI?I?EBQw5tUeypKb-S*t4 z;EZS{J|Rm%&Va=T(Y;e@nb0yOqIYuO?r^$bL0_j=wO6HQj~?s_Eg$PKR|t)Y^t}3j zyVR}JdvgnNz52N_{S{-LG`Mp-o|56(#$7`pg)_(AsnD5qs?=<&Gb`0m>5f}q5-lF$MQ<97(J&~+Ol8i^+obGtGtepxEDP3ei$3> zrVxD*1#&Iw2!ygAGj6M(*vVDyzqkM5FdiMe;sIp8I(~M#&+i2Wh^XfeX2X2#9$L2p zg&kr(aKzm-t_JEHj2b>UU4x^(#EY5AwLo)&-h4oxda%LbBNi(Y#sFsp!fJ7wUM`4k z(CFd+@FeOwq$L2pwq!&(YH+9H$Q(f|@egX=pZ}!K)En6ZPcGw$c;bWvbMfrrqW*k? z&R?0DFEt3H*57b!YT}5#EGf~MYLTZ%QQ$I#9^=Jxnglwfm<1st7Sk+8=3se}y{OIW zZ7$DJZM3#{=gcRpxcWV&4Y(a3ehGXfdXELUoMtic%kTnp7j**l;gUvAU49B(hrbK{ zT9QxmpcuHv!UdAdB%kX2>@#!+I!{%x2xjsvn{Cdbrle5OM`_(#8%NHqFKs?cef9Xm)He^b1c!FdDvTv! z#c_3=w#F?z565M6t*@_I*_>M5(Y3kRQM>cP$mUn~*VgQLZdKRq+vg?@2~9dB%XRnS z(j_gSIA+bs)G6rm{cFtaebZd{3MH7oa90DaEHRkLlg=3C&K5FMgCRIN;^(k4Ke>K+ zwKi35R%WLY>(nxvL1IgksziLYgkv)eL!qduk}7H|SwTDXS2S&E_prG;rGlD{mH!WM z?*ZRddHs$1-YdyNd+)tvYuK`uCChutJ5HR~@ks1Adpcw%gb+p+gh1F7C?o_(*bRk* zRaO^t(3X}TbVDc5(oz=^U%%&ht|ZG&Xn*hf`F}otNMg&D?z7Kx&i8!JIT!PDl0*&Q z+)?9hs^#LdXzt)hu)c)88Ia8V54}S^?m1y@apKaBP10ABoBr_jqe26_hs|RbaeLSX z;fc%l3Uz^Xlu#5FtS^*vm6G+iyjZ$VC!tR^Y*oVo;;cJ}3XLZUx?;_lMo1}vfA6G7 zy(dv@6g&mFc%*~jCO4oP(4R>(d%=M#iGRD?f-A>$cG0)lZ{~}%GDy&~loZ>OKA0iY zmrO6`?Oo^-=j6%7bM!|%M}U(4mpMY)ZC2iz%g<3BPG-Z?mpLHJjd#Y_xH;4M?3F|P zVn1<7nj04C6Whe80U7IrNarpjQ5Z*7=B&@nqACR=zZeOGAdxe9NVmw@gD|z!0htxy zB4(M)T%uNctumrtW(HHK#3GeiN;GP(SyuULna_C5R-wyv@#ahRCQLc&oVwU7m71YU ziO(XFSs=WA_G@D8J7Vd#G}{?)>z5TIM{CYbZu_c70XSk3OIdVah!7YPz83X?bHjA zaB6+lg5^G>FR{{<(vhwU^+uph0ZUl?OPv z)mIN@My_Yp?J^Pq#5$4@`6oa|gn&gbFK_w((>|LK8*>wk%@r{J>;3mBk{z%^qf+~}EF6hso z=VR+4d)ekXM3DBJc0XnOVYBXOCF|X^=;)+v0k^^gelNzsl)Col3YqS~5L>Ifl6*%x zOWb7hH&QKW2N?D^rCm~KaAww}&Ga{a0Q$QKp-OY~gG`q*KL%-%`4RG^TxJwl;YC6x zD^l|f5_U!ocG1y*OKDPy3uXLN_%Mux9{I}A5s!wD=Z}0zGBe0?q8T+KJwyfg)X)eo zGvc&2kWeE~DtFvSKUoiU&KnpLgu55>I!IxlUf^BG*oO{9A}|^0Y8UgY7ZyvfbKe#1B`X7 z@iT;%`_}Xx9*ZKvOQ5qZrU9d!oC1s}%XlGwe1XmdxWuLsT?_~fz?(pPDU2haJ{SO- z!|)G)`al-XbqhiMC}eJ+q@o)GYk(#d)?2FjqZOkbnL1Y28CdqfL^87MQ19ydlX79; zHb6s(K)l-8xx0VS)$=``;C;FhleqinYn%4Gc1>en(^4;ho|*Qs?;Y^lIqhGbKlXp) ze`k1Ph`lwJU-6Y*_%xI25}E~^9|x@0^{|fsUeW+X$=Iumh@fSXVUR_Y`1enAgW#4=Be2O-F&R!MBHn1iCuL;azF0ya}O`S z#?iC7T4S$SSQZ~|E2e5X4N|sn`;cy6=NIrU*xhrEY8ED-U~mbC+`3_h zy?TD&c%j^`TYqM2vg^QeE3bR&P?N}66X;ihFtev7K!cvu7Ze@w|CbM$%!|Xiox@&KA(1tq0)x%XL@~nP- ztZrdY9%oVD?B2BLq4i;vnH)7;J(%dLEd`La$vqCv@b<%778`!6;1|j*8oiE-P*U~- zmima*yI@C$U#KamZZ%LcO-P6Q;BDKEHJUZtAN9{iFfOJ;+FRB%wfppjn96OE@TCAE z6M2omLtGEzLJ~3eXaju)pK(U+$!Sh{PgWs5P``V8xP&iS?sue}lK8BjUld z%_ZZ@z4Pwa+%VMcj@iVam3J-Q@<^O2SMU{TMQwSc{{F_KDdbWxe9dZy2w?`jTg=i> zyvi6`-tKDzb_4X$0-Uq|VM+5Az>C~jWOM~)`e%rdGkX#nW3UOW4x%t&v8g8_ z)NgVoQk7nTx4o&bp>^9Goh75=OWaK&1Nax(V!ozQ_1L=2o0lx_UleXFw~NFoLDbOP zw=y|;+ltVglt^ccsys$1%xQCa8JdOust#Z4<}SC$Q4M<<#;9SMuL7(ZVz ztn-_tzV`7b8(eQ_uh+u;SO#lhz&JbVwh#K8ac41iC3qHqy?{;NjMtkvkK`Ra^HGiQ z1zTE8rsmDPkSk9qb=UguAr7{UeDKzdzqmP-I{MCmP4|!cMYaUFA{hpoSz6L}WzW2; z7Woyc_tIWu=)XV7>TwAPd;>eb%N3%if@LLb>T-t_gzsdv-uGR0o*#S`u?&3Yse;P z+W*qFwJ#j*0!c>z4);0r9{5i{%E1kn4g!PNPkg2`xCF8YbHc^Q!LpQPnL3CuH zhL;a_wjKHQuIdfLoyG=H(4Z?TkJ;*0r`+DowNHrz$5qm6>Gq29&Lb~v-1N$!4!J$3 zU#sRxB`P7u-@CQBYxjZ@@FV;N=9L26P>5NTOwbXtYaw}|A-l6tkE#gJ1r#}{w*dzx z-j@S&MX+3wjMthAqyPZW8{Scu7XFG;$YK|9epzHzze8_|7I)|& zTbjt{b+)>T>-|j?<+=(84=qWJMs?-!CjUnA4^Rs<&QtODN*?jLOf#ir_5cfF6U7h| z$j@uR5`)E->1&LMF{{RwP!TNz5gMLK4*o@rg|4(W~4FsqUDvEZG+D z`DLWTTX91=8Tkx5I)|E(rAhCY z+i1E=+4BgLM7KWZ#XX#@s6Gv|03?E`g@_KB;cSrSn4The2L2Rs3Uo0ZW+bK~HPD7( zvNUHE3PjrhhQ{iAv0edTc7EdZyCy5DSEbzMiVmNvT0MCel^^D-Wjw3eXnt(!A##x^ zu`n9!ju;eD;ulkh0*B^-d=%P3zKS`Eh(*n#X-C^+EB37!3h0*@j~e^YFJp`ojafrD zi+90ug7BP~qn9hi&^R*wUDz?mLj-g{Dl%~G!s6NtNvfhquT)}^)Mz~>N!_U65)>Vn zoWwk--wLWmcBh6OxeB66GCV0q)3Rh}L8ZA}<`fg-7tgWZrpp<&6dE7Y72<%$0%0Vu zPt$oefC~iz6-<7nsu0`|GaHv9zP*$$(#GpLyi0c*RLy-OrH?*4xnQ2Xwp2IS+ZA5y zLcR-co1x4mU%oKd?3aJ<94aZabW~l|8bIHz7%caae}lF+(x-6Sm}d`X1htvdGS-B0 z8=lles+v7at4m5BJv;d@ZggHZZuHBO#P@Uot1P$C*Dq-k){~=!yAY^^_{z@O8eg%M z;g*EO$YItfiIG`@pTED~pWW0Zp}+$a-v#p=HKn?L&+7^gx)3FwIxsUEm55EhYLFg-5o3uqV(-(XX&N_L>tX-02?=WZI)^-J4e*sLz zg`Rm)XZB}kI+^o-aXR;;u>y!+0rSL~Ot+oc_c^nWMHps$&#cL`^PLeov#3PAGRFIk z4hJ%1$Wxb+hNc=AYX;f|f7chVCxK;&_9Wz40nG#*2@p9B7pXKe0%vK**bV&`_ZvMZklp10ARW#>0Ud1_@|{5`>XY5P<|z zB+GLA21Ffq*OtvYiwOSC4HLWg7dM@|ra7mO7xC?bH{N(~-__S&e>L&#*6Ux}o?EyJ zO)tiMGM$@a=0VOidf^`w8(%e5~2+ zNNr5@T{jR23|zY)wXxmdZXS!j`6k&D=-sgQP~Grj*K}&UC|$f)({;^b!*vI*+At61 z4EA6C^vC1|*aHyVfcF4{Bjto3N5tfYn;ZtVFt8t3IAWGmB#i6a)j=mnvkSD=dd1>Z z#^UccCdlCbhi9_i{<3WLGg&C!3;GFXbRF~)-ObE`GBCibo~Dblp$mgr z7XXUN6>T=}&V{qPJ?RB)1JSrMhvYkpR^*J}!VlBNK02FElD`AI3ylL^#Mxjsz)|oq zfw1;bJS`&j%(P6R*`m4@uQWa<5#njN7-M&9f#ie6f$llv$N_(giUXsGUV>t($XNo$AK}8D%5^YWp#`&wmAb6z*8_N}xOjwI__KuOQLaIk_=MgQtVQVt@4fDy`FyhV@MatJ*`f>`_0x`bF5fJzf1f{W92*U z9DFtJ||*smdwgB>tBW*r%G9JAtp)WzuCIm--mOh(yD~o<Yq{tyz%EfTIOlSx&sKWNUyY z{M?1V^c`Q5#9@MHlV#dEi!&6Y&j6zt%-U<2bD|_Ox?zTPmDze(Rq>T{?jZAUKTpbJ z5<1p*;n#Ryg8jA&IJ8dC!MR9VQNnfQL$?*I(A<$i>S0h7VdNZ?ILC<{0jL5u$eVC^ zXtgyWRfi28o9oHBinKte?R3?2IbH3QcDa7^xy2I8Y$Ew07!M4XUYD z407xH;19w)afBJSuD1!wb&eObrHL*#Z+|xTiG$bqi*EkJuNMJ9v-RNG2WqM7i>4V z>CZXA?p5*n(HfJfX0$%OsyoObxNZ}cnNY82`ZMYxaEuWLkC7D_MFN;RXhWinh`}X> z-3j&t6A_7ZyD5KXXnbFbcEPb%*Dg3T8Ws^`5%-+c#LDN0G*EG%bg-#dV)APBHm=yj zrv547H*CBqb;oC?`lA~jT9^99^6-{wmnJysTXM3hacNQ?TK~xA)8K13uqCVCsFD20n|{ zLNYzg3BvavMK5_y`mvcvRk)B*C>&7Eq#&|6!Pm78&dpqLK364pgkw{!)!H~G_>e16 zbvrb8j%aw(%6+a-z+npu&k0;Fpw_($AVS|e^`1vk%uo~fc=tgDaW@T>v7+m=*D>Ye->1$)^wHz9=n)rt&3_L@` zuTI+#+F4w{zv3$c%?Z@&nyzJShxTUG@CDt-nl_?9(=SFBY&zO!Hv5p0GrlFGUiiGG zx~)G1?j!?pCpEBn9OO=dFSI1LYcB@8CKn`W2`t&0GC)Df(!`4PVpD_DAY%*tz0O(P zMDqc$QupClDeSGx!f;uq2gYX+67ZFgQgSyAl-hOV@?laZcQ#ASVE$VnO6r>3b7Q0+ z=QG?Zy)ZvP?Da=t1uHXfdt|(|nad-CNzC-5EPDwNKV5RukUtoZn1yX7mqZ>r(7kw1 zyM-Xkb)$8QZmr@PDu-)v3|El+r%pz%8Lsgzi}@T;;zM5b=vAriTPignO}T=rv03cC z=Kc~W3h1bfcmm;BL0uQ+UZ^psHZc2r8sI|m9Q#RR!{u_*VVfpVHYMhkaenAtwsu2s z?fHY9C;)zP{OEw^*#0CYrVH4Gfoi8Xx#JsKdhgsfYM`xTzp!?ATm5av8D2WhIY_<6 zv;m=fGk`6=SJU1LB~;D3d*JX$Y3IT7>w@doVo#K^thT@MnwvZWN5?0L4-BLG?(E(2 zjU7p`6Cw5R^y9bHZyT-^PMt*i6nOT46W;+bT-YA{ihbY|2TAk5k>Q+nLt7vuyc{F^Y7$tPciq9EtMKS*JE*r?0=- z*SNgSY-?Ix7p(Hym3mQ=dwA)R;#JRF-Aa)EUi)YR<;FhL*pBo2kG#G!ihL0RC}y(l zB*A%}=p&Yc>lAG77Rc?iAM_Z+(L;AxItkfKP9;K;KgT68H%C8v|Hu=Qx83@$CzdRE z;$OGkHu=QJWPI&COPAigE*@WZ_tK^Jtc}zEP>X$8942 z`2ED2P-)O$3Og14MOV!Ozj=uixQ5~6{bVWwE8KbO;;Ss8(pXX-UfzXFW00qSFR-3v z{S#aCv%Lri)5s*7OKYeZcmaO}`~-gh>ygy|%yli)fDd9^p~gOljW01ii1NiAWo)EH z>vh_o{H;q?pyGLK)YWs{4VOA41blw+!p0I-AuoT2iN_|%NGy+<-VJefa`yLNFBtQx zVK7;+mYGYaYcwNZvSMkrQj2t2fOXfKV2NSLP3Cy9MpGQ8-v>Qc1DAx&MLeX{sC^31 zY$Y6C{@~R!nr&AzG08fHKUIM~U13H~`SNQSWtSKQ_14_t2r3~gPtNUhS9fFm)&=S< zbpp=pG~oJAf$T(1P7pc>Jz{hT)Ne?E1IGujB?wZXo|?=g%lHkEG_`{p7m>8U2PrLG1BpgiaOlnN&^hR0@cn!5V`d3iddO>SICuG0-N--%Z{2$!o8% z$cx`XcU&Xnp$Nd4x*Q+j61*OPXS25hIXyd5Pu4Jidem0%_D^Qh2Yr2PV7KQ#x%$6c zP5dasOSqxC5&&*==7Eop&jqZ74VnpNqZ4q4w9E>VTZ6+qUz|-yAoVm5sW7i2zZ&`} z%Ik#{o!vkCjK)0!)aTyL3}6mp%D7CKuA}>OE}epW6)axgr8xfX!`VArd@02OMx>L? zp8Rjj3WXjNOW~3~GIPmaJa_3h8ML1TYf@X_g0XU8v}VMh%i-U!VL9fm5Bn?hrOU1t z8Z^OqEvr0D)o}_T3T^K4kzZ=6+p$uGIXYOWa=DOFHFe}N3ktcyX?0e?((rh57I)L- zb*{_IK~Ai%0l0%Puo;zk?OA*lU=4^dKtzg5U=bEhHaf?cM0O6`l&jkYN`>hVLB%VE z_<|TYk_{2;g%H6ZK*#v@>gC5qe|G!171o(Z)kD^9KLiw>l^PvVlgFSjm(-6mR0e5* zwW35tUY*57%vzHNf&*Qh%>a@H7w>5$KAQEuJkJW+0Pvf~DZjRPFLc`^>-;M6fav za*+OC=3*(oMj(O=11tT*z5a4f+o~$EY-S`#W>}|#>{nr3xOwV40QGWqr=1xPir|4z zkTg4n!9p&_6~iI?PCVwzE*opOf1cF{{4u>?YH6U{k<=JWCEh9O9MXF*m+UI9OOSgl=_R;*M*{ikYe4@sZjDcYqswRjrT@s~KKo{6CkveX?E|Ge~*3DQ6O6K`s#_ zZXs9%Vs@W2HFQ8+H#nSU7L-Ymg&~Sb`r|C&A97_80;NHWb80t2-$C4IEc>Ctix5caelBN)_?hv zr7WpzTU5r{iuyYN{YCy|U34OF+|03UHBBp|yil8(& z?ab7k7xfJj^H~pG7>b3+>t4X;a|vwlZ-cI%4{QvCa-+q{{-wTsYU)p?sO8MR#1i^m zGD&!tub^{mL|g*6>yeLP<|h9t=rNaD;0@|97B54tIdD4QrN&f)a|{K5%Ey@37!w9N z#X}29{t>r%8|!0e6Ja{&AR#ss^EK__2XT?j+r&5lBY1)s2u{iRIPDEYet+0>m+c8d zcZ5u+8JqsP|J19j2L#DGh?`@{K|d-0{UVRZpgKs(`QaWzAwEQqymOGN;=-TB$ z9Yt|^TfD$!c#b&y58?nJ(6yF$Q#!~-y49dOb4F%{r;*eDgy&AfcPza6Q22r(P_1Sq z{O?RZ7aVmrMzs3tiLYykX8LU%v6Yy5NlQP{&h?p|CMGEvJp9{zRrK4$xevi7_uI#m zdKUR2$hT_nwHv|5g8B@%Z<@AO1!p^LxdM|9AVth^P4m^U5KC(pW*-a>fv61GEbF-j zk&sX5RAs5)iV4AAR^PP9(a}&kKWWQhdoOxr%jR1gu}3EQZe3T!=E=ompWx8i`uS0Z z+#;%TkFHu*zV^jR!@^Ztldao&y@&`-e7$U-$#c#2<1CXeVQ#1~RF5|Parr8!?gfPK z?(T){slK{B&uq}y6$Q5()EG62US#<#T@h|8Q#xAKHdbsIsRD*LlItJ@sMldmMNr`l z;x#iK(P9GEo>Rk3iV#7Em8p(}un3GF!tsEFzhq4yVc`j(LiouC9@y!EYM-s$tBwyB zcP$u9uQp<7BoTAlIkd5D-b@$#XL_R95KfkLY+?%CGfv8|_AV;8~R1>K&d zh56vYJqNo0mJ|Y?z?eivFs7#`NtU+l&}-YE7VQn&UOUwGnX`3G{k`|ruW5CX#QO6G z+F4}Bf%EH9uvAmqyuI7tnNatI<-~IgXu`}4L&0imwzdT{gJ)D$zdGe~rdHSA``Ksr zqUSShU2(+=@T?Si>U7>U^c2;A8bQqwFJD6-F~-;>lmOb{!VBcZM*jm-g;+;aJ#!A z%k+%ql0!FdUN<(^2{3fe*7;k^vLL2=cKDiNLzo&`7mU{5*OaW9r?==8 zFlP(tdBiO+7F-h)@Op8kB3K5#-Z4r4K~oGiVhq`eF_XEX81Uc=H2t^iPnh2@bCW;) zIf?jo$S<3|r*Y^pXo`4?1C&D*FSvT4yWK0qOwW+K@i}+(=%Yqx0MGK0oEmo;A zUs~K4B#$w3%@V@%Aokk~f(>EU*a3 z{X>&oTP#&7h!L5X?f@^~sD)_ND(KM?X^{qcc%#q@O52k>pZV_ z-d5O?JtZYQ+n~=*IJ?K7P2j{xnOajBZvv8xGglJs4YJxEl1bbPYa^qr#ZGX5L>qw{ zE0q^?#h;qk2<0j2uX^r^3%iF4L$ocVtK*J6=7|O09bO6mDv0Zaw(wj_t1n1)3JE zrb4C@=aaWpEV}xzV|gTX)nVNfd2f9ynvb^qQ9lo=*DAI@SXqN6s&PlSm~VBuf%Zos zE;Hvi$P+GjCqPTi*a)bb_FNV}O4Px04DX91~@fZQHtWRcc=yf)fZ8BpqlkDobt@(lX> zcjmGrzRO&KOIEfXcx?w7`S{4d>bgBoZ$zo%Za%~y%;@a2z&^ef&ffng`MZce*dY_B zDcb6>R|mAlP(5*-LTCs!IE&lkmdL8RMn~^j8L>ixX_j;vBv^Vsl*kiu$3fiLTaA5#T00-ER(C^9b?r^n|pn}-px(P;TDKF2-Wrk zt(6|9T3}b2%G_2U>lc@sBsPHtQqm*YGLIx!t*}lYTNpmZOcnwvwR7*jUDGYF))VLU zH~o*PRsPJeS3G31e#-X+D@D~ z4X8T9-`ETDifgSgRnkFbW(Zzbd=kGO?3v%cYuB2)#{#9}cdgp>3CUm3Q9qx4mH51T zU}sau-o-)sG&}=6PYauF34G7+K@i@DeV9lOhwq^>8l-{2<|cL%kQ2j$3uVO(0ixrR zgwDWyRFnAGdm^`TY^8Vfp7o@ea5D@I;x~{mVyj3-zvm^EXly*^onwfqF}J-;{X_-C zs+%#$gi%It>?02&fQ;nC2qvHmq7)+Q?-}(1?Zhp5FT+LoCgElXC{*hOI?X%b*)+rw zFa4fWOl*a@7Qy(EFur`4cu)_Jvz|)Qzy5^&HRYqKF1|uly^7a!E$r71;C;YnMrRJG z`siR~%p%ghWYx!&n;sY+e_&JP$E&`zbu~FO_4VPeZK|%`^tEC5{{B^9T0wgQP>pyU z^(@kSApa&@G--?t+Qlk>(>%bUygk_9gp|pMqBsaP$&{9Q_IN2@Y^qNiv7h%Xtlk95 zB$5erd2#k%@H4%6HE0}{eXczV*E5$?W=~|$I|5vu*@ow%h8LrTb@ab71%CBRfnWWc z*O%?t4GMeNOtIiHyMkVe3knD93WYs@3ku`;m^WR)TE_Z0=6Is10PPq3YfaCG4|K!q z%m77DmQTHpxTGulf-OG9_nt@HT(VSM*37U+7nl2{Brpu>b8Wo79SFKchM;@)^98;3 z+A`hez1`s<*FRw<(OSTovt+QQ;2VczDIhL$-Mm4Tj2?TJ9)HQ;EP6wr;})p}uNOGM zlDR;$NCPk|ZIIcd&qgX`$bAKJERX#McorOglz0WPQ1YqtGm$K2^p)8yu>U~6_Vbt7 zAd9%Ky-UCLrqP{$Sis|m3Qux8hDL*f`(U9kpTpxEVHe|e$qgdA%xRfA$|CiusmXA? zC8;3`WoGEjq`Jans!)@KaueDU1d6?&=0krFDJ5;gryZ))d_I@96TiFoXF2f!9U`Zx zhov^r)W8eFWZWo}|j*v*2z4O9b+AruQhQU~ns=X)?eOOkx%TW^7jhCO|>z zj$gK|X#|(gZS6~+Z(q!l=kpYDuE7|;>=?;J+-C(;81C4`$(X)zuwKHQ7-qWp+rlx*j%q&>J5vZKTKs=L4+0(Y7s%Bou$Xk&w(v{ehB^DWk!$?5d!~A(5mLmkQ z9HmIF#9{&^*JLmRG;i5RPDXoz9Uo+cNSWWeo;y{p6b+dLvqbM%vFi%0BsfG&Te|JdrP z{LeniuU>s@5i#Mj&>xg{M$Bw--qabkInr5mn}&?hSg7kLAq7uJE2 zM9kFhKm8ro5vuQ8Tvk<{fGC(^o0?5NMYWx$KYj6v8ihiBD>t|jQl`HJcN3pFPH{Lp z)0hh=pD;^80$R$!T!;^&1=7L-X+f0u`7xEDz)t_&&NeA;A#|^>o_SbaVX?&Jr|93P zBpWt}G~`Dx|K#*VcnyVt!x;#@RfgO!BL@B?OBe zkbLYfv}tZ2#>raNGem`@Lj5{XddtyUZ@qJaR7rkxD?FRZ8=#Jp=-E7&0mP%v9$UE> z$||BWd>Pz!d~Z5#PFx zEi!6LO~>@1l&`c~C2dclB)WKL(7utnjeL=_3+`DpmM1gq!vJv~ux33M`UoLIo%lNL zhQeuBKRn!3Ruu?!tZOhuY8p^C>gXT!^|3T^qg5a_sfGT*GUC@Sc|xWBeb5naX}4P1 zUWq#LjX~laSUZ>pioo-LB9hRd%wP^+bt8T$MMTGMTuA?lFfY7uJo@tTp|P={qlecN3pT%I>)!tja%?}L35gbXJHHg4FkY2gaN4De;=+9+DQC{{UKThW(|nE7`$JT zem~r1Xly9m6{&%@+TMSkexLXab^O*_kKTfo4EC&-Izqn9xf*A8o*g!a$(=b-bI@<> z?+y{q62jPlf$l@&6_Mq~`iBmCBYd|~VYk^8kcv@j2)C9P0`h9Hlx?J6D7ICMAMEZq zv@DkJERYq61fl}c80#vH%#Rz23I?U9Ml%}YU(8T^carj+k_AOA=fw@c&;sI|y zZme2TTTw}INKy)Sfza=Mfps#uqSejUNA*GpE7(ZA( z6b0%2pmjj=hFnxLu^`}R2Y(Q($f!aupuYjnA5|%ZLOa7L=ma1JEn+W{KZickX9Whu(vuWPbO@D9PnSqMN_vf02n&8f z=2sE7OJVy1ACNjiMPRQYKEq`&5b(J%7Ic`3p!3ytbUYdzKiY@R*el~hL(7*B4UNMo zJGeX^Uw*K&^Uyf{IzBNmzI!DwjblvlJ6X0T)HH0tZIv>e$rMvZ=$R@<4{pQoFoJa!@XU zlJpW&vDyvlP=VOQG8d{`MwQc~<@0oAhsx+u6_Wj`a=9g3ViQVAVlBSl{G`Q_oFDYo zhh1WkBT!*imKcn(LWNKc`4YK`NHJGYD2KUXWD!CeP^Q01pHAaAj36oapK4 znrN|FTPHeu&a)NKa7pYPVwtn9KNuUXb9@3D7t1&Db$Hfn-oBiLu zd9h@IcQaulzYnGq$i}}HwAq9OY$RYWskpUgI?x@ zJ!F7Av=-VzHWS>b0IHhFwcmN+J7g#O*HhmhQ+L68x?$bkh4-L+dl`F)xTU)3ymuZ( zTT9M2vPwIeiD&4xh6!Y3Pc*>y?JXVf(L6PEoV5_1192GybqyZHjhyiDrRJB~ptE+M0CnG7D&MWL`1Mbus%% zxMR^QF?&LL|)rw3`$(c0p_ zKwQn?8rV_+PhgID96=*rE+dvteX6&Zoc6}Cs>FD!$D|Sgj0)1;OWi=#vY&$eAVnGI zq!@>)B9H?CO;G+{Lqysv^IpB2l3U4qGhiYI+yq$y_Ng>7_&O6sg@tk|&mPOa900 zDfMvqTw%gsm*so>K2J}hE)le5=hp^nUVuC%%;+E$McN~c z^?M|Fat7mk14W3tN($(2YT}8wHVWvgy?$wBXi>FQ1a;&KDxg%iK_irNS&Ib*mB{1y z++dgH+nQE2hK8Fx=Bj}TmnQ7z3wZ!fV10mi7upZQ3&xJXQZ-^6x^3JZCK zVwq>XLaxy9MSNj3ni07t>GmeXvZUS+aw#21et~XH9VLFieggSObA20FD5I+i-|t`L z+fZpLp!wpSYKO;cgW|LEqtLt)I$I<~owYg~iA0G>Z_=2cxAG!(ufZnc$lXb|J1UkZ zjHaj?46-^=0rXZPlPT8A6>`*Fp4p8E6-IrAeq!D2p=u7{AH3vK)-Da+5D3fl38IZ%-Ss)Pbq)NRa90&z8dbw06n(7e;%TUOLDm$s#h88qYu&&a4JJh9)K}lP;3)-}??j@UGoR`5YiCes- zLEn?E=4F+MWz8-S zt4!b&N6)JToumc01{Qdc6@QEg&ct*xDkt{Z16!bFwW+XBll1v3#oEEr!6m1w^tLl5 zaP&ek-%s@lwI$&6yH*VoUGx*R78Cm7(CG+d3P4+0>PARc^8}W>SQO-%`UtJe(5Er9 z1s4?=BKSr_aH-e3G-xpL3Awh$0iX=*Y6;JG2 z8FAMIwAug!m#y@Pd8lpR>5~5>yE*#+qYc3>F~H8uVlp$EMefXQ{;X#i!rZK%3oLTI zOU;$)jC@m(-{R2A^^*KE`s8p;azR+-@z>N_D*HkWC1+RxNWfw)R$1+0>N>rr)GD&Y zi#dt07MC^BUW}1V}o!oq+)gzdEm^Fo)C(4V4^r@STkB!`=?v369lxMZr^5;TjouJTr&+|@W7tzX&f zAnv-0fNTdHr#YKVYy<#Kph(JsqfqAM1V<$x<@tJ%a$xDThLdt zp_ID$!2U`6^50?SGe`E{9uUk_J}I}8w+Y=P#ll+Rfv^IsQY)#wGjumoxUsX_Zq}E3CAx#8s3eu3!Vq>FS~l2eNJrYXLg5OR z)EsHlugv8rjP0fwE)w_&pwN6^-F$r~n!LEc*CPVSJ>D(ddvK2;;Nv+b$ zA>2=-D;?=h@Ksu-fCY?~%9BAn@vkBOx)5R_hfq#V7$Z0>FnLBnp>bzqfPkd3143^~ zv;WXe$_VBR^9T048A&dPe3>bCbsh>14KDS2g4*~{eZyFdVHvJ&Wr%70P{LskWNCu3 zq+6~yy)n9=%@q)t%Pi?ySX)Zz_f`7yi`s2TNaS2nX>VUd9XB{Yr($!IRc7$Wa};k_4Lcn{s8-~T=-{>C@Z{x!gSJqdWM7)5We82~b4 z&Ldl1fGqnQ@tsD?!#La%F?7wuPvQfW#)e@1u9287(o4KoC=eGku1z`Pi&iX($G4u{ zx$f($L$Q^&4Vhvk>U)j^hFu>;y;S5mV>IRMTH}xeq3Wu&(ywLBm#QUPmZK+CB~|)j zEo0X%?7C%BeR$xCs_IQ6Z7Q+F;nk&{8Rc+-#SlpZSO>(NpuQJi^vBF_9WJTRo(X=f zpjWS4vSbyp^svs^?^ zP=oBJaiveRHq3zW?Z6!EN&>7NMD76uFMU)2tpJ5?` ziUO^piPk-f%eh4ZxjlWE3D8%0DlAp?9S$v1aS+zA8SL`rj9s3ipCNfYQ`8n;ahbfV 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 zBEc*Y%p$=o63imOEE3Ej!7LKYBEc*Y%p$=o63imOEE3Ej!7LKYBEc*Y%p$=o63iyS zY!b{S!E6%DCc$hH%qGEX63iySY!b{S!E6%DCc$hH%qGEX63iySY!b{S!E6%DCc$hH z%qGEX63iySY!b{S!E6%DCc$hH%qGEX63iySY!b{S!E6%DCc$hH%qGEX63iySY!b{S z!E6%DCc$hH%qGEX63iySY!b{S!E6%DCc$hH%qGEX63iySY!b{S!E6%DCc$hH%qGEX z63iySY!b{S!E6%DCc$hH%qGEX63iySY!b{S!E6%DCc$hH%qGEX63iySY!b{S!E6%D zCc$hH%qGEX63iySY!b{S!E6%DCc$hH%qGEX63iySY!b{S!E6%DCc$hH%qGEX63iyS zY!b{S!E6%DCc$hH%qGEX63iySY!b{S!E6%DCc$hH%qGEX63iySY!b{S!E6%DCc$hH z%qGEX63iySY!b{S!E6%DCc$hH%qGEX63iySY!b{S!E6%DCc$hH%qGEX63iySY!b{S z!E6%DCc$hH%qGEX63iySY!b{S!E6%DCc$hH%qGEX63iySY!b{S!E6%DCc$hH%qGEX z63iySY!b{S!E6%DCc$hH%qGEX63iySY!b{S!E6%DCc$hH%qGEX63iySY!b{S!E6%D zCc$hH%qGEX63iySY!b{S!E6%DCc$hH%qGEX63iySY!b{S!5k9IA;BCH%pt)X63ijN z91_eS!5k9IA;BCH%pt)X63ijN91_eS!5k9IA;BCH%pt)X63ijN91_eS!5k9IA;BCH z%pt)X63ijN91_eS!5k9IA;BCH%pt)X63ijN91_eS!5k9IA;BCH%pt)X63ijN91_eS z!5k9IA;BCH%pt)X63ijN91_eS!5k9IA;BCH%pt)X63ijN91_eS!5k9IA;BCH%pt)X z63ijN91_eS!5k9IA;BCH%pt)X63ijN91_eS!5k9IA;BCH%pt)X63ijN91_eS!5k9I zA;BCH%pt)X63ijN91_eS!5k9IA;BCH%pt)X63ijN91_eS!5k9IA;BCH%pt)X63ijN z91_eS!5k9IA;BCH%pt)X63ijN91_eS!5k9IA;BCH%pt)X63ijN91_eS!5k9IA;BCH z%pt)X63ijN91_eS!5k9IA;BCH%pt)X63ijN91_eS!5k9IA;BCH%pt)X63ijN91_eS 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ͻgzEstkwjq)Y z1gzEstkwjq)ͻgzEstkwjq)ͻgzEstkwjq)ͻgzEstkwjq)!16XYb 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 PZr+dgQO8;Dp|bx6Kf>?& diff --git a/docs/build/html/_static/fonts/Lato/lato-bold.woff b/docs/build/html/_static/fonts/Lato/lato-bold.woff deleted file mode 100644 index c6dff51f063cc732fdb5fe786a8966de85f4ebec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309728 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

F}woT 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"bt0}@AlIHaMn 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 diff --git a/docs/build/html/_static/fonts/Lato/lato-bold.woff2 b/docs/build/html/_static/fonts/Lato/lato-bold.woff2 deleted file mode 100644 index bb195043cfc07fa52741c6144d7378b5ba8be4c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184912 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

x{o9f|7gEmo2*wv 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 z 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≶M9Zv|5`G?V+t`dH%WEMXqpk;_3Hk#c)5bow}^>GHdOg=@5pYx=49b13Ly zrJynzDRebu8rnRSaDCBo@|9g53n?-Toj%;)7@=UY|Noy}Ma{<^CTZW`I9PGat{6t2 zaDw4J3oUfqrNwG{*q4kXjQO#)d%E?I`6unq0@g?R`EPa45Y|xpiRX?D^@^QqfPjrp z`1!tA9;wNGs_VH%HtUBo8*1_;v~g)avtfdTTKYQ+w|_T@R1|@!z4MWbhw@XQ#{r8n zFBZwGL~*S&Epds65DN=S9LDmC%OD``N?Ja3mq@-KYHmwkg<5GJXlu`C1U~hF;}GUt zEV_svDDRB0pxY;h0iVB6!+t9MoPjoUN2{tnNvmp71!_;3|F6OefCDX3EgVYSHa&Y~ zU}M_~aPglu-?Am;VW9ar%IVbGkq@`{Tq5wAt!;iU^4x0?c1udN{X&%ux4V&|KJ4W8 z^-G%6%-Mk6r|NGgPt?6Gz6|&!zRxhaV4(F`GZ8rK4j__!PX?Q7^;*CQ1mh5%DvR6C z?e!IxGMT8~xw^^9NiPO6=pQ@SRODn~Fsq8jD|VmScW#=CFmzog>dWa9ISWyD>bX6* zxnZ#2TwN0;af`pj^X|5h-UR+^#wtJ!B@tKiK!pf5VjK5!fZLt zzX!?qwZ#;g@k9fI%Zc#zkaZg@VAO57d!5O3Ue&0UhOx8iALeb!OI zRvYFgz{G^aMMxIXA9Q8%Ks(ns{Ng8LwsDMRXV9_!HbeTZg#-D*^A&&kWc>8s7s|rI z=ynSoO>Z_is~m>%blt}gX#It_>e2=$ntV|mjceXzzfgYM^uWLH4|qn@T1Vx$y+(mB zr_oTl_0pJ8ZR}4L)pN;gX0*r7gHMr7oprWF%6?*dA?da-61JtJNHWwP^#36TIN#Kl zHX65H`VqI9GB?_ee-?H!Yb?FpyYadu!+UaImNKBnpF_sZf6ay)B7}^R1hodXNP?eK z4UhCNG=>^Ra(w)t-DekO(;#W^pCZ0-I00f84I3?O?7O zB%x)J$UIIl{lRxlFHDbkes}4Xh27aeZ@lufb-e26$_f|NxU&YtVUJG#2x>BxrM_VU z1LCx!(BL?8gDF{Vq$J)xNc>yL)$=)7I*g|%)(&0-;j8CsUSvGa_^S6DVMpH zb8v0T>G{!ohHICj*>1fftNM+zZtws0KCZLv(IK>C_QT1EH@fD(8$2iPv~!>Y4cV!P zSZxtr!>L43HPE+4<>ftO;-5eywKK$aj&E__@NZF$Ub2O545&GURXRcHZf+@4Q*sxY zWp376swn?@b?YH5czxG41HZOjt)n5ymnfWVn}~l0v!W9f09Qb$zl@4>j!2BD$PIWy zG%tHq1co&qIS~ddbB3;u@9Dn~xdsYnr5s8^`W*i3m@VDEnOB&F?o#)Rs5v1eUah$w>#9 z(>0sd(bH1S1!0KMO_Fm9-(30B*tAvEi!I8bj@kN6Z10~`=5`eh*Oh@TSgc~GARo=W z<9@k$y19A1xpq3jbDRG4LD38!4XW&4?>FThiiaoIiVSTRo?|YzPPb-muv!>myEIOW zt#-bt4&U((ZdDWewL`sy(~|m2`BN@QF+Q{|G9ZCrd6ta$KC*E*TQ_G)_3NXw*H*CY zbEL^@$wN>XGaLNe4bu&0*GJMUg5zS=CN)LQyqHShcMq=mcw_4h9+%ozHC=V~`$%?N z`DWW#&TppMgR}4%!g!nK9J8-_y1Mk=F&oUrC@E68`W@5@I(HpHbiw(p1ld9~Keub^ z`qq-^lE(GMES@?`16xSt_yAA?b$A0;omip zd;&xiYAZP+=TTDO@|)ZHN*1!_{_wQ@i@zy5-UG{`HCbB7dqN5AgmRL@R~5 z-KAmZe7J3gow^U;9@e_R+QBj&j{H=={FCM3!&hwmwI9#NDh>OjBmRdo%0A!wRKaXY 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 - - - -
    - - -
    - -
    - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/build/html/cli.build.html b/docs/build/html/cli.build.html index 0f756c28..5445ad30 100644 --- a/docs/build/html/cli.build.html +++ b/docs/build/html/cli.build.html @@ -1,70 +1,35 @@ - - - - + + - cpl build — Common Python Library documentation - - - - - - - - - - - - - - - + + - - + + - - - - + - - - +
    - -
    - - -
    - + + - -
    - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/build/html/cli.generate.html b/docs/build/html/cli.generate.html index f3ff8fcc..9b00f933 100644 --- a/docs/build/html/cli.generate.html +++ b/docs/build/html/cli.generate.html @@ -1,70 +1,35 @@ - - - - + + - cpl generate — Common Python Library documentation - - - - - - - - - - - - - - - + + - - + + - - - - + - - - +
    - -
    - - -
    -
    -

    Arguments

    + +
    +

    Arguments

    - - + + - - + + - - + +

    Argument

    Description

    Value type

    Description

    Value type

    <schematic>

    The schematic to generate.

    str

    The schematic to generate.

    str

    <name>

    The name of the generated file.

    str

    The name of the generated file.

    str

    -
    -
    -

    Schematics

    + +
    +

    Schematics

    - - + + - - + + - - + + - - + + - - - + + + - - - + + + + + + + + + + + - - + + + + + +

    Schematic

    Description

    Arguments

    Description

    Arguments

    abc

    Abstract base class

    <name>

    Abstract base class

    <name>

    class

    Class

    <name>

    Class

    <name>

    enum

    Enum class

    <name>

    Enum class

    <name>

    service

    Service class

    <name>

    pipe

    Pipe class

    <name>

    settings

    Configmodel

    <name>

    service

    Service class

    <name>

    settings

    Configmodel

    <name>

    test

    Test class

    <name>

    thread

    Thread class

    <name>

    Thread class

    <name>

    validator

    Validator class

    <name>

    -
    - + + - -
    - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/build/html/cli.help.html b/docs/build/html/cli.help.html index 799dd056..72a8ee26 100644 --- a/docs/build/html/cli.help.html +++ b/docs/build/html/cli.help.html @@ -1,70 +1,35 @@ - - - - + + - cpl help — Common Python Library documentation - - - - - - - - - - - - - - - + + - - + + - - - - + - - - +
    - -
    - - -
    - -
    - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/build/html/cli.install.html b/docs/build/html/cli.install.html index 62948b45..991087df 100644 --- a/docs/build/html/cli.install.html +++ b/docs/build/html/cli.install.html @@ -1,70 +1,35 @@ - - - - + + - cpl install — Common Python Library documentation - - - - - - - - - - - - - - - + + - - + + - - - - + - - - +
    - -
    - - -
    -
    -

    Arguments

    + +
    +

    Arguments

    - - + + - - + +

    Argument

    Description

    Value type

    Description

    Value type

    <package>

    The package to install

    str

    The package to install

    str

    -
    - + +
    +

    Flags

    + + + + + + + + + + + + + + + + + +

    Argument

    Description

    --dev

    Specifies whether the command is in development mode

    --virtual

    Specifies whether the command is virtual mode

    --simulate

    Specifies whether the command is simulated

    +
    + - -
    - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/build/html/cli.new.html b/docs/build/html/cli.new.html index 84af85eb..c587a271 100644 --- a/docs/build/html/cli.new.html +++ b/docs/build/html/cli.new.html @@ -1,70 +1,35 @@ - - - - + + - cpl new — Common Python Library documentation - - - - - - - - - - - - - - - + + - - + + - - - - + - - - +
    - -
    - - -
    -
    -

    Project types

    + +
    +

    Project types

    - + - + - +

    Project type

    Description

    Description

    console

    A simple console application

    A simple console application

    library

    A package

    A package

    -
    - + +
    +

    Flags

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Argument

    Description

    --async

    Specifies whether async is used

    --application-base

    Specifies whether application base is used

    --startup

    Specifies whether startup is used

    --service-providing

    Specifies whether service-providing is used

    --nothing

    Specifies whether nothing is used

    --venv

    Specifies whether venv is used

    +
    + - -
    - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/build/html/cli.overview.html b/docs/build/html/cli.overview.html index c22903a0..9fa87f2b 100644 --- a/docs/build/html/cli.overview.html +++ b/docs/build/html/cli.overview.html @@ -1,70 +1,35 @@ - - - - + + - CLI Overview and Command Reference — Common Python Library documentation - - - - - - - - - - - - - - - + + - - + + - - - - + - - - +
    - -
    - - -
    -
    -

    CLI command-language syntax

    + +
    +

    CLI command-language syntax

    cpl commandNameOrAlias requiredArg [optionalsArgs]

    • Most commands, and some options, have aliases. Aliases are shown in the syntax statement for each command.

    • Arguments are not prefixed.

    -
    -

    Relative paths

    +
    +

    Relative paths

    Options that specify files can be given as absolute paths, or as paths relative to the current working directory, which is generally either the workspace or project root.

    -
    -
    -

    Schematics

    +
    +
    +

    Schematics

    The cpl generate command takes as an argument the artifact to be generated. In addition to any general options, each artifact defines its own options in a schematic. Schematic options are supplied to the command in the same format as immediate command options.

    -
    - -
    -

    Command overview

    + + +
    +

    Command overview

    - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +

    Command

    Alias

    Description

    Alias

    Description

    add

    a or a

    Adds a project reference to given project.

    a or a

    Adds a project reference to given project.

    build

    b or B

    Prepares files for publish into an output directory named dist/ at the given output path. Must be executed from within a workspace directory.

    b or B

    Prepares files for publish into an output directory named dist/ at the given output path. Must be executed from within a workspace directory.

    generate

    g or G

    Generate a new file.

    g or G

    Generate a new file.

    help

    h or H

    Lists available command and their short descriptions.

    h or H

    Lists available command and their short descriptions.

    install

    i or I

    With argument installs packages to project, without argument installs project dependencies.

    i or I

    With argument installs packages to project, without argument installs project dependencies.

    new

    n or N

    Creates new CPL project.

    n or N

    Creates new CPL project.

    publish

    p or P

    Prepares files for publish into an output directory named dist/ at the given output path and executes setup.py. Must be executed from within a library workspace directory.

    p or P

    Prepares files for publish into an output directory named dist/ at the given output path and executes setup.py. Must be executed from within a library workspace directory.

    remove

    r or R

    Removes a project from workspace.

    r or R

    Removes a project from workspace.

    start

    s or S

    Starts CPL project, restarting on file changes.

    s or S

    Starts CPL project, restarting on file changes.

    uninstall

    ui or UI

    Uninstalls packages from project.

    ui or UI

    Uninstalls packages from project.

    update

    u or U

    Update CPL and project dependencies.

    u or U

    Update CPL and project dependencies.

    version

    v or V

    Outputs CPL CLI version.

    v or V

    Outputs CPL CLI version.

    -
    - + + - -
    - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/build/html/cli.publish.html b/docs/build/html/cli.publish.html index e7db1867..4e9606dd 100644 --- a/docs/build/html/cli.publish.html +++ b/docs/build/html/cli.publish.html @@ -1,70 +1,35 @@ - - - - + + - cpl publish — Common Python Library documentation - - - - - - - - - - - - - - - + + - - + + - - - - + - - - +
    - -
    - - -
    - +| `````` | The name of the project to build. Can be an console or a library. | ```str``` --> + - -
    - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/build/html/cli.remove.html b/docs/build/html/cli.remove.html index 0f6a7513..495b786c 100644 --- a/docs/build/html/cli.remove.html +++ b/docs/build/html/cli.remove.html @@ -1,70 +1,35 @@ - - - - + + - cpl remove — Common Python Library documentation - - - - - - - - - - - - - - - + + - - + + - - - - + - - - +
    - -
    - - -
    -
    -

    Arguments

    + +
    +

    Arguments

    - - + + - - + +

    Argument

    Description

    Value type

    Description

    Value type

    <project>

    The name of the project to delete

    str

    The name of the project to delete

    str

    -
    - + +
    +

    Flags

    + + + + + + + + + + + +

    Argument

    Description

    --simulate

    Specifies whether the command is simulated

    +
    + - -
    - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/build/html/cli.start.html b/docs/build/html/cli.start.html index 150f9c70..50d926bb 100644 --- a/docs/build/html/cli.start.html +++ b/docs/build/html/cli.start.html @@ -1,70 +1,35 @@ - - - - + + - cpl start — Common Python Library documentation - - - - - - - - - - - - - - - + + - - + + - - - - + - - - +
    - -
    - - -
    - -
    - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/build/html/cli.uninstall.html b/docs/build/html/cli.uninstall.html index b0511681..38fa9a47 100644 --- a/docs/build/html/cli.uninstall.html +++ b/docs/build/html/cli.uninstall.html @@ -1,70 +1,35 @@ - - - - + + - cpl uninstall — Common Python Library documentation - - - - - - - - - - - - - - - + + - - + + - - - - + - - - +
    - -
    - - -
    -
    -

    Arguments

    + +
    +

    Arguments

    - - + + - - + +

    Argument

    Description

    Value type

    Description

    Value type

    <package>

    The package to uninstall

    str

    The package to uninstall

    str

    -
    - + +
    +

    Flags

    + + + + + + + + + + + + + + + + + +

    Argument

    Description

    --dev

    Specifies whether the command is in development mode

    --virtual

    Specifies whether the command is virtual mode

    --simulate

    Specifies whether the command is simulated

    +
    + - -
    - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/build/html/cli.update.html b/docs/build/html/cli.update.html index 46b94ee4..1a7d86d4 100644 --- a/docs/build/html/cli.update.html +++ b/docs/build/html/cli.update.html @@ -1,70 +1,35 @@ - - - - + + - cpl update — Common Python Library documentation - - - - - - - - - - - - - - - + + - - + + - - - - + - - - +
    - -
    - - -
    - -
    - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/build/html/cli.version.html b/docs/build/html/cli.version.html index 7ec1f234..4fb421a9 100644 --- a/docs/build/html/cli.version.html +++ b/docs/build/html/cli.version.html @@ -1,70 +1,35 @@ - - - - + + - cpl version — Common Python Library documentation - - - - - - - - - - - - - - - + + - - + + - - - - + - - - +
    - -
    - - -
    - -
    - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/build/html/contributing.html b/docs/build/html/contributing.html index b642585f..c54e4249 100644 --- a/docs/build/html/contributing.html +++ b/docs/build/html/contributing.html @@ -1,68 +1,33 @@ - - - - + + - Contributing to CPL — Common Python Library documentation - - - - - - - - - - - - - - - + + - - + + - - - - + - - - +
    - -
    - - -
    -
    -

    Reviewing a Pull Request

    -

    The sh-edraft.de team reserves the right not to accept pull requests from community members who haven’t been good citizens of the community. Such behavior includes not following the CPL coding rules and applies within or outside of CPL managed channels.

    -
    -

    Addressing review feedback

    + +
    +

    Reviewing a Pull Request

    +

    The sh-edraft.de team reserves the right not to accept pull requests from community members who haven’t been good citizens of the community. Such behavior includes not following the CPL coding rules and applies within or outside of CPL managed channels.

    +
    +

    Addressing review feedback

    If we ask for changes via code reviews then:

    -
      +
      1. Make the required updates to the code.

      2. Create a fixup commit and push to your repository (this will update your Pull Request):

        git commit --all --fixup HEAD
        @@ -232,68 +145,52 @@ git push
         

      That’s it! Thank you for your contribution!

      -
    -
    - -
    -

    Coding Rules

    + + + +
    +

    Coding Rules

    To ensure consistency throughout the source code, keep these rules in mind as you are working:

    -
    -
    -

    License

    + +
    +

    License

    By contributing, you agree that your contributions will be licensed under its MIT License. See LICENSE

    -
    - + + -

    -

    - © Copyright 2021, Sven Heidemann. - -

    +

    © Copyright 2021, Sven Heidemann.

    - - - - Built with Sphinx using a - + + Built with Sphinx using a theme - - provided by Read the Docs. + provided by Read the Docs. +
    - - - - - - - - - - + \ No newline at end of file diff --git a/docs/build/html/cpl_cli.html b/docs/build/html/cpl_cli.html index 0d2fadfa..150a7797 100644 --- a/docs/build/html/cpl_cli.html +++ b/docs/build/html/cpl_cli.html @@ -1,70 +1,35 @@ - - - - + + - CLI Reference — Common Python Library documentation - - - - - - - - - - - - - - - + + - - + + - - - - + - + - - - +
    - -
    - - -
    - -

-
-add_transient(service_type: type, service: Optional[type] = None)
+
+add_transient(service_type: type, service: Optional[type] = None)

Adds a service with transient lifetime

@@ -246,11 +171,14 @@
+
+

self: :class:`cpl_core.dependency_injection.service_collection_abc.ServiceCollectionABC

+

+Aq1ZC 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 aE$G(CU|1!i59f8l(p5$wO>}o<;eP>A8!%r0 literal 24303 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 VO|#gXQN9EYr}E7x4(c`5{ue&&hwT6W diff --git a/docs/build/doctrees/cpl_core.database.context.doctree b/docs/build/doctrees/cpl_core.database.context.doctree index 76f12b8772e667c9f1e10fdd9cf2d6bb87a42347..d558987ce700573dc4c93b21b97a2f761aa05061 100644 GIT binary patch literal 36249 zcmdsAYmgk*Rn|({m$Z7@vYnNbak*lRWbLl(vW;s=43T6zF4=1%*&&qVjC*H#x2H8b zGnwv@wZS%dV{tDoZT!TpC^u`Ra-(HWS1jL}w>*2g+^GBZ8NWk~&}RKT zbn{pz?bQ!=IHmx#gN-yT;D+Yg*my|~##zTk$+;iqj8OvYnJEXA+Cq(){?jytF)WJ&Ae4U)v_1poi-cwtws8&<7{yzoe5``v(DMg zoEfLFWY2h~?fT3d#!;>{+Lh9Ax;E3~&{YkLGApXuQZPw^EnhRN)8K5Se zgMwUh&K_cl^JZ|uxf0yJ3V+{%zkBg_AE@kH!>KzZUUv>)(8Cz?8a7<5SL`!}UTXf&0hjWaUmcPtvr&p=ek_TGG;@Kyz-qb zG(im}_B@R6=h6@!BZLLEV+6E2qEEySHH7lr7ELvn{n1^AZJT)H z+n?RYz<&_>=!~$jg?6pRadgfR^=xN1QSImukejD*8lu82x8a5bQ~Ed?hmT_|wydUO zO47ZD;68b?g<05k4s!PXhqL2ZvgXTCgZTDChws;BWmI+_m;|OD0sp@=`9uQWwCfev z_R<;nNG6(d=K(+XiKDfuZ?~+P0m}JX?nCZm+ascfaRsB`=J8u5_F=;Y|9}sHt!*xo zjar@({0xZ(ar5s$g_qO(7d8S?VAf6bW#MkqOG{R@-f>=Kqqy^zo0uS_7_p6bVxMW& zs^zNRIm=&oz-rZTIS$5433Z+#OobS9oO8TW-)b$|euuq%#X`aD^Na9rFK(xWq&97G zBBuTYRP;wuMW2@{`ZeY0u&a;Re9o$i8Jrv`-?0l7=^+&&?sV4IwFPvChSsbBn*Y;X zJWZ=C5x)4@q9{GiHqO@?U!TZAu?A;KbdE<|WVeeb^l`gwhJe%i{qh`l^(xJ4}SXJ^vgL7d}JpmZQ#(o*xbl_Tc-z3R=~Lx3n&-pQ`-XQW|E=oTV) zM~tEKPg(4sy9>Q!GKJ1-ronUfqg@`G=e+Jb<@~@o=lrnG!IR3slDV5`*a#;j=Q5ZD zv&q&T!vz#~GeMYixM;(4K6kOkdz7H5lW!#4y}rUe=OnvRc2nGkNUvKGNN0t#J9{J? zd={2$-)U43_Z{lLlVC)l_;0mw%2Fmn7|)`!pdK(QLRLkQVuI~U@F`<&#muRSdOxc{ zj%qOywoBjZ$&VZ}w?tZFn9-;?deZs5kRzr76Zre?3Eg(pXxkdLod;JG06_HZR;`NU zpAk;JBgTu_LSGyc;hD;9Xm}>9s}f)xk@~6TQ5in05z!>&NJ`Pba9gY!6&fb|5|)k! zHHXC{8RF9=3-1l-b?4HJdJleX1)06OOw(DiT9ZSUw%_?+o6$bxk5Ae-6_>YCa zpVsQoJ?Y|pCKZbFfuyX99H0A(XscmtO=OOv9TVwP?PT#6!{dH39U~)UYfkRManJ#c z^K>XG>CboJ(U8})%hiQyIW+_l6aA$7Mc^LwOx$0_!zdZUl44{FB3Wr^aa^B>GU+xG z`Zs-a^?F^r9@r>%iJnjfJb>lii)SJ^;ryZVM`26%r@7J)&eQOco?(|M88|Gmx60D< zkPi6>i3O!3+;;C9NiXWqwsNR}v*2$GfL@~BDZ$#mK zhY%h_P$5N*f(l}uso6=e5pSRGP$=UE`a zI*S-=U~{;yeJ2=a`r1w=_vGG4tFU@^aZdK z4s)arwHFrbmR;dU7F`Cjq$M%MIest|Yxh&=CgyTU@AwRwf=rpj@1v<;x`>|y5chm{ zB#k@FjZdWm?Be{oPhq@4W-H?S?$5!6{4TE;ZQxZ#=YwQr3*;qe=^nx02kMV@GkG*i zz#Ux;8qa;{Tcy-MtRud3*R^pX0Zr4YDdtM8!U0Rf%B5VJQg%HQD7e=Hw)<|Dmp34sjA-z`Iu*&wo7HlsxR8!pb~tytsuc?;*&f%v#(vWQ%iVo+`y;! z7<-~VhS^;2P6=kH3G;U~PlX?b?c=MEC)0}v`vd8-)j#OAtBN0P!<;kMN-B3%{78x* zAd35aqE946@NGOBs7c$VrMwFYVfqvFt>%MeIX~C9&lr7jgl?tXy zuqB5QT8dZ)aTnx^$6)-oFd-jGhuc@o#lhqcrj|Kl!cI*FPKF(Jb7E4ny<9)IEusIU z*X8;_pt0_)L?mvB)OORBjqS*F&s?+H7`HER4xm5+tBPS3eBnH>K)}h*gL9ll5#>0c z)N$xU1ofv=QBTc82uMMuT`YfKtIaSs(Gfu3NCjka(OefxPYp;w10s@`Q-J@_eG%OM zF%|a=MCvW!pCb^HZj#6bjooRyHBf&xmST_-giJ9=z2P3=wUP*NPqt_*3+*`8u6qUK z#|p>Q{Ou{>OZ-i1lDlR-C&3%3#5M&*xvdAOg;>4%iAFMg_3AP`Q3YG!V0MF@Z5xdj z0%^c5a5XAybOXP(5YC2=9cTlaP&?UlzsAP2H&Hv`sU(>6U6EeH7B%at(BdT2?#4OlmUGV*qF(caFJ=?;0lg zH>vBFd&!Q^7H+luvSU}cYe|8ZkbgXY6H3mf7T(P72LgRN@W(K2qyG#U33D?=pvTep z$jWFC*p6soljuzuG^N&{oSr1Zt52z${3j}Br4&ufbI6PwnRnRuTtYvFQGR)(?qi zrscq=BdsD6QSxRv0+nW}%>}ZrXaK84+A-@mzoJ)kbrG@NdrgbOREw$~sLj}1-jv17 z-A)@^p0)ZLP1dATNzwU?^LS|bQ!GINq8qTpeVMx9F>sJIORE0LS{UYjuLoXfYwt;T zg%eW4T$wlt!+9v<2PzfbrZ=h5#tqAFw9J@(Xuo0tuEJ#fQ7Zaus1e_x`a^0m>Ha7F zgMS&y+N>wlSFprQ7~JS^+ANrwCK2!g=S2A$%6o{UNnYdVMYP+<1F6?#nk0!80W9}R z=&gIqIo;a}F;$|2t(GIsGw!Q|B0NyqRVn0>$CyvzF?kB~MgVsswU+^0tYp%?DbjnG7g+(NU;0o)<9%NfA!C4_&#*@AMRQ8{W| z%eZQM7bq`rK5ar%f#^L%5|LFX(xni~VA1X_u)VN=t#wq@sAB!>+7R6y7o;90%#H(_ z#lp`qk`odw6}=cTe0Wd@86v+x;DpGp(n7lxY063nL4rnw z!mCNSNF=i;*N2GhG3Dwn#yiRGk(=rBt>$(K34*e@+p}wPm%h~A!SLd)tLzDw|BY1; z6$Yd1wbomS$4sj6z{}}^@XOc|Y|SGZYnA<6TY^=iz!r12{0Wj_Bd?cjneYpdR$+tJ zWtosbrKy$j_-RY<;~Kzf6s{n2(M6GRPSW?`3FaA1j^yAeEl3GS={`-}#8=G+TT&Q~ zbF!BZh9i-L%0Nk?gkQqM`erJzQe%{t&@{)Q{Hy7Z(iY_fq-@&u{Zuerv`r2r6yC+l z{y0tJ>%;LE!z5li61Ex<{Wrq2?CYQduMc!79x%R=qT{s}VPM|ioDSoiK{SGpvPby( zLPG!M;y@&PO;XYTmitNcHpuW*#7NJuH+7%N)IPw~W`B8z{u`iY?+`s_38S=6Ia_JP za&IK1!s>Zu-BLl`r)f0854~14?zM3E|EuuvmdKEe7;vzKk9QLw5&iXNZZx;J^K>kN zci5a{&5+EYmww{DlW3PS?wclrb%vxr63B?pl~PA*+{C{$&n_aU)Z|c)L8FOU7FRNj zESrECTSYYuE5V{AVWr||rQM#uqLTIQy(IiWASsrFKSWo2Ntj85O5aI# zJb$TUm$0p%iU6_3^o{`pfeD3=Mhw{3Qj@Gj;|b@YlNjr$LF9^cRHI0&^EjB8Kh`-H zX%$xTF5VY`O4A54*7>vs!2Wtw1kx+0g!~gti~NC3Ku7nFsT&^02SRloD`fVhvJp%U_6(gF76<`1Y6GS#^kV-8z;bB;*XzCdb%mTm_m zI3J#O!os_v&=?XW%5}FR92s5S_5FKRXl#A@H)gXIK!#5?FkQ{}z=Y4iQ zCpAT>S++Rt%aK+QElb|QN}#gN&QE9nt0RaA$xARVtMX`RBh{@ohCE06XPOrI=i-2l z?(@`5d@fEZCk`)wCcV*r!ST0KN0YjM^-VO*v9|fo>5$UaHU*??y6}1`m@YXDIh4@a zCNJ6Ik`PaIBvhx3jDerVzK4ho8WUvp6-*8$rH(T-XR#ItMOOhb@H0HuCL}r3XG>q= z?C(Cz$bw{|=zks+a(W+m--X5p&jaau78Q6?H4YWMHjQX?G zPVT~|uV#e(m(NFf4O{T6Ys|lmUZS&$Nxp7n)K8*a&Nb%u5yE|L2v|FB4%V-52Sdq%ipTT(s#`p-c@&0Z3aG+Q71sbiT?!U%)w87f#~Qt# zX!Q713_V`KE5AP;04chUqr!(#(NM<1>M4|>7{%3j%Z*YCtWj1RpvKS8O-2fJV5+z~ zTY<$tK%lbInRPb>ve9K~~*_p#fE%*t>CG>p?w;SYb zyH&&8CcjZG(Q&@?D-J;(rqf|@*xUAnM#IPPoVM}f(IK{p&N!~Omr7?)8ne{F6GU;X zY7<3ZOX7P9b8J#PQD0anJy7*=q^~?w7!YLx{a~VHHybU#RI^Xpwa(GCY=dLf^zAU) zW}l%mg7IaJwx?biX2TVGzP*SMY^EdN=(IibYg*TZ{O{C{C^Ju(ddhn(b)W z_>MsZrzg|Ng8)Ov`_8cu)J-hlSVvH#S}EbQwuR~$EM~FIR@-lsf=6s^6+*SC(q3xn z&+Zdp`GYECu2r{c)ZrHX1k|m2#Qxw>)3e)^MhOR+;;pSXqOalEC9@@$lCobqUG=I| z!im00m8xgW*JvOT%Tc8e&H*-o!FV{#Oq@vqsgbXh7OFK24rf#Eq$>cyv8i;-0ys>) zRlxF%IJH~fLPWQbRzY&=ix9+Gb*bui?%cYUZEo7l5}harT`Y5g;o!z5;FLD(skNI^Z#j59=()MIP>ys@ zPlE2RR^3BcEfU#Nc5Aw7`wJWf)PBbCmudhuj^n|hMHS!a935l3A(Klbt)6-S@-*AC zY^%47L;22>oa&-e!(Yhn`dWiTf5Ka`plJL=IS+)|!SBUw35U&DlC-<=sY)uNuv9=umwBH^tyETN5b zAo-~dWM*mJu0VyCfr4Y>tj4qKQXCm>ohsQl53*LmG3_`ZmyRWWgl&@ttwUIA3&O0O zWfP(Y-o1y`>+JezI_R8@3G)JdhG^nL{8cE6UlJ!mazWY#Bq3@(4s(YXRp?mrhhP9h zPwC(u{usS2=o>oJl1@#>>!b8gTo>I5D7`yQ|2&BK&|Ri~*3<0}{%NyudY29e;0Les zx99kqbNsEjwsR$p0p}e!6TCH!%AUhPpCj@dOKtb%0rSBYfjK>wsp4TA5bohq7oA5i z_qfY|kNp$BdqLN&SMZ$*{y_?SH-(=Rj*#lz<e-hM#Z6zsSu$k?+!nU|srHEdPWS z|I8MrHUB^dcS_v%V(2PEBXbMtuyy`ICc^#x1tlEczS#e1<a!Sh;B?3n!k?q@vyvdSyNl@4;-t zIxWpNYTAJDS1*Y?)NhZ6dK_0!d86&2{^1|Ad~!%GjrJvfS;ID9$}2b8G@*6a#&V-Z zpNNId!|fS8ET2CHW&UvI7|b`${lY{5wfA7K2w)K!xY=9wVC~i8zyp(-Xa@OL+*`*? z2oU((l(bj{ZVac@cLY-22#2~~A-&BJ8BMxRlBJmk#+&5fz$Jc~sDUusakn~2ZNrrM zqcBVSEsWFi971=uSEWs#CENu<2u#FGtp)#eg|-3GXs9M+gIOgg&9R z5{^*&B#y*BqjzCBGLxGl2NF24<(SPs?W&BHGFh?bVRQAie4HT21Lnk7V5;IDG(0+X zA+6QBa&zL|1WqJQ5;9+#_* zK8_Fu;0Wa?SHcl$pTv<^s`|om=5@$rYR^yqFWol2a{vGU literal 32352 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 diff --git a/docs/build/doctrees/cpl_core.database.doctree b/docs/build/doctrees/cpl_core.database.doctree index 07501f1271f9c6098f8b558a464c607ab35e86b8..a139fadc67a588aff918317670e494b635e30f8d 100644 GIT binary patch literal 46162 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 aGwJ#@uU$v{TSMrXs3UPpI1Z0(^ZyU-0bct6 literal 33983 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 literal 136885 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 GO8x+2`_Fg) diff --git a/docs/build/doctrees/cpl_core.environment.doctree b/docs/build/doctrees/cpl_core.environment.doctree index 9e53e7de57798794512e7896fcf8d176ba58bfef..2886977289b0251044c918f5490b70b4b63f9ce6 100644 GIT binary patch literal 77091 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 literal 60496 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 YoOu*$Wig8h*Hm$zgKr50F~!XP13y-)yZ`_I diff --git a/docs/build/doctrees/cpl_core.logging.doctree b/docs/build/doctrees/cpl_core.logging.doctree index 6fcb149858c4059f49edc9945c3d237237e91969..28781205b4a46e60f94e61d89625f8eec80f499a 100644 GIT binary patch literal 129812 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

-
-build_service_provider()cpl_core.dependency_injection.service_provider_abc.ServiceProviderABC
+
+build_service_provider() ServiceProviderABC

Creates instance of the service provider

- -
-

cpl_core.dependency_injection.service_collection_abc

+ +
+

cpl_core.dependency_injection.service_collection_abc

-
-class cpl_core.dependency_injection.service_collection_abc.ServiceCollectionABC
-

Bases: abc.ABC

+
+class cpl_core.dependency_injection.service_collection_abc.ServiceCollectionABC
+

Bases: ABC

ABC for the class cpl_core.dependency_injection.service_collection.ServiceCollection

-
-abstract add_db_context(db_context: Type[cpl_core.database.context.database_context_abc.DatabaseContextABC])
+
+abstract add_db_context(db_context_type: Type[DatabaseContextABC], db_settings: DatabaseSettings)

Adds database context

@@ -280,14 +208,20 @@
-
-abstract add_logging()
+
+abstract add_logging()

Adds the CPL internal logger

-
-abstract add_scoped(service_type: Type, service: Optional[collections.abc.Callable] = None)
+
+abstract add_pipes()
+

Adds the CPL internal pipes as transient

+
+ +
+
+abstract add_scoped(service_type: Type, service: Optional[Callable] = None) ServiceCollectionABC

Adds a service with scoped lifetime

@@ -297,11 +231,14 @@
+
+

self: :class:`cpl_core.dependency_injection.service_collection_abc.ServiceCollectionABC

+
-
-abstract add_singleton(service_type: Type, service: Optional[collections.abc.Callable] = None)
+
+abstract add_singleton(service_type: Type, service: Optional[Callable] = None) ServiceCollectionABC

Adds a service with singleton lifetime

@@ -311,11 +248,14 @@
+
+

self: :class:`cpl_core.dependency_injection.service_collection_abc.ServiceCollectionABC

+
-
-abstract add_transient(service_type: Type, service: Optional[collections.abc.Callable] = None)
+
+abstract add_transient(service_type: Type, service: Optional[Callable] = None) ServiceCollectionABC

Adds a service with transient lifetime

@@ -325,11 +265,14 @@
+
+

self: :class:`cpl_core.dependency_injection.service_collection_abc.ServiceCollectionABC

+
-
-abstract build_service_provider()cpl_core.dependency_injection.service_provider_abc.ServiceProviderABC
+
+abstract build_service_provider() ServiceProviderABC

Creates instance of the service provider

- -
-

cpl_core.dependency_injection.service_descriptor

+ +
+

cpl_core.dependency_injection.service_descriptor

-
-class cpl_core.dependency_injection.service_descriptor.ServiceDescriptor(implementation: Optional[Union[type, object]], lifetime: cpl_core.dependency_injection.service_lifetime_enum.ServiceLifetimeEnum)
+
+class cpl_core.dependency_injection.service_descriptor.ServiceDescriptor(implementation: Optional[Union[type, object]], lifetime: ServiceLifetimeEnum, base_type=None)

Bases: object

Descriptor of a service

@@ -354,55 +297,60 @@
-
-
-property implementation
+
+
+property base_type: type
-
-
-property lifetime
+
+
+property implementation: Optional[Union[type, object]]
-
-
-property service_type
+
+
+property lifetime: ServiceLifetimeEnum
+
+ +
+
+property service_type: type
- -
-

cpl_core.dependency_injection.service_lifetime_enum

+ +
+

cpl_core.dependency_injection.service_lifetime_enum

-
-class cpl_core.dependency_injection.service_lifetime_enum.ServiceLifetimeEnum(value)
-

Bases: enum.Enum

+
+class cpl_core.dependency_injection.service_lifetime_enum.ServiceLifetimeEnum(value)
+

Bases: Enum

An enumeration.

-
-scoped = 1
+
+scoped = 1
-
-singleton = 0
+
+singleton = 0
-
-transient = 2
+
+transient = 2
-
-
-

cpl_core.dependency_injection.service_provider

+ +
+

cpl_core.dependency_injection.service_provider

-
-class cpl_core.dependency_injection.service_provider.ServiceProvider(service_descriptors: list, config: cpl_core.configuration.configuration_abc.ConfigurationABC, db_context: Optional[cpl_core.database.context.database_context_abc.DatabaseContextABC])
-

Bases: cpl_core.dependency_injection.service_provider_abc.ServiceProviderABC

+
+class cpl_core.dependency_injection.service_provider.ServiceProvider(service_descriptors: list[cpl_core.dependency_injection.service_descriptor.ServiceDescriptor], config: ConfigurationABC, db_context: Optional[DatabaseContextABC])
+

Bases: ServiceProviderABC

Provider for the services

@@ -415,8 +363,8 @@
-
-build_service(service_type: type)object
+
+build_service(service_type: type) object

Creates instance of given type

@@ -430,8 +378,8 @@
-
-create_scope()cpl_core.dependency_injection.scope_abc.ScopeABC
+
+create_scope() ScopeABC

Creates a service scope

Object of type cpl_core.dependency_injection.scope.Scope

@@ -439,8 +387,8 @@
-
-get_service(service_type: type)Optional[collections.abc.Callable[object]]
+
+get_service(service_type: type) Optional[object]

Returns instance of given type

@@ -454,8 +402,8 @@
-
-set_scope(scope: cpl_core.dependency_injection.scope_abc.ScopeABC)
+
+set_scope(scope: ScopeABC)

Sets the scope of service provider

@@ -467,17 +415,17 @@
-
-
-

cpl_core.dependency_injection.service_provider_abc

+ +
+

cpl_core.dependency_injection.service_provider_abc

-
-class cpl_core.dependency_injection.service_provider_abc.ServiceProviderABC
-

Bases: abc.ABC

+
+class cpl_core.dependency_injection.service_provider_abc.ServiceProviderABC
+

Bases: ABC

ABC for the class cpl_core.dependency_injection.service_provider.ServiceProvider

-
-abstract build_service(service_type: Type)object
+
+abstract build_service(service_type: Type) object

Creates instance of given type

@@ -491,8 +439,8 @@
-
-abstract create_scope()cpl_core.dependency_injection.scope_abc.ScopeABC
+
+abstract create_scope() ScopeABC

Creates a service scope

Object of type cpl_core.dependency_injection.scope.Scope

@@ -500,8 +448,8 @@
-
-abstract get_service(instance_type: Type)Optional[collections.abc.Callable[object]]
+
+abstract get_service(instance_type: Type) Optional[object]

Returns instance of given type

@@ -515,8 +463,8 @@
-
-abstract set_scope(scope: cpl_core.dependency_injection.scope_abc.ScopeABC)
+
+abstract set_scope(scope: ScopeABC)

Sets the scope of service provider

@@ -528,55 +476,38 @@
-
- + + - -