From 91e11ac66d8eaef05a77190e224d4df5e18e8673 Mon Sep 17 00:00:00 2001 From: Juan Villa Date: Mon, 25 May 2026 15:47:20 -0500 Subject: [PATCH 1/9] =?UTF-8?q?=F0=9F=90=9B=20fix(core):=20make=20fetch=20?= =?UTF-8?q?tags=20non-fatal=20in=20generate=20changelog=20hook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 14 ++++++++++++++ generate_changelog/main.py | 5 +++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a82aaf9..387ab21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +## [1.1.19] - 2026-03-03 + +### Features + +- **core**: add inline release creation to version controller (`patch candidate`) + +### Bug Fixes + +- **core**: add pull-requests write permission to version controller (`patch candidate`) + +### Documentation + +- **core**: update changelog + ## [1.1.17] - 2026-03-03 ### Bug Fixes diff --git a/generate_changelog/main.py b/generate_changelog/main.py index 2f14c2e..9923b84 100644 --- a/generate_changelog/main.py +++ b/generate_changelog/main.py @@ -115,8 +115,9 @@ def fetch_tags() -> None: subprocess.check_output(["git", "fetch", "--tags"]) logger.info("Successfully fetched Git tags.") except subprocess.CalledProcessError as error: - logger.error(f"Error fetching Git tags: {error}") - raise + logger.warning( + f"Could not fetch Git tags from remote (continuing with local tags): {error}" + ) def parse_version(version_str: str) -> Tuple[int, int, int]: From fae2cfdf9ee76f92a1cec0a7f9a6a810178f2132 Mon Sep 17 00:00:00 2001 From: Juan Villa Date: Sat, 30 May 2026 13:23:19 -0500 Subject: [PATCH 2/9] =?UTF-8?q?=F0=9F=90=9B=20fix(core):=20use=20docker=20?= =?UTF-8?q?compose=20v2=20plugin=20instead=20of=20deprecated=20docker-comp?= =?UTF-8?q?ose=20v1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- validate_docker_compose/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/validate_docker_compose/main.py b/validate_docker_compose/main.py index 0cacdbb..e875e7c 100644 --- a/validate_docker_compose/main.py +++ b/validate_docker_compose/main.py @@ -40,7 +40,7 @@ def validate_docker_compose(file_path): """ try: result = subprocess.run( - ["docker-compose", "-f", file_path, "config"], + ["docker", "compose", "-f", file_path, "config"], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, @@ -54,7 +54,7 @@ def validate_docker_compose(file_path): print(e.stderr) sys.exit(1) except FileNotFoundError: - print("[ERROR] docker-compose not found.") + print("[ERROR] docker compose not found.") sys.exit(1) From 177206d7e15e8edfd4b08ff959c0a9aea7a5d1a7 Mon Sep 17 00:00:00 2001 From: Juan Villa Date: Sat, 30 May 2026 14:07:41 -0500 Subject: [PATCH 3/9] =?UTF-8?q?=E2=9C=A8=20feat(core):=20add=20validate=20?= =?UTF-8?q?container=20names=20script=20for=20cloudformation=20templates?= =?UTF-8?q?=20[patch=20candidate]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- validate_container_names/main.py | 80 ++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 validate_container_names/main.py diff --git a/validate_container_names/main.py b/validate_container_names/main.py new file mode 100644 index 0000000..d3934aa --- /dev/null +++ b/validate_container_names/main.py @@ -0,0 +1,80 @@ +# scripts/validate_container_names/main.py + +import re +import sys +import os + +# Container template naming convention: Container{SUITE}{APP}{ENV}.yml +# Rules: +# - Must start with literal "Container" +# - Followed by SUITE+APP in uppercase alphanumeric (min 2 chars) +# - Must end with exactly one environment suffix: PROD | TEST | DEV +# - Extension must be .yml +VALID_ENVS = ("PROD", "TEST", "DEV") +CONTAINER_NAME_REGEX = re.compile(r"^Container[A-Z0-9]{2,}(?:PROD|TEST|DEV)\.yml$") + + +def validate_filename(file_path): + """ + Validate that a CloudFormation template filename follows the convention: + Container{SUITE}{APP}{ENV}.yml + + Args: + :param file_path: Path to the CloudFormation template file + :returns: True if valid, False otherwise + """ + basename = os.path.basename(file_path) + + if not CONTAINER_NAME_REGEX.match(basename): + env_hint = " | ".join(VALID_ENVS) + print( + f"[ERROR] '{basename}' does not follow the naming convention.\n" + f" Expected: Container{{SUITE}}{{APP}}{{{env_hint}}}.yml\n" + f" Rules:\n" + f" - Must start with 'Container'\n" + f" - SUITE and APP must be uppercase alphanumeric (no hyphens, underscores or spaces)\n" + f" - Must end with one of: {env_hint}\n" + f" - Extension must be .yml\n" + f" Example: ContainerGESTIONATENCIONBACKPROD.yml" + ) + return False + + # Extract the env suffix for informational output + name_no_ext = basename[: -len(".yml")] + env = next(e for e in VALID_ENVS if name_no_ext.endswith(e)) + suite_app = name_no_ext[len("Container") : -len(env)] + print(f"[OK] '{basename}' — suite+app: '{suite_app}', env: '{env}'") + return True + + +def main(): + """Main function for validating Container CloudFormation template filenames.""" + + if len(sys.argv) < 2: + print("[ERROR] Incorrect usage. Must specify at least one file.") + sys.exit(1) + + files = sys.argv[1:] + errors = [] + + for file in files: + if not validate_filename(file): + errors.append(os.path.basename(file)) + + if errors: + print(f"\n[FAIL] {len(errors)} file(s) with invalid names: {', '.join(errors)}") + sys.exit(1) + + print(f"[OK] All {len(files)} file(s) passed naming validation.") + sys.exit(0) + + +if __name__ == "__main__": + if sys.stdout.encoding.lower() != "utf-8": + try: + sys.stdout.reconfigure(encoding="utf-8") + except AttributeError: + import io + + sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8") + main() From e671779ac168ac07baa60d02b628790b08cc9efd Mon Sep 17 00:00:00 2001 From: Juan Villa Date: Sat, 30 May 2026 14:09:11 -0500 Subject: [PATCH 4/9] =?UTF-8?q?=F0=9F=94=96=20Bump=20version:=201.1.19=20?= =?UTF-8?q?=E2=86=92=201.1.20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bumpversion.cfg | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 68536e2..86a4f23 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 1.1.19 +current_version = 1.1.20 commit = True tag = False diff --git a/pyproject.toml b/pyproject.toml index 6368976..12c8c76 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "scripts" -version = "1.1.19" +version = "1.1.20" description = "CICD Core Scripts" authors = ["B "] license = "GLPv3" From 3c09a3c4d752a0a8484107258268442b669d5796 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 May 2026 14:17:21 -0500 Subject: [PATCH 5/9] =?UTF-8?q?=F0=9F=90=9B=20fix(deps):=20update=20pytest?= =?UTF-8?q?=20requirement=20from=20^8.3.1=20to=20^9.0.3=20(#112)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version.
Release notes

