From 96f7d624edcd2582d00aaea7a27fef4d529a1684 Mon Sep 17 00:00:00 2001 From: "Felt, Nicholas" Date: Mon, 26 Aug 2024 14:40:07 -0700 Subject: [PATCH 1/2] refactor: Remove the need for parsing the template dir of the python-semantic-release config by requiring the user to pass in the full path to the files to use in the templates. --- .../workflows/_reusable-package-release.yml | 32 +++--- .github/workflows/test-actions.yml | 4 +- .../action.yml | 16 ++- .../find_unreleased_changelog_items/main.py | 31 +----- .../find_unreleased_changelog_items/readme.md | 14 +-- tests/test_find_unreleased_changelog_items.py | 99 ++++++------------- workflows/package-release.md | 28 +++--- 7 files changed, 78 insertions(+), 146 deletions(-) diff --git a/.github/workflows/_reusable-package-release.yml b/.github/workflows/_reusable-package-release.yml index ce666668..8154464a 100644 --- a/.github/workflows/_reusable-package-release.yml +++ b/.github/workflows/_reusable-package-release.yml @@ -47,19 +47,15 @@ on: required: false default: '["ubuntu", "windows", "macos"]' type: string - previous-changelog-filename: - description: The name of the file to copy the contents of the changelog into - for use in the `python-semantic-release` templates. This file will be created - inside of the directory defined by the `[tool.semantic_release.changelog.template_dir]` - key in the `pyproject.toml` file. + previous-changelog-filepath: + description: The full path of the file to copy the contents of the changelog + into for use in the `python-semantic-release` templates. required: false type: string default: .previous_changelog_for_template.md - previous-release-notes-filename: - description: The name of the file to copy the contents of the `## Unreleased` - section of the changelog into for use in the GitHub Release Notes. This - file will be created inside of the directory defined by the `[tool.semantic_release.changelog.template_dir]` - key in the `pyproject.toml` file. + previous-release-notes-filepath: + description: The full path of the file to copy the contents of the `## Unreleased` + section of the changelog into for use in the GitHub Release Notes. required: false type: string default: .previous_release_notes_for_template.md @@ -97,14 +93,14 @@ jobs: uses: ./actions/find_unreleased_changelog_items with: release-level: ${{ inputs.release-level }} - previous-changelog-filename: ${{ inputs.previous-changelog-filename }} - previous-release-notes-filename: ${{ inputs.previous-release-notes-filename }} + previous-changelog-filepath: ${{ inputs.previous-changelog-filepath }} + previous-release-notes-filepath: ${{ inputs.previous-release-notes-filepath }} - if: ${{ !endsWith(github.repository, '/python-package-ci-cd') }} # Run the public action when this is run outside the python-package-ci-cd repository uses: tektronix/python-package-ci-cd/actions/find_unreleased_changelog_items@v0.0.0 with: release-level: ${{ inputs.release-level }} - previous-changelog-filename: ${{ inputs.previous-changelog-filename }} - previous-release-notes-filename: ${{ inputs.previous-release-notes-filename }} + previous-changelog-filepath: ${{ inputs.previous-changelog-filepath }} + previous-release-notes-filepath: ${{ inputs.previous-release-notes-filepath }} # Update the package version using the python-semantic-release package (https://github.com/python-semantic-release/python-semantic-release) # This job requires a Personal Access Token (Classic) with # the public_repo permission. It also needs a private/public @@ -127,13 +123,13 @@ jobs: - if: ${{ endsWith(github.repository, '/python-package-ci-cd') }} # Run the local action when this is run in the python-package-ci-cd repository uses: ./actions/find_unreleased_changelog_items with: - previous-changelog-filename: ${{ inputs.previous-changelog-filename }} - previous-release-notes-filename: ${{ inputs.previous-release-notes-filename }} + previous-changelog-filepath: ${{ inputs.previous-changelog-filepath }} + previous-release-notes-filepath: ${{ inputs.previous-release-notes-filepath }} - if: ${{ !endsWith(github.repository, '/python-package-ci-cd') }} # Run the public action when this is run outside the python-package-ci-cd repository uses: tektronix/python-package-ci-cd/actions/find_unreleased_changelog_items@v0.0.0 with: - previous-changelog-filename: ${{ inputs.previous-changelog-filename }} - previous-release-notes-filename: ${{ inputs.previous-release-notes-filename }} + previous-changelog-filepath: ${{ inputs.previous-changelog-filepath }} + previous-release-notes-filepath: ${{ inputs.previous-release-notes-filepath }} - name: Python Semantic Release uses: python-semantic-release/python-semantic-release@v9.8.7 id: release diff --git a/.github/workflows/test-actions.yml b/.github/workflows/test-actions.yml index 4db54d0f..b961f8a3 100644 --- a/.github/workflows/test-actions.yml +++ b/.github/workflows/test-actions.yml @@ -49,8 +49,8 @@ jobs: - uses: ./actions/find_unreleased_changelog_items with: release-level: patch - previous-changelog-filename: .testing_previous_changelog_for_template.md - previous-release-notes-filename: .testing_previous_release_notes_for_template.md + previous-changelog-filepath: python_semantic_release_templates/.testing_previous_changelog_for_template.md + previous-release-notes-filepath: python_semantic_release_templates/.testing_previous_release_notes_for_template.md - name: Get Job Summary uses: austenstone/job-summary@v2.0 id: job-summary diff --git a/actions/find_unreleased_changelog_items/action.yml b/actions/find_unreleased_changelog_items/action.yml index 5e601811..1fc064fb 100644 --- a/actions/find_unreleased_changelog_items/action.yml +++ b/actions/find_unreleased_changelog_items/action.yml @@ -13,18 +13,14 @@ inputs: minor for backward compatible larger changes, major for non-backward compatible changes. required: false - previous-changelog-filename: - description: The name of the file to copy the contents of the changelog into for - use in the `python-semantic-release` templates. This file will be created inside - of the directory defined by the `[tool.semantic_release.changelog.template_dir]` - key in the `pyproject.toml` file. + previous-changelog-filepath: + description: The full path of the file to copy the contents of the changelog into + for use in the `python-semantic-release` templates. required: false default: .previous_changelog_for_template.md - previous-release-notes-filename: - description: The name of the file to copy the contents of the `## Unreleased` - section of the changelog into for use in the GitHub Release Notes. This file - will be created inside of the directory defined by the `[tool.semantic_release.changelog.template_dir]` - key in the `pyproject.toml` file. + previous-release-notes-filepath: + description: The full path of the file to copy the contents of the `## Unreleased` + section of the changelog into for use in the GitHub Release Notes. required: false default: .previous_release_notes_for_template.md runs: diff --git a/actions/find_unreleased_changelog_items/main.py b/actions/find_unreleased_changelog_items/main.py index fd6a9235..77c4f599 100644 --- a/actions/find_unreleased_changelog_items/main.py +++ b/actions/find_unreleased_changelog_items/main.py @@ -19,29 +19,9 @@ import re import shutil -import tomli - -PYPROJECT_FILE = pathlib.Path("./pyproject.toml") CHANGELOG_FILE = pathlib.Path("./CHANGELOG.md") -def find_template_folder() -> pathlib.Path: - """Find the template folder from the pyproject.toml file. - - Returns: - The path to the template folder. - """ - with PYPROJECT_FILE.open("rb") as file_handle: - pyproject_data = tomli.load(file_handle) - try: - template_folder = pathlib.Path( - pyproject_data["tool"]["semantic_release"]["changelog"]["template_dir"] - ) - except KeyError: - template_folder = pathlib.Path("./templates") - return template_folder - - def main() -> None: """Check for entries in the Unreleased section of the CHANGELOG.md file. @@ -50,15 +30,12 @@ def main() -> None: """ # Load in the GitHub Action inputs # See https://docs.github.com/en/actions/sharing-automations/creating-actions/metadata-syntax-for-github-actions#example-specifying-inputs - filename_for_previous_changelog = os.environ["INPUT_PREVIOUS-CHANGELOG-FILENAME"] - filename_for_previous_release_notes = os.environ["INPUT_PREVIOUS-RELEASE-NOTES-FILENAME"] + filepath_for_previous_changelog = os.environ["INPUT_PREVIOUS-CHANGELOG-FILEPATH"] + filepath_for_previous_release_notes = os.environ["INPUT_PREVIOUS-RELEASE-NOTES-FILEPATH"] release_level = os.getenv("INPUT_RELEASE-LEVEL") # Set the filepaths for the template files - template_folder = find_template_folder() - template_changelog_filepath = template_folder / pathlib.Path(filename_for_previous_changelog) - template_release_notes_filepath = template_folder / pathlib.Path( - filename_for_previous_release_notes - ) + template_changelog_filepath = pathlib.Path(filepath_for_previous_changelog) + template_release_notes_filepath = pathlib.Path(filepath_for_previous_release_notes) release_notes_content = "" found_entries = False diff --git a/actions/find_unreleased_changelog_items/readme.md b/actions/find_unreleased_changelog_items/readme.md index 950bd5c8..78f6b742 100644 --- a/actions/find_unreleased_changelog_items/readme.md +++ b/actions/find_unreleased_changelog_items/readme.md @@ -33,11 +33,11 @@ will be used to fill in the GitHub Release Notes. ## Inputs -| Input variable | Necessity | Description | Default | -| --------------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | -| `release-level` | optional | The level of the impending release. Must be one of `major`, `minor`, or `patch`. Setting this input will trigger the action to output the summary of the incoming release level and the unreleased changes to the Workflow Summary. | | -| `previous-changelog-filename` | optional | The name of the file to copy the contents of the changelog into for use in the `python-semantic-release` templates. This file will be created inside of the directory defined by the `[tool.semantic_release.changelog.template_dir]` key in the `pyproject.toml` file. | `'.previous_changelog_for_template.md'` | -| `previous-release-notes-filename` | optional | The name of the file to copy the contents of the `## Unreleased` section of the changelog into for use in the GitHub Release Notes. This file will be created inside of the directory defined by the `[tool.semantic_release.changelog.template_dir]` key in the `pyproject.toml` file. | `'.previous_release_notes_for_template.md'` | +| Input variable | Necessity | Description | Default | +| --------------------------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | +| `release-level` | optional | The level of the impending release. Must be one of `major`, `minor`, or `patch`. Setting this input will trigger the action to output the summary of the incoming release level and the unreleased changes to the Workflow Summary. | | +| `previous-changelog-filepath` | optional | The full path of the file to copy the contents of the changelog into for use in the `python-semantic-release` templates. | `'.previous_changelog_for_template.md'` | +| `previous-release-notes-filepath` | optional | The full path of the file to copy the contents of the `## Unreleased` section of the changelog into for use in the GitHub Release Notes. | `'.previous_release_notes_for_template.md'` | ## Example @@ -51,6 +51,6 @@ jobs: - uses: tektronix/python-package-ci-cd/actions/find_unreleased_changelog_items@main # it is recommended to use the latest release tag instead of `main` with: release-level: ${{ inputs.release-level }} # optional - previous-changelog-filename: .previous_changelog_for_template.md # optional - previous-release-notes-filename: .previous_release_notes_for_template.md # optional + previous-changelog-filepath: .previous_changelog_for_template.md # optional + previous-release-notes-filepath: .previous_release_notes_for_template.md # optional ``` diff --git a/tests/test_find_unreleased_changelog_items.py b/tests/test_find_unreleased_changelog_items.py index 8eed8805..6ccba91e 100644 --- a/tests/test_find_unreleased_changelog_items.py +++ b/tests/test_find_unreleased_changelog_items.py @@ -2,38 +2,36 @@ from __future__ import annotations -from pathlib import Path +from typing import TYPE_CHECKING import pytest -from actions.find_unreleased_changelog_items.main import find_template_folder, main +from actions.find_unreleased_changelog_items.main import main -PREVIOUS_CHANGELOG_FILENAME = "previous_changelog.md" -PREVIOUS_RELEASE_NOTES_FILENAME = "previous_release_notes.md" +if TYPE_CHECKING: + from pathlib import Path + +PREVIOUS_CHANGELOG_FILEPATH = "previous_changelog.md" +PREVIOUS_RELEASE_NOTES_FILEPATH = "previous_release_notes.md" MOCK_TEMPLATES_FOLDER = "mock_templates" @pytest.fixture() -def mock_pyproject_file(monkeypatch: pytest.MonkeyPatch, tmp_path: Path) -> tuple[Path, Path]: - """Mock the pyproject.toml file. +def mock_previous_files(tmp_path: Path) -> tuple[Path, Path]: + """Create filepaths in the temporary directory for the template files. Args: - monkeypatch: The monkeypatch fixture. tmp_path: The temporary path fixture. Returns: - The path to the pyproject.toml file and the path to the template folder. + The path to the previous changelog file and previous release notes file. """ - pyproject_content = f""" - [tool.semantic_release.changelog] - template_dir = "{MOCK_TEMPLATES_FOLDER}" - """ - mock_path = tmp_path / "pyproject.toml" - mock_path.write_text(pyproject_content) - monkeypatch.setattr("actions.find_unreleased_changelog_items.main.PYPROJECT_FILE", mock_path) template_folder = tmp_path / MOCK_TEMPLATES_FOLDER template_folder.mkdir() - return mock_path, template_folder + return ( + template_folder / PREVIOUS_CHANGELOG_FILEPATH, + template_folder / PREVIOUS_RELEASE_NOTES_FILEPATH, + ) @pytest.fixture() @@ -73,55 +71,32 @@ def summary_file(tmp_path: Path) -> Path: @pytest.fixture() -def mock_env_vars(tmp_path: Path, monkeypatch: pytest.MonkeyPatch, summary_file: Path) -> None: +def mock_env_vars( + tmp_path: Path, + monkeypatch: pytest.MonkeyPatch, + summary_file: Path, + mock_previous_files: tuple[Path, Path], +) -> None: """Mock the environment variables to simulate GitHub Actions inputs. Args: tmp_path: The temporary path fixture. monkeypatch: The monkeypatch fixture. summary_file: The path to the job summary file. + mock_previous_files: Paths to the previous changelog file and previous release notes file. """ # Change the working directory monkeypatch.chdir(tmp_path) - monkeypatch.setenv("INPUT_PREVIOUS-CHANGELOG-FILENAME", PREVIOUS_CHANGELOG_FILENAME) - monkeypatch.setenv("INPUT_PREVIOUS-RELEASE-NOTES-FILENAME", PREVIOUS_RELEASE_NOTES_FILENAME) + monkeypatch.setenv("INPUT_PREVIOUS-CHANGELOG-FILEPATH", mock_previous_files[0].as_posix()) + monkeypatch.setenv("INPUT_PREVIOUS-RELEASE-NOTES-FILEPATH", mock_previous_files[1].as_posix()) monkeypatch.setenv("INPUT_RELEASE-LEVEL", "minor") monkeypatch.setenv("GITHUB_STEP_SUMMARY", str(summary_file)) -@pytest.mark.parametrize( - ("pyproject_content", "expected_template_folder"), - [ - ( - '[tool.semantic_release.changelog]\ntemplate_dir = "mock_templates"\n', - Path("mock_templates"), - ), - ( - "[tool.semantic_release.changelog]\n", - Path("templates"), - ), - ], -) -def test_find_template_folder( - mock_pyproject_file: tuple[Path, Path], pyproject_content: str, expected_template_folder: Path -) -> None: - """Test the find_template_folder function. - - Args: - mock_pyproject_file: Mock the pyproject.toml file. - pyproject_content: The content to write to the pyproject.toml file. - expected_template_folder: The expected template folder path. - """ - mock_pyproject_file[0].write_text(pyproject_content) - template_folder = find_template_folder() - assert template_folder == expected_template_folder - - def test_main_no_unreleased_entries( mock_env_vars: None, # noqa: ARG001 mock_changelog_file: Path, summary_file: Path, # noqa: ARG001 - mock_pyproject_file: Path, # noqa: ARG001 ) -> None: """Test the main function when no unreleased entries are found. @@ -129,7 +104,6 @@ def test_main_no_unreleased_entries( mock_env_vars: Mock the environment variables. mock_changelog_file: Mock the changelog file. summary_file: Mock the environment variables. - mock_pyproject_file: Mock the pyproject.toml file. """ # Modify the changelog content to have no unreleased entries changelog_content = """# Changelog @@ -146,27 +120,22 @@ def test_main_no_unreleased_entries( def test_main_with_unreleased_entries( mock_env_vars: None, # noqa: ARG001 - mock_pyproject_file: tuple[Path, Path], mock_changelog_file: Path, summary_file: Path, + mock_previous_files: tuple[Path, Path], ) -> None: """Test the main function when unreleased entries are found. Args: mock_env_vars: Mock the environment variables. - mock_pyproject_file: Mock the pyproject.toml file. mock_changelog_file: Mock the changelog file. summary_file: Mock the environment variables. + mock_previous_files: Paths to the previous changelog file and previous release notes file. """ - _, template_folder = mock_pyproject_file - template_changelog_file = template_folder / PREVIOUS_CHANGELOG_FILENAME - template_release_notes_file = template_folder / PREVIOUS_RELEASE_NOTES_FILENAME main() - assert template_changelog_file.read_text() == mock_changelog_file.read_text() - assert ( - template_release_notes_file.read_text().strip() == "## Unreleased\n### Added\n- New feature" - ) + assert mock_previous_files[0].read_text() == mock_changelog_file.read_text() + assert mock_previous_files[1].read_text().strip() == "## Unreleased\n### Added\n- New feature" with summary_file.open("r") as summary_file_handle: summary_contents = summary_file_handle.read() @@ -176,30 +145,24 @@ def test_main_with_unreleased_entries( def test_main_with_no_release_level( mock_env_vars: None, # noqa: ARG001 - mock_pyproject_file: tuple[Path, Path], mock_changelog_file: Path, summary_file: Path, + mock_previous_files: tuple[Path, Path], monkeypatch: pytest.MonkeyPatch, ) -> None: """Test the main function when unreleased entries are found but no release_level is provided. Args: mock_env_vars: Mock the environment variables. - mock_pyproject_file: Mock the pyproject.toml file. mock_changelog_file: Mock the changelog file. summary_file: Mock the environment variables. + mock_previous_files: Paths to the previous changelog file and previous release notes file. monkeypatch: The monkeypatch fixture. """ - _, template_folder = mock_pyproject_file - template_changelog_file = template_folder / PREVIOUS_CHANGELOG_FILENAME - template_release_notes_file = template_folder / PREVIOUS_RELEASE_NOTES_FILENAME - # Unset the INPUT_RELEASE-LEVEL environment variable monkeypatch.delenv("INPUT_RELEASE-LEVEL", raising=False) main() - assert template_changelog_file.read_text() == mock_changelog_file.read_text() - assert ( - template_release_notes_file.read_text().strip() == "## Unreleased\n### Added\n- New feature" - ) + assert mock_previous_files[0].read_text() == mock_changelog_file.read_text() + assert mock_previous_files[1].read_text().strip() == "## Unreleased\n### Added\n- New feature" assert not summary_file.exists() diff --git a/workflows/package-release.md b/workflows/package-release.md index c7be08e8..709ff898 100644 --- a/workflows/package-release.md +++ b/workflows/package-release.md @@ -66,18 +66,18 @@ will be used to fill in the GitHub Release Notes. ## Inputs -| Input variable | Necessity | Description | Default | -| ---------------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | -| `package-name` | required | The name of the package to build, upload, and install. | | -| `repo-name` | required | The full name of the repository to use to gate uploads, in the format `owner/repo`. | | -| `commit-user-name` | required | The name of the user to use when committing changes to the repository. | | -| `commit-user-email` | required | The email of the user to use when committing changes to the repository. | | -| `release-level` | required | The level of the release to create. Must be one of `major`, `minor`, or `patch`. | | -| `build-and-publish-python-package` | optional | A boolean value that determines whether to build and publish the Python package. If set to `false`, the package binaries will not be built or published to PyPI, TestPyPI, or GitHub Releases. | `true` | -| `python-versions-array` | optional | A valid JSON array of Python versions to test against. | | -| `operating-systems-array` | optional | A valid JSON array of operating system names to run tests on. | `'["ubuntu", "windows", "macos"]'` | -| `previous-changelog-filename` | optional | The name of the file to copy the contents of the changelog into for use in the `python-semantic-release` templates. This file will be created inside of the directory defined by the `[tool.semantic_release.changelog.template_dir]` key in the `pyproject.toml` file. | `'.previous_changelog_for_template.md'` | -| `previous-release-notes-filename` | optional | The name of the file to copy the contents of the `## Unreleased` section of the changelog into for use in the GitHub Release Notes. This file will be created inside of the directory defined by the `[tool.semantic_release.changelog.template_dir]` key in the `pyproject.toml` file. | `'.previous_release_notes_for_template.md'` | +| Input variable | Necessity | Description | Default | +| ---------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | +| `package-name` | required | The name of the package to build, upload, and install. | | +| `repo-name` | required | The full name of the repository to use to gate uploads, in the format `owner/repo`. | | +| `commit-user-name` | required | The name of the user to use when committing changes to the repository. | | +| `commit-user-email` | required | The email of the user to use when committing changes to the repository. | | +| `release-level` | required | The level of the release to create. Must be one of `major`, `minor`, or `patch`. | | +| `build-and-publish-python-package` | optional | A boolean value that determines whether to build and publish the Python package. If set to `false`, the package binaries will not be built or published to PyPI, TestPyPI, or GitHub Releases. | `true` | +| `python-versions-array` | optional | A valid JSON array of Python versions to test against. | | +| `operating-systems-array` | optional | A valid JSON array of operating system names to run tests on. | `'["ubuntu", "windows", "macos"]'` | +| `previous-changelog-filepath` | optional | The full path of the file to copy the contents of the changelog into for use in the `python-semantic-release` templates. | `'.previous_changelog_for_template.md'` | +| `previous-release-notes-filepath` | optional | The full path of the file to copy the contents of the `## Unreleased` section of the changelog into for use in the GitHub Release Notes. | `'.previous_release_notes_for_template.md'` | ## Secrets @@ -117,8 +117,8 @@ jobs: build-and-publish-python-package: true # optional python-versions-array: '["3.9", "3.10", "3.11", "3.12"]' # optional operating-systems-array: '["ubuntu", "windows", "macos"]' # optional - previous-changelog-filename: '.previous_changelog_for_template.md' # optional - previous-release-notes-filename: '.previous_release_notes_for_template.md' # optional + previous-changelog-filepath: 'templates/.previous_changelog_for_template.md' # optional + previous-release-notes-filepath: 'templates/.previous_release_notes_for_template.md' # optional permissions: contents: write id-token: write From 4a5aa0c823cda01210f1e269c9860ffaa21458aa Mon Sep 17 00:00:00 2001 From: "Felt, Nicholas" Date: Mon, 26 Aug 2024 14:45:32 -0700 Subject: [PATCH 2/2] chore: Update dependency versions --- .pre-commit-config.yaml | 2 +- actions/create_unique_testpypi_version/requirements.txt | 2 +- actions/find_unreleased_changelog_items/requirements.txt | 1 - actions/update_development_dependencies/requirements.txt | 2 +- pyproject.toml | 1 - tests/requirements.txt | 4 ++-- 6 files changed, 5 insertions(+), 7 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2ab0f352..8fff417c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -30,7 +30,7 @@ repos: - id: remove-tabs - id: forbid-tabs - repo: https://github.com/python-jsonschema/check-jsonschema - rev: e2dde74d0702d15f4f43e4f4fb93e301b4bc1e30 # frozen: 0.29.1 + rev: 5c70e3d884fdbe99af42f2714a444e39f321498d # frozen: 0.29.2 hooks: - id: check-dependabot - id: check-github-actions diff --git a/actions/create_unique_testpypi_version/requirements.txt b/actions/create_unique_testpypi_version/requirements.txt index 6dfbe066..20140be4 100644 --- a/actions/create_unique_testpypi_version/requirements.txt +++ b/actions/create_unique_testpypi_version/requirements.txt @@ -3,7 +3,7 @@ attrs==24.2.0 ; python_version >= "3.12" and python_version < "3.13" beautifulsoup4==4.12.3 ; python_version >= "3.12" and python_version < "3.13" certifi==2024.7.4 ; python_version >= "3.12" and python_version < "3.13" charset-normalizer==3.3.2 ; python_version >= "3.12" and python_version < "3.13" -idna==3.7 ; python_version >= "3.12" and python_version < "3.13" +idna==3.8 ; python_version >= "3.12" and python_version < "3.13" mailbits==0.2.1 ; python_version >= "3.12" and python_version < "3.13" packaging==24.1 ; python_version >= "3.12" and python_version < "3.13" poetry-core==1.9.0 ; python_version >= "3.12" and python_version < "3.13" diff --git a/actions/find_unreleased_changelog_items/requirements.txt b/actions/find_unreleased_changelog_items/requirements.txt index f29c938b..e69de29b 100644 --- a/actions/find_unreleased_changelog_items/requirements.txt +++ b/actions/find_unreleased_changelog_items/requirements.txt @@ -1 +0,0 @@ -tomli==2.0.1 ; python_version >= "3.12" and python_version < "3.13" diff --git a/actions/update_development_dependencies/requirements.txt b/actions/update_development_dependencies/requirements.txt index 206dc35d..5651c0bc 100644 --- a/actions/update_development_dependencies/requirements.txt +++ b/actions/update_development_dependencies/requirements.txt @@ -18,7 +18,7 @@ dulwich==0.21.7 ; python_version >= "3.12" and python_version < "3.13" fastjsonschema==2.20.0 ; python_version >= "3.12" and python_version < "3.13" filelock==3.15.4 ; python_version >= "3.12" and python_version < "3.13" identify==2.6.0 ; python_version >= "3.12" and python_version < "3.13" -idna==3.7 ; python_version >= "3.12" and python_version < "3.13" +idna==3.8 ; python_version >= "3.12" and python_version < "3.13" installer==0.7.0 ; python_version >= "3.12" and python_version < "3.13" jaraco-classes==3.4.0 ; python_version >= "3.12" and python_version < "3.13" jeepney==0.8.0 ; python_version >= "3.12" and python_version < "3.13" and sys_platform == "linux" diff --git a/pyproject.toml b/pyproject.toml index 4c957181..1dc83c96 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -49,7 +49,6 @@ tox = "^4.18.0" tox-gh-actions = "^3.2.0" [tool.poetry.group.fci.dependencies] # dependencies for actions/find_unreleased_changelog_items -tomli = "^2.0.1" [tool.poetry.group.tests.dependencies] coverage = "^7.5.0" diff --git a/tests/requirements.txt b/tests/requirements.txt index 46729721..d810e124 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -8,7 +8,7 @@ coverage[toml]==7.6.1 ; python_version >= "3.12" and python_version < "3.13" dataproperty==1.0.1 ; python_version >= "3.12" and python_version < "3.13" dnspython==2.6.1 ; python_version >= "3.12" and python_version < "3.13" future-fstrings==1.2.0 ; python_version >= "3.12" and python_version < "3.13" -idna==3.7 ; python_version >= "3.12" and python_version < "3.13" +idna==3.8 ; python_version >= "3.12" and python_version < "3.13" iniconfig==2.0.0 ; python_version >= "3.12" and python_version < "3.13" jinja2==3.1.4 ; python_version >= "3.12" and python_version < "3.13" linkchecker==10.4.0 ; python_version >= "3.12" and python_version < "3.13" @@ -16,7 +16,7 @@ markupsafe==2.1.5 ; python_version >= "3.12" and python_version < "3.13" mbstrdecoder==1.1.3 ; python_version >= "3.12" and python_version < "3.13" networkx==3.3 ; python_version >= "3.12" and python_version < "3.13" packaging==24.1 ; python_version >= "3.12" and python_version < "3.13" -pathvalidate==3.2.0 ; python_version >= "3.12" and python_version < "3.13" +pathvalidate==3.2.1 ; python_version >= "3.12" and python_version < "3.13" pluggy==1.5.0 ; python_version >= "3.12" and python_version < "3.13" pytablewriter==1.2.0 ; python_version >= "3.12" and python_version < "3.13" pytest==8.3.2 ; python_version >= "3.12" and python_version < "3.13"