diff --git a/.python-version b/.python-version index 143c2f5..d7d8e42 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.8.19 +3.8.8 diff --git a/app_skellington/__init__.py b/app_skellington/__init__.py index 1f8ce08..ca40773 100644 --- a/app_skellington/__init__.py +++ b/app_skellington/__init__.py @@ -1,14 +1,14 @@ # flake8: noqa +from .cfg import Config, EnvironmentVariables + from .app_container import ( DEFAULT_APP_AUTHOR, DEFAULT_APP_NAME, ApplicationContainer, ApplicationContext, - NoCommandSpecified, - ServiceNotFound, ) -from .cfg import Config, EnvironmentVariables +from ._util import ServiceNotFound, NoCommandSpecified from .cli import ( EXPLICIT_FAIL_ON_UNKNOWN_ARGS, CommandEntry, diff --git a/app_skellington/_util.py b/app_skellington/_util.py index 84f5f8e..9222e53 100644 --- a/app_skellington/_util.py +++ b/app_skellington/_util.py @@ -124,3 +124,15 @@ def create_func(constructor, cls_method): return cls_method(cmd_class_instance, *args, **kwargs) return func + + +class ServiceNotFound(Exception): + """ + Application framework error: unable to find and inject dependency. + """ + + pass + + +class NoCommandSpecified(Exception): + pass diff --git a/app_skellington/_version.py b/app_skellington/_version.py index 607cd4a..4e44c6e 100644 --- a/app_skellington/_version.py +++ b/app_skellington/_version.py @@ -1,8 +1,12 @@ -# file generated by setuptools_scm +# file generated by setuptools-scm # don't change, don't track in version control + +__all__ = ["__version__", "__version_tuple__", "version", "version_tuple"] + TYPE_CHECKING = False if TYPE_CHECKING: - from typing import Tuple, Union + from typing import Tuple + from typing import Union VERSION_TUPLE = Tuple[Union[int, str], ...] else: @@ -13,5 +17,5 @@ __version__: str __version_tuple__: VERSION_TUPLE version_tuple: VERSION_TUPLE -__version__ = version = "0.2.2" -__version_tuple__ = version_tuple = (0, 2, 2) +__version__ = version = '0.3.0.dev6+g10e873d.d20250223' +__version_tuple__ = version_tuple = (0, 3, 0, 'dev6', 'g10e873d.d20250223') diff --git a/app_skellington/app_container.py b/app_skellington/app_container.py index 772d59e..44c876a 100644 --- a/app_skellington/app_container.py +++ b/app_skellington/app_container.py @@ -4,7 +4,10 @@ import os import appdirs -from . import _util, cfg, cli, log +from ._util import ServiceNotFound, NoCommandSpecified, get_root_asset +from . import log +from .cfg import Config +from .cli import CommandTree # Application scaffolding: from ._bootstrap import _bootstrap_logger @@ -49,7 +52,7 @@ class ApplicationContainer: # global state, configuration, loggers, and runtime args. self._dependencies = {} - config = cfg.Config(configspec_filepath, configini_filepath) + config = Config(configspec_filepath, configini_filepath) logger = log.LoggingLayer(self.appname, self.appauthor) # Try and load logging configuration if provided @@ -67,7 +70,7 @@ class ApplicationContainer: # Reference to context service avail. in root_app self["ctx"] = lambda: self.ctx - self.cli = cli.CommandTree() # Command-line interface + self.cli = CommandTree() # Command-line interface # Run methods if subclass implemented them: if callable(getattr(self, "_cli_options", None)): @@ -144,7 +147,7 @@ class ApplicationContainer: """ Attempt to find config.spec inside the installed package directory. """ - return _util.get_root_asset(configspec_filename) + return get_root_asset(configspec_filename) def _inject_service_dependencies(self, constructor): """ @@ -188,13 +191,3 @@ class ApplicationContainer: # Applications need a default usage -class ServiceNotFound(Exception): - """ - Application framework error: unable to find and inject dependency. - """ - - pass - - -class NoCommandSpecified(Exception): - pass diff --git a/app_skellington/cli.py b/app_skellington/cli.py index 30d7b1d..50d1c63 100644 --- a/app_skellington/cli.py +++ b/app_skellington/cli.py @@ -3,7 +3,7 @@ import inspect import re import sys -from . import NoCommandSpecified, app_container +from ._util import NoCommandSpecified from ._bootstrap import _bootstrap_logger # If explicit fail is enabled, any command with at least one unknown @@ -280,7 +280,7 @@ class CommandTree: # return self._invoke_command(lookup, args) else: - raise app_container.NoCommandSpecified("No command specified.") + raise NoCommandSpecified("No command specified.") def _invoke_command(self, cmd, args): command_to_be_invoked = cmd.callback