Sourced from pytest's releases.

9.0.3

pytest 9.0.3 (2026-04-07)

Bug fixes

  • #12444: Fixed pytest.approx which now correctly takes into account ~collections.abc.Mapping keys order to compare them.

  • #13634: Blocking a conftest.py file using the -p no: option is now explicitly disallowed.

    Previously this resulted in an internal assertion failure during plugin loading.

    Pytest now raises a clear UsageError explaining that conftest files are not plugins and cannot be disabled via -p.

  • #13734: Fixed crash when a test raises an exceptiongroup with __tracebackhide__ = True.

  • #14195: Fixed an issue where non-string messages passed to unittest.TestCase.subTest() were not printed.

  • #14343: Fixed use of insecure temporary directory (CVE-2025-71176).

Improved documentation

  • #13388: Clarified documentation for -p vs PYTEST_PLUGINS plugin loading and fixed an incorrect -p example.
  • #13731: Clarified that capture fixtures (e.g. capsys and capfd) take precedence over the -s / --capture=no command-line options in Accessing captured output from a test function <accessing-captured-output>.
  • #14088: Clarified that the default pytest_collection hook sets session.items before it calls pytest_collection_finish, not after.
  • #14255: TOML integer log levels must be quoted: Updating reference documentation.

Contributor-facing changes

  • #12689: The test reports are now published to Codecov from GitHub Actions. The test statistics is visible on the web interface.

    -- by aleguy02

