diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 8038e6a9..a99c94bf 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.23.0 +current_version = 0.23.1 commit = True tag = False message = chore: Bump version from {current_version} to {new_version} diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 0214e4e3..6146c728 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -34,10 +34,10 @@ jobs: steps: - name: Check Out VCS Repository - uses: actions/checkout@v3.3.0 + uses: actions/checkout@v3.5.3 - name: Set Up Python ${{ matrix.python_version }} - uses: actions/setup-python@v4.5.0 + uses: actions/setup-python@v4.7.0 with: python-version: "${{ matrix.python_version }}" @@ -45,7 +45,7 @@ jobs: run: make python-virtualenv PYTHON_VIRTUALENV_DIR="venv" - name: Restoring/Saving Cache - uses: actions/cache@v3.2.6 + uses: actions/cache@v3.3.1 with: path: "venv" key: py-v1-deps-${{ runner.os }}-${{ matrix.python_version }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements-dev.txt') }}-${{ hashFiles('Makefile', 'make/**.mk') }} @@ -75,15 +75,15 @@ jobs: steps: - name: Check Out VCS Repository - uses: actions/checkout@v3.3.0 + uses: actions/checkout@v3.5.3 - name: Set Up Python ${{ matrix.python_version }} - uses: actions/setup-python@v4.5.0 + uses: actions/setup-python@v4.7.0 with: python-version: "${{ matrix.python_version }}" - name: Restoring/Saving Cache - uses: actions/cache@v3.2.6 + uses: actions/cache@v3.3.1 with: path: "venv" key: py-v1-deps-${{ runner.os }}-${{ matrix.python_version }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements-dev.txt') }}-${{ hashFiles('Makefile', 'make/**.mk') }} @@ -120,7 +120,11 @@ jobs: source "$PYTHON_VIRTUALENV_ACTIVATE" make test-coverage-report - codecov + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v3.1.4 + with: + directory: ./test-reports/coverage/ + fail_ci_if_error: true - name: Check that compiled Python dependency manifests are up-to-date with their sources # FIXME: There are issues related to testing with multiple Python versions. diff --git a/.github/workflows/dependency-review.yaml b/.github/workflows/dependency-review.yaml index d78b8ab7..fa84e1d8 100644 --- a/.github/workflows/dependency-review.yaml +++ b/.github/workflows/dependency-review.yaml @@ -17,9 +17,9 @@ jobs: steps: - name: Check Out VCS Repository - uses: actions/checkout@v3.3.0 + uses: actions/checkout@v3.5.3 - name: Dependency Review - uses: actions/dependency-review-action@v3.0.3 + uses: actions/dependency-review-action@v3.0.6 with: fail-on-severity: critical diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index 075b69cf..a778b74d 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -38,16 +38,16 @@ jobs: steps: - name: Check Out VCS Repository - uses: actions/checkout@v3.3.0 + uses: actions/checkout@v3.5.3 - name: Set Up Python id: set_up_python - uses: actions/setup-python@v4.5.0 + uses: actions/setup-python@v4.7.0 with: python-version: "3.10.9" - name: Restoring/Saving Cache - uses: actions/cache@v3.2.6 + uses: actions/cache@v3.3.1 with: path: "venv" key: py-v1-deps-${{ runner.os }}-${{ steps.set_up_python.outputs.python-version }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements-dev.txt') }}-${{ hashFiles('Makefile', 'make/**.mk') }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 3a4f0d6a..d9d3676d 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -35,11 +35,11 @@ jobs: steps: - name: Check Out VCS Repository - uses: actions/checkout@v3.3.0 + uses: actions/checkout@v3.5.3 - name: Set Up Python id: set_up_python - uses: actions/setup-python@v4.5.0 + uses: actions/setup-python@v4.7.0 with: python-version: "3.10.9" @@ -47,7 +47,7 @@ jobs: run: make python-virtualenv PYTHON_VIRTUALENV_DIR="venv" - name: Restoring/Saving Cache - uses: actions/cache@v3.2.6 + uses: actions/cache@v3.3.1 with: path: "venv" key: py-v1-deps-${{ runner.os }}-${{ steps.set_up_python.outputs.python-version }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements-dev.txt') }}-${{ hashFiles('Makefile', 'make/**.mk') }} diff --git a/CODEOWNERS b/CODEOWNERS index 08d8f27f..629bccbe 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -5,4 +5,8 @@ # Documentation: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners # Default -* @fyntex/developers +* @cordada/developers + +# Dependencies +/requirements.* +/requirements-*.* diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f3b10171..ec198bc1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -230,5 +230,5 @@ This is done by the CI/CD system. [^semver]: [Semantic Versioning](https://semver.org/) [^git-alias-github-pr-summary]: Add a Git alias that generates a summary of changes from GitHub pull requests: - `git config --global alias.lg-github-pr-summary \ + `git config --global alias.lg-github-pr-summary '!f() { git log --date=short --reverse --merges --grep "^Merge pull request #[[:digit:]]* from" --pretty="tformat:- (%C(auto,red)%s%C(reset), %C(auto,green)%ad%C(reset)) %b" "$@" | sed -E "s|Merge pull request (#[0-9]+) from .+|PR \1|"; }; f'` diff --git a/HISTORY.md b/HISTORY.md index 1aa03fd1..9f0140e6 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,39 @@ # History +## 0.23.1 (2023-07-26) + +- (PR #478, 2023-04-05) Fix Git alias `lg-github-pr-summary` in Contributing Guidelines +- (PR #479, 2023-04-05) Update code owners for Python dependencies +- (PR #467, 2023-04-10) chore(deps): Bump importlib-metadata from 6.0.0 to 6.1.0 +- (PR #483, 2023-04-18) Add Codecov to CI workflow +- (PR #466, 2023-04-18) chore: Bump actions/cache from 3.2.6 to 3.3.1 +- (PR #465, 2023-04-18) chore: Bump actions/dependency-review-action from 3.0.3 to 3.0.4 +- (PR #481, 2023-04-24) chore: Bump actions/checkout from 3.3.0 to 3.5.2 +- (PR #480, 2023-04-24) chore(deps-dev): Bump mypy from 1.0.1 to 1.2.0 +- (PR #473, 2023-04-24) chore(deps-dev): Bump types-pytz from 2022.7.1.2 to 2023.3.0.0 +- (PR #471, 2023-04-24) chore(deps): Bump pytz from 2022.7.1 to 2023.3 +- (PR #468, 2023-04-24) chore(deps): Bump cryptography from 39.0.1 to 39.0.2 +- (PR #486, 2023-05-05) chore: Bump codecov/codecov-action from 3.1.2 to 3.1.3 +- (PR #484, 2023-05-09) chore: Bump sqlparse from 0.4.2 to 0.4.4 +- (PR #499, 2023-06-22) chore(deps): Update `black` from 23.1.0 to 23.3.0 +- (PR #501, 2023-07-03) chore: Bump actions/checkout from 3.5.2 to 3.5.3 +- (PR #502, 2023-07-03) chore(deps): Update `pip-tools` from 6.8.0 to 6.14.0 +- (PR #504, 2023-07-19) chore: Bump actions/setup-python from 4.5.0 to 4.7.0 +- (PR #495, 2023-07-20) chore: Bump actions/dependency-review-action from 3.0.4 to 3.0.6 +- (PR #494, 2023-07-21) chore: Bump codecov/codecov-action from 3.1.3 to 3.1.4 +- (PR #497, 2023-07-25) chore: Bump pyopenssl from 23.0.0 to 23.2.0 +- (PR #505, 2023-07-25) chore: Bump pygments from 2.13.0 to 2.15.0 +- (PR #492, 2023-07-25) chore: Bump requests from 2.25.1 to 2.31.0 +- (PR #512, 2023-07-25) chore: Bump cryptography from 39.0.2 to 41.0.2 +- (PR #513, 2023-07-25) chore(deps): Update `django` from 3.2.17 to 3.2.20 +- (PR #490, 2023-07-25) chore(deps): Bump signxml from 3.1.0 to 3.2.0 +- (PR #514, 2023-07-25) chore(deps): Update `tox` from 3.25.1 to 4.6.4 +- (PR #506, 2023-07-25) chore: Bump types-pyopenssl from 23.0.0.4 to 23.2.0.2 +- (PR #498, 2023-07-25) chore: Bump coverage from 7.1.0 to 7.2.7 +- (PR #515, 2023-07-25) chore(deps): Update `certifi` from 2022.6.15 to 2023.7.22 +- (PR #516, 2023-07-25) Update code owners +- (PR #511, 2023-07-25) chore: Bump wheel from 0.38.4 to 0.41.0 + ## 0.23.0 (2023-04-05) - (PR #443, 2023-03-13) chore(deps-dev): Bump types-pytz from 2022.7.1.0 to 2022.7.1.2 diff --git a/Makefile b/Makefile index 4680ef81..c696a635 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PYTHON_PIP_VERSION_SPECIFIER = ==22.3.1 PYTHON_SETUPTOOLS_VERSION_SPECIFIER = ==58.1.0 PYTHON_WHEEL_VERSION_SPECIFIER = ==0.38.4 PYTHON_VIRTUALENV_DIR = venv -PYTHON_PIP_TOOLS_VERSION_SPECIFIER = ~=6.8.0 +PYTHON_PIP_TOOLS_VERSION_SPECIFIER = ==6.14.0 PYTHON_PIP_TOOLS_SRC_FILES = requirements.in requirements-dev.in # Black @@ -21,7 +21,7 @@ TOXENV ?= py310 .PHONY: clean clean-build clean-pyc clean-test .PHONY: install-dev install-deps-dev .PHONY: lint lint-fix test test-all test-coverage -.PHONY: test-coverage-report test-coverage-report-console test-coverage-report-html +.PHONY: test-coverage-report test-coverage-report-console test-coverage-report-xml test-coverage-report-html .PHONY: build dist deploy upload-release .PHONE: python-virtualenv .PHONY: python-deps-compile python-deps-sync-check python-pip-tools-install @@ -87,12 +87,16 @@ test-coverage: ## run tests and record test coverage coverage run --rcfile=setup.cfg setup.py test test-coverage-report: test-coverage-report-console +test-coverage-report: test-coverage-report-xml test-coverage-report: test-coverage-report-html test-coverage-report: ## Run tests, measure code coverage, and generate reports test-coverage-report-console: ## print test coverage summary coverage report --rcfile=setup.cfg -m +test-coverage-report-xml: ## Generate test coverage XML report + coverage xml --rcfile=setup.cfg + test-coverage-report-html: ## generate test coverage HTML report coverage html --rcfile=setup.cfg diff --git a/cl_sii/__init__.py b/cl_sii/__init__.py index 696a8031..73eac80b 100644 --- a/cl_sii/__init__.py +++ b/cl_sii/__init__.py @@ -5,4 +5,4 @@ """ -__version__ = '0.23.0' +__version__ = '0.23.1' diff --git a/cl_sii/libs/dataclass_utils.py b/cl_sii/libs/dataclass_utils.py index 8bfa6053..71180ebd 100644 --- a/cl_sii/libs/dataclass_utils.py +++ b/cl_sii/libs/dataclass_utils.py @@ -91,8 +91,16 @@ def _dc_deep_compare_to(value_a: object, value_b: object) -> DcDeepComparison: return DcDeepComparison.EQUAL # Remove dataclass attributes whose value is None. - self_dict_clean = {k: v for k, v in dataclasses.asdict(value_a).items() if v is not None} - value_dict_clean = {k: v for k, v in dataclasses.asdict(value_b).items() if v is not None} + self_dict_clean = { + k: v + for k, v in dataclasses.asdict(value_a).items() # type: ignore[call-overload] + if v is not None + } + value_dict_clean = { + k: v + for k, v in dataclasses.asdict(value_b).items() # type: ignore[call-overload] + if v is not None + } if len(self_dict_clean) < len(value_dict_clean): for k, v in self_dict_clean.items(): diff --git a/requirements-dev.in b/requirements-dev.in index 21df2341..7544b466 100644 --- a/requirements-dev.in +++ b/requirements-dev.in @@ -4,16 +4,15 @@ -c requirements.txt -black==23.1.0 +black==23.3.0 bumpversion==0.5.3 -codecov==2.1.12 -coverage==7.1.0 +coverage==7.2.7 flake8==6.0.0 isort==5.12.0 -mypy==1.0.1 -tox==3.25.1 +mypy==1.2.0 +tox==4.6.4 twine==3.1.1 types-jsonschema==4.17.0.6 -types-pyOpenSSL==23.0.0.4 -types-pytz==2022.7.1.2 -wheel==0.38.4 +types-pyOpenSSL==23.2.0.2 +types-pytz==2023.3.0.0 +wheel==0.41.0 diff --git a/requirements-dev.txt b/requirements-dev.txt index 2e9b5ab9..cea034d7 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,18 +1,18 @@ # -# This file is autogenerated by pip-compile with python 3.8 -# To update, run: +# This file is autogenerated by pip-compile with Python 3.8 +# by the following command: # # pip-compile --strip-extras requirements-dev.in # -appdirs==1.4.4 - # via virtualenv -black==23.1.0 +black==23.3.0 # via -r requirements-dev.in bleach==5.0.1 # via readme-renderer bumpversion==0.5.3 # via -r requirements-dev.in -certifi==2022.6.15 +cachetools==5.3.1 + # via tox +certifi==2023.7.22 # via # -c requirements.txt # requests @@ -20,17 +20,17 @@ cffi==1.15.1 # via # -c requirements.txt # cryptography -chardet==4.0.0 +chardet==5.1.0 + # via tox +charset-normalizer==3.1.0 # via requests click==8.0.3 # via black -codecov==2.1.12 +colorama==0.4.6 + # via tox +coverage==7.2.7 # via -r requirements-dev.in -coverage==7.1.0 - # via - # -r requirements-dev.in - # codecov -cryptography==39.0.1 +cryptography==41.0.2 # via # -c requirements.txt # secretstorage @@ -39,7 +39,7 @@ distlib==0.3.6 # via virtualenv docutils==0.19 # via readme-renderer -filelock==3.0.12 +filelock==3.12.2 # via # tox # virtualenv @@ -57,26 +57,28 @@ keyring==21.4.0 # via twine mccabe==0.7.0 # via flake8 -mypy==1.0.1 +mypy==1.2.0 # via -r requirements-dev.in -mypy-extensions==0.4.3 +mypy-extensions==1.0.0 # via # black # mypy -packaging==23.0 +packaging==23.1 # via # -c requirements.txt # black + # pyproject-api # tox pathspec==0.9.0 # via black pkginfo==1.8.3 # via twine -platformdirs==2.4.1 - # via black -pluggy==1.0.0 - # via tox -py==1.10.0 +platformdirs==3.9.1 + # via + # black + # tox + # virtualenv +pluggy==1.2.0 # via tox pycodestyle==2.10.0 # via flake8 @@ -86,13 +88,14 @@ pycparser==2.20 # cffi pyflakes==3.0.1 # via flake8 -pygments==2.13.0 +pygments==2.15.0 # via readme-renderer +pyproject-api==1.5.3 + # via tox readme-renderer==35.0 # via twine -requests==2.25.1 +requests==2.31.0 # via - # codecov # requests-toolbelt # twine requests-toolbelt==0.9.1 @@ -100,17 +103,14 @@ requests-toolbelt==0.9.1 secretstorage==3.3.3 # via keyring six==1.16.0 - # via - # bleach - # tox - # virtualenv -toml==0.10.2 - # via tox -tomli==2.0.0 + # via bleach +tomli==2.0.1 # via # black # mypy -tox==3.25.1 + # pyproject-api + # tox +tox==4.6.4 # via -r requirements-dev.in tqdm==4.64.0 # via twine @@ -118,9 +118,9 @@ twine==3.1.1 # via -r requirements-dev.in types-jsonschema==4.17.0.6 # via -r requirements-dev.in -types-pyopenssl==23.0.0.4 +types-pyopenssl==23.2.0.2 # via -r requirements-dev.in -types-pytz==2022.7.1.2 +types-pytz==2023.3.0.0 # via -r requirements-dev.in typing-extensions==4.3.0 # via @@ -129,11 +129,11 @@ typing-extensions==4.3.0 # mypy urllib3==1.26.12 # via requests -virtualenv==20.4.3 +virtualenv==20.24.1 # via tox webencodings==0.5.1 # via bleach -wheel==0.38.4 +wheel==0.41.0 # via -r requirements-dev.in # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements.in b/requirements.in index 62769a51..1672903c 100644 --- a/requirements.in +++ b/requirements.in @@ -5,15 +5,15 @@ # Note: To install a package from a Git VCS repository, see the following example: # git+https://github.com/example/example.git@example-vcs-ref#egg=example-pkg[foo,bar]==1.42.3 -cryptography==39.0.1 +cryptography==41.0.2 defusedxml==0.7.1 Django>=2.2.24 djangorestframework>=3.10.3,<3.15 -importlib-metadata==6.0.0 +importlib-metadata==6.1.0 jsonschema==4.17.3 lxml==4.9.2 marshmallow==3.19.0 pydantic==1.10.4 -pyOpenSSL==23.0.0 -pytz==2022.7.1 -signxml==3.1.0 +pyOpenSSL==23.2.0 +pytz==2023.3 +signxml==3.2.0 diff --git a/requirements.txt b/requirements.txt index d3d0b453..99577cca 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ # -# This file is autogenerated by pip-compile with python 3.8 -# To update, run: +# This file is autogenerated by pip-compile with Python 3.8 +# by the following command: # # pip-compile --strip-extras requirements.in # @@ -8,26 +8,26 @@ asgiref==3.5.2 # via django attrs==20.3.0 # via jsonschema -certifi==2022.6.15 +certifi==2023.7.22 # via signxml cffi==1.15.1 # via cryptography -cryptography==39.0.1 +cryptography==41.0.2 # via # -r requirements.in # pyopenssl # signxml defusedxml==0.7.1 # via -r requirements.in -django==3.2.17 +django==3.2.20 # via # -r requirements.in # djangorestframework djangorestframework==3.14.0 # via -r requirements.in -importlib-metadata==6.0.0 +importlib-metadata==6.1.0 # via -r requirements.in -importlib-resources==5.12.0 +importlib-resources==6.0.0 # via jsonschema jsonschema==4.17.3 # via -r requirements.in @@ -37,7 +37,7 @@ lxml==4.9.2 # signxml marshmallow==3.19.0 # via -r requirements.in -packaging==23.0 +packaging==23.1 # via marshmallow pkgutil-resolve-name==1.3.10 # via jsonschema @@ -45,20 +45,20 @@ pycparser==2.20 # via cffi pydantic==1.10.4 # via -r requirements.in -pyopenssl==23.0.0 +pyopenssl==23.2.0 # via # -r requirements.in # signxml pyrsistent==0.17.3 # via jsonschema -pytz==2022.7.1 +pytz==2023.3 # via # -r requirements.in # django # djangorestframework -signxml==3.1.0 +signxml==3.2.0 # via -r requirements.in -sqlparse==0.4.2 +sqlparse==0.4.4 # via django typing-extensions==4.3.0 # via pydantic diff --git a/setup.cfg b/setup.cfg index 45faa047..c8f5641a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -13,6 +13,9 @@ exclude_lines = if __name__ == .__main__. show_missing = True +[coverage:xml] +output = test-reports/coverage/xml/coverage.xml + [coverage:html] directory = test-reports/coverage/html diff --git a/tests/test_libs_crypto_utils.py b/tests/test_libs_crypto_utils.py index bb24b423..853332c0 100644 --- a/tests/test_libs_crypto_utils.py +++ b/tests/test_libs_crypto_utils.py @@ -488,7 +488,7 @@ def test_load_der_x509_cert_ok_cert_real_dte_1(self) -> None: some_microsoft_extension_oid = oid.ObjectIdentifier("1.3.6.1.4.1.311.21.7") some_microsoft_ext = cert_extensions.get_extension_for_oid(some_microsoft_extension_oid) self.assertEqual(some_microsoft_ext.critical, False) - self.assertTrue(isinstance(some_microsoft_ext.value.value, bytes)) + self.assertTrue(isinstance(some_microsoft_ext.value.public_bytes(), bytes)) def test_load_der_x509_cert_ok_cert_real_dte_3(self) -> None: cert_der_bytes = utils.read_test_file_bytes(