Compare commits
57 Commits
1b60debba7
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| c1e65bf0dc | |||
| 688381b106 | |||
| c3e3367264 | |||
| c3d51e29fc | |||
| cae2e6d92e | |||
| 347418bdc5 | |||
| 153fc8922e | |||
| cdbfaeb013 | |||
| 4062a6ebe4 | |||
| 46ef6b3938 | |||
| c1b9c0fb4a | |||
| 8ede2998fe | |||
| 41f974fe6e | |||
| e7af5ce322 | |||
| 7881294554 | |||
| b3fd122fcd | |||
| 1dd48899d7 | |||
| f357e97ce5 | |||
| 2d8ecd424a | |||
| affbbc822d | |||
| 43ea732c5f | |||
| 708918464f | |||
| ed2377c288 | |||
| b819eb439c | |||
| b3ed7101fc | |||
| a3504af376 | |||
| 81c2f1cba9 | |||
| bea5b22251 | |||
| e04d0beb68 | |||
| 08ba097aaa | |||
| ea968d94e4 | |||
| 8e12c72b07 | |||
| 8dee4d8f70 | |||
| 315b8e631a | |||
| cbb1860f25 | |||
| 9839bcaa14 | |||
| da54337221 | |||
| a6a1e764d1 | |||
| eb6aa08c10 | |||
| 14a190a67f | |||
| cf5ae89884 | |||
| 558dfb8ced | |||
| 2ec8fc22b3 | |||
| c94700495b | |||
| 69a3bc5e31 | |||
| d189f49418 | |||
| 60fb416b67 | |||
| 792429d19d | |||
| 106975015e | |||
| 1117735f2e | |||
| 0378f8944a | |||
| 75fde0f444 | |||
| 04f610c799 | |||
| 3178b59147 | |||
| 9c7008e179 | |||
| 7ff7dbc56b | |||
| 823d524a81 |
@@ -87,7 +87,7 @@
|
||||
|
||||
Install the CPL package
|
||||
```sh
|
||||
pip install cpl --extra-index-url https://pip.sh-edraft.de
|
||||
pip install cpl-core --extra-index-url https://pip.sh-edraft.de
|
||||
```
|
||||
|
||||
Install the CPL CLI
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-cli CPL CLI
|
||||
|
||||
CPL Command Line Interface
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL Command Line Interface
|
||||
__title__ = "cpl_cli"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
||||
# imports:
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="10", micro="0")
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-cli CPL CLI
|
||||
|
||||
CPL Command Line Interface
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL Command Line Interface
|
||||
__title__ = "cpl_cli"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -28,4 +28,4 @@ from .main import main
|
||||
from .startup import Startup
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="10", micro="0")
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-cli CPL CLI
|
||||
|
||||
CPL Command Line Interface
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL Command Line Interface
|
||||
__title__ = "cpl_cli._templates"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
||||
# imports:
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="10", micro="0")
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-cli CPL CLI
|
||||
|
||||
CPL Command Line Interface
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL Command Line Interface
|
||||
__title__ = "cpl_cli._templates.build"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
||||
# imports:
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="10", micro="0")
|
||||
|
||||
@@ -19,19 +19,19 @@ class InitTemplate:
|
||||
|
||||
\"\"\"
|
||||
|
||||
__title__ = '$Title'
|
||||
__author__ = '$Author'
|
||||
__license__ = '$LicenseName'
|
||||
__copyright__ = 'Copyright (c) $CopyrightDate $CopyrightName'
|
||||
__version__ = '$Version'
|
||||
__title__ = "$Title"
|
||||
__author__ = "$Author"
|
||||
__license__ = "$LicenseName"
|
||||
__copyright__ = "Copyright (c) $CopyrightDate $CopyrightName"
|
||||
__version__ = "$Version"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
|
||||
$Imports
|
||||
|
||||
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
||||
version_info = VersionInfo(major='$Major', minor='$Minor', micro='$Micro')
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="$Major", minor="$Minor", micro="$Micro")
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-cli CPL CLI
|
||||
|
||||
CPL Command Line Interface
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL Command Line Interface
|
||||
__title__ = "cpl_cli._templates.publish"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
||||
# imports:
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="10", micro="0")
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-cli CPL CLI
|
||||
|
||||
CPL Command Line Interface
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL Command Line Interface
|
||||
__title__ = "cpl_cli.abc"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
||||
# imports
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="10", micro="0")
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
import traceback
|
||||
from typing import Optional
|
||||
|
||||
from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC
|
||||
from cpl_core.console.console import Console
|
||||
from cpl_cli.cli_settings_name_enum import CLISettingsNameEnum
|
||||
|
||||
|
||||
class CLISettings(ConfigurationModelABC):
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-cli CPL CLI
|
||||
|
||||
CPL Command Line Interface
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL Command Line Interface
|
||||
__title__ = "cpl_cli.command"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -29,4 +29,4 @@ from .publish_service import PublishService
|
||||
from .version_service import VersionService
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="10", micro="0")
|
||||
|
||||
@@ -154,6 +154,24 @@ class UpdateService(CommandABC):
|
||||
Console.write_line(f"\tUpdate with {Pip.get_executable()} -m pip install --upgrade <package>")
|
||||
Console.set_foreground_color(ForegroundColorEnum.default)
|
||||
|
||||
def _save_formatted_package_name_to_deps_collection(self, deps: [str], old_package: str, new_package: str):
|
||||
if old_package not in deps:
|
||||
return
|
||||
|
||||
initial_package = new_package
|
||||
|
||||
if "/" in new_package:
|
||||
new_package = new_package.split("/")[0]
|
||||
|
||||
if "\r" in new_package:
|
||||
new_package = new_package.replace("\r", "")
|
||||
|
||||
if new_package == old_package:
|
||||
return
|
||||
|
||||
index = deps.index(old_package)
|
||||
deps[index] = new_package
|
||||
|
||||
def _project_json_update_dependency(self, old_package: str, new_package: str):
|
||||
"""
|
||||
Writes new package version to project.json
|
||||
@@ -164,15 +182,12 @@ class UpdateService(CommandABC):
|
||||
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:
|
||||
new_package = new_package.split("/")[0]
|
||||
|
||||
if "\r" in new_package:
|
||||
new_package = new_package.replace("\r", "")
|
||||
|
||||
self._project_settings.dependencies[index] = new_package
|
||||
self._save_formatted_package_name_to_deps_collection(
|
||||
self._project_settings.dependencies, old_package, new_package
|
||||
)
|
||||
self._save_formatted_package_name_to_deps_collection(
|
||||
self._project_settings.dev_dependencies, old_package, new_package
|
||||
)
|
||||
|
||||
config = {
|
||||
ProjectSettings.__name__: SettingsHelper.get_project_settings_dict(self._project_settings),
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-cli CPL CLI
|
||||
|
||||
CPL Command Line Interface
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL Command Line Interface
|
||||
__title__ = "cpl_cli.configuration"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -31,4 +31,4 @@ from .workspace_settings import WorkspaceSettings
|
||||
from .workspace_settings_name_enum import WorkspaceSettingsNameEnum
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="10", micro="0")
|
||||
|
||||
@@ -18,10 +18,10 @@ class BuildSettings(ConfigurationModelABC):
|
||||
main: str = None,
|
||||
entry_point: str = None,
|
||||
include_package_data: bool = None,
|
||||
included: list[str] = None,
|
||||
excluded: list[str] = None,
|
||||
package_data: dict[str, list[str]] = None,
|
||||
project_references: list[str] = None,
|
||||
included: list = None,
|
||||
excluded: list = None,
|
||||
package_data: dict = None,
|
||||
project_references: list = None,
|
||||
):
|
||||
ConfigurationModelABC.__init__(self)
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ class ProjectSettings(ConfigurationModelABC):
|
||||
self._python_executable: Optional[str] = python_executable
|
||||
self._classifiers: Optional[list[str]] = [] if classifiers is None else classifiers
|
||||
|
||||
if python_path is not None:
|
||||
if python_path is not None and sys.platform in python_path:
|
||||
path = f"{python_path[sys.platform]}"
|
||||
|
||||
if path == "" or path is None:
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
"ProjectSettings": {
|
||||
"Name": "cpl-cli",
|
||||
"Version": {
|
||||
"Major": "2023",
|
||||
"Minor": "4",
|
||||
"Major": "2024",
|
||||
"Minor": "7",
|
||||
"Micro": "0"
|
||||
},
|
||||
"Author": "Sven Heidemann",
|
||||
@@ -11,15 +11,15 @@
|
||||
"Description": "CPL CLI",
|
||||
"LongDescription": "CPL Command Line Interface",
|
||||
"URL": "https://www.sh-edraft.de",
|
||||
"CopyrightDate": "2020 - 2023",
|
||||
"CopyrightDate": "2020 - 2024",
|
||||
"CopyrightName": "sh-edraft.de",
|
||||
"LicenseName": "MIT",
|
||||
"LicenseDescription": "MIT, see LICENSE for more details.",
|
||||
"Dependencies": [
|
||||
"cpl-core>=2023.4.0"
|
||||
"cpl-core>=2024.6.2024.07.0"
|
||||
],
|
||||
"DevDependencies": [],
|
||||
"PythonVersion": ">=3.10",
|
||||
"PythonVersion": ">=3.12",
|
||||
"PythonPath": {
|
||||
"linux": "../../venv"
|
||||
},
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-cli CPL CLI
|
||||
|
||||
CPL Command Line Interface
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL Command Line Interface
|
||||
__title__ = "cpl_cli.helper"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
||||
# imports:
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="10", micro="0")
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-cli CPL CLI
|
||||
|
||||
CPL Command Line Interface
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL Command Line Interface
|
||||
__title__ = "cpl_cli.live_server"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
||||
# imports:
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="10", micro="0")
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import importlib.metadata
|
||||
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
|
||||
@@ -16,13 +15,12 @@ def get_startup_extensions() -> list[Type[StartupExtensionABC]]:
|
||||
blacklisted_packages = ["cpl-cli"]
|
||||
startup_extensions = []
|
||||
|
||||
installed_packages = pkg_resources.working_set
|
||||
installed_packages = importlib.metadata.distributions()
|
||||
for p in installed_packages:
|
||||
package = str(p).split(" ")[0]
|
||||
if not package.startswith("cpl-") or package in blacklisted_packages:
|
||||
if not p.name.startswith("cpl-") or p.name in blacklisted_packages:
|
||||
continue
|
||||
|
||||
package = package.replace("-", "_")
|
||||
package = p.name.replace("-", "_")
|
||||
loaded_package = __import__(package)
|
||||
if "__cli_startup_extension__" not in dir(loaded_package):
|
||||
continue
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-cli CPL CLI
|
||||
|
||||
CPL Command Line Interface
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL Command Line Interface
|
||||
__title__ = "cpl_cli.migrations"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
||||
# imports
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="10", micro="0")
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-cli CPL CLI
|
||||
|
||||
CPL Command Line Interface
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL Command Line Interface
|
||||
__title__ = "cpl_cli.migrations.base"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
||||
# imports:
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="10", micro="0")
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-cli CPL CLI
|
||||
|
||||
CPL Command Line Interface
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL Command Line Interface
|
||||
__title__ = "cpl_cli.migrations.service"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
||||
# imports:
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="10", micro="0")
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-cli CPL CLI
|
||||
|
||||
CPL Command Line Interface
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL Command Line Interface
|
||||
__title__ = "cpl_cli.publish"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -25,4 +25,4 @@ from .publisher_abc import PublisherABC
|
||||
from .publisher_service import PublisherService
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="10", micro="0")
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-cli CPL CLI
|
||||
|
||||
CPL Command Line Interface
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL Command Line Interface
|
||||
__title__ = "cpl_cli.source_creator"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
||||
# imports:
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="10", micro="0")
|
||||
|
||||
@@ -28,10 +28,13 @@ class StartupArgumentExtension(StartupExtensionABC):
|
||||
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)
|
||||
|
||||
config.create_console_argument(
|
||||
ArgumentTypeEnum.Executable, "", "install", ["i", "I"], InstallService, True, validators=[ProjectValidator]
|
||||
).add_console_argument(ArgumentTypeEnum.Flag, "--", "dev", ["d", "D"]).add_console_argument(
|
||||
@@ -45,6 +48,7 @@ class StartupArgumentExtension(StartupExtensionABC):
|
||||
).add_console_argument(
|
||||
ArgumentTypeEnum.Flag, "--", "cpl-dev", ["cd", "CD"]
|
||||
)
|
||||
|
||||
config.create_console_argument(
|
||||
ArgumentTypeEnum.Executable, "", "new", ["n", "N"], NewService, True
|
||||
).add_console_argument(ArgumentTypeEnum.Flag, "--", "async", ["a", "A"]).add_console_argument(
|
||||
@@ -60,18 +64,23 @@ class StartupArgumentExtension(StartupExtensionABC):
|
||||
).add_console_argument(
|
||||
ArgumentTypeEnum.Flag, "--", "base", ["b", "B"]
|
||||
)
|
||||
|
||||
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]
|
||||
).add_console_argument(ArgumentTypeEnum.Flag, "--", "dev", ["d", "D"])
|
||||
|
||||
config.create_console_argument(
|
||||
ArgumentTypeEnum.Executable, "", "start", ["s", "S"], StartService, True, validators=[ProjectValidator]
|
||||
).add_console_argument(ArgumentTypeEnum.Flag, "--", "dev", ["d", "D"])
|
||||
|
||||
config.create_console_argument(
|
||||
ArgumentTypeEnum.Executable,
|
||||
"",
|
||||
@@ -85,6 +94,7 @@ class StartupArgumentExtension(StartupExtensionABC):
|
||||
).add_console_argument(
|
||||
ArgumentTypeEnum.Flag, "--", "simulate", ["s", "S"]
|
||||
)
|
||||
|
||||
config.create_console_argument(
|
||||
ArgumentTypeEnum.Executable, "", "update", ["u", "U"], UpdateService, True, validators=[ProjectValidator]
|
||||
).add_console_argument(ArgumentTypeEnum.Flag, "--", "simulate", ["s", "S"]).add_console_argument(
|
||||
@@ -94,6 +104,7 @@ class StartupArgumentExtension(StartupExtensionABC):
|
||||
).add_console_argument(
|
||||
ArgumentTypeEnum.Flag, "--", "cpl-dev", ["cd", "CD"]
|
||||
)
|
||||
|
||||
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"]))
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-cli CPL CLI
|
||||
|
||||
CPL Command Line Interface
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL Command Line Interface
|
||||
__title__ = "cpl_cli.validators"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
||||
# imports:
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="10", micro="0")
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-core CPL core
|
||||
|
||||
CPL core package
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL core package
|
||||
__title__ = "cpl_core"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.6.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
||||
# imports:
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="6", micro="0")
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-core CPL core
|
||||
|
||||
CPL core package
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL core package
|
||||
__title__ = "cpl_core.application"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.6.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -29,4 +29,4 @@ from .startup_abc import StartupABC
|
||||
from .startup_extension_abc import StartupExtensionABC
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="6", micro="0")
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-core CPL core
|
||||
|
||||
CPL core package
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL core package
|
||||
__title__ = "cpl_core.configuration"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.6.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -35,4 +35,4 @@ from .validator_abc import ValidatorABC
|
||||
from .variable_argument import VariableArgument
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="6", micro="0")
|
||||
|
||||
@@ -24,7 +24,7 @@ from cpl_core.dependency_injection.service_provider_abc import ServiceProviderAB
|
||||
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
|
||||
from cpl_core.type import T
|
||||
from cpl_core.type import T, R
|
||||
from cpl_core.utils.json_processor import JSONProcessor
|
||||
|
||||
|
||||
@@ -278,21 +278,23 @@ class Configuration(ConfigurationABC):
|
||||
config_from_file = self._load_json_file(file_path, output)
|
||||
for sub in ConfigurationModelABC.__subclasses__():
|
||||
for key, value in config_from_file.items():
|
||||
if sub.__name__ == key or sub.__name__.replace("Settings", "") == key:
|
||||
configuration = sub()
|
||||
from_dict = getattr(configuration, "from_dict", None)
|
||||
if sub.__name__ != key and sub.__name__.replace("Settings", "") != key:
|
||||
continue
|
||||
|
||||
if from_dict is not None and not hasattr(from_dict, "is_base_func"):
|
||||
Console.set_foreground_color(ForegroundColorEnum.yellow)
|
||||
Console.write_line(
|
||||
f"{sub.__name__}.from_dict is deprecated. Instead, set attributes as typed arguments in __init__. They can be None by default!"
|
||||
)
|
||||
Console.color_reset()
|
||||
configuration.from_dict(value)
|
||||
else:
|
||||
configuration = JSONProcessor.process(sub, value)
|
||||
configuration = sub()
|
||||
from_dict = getattr(configuration, "from_dict", None)
|
||||
|
||||
self.add_configuration(sub, configuration)
|
||||
if from_dict is not None and not hasattr(from_dict, "is_base_func"):
|
||||
Console.set_foreground_color(ForegroundColorEnum.yellow)
|
||||
Console.write_line(
|
||||
f"{sub.__name__}.from_dict is deprecated. Instead, set attributes as typed arguments in __init__. They can be None by default!"
|
||||
)
|
||||
Console.color_reset()
|
||||
configuration.from_dict(value)
|
||||
else:
|
||||
configuration = JSONProcessor.process(sub, value)
|
||||
|
||||
self.add_configuration(sub, configuration)
|
||||
|
||||
def add_configuration(self, key_type: T, value: any):
|
||||
self._config[key_type] = value
|
||||
@@ -314,7 +316,7 @@ class Configuration(ConfigurationABC):
|
||||
for arg in self._argument_types:
|
||||
call(arg)
|
||||
|
||||
def get_configuration(self, search_type: Type[T]) -> Optional[T]:
|
||||
def get_configuration(self, search_type: T) -> Optional[R]:
|
||||
if type(search_type) is str:
|
||||
if search_type == ConfigurationVariableNameEnum.environment.value:
|
||||
return self._application_environment.environment_name
|
||||
@@ -343,7 +345,7 @@ class Configuration(ConfigurationABC):
|
||||
executables: list[ExecutableArgument] = []
|
||||
self._parse_arguments(executables, arg_list, self._argument_types)
|
||||
except Exception as e:
|
||||
Console.error("An error occurred while parsing arguments.")
|
||||
Console.error("An error occurred while parsing arguments.", traceback.format_exc())
|
||||
sys.exit()
|
||||
|
||||
try:
|
||||
@@ -355,7 +357,7 @@ class Configuration(ConfigurationABC):
|
||||
if exe.validators is not None:
|
||||
abort = False
|
||||
for validator_type in exe.validators:
|
||||
validator: ValidatorABC = services.get_service(validator_type)
|
||||
validator = services.get_service(validator_type)
|
||||
result = validator.validate()
|
||||
abort = not result
|
||||
if abort:
|
||||
@@ -364,7 +366,7 @@ class Configuration(ConfigurationABC):
|
||||
if abort:
|
||||
sys.exit()
|
||||
|
||||
cmd: ArgumentExecutableABC = services.get_service(exe.executable_type)
|
||||
cmd = services.get_service(exe.executable_type)
|
||||
self._handle_pre_or_post_executables(True, exe, services)
|
||||
self._set_variable("ACTIVE_EXECUTABLE", exe.name)
|
||||
args = self.get_configuration("ARGS")
|
||||
|
||||
@@ -6,7 +6,7 @@ from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC
|
||||
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
|
||||
from cpl_core.type import T
|
||||
from cpl_core.type import T, R
|
||||
|
||||
|
||||
class ConfigurationABC(ABC):
|
||||
@@ -81,7 +81,7 @@ class ConfigurationABC(ABC):
|
||||
r"""Add configuration object
|
||||
|
||||
Parameter:
|
||||
key_type: Union[:class:`str`, :class:`type`]
|
||||
key_type: :class:`cpl_core.type.T`
|
||||
Type of the value
|
||||
value: any
|
||||
Object of the value
|
||||
@@ -124,11 +124,11 @@ class ConfigurationABC(ABC):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_configuration(self, search_type: Type[T]) -> Optional[T]:
|
||||
def get_configuration(self, search_type: T) -> Optional[R]:
|
||||
r"""Returns value from configuration by given type
|
||||
|
||||
Parameter:
|
||||
search_type: Union[:class:`str`, Type[:class:`cpl_core.configuration.configuration_model_abc.ConfigurationModelABC`]]
|
||||
search_type: :class:`cpl_core.type.T`
|
||||
Type to search for
|
||||
|
||||
Returns:
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-core CPL core
|
||||
|
||||
CPL core package
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL core package
|
||||
__title__ = "cpl_core.console"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.6.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -28,4 +28,4 @@ from .foreground_color_enum import ForegroundColorEnum
|
||||
from .spinner_thread import SpinnerThread
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="6", micro="0")
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
"ProjectSettings": {
|
||||
"Name": "cpl-core",
|
||||
"Version": {
|
||||
"Major": "2023",
|
||||
"Minor": "4",
|
||||
"Major": "2024",
|
||||
"Minor": "7",
|
||||
"Micro": "0"
|
||||
},
|
||||
"Author": "Sven Heidemann",
|
||||
@@ -11,22 +11,22 @@
|
||||
"Description": "CPL core",
|
||||
"LongDescription": "CPL core package",
|
||||
"URL": "https://www.sh-edraft.de",
|
||||
"CopyrightDate": "2020 - 2023",
|
||||
"CopyrightDate": "2020 - 2024",
|
||||
"CopyrightName": "sh-edraft.de",
|
||||
"LicenseName": "MIT",
|
||||
"LicenseDescription": "MIT, see LICENSE for more details.",
|
||||
"Dependencies": [
|
||||
"art==5.9",
|
||||
"colorama==0.4.6",
|
||||
"mysql-connector==2.2.9",
|
||||
"psutil==5.9.4",
|
||||
"packaging==23.0",
|
||||
"pynput==1.7.6",
|
||||
"setuptools==67.6.1",
|
||||
"tabulate==0.9.0",
|
||||
"termcolor==2.2.0",
|
||||
"watchdog==3.0.0",
|
||||
"wheel==0.40.0"
|
||||
"art>=6.2",
|
||||
"colorama>=0.4.6",
|
||||
"psutil>=6.0.0",
|
||||
"packaging>=24.1",
|
||||
"pynput>=1.7.6",
|
||||
"setuptools>=70.1.0",
|
||||
"tabulate>=0.9.0",
|
||||
"termcolor>=2.4.0",
|
||||
"watchdog>=4.0.1",
|
||||
"wheel>=0.43.0",
|
||||
"mysql-connector-python>=8.4.0"
|
||||
],
|
||||
"DevDependencies": [
|
||||
"Sphinx==5.0.2",
|
||||
@@ -36,7 +36,7 @@
|
||||
"sphinx-markdown-builder==0.5.5",
|
||||
"pygount==1.5.1"
|
||||
],
|
||||
"PythonVersion": ">=3.11",
|
||||
"PythonVersion": ">=3.12",
|
||||
"PythonPath": {},
|
||||
"Classifiers": []
|
||||
},
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-core CPL core
|
||||
|
||||
CPL core package
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL core package
|
||||
__title__ = "cpl_core.database"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.6.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -26,4 +26,4 @@ from .database_settings import DatabaseSettings
|
||||
from .table_abc import TableABC
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="6", micro="0")
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-core CPL core
|
||||
|
||||
CPL core package
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL core package
|
||||
__title__ = "cpl_core.database.connection"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.6.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -25,4 +25,4 @@ from .database_connection import DatabaseConnection
|
||||
from .database_connection_abc import DatabaseConnectionABC
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="6", micro="0")
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
from typing import Optional
|
||||
|
||||
import mysql.connector as sql
|
||||
from mysql.connector.abstracts import MySQLConnectionAbstract
|
||||
from mysql.connector.cursor import MySQLCursorBuffered
|
||||
|
||||
from cpl_core.database.connection.database_connection_abc import DatabaseConnectionABC
|
||||
from cpl_core.database.database_settings import DatabaseSettings
|
||||
from cpl_core.utils.credential_manager import CredentialManager
|
||||
from mysql.connector.abstracts import MySQLConnectionAbstract
|
||||
from mysql.connector.cursor import MySQLCursorBuffered
|
||||
|
||||
|
||||
class DatabaseConnection(DatabaseConnectionABC):
|
||||
@@ -25,27 +26,29 @@ class DatabaseConnection(DatabaseConnectionABC):
|
||||
def cursor(self) -> MySQLCursorBuffered:
|
||||
return self._cursor
|
||||
|
||||
def connect(self, database_settings: DatabaseSettings):
|
||||
def connect(self, settings: DatabaseSettings):
|
||||
connection = sql.connect(
|
||||
host=database_settings.host,
|
||||
port=database_settings.port,
|
||||
user=database_settings.user,
|
||||
passwd=CredentialManager.decrypt(database_settings.password),
|
||||
charset=database_settings.charset,
|
||||
use_unicode=database_settings.use_unicode,
|
||||
buffered=database_settings.buffered,
|
||||
auth_plugin=database_settings.auth_plugin,
|
||||
host=settings.host,
|
||||
port=settings.port,
|
||||
user=settings.user,
|
||||
passwd=CredentialManager.decrypt(settings.password),
|
||||
charset=settings.charset,
|
||||
use_unicode=settings.use_unicode,
|
||||
buffered=settings.buffered,
|
||||
auth_plugin=settings.auth_plugin,
|
||||
ssl_disabled=settings.ssl_disabled,
|
||||
)
|
||||
connection.cursor().execute(f"CREATE DATABASE IF NOT EXISTS `{database_settings.database}`;")
|
||||
connection.cursor().execute(f"CREATE DATABASE IF NOT EXISTS `{settings.database}`;")
|
||||
self._database = sql.connect(
|
||||
host=database_settings.host,
|
||||
port=database_settings.port,
|
||||
user=database_settings.user,
|
||||
passwd=CredentialManager.decrypt(database_settings.password),
|
||||
db=database_settings.database,
|
||||
charset=database_settings.charset,
|
||||
use_unicode=database_settings.use_unicode,
|
||||
buffered=database_settings.buffered,
|
||||
auth_plugin=database_settings.auth_plugin,
|
||||
host=settings.host,
|
||||
port=settings.port,
|
||||
user=settings.user,
|
||||
passwd=CredentialManager.decrypt(settings.password),
|
||||
db=settings.database,
|
||||
charset=settings.charset,
|
||||
use_unicode=settings.use_unicode,
|
||||
buffered=settings.buffered,
|
||||
auth_plugin=settings.auth_plugin,
|
||||
ssl_disabled=settings.ssl_disabled,
|
||||
)
|
||||
self._cursor = self._database.cursor()
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-core CPL core
|
||||
|
||||
CPL core package
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL core package
|
||||
__title__ = "cpl_core.database.context"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.6.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -25,4 +25,4 @@ from .database_context import DatabaseContext
|
||||
from .database_context_abc import DatabaseContextABC
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="6", micro="0")
|
||||
|
||||
@@ -21,7 +21,6 @@ class DatabaseContext(DatabaseContextABC):
|
||||
DatabaseContextABC.__init__(self)
|
||||
|
||||
self._db: DatabaseConnectionABC = DatabaseConnection()
|
||||
self._tables: list[TableABC] = TableABC.__subclasses__()
|
||||
self._settings: Optional[DatabaseSettings] = None
|
||||
|
||||
@property
|
||||
@@ -32,7 +31,7 @@ class DatabaseContext(DatabaseContextABC):
|
||||
def _ping_and_reconnect(self):
|
||||
try:
|
||||
self._db.server.ping(reconnect=True, attempts=3, delay=5)
|
||||
except mysql.connector.Error as err:
|
||||
except Exception as err:
|
||||
# reconnect your cursor as you did in __init__ or wherever
|
||||
if self._settings is None:
|
||||
raise Exception("Call DatabaseContext.connect first")
|
||||
@@ -42,8 +41,6 @@ class DatabaseContext(DatabaseContextABC):
|
||||
if self._settings is None:
|
||||
self._settings = database_settings
|
||||
self._db.connect(database_settings)
|
||||
for table in self._tables:
|
||||
self._db.cursor.execute(table.get_create_string())
|
||||
|
||||
self.save_changes()
|
||||
|
||||
|
||||
@@ -9,14 +9,15 @@ class DatabaseSettings(ConfigurationModelABC):
|
||||
def __init__(
|
||||
self,
|
||||
host: str = None,
|
||||
port: int = None,
|
||||
port: int = 3306,
|
||||
user: str = None,
|
||||
password: str = None,
|
||||
databse: str = None,
|
||||
charset: str = None,
|
||||
use_unicode: bool = None,
|
||||
buffered: bool = None,
|
||||
auth_plugin: bool = None,
|
||||
database: str = None,
|
||||
charset: str = "utf8mb4",
|
||||
use_unicode: bool = False,
|
||||
buffered: bool = False,
|
||||
auth_plugin: str = "caching_sha2_password",
|
||||
ssl_disabled: bool = False,
|
||||
):
|
||||
ConfigurationModelABC.__init__(self)
|
||||
|
||||
@@ -24,11 +25,12 @@ class DatabaseSettings(ConfigurationModelABC):
|
||||
self._port: Optional[int] = port
|
||||
self._user: Optional[str] = user
|
||||
self._password: Optional[str] = password
|
||||
self._databse: Optional[str] = databse
|
||||
self._database: Optional[str] = database
|
||||
self._charset: Optional[str] = charset
|
||||
self._use_unicode: Optional[bool] = use_unicode
|
||||
self._buffered: Optional[bool] = buffered
|
||||
self._auth_plugin: Optional[str] = auth_plugin
|
||||
self._ssl_disabled: Optional[bool] = ssl_disabled
|
||||
|
||||
@property
|
||||
def host(self) -> Optional[str]:
|
||||
@@ -48,7 +50,7 @@ class DatabaseSettings(ConfigurationModelABC):
|
||||
|
||||
@property
|
||||
def database(self) -> Optional[str]:
|
||||
return self._databse
|
||||
return self._database
|
||||
|
||||
@property
|
||||
def charset(self) -> Optional[str]:
|
||||
@@ -65,3 +67,7 @@ class DatabaseSettings(ConfigurationModelABC):
|
||||
@property
|
||||
def auth_plugin(self) -> Optional[str]:
|
||||
return self._auth_plugin
|
||||
|
||||
@property
|
||||
def ssl_disabled(self) -> Optional[bool]:
|
||||
return self._ssl_disabled
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-core CPL core
|
||||
|
||||
CPL core package
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL core package
|
||||
__title__ = "cpl_core.dependency_injection"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.6.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -31,4 +31,4 @@ from .service_provider import ServiceProvider
|
||||
from .service_provider_abc import ServiceProviderABC
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="6", micro="0")
|
||||
|
||||
@@ -65,7 +65,7 @@ class ServiceCollection(ServiceCollectionABC):
|
||||
self._add_descriptor_by_lifetime(service_type, ServiceLifetimeEnum.singleton, service)
|
||||
return self
|
||||
|
||||
def add_scoped(self, service_type: T, service: Callable = None):
|
||||
def add_scoped(self, service_type: T, service: T = None):
|
||||
self._add_descriptor_by_lifetime(service_type, ServiceLifetimeEnum.scoped, service)
|
||||
return self
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ 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_abc import ServiceProviderABC
|
||||
from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC
|
||||
from cpl_core.type import T
|
||||
from cpl_core.type import T, R
|
||||
|
||||
|
||||
class ServiceProvider(ServiceProviderABC):
|
||||
@@ -80,7 +80,7 @@ class ServiceProvider(ServiceProviderABC):
|
||||
|
||||
return implementations
|
||||
|
||||
def build_by_signature(self, sig: Signature) -> list[T]:
|
||||
def build_by_signature(self, sig: Signature) -> list[R]:
|
||||
params = []
|
||||
for param in sig.parameters.items():
|
||||
parameter = param[1]
|
||||
@@ -138,7 +138,7 @@ class ServiceProvider(ServiceProviderABC):
|
||||
sb = ScopeBuilder(ServiceProvider(descriptors, self._configuration, self._database_context))
|
||||
return sb.build()
|
||||
|
||||
def get_service(self, service_type: T, *args, **kwargs) -> Optional[T]:
|
||||
def get_service(self, service_type: T, *args, **kwargs) -> Optional[R]:
|
||||
result = self._find_service(service_type)
|
||||
|
||||
if result is None:
|
||||
@@ -157,12 +157,12 @@ class ServiceProvider(ServiceProviderABC):
|
||||
|
||||
return implementation
|
||||
|
||||
def get_services(self, service_type: T, *args, **kwargs) -> list[Optional[T]]:
|
||||
def get_services(self, service_type: T, *args, **kwargs) -> list[Optional[R]]:
|
||||
implementations = []
|
||||
|
||||
if typing.get_origin(service_type) != list:
|
||||
raise Exception(f"Invalid type {service_type}! Expected list of type")
|
||||
if typing.get_origin(service_type) == list:
|
||||
raise Exception(f"Invalid type {service_type}! Expected single type not list of type")
|
||||
|
||||
implementations.extend(self._get_services(typing.get_args(service_type)[0]))
|
||||
implementations.extend(self._get_services(service_type))
|
||||
|
||||
return implementations
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import functools
|
||||
from abc import abstractmethod, ABC
|
||||
from inspect import Signature, signature
|
||||
from typing import Type, Optional
|
||||
from typing import Optional, Type
|
||||
|
||||
from cpl_core.dependency_injection.scope_abc import ScopeABC
|
||||
from cpl_core.type import T
|
||||
from cpl_core.type import T, R
|
||||
|
||||
|
||||
class ServiceProviderABC(ABC):
|
||||
@@ -21,7 +21,7 @@ class ServiceProviderABC(ABC):
|
||||
cls._provider = provider
|
||||
|
||||
@abstractmethod
|
||||
def build_by_signature(self, sig: Signature) -> list[T]:
|
||||
def build_by_signature(self, sig: Signature) -> list[R]:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
@@ -61,7 +61,7 @@ class ServiceProviderABC(ABC):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_service(self, instance_type: T, *args, **kwargs) -> Optional[T]:
|
||||
def get_service(self, instance_type: T, *args, **kwargs) -> Optional[R]:
|
||||
r"""Returns instance of given type
|
||||
|
||||
Parameter
|
||||
@@ -76,12 +76,12 @@ class ServiceProviderABC(ABC):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_services(self, service_type: T, *args, **kwargs) -> list[Optional[T]]:
|
||||
def get_services(self, service_type: T, *args, **kwargs) -> list[Optional[R]]:
|
||||
r"""Returns instance of given type
|
||||
|
||||
Parameter
|
||||
---------
|
||||
instance_type: :class:`cpl_core.type.T`
|
||||
service_type: :class:`cpl_core.type.T`
|
||||
The type of the searched instance
|
||||
|
||||
Returns
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-core CPL core
|
||||
|
||||
CPL core package
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL core package
|
||||
__title__ = "cpl_core.environment"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.6.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -26,4 +26,4 @@ from .environment_name_enum import EnvironmentNameEnum
|
||||
from .application_environment import ApplicationEnvironment
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="6", micro="0")
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-core CPL core
|
||||
|
||||
CPL core package
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL core package
|
||||
__title__ = "cpl_core.logging"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.6.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -28,4 +28,4 @@ from .logging_settings import LoggingSettings
|
||||
from .logging_settings_name_enum import LoggingSettingsNameEnum
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="6", micro="0")
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-core CPL core
|
||||
|
||||
CPL core package
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL core package
|
||||
__title__ = "cpl_core.mailing"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.6.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -28,4 +28,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="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="6", micro="0")
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-core CPL core
|
||||
|
||||
CPL core package
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,20 +14,16 @@ CPL core package
|
||||
__title__ = "cpl_core.pipes"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.6.0"
|
||||
|
||||
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="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="6", micro="0")
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
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:]}"
|
||||
@@ -1,18 +0,0 @@
|
||||
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:]}"
|
||||
@@ -13,7 +13,7 @@ class IPAddressPipe(PipeABC):
|
||||
|
||||
for i in range(0, len(value)):
|
||||
byte = value[i]
|
||||
if byte > 255:
|
||||
if byte > 255 or byte < 0:
|
||||
raise Exception("Invalid IP")
|
||||
|
||||
if i == len(value) - 1:
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
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
|
||||
@@ -1,27 +0,0 @@
|
||||
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()
|
||||
@@ -6,7 +6,7 @@ cpl-core CPL core
|
||||
|
||||
CPL core package
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL core package
|
||||
__title__ = "cpl_core.time"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.6.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -25,4 +25,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="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="6", micro="0")
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
from typing import TypeVar
|
||||
|
||||
T = TypeVar("T")
|
||||
R = TypeVar("R")
|
||||
|
||||
@@ -6,7 +6,7 @@ cpl-core CPL core
|
||||
|
||||
CPL core package
|
||||
|
||||
:copyright: (c) 2020 - 2023 sh-edraft.de
|
||||
:copyright: (c) 2020 - 2024 sh-edraft.de
|
||||
:license: MIT, see LICENSE for more details.
|
||||
|
||||
"""
|
||||
@@ -14,8 +14,8 @@ CPL core package
|
||||
__title__ = "cpl_core.utils"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__copyright__ = "Copyright (c) 2020 - 2024 sh-edraft.de"
|
||||
__version__ = "2024.6.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -26,4 +26,4 @@ from .string import String
|
||||
from .pip import Pip
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2024", minor="6", micro="0")
|
||||
|
||||
@@ -8,6 +8,7 @@ class JSONProcessor:
|
||||
@staticmethod
|
||||
def process(_t: type, values: dict) -> object:
|
||||
args = []
|
||||
kwargs = {}
|
||||
|
||||
sig = signature(_t.__init__)
|
||||
for param in sig.parameters.items():
|
||||
@@ -17,12 +18,17 @@ class JSONProcessor:
|
||||
|
||||
name = String.first_to_upper(String.convert_to_camel_case(parameter.name))
|
||||
name_first_lower = String.first_to_lower(name)
|
||||
if name in values or name_first_lower in values:
|
||||
if name in values or name_first_lower in values or name.upper() in values:
|
||||
value = ""
|
||||
if name in values:
|
||||
value = values[name]
|
||||
else:
|
||||
values.pop(name)
|
||||
elif name_first_lower in values:
|
||||
value = values[name_first_lower]
|
||||
values.pop(name_first_lower)
|
||||
else:
|
||||
value = values[name.upper()]
|
||||
values.pop(name.upper())
|
||||
|
||||
if isinstance(value, dict) and not issubclass(parameter.annotation, dict):
|
||||
value = JSONProcessor.process(parameter.annotation, value)
|
||||
@@ -30,12 +36,18 @@ class JSONProcessor:
|
||||
if issubclass(parameter.annotation, enum.Enum):
|
||||
value = parameter.annotation[value]
|
||||
|
||||
if type(value) != parameter.annotation:
|
||||
value = parameter.annotation(value)
|
||||
|
||||
args.append(value)
|
||||
|
||||
elif parameter.name == "kwargs" and parameter.annotation == dict:
|
||||
kwargs = values
|
||||
|
||||
elif parameter.default != Parameter.empty:
|
||||
args.append(parameter.default)
|
||||
|
||||
else:
|
||||
args.append(None)
|
||||
|
||||
return _t(*args)
|
||||
return _t(*args, **kwargs)
|
||||
|
||||
@@ -37,9 +37,19 @@ class String:
|
||||
String converted to snake_case
|
||||
"""
|
||||
# convert to train-case to CamelCase
|
||||
if "_" in chars:
|
||||
chars = chars.replace("_", "-")
|
||||
|
||||
if "-" in chars:
|
||||
chars = "".join(word.title() for word in chars.split("-"))
|
||||
|
||||
if " " in chars:
|
||||
new_chars = ""
|
||||
for word in chars.split(" "):
|
||||
new_chars += String.first_to_upper(word)
|
||||
|
||||
chars = new_chars
|
||||
|
||||
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", chars)
|
||||
|
||||
@@ -15,7 +15,7 @@ __title__ = "cpl_discord"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__version__ = "2023.10.0.post1"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
||||
# imports:
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2023", minor="10", micro="0.post1")
|
||||
|
||||
@@ -15,7 +15,7 @@ __title__ = "cpl_discord"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__version__ = "2023.10.0.post1"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -59,4 +59,4 @@ def get_discord_collection(services: "ServiceCollectionABC") -> "DiscordCollecti
|
||||
# build-ignore-end
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2023", minor="10", micro="0.post1")
|
||||
|
||||
@@ -15,7 +15,7 @@ __title__ = "cpl_discord.application"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__version__ = "2023.10.0.post1"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -24,4 +24,4 @@ from collections import namedtuple
|
||||
from .discord_bot_application_abc import DiscordBotApplicationABC
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2023", minor="10", micro="0.post1")
|
||||
|
||||
@@ -15,7 +15,7 @@ __title__ = "cpl_discord.command"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__version__ = "2023.10.0.post1"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -25,4 +25,4 @@ from .discord_command_abc import DiscordCommandABC
|
||||
from .discord_commands_meta import DiscordCogMeta
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2023", minor="10", micro="0.post1")
|
||||
|
||||
@@ -15,7 +15,7 @@ __title__ = "cpl_discord.configuration"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__version__ = "2023.10.0.post1"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -24,4 +24,4 @@ from collections import namedtuple
|
||||
from .discord_bot_settings import DiscordBotSettings
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2023", minor="10", micro="0.post1")
|
||||
|
||||
@@ -15,7 +15,7 @@ __title__ = "cpl_discord.container"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__version__ = "2023.10.0.post1"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -31,4 +31,4 @@ from .thread import Thread
|
||||
from .voice_channel import VoiceChannel
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2023", minor="10", micro="0.post1")
|
||||
|
||||
@@ -4,7 +4,7 @@ from cpl_discord.container.container import Container
|
||||
from cpl_discord.container.text_channel import TextChannel
|
||||
from cpl_discord.container.voice_channel import VoiceChannel
|
||||
from cpl_discord.helper.to_containers_converter import ToContainersConverter
|
||||
from cpl_query.extension import List
|
||||
from cpl_query.extension.list import List
|
||||
|
||||
|
||||
class CategoryChannel(discord.CategoryChannel, Container):
|
||||
|
||||
@@ -7,7 +7,7 @@ from cpl_discord.container.role import Role
|
||||
from cpl_discord.container.text_channel import TextChannel
|
||||
from cpl_discord.container.voice_channel import VoiceChannel
|
||||
from cpl_discord.helper.to_containers_converter import ToContainersConverter
|
||||
from cpl_query.extension import List
|
||||
from cpl_query.extension.list import List
|
||||
|
||||
|
||||
class Guild(Container, discord.Guild):
|
||||
|
||||
@@ -4,7 +4,7 @@ from cpl_discord.container.container import Container
|
||||
from cpl_discord.container.member import Member
|
||||
from cpl_discord.container.thread import Thread
|
||||
from cpl_discord.helper.to_containers_converter import ToContainersConverter
|
||||
from cpl_query.extension import List
|
||||
from cpl_query.extension.list import List
|
||||
|
||||
|
||||
class TextChannel(discord.TextChannel, Container):
|
||||
|
||||
@@ -3,7 +3,7 @@ import discord
|
||||
from cpl_discord.container.container import Container
|
||||
from cpl_discord.container.member import Member
|
||||
from cpl_discord.helper.to_containers_converter import ToContainersConverter
|
||||
from cpl_query.extension import List
|
||||
from cpl_query.extension.list import List
|
||||
|
||||
|
||||
class Thread(discord.Thread, Container):
|
||||
|
||||
@@ -3,7 +3,7 @@ import discord
|
||||
from cpl_discord.container.container import Container
|
||||
from cpl_discord.container.member import Member
|
||||
from cpl_discord.helper.to_containers_converter import ToContainersConverter
|
||||
from cpl_query.extension import List
|
||||
from cpl_query.extension.list import List
|
||||
|
||||
|
||||
class VoiceChannel(discord.VoiceChannel, Container):
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
"ProjectSettings": {
|
||||
"Name": "cpl-discord",
|
||||
"Version": {
|
||||
"Major": "2023",
|
||||
"Minor": "4",
|
||||
"Major": "2024",
|
||||
"Minor": "7",
|
||||
"Micro": "0"
|
||||
},
|
||||
"Author": "Sven Heidemann",
|
||||
@@ -16,12 +16,12 @@
|
||||
"LicenseName": "MIT",
|
||||
"LicenseDescription": "MIT, see LICENSE for more details.",
|
||||
"Dependencies": [
|
||||
"cpl-core>=2023.4.0",
|
||||
"discord.py>=2.2.2",
|
||||
"cpl-query>=2023.4.0"
|
||||
"cpl-core>=2024.6.2024.07.0",
|
||||
"discord.py>=2.3.2",
|
||||
"cpl-query>=2024.6.2024.07.0"
|
||||
],
|
||||
"DevDependencies": [
|
||||
"cpl-cli>=2023.4.0"
|
||||
"cpl-cli>=2024.6.2024.07.0"
|
||||
],
|
||||
"PythonVersion": ">=3.10",
|
||||
"PythonPath": {},
|
||||
|
||||
@@ -15,7 +15,7 @@ __title__ = "cpl_discord.events"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__version__ = "2023.10.0.post1"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -69,4 +69,4 @@ from .on_voice_state_update_abc import OnVoiceStateUpdateABC
|
||||
from .on_webhooks_update_abc import OnWebhooksUpdateABC
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2023", minor="10", micro="0.post1")
|
||||
|
||||
@@ -15,7 +15,7 @@ __title__ = "cpl_discord.helper"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__version__ = "2023.10.0.post1"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -24,4 +24,4 @@ from collections import namedtuple
|
||||
from .to_containers_converter import ToContainersConverter
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2023", minor="10", micro="0.post1")
|
||||
|
||||
@@ -15,7 +15,7 @@ __title__ = "cpl_discord.service"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__version__ = "2023.10.0.post1"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -29,4 +29,4 @@ from .discord_service import DiscordService
|
||||
from .discord_service_abc import DiscordServiceABC
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2023", minor="10", micro="0.post1")
|
||||
|
||||
@@ -56,14 +56,13 @@ class DiscordBotService(DiscordBotServiceABC):
|
||||
env_token = self._config.get_configuration("TOKEN")
|
||||
env_prefix = self._config.get_configuration("PREFIX")
|
||||
|
||||
new_settings.from_dict(
|
||||
{
|
||||
"Token": env_token if token is None or token == "" else token,
|
||||
"Prefix": ("! " if self._is_string_invalid(env_prefix) else env_prefix)
|
||||
if self._is_string_invalid(prefix)
|
||||
else prefix,
|
||||
}
|
||||
new_settings = DiscordBotSettings(
|
||||
env_token if token is None or token == "" else token,
|
||||
("! " if self._is_string_invalid(env_prefix) else env_prefix)
|
||||
if self._is_string_invalid(prefix)
|
||||
else prefix,
|
||||
)
|
||||
|
||||
if new_settings.token is None or new_settings.token == "":
|
||||
raise Exception("You have to configure discord token by appsettings or environment variables")
|
||||
return new_settings
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
from typing import Type, Optional
|
||||
from typing import Type
|
||||
|
||||
from cpl_core.console import Console, ForegroundColorEnum
|
||||
from cpl_core.dependency_injection import ServiceCollectionABC
|
||||
from cpl_discord.command.discord_command_abc import DiscordCommandABC
|
||||
from cpl_discord.discord_event_types_enum import DiscordEventTypesEnum
|
||||
from cpl_discord.service.command_error_handler_service import CommandErrorHandlerService
|
||||
from cpl_discord.service.discord_collection_abc import DiscordCollectionABC
|
||||
from cpl_query.extension import List
|
||||
|
||||
|
||||
class DiscordCollection(DiscordCollectionABC):
|
||||
@@ -13,26 +13,21 @@ class DiscordCollection(DiscordCollectionABC):
|
||||
DiscordCollectionABC.__init__(self)
|
||||
|
||||
self._services = service_collection
|
||||
self._events: dict[str, List] = {}
|
||||
self._commands = List(type(DiscordCommandABC))
|
||||
|
||||
self.add_event(DiscordEventTypesEnum.on_command_error.value, CommandErrorHandlerService)
|
||||
self._services.add_transient(DiscordEventTypesEnum.on_command_error.value, CommandErrorHandlerService)
|
||||
|
||||
def add_command(self, _t: Type[DiscordCommandABC]):
|
||||
Console.set_foreground_color(ForegroundColorEnum.yellow)
|
||||
Console.write_line(
|
||||
f"{type(self).__name__}.add_command is deprecated. Instead, use ServiceCollection.add_transient directly!"
|
||||
)
|
||||
Console.color_reset()
|
||||
self._services.add_transient(DiscordCommandABC, _t)
|
||||
self._commands.append(_t)
|
||||
|
||||
def get_commands(self) -> List[DiscordCommandABC]:
|
||||
return self._commands
|
||||
|
||||
def add_event(self, _t_event: Type, _t: Type):
|
||||
Console.set_foreground_color(ForegroundColorEnum.yellow)
|
||||
Console.write_line(
|
||||
f"{type(self).__name__}.add_event is deprecated. Instead, use ServiceCollection.add_transient directly!"
|
||||
)
|
||||
Console.color_reset()
|
||||
self._services.add_transient(_t_event, _t)
|
||||
if _t_event not in self._events:
|
||||
self._events[_t_event] = List(type(_t_event))
|
||||
|
||||
self._events[_t_event].append(_t)
|
||||
|
||||
def get_events_by_base(self, _t_event: Type) -> Optional[List]:
|
||||
if _t_event not in self._events:
|
||||
return None
|
||||
return self._events[_t_event]
|
||||
|
||||
@@ -2,7 +2,7 @@ from abc import ABC, abstractmethod
|
||||
from typing import Type
|
||||
|
||||
from cpl_discord.command import DiscordCommandABC
|
||||
from cpl_query.extension import List
|
||||
from cpl_query.extension.list import List
|
||||
|
||||
|
||||
class DiscordCollectionABC(ABC):
|
||||
@@ -13,14 +13,6 @@ class DiscordCollectionABC(ABC):
|
||||
def add_command(self, _t: Type[DiscordCommandABC]):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_commands(self) -> List[DiscordCommandABC]:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def add_event(self, _t_event: Type, _t: Type):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_events_by_base(self, _t_event: Type):
|
||||
pass
|
||||
|
||||
@@ -4,11 +4,12 @@ from typing import Optional, Sequence, Union, Type
|
||||
import discord
|
||||
from discord import RawReactionActionEvent
|
||||
from discord.ext import commands
|
||||
from discord.ext.commands import Context, CommandError, Cog, Command
|
||||
from discord.ext.commands import Context, CommandError, Cog
|
||||
|
||||
from cpl_core.dependency_injection import ServiceProviderABC
|
||||
from cpl_core.logging import LoggerABC
|
||||
from cpl_core.utils import String
|
||||
from cpl_discord.command import DiscordCommandABC
|
||||
from cpl_discord.command.discord_commands_meta import DiscordCogMeta
|
||||
from cpl_discord.events.on_bulk_message_delete_abc import OnBulkMessageDeleteABC
|
||||
from cpl_discord.events.on_command_abc import OnCommandABC
|
||||
@@ -66,25 +67,17 @@ from cpl_discord.events.on_typing_abc import OnTypingABC
|
||||
from cpl_discord.events.on_user_update_abc import OnUserUpdateABC
|
||||
from cpl_discord.events.on_voice_state_update_abc import OnVoiceStateUpdateABC
|
||||
from cpl_discord.events.on_webhooks_update_abc import OnWebhooksUpdateABC
|
||||
from cpl_discord.service.discord_collection_abc import DiscordCollectionABC
|
||||
from cpl_discord.service.discord_service_abc import DiscordServiceABC
|
||||
|
||||
|
||||
class DiscordService(DiscordServiceABC, commands.Cog, metaclass=DiscordCogMeta):
|
||||
def __init__(self, logger: LoggerABC, dc_collection: DiscordCollectionABC, services: ServiceProviderABC):
|
||||
def __init__(self, logger: LoggerABC, services: ServiceProviderABC):
|
||||
DiscordServiceABC.__init__(self)
|
||||
self._logger = logger
|
||||
self._collection = dc_collection
|
||||
self._services = services
|
||||
|
||||
async def _handle_event(self, event: Type, *args, **kwargs):
|
||||
event_collection = self._collection.get_events_by_base(event)
|
||||
if event_collection is None:
|
||||
return
|
||||
|
||||
for event_type in event_collection:
|
||||
event_instance = self._services.get_service(event_type)
|
||||
|
||||
for event_instance in self._services.get_services(event):
|
||||
func_name = event.__name__
|
||||
if func_name.endswith("ABC"):
|
||||
func_name = func_name.replace("ABC", "")
|
||||
@@ -104,11 +97,10 @@ class DiscordService(DiscordServiceABC, commands.Cog, metaclass=DiscordCogMeta):
|
||||
self._logger.error(__name__, f"{type(self).__name__} initialization failed", e)
|
||||
|
||||
try:
|
||||
for command_type in self._collection.get_commands():
|
||||
self._logger.trace(__name__, f"Register command {command_type.__name__}")
|
||||
command: Cog = self._services.get_service(command_type)
|
||||
for command in self._services.get_services(DiscordCommandABC):
|
||||
self._logger.trace(__name__, f"Register command {type(command).__name__}")
|
||||
if command is None:
|
||||
self._logger.warn(__name__, f"Instance of {command_type.__name__} not found")
|
||||
self._logger.warn(__name__, f"Instance of {type(command).__name__} not found")
|
||||
continue
|
||||
await bot.add_cog(command)
|
||||
except Exception as e:
|
||||
|
||||
@@ -15,7 +15,7 @@ __title__ = "cpl_query"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2021 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__version__ = "2023.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
||||
# imports:
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2023", minor="10", micro="0")
|
||||
|
||||
@@ -15,10 +15,11 @@ __title__ = "cpl_query.base"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2021 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__version__ = "2023.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
|
||||
# imports:
|
||||
from .default_lambda import default_lambda
|
||||
from .ordered_queryable import OrderedQueryable
|
||||
@@ -27,4 +28,4 @@ from .queryable_abc import QueryableABC
|
||||
from .sequence import Sequence
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2023", minor="10", micro="0")
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
from collections.abc import Callable
|
||||
|
||||
from cpl_query.base.queryable_abc import QueryableABC
|
||||
from cpl_query.base.ordered_queryable_abc import OrderedQueryableABC
|
||||
from cpl_query.exceptions import ArgumentNoneException, ExceptionArgument
|
||||
from cpl_query.iterable.iterable import Iterable
|
||||
|
||||
|
||||
class OrderedQueryable(OrderedQueryableABC):
|
||||
r"""Implementation of :class: `cpl_query.base.ordered_queryable_abc.OrderedQueryableABC`"""
|
||||
|
||||
def __init__(self, _t: type, _values: Iterable = None, _func: Callable = None):
|
||||
def __init__(self, _t: type, _values: QueryableABC = None, _func: Callable = None):
|
||||
OrderedQueryableABC.__init__(self, _t, _values, _func)
|
||||
|
||||
def then_by(self, _func: Callable) -> OrderedQueryableABC:
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
"ProjectSettings": {
|
||||
"Name": "cpl-query",
|
||||
"Version": {
|
||||
"Major": "2023",
|
||||
"Minor": "4",
|
||||
"Major": "2024",
|
||||
"Minor": "7",
|
||||
"Micro": "0"
|
||||
},
|
||||
"Author": "Sven Heidemann",
|
||||
@@ -17,7 +17,7 @@
|
||||
"LicenseDescription": "MIT, see LICENSE for more details.",
|
||||
"Dependencies": [],
|
||||
"DevDependencies": [],
|
||||
"PythonVersion": ">=3.11",
|
||||
"PythonVersion": ">=3.10",
|
||||
"PythonPath": {},
|
||||
"Classifiers": []
|
||||
},
|
||||
|
||||
@@ -15,7 +15,7 @@ __title__ = "cpl_query.enumerable"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2021 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__version__ = "2023.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -25,4 +25,4 @@ from .enumerable import Enumerable
|
||||
from .enumerable_abc import EnumerableABC
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2023", minor="10", micro="0")
|
||||
|
||||
@@ -15,7 +15,7 @@ __title__ = "cpl_query.extension"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2021 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__version__ = "2023.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -24,4 +24,4 @@ from collections import namedtuple
|
||||
from .list import List
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2023", minor="10", micro="0")
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
from typing import Iterator
|
||||
|
||||
from cpl_query.iterable.iterable import Iterable
|
||||
|
||||
|
||||
class List(Iterable):
|
||||
r"""Implementation of :class: `cpl_query.extension.iterable.Iterable`"""
|
||||
|
||||
def __init__(self, t: type = None, values: Iterator = None):
|
||||
def __init__(self, t: type = None, values: Iterable = None):
|
||||
Iterable.__init__(self, t, values)
|
||||
|
||||
def __getitem__(self, *args):
|
||||
|
||||
@@ -15,7 +15,7 @@ __title__ = "cpl_query.iterable"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2021 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__version__ = "2023.10.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -25,4 +25,4 @@ from .iterable_abc import IterableABC
|
||||
from .iterable import Iterable
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2023", minor="10", micro="0")
|
||||
|
||||
@@ -15,7 +15,7 @@ __title__ = "cpl_translation"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||
__version__ = "2023.4.0"
|
||||
__version__ = "2023.4.0.post1"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -53,4 +53,4 @@ init()
|
||||
# build-ignore-end
|
||||
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0")
|
||||
version_info = VersionInfo(major="2023", minor="4", micro="0.post1")
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
"ProjectSettings": {
|
||||
"Name": "cpl-translation",
|
||||
"Version": {
|
||||
"Major": "2023",
|
||||
"Minor": "4",
|
||||
"Major": "2024",
|
||||
"Minor": "7",
|
||||
"Micro": "0"
|
||||
},
|
||||
"Author": "Sven Heidemann",
|
||||
@@ -16,10 +16,10 @@
|
||||
"LicenseName": "MIT",
|
||||
"LicenseDescription": "MIT, see LICENSE for more details.",
|
||||
"Dependencies": [
|
||||
"cpl-core>=2023.4.0"
|
||||
"cpl-core>=2024.6.2024.07.0"
|
||||
],
|
||||
"DevDependencies": [
|
||||
"cpl-cli>=2023.4.0"
|
||||
"cpl-cli>=2024.6.2024.07.0"
|
||||
],
|
||||
"PythonVersion": ">=3.10",
|
||||
"PythonPath": {},
|
||||
|
||||
@@ -5,12 +5,12 @@ class TranslationSettings(ConfigurationModelABC):
|
||||
def __init__(
|
||||
self,
|
||||
languages: list = None,
|
||||
default_lang: str = None,
|
||||
default_language: str = None,
|
||||
):
|
||||
ConfigurationModelABC.__init__(self)
|
||||
|
||||
self._languages = [] if languages is None else languages
|
||||
self._default_lang = default_lang
|
||||
self._default_lang = default_language
|
||||
|
||||
@property
|
||||
def languages(self) -> list[str]:
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
"Database": "sh_cpl",
|
||||
"Charset": "utf8mb4",
|
||||
"UseUnicode": "true",
|
||||
"Buffered": "true",
|
||||
"AuthPlugin": "mysql_native_password"
|
||||
"Buffered": "true"
|
||||
}
|
||||
}
|
||||
@@ -3,5 +3,5 @@ from cpl_core.database.context import DatabaseContext
|
||||
|
||||
|
||||
class DBContext(DatabaseContext):
|
||||
def __init__(self, db_settings: DatabaseSettings):
|
||||
DatabaseContext.__init__(self, db_settings)
|
||||
def __init__(self):
|
||||
DatabaseContext.__init__(self)
|
||||
|
||||
@@ -21,7 +21,6 @@ class Startup(StartupABC):
|
||||
) -> ConfigurationABC:
|
||||
configuration.add_environment_variables("PYTHON_")
|
||||
configuration.add_environment_variables("CPL_")
|
||||
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)
|
||||
@@ -34,6 +33,7 @@ class Startup(StartupABC):
|
||||
self, services: ServiceCollectionABC, environment: ApplicationEnvironmentABC
|
||||
) -> ServiceProviderABC:
|
||||
# Create and connect to database
|
||||
self._configuration.parse_console_arguments(services)
|
||||
db_settings: DatabaseSettings = self._configuration.get_configuration(DatabaseSettings)
|
||||
services.add_db_context(DBContext, db_settings)
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ from cpl_core.dependency_injection import ServiceProviderABC
|
||||
from cpl_core.logging import LoggerABC
|
||||
from cpl_core.mailing import EMailClientABC, EMail
|
||||
from cpl_core.pipes import IPAddressPipe
|
||||
from test_settings import TestSettings
|
||||
from test_service import TestService
|
||||
|
||||
|
||||
@@ -57,4 +58,13 @@ class Application(ApplicationABC):
|
||||
Console.write_line("scope", scope)
|
||||
with self._services.create_scope() as s:
|
||||
Console.write_line("with scope", s)
|
||||
|
||||
test_settings = self._configuration.get_configuration(TestSettings)
|
||||
Console.write_line(test_settings.value)
|
||||
Console.write_line("reload config")
|
||||
self._configuration.add_json_file(f"appsettings.json")
|
||||
self._configuration.add_json_file(f"appsettings.{self._environment.environment_name}.json")
|
||||
self._configuration.add_json_file(f"appsettings.{self._environment.host_name}.json", optional=True)
|
||||
test_settings1 = self._configuration.get_configuration(TestSettings)
|
||||
Console.write_line(test_settings1.value)
|
||||
# self.test_send_mail()
|
||||
|
||||
@@ -29,5 +29,9 @@
|
||||
"UseUnicode": "true",
|
||||
"Buffered": "true",
|
||||
"AuthPlugin": "mysql_native_password"
|
||||
},
|
||||
|
||||
"TestSettings": {
|
||||
"Value": 20
|
||||
}
|
||||
}
|
||||
6
tests/custom/general/src/general/test_settings.py
Normal file
6
tests/custom/general/src/general/test_settings.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from cpl_core.configuration import ConfigurationModelABC
|
||||
|
||||
|
||||
class TestSettings(ConfigurationModelABC):
|
||||
def __init__(self, value: int = None):
|
||||
self.value = value
|
||||
@@ -2,8 +2,8 @@
|
||||
"ProjectSettings": {
|
||||
"Name": "set-pip-urls",
|
||||
"Version": {
|
||||
"Major": "2022",
|
||||
"Minor": "12",
|
||||
"Major": "2024",
|
||||
"Minor": "7",
|
||||
"Micro": "0"
|
||||
},
|
||||
"Author": "Sven Heidemann",
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
"ProjectSettings": {
|
||||
"Name": "set-version",
|
||||
"Version": {
|
||||
"Major": "2022",
|
||||
"Minor": "12",
|
||||
"Major": "2024",
|
||||
"Minor": "7",
|
||||
"Micro": "0"
|
||||
},
|
||||
"Author": "Sven Heidemann",
|
||||
@@ -16,8 +16,8 @@
|
||||
"LicenseName": "MIT",
|
||||
"LicenseDescription": "MIT, see LICENSE for more details.",
|
||||
"Dependencies": [
|
||||
"cpl-core==2022.12.0",
|
||||
"GitPython==3.1.29"
|
||||
"cpl-core>=2024.6.2024.07.0",
|
||||
"GitPython>=3.1.29"
|
||||
],
|
||||
"DevDependencies": [],
|
||||
"PythonVersion": ">=3.10.4",
|
||||
|
||||
@@ -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_core.core_test_suite import CoreTestSuite
|
||||
from unittests_query.query_test_suite import QueryTestSuite
|
||||
from unittests_translation.translation_test_suite import TranslationTestSuite
|
||||
|
||||
@@ -17,6 +18,7 @@ class Application(ApplicationABC):
|
||||
|
||||
def main(self):
|
||||
runner = unittest.TextTestRunner()
|
||||
runner.run(CoreTestSuite())
|
||||
runner.run(CLITestSuite())
|
||||
runner.run(QueryTestSuite())
|
||||
runner.run(TranslationTestSuite())
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
"ProjectSettings": {
|
||||
"Name": "unittests",
|
||||
"Version": {
|
||||
"Major": "2023",
|
||||
"Minor": "2",
|
||||
"Major": "2024",
|
||||
"Minor": "7",
|
||||
"Micro": "0"
|
||||
},
|
||||
"Author": "",
|
||||
@@ -16,7 +16,7 @@
|
||||
"LicenseName": "",
|
||||
"LicenseDescription": "",
|
||||
"Dependencies": [
|
||||
"cpl-core>=2023.2.0"
|
||||
"cpl-core>=2024.6.2024.07.0"
|
||||
],
|
||||
"PythonVersion": ">=3.10.4",
|
||||
"PythonPath": {},
|
||||
|
||||
@@ -8,6 +8,7 @@ from unittests_cli.constants import PLAYGROUND_PATH
|
||||
|
||||
class CommandTestCase(unittest.TestCase):
|
||||
_skip_tear_down = False
|
||||
_cwd = os.getcwd()
|
||||
|
||||
def __init__(self, method_name: str):
|
||||
unittest.TestCase.__init__(self, method_name)
|
||||
@@ -32,6 +33,7 @@ class CommandTestCase(unittest.TestCase):
|
||||
if cls._skip_tear_down:
|
||||
return
|
||||
try:
|
||||
os.chdir(cls._cwd)
|
||||
if os.path.exists(PLAYGROUND_PATH):
|
||||
shutil.rmtree(os.path.abspath(os.path.join(PLAYGROUND_PATH)))
|
||||
except Exception as e:
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
"ProjectSettings": {
|
||||
"Name": "unittest_cli",
|
||||
"Version": {
|
||||
"Major": "2023",
|
||||
"Minor": "2",
|
||||
"Major": "2024",
|
||||
"Minor": "7",
|
||||
"Micro": "0"
|
||||
},
|
||||
"Author": "",
|
||||
@@ -16,8 +16,8 @@
|
||||
"LicenseName": "",
|
||||
"LicenseDescription": "",
|
||||
"Dependencies": [
|
||||
"cpl-core>=2023.2.0",
|
||||
"cpl-cli>=2023.2.0"
|
||||
"cpl-core>=2024.6.2024.07.0",
|
||||
"cpl-cli>=2024.6.2024.07.0"
|
||||
],
|
||||
"PythonVersion": ">=3.10.4",
|
||||
"PythonPath": {},
|
||||
|
||||
0
unittests/unittests_core/configuration/__init__.py
Normal file
0
unittests/unittests_core/configuration/__init__.py
Normal file
@@ -0,0 +1,68 @@
|
||||
import os
|
||||
import sys
|
||||
import unittest
|
||||
from unittest.mock import Mock, MagicMock
|
||||
|
||||
from cpl_core.configuration import Configuration, ArgumentTypeEnum
|
||||
from cpl_core.database import DatabaseSettings
|
||||
from cpl_core.dependency_injection import ServiceProvider, ServiceCollection
|
||||
from cpl_core.mailing import EMailClientSettings
|
||||
|
||||
|
||||
class ConfigurationTestCase(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self._config = Configuration()
|
||||
|
||||
def test_env_vars(self):
|
||||
os.environ["CPLT_TESTVAR"] = "Hello World"
|
||||
os.environ["CPL_NOT_EXISTING"] = "Hello World"
|
||||
|
||||
self._config.add_environment_variables("CPLT_")
|
||||
|
||||
self.assertEqual(self._config.get_configuration("TESTVAR"), "Hello World")
|
||||
self.assertEqual(self._config.get_configuration("TESTVAR"), "Hello World")
|
||||
self.assertEqual(self._config.get_configuration("NOT_EXISTING"), None)
|
||||
|
||||
def test_add_json_file(self):
|
||||
self._config.add_json_file("unittests_core/configuration/test-settings.json")
|
||||
db = self._config.get_configuration(DatabaseSettings)
|
||||
self.assertIsNotNone(db)
|
||||
self.assertEqual("localhost", db.host)
|
||||
self.assertEqual("local", db.user)
|
||||
self.assertEqual("bG9jYWw=", db.password)
|
||||
self.assertEqual("local", db.database)
|
||||
self.assertEqual(int, type(db.port))
|
||||
self.assertEqual(3306, db.port)
|
||||
self.assertEqual("utf8mb4", db.charset)
|
||||
self.assertTrue(db.use_unicode)
|
||||
self.assertTrue(db.buffered)
|
||||
self.assertEqual("mysql_native_password", db.auth_plugin)
|
||||
self.assertIsNone(self._config.get_configuration(EMailClientSettings))
|
||||
|
||||
def test_add_config(self):
|
||||
self.assertIsNone(self._config.get_configuration("Test"))
|
||||
self._config.add_configuration("Test", "Hello World")
|
||||
self.assertIsNotNone(self._config.get_configuration("Test"))
|
||||
self.assertEqual("Hello World", self._config.get_configuration("Test"))
|
||||
|
||||
def test_console_argument(self):
|
||||
sc = ServiceCollection(self._config)
|
||||
self.assertEqual([], sys.argv[1:])
|
||||
sys.argv.append("flag")
|
||||
sys.argv.append("exec")
|
||||
sys.argv.append("var=test")
|
||||
self.assertNotEqual([], sys.argv[1:])
|
||||
|
||||
self._config.create_console_argument(ArgumentTypeEnum.Flag, "", "flag", [])
|
||||
mocked_exec = Mock()
|
||||
mocked_exec.run = MagicMock()
|
||||
sc.add_transient(mocked_exec)
|
||||
self._config.create_console_argument(ArgumentTypeEnum.Executable, "", "exec", [], Mock)
|
||||
self._config.create_console_argument(ArgumentTypeEnum.Variable, "", "var", [], "=")
|
||||
|
||||
self.assertIsNone(self._config.get_configuration("var"))
|
||||
self._config.parse_console_arguments(sc.build_service_provider())
|
||||
mocked_exec.run.assert_called()
|
||||
|
||||
self.assertEqual("test", self._config.get_configuration("var"))
|
||||
self.assertIn("flag", self._config.additional_arguments)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user