diff --git a/.coveragerc b/.coveragerc index a7cba45f..9d607ce9 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,3 +1,4 @@ [run] omit = tests/* + src/pysatl_experiment/__main__.py diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 2e0c0833..17a118c9 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -7,14 +7,14 @@ on: pull_request: branches: - main - types: [opened, synchronize, reopened, closed, review_requested] + types: [ opened, synchronize, reopened, closed, review_requested ] jobs: build-linux: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.10", "3.11", "3.12"] + python-version: [ "3.10", "3.11", "3.12" ] steps: - name: Checkout repository diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index 9480bbde..ea926349 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -9,7 +9,7 @@ on: - main types: [ opened, synchronize, reopened, closed, review_requested ] release: - types: [published] + types: [ published ] # disable permissions for all of the available permissions @@ -41,7 +41,7 @@ jobs: - name: Install dependencies with Poetry run: | - poetry install --with dev + poetry install --with docs - name: Fetch gh-pages branch run: | diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt deleted file mode 100644 index 9236e853..00000000 --- a/docs/requirements-docs.txt +++ /dev/null @@ -1,7 +0,0 @@ -markdown==3.10.2 -mkdocs==1.6.1 -mkdocs-material==9.7.6 -mdx_truly_sane_lists==1.3 -pymdown-extensions==10.21.3 -jinja2==3.1.6 -mike==2.2.0 diff --git a/pyproject.toml b/pyproject.toml index 5f7bea13..7f1c57b2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,6 +35,14 @@ psycopg2 = "2.9.12" pysatl-criterion = { version = "*", source = "testpypi", allow-prereleases = true } psutil = "^7.1.1" +[tool.poetry.group.docs.dependencies] +markdown = "3.10.2" +mkdocs = "1.6.1" +mkdocs-material = "9.7.6" +mdx-truly-sane-lists = "1.3" +pymdown-extensions = "10.21.3" +mike = "2.2.0" + [tool.poetry.group.dev.dependencies] markdown = "3.10.2" mkdocs = "1.6.1" @@ -107,6 +115,12 @@ enable = true vcs = "git" style = "pep440" +[tool.coverage.run] +source = ["pysatl_experiment"] +omit = [ + "*/__main__.py", +] + # Format for NON tagged commits format-jinja = """ {%- if distance == 0 -%} diff --git a/src/pysatl_experiment/loggers/buffering_handler.py b/src/pysatl_experiment/loggers/buffering_handler.py index 7fb20014..68a4a935 100644 --- a/src/pysatl_experiment/loggers/buffering_handler.py +++ b/src/pysatl_experiment/loggers/buffering_handler.py @@ -51,3 +51,6 @@ def flush(self): self.buffer = self.buffer[records_to_keep:] # TODO: replace with queue/circular buffer?? finally: self.release() + + +# TODO: currently not used anywhere diff --git a/src/pysatl_experiment/loggers/json_formatter.py b/src/pysatl_experiment/loggers/json_formatter.py index e4df8871..300438ee 100644 --- a/src/pysatl_experiment/loggers/json_formatter.py +++ b/src/pysatl_experiment/loggers/json_formatter.py @@ -19,6 +19,7 @@ # TODO: replace loosely typed dictionaries with a dedicated TypedDict schema for formatter configuration? +# TODO: currently not used anywhere class JsonFormatter(logging.Formatter): diff --git a/src/pysatl_experiment/loggers/rich_handler.py b/src/pysatl_experiment/loggers/rich_handler.py index 18e48467..2a62e2f3 100644 --- a/src/pysatl_experiment/loggers/rich_handler.py +++ b/src/pysatl_experiment/loggers/rich_handler.py @@ -24,6 +24,9 @@ from rich.text import Text +# TODO: currently not used anywhere + + class FtRichHandler(Handler): """ Custom Rich-based logging handler for colorized console output. diff --git a/src/pysatl_experiment/loggers/std_err_stream_handler.py b/src/pysatl_experiment/loggers/std_err_stream_handler.py index 6eff028e..152ac7ba 100644 --- a/src/pysatl_experiment/loggers/std_err_stream_handler.py +++ b/src/pysatl_experiment/loggers/std_err_stream_handler.py @@ -91,3 +91,4 @@ def emit(self, record): # TODO: is this handler needed at all instead of StreamHandler? if so, check for tests +# TODO: currently not used anywhere diff --git a/src/pysatl_experiment/misc.py b/src/pysatl_experiment/misc.py deleted file mode 100644 index 05d6d5a0..00000000 --- a/src/pysatl_experiment/misc.py +++ /dev/null @@ -1,40 +0,0 @@ -"""Core utilities for PySatl experiment system.""" - - -def deep_merge_dicts(source, destination, allow_null_overrides: bool = True): - """ - Deep merge two dictionaries in-place. - - Parameters - ---------- - source : dict - Source dictionary whose values override destination. - destination : dict - Target dictionary modified in-place. - allow_null_overrides : bool, optional - If True, None values from source override destination values. - - Returns - ------- - dict - Merged destination dictionary. - - Sample - ------ - >>> a = { 'first' : { 'rows' : { 'pass' : 'dog', 'number' : '1' } } } - >>> b = { 'first' : { 'rows' : { 'fail' : 'cat', 'number' : '5' } } } - >>> merge(b, a) == { 'first' : { 'rows' : { 'pass' : 'dog', 'fail' : 'cat', 'number' : '5' } } } - - Notes - ----- - Values from Source override destination, destination is returned (and modified!!). - """ - for key, value in source.items(): - if isinstance(value, dict): - # get node or create one - node = destination.setdefault(key, {}) - deep_merge_dicts(value, node, allow_null_overrides) - elif value is not None or allow_null_overrides: - destination[key] = value - - return destination