Commits

You can trigger a rebase of this PR by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
> **Note** > Automatic rebases have been disabled on this pull request as it has been open for over 30 days. Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 12c8c76..5ca2dae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ yamllint="^1.35.0" isort = "^6.0.1" toml = "^0.10.0" black = "^26.1.0" -pytest = "^8.3.1" +pytest = "^9.0.3" httpx = { version = ">=0.24.0", optional = true } pytest-cov = "^6.0.0" coverage = "^7.2.5" From db1fa0a144042ce854deceee3857b91e2206b697 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 May 2026 14:17:25 -0500 Subject: [PATCH 6/9] =?UTF-8?q?=F0=9F=90=9B=20fix(deps):=20update=20bump2v?= =?UTF-8?q?ersion=20requirement=20from=20^1.0.0=20to=20^1.0.1=20(#113)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updates the requirements on [bump2version](https://github.com/c4urself/bump2version) to permit the latest version.
Changelog

Sourced from bump2version's changelog.

unreleased v1.0.2-dev

  • Declare bump2version as unmaintained
  • Housekeeping: migrated from travis+appveyor to GitHub Actions for CI, thanks @​clbarnes

v1.0.1

  • Added: enable special characters in search/replace, thanks @​mckelvin
  • Added: allow globbing a pattern to match multiple files, thanks @​balrok
  • Added: way to only bump a specified file via --no-configured-files, thanks @​balrok
  • Fixed: dry-run now correctly outputs, thanks @​fmigneault
  • Housekeeping: documentation for lightweight tags improved, thanks @​GreatBahram
  • Housekeeping: added related tools document, thanks @​florisla
  • Fixed: no more falling back to default search, thanks @​florisla

v1.0.0

v0.5.11

  • Housekeeping, also publish an sdist
  • Housekeeping, fix appveyor builds
  • Housekeeping, make lint now lints with pylint
  • Drop support for Python3.4, thanks @​hugovk #79
  • Enhance missing VCS command detection (errno 13), thanks @​lowell80 #75
  • Add environment variables for other scripts to use, thanks @​mauvilsa #70
  • Refactor, cli.main is now much more readable, thanks @​florisla #68
  • Fix, retain file newlines for Windows, thanks @​hesstobi #59
  • Add support (tests) for Pythno3.7, thanks @​florisla #49
  • Allow any part to be configured in configurable strings such as tag_name etc., thanks @​florisla #41

v0.5.10

  • Housekeeping, use twine

v0.5.9

v0.5.8

  • Updated the readme to markdown for easier maintainability
  • Fixed travis testing, thanks: @​sharksforarms #15

... (truncated)

Commits
  • 14fa603 Bump version: 1.0.1-dev → 1.0.1
  • 2051c96 update changelog
  • 8e6db23 Merge pull request #135 from mckelvin/handle-special-char
  • 78c4f4b Merge pull request #149 from balrok/cli-option-no-configured-files
  • 4fe9277 Merge pull request #158 from mbarkhau/patch-1
  • c684747 Add PyCalVer to RELATED.md
  • 0a38097 Merge pull request #150 from balrok/glob-keyword-in-configfile
  • dc7cead DOC: Update note about bumpversion
  • 0bd8d83 also allow recursive glob with **
  • a96ebf4 support glob keyword in configfile
  • Additional commits viewable in compare view

You can trigger a rebase of this PR by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
> **Note** > Automatic rebases have been disabled on this pull request as it has been open for over 30 days. Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5ca2dae..e47ca33 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ python = "^3.12" setuptools = "^82.0.0" idna = "^3.0" certifi = "^2026.1.4" -bump2version = "^1.0.0" +bump2version = "^1.0.1" python-dotenv = "^1.0.0" cryptography = "^46.0.5" requests = "^2.32.3" From 4d50bee7d8e4190e6b6794dca767992d6c77e294 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 May 2026 14:17:28 -0500 Subject: [PATCH 7/9] =?UTF-8?q?=F0=9F=90=9B=20fix(deps):=20update=20reques?= =?UTF-8?q?ts=20requirement=20from=20^2.32.3=20to=20^2.34.2=20(#114)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updates the requirements on [requests](https://github.com/psf/requests) to permit the latest version.
Release notes

Sourced from requests's releases.

v2.34.2

2.34.2 (2026-05-14)

  • Moved headers input type back to Mapping to avoid invariance issues with MutableMapping and inferred dict types. Users calling Request.headers.update() may need to narrow typing in their code. (#7441)

Full Changelog: https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14

Changelog

Sourced from requests's changelog.

2.34.2 (2026-05-14)

  • Moved headers input type back to Mapping to avoid invariance issues with MutableMapping and inferred dict types. Users calling Request.headers.update() may need to narrow typing in their code. (#7441)

2.34.1 (2026-05-13)

Bugfixes

  • Widened json input type from dict and list to Mapping and Sequence. (#7436)
  • Changed headers input type to MutableMapping and removed None from Request.headers typing to improve handling for users. (#7431)
  • Response.reason moved from str | None to str to improve handling for users. (#7437)
  • Fixed a bug where some bodies with custom __getattr__ implementations weren't being properly detected as Iterables. (#7433)

2.34.0 (2026-05-11)

Announcements

  • Requests 2.34.0 introduces inline types, replacing those provided by typeshed. Public API types should be fully compatible with mypy, pyright, and ty. We believe types are comprehensive but if you find issues, please report them to the pinned tracking issue.

    Special thanks to @​bastimeyer, @​cthoyt, @​edgarrmondragon, and @​srittau for helping review and test the types ahead of the release. (#7272)

Improvements

  • Digest Auth hashing algorithms have added usedforsecurity=False to clarify security considerations. (#7310)
  • Requests added support for Python 3.15 based on beta1. Downstream projects should be able to start testing prior to its release in October. (#7422)
  • Requests added support for Python 3.14t. (#7419)

Bugfixes

  • Response.history no longer contains a reference to itself, preventing accidental looping when traversing the history list. (#7328)
  • Requests no longer performs greedy matching on no_proxy domains. The proxy_bypass implementation has been updated with CPython's fix from bpo-39057. (#7427)
  • Requests no longer incorrectly strips duplicate leading slashes in URI paths. This should address user issues with specific presigned URLs. Note the full fix requires urllib3 2.7.0+. (#7315)

... (truncated)

Commits

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index e47ca33..0a3b269 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ certifi = "^2026.1.4" bump2version = "^1.0.1" python-dotenv = "^1.0.0" cryptography = "^46.0.5" -requests = "^2.32.3" +requests = "^2.34.2" wheel = ">=0.36.2" [tool.poetry.group.dev.dependencies] From 25b4aa32db7b5caa740355b7767797980f1af4d6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 May 2026 14:17:31 -0500 Subject: [PATCH 8/9] =?UTF-8?q?=F0=9F=90=9B=20fix(deps):=20update=20setupt?= =?UTF-8?q?ools=20requirement=20from=20^82.0.0=20to=20^82.0.1=20(#115)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updates the requirements on [setuptools](https://github.com/pypa/setuptools) to permit the latest version.
Changelog

Sourced from setuptools's changelog.

v82.0.1

Bugfixes

  • Fix the loading of launcher manifest.xml file. (#5047)
  • Replaced deprecated json.__version__ with fixture in tests. (#5186)

Improved Documentation

  • Add advice about how to improve predictability when installing sdists. (#5168)

Misc

v82.0.0

Deprecations and Removals

  • pkg_resources has been removed from Setuptools. Most common uses of pkg_resources have been superseded by the importlib.resources <https://docs.python.org/3/library/importlib.resources.html>_ and importlib.metadata <https://docs.python.org/3/library/importlib.metadata.html>_ projects. Projects and environments relying on pkg_resources for namespace packages or other behavior should depend on older versions of setuptools. (#3085)

v81.0.0

Deprecations and Removals

  • Removed support for the --dry-run parameter to setup.py. This one feature by its nature threads through lots of core and ancillary functionality, adding complexity and friction. Removal of this parameter will help decouple the compiler functionality from distutils and thus the eventual full integration of distutils. These changes do affect some class and function signatures, so any derivative functionality may require some compatibility shims to support their expected interface. Please report any issues to the Setuptools project for investigation. (#4872)

v80.10.2

Bugfixes

  • Update vendored dependencies. (#5159)

Misc

... (truncated)

Commits
  • 5a13876 Bump version: 82.0.0 → 82.0.1
  • 51ab8f1 Avoid using (deprecated) 'json.version' in tests (#5194)
  • f9c37b2 Docs/CI: Fix intersphinx references (#5195)
  • 8173db2 Docs: Fix intersphinx references
  • 09bafbc Fix past tense on newsfragment
  • 461ea56 Add news fragment
  • c4ffe53 Avoid using (deprecated) 'json.version' in tests
  • 749258b Cleanup pkg_resources dependencies and configuration (#5175)
  • 2019c16 Parse ext-module.define-macros from pyproject.toml as list of tuples (#5169)
  • b809c86 Sync setuptools schema with validate-pyproject (#5157)
  • Additional commits viewable in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0a3b269..badc6d0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ package-mode = false [tool.poetry.dependencies] python = "^3.12" -setuptools = "^82.0.0" +setuptools = "^82.0.1" idna = "^3.0" certifi = "^2026.1.4" bump2version = "^1.0.1" From a6a31f8898f525ae834536290ea159097842e851 Mon Sep 17 00:00:00 2001 From: Juan Villa Date: Sat, 30 May 2026 14:29:19 -0500 Subject: [PATCH 9/9] =?UTF-8?q?=F0=9F=90=9B=20fix(core):=20handle=20existi?= =?UTF-8?q?ng=20tag=20gracefully=20in=20version-controller=20workflow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/version-controller.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/version-controller.yml b/.github/workflows/version-controller.yml index 816b1d6..41d917b 100644 --- a/.github/workflows/version-controller.yml +++ b/.github/workflows/version-controller.yml @@ -97,14 +97,17 @@ jobs: VERSION=${{ steps.get_version.outputs.current_version }} BRANCH_NAME=${{ steps.determine_branch.outputs.current_branch }} TAG_NAME="v${VERSION}-${BRANCH_NAME}" - git tag "$TAG_NAME" + if git rev-parse "$TAG_NAME" >/dev/null 2>&1; then + echo "Tag $TAG_NAME already exists — skipping creation" + else + git tag "$TAG_NAME" + fi echo "tag_name=$TAG_NAME" >> $GITHUB_OUTPUT - continue-on-error: true - name: Push Tag id: push_tag - if: steps.check_arrow.outputs.contains_arrow == 'true' + if: steps.check_arrow.outputs.contains_arrow == 'true' && steps.create_tag.outputs.tag_name != '' run: | - git push origin "${{ steps.create_tag.outputs.tag_name }}" + git push origin "${{ steps.create_tag.outputs.tag_name }}" || echo "Tag already on remote — skipping" - name: Ensure on Current Branch id: ensure_branch if: steps.check_arrow.outputs.contains_arrow == 'true'