From ce5863b29a4b22bc6257d7a7e51efd08a00e4ea0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Tue, 5 Mar 2024 13:43:19 +0300 Subject: [PATCH 01/36] [DOP-13337] Bump version --- etl_entities/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etl_entities/VERSION b/etl_entities/VERSION index 276cbf9..2bf1c1c 100644 --- a/etl_entities/VERSION +++ b/etl_entities/VERSION @@ -1 +1 @@ -2.3.0 +2.3.1 From 347b8698c37fa04358f4b602d23f8658f4d47e2c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 07:12:48 +0000 Subject: [PATCH 02/36] Bump the github-actions group with 1 update Bumps the github-actions group with 1 update: [softprops/action-gh-release](https://github.com/softprops/action-gh-release). Updates `softprops/action-gh-release` from 1 to 2 - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/v1...v2) --- updated-dependencies: - dependency-name: softprops/action-gh-release dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions ... Signed-off-by: dependabot[bot] --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 001e0d0..ad3d190 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -102,7 +102,7 @@ jobs: - name: Create Github release id: create_release - uses: softprops/action-gh-release@v1 + uses: softprops/action-gh-release@v2 with: token: ${{ secrets.GITHUB_TOKEN }} draft: false From 7b9d5781153fe7f90eab3667802edc95d2f5849d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 21:05:24 +0000 Subject: [PATCH 03/36] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black-pre-commit-mirror: 24.2.0 → 24.3.0](https://github.com/psf/black-pre-commit-mirror/compare/24.2.0...24.3.0) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index de1f7e3..9379343 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -84,7 +84,7 @@ repos: args: [--py37-plus, --keep-runtime-typing] - repo: https://github.com/psf/black-pre-commit-mirror - rev: 24.2.0 + rev: 24.3.0 hooks: - id: black language_version: python3 From 9d002192e84d19704601f501e206dde848f0d537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Wed, 20 Mar 2024 10:48:19 +0300 Subject: [PATCH 04/36] [DOP-13779] Update blacken-docs --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9379343..0354abc 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -94,7 +94,7 @@ repos: hooks: - id: blacken-docs additional_dependencies: - - black==24.2.0 + - black==24.3.0 - repo: https://github.com/Lucas-C/pre-commit-hooks-bandit rev: v1.0.6 From 515cfe9c4583cc5eb624e26b6ad0b8c97d4cbda0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Wed, 20 Mar 2024 10:51:12 +0300 Subject: [PATCH 05/36] [DOP-13779] Update bandit hook --- .pre-commit-config.yaml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0354abc..a191a75 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -96,12 +96,15 @@ repos: additional_dependencies: - black==24.3.0 - - repo: https://github.com/Lucas-C/pre-commit-hooks-bandit - rev: v1.0.6 + - repo: https://github.com/pycqa/bandit + rev: 1.7.8 hooks: - - id: python-bandit-vulnerability-check - # TODO: remove line below after https://github.com/PyCQA/bandit/issues/488 - args: [-lll, --recursive, -x, './venv/*,./tests/*,./.pytest_cache/*', .] + - id: bandit + args: + - --aggregate=file + - -iii + - -ll + require_serial: true - repo: meta hooks: From 1bd3f6153297acf2ec7df4725c0bb4cfe89cc0eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Wed, 20 Mar 2024 11:50:18 +0300 Subject: [PATCH 06/36] [DOP-13779] Add robots.txt to documentation --- docs/conf.py | 2 +- docs/robots.txt | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 docs/robots.txt diff --git a/docs/conf.py b/docs/conf.py index 15d9bf3..f64c824 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -67,13 +67,13 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -# html_theme = "furo" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ["_static"] +html_extra_path = ["robots.txt"] # The master toctree document. master_doc = "index" diff --git a/docs/robots.txt b/docs/robots.txt new file mode 100644 index 0000000..dda0be5 --- /dev/null +++ b/docs/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: /*/stable/ +Allow: /en/stable/ # Fallback for bots that don't understand wildcards +Disallow: / From 8651b0db0dcc6bd524698096aff321df4aa3371b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Wed, 20 Mar 2024 11:55:32 +0300 Subject: [PATCH 07/36] [DOP-13779] Update robots.txt --- docs/robots.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/robots.txt b/docs/robots.txt index dda0be5..7262bef 100644 --- a/docs/robots.txt +++ b/docs/robots.txt @@ -2,3 +2,4 @@ User-agent: * Allow: /*/stable/ Allow: /en/stable/ # Fallback for bots that don't understand wildcards Disallow: / +Sitemap: https://etl-entities.readthedocs.io/sitemap.xml From 76ad97655da19b7866357ae1c3253d30ca98bed0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 25 Mar 2024 20:52:22 +0000 Subject: [PATCH 08/36] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/asottile/pyupgrade: v3.15.1 → v3.15.2](https://github.com/asottile/pyupgrade/compare/v3.15.1...v3.15.2) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a191a75..6510c8b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -78,7 +78,7 @@ repos: - id: text-unicode-replacement-char - repo: https://github.com/asottile/pyupgrade - rev: v3.15.1 + rev: v3.15.2 hooks: - id: pyupgrade args: [--py37-plus, --keep-runtime-typing] From 8449506cba802b8c84465ec654f064acfb350a39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Tue, 26 Mar 2024 10:44:43 +0300 Subject: [PATCH 09/36] Fix wemake-python-styleguide errors --- setup.cfg | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/setup.cfg b/setup.cfg index 5acf076..17a6caa 100644 --- a/setup.cfg +++ b/setup.cfg @@ -262,8 +262,9 @@ per-file-ignores = # WPS420 Found wrong keyword WPS420, # WPS432 Found magic number: 2020 - WPS432 - + WPS432, +# WPS474 Found import object collision + WPS474 [darglint] docstring_style = sphinx From 70bd824ff93b30b02d45e8de41dd34721feb2867 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Tue, 26 Mar 2024 10:48:19 +0300 Subject: [PATCH 10/36] Fix wemake-python-styleguide errors --- setup.cfg | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/setup.cfg b/setup.cfg index 17a6caa..67d45fa 100644 --- a/setup.cfg +++ b/setup.cfg @@ -194,7 +194,9 @@ ignore = # Q000 Single quotes found but double quotes preferred (doesn't work in version < 3.12) Q000, # WPS410 Found wrong metadata variable: __all__ - WPS410 + WPS410, +# WPS474 Found import object collision + WPS474 # http://flake8.pycqa.org/en/latest/user/options.html?highlight=per-file-ignores#cmdoption-flake8-per-file-ignores per-file-ignores = @@ -262,9 +264,7 @@ per-file-ignores = # WPS420 Found wrong keyword WPS420, # WPS432 Found magic number: 2020 - WPS432, -# WPS474 Found import object collision - WPS474 + WPS432 [darglint] docstring_style = sphinx From 796a25bd1d37758f4d5d97008049b0b05249c3e8 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 1 Apr 2024 21:05:46 +0000 Subject: [PATCH 11/36] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/macisamuele/language-formatters-pre-commit-hooks: v2.12.0 → v2.13.0](https://github.com/macisamuele/language-formatters-pre-commit-hooks/compare/v2.12.0...v2.13.0) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6510c8b..4960e69 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -54,7 +54,7 @@ repos: args: [-w] - repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks - rev: v2.12.0 + rev: v2.13.0 hooks: - id: pretty-format-yaml args: [--autofix, --indent, '2', --offset, '2'] From c5306bf2b70c3eab89aa0dc077912a623d56fd1d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 8 Apr 2024 21:24:18 +0000 Subject: [PATCH 12/36] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/pre-commit-hooks: v4.5.0 → v4.6.0](https://github.com/pre-commit/pre-commit-hooks/compare/v4.5.0...v4.6.0) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4960e69..1220586 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,7 +3,7 @@ default_language_version: repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 + rev: v4.6.0 hooks: - id: check-ast - id: check-case-conflict From 276da4943f6364f5145203906e8ff87805174543 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 16 Apr 2024 11:02:50 +0300 Subject: [PATCH 13/36] [pre-commit.ci] pre-commit autoupdate (#88) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1220586..5b11808 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -84,7 +84,7 @@ repos: args: [--py37-plus, --keep-runtime-typing] - repo: https://github.com/psf/black-pre-commit-mirror - rev: 24.3.0 + rev: 24.4.0 hooks: - id: black language_version: python3 From b1b077c0c3a6d44f0907080afcc772d9e7a0f196 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Mon, 22 Apr 2024 18:39:11 +0300 Subject: [PATCH 14/36] [DOP-14025] Cleanup unused cache after merging PR --- .github/workflows/cache-cleanup.yml | 40 +++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/cache-cleanup.yml diff --git a/.github/workflows/cache-cleanup.yml b/.github/workflows/cache-cleanup.yml new file mode 100644 index 0000000..0f6b3fc --- /dev/null +++ b/.github/workflows/cache-cleanup.yml @@ -0,0 +1,40 @@ +name: Cleanup caches after merge +on: + pull_request: + types: + - closed + workflow_dispatch: + +jobs: + cleanup: + runs-on: ubuntu-latest + permissions: + # `actions:write` permission is required to delete caches + # See also: https://docs.github.com/en/rest/actions/cache?apiVersion=2022-11-28#delete-a-github-actions-cache-for-a-repository-using-a-cache-id + actions: write + contents: read + + steps: + - name: Check out code + uses: actions/checkout@v3 + + - name: Cleanup cache + run: | + gh extension install actions/gh-actions-cache + + REPO=${{ github.repository }} + BRANCH=refs/pull/${{ github.event.pull_request.number }}/merge + + echo "Fetching list of cache key" + cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH --limit 100 --sort size | cut -f 1 ) + + ## Setting this to not fail the workflow while deleting cache keys. + set +e + echo "Deleting caches..." + for cacheKey in $cacheKeysForPR + do + gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm + done + echo "Done" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 2ec395bce502ae29b41f7c0d143b402fd5d3efe5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Fri, 26 Apr 2024 18:59:07 +0300 Subject: [PATCH 15/36] [DOP-15564] Add trailing commas to Python code --- .pre-commit-config.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5b11808..9bd368c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -83,6 +83,11 @@ repos: - id: pyupgrade args: [--py37-plus, --keep-runtime-typing] + - repo: https://github.com/asottile/add-trailing-comma + rev: v3.1.0 + hooks: + - id: add-trailing-comma + - repo: https://github.com/psf/black-pre-commit-mirror rev: 24.4.0 hooks: From 1edc940f494003ba352afb4f0dd5372ec97f889d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 08:02:03 +0000 Subject: [PATCH 16/36] Bump actions/checkout from 3 to 4 in the github-actions group Bumps the github-actions group with 1 update: [actions/checkout](https://github.com/actions/checkout). Updates `actions/checkout` from 3 to 4 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions ... Signed-off-by: dependabot[bot] --- .github/workflows/cache-cleanup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cache-cleanup.yml b/.github/workflows/cache-cleanup.yml index 0f6b3fc..b960a74 100644 --- a/.github/workflows/cache-cleanup.yml +++ b/.github/workflows/cache-cleanup.yml @@ -16,7 +16,7 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Cleanup cache run: | From 6e667c302697565e3d3f378dc4d5e7875bfe55df Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 21:22:23 +0000 Subject: [PATCH 17/36] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black-pre-commit-mirror: 24.4.0 → 24.4.2](https://github.com/psf/black-pre-commit-mirror/compare/24.4.0...24.4.2) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9bd368c..f692a36 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -89,7 +89,7 @@ repos: - id: add-trailing-comma - repo: https://github.com/psf/black-pre-commit-mirror - rev: 24.4.0 + rev: 24.4.2 hooks: - id: black language_version: python3 From f386e9b5ad8a2cfefc19dfd17708610256a56412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Mon, 20 May 2024 12:43:21 +0300 Subject: [PATCH 18/36] [DOP-14061] Replace asserts in documentation with doctest style --- .github/workflows/test.yml | 3 +- codecov.yml | 2 +- .../changelog/next_release/91.improvement.rst | 1 + docs/conf.py | 6 + etl_entities/hwm/column/column_hwm.py | 45 ++---- etl_entities/hwm/file/file_list_hwm.py | 92 +++++------- etl_entities/hwm/hwm.py | 80 +++++----- etl_entities/hwm/hwm_type_registry.py | 137 ++++++++++-------- etl_entities/hwm/key_value/key_value_hwm.py | 23 ++- .../hwm/key_value/key_value_int_hwm.py | 25 ---- etl_entities/hwm_store/base_hwm_store.py | 14 +- .../hwm_store/hwm_store_class_registry.py | 57 +++----- .../hwm_store/hwm_store_stack_manager.py | 14 +- etl_entities/hwm_store/memory_hwm_store.py | 33 ++--- pytest.ini | 3 +- tests/test_hwm/test_column_hwm.py | 2 +- 16 files changed, 237 insertions(+), 300 deletions(-) create mode 100644 docs/changelog/next_release/91.improvement.rst diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9b0cbf1..e0d7de6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -63,7 +63,8 @@ jobs: run: | mkdir reports/ || echo "Directory exists" pip install -e . --no-build-isolation - ./run_tests.sh + # run both tests ad doctests + ./run_tests.sh etl_entities/hwm tests - name: Upload coverage results uses: actions/upload-artifact@v4 diff --git a/codecov.yml b/codecov.yml index 1982507..7291c7a 100644 --- a/codecov.yml +++ b/codecov.yml @@ -2,5 +2,5 @@ coverage: status: project: default: - target: 96% + target: 94% threshold: 1% diff --git a/docs/changelog/next_release/91.improvement.rst b/docs/changelog/next_release/91.improvement.rst new file mode 100644 index 0000000..1e9650b --- /dev/null +++ b/docs/changelog/next_release/91.improvement.rst @@ -0,0 +1 @@ +Replace all ``assert`` in documentation with doctest syntax. This should make documentation more readable. diff --git a/docs/conf.py b/docs/conf.py index f64c824..8f415e2 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -96,6 +96,12 @@ # Output file base name for HTML help builder. htmlhelp_basename = "etl-entities-doc" +# prevent >>>, ... and doctest outputs from copying +copybutton_prompt_text = r">>> |\.\.\. |\$ |In \[\d*\]: | {2,5}\.\.\.: | {5,8}: " +copybutton_prompt_is_regexp = True +copybutton_copy_empty_lines = False +copybutton_only_copy_prompt_lines = True + towncrier_draft_autoversion_mode = "draft" towncrier_draft_include_empty = False towncrier_draft_working_directory = PROJECT_ROOT_DIR diff --git a/etl_entities/hwm/column/column_hwm.py b/etl_entities/hwm/column/column_hwm.py index d8b3861..d686fa1 100644 --- a/etl_entities/hwm/column/column_hwm.py +++ b/etl_entities/hwm/column/column_hwm.py @@ -69,15 +69,10 @@ def __add__(self: ColumnHWMType, value: ColumnValueType) -> ColumnHWMType: Examples -------- - .. code:: python - - # assume val2 == val1 + inc - - hwm1 = ColumnHWM(value=val1, ...) - hwm2 = ColumnHWM(value=val2, ...) - - # same as ColumnHWM(value=hwm1.value + inc, ...) - assert hwm1 + inc == hwm2 + >>> hwm = ColumnHWM(value=100, name="my_hwm") + >>> hwm = hwm + 2 + >>> hwm.value + 102 """ new_value = self.value + value # type: ignore[operator] @@ -106,15 +101,10 @@ def __sub__(self: ColumnHWMType, value: ColumnValueType) -> ColumnHWMType: Examples -------- - .. code:: python - - # assume val2 == val1 - dec - - hwm1 = ColumnHWM(value=val1, ...) - hwm2 = ColumnHWM(value=val2, ...) - - # same as ColumnHWM(value=hwm1.value - dec, ...) - assert hwm1 - dec == hwm2 + >>> hwm = ColumnHWM(value=100, name="my_hwm") + >>> hwm = hwm - 2 + >>> hwm.value + 98 """ new_value = self.value - value # type: ignore[operator] @@ -164,17 +154,14 @@ def update(self: ColumnHWMType, value: ColumnValueType) -> ColumnHWMType: Examples -------- - .. code:: python - - from etl_entities.hwm import ColumnIntHWM - - hwm = ColumnIntHWM(value=1, ...) - - hwm.update(2) - assert hwm.value == 2 - - hwm.update(1) - assert hwm.value == 2 # value cannot decrease + >>> from etl_entities.hwm import ColumnIntHWM + >>> hwm = ColumnIntHWM(value=1, name="my_hwm") + >>> hwm = hwm.update(2) + >>> hwm.value + 2 + >>> hwm = hwm.update(1) + >>> hwm.value # value cannot decrease + 2 """ if self.value is None: diff --git a/etl_entities/hwm/file/file_list_hwm.py b/etl_entities/hwm/file/file_list_hwm.py index 382f89e..2f0bcc8 100644 --- a/etl_entities/hwm/file/file_list_hwm.py +++ b/etl_entities/hwm/file/file_list_hwm.py @@ -71,14 +71,12 @@ def covers(self, value: str | os.PathLike) -> bool: # type: ignore Examples -------- - .. code:: python - - from etl_entities.hwm import FileListHWM - - hwm = FileListHWM(value={"some/path.py"}, ...) - - assert hwm.covers("some/path.py") # path in HWM - assert not hwm.covers("another/path.py") # path not in HWM + >>> from etl_entities.hwm import FileListHWM + >>> hwm = FileListHWM(value={"/some/path.py"}, name="my_hwm") + >>> hwm.covers("/some/path.py") # path in HWM + True + >>> hwm.covers("/another/path.py") # path not in HWM + False """ return value in self @@ -99,30 +97,16 @@ def update(self: FileListHWMType, value: str | os.PathLike | Iterable[str | os.P Examples -------- - .. code:: python - - from etl_entities.hwm import FileListHWM - from etl_entities.instance import AbsolutePath - - hwm = FileListHWM(value=["/some/existing_path.py"], ...) - - # new paths are appended - hwm.update("/some/new_path.py") - assert hwm.value == frozenset( - { - AbsolutePath("/some/existing_path.py"), - AbsolutePath("/some/new_path.py"), - } - ) - - # existing paths do nothing - hwm.update("/some/existing_path.py") - assert hwm.value == frozenset( - { - AbsolutePath("/some/existing_path.py"), - AbsolutePath("/some/new_path.py"), - } - ) + >>> from etl_entities.hwm import FileListHWM + >>> hwm = FileListHWM(value=["/some/existing_path.py"], name="my_hwm") + >>> # new paths are appended + >>> hwm = hwm.update("/some/new_path.py") + >>> sorted(hwm.value) + [AbsolutePath('/some/existing_path.py'), AbsolutePath('/some/new_path.py')] + >>> # existing path already here + >>> hwm = hwm.update("/some/existing_path.py") + >>> sorted(hwm.value) + [AbsolutePath('/some/existing_path.py'), AbsolutePath('/some/new_path.py')] """ new_value = self.value | self._check_new_value(value) @@ -149,15 +133,11 @@ def __add__(self: FileListHWMType, value: str | os.PathLike | Iterable[str | os. Examples -------- - .. code:: python - - from etl_entities.hwm import FileListHWM - - hwm1 = FileListHWM(value={"some/path"}, ...) - hwm2 = FileListHWM(value={"some/path", "another.file"}, ...) - - assert hwm1 + "another.file" == hwm2 - # same as FileListHWM(value=hwm1.value | {"another.file"}, ...) + >>> from etl_entities.hwm import FileListHWM + >>> hwm = FileListHWM(value={"/some/path"}, name="my_hwm") + >>> hwm = hwm + "/another.file" + >>> sorted(hwm.value) + [AbsolutePath('/another.file'), AbsolutePath('/some/path')] """ new_value = self.value | self._check_new_value(value) @@ -184,15 +164,11 @@ def __sub__(self: FileListHWMType, value: str | os.PathLike | Iterable[str | os. Examples -------- - .. code:: python - - from etl_entities.hwm import FileListHWM - - hwm1 = FileListHWM(value={"some/path"}, ...) - hwm2 = FileListHWM(value={"some/path", "another.file"}, ...) - - assert hwm1 - "another.file" == hwm2 - # same as FileListHWM(value=hwm1.value - {"another.file"}, ...) + >>> from etl_entities.hwm import FileListHWM + >>> hwm = FileListHWM(value={"/some/path", "/another.file"}, name="my_hwm") + >>> hwm = hwm - "/another.file" + >>> sorted(hwm.value) + [AbsolutePath('/some/path')] """ new_value = self.value - self._check_new_value(value) @@ -213,15 +189,13 @@ def __contains__(self, item): Examples -------- - .. code:: python - - from etl_entities.hwm import FileListHWM - from etl_entities.instance import AbsolutePath - - hwm = FileListHWM(value={"/some/path"}, ...) - - assert "/some/path" in hwm - assert "/another/path" not in hwm + >>> from etl_entities.hwm import FileListHWM + >>> from etl_entities.instance import AbsolutePath + >>> hwm = FileListHWM(value={"/some/path"}, name="my_hwm") + >>> "/some/path" in hwm + True + >>> "/another/path" in hwm + False """ if isinstance(item, str): diff --git a/etl_entities/hwm/hwm.py b/etl_entities/hwm/hwm.py index 986f13d..d2c96bf 100644 --- a/etl_entities/hwm/hwm.py +++ b/etl_entities/hwm/hwm.py @@ -75,14 +75,11 @@ def set_value(self: HWMType, value: ValueType | None) -> HWMType: Examples -------- - .. code:: python - - from etl_entities.hwm import ColumnIntHWM - - hwm = ColumnIntHWM(value=1, ...) - - hwm.set_value(2) - assert hwm.value == 2 + >>> from etl_entities.hwm import ColumnIntHWM + >>> hwm = ColumnIntHWM(value=1, name="my_hwm") + >>> hwm = hwm.set_value(2) + >>> hwm.value + 2 """ new_value = self._check_new_value(value) @@ -105,18 +102,20 @@ def serialize(self) -> dict: Examples -------- - .. code:: python - - from etl_entities.hwm import ColumnIntHWM - - hwm = ColumnIntHWM(value=1, ...) - assert hwm.serialize() == { - "value": "1", - "type": "int", - "column": "column_name", - "name": "table_name", - "description": ..., - } + >>> from etl_entities.hwm import ColumnIntHWM + + >>> hwm = ColumnIntHWM(name="my_hwm", value=1, entity="some_column", description="some description") + >>> json = hwm.serialize() + >>> json["type"] + 'column_int' + >>> json["name"] + 'my_hwm' + >>> json["value"] + 1 + >>> json["entity"] + 'some_column' + >>> json["description"] + 'some description' """ result = super().serialize() @@ -135,21 +134,30 @@ def deserialize(cls: type[HWMType], inp: dict) -> HWMType: Examples -------- - - .. code:: python - - from etl_entities.hwm import ColumnIntHWM - - assert ColumnIntHWM.deserialize( - { - "value": "1", - "type": "int", - "column": "column_name", - "name": "name", - } - ) == ColumnIntHWM(value=1, ...) - - ColumnIntHWM.deserialize({"type": "date"}) # raises ValueError + >>> from etl_entities.hwm import ColumnIntHWM + >>> hwm = ColumnIntHWM.deserialize( + ... { + ... "type": "column_int", + ... "name": "my_hwm", + ... "value": "1", + ... "entity": "some_column", + ... "description": "some description", + ... } + ... ) + >>> type(hwm) + + >>> hwm.name + 'my_hwm' + >>> hwm.value + 1 + >>> hwm.entity + 'some_column' + >>> hwm.description + 'some description' + >>> ColumnIntHWM.deserialize({"type": "column_date"}) + Traceback (most recent call last): + ... + ValueError: Type 'column_date' does not match class 'ColumnIntHWM' """ value = deepcopy(inp) @@ -157,7 +165,7 @@ def deserialize(cls: type[HWMType], inp: dict) -> HWMType: if type_name: hwm_type = HWMTypeRegistry.get(type_name) if not issubclass(cls, hwm_type): - raise ValueError(f"Type {type_name} does not match class {cls.__name__}") + raise ValueError(f"Type {type_name!r} does not match class {cls.__qualname__!r}") return super().deserialize(value) diff --git a/etl_entities/hwm/hwm_type_registry.py b/etl_entities/hwm/hwm_type_registry.py index 8f713fb..71cfdf3 100644 --- a/etl_entities/hwm/hwm_type_registry.py +++ b/etl_entities/hwm/hwm_type_registry.py @@ -28,19 +28,20 @@ def get(cls, type_name: str) -> type[HWM]: Examples -------- - .. code:: python - - from etl_entities.hwm import HWMTypeRegistry, ColumnIntHWM, ColumnDateHWM - - assert HWMTypeRegistry.get("int") == ColumnIntHWM - assert HWMTypeRegistry.get("date") == ColumnDateHWM - - HWMTypeRegistry.get("unknown") # raises KeyError + >>> from etl_entities.hwm import HWMTypeRegistry, ColumnIntHWM, ColumnDateHWM + >>> HWMTypeRegistry.get("column_int") + + >>> HWMTypeRegistry.get("column_date") + + >>> HWMTypeRegistry.get("unknown") + Traceback (most recent call last): + ... + KeyError: "Unknown HWM type 'unknown'" """ result = cls._mapping.get(type_name) if not result: - raise KeyError(f"Unknown HWM type {type_name}") + raise KeyError(f"Unknown HWM type {type_name!r}") return result @@ -57,19 +58,21 @@ def get_key(cls, klass: type[HWM]) -> str: Examples -------- - .. code:: python - - from etl_entities.hwm import HWMTypeRegistry, ColumnIntHWM, ColumnDateHWM - - assert HWMTypeRegistry.get_key(ColumnIntHWM) == "int" - assert HWMTypeRegistry.get_key(ColumnDateHWM) == "date" - - HWMTypeRegistry.get_key(UnknownHWM) # raises KeyError + >>> from etl_entities.hwm import HWMTypeRegistry, ColumnIntHWM, ColumnDateHWM, HWM + >>> HWMTypeRegistry.get_key(ColumnIntHWM) + 'column_int' + >>> HWMTypeRegistry.get_key(ColumnDateHWM) + 'column_date' + >>> class UnknownHWM(HWM): ... + >>> HWMTypeRegistry.get_key(UnknownHWM) + Traceback (most recent call last): + ... + KeyError: "You should register 'UnknownHWM' class using @register_hwm_type decorator" """ result = cls._mapping.inverse.get(klass) if not result: - raise KeyError(f"You should register {klass} class using @register_hwm_type decorator") + raise KeyError(f"You should register {klass.__qualname__!r} class using @register_hwm_type decorator") return result @@ -90,17 +93,11 @@ def add(cls, type_name: str, klass: type[HWM]) -> None: Examples -------- - .. code:: python - - from etl_entities.hwm import HWMTypeRegistry, HWM - - - class MyHWM(HWM): ... - - - HWMTypeRegistry.add("my_hwm", MyHWM) - - assert HWMTypeRegistry.get("my_hwm") == MyHWM + >>> from etl_entities.hwm import HWMTypeRegistry, HWM + >>> class MyHWM(HWM): ... + >>> HWMTypeRegistry.add("my_hwm", MyHWM) + >>> HWMTypeRegistry.get("my_hwm") + """ cls._mapping[type_name] = klass @@ -118,20 +115,30 @@ def parse(cls, inp: dict) -> HWM: Examples -------- - .. code:: python - - from etl_entities.hwm import HWMTypeRegistry, ColumnIntHWM - - hwm = HWMTypeRegistry.parse( - { - "type": "column_int", - "name": "some_name", - "value": "1", - } - ) - assert hwm == ColumnIntHWM(name="some_name", value=1) - - HWMTypeRegistry.parse({"type": "unknown"}) # raises KeyError + >>> from etl_entities.hwm import HWMTypeRegistry, ColumnIntHWM + >>> hwm = HWMTypeRegistry.parse( + ... { + ... "type": "column_int", + ... "name": "some_name", + ... "value": "1", + ... "entity": "some_entity", + ... "description": "some description", + ... } + ... ) + >>> type(hwm) + + >>> hwm.name + 'some_name' + >>> hwm.value + 1 + >>> hwm.entity + 'some_entity' + >>> hwm.description + 'some description' + >>> HWMTypeRegistry.parse({"type": "unknown"}) + Traceback (most recent call last): + ... + KeyError: "Unknown HWM type 'unknown'" """ klass = cls.get(inp["type"]) @@ -144,26 +151,30 @@ def register_hwm_type(type_name: str): Examples -------- - .. code:: python - - from etl_entities.hwm import HWMTypeRegistry, register_hwm_type, HWM - - - @register_hwm_type("my_hwm") - class MyHWM(HWM): ... - - - assert HWMTypeRegistry.get("my_hwm") == MyHWM - - hwm = HWMTypeRegistry.parse( - { - "type": "my_hwm", - "name": "some_name", - "value": "1", - } - ) - assert hwm == MyHWM(name="some_name", value=1) - + >>> from etl_entities.hwm import HWMTypeRegistry, register_hwm_type, ColumnHWM + >>> @register_hwm_type("my_hwm") + ... class MyHWM(ColumnHWM): ... + >>> HWMTypeRegistry.get("my_hwm") + + >>> hwm = HWMTypeRegistry.parse( + ... { + ... "type": "my_hwm", + ... "name": "some_name", + ... "value": 1, + ... "entity": "some_entity", + ... "description": "some description", + ... }, + ... ) + >>> type(hwm) + + >>> hwm.name + 'some_name' + >>> hwm.value + 1 + >>> hwm.entity + 'some_entity' + >>> hwm.description + 'some description' """ def wrapper(klass): diff --git a/etl_entities/hwm/key_value/key_value_hwm.py b/etl_entities/hwm/key_value/key_value_hwm.py index 9e63a67..33f24a5 100644 --- a/etl_entities/hwm/key_value/key_value_hwm.py +++ b/etl_entities/hwm/key_value/key_value_hwm.py @@ -76,19 +76,16 @@ def update(self: KeyValueHWMType, new_data: dict) -> KeyValueHWMType: Examples -------- - .. code:: python - - from frozendict import frozendict - from etl_entities.hwm import KeyValueHWM - - hwm = KeyValueHWM(value={0: 100, 1: 120}, ...) - - hwm.update({1: 125, 2: 130}) - assert hwm.value == frozendict({0: 100, 1: 125, 2: 130}) - - # The offset for partition 1 is not updated as 123 is less than 125 - hwm.update({1: 123}) - assert hwm.value == frozendict({0: 100, 1: 125, 2: 130}) + >>> from frozendict import frozendict + >>> from etl_entities.hwm import KeyValueHWM + >>> hwm = KeyValueHWM(value={0: 100, 1: 120}, name="my_hwm") + >>> hwm = hwm.update({1: 125, 2: 130}) + >>> hwm.value + frozendict.frozendict({0: 100, 1: 125, 2: 130}) + >>> # Value for key 1 is not updated as 123 is less than current 125 + >>> hwm = hwm.update({1: 123}) + >>> hwm.value + frozendict.frozendict({0: 100, 1: 125, 2: 130}) """ modified = False diff --git a/etl_entities/hwm/key_value/key_value_int_hwm.py b/etl_entities/hwm/key_value/key_value_int_hwm.py index f6e1167..503d431 100644 --- a/etl_entities/hwm/key_value/key_value_int_hwm.py +++ b/etl_entities/hwm/key_value/key_value_int_hwm.py @@ -66,31 +66,6 @@ class KeyValueIntHWM(KeyValueHWM[int]): value: frozendict = Field(default_factory=frozendict) def serialize(self) -> dict: - """Return dict representation of HWM - - Returns - ------- - result : dict - - Serialized HWM - - Examples - -------- - - .. code:: python - - from etl_entities.hwm import ColumnIntHWM - - hwm = ColumnIntHWM(value=1, ...) - assert hwm.serialize() == { - "value": "1", - "type": "int", - "column": "column_name", - "name": "table_name", - "description": ..., - } - """ - # Convert self.value to a regular dictionary if it is a frozendict # This is necessary because frozendict objects are not natively serializable to JSON. serialized_data = { diff --git a/etl_entities/hwm_store/base_hwm_store.py b/etl_entities/hwm_store/base_hwm_store.py index cf9de2c..a93d294 100644 --- a/etl_entities/hwm_store/base_hwm_store.py +++ b/etl_entities/hwm_store/base_hwm_store.py @@ -22,14 +22,12 @@ def __enter__(self): Examples -------- - .. code:: python - - from etl_entities.hwm_store import HWMStoreStackManager - - with SomeHWMStore(...) as hwm_store: - assert HWMStoreStackManager.get_current() == hwm_store - - assert HWMStoreStackManager.get_current() == default_hwm_store + >>> from etl_entities.hwm_store import HWMStoreStackManager + >>> with SomeHWMStore(...) as hwm_store: + ... print(HWMStoreStackManager.get_current()) + SomeHWMStore(...) + >>> HWMStoreStackManager.get_current() + DefaultHWMStore() """ # hack to avoid circular imports from etl_entities.hwm_store.hwm_store_stack_manager import HWMStoreStackManager diff --git a/etl_entities/hwm_store/hwm_store_class_registry.py b/etl_entities/hwm_store/hwm_store_class_registry.py index 3411d53..50eada1 100644 --- a/etl_entities/hwm_store/hwm_store_class_registry.py +++ b/etl_entities/hwm_store/hwm_store_class_registry.py @@ -23,16 +23,15 @@ def get(cls, alias: str | None = None) -> type: Examples -------- - .. code:: python - - from etl_entities.hwm_store import HWMStoreClassRegistry, MemoryHWMStore - - HWMStoreClassRegistry.get("memory") == MemoryHWMStore - - HWMStoreClassRegistry.get("unknown") # raise KeyError - - HWMStoreClassRegistry.get() # some default HWM Store, see `set_default` - + >>> from etl_entities.hwm_store import HWMStoreClassRegistry + >>> HWMStoreClassRegistry.get("memory") + + >>> HWMStoreClassRegistry.get("unknown") + Traceback (most recent call last): + ... + KeyError: "Unknown HWM Store type 'unknown'" + >>> HWMStoreClassRegistry.get() # some default HWM Store, see `set_default` + """ if not alias: return cls._default @@ -54,19 +53,16 @@ def add(cls, alias: str, klass: type[BaseHWMStore]) -> None: Examples -------- - .. code:: python - - from etl_entities.hwm_store import HWMStoreClassRegistry, BaseHWMStore - - HWMStoreClassRegistry.get("my_store") # raise KeyError - - - class MyHWMStore(BaseHWMStore): ... - - - HWMStoreClassRegistry.add("my_store", MyHWMStore) - HWMStoreClassRegistry.get("my_store") == MyHWMStore + >>> from etl_entities.hwm_store import HWMStoreClassRegistry, BaseHWMStore + >>> HWMStoreClassRegistry.get("my_store") # raise KeyError + Traceback (most recent call last): + ... + KeyError: "Unknown HWM Store type 'my_store'" + >>> class MyHWMStore(BaseHWMStore): ... + >>> HWMStoreClassRegistry.add("my_store", MyHWMStore) + >>> HWMStoreClassRegistry.get("my_store") + """ assert isinstance(alias, str) # noqa: S101 assert issubclass(klass, BaseHWMStore) # noqa: S101 @@ -80,18 +76,11 @@ def set_default(cls, klass: type[BaseHWMStore]) -> None: Examples -------- - .. code-block:: python - - from etl_entities.hwm_store import HWMStoreClassRegistry, BaseHWMStore - - - class MyHWMStore(BaseHWMStore): ... - - - HWMStoreClassRegistry.set_default(MyHWMStore) - - assert HWMStoreClassRegistry.get() == MyHWMStore - + >>> from etl_entities.hwm_store import HWMStoreClassRegistry, BaseHWMStore + >>> class MyHWMStore(BaseHWMStore): ... + >>> HWMStoreClassRegistry.set_default(MyHWMStore) + >>> HWMStoreClassRegistry.get() + """ cls._default = klass diff --git a/etl_entities/hwm_store/hwm_store_stack_manager.py b/etl_entities/hwm_store/hwm_store_stack_manager.py index d977afc..9170184 100644 --- a/etl_entities/hwm_store/hwm_store_stack_manager.py +++ b/etl_entities/hwm_store/hwm_store_stack_manager.py @@ -39,14 +39,12 @@ def get_current(cls) -> BaseHWMStore: Examples -------- - .. code:: python - - from etl_entities.hwm_store import HWMStoreStackManager - - with SomeHWMStore(...) as hwm_store: - assert HWMStoreStackManager.get_current() == hwm_store - - assert HWMStoreStackManager.get_current() == default_hwm_store + >>> from etl_entities.hwm_store import HWMStoreStackManager + >>> with SomeHWMStore(...) as hwm_store: + ... print(HWMStoreStackManager.get_current()) + SomeHWMStore(...) + >>> HWMStoreStackManager.get_current() + DefaultHWMStore() """ if cls._stack: return cls._stack[-1] diff --git a/etl_entities/hwm_store/memory_hwm_store.py b/etl_entities/hwm_store/memory_hwm_store.py index 49b2e3c..f1a3837 100644 --- a/etl_entities/hwm_store/memory_hwm_store.py +++ b/etl_entities/hwm_store/memory_hwm_store.py @@ -29,27 +29,18 @@ class MemoryHWMStore(BaseHWMStore): Examples -------- - .. code:: python - - from etl_entities.hwm_store import MemoryHWMStore - from etl_entities.hwm import ColumnIntHWM - - hwm_store = MemoryHWMStore() - - # not found - retrieved_hwm = hwm_store.get_hwm("long_unique_name") - assert hwm_store.get_hwm("long_unique_name") is None - - hwm = ColumnIntHWM(name="long_unique_name", value=10) - hwm_store.set_hwm(hwm_value) - - # found - retrieved_hwm = hwm_store.get_hwm("long_unique_name") - assert retrieved_hwm == hwm - - hwm_store.clear() - # not found again - assert hwm_store.get_hwm("long_unique_name") is None + >>> from etl_entities.hwm_store import MemoryHWMStore + >>> from etl_entities.hwm import ColumnIntHWM + >>> hwm_store = MemoryHWMStore() + >>> retrieved_hwm = hwm_store.get_hwm("long_unique_name") + >>> hwm_store.get_hwm("long_unique_name") # not found + >>> hwm = ColumnIntHWM(name="long_unique_name", value=10) + >>> hwm_store.set_hwm(hwm) + >>> got_hwm = hwm_store.get_hwm("long_unique_name") # found + >>> got_hwm == hwm + True + >>> hwm_store.clear() + >>> hwm_store.get_hwm("long_unique_name") # not found again """ _data: Dict[str, dict] = PrivateAttr(default_factory=dict) diff --git a/pytest.ini b/pytest.ini index 38441ef..aac1306 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,5 +1,6 @@ [pytest] testpaths = tests -norecursedirs = .git etl_entities +norecursedirs = .git venv cache_dir = .pytest_cache log_cli_level = INFO +addopts = --doctest-modules --ignore-glob="tests/libs/**" diff --git a/tests/test_hwm/test_column_hwm.py b/tests/test_hwm/test_column_hwm.py index 23ff159..f0a1382 100644 --- a/tests/test_hwm/test_column_hwm.py +++ b/tests/test_hwm/test_column_hwm.py @@ -392,7 +392,7 @@ def test_column_hwm_unregistered_type(hwm_class): class UnregisteredHWM(hwm_class): pass # noqa: WPS604 - err_msg = r"You should register class using @register_hwm_type decorator" + err_msg = f"You should register '{UnregisteredHWM.__qualname__}' class using @register_hwm_type decorator" with pytest.raises(KeyError, match=err_msg): HWMTypeRegistry.get_key(UnregisteredHWM) From 8823b7db0d0ca1ad73b81fccab2d8a1daa28bd24 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 27 May 2024 20:55:04 +0000 Subject: [PATCH 19/36] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/codespell-project/codespell: v2.2.6 → v2.3.0](https://github.com/codespell-project/codespell/compare/v2.2.6...v2.3.0) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f692a36..e56747c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -48,7 +48,7 @@ repos: - --no-extra-eol - repo: https://github.com/codespell-project/codespell - rev: v2.2.6 + rev: v2.3.0 hooks: - id: codespell args: [-w] From edcca6135c41ffd65b9eda7dc254275d50855b04 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 21:13:05 +0000 Subject: [PATCH 20/36] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/asottile/pyupgrade: v3.15.2 → v3.16.0](https://github.com/asottile/pyupgrade/compare/v3.15.2...v3.16.0) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e56747c..f524d05 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -78,7 +78,7 @@ repos: - id: text-unicode-replacement-char - repo: https://github.com/asottile/pyupgrade - rev: v3.15.2 + rev: v3.16.0 hooks: - id: pyupgrade args: [--py37-plus, --keep-runtime-typing] From 4448113598b7e39aa0440bfba0bffafb86e8edd5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 21:12:12 +0000 Subject: [PATCH 21/36] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pycqa/bandit: 1.7.8 → 1.7.9](https://github.com/pycqa/bandit/compare/1.7.8...1.7.9) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f524d05..83b5bda 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -102,7 +102,7 @@ repos: - black==24.3.0 - repo: https://github.com/pycqa/bandit - rev: 1.7.8 + rev: 1.7.9 hooks: - id: bandit args: From 82879a8b839ba1731db1df619847e9780b7bbeba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Wed, 19 Jun 2024 18:23:58 +0300 Subject: [PATCH 22/36] Update coverage download step --- .github/workflows/test.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e0d7de6..da7f804 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -106,10 +106,9 @@ jobs: - name: Download all coverage reports uses: actions/download-artifact@v4 with: - path: reports - - - name: Move coverage data to the root folder - run: find reports -type f -exec mv '{}' reports \; + path: reports/ + pattern: coverage-* + merge-multiple: true - name: Generate coverate reports run: ./combine_coverage.sh @@ -120,8 +119,7 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} file: ./reports/coverage.xml fail_ci_if_error: true - # TODO: remove after fixing https://github.com/codecov/codecov-cli/issues/367 - plugin: gcov + plugin: noop - name: All done run: echo 1 From 8a1718bd0580440ff89f925c36d4b643e3456ebb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Wed, 19 Jun 2024 18:24:57 +0300 Subject: [PATCH 23/36] Update pre-commit hooks --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 83b5bda..28d04c7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -99,7 +99,7 @@ repos: hooks: - id: blacken-docs additional_dependencies: - - black==24.3.0 + - black==24.4.2 - repo: https://github.com/pycqa/bandit rev: 1.7.9 From 4c4a9ed55fd191f13a2330167a250a1903ca6142 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Wed, 19 Jun 2024 18:30:14 +0300 Subject: [PATCH 24/36] Update coverage config --- tests/.coveragerc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/.coveragerc b/tests/.coveragerc index b148286..338970d 100644 --- a/tests/.coveragerc +++ b/tests/.coveragerc @@ -16,3 +16,6 @@ exclude_lines = if TYPE_CHECKING: class .*\bProtocol\): @(abc\.)?abstractmethod + if log.isEnabledFor(logging.DEBUG): + if sys.version_info + except .*ImportError From b4a6097797b72d2fc9f6c705db34602a89e0d6c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Wed, 19 Jun 2024 18:32:01 +0300 Subject: [PATCH 25/36] Update coverage config --- tests/.coveragerc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/.coveragerc b/tests/.coveragerc index 338970d..ae2f172 100644 --- a/tests/.coveragerc +++ b/tests/.coveragerc @@ -1,5 +1,5 @@ [run] -branch = True +branch = true omit = tests/* parallel = true data_file = reports/.coverage From b539872fdaf9edff56ae0b0e06a40f178b36aa1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Thu, 20 Jun 2024 18:04:29 +0300 Subject: [PATCH 26/36] Add 'Last updated at' fields to build documentation --- .readthedocs.yml | 3 +++ docs/conf.py | 29 ++++++++++++++++------------- requirements-docs.txt | 1 + 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/.readthedocs.yml b/.readthedocs.yml index 655c9c1..894a5fc 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -4,6 +4,9 @@ build: os: ubuntu-22.04 tools: python: '3.12' + jobs: + post_checkout: + - git fetch --unshallow || true python: install: diff --git a/docs/conf.py b/docs/conf.py index 8f415e2..556cbdd 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -51,9 +51,25 @@ "sphinx.ext.autosummary", "sphinx_toolbox.github", "sphinxcontrib.towncrier", # provides `towncrier-draft-entries` directive + "sphinx_last_updated_by_git", ] + numpydoc_show_class_members = False +# prevent >>>, ... and doctest outputs from copying +copybutton_prompt_text = r">>> |\.\.\. |\$ |In \[\d*\]: | {2,5}\.\.\.: | {5,8}: " +copybutton_prompt_is_regexp = True +copybutton_copy_empty_lines = False +copybutton_only_copy_prompt_lines = True + +towncrier_draft_autoversion_mode = "draft" +towncrier_draft_include_empty = False +towncrier_draft_working_directory = PROJECT_ROOT_DIR + +github_username = "MobileTeleSystems" +github_repository = "etl-entities" + + # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] @@ -95,16 +111,3 @@ # Output file base name for HTML help builder. htmlhelp_basename = "etl-entities-doc" - -# prevent >>>, ... and doctest outputs from copying -copybutton_prompt_text = r">>> |\.\.\. |\$ |In \[\d*\]: | {2,5}\.\.\.: | {5,8}: " -copybutton_prompt_is_regexp = True -copybutton_copy_empty_lines = False -copybutton_only_copy_prompt_lines = True - -towncrier_draft_autoversion_mode = "draft" -towncrier_draft_include_empty = False -towncrier_draft_working_directory = PROJECT_ROOT_DIR - -github_username = "MobileTeleSystems" -github_repository = "etl-entities" diff --git a/requirements-docs.txt b/requirements-docs.txt index 4a64feb..82fbf71 100644 --- a/requirements-docs.txt +++ b/requirements-docs.txt @@ -4,6 +4,7 @@ numpydoc packaging sphinx sphinx-copybutton +sphinx-last-updated-by-git sphinx-toolbox sphinxcontrib-towncrier towncrier From c3f915b6bced035ec9161e32326fd03a027fbc2b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 22:27:28 +0000 Subject: [PATCH 27/36] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/asottile/blacken-docs: 1.16.0 → 1.18.0](https://github.com/asottile/blacken-docs/compare/1.16.0...1.18.0) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 28d04c7..3bd0398 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -95,7 +95,7 @@ repos: language_version: python3 - repo: https://github.com/asottile/blacken-docs - rev: 1.16.0 + rev: 1.18.0 hooks: - id: blacken-docs additional_dependencies: From 69210ac041549aeb18365c8a773a4f912e0c0b6c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 21:17:41 +0000 Subject: [PATCH 28/36] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/macisamuele/language-formatters-pre-commit-hooks: v2.13.0 → v2.14.0](https://github.com/macisamuele/language-formatters-pre-commit-hooks/compare/v2.13.0...v2.14.0) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3bd0398..c50b454 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -54,7 +54,7 @@ repos: args: [-w] - repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks - rev: v2.13.0 + rev: v2.14.0 hooks: - id: pretty-format-yaml args: [--autofix, --indent, '2', --offset, '2'] From e33940c41a04a51b1820abb7fdf6613f5921120d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 21:16:41 +0000 Subject: [PATCH 29/36] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/asottile/pyupgrade: v3.16.0 → v3.17.0](https://github.com/asottile/pyupgrade/compare/v3.16.0...v3.17.0) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c50b454..c57befc 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -78,7 +78,7 @@ repos: - id: text-unicode-replacement-char - repo: https://github.com/asottile/pyupgrade - rev: v3.16.0 + rev: v3.17.0 hooks: - id: pyupgrade args: [--py37-plus, --keep-runtime-typing] From 1402740405ffecb88707db3b2ab380d5d904c299 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Mon, 5 Aug 2024 17:37:00 +0300 Subject: [PATCH 30/36] Fix documentation build --- requirements-docs.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements-docs.txt b/requirements-docs.txt index 82fbf71..4f4b601 100644 --- a/requirements-docs.txt +++ b/requirements-docs.txt @@ -6,6 +6,7 @@ sphinx sphinx-copybutton sphinx-last-updated-by-git sphinx-toolbox -sphinxcontrib-towncrier +# TODO: remove upper limit after https://github.com/sphinx-contrib/sphinxcontrib-towncrier/issues/92 +sphinxcontrib-towncrier<24.7 towncrier urllib3 From 213964bb36345ee8f8b699f9c6743d0ade441723 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Mon, 5 Aug 2024 17:39:48 +0300 Subject: [PATCH 31/36] Fix documentation build --- requirements-docs.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements-docs.txt b/requirements-docs.txt index 4f4b601..334d130 100644 --- a/requirements-docs.txt +++ b/requirements-docs.txt @@ -6,7 +6,7 @@ sphinx sphinx-copybutton sphinx-last-updated-by-git sphinx-toolbox +sphinxcontrib-towncrier # TODO: remove upper limit after https://github.com/sphinx-contrib/sphinxcontrib-towncrier/issues/92 -sphinxcontrib-towncrier<24.7 -towncrier +towncrier<24.7 urllib3 From 66ad7e058dff93ad124f0fa386565ee4df24de48 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 21:16:28 +0000 Subject: [PATCH 32/36] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black-pre-commit-mirror: 24.4.2 → 24.8.0](https://github.com/psf/black-pre-commit-mirror/compare/24.4.2...24.8.0) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c57befc..61ef834 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -89,7 +89,7 @@ repos: - id: add-trailing-comma - repo: https://github.com/psf/black-pre-commit-mirror - rev: 24.4.2 + rev: 24.8.0 hooks: - id: black language_version: python3 From 9a7e6caf8a968130b6fba40099a4efb8ad0fd1f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Thu, 29 Aug 2024 09:52:03 +0300 Subject: [PATCH 33/36] Update LICENSE --- .spdx-license-header.txt | 2 +- LICENSE.txt | 2 +- docs/conf.py | 2 +- etl_entities/__init__.py | 2 +- etl_entities/entity.py | 2 +- etl_entities/hwm/__init__.py | 2 +- etl_entities/hwm/column/__init__.py | 2 +- etl_entities/hwm/column/column_hwm.py | 2 +- etl_entities/hwm/column/date_hwm.py | 2 +- etl_entities/hwm/column/datetime_hwm.py | 2 +- etl_entities/hwm/column/int_hwm.py | 2 +- etl_entities/hwm/file/__init__.py | 2 +- etl_entities/hwm/file/file_hwm.py | 2 +- etl_entities/hwm/file/file_list_hwm.py | 2 +- etl_entities/hwm/hwm.py | 2 +- etl_entities/hwm/hwm_type_registry.py | 2 +- etl_entities/hwm/key_value/__init__.py | 2 +- etl_entities/hwm/key_value/key_value_hwm.py | 2 +- etl_entities/hwm/key_value/key_value_int_hwm.py | 2 +- etl_entities/hwm_store/__init__.py | 2 +- etl_entities/hwm_store/base_hwm_store.py | 2 +- etl_entities/hwm_store/hwm_store_class_registry.py | 2 +- etl_entities/hwm_store/hwm_store_detect.py | 2 +- etl_entities/hwm_store/hwm_store_stack_manager.py | 2 +- etl_entities/hwm_store/memory_hwm_store.py | 2 +- etl_entities/instance/__init__.py | 2 +- etl_entities/instance/cluster/__init__.py | 2 +- etl_entities/instance/cluster/cluster.py | 2 +- etl_entities/instance/host/__init__.py | 2 +- etl_entities/instance/host/host.py | 2 +- etl_entities/instance/path/__init__.py | 2 +- etl_entities/instance/path/absolute_path.py | 2 +- etl_entities/instance/path/generic_path.py | 2 +- etl_entities/instance/path/relative_path.py | 2 +- etl_entities/instance/url/__init__.py | 2 +- etl_entities/instance/url/generic_url.py | 2 +- etl_entities/old_hwm/__init__.py | 2 +- etl_entities/old_hwm/column_hwm.py | 2 +- etl_entities/old_hwm/date_hwm.py | 2 +- etl_entities/old_hwm/datetime_hwm.py | 2 +- etl_entities/old_hwm/file_hwm.py | 2 +- etl_entities/old_hwm/file_list_hwm.py | 2 +- etl_entities/old_hwm/hwm.py | 2 +- etl_entities/old_hwm/int_hwm.py | 2 +- etl_entities/plugins/__init__.py | 2 +- etl_entities/plugins/import_plugins.py | 2 +- etl_entities/process/__init__.py | 2 +- etl_entities/process/process.py | 2 +- etl_entities/process/process_stack_manager.py | 2 +- etl_entities/source/__init__.py | 2 +- etl_entities/source/db/__init__.py | 2 +- etl_entities/source/db/column.py | 2 +- etl_entities/source/db/table.py | 2 +- etl_entities/source/file/__init__.py | 2 +- etl_entities/source/file/remote_folder.py | 2 +- etl_entities/version.py | 2 +- 56 files changed, 56 insertions(+), 56 deletions(-) diff --git a/.spdx-license-header.txt b/.spdx-license-header.txt index 19a8b2e..44939ae 100644 --- a/.spdx-license-header.txt +++ b/.spdx-license-header.txt @@ -1,2 +1,2 @@ -SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +SPDX-FileCopyrightText: 2021-2024 MTS PJSC SPDX-License-Identifier: Apache-2.0 diff --git a/LICENSE.txt b/LICENSE.txt index a22e190..6b68d87 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright 2021-2024 MTS (Mobile Telesystems). All rights reserved. +Copyright 2021-2024 MTS PJSC. All rights reserved. Apache License Version 2.0, January 2004 diff --git a/docs/conf.py b/docs/conf.py index 556cbdd..ccde1b4 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -25,7 +25,7 @@ # -- Project information ----------------------------------------------------- project = "etl-entities" -copyright = "2021-2024 MTS (Mobile Telesystems)" +copyright = "2021-2024 MTS PJSC" author = "DataOps.ETL" # The version info for the project you're documenting, acts as replacement for diff --git a/etl_entities/__init__.py b/etl_entities/__init__.py index 71d507f..e23bb5b 100644 --- a/etl_entities/__init__.py +++ b/etl_entities/__init__.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 import os diff --git a/etl_entities/entity.py b/etl_entities/entity.py index 8ec25a3..213b0ce 100644 --- a/etl_entities/entity.py +++ b/etl_entities/entity.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 # isort: skip_file diff --git a/etl_entities/hwm/__init__.py b/etl_entities/hwm/__init__.py index c6233bc..9eef626 100644 --- a/etl_entities/hwm/__init__.py +++ b/etl_entities/hwm/__init__.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from etl_entities.hwm.column.column_hwm import ColumnHWM from etl_entities.hwm.column.date_hwm import ColumnDateHWM diff --git a/etl_entities/hwm/column/__init__.py b/etl_entities/hwm/column/__init__.py index 07325b1..54237d1 100644 --- a/etl_entities/hwm/column/__init__.py +++ b/etl_entities/hwm/column/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 diff --git a/etl_entities/hwm/column/column_hwm.py b/etl_entities/hwm/column/column_hwm.py index d686fa1..387565f 100644 --- a/etl_entities/hwm/column/column_hwm.py +++ b/etl_entities/hwm/column/column_hwm.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/hwm/column/date_hwm.py b/etl_entities/hwm/column/date_hwm.py index 0bf53ae..b458005 100644 --- a/etl_entities/hwm/column/date_hwm.py +++ b/etl_entities/hwm/column/date_hwm.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/hwm/column/datetime_hwm.py b/etl_entities/hwm/column/datetime_hwm.py index 9836cbf..d30dc97 100644 --- a/etl_entities/hwm/column/datetime_hwm.py +++ b/etl_entities/hwm/column/datetime_hwm.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/hwm/column/int_hwm.py b/etl_entities/hwm/column/int_hwm.py index dcaef9f..bc03de7 100644 --- a/etl_entities/hwm/column/int_hwm.py +++ b/etl_entities/hwm/column/int_hwm.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/hwm/file/__init__.py b/etl_entities/hwm/file/__init__.py index 07325b1..54237d1 100644 --- a/etl_entities/hwm/file/__init__.py +++ b/etl_entities/hwm/file/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 diff --git a/etl_entities/hwm/file/file_hwm.py b/etl_entities/hwm/file/file_hwm.py index 7725016..aea0741 100644 --- a/etl_entities/hwm/file/file_hwm.py +++ b/etl_entities/hwm/file/file_hwm.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/hwm/file/file_list_hwm.py b/etl_entities/hwm/file/file_list_hwm.py index 2f0bcc8..6fb9ec8 100644 --- a/etl_entities/hwm/file/file_list_hwm.py +++ b/etl_entities/hwm/file/file_list_hwm.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/hwm/hwm.py b/etl_entities/hwm/hwm.py index d2c96bf..e233bb5 100644 --- a/etl_entities/hwm/hwm.py +++ b/etl_entities/hwm/hwm.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/hwm/hwm_type_registry.py b/etl_entities/hwm/hwm_type_registry.py index 71cfdf3..77c5986 100644 --- a/etl_entities/hwm/hwm_type_registry.py +++ b/etl_entities/hwm/hwm_type_registry.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/hwm/key_value/__init__.py b/etl_entities/hwm/key_value/__init__.py index 07325b1..54237d1 100644 --- a/etl_entities/hwm/key_value/__init__.py +++ b/etl_entities/hwm/key_value/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 diff --git a/etl_entities/hwm/key_value/key_value_hwm.py b/etl_entities/hwm/key_value/key_value_hwm.py index 33f24a5..47408b8 100644 --- a/etl_entities/hwm/key_value/key_value_hwm.py +++ b/etl_entities/hwm/key_value/key_value_hwm.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/hwm/key_value/key_value_int_hwm.py b/etl_entities/hwm/key_value/key_value_int_hwm.py index 503d431..021c1aa 100644 --- a/etl_entities/hwm/key_value/key_value_int_hwm.py +++ b/etl_entities/hwm/key_value/key_value_int_hwm.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/hwm_store/__init__.py b/etl_entities/hwm_store/__init__.py index 64f124d..b55c83f 100644 --- a/etl_entities/hwm_store/__init__.py +++ b/etl_entities/hwm_store/__init__.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from etl_entities.hwm_store.base_hwm_store import BaseHWMStore from etl_entities.hwm_store.hwm_store_class_registry import ( diff --git a/etl_entities/hwm_store/base_hwm_store.py b/etl_entities/hwm_store/base_hwm_store.py index a93d294..0dfb198 100644 --- a/etl_entities/hwm_store/base_hwm_store.py +++ b/etl_entities/hwm_store/base_hwm_store.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/hwm_store/hwm_store_class_registry.py b/etl_entities/hwm_store/hwm_store_class_registry.py index 50eada1..80da7c2 100644 --- a/etl_entities/hwm_store/hwm_store_class_registry.py +++ b/etl_entities/hwm_store/hwm_store_class_registry.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/hwm_store/hwm_store_detect.py b/etl_entities/hwm_store/hwm_store_detect.py index e988938..3d61aca 100644 --- a/etl_entities/hwm_store/hwm_store_detect.py +++ b/etl_entities/hwm_store/hwm_store_detect.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/hwm_store/hwm_store_stack_manager.py b/etl_entities/hwm_store/hwm_store_stack_manager.py index 9170184..2c41929 100644 --- a/etl_entities/hwm_store/hwm_store_stack_manager.py +++ b/etl_entities/hwm_store/hwm_store_stack_manager.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/hwm_store/memory_hwm_store.py b/etl_entities/hwm_store/memory_hwm_store.py index f1a3837..df7d354 100644 --- a/etl_entities/hwm_store/memory_hwm_store.py +++ b/etl_entities/hwm_store/memory_hwm_store.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/instance/__init__.py b/etl_entities/instance/__init__.py index 32ba658..16949ae 100644 --- a/etl_entities/instance/__init__.py +++ b/etl_entities/instance/__init__.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 diff --git a/etl_entities/instance/cluster/__init__.py b/etl_entities/instance/cluster/__init__.py index 0eb39fb..f1ad7fb 100644 --- a/etl_entities/instance/cluster/__init__.py +++ b/etl_entities/instance/cluster/__init__.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 diff --git a/etl_entities/instance/cluster/cluster.py b/etl_entities/instance/cluster/cluster.py index 7b1c133..24c73cc 100644 --- a/etl_entities/instance/cluster/cluster.py +++ b/etl_entities/instance/cluster/cluster.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 diff --git a/etl_entities/instance/host/__init__.py b/etl_entities/instance/host/__init__.py index bb15463..f1b53ca 100644 --- a/etl_entities/instance/host/__init__.py +++ b/etl_entities/instance/host/__init__.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 diff --git a/etl_entities/instance/host/host.py b/etl_entities/instance/host/host.py index 028397a..d7dac85 100644 --- a/etl_entities/instance/host/host.py +++ b/etl_entities/instance/host/host.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 diff --git a/etl_entities/instance/path/__init__.py b/etl_entities/instance/path/__init__.py index 9e7c093..0e70499 100644 --- a/etl_entities/instance/path/__init__.py +++ b/etl_entities/instance/path/__init__.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 diff --git a/etl_entities/instance/path/absolute_path.py b/etl_entities/instance/path/absolute_path.py index 7f31f87..59263f5 100644 --- a/etl_entities/instance/path/absolute_path.py +++ b/etl_entities/instance/path/absolute_path.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 diff --git a/etl_entities/instance/path/generic_path.py b/etl_entities/instance/path/generic_path.py index 28e9acb..38ab57e 100644 --- a/etl_entities/instance/path/generic_path.py +++ b/etl_entities/instance/path/generic_path.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 diff --git a/etl_entities/instance/path/relative_path.py b/etl_entities/instance/path/relative_path.py index b87a0ea..a906b61 100644 --- a/etl_entities/instance/path/relative_path.py +++ b/etl_entities/instance/path/relative_path.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 diff --git a/etl_entities/instance/url/__init__.py b/etl_entities/instance/url/__init__.py index d68b312..a84f0e6 100644 --- a/etl_entities/instance/url/__init__.py +++ b/etl_entities/instance/url/__init__.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 diff --git a/etl_entities/instance/url/generic_url.py b/etl_entities/instance/url/generic_url.py index 61f5c07..01c7364 100644 --- a/etl_entities/instance/url/generic_url.py +++ b/etl_entities/instance/url/generic_url.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 diff --git a/etl_entities/old_hwm/__init__.py b/etl_entities/old_hwm/__init__.py index af67585..f7cbeba 100644 --- a/etl_entities/old_hwm/__init__.py +++ b/etl_entities/old_hwm/__init__.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from etl_entities.old_hwm.column_hwm import ColumnHWM from etl_entities.old_hwm.date_hwm import DateHWM diff --git a/etl_entities/old_hwm/column_hwm.py b/etl_entities/old_hwm/column_hwm.py index aeb67d8..e943bdb 100644 --- a/etl_entities/old_hwm/column_hwm.py +++ b/etl_entities/old_hwm/column_hwm.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/old_hwm/date_hwm.py b/etl_entities/old_hwm/date_hwm.py index f6a583b..bc0352f 100644 --- a/etl_entities/old_hwm/date_hwm.py +++ b/etl_entities/old_hwm/date_hwm.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/old_hwm/datetime_hwm.py b/etl_entities/old_hwm/datetime_hwm.py index d98d284..22ec933 100644 --- a/etl_entities/old_hwm/datetime_hwm.py +++ b/etl_entities/old_hwm/datetime_hwm.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/old_hwm/file_hwm.py b/etl_entities/old_hwm/file_hwm.py index 27e6325..db3adba 100644 --- a/etl_entities/old_hwm/file_hwm.py +++ b/etl_entities/old_hwm/file_hwm.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/old_hwm/file_list_hwm.py b/etl_entities/old_hwm/file_list_hwm.py index cb80311..b0a057e 100644 --- a/etl_entities/old_hwm/file_list_hwm.py +++ b/etl_entities/old_hwm/file_list_hwm.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/old_hwm/hwm.py b/etl_entities/old_hwm/hwm.py index b93a8d9..4b26c97 100644 --- a/etl_entities/old_hwm/hwm.py +++ b/etl_entities/old_hwm/hwm.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/old_hwm/int_hwm.py b/etl_entities/old_hwm/int_hwm.py index c53cc1e..e2618c4 100644 --- a/etl_entities/old_hwm/int_hwm.py +++ b/etl_entities/old_hwm/int_hwm.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/plugins/__init__.py b/etl_entities/plugins/__init__.py index dafa032..1ec8e92 100644 --- a/etl_entities/plugins/__init__.py +++ b/etl_entities/plugins/__init__.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from etl_entities.plugins.import_plugins import import_plugins diff --git a/etl_entities/plugins/import_plugins.py b/etl_entities/plugins/import_plugins.py index ab32a90..752e0bb 100644 --- a/etl_entities/plugins/import_plugins.py +++ b/etl_entities/plugins/import_plugins.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/process/__init__.py b/etl_entities/process/__init__.py index d125d25..1abb39c 100644 --- a/etl_entities/process/__init__.py +++ b/etl_entities/process/__init__.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from etl_entities.process.process import Process from etl_entities.process.process_stack_manager import ProcessStackManager diff --git a/etl_entities/process/process.py b/etl_entities/process/process.py index 2095fe3..fb6a9fd 100644 --- a/etl_entities/process/process.py +++ b/etl_entities/process/process.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/process/process_stack_manager.py b/etl_entities/process/process_stack_manager.py index f552136..49a5edc 100644 --- a/etl_entities/process/process_stack_manager.py +++ b/etl_entities/process/process_stack_manager.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/source/__init__.py b/etl_entities/source/__init__.py index e6817c1..a575a62 100644 --- a/etl_entities/source/__init__.py +++ b/etl_entities/source/__init__.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from etl_entities.source.db import Column, Table from etl_entities.source.file import RemoteFolder diff --git a/etl_entities/source/db/__init__.py b/etl_entities/source/db/__init__.py index dc7aaf8..078d80c 100644 --- a/etl_entities/source/db/__init__.py +++ b/etl_entities/source/db/__init__.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from etl_entities.source.db.column import Column from etl_entities.source.db.table import Table diff --git a/etl_entities/source/db/column.py b/etl_entities/source/db/column.py index d51b4ea..87d02fb 100644 --- a/etl_entities/source/db/column.py +++ b/etl_entities/source/db/column.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/source/db/table.py b/etl_entities/source/db/table.py index 75a329f..cb2849f 100644 --- a/etl_entities/source/db/table.py +++ b/etl_entities/source/db/table.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/source/file/__init__.py b/etl_entities/source/file/__init__.py index 44859c7..0657487 100644 --- a/etl_entities/source/file/__init__.py +++ b/etl_entities/source/file/__init__.py @@ -1,3 +1,3 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from etl_entities.source.file.remote_folder import RemoteFolder diff --git a/etl_entities/source/file/remote_folder.py b/etl_entities/source/file/remote_folder.py index 2134bef..0d5d77f 100644 --- a/etl_entities/source/file/remote_folder.py +++ b/etl_entities/source/file/remote_folder.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations diff --git a/etl_entities/version.py b/etl_entities/version.py index 3aa29a3..1676e33 100644 --- a/etl_entities/version.py +++ b/etl_entities/version.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2021-2024 MTS (Mobile Telesystems) +# SPDX-FileCopyrightText: 2021-2024 MTS PJSC # SPDX-License-Identifier: Apache-2.0 from pathlib import Path From 922e4512c9f441fd4b21471ab0275a2a1783a48f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Thu, 29 Aug 2024 09:55:16 +0300 Subject: [PATCH 34/36] Avoid warning about deprecated Process class during import --- docs/changelog/next_release/+.bugfix.rst | 1 + etl_entities/process/process_stack_manager.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 docs/changelog/next_release/+.bugfix.rst diff --git a/docs/changelog/next_release/+.bugfix.rst b/docs/changelog/next_release/+.bugfix.rst new file mode 100644 index 0000000..a3a5e65 --- /dev/null +++ b/docs/changelog/next_release/+.bugfix.rst @@ -0,0 +1 @@ +Avoid showing warning about deprecated ``Process`` class during module import. diff --git a/etl_entities/process/process_stack_manager.py b/etl_entities/process/process_stack_manager.py index 49a5edc..6c3a39e 100644 --- a/etl_entities/process/process_stack_manager.py +++ b/etl_entities/process/process_stack_manager.py @@ -2,7 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations -from dataclasses import dataclass +from dataclasses import dataclass, field from typing import ClassVar import typing_extensions @@ -22,7 +22,7 @@ class ProcessStackManager: .. deprecated:: 2.0.0 """ - default: ClassVar[Process] = Process() # noqa: WPS462 + default: ClassVar[Process] = field(default_factory=Process) "Default process returned by ``ProcessStackManager.get_current``" # noqa: WPS428 _stack: ClassVar[list[Process]] = [] From 2b86a3b8b87ec74b9e154d5339200f73e0ba1ce7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Thu, 29 Aug 2024 09:59:29 +0300 Subject: [PATCH 35/36] Revert "Avoid warning about deprecated Process class during import" This reverts commit 922e4512c9f441fd4b21471ab0275a2a1783a48f. --- docs/changelog/next_release/+.bugfix.rst | 1 - etl_entities/process/process_stack_manager.py | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) delete mode 100644 docs/changelog/next_release/+.bugfix.rst diff --git a/docs/changelog/next_release/+.bugfix.rst b/docs/changelog/next_release/+.bugfix.rst deleted file mode 100644 index a3a5e65..0000000 --- a/docs/changelog/next_release/+.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Avoid showing warning about deprecated ``Process`` class during module import. diff --git a/etl_entities/process/process_stack_manager.py b/etl_entities/process/process_stack_manager.py index 6c3a39e..49a5edc 100644 --- a/etl_entities/process/process_stack_manager.py +++ b/etl_entities/process/process_stack_manager.py @@ -2,7 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations -from dataclasses import dataclass, field +from dataclasses import dataclass from typing import ClassVar import typing_extensions @@ -22,7 +22,7 @@ class ProcessStackManager: .. deprecated:: 2.0.0 """ - default: ClassVar[Process] = field(default_factory=Process) + default: ClassVar[Process] = Process() # noqa: WPS462 "Default process returned by ``ProcessStackManager.get_current``" # noqa: WPS428 _stack: ClassVar[list[Process]] = [] From e6aaf13e401e81f00db8cbd7ad3f2b47bf365376 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D1=82=D1=8B=D0=BD=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A1=D0=B5=D1=80=D0=B3=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Thu, 29 Aug 2024 10:07:03 +0300 Subject: [PATCH 36/36] Prepare release --- docs/changelog/2.3.1.rst | 7 +++++++ docs/changelog/index.rst | 1 + docs/changelog/next_release/91.improvement.rst | 1 - 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 docs/changelog/2.3.1.rst delete mode 100644 docs/changelog/next_release/91.improvement.rst diff --git a/docs/changelog/2.3.1.rst b/docs/changelog/2.3.1.rst new file mode 100644 index 0000000..9fb120f --- /dev/null +++ b/docs/changelog/2.3.1.rst @@ -0,0 +1,7 @@ +2.3.1 (2024-08-29) +================== + +Improvements +------------ + +- Replace all ``assert`` in documentation with doctest syntax. This should make documentation more readable. (:github:pull:`91`) diff --git a/docs/changelog/index.rst b/docs/changelog/index.rst index d5f8aef..f01cccc 100644 --- a/docs/changelog/index.rst +++ b/docs/changelog/index.rst @@ -3,6 +3,7 @@ :caption: Changelog DRAFT + 2.3.1 2.3.0 2.2.0 2.1.2 diff --git a/docs/changelog/next_release/91.improvement.rst b/docs/changelog/next_release/91.improvement.rst deleted file mode 100644 index 1e9650b..0000000 --- a/docs/changelog/next_release/91.improvement.rst +++ /dev/null @@ -1 +0,0 @@ -Replace all ``assert`` in documentation with doctest syntax. This should make documentation more readable.