Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gcil for openSUSE:Factory checked in at 2026-08-24 12:11:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gcil (Old) and /work/SRC/openSUSE:Factory/.gcil.new.1258 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gcil" Mon Aug 24 12:11:51 2026 rev:3 rq:1373328 version:13.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/gcil/gcil.changes 2026-03-11 20:59:33.628413294 +0100 +++ /work/SRC/openSUSE:Factory/.gcil.new.1258/gcil.changes 2026-08-24 12:17:18.619154935 +0200 @@ -1,0 +2,19 @@ +Mon Aug 24 06:34:33 UTC 2026 - Michael Vetter <[email protected]> + +- Update to 13.1.0: + Features: + * yaml: represent multiline YAML blocks in multiple output lines (40f8f4c) + Bug Fixes: + * gitlab: handle 'tags: []' definitions for extended jobs too (36908b1) + * BREAKING CHANGE updates, requirements: migrate to 'update_checker' 1.0.0 API (19aba1c) + Documentation: + * license, mkdocs: raise copyright year to 2026 (ac7092e) + Styling: + * src: migrate to '|' types unions (python:S6546) (4d85b34) + Test: + * permissions: ensure quick job execution handles interruption (2a27ac5) + Cleanups: + * docker: avoid coverage of deprecated 'progress' animation (e7bb656) + * updates: enforce 'typings' [arg-type] error on 'date' (b2f7c6b) + +------------------------------------------------------------------- Old: ---- gitlabci_local-13.0.2.tar.gz New: ---- gitlabci_local-13.1.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gcil.spec ++++++ --- /var/tmp/diff_new_pack.Czqhfx/_old 2026-08-24 12:17:19.437184070 +0200 +++ /var/tmp/diff_new_pack.Czqhfx/_new 2026-08-24 12:17:19.440184177 +0200 @@ -17,7 +17,7 @@ Name: gcil -Version: 13.0.2 +Version: 13.1.0 Release: 0 Summary: Launch .gitlab-ci.yml jobs locally License: Apache-2.0 ++++++ gcil-no-update.patch ++++++ --- /var/tmp/diff_new_pack.Czqhfx/_old 2026-08-24 12:17:19.485185780 +0200 +++ /var/tmp/diff_new_pack.Czqhfx/_new 2026-08-24 12:17:19.496186172 +0200 @@ -1,17 +1,17 @@ update_checker isn't packaged for openSUSE and last release > 5 years -Index: gitlabci_local-13.0.1/requirements/runtime.txt +Index: gitlabci_local-13.1.0/requirements/runtime.txt =================================================================== ---- gitlabci_local-13.0.1.orig/requirements/runtime.txt -+++ gitlabci_local-13.0.1/requirements/runtime.txt +--- gitlabci_local-13.1.0.orig/requirements/runtime.txt ++++ gitlabci_local-13.1.0/requirements/runtime.txt @@ -8,4 +8,3 @@ PyYAML>=6.0 questionary>=2.1.1 requests>=2.26.0 setuptools>=45.1.0 --update_checker>=0.18.0 -Index: gitlabci_local-13.0.1/src/cli/main.py +-update_checker>=1.0.0 +Index: gitlabci_local-13.1.0/src/cli/main.py =================================================================== ---- gitlabci_local-13.0.1.orig/src/cli/main.py -+++ gitlabci_local-13.0.1/src/cli/main.py +--- gitlabci_local-13.1.0.orig/src/cli/main.py ++++ gitlabci_local-13.1.0/src/cli/main.py @@ -465,8 +465,7 @@ def main() -> None: # Check for current updates ++++++ gitlabci_local-13.0.2.tar.gz -> gitlabci_local-13.1.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/.gitlab-ci.yml new/gitlabci_local-13.1.0/.gitlab-ci.yml --- old/gitlabci_local-13.0.2/.gitlab-ci.yml 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/.gitlab-ci.yml 2026-08-22 17:30:13.267613400 +0200 @@ -143,7 +143,7 @@ extends: - .registry:container variables: - BASEIMAGE_NAME: python:3.13-alpine + BASEIMAGE_NAME: python:3.14-alpine CONTAINER_FOLDER: build CONTAINER_IMAGE_TAG: build rules: @@ -158,7 +158,7 @@ extends: - .registry:container variables: - BASEIMAGE_NAME: python:3.13-alpine + BASEIMAGE_NAME: python:3.14-alpine CONTAINER_FOLDER: codestyle CONTAINER_IMAGE_TAG: codestyle rules: @@ -174,7 +174,7 @@ extends: - .registry:container variables: - BASEIMAGE_NAME: python:3.13-alpine + BASEIMAGE_NAME: python:3.14-alpine CONTAINER_FOLDER: deploy CONTAINER_IMAGE_TAG: deploy rules: @@ -188,7 +188,7 @@ extends: - .registry:container variables: - BASEIMAGE_NAME: python:3.13-slim + BASEIMAGE_NAME: python:3.14-slim CONTAINER_FOLDER: pages CONTAINER_IMAGE_TAG: pages rules: @@ -203,7 +203,7 @@ extends: - .registry:container variables: - BASEIMAGE_NAME: python:3.13-alpine + BASEIMAGE_NAME: python:3.14-alpine CONTAINER_FOLDER: preview CONTAINER_IMAGE_TAG: preview rules: @@ -218,7 +218,7 @@ extends: - .registry:container variables: - BASEIMAGE_NAME: python:3.13 + BASEIMAGE_NAME: python:3.14 CONTAINER_FOLDER: test-coverage-docker CONTAINER_IMAGE_TAG: test-coverage-docker rules: @@ -234,7 +234,7 @@ extends: - .registry:container variables: - BASEIMAGE_NAME: python:3.13 + BASEIMAGE_NAME: python:3.14 CONTAINER_FOLDER: test-coverage-podman CONTAINER_IMAGE_TAG: test-coverage-podman rules: @@ -266,7 +266,7 @@ extends: - .registry:container variables: - BASEIMAGE_NAME: python:3.9 + BASEIMAGE_NAME: python:3.10 CONTAINER_FOLDER: test-docker CONTAINER_IMAGE_TAG: test-oldest-docker rules: @@ -280,7 +280,7 @@ extends: - .registry:container variables: - BASEIMAGE_NAME: python:3.13 + BASEIMAGE_NAME: python:3.14 CONTAINER_FOLDER: test-docker CONTAINER_IMAGE_TAG: test-latest-docker rules: @@ -294,7 +294,7 @@ extends: - .registry:container variables: - BASEIMAGE_NAME: python:3.9 + BASEIMAGE_NAME: python:3.10 CONTAINER_FOLDER: test-podman CONTAINER_IMAGE_TAG: test-oldest-podman rules: @@ -308,7 +308,7 @@ extends: - .registry:container variables: - BASEIMAGE_NAME: python:3.13 + BASEIMAGE_NAME: python:3.14 CONTAINER_FOLDER: test-podman CONTAINER_IMAGE_TAG: test-latest-podman rules: @@ -496,7 +496,7 @@ COVERAGE_XML: ${CI_PROJECT_DIR}/coverage-reports/coverage-windows.xml SUITE: 'versions\|windows' -py3.9:docker: +py3.10:docker: extends: - .test:template - .test:docker @@ -508,7 +508,7 @@ optional: true - job: build -py3.13:docker: +py3.14:docker: extends: - .test:template - .test:docker @@ -520,7 +520,7 @@ optional: true - job: build -py3.9:podman: +py3.10:podman: extends: - .test:template - .test:podman @@ -536,7 +536,7 @@ - !reference ['.test:podman', before_script] - !reference ['.test:template', before_script] -py3.13:podman: +py3.14:podman: extends: - .test:template - .test:podman @@ -602,13 +602,13 @@ artifacts: false - job: coverage:windows artifacts: false - - job: py3.9:docker + - job: py3.10:docker artifacts: false - - job: py3.13:docker + - job: py3.14:docker artifacts: false - - job: py3.9:podman + - job: py3.10:podman artifacts: false - - job: py3.13:podman + - job: py3.14:podman artifacts: false deploy:trial: @@ -623,13 +623,13 @@ artifacts: false - job: coverage:windows artifacts: false - - job: py3.9:docker + - job: py3.10:docker artifacts: false - - job: py3.13:docker + - job: py3.14:docker artifacts: false - - job: py3.9:podman + - job: py3.10:podman artifacts: false - - job: py3.13:podman + - job: py3.14:podman artifacts: false .pages:rules: @@ -653,16 +653,16 @@ - job: build artifacts: false optional: true - - job: py3.9:docker + - job: py3.10:docker artifacts: false optional: true - - job: py3.13:docker + - job: py3.14:docker artifacts: false optional: true - - job: py3.9:podman + - job: py3.10:podman artifacts: false optional: true - - job: py3.13:podman + - job: py3.14:podman artifacts: false optional: true - job: quality:coverage diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/CHANGELOG.md new/gitlabci_local-13.1.0/CHANGELOG.md --- old/gitlabci_local-13.0.2/CHANGELOG.md 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/CHANGELOG.md 2026-08-22 17:30:13.268613300 +0200 @@ -1,5 +1,40 @@ # Changelog +<a name="13.1.0"></a> +## [13.1.0](https://gitlab.com/RadianDevCore/tools/gcil/compare/13.0.2...13.1.0) (2026-08-22) + +### โจ Features + +- **yaml:** represent multiline YAML blocks in multiple output lines ([40f8f4c](https://gitlab.com/RadianDevCore/tools/gcil/commit/40f8f4c02094da34d78812cd5d23c3cb458bbf95)) + +### ๐ Bug Fixes + +- **gitlab:** handle 'tags: []' definitions for extended jobs too ([36908b1](https://gitlab.com/RadianDevCore/tools/gcil/commit/36908b11aacb8a1a6821c0fabe935a1486f1ad1a)) +- **๐จ BREAKING CHANGE ๐จ |** **updates, requirements:** migrate to 'update_checker' 1.0.0 API ([19aba1c](https://gitlab.com/RadianDevCore/tools/gcil/commit/19aba1cf57f2230c883b7e840fdbc2a7be4aba1d)) + +### ๐ Documentation + +- **license, mkdocs:** raise copyright year to 2026 ([ac7092e](https://gitlab.com/RadianDevCore/tools/gcil/commit/ac7092ec0807e02b35f0fcb4b04153918b791ecb)) + +### ๐จ Styling + +- **src:** migrate to '|' types unions (python:S6546) ([4d85b34](https://gitlab.com/RadianDevCore/tools/gcil/commit/4d85b345a0f65458341062c50b594beaebeb54ec)) + +### ๐งช Test + +- **permissions:** ensure quick job execution handles interruption ([2a27ac5](https://gitlab.com/RadianDevCore/tools/gcil/commit/2a27ac5d0fce59afc7e431379941b36ad2117a97)) + +### โ๏ธ Cleanups + +- **docker:** avoid coverage of deprecated 'progress' animation ([e7bb656](https://gitlab.com/RadianDevCore/tools/gcil/commit/e7bb65626256fd5e8afc2ecbf0a2ebce1d493c6d)) +- **updates:** enforce 'typings' [arg-type] error on 'date' ([b2f7c6b](https://gitlab.com/RadianDevCore/tools/gcil/commit/b2f7c6b5e7490d13ee58abf899cbca1140b89eb1)) + +### ๐ฆ Build + +- **๐จ BREAKING CHANGE ๐จ |** **gitlab-ci, setup:** raise oldest Python from 3.9 to 3.10 ([da0c7ec](https://gitlab.com/RadianDevCore/tools/gcil/commit/da0c7ecab0d9dd79b8c37d596cb356509be076cb)) +- **๐จ BREAKING CHANGE ๐จ |** **gitlab-ci, setup:** raise latest Python from 3.13 to 3.14 ([667006a](https://gitlab.com/RadianDevCore/tools/gcil/commit/667006a48f5f9dd1fd810f70693d3a41673d128a)) + + <a name="13.0.2"></a> ## [13.0.2](https://gitlab.com/RadianDevCore/tools/gcil/compare/13.0.1...13.0.2) (2025-09-21) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/LICENSE new/gitlabci_local-13.1.0/LICENSE --- old/gitlabci_local-13.0.2/LICENSE 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/LICENSE 2026-08-22 17:30:13.268613300 +0200 @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2020-2025 Adrian DC + Copyright 2020-2026 Adrian DC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/PKG-INFO new/gitlabci_local-13.1.0/PKG-INFO --- old/gitlabci_local-13.0.2/PKG-INFO 2025-09-21 02:28:32.260853800 +0200 +++ new/gitlabci_local-13.1.0/PKG-INFO 2026-08-22 17:30:16.049599400 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: gitlabci-local -Version: 13.0.2 +Version: 13.1.0 Summary: Launch .gitlab-ci.yml jobs locally Home-page: https://gitlab.com/RadianDevCore/tools/gcil Author: Adrian DC @@ -17,11 +17,11 @@ Classifier: License :: OSI Approved :: Apache Software License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 Classifier: Topic :: Software Development Classifier: Topic :: Utilities Requires-Python: >=3,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,!=3.7.* @@ -37,7 +37,7 @@ Requires-Dist: questionary>=2.1.1 Requires-Dist: requests>=2.26.0 Requires-Dist: setuptools>=45.1.0 -Requires-Dist: update_checker>=0.18.0 +Requires-Dist: update_checker>=1.0.0 Dynamic: author Dynamic: author-email Dynamic: classifier @@ -96,7 +96,7 @@ ## Preview - + --- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/README.md new/gitlabci_local-13.1.0/README.md --- old/gitlabci_local-13.0.2/README.md 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/README.md 2026-08-22 17:30:13.268613300 +0200 @@ -42,7 +42,7 @@ ## Preview - + --- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/containers/rehost/images.txt new/gitlabci_local-13.1.0/containers/rehost/images.txt --- old/gitlabci_local-13.0.2/containers/rehost/images.txt 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/containers/rehost/images.txt 2026-08-22 17:30:13.269613300 +0200 @@ -6,11 +6,11 @@ docker:27-dind docker:dind docker:latest -python:3.9-bookworm|python:3.9 -python:3.9-alpine -python:3.13-bookworm|python:3.13 -python:3.13-alpine -python:3.13-slim-bookworm|python:3.13-slim +python:3.10-bookworm|python:3.10 +python:3.10-alpine +python:3.14-bookworm|python:3.14 +python:3.14-alpine +python:3.14-slim-bookworm|python:3.14-slim ruby:3.1 sonarsource/sonar-scanner-cli:latest tobix/pywine:3.10 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/gitlabci_local.egg-info/PKG-INFO new/gitlabci_local-13.1.0/gitlabci_local.egg-info/PKG-INFO --- old/gitlabci_local-13.0.2/gitlabci_local.egg-info/PKG-INFO 2025-09-21 02:28:32.000000000 +0200 +++ new/gitlabci_local-13.1.0/gitlabci_local.egg-info/PKG-INFO 2026-08-22 17:30:15.977599600 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: gitlabci-local -Version: 13.0.2 +Version: 13.1.0 Summary: Launch .gitlab-ci.yml jobs locally Home-page: https://gitlab.com/RadianDevCore/tools/gcil Author: Adrian DC @@ -17,11 +17,11 @@ Classifier: License :: OSI Approved :: Apache Software License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 Classifier: Topic :: Software Development Classifier: Topic :: Utilities Requires-Python: >=3,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,!=3.7.* @@ -37,7 +37,7 @@ Requires-Dist: questionary>=2.1.1 Requires-Dist: requests>=2.26.0 Requires-Dist: setuptools>=45.1.0 -Requires-Dist: update_checker>=0.18.0 +Requires-Dist: update_checker>=1.0.0 Dynamic: author Dynamic: author-email Dynamic: classifier @@ -96,7 +96,7 @@ ## Preview - + --- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/gitlabci_local.egg-info/SOURCES.txt new/gitlabci_local-13.1.0/gitlabci_local.egg-info/SOURCES.txt --- old/gitlabci_local-13.0.2/gitlabci_local.egg-info/SOURCES.txt 2025-09-21 02:28:32.000000000 +0200 +++ new/gitlabci_local-13.1.0/gitlabci_local.egg-info/SOURCES.txt 2026-08-22 17:30:16.001599600 +0200 @@ -53,6 +53,8 @@ gitlabci_local.egg-info/dependency_links.txt gitlabci_local.egg-info/entry_points.txt gitlabci_local.egg-info/requires.txt +gitlabci_local.egg-info/scm_file_list.json +gitlabci_local.egg-info/scm_version.json gitlabci_local.egg-info/top_level.txt requirements/build.txt requirements/coverage.txt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/gitlabci_local.egg-info/requires.txt new/gitlabci_local-13.1.0/gitlabci_local.egg-info/requires.txt --- old/gitlabci_local-13.0.2/gitlabci_local.egg-info/requires.txt 2025-09-21 02:28:32.000000000 +0200 +++ new/gitlabci_local-13.1.0/gitlabci_local.egg-info/requires.txt 2026-08-22 17:30:15.978599800 +0200 @@ -8,4 +8,4 @@ questionary>=2.1.1 requests>=2.26.0 setuptools>=45.1.0 -update_checker>=0.18.0 +update_checker>=1.0.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/gitlabci_local.egg-info/scm_file_list.json new/gitlabci_local-13.1.0/gitlabci_local.egg-info/scm_file_list.json --- old/gitlabci_local-13.0.2/gitlabci_local.egg-info/scm_file_list.json 1970-01-01 01:00:00.000000000 +0100 +++ new/gitlabci_local-13.1.0/gitlabci_local.egg-info/scm_file_list.json 2026-08-22 17:30:15.975599800 +0200 @@ -0,0 +1,399 @@ +{ + "files": [ + ".coveragerc", + ".cz.yaml", + ".gitattributes", + ".gitignore", + ".gitlab-ci.yml", + ".gitmodules", + ".markdownlint.json", + ".pre-commit-config.yaml", + ".pre-commit-hooks.yaml", + ".style.yapf", + ".vscode/extensions.json", + ".vscode/settings.json", + "CHANGELOG.md", + "LICENSE", + "README.md", + "TEST.md", + "config/cliff.toml", + "containers/build/Dockerfile", + "containers/codestyle/Dockerfile", + "containers/deploy/Dockerfile", + "containers/pages/Dockerfile", + "containers/preview/Dockerfile", + "containers/rehost/images.txt", + "containers/test-coverage-docker/Dockerfile", + "containers/test-coverage-podman/Dockerfile", + "containers/test-coverage-windows/Dockerfile", + "containers/test-docker/Dockerfile", + "containers/test-podman/Dockerfile", + "docs/.pages.in", + "docs/assets/images/favicon.png", + "docs/assets/scripts/mkdocs-exporter.js", + "docs/assets/stylesheets/custom.css", + "docs/assets/stylesheets/pdf.scss", + "docs/deprecations.md", + "docs/gitlab-ci.md", + "docs/hooks.md", + "docs/prepare.sh", + "docs/preview.py", + "docs/preview.svg", + "docs/robots.txt", + "docs/template.svg", + "docs/templates/covers/back.html.j2", + "docs/templates/covers/front.html.j2", + "examples/.gitlab-ci.yml", + "examples/data.raw", + "mkdocs.yml", + "mypy.ini", + "requirements/build.txt", + "requirements/coverage.txt", + "requirements/deploy.txt", + "requirements/docs.txt", + "requirements/pages.txt", + "requirements/quality.txt", + "requirements/runtime.txt", + "requirements/tests.txt", + "run.sh", + "setup.py", + "sonar-project.properties", + "src/__init__.py", + "src/__main__.py", + "src/cli/__init__.py", + "src/cli/entrypoint.py", + "src/cli/main.py", + "src/engines/__init__.py", + "src/engines/base.py", + "src/engines/docker.py", + "src/engines/engine.py", + "src/engines/podman.py", + "src/features/__init__.py", + "src/features/configurations.py", + "src/features/images.py", + "src/features/menus.py", + "src/features/pipelines.py", + "src/jobs/__init__.py", + "src/jobs/outputs.py", + "src/jobs/runner.py", + "src/jobs/scripts.py", + "src/models/__init__.py", + "src/models/flags.py", + "src/models/images.py", + "src/models/jobs.py", + "src/models/options.py", + "src/models/pipelines.py", + "src/models/scripts.py", + "src/models/services.py", + "src/models/settings.py", + "src/models/stages.py", + "src/models/tags.py", + "src/models/variables.py", + "src/package/__init__.py", + "src/package/bundle.py", + "src/package/settings.py", + "src/package/updates.py", + "src/package/version.py", + "src/parsers/__init__.py", + "src/parsers/gitlab.py", + "src/parsers/parsers.py", + "src/prints/__init__.py", + "src/prints/boxes.py", + "src/prints/colors.py", + "src/prints/histories.py", + "src/prints/themes.py", + "src/system/__init__.py", + "src/system/git.py", + "src/system/notify.py", + "src/system/platform.py", + "src/system/xauth.py", + "src/types/__init__.py", + "src/types/environment.py", + "src/types/files.py", + "src/types/lists.py", + "src/types/paths.py", + "src/types/strings.py", + "src/types/volumes.py", + "src/types/yaml.py", + "tests/arguments/test.sh", + "tests/ci/.gitlab-ci.env.yml", + "tests/ci/.gitlab-ci.git.yml", + "tests/ci/.gitlab-ci.raw.yml", + "tests/ci/.gitlab-ci.variables.yml", + "tests/ci/test.sh", + "tests/colors/.gitlab-ci.yml", + "tests/colors/test.sh", + "tests/console/.gitlab-ci.yml", + "tests/console/test.sh", + "tests/default/.gitlab-ci.conflict.after.yml", + "tests/default/.gitlab-ci.conflict.before.yml", + "tests/default/.gitlab-ci.conflict.image.yml", + "tests/default/.gitlab-ci.conflict.services.yml", + "tests/default/.gitlab-ci.yml", + "tests/default/default.yml", + "tests/default/test.sh", + "tests/disabled/.gitlab-ci.yml", + "tests/disabled/test.sh", + "tests/display/.gitlab-ci.local.yml", + "tests/display/.gitlab-ci.yml", + "tests/display/test.sh", + "tests/engines/.gitlab-ci.hybrid.yml", + "tests/engines/.gitlab-ci.yml", + "tests/engines/test.sh", + "tests/entrypoints/.gitlab-ci.local.entrypoint.yml", + "tests/entrypoints/.gitlab-ci.local.yml", + "tests/entrypoints/.gitlab-ci.name.yml", + "tests/entrypoints/.gitlab-ci.simple.yml", + "tests/entrypoints/.gitlab-ci.yml", + "tests/entrypoints/test.sh", + "tests/environment/.env", + "tests/environment/.gitlab-ci.yml", + "tests/environment/environment.env", + "tests/environment/environment.txt", + "tests/environment/test.sh", + "tests/extends/.gitlab-ci.incomplete.yml", + "tests/extends/.gitlab-ci.missing.yml", + "tests/extends/.gitlab-ci.partial.yml", + "tests/extends/.gitlab-ci.stages.yml", + "tests/extends/.gitlab-ci.yml", + "tests/extends/job_1.yml", + "tests/extends/job_2.yml", + "tests/extends/job_3.yml", + "tests/extends/template_1.yml", + "tests/extends/template_2.yml", + "tests/extends/template_3.yml", + "tests/extends/template_4.yml", + "tests/extends/templates.yml", + "tests/extends/test.sh", + "tests/failures/.gitlab-ci.yml", + "tests/failures/test.sh", + "tests/home/.gitlab-ci.cli.yml", + "tests/home/.gitlab-ci.env.yml", + "tests/home/.gitlab-ci.relative.yml", + "tests/home/.gitlab-ci.tilde.yml", + "tests/home/test.sh", + "tests/images/.gitlab-ci.default.yml", + "tests/images/.gitlab-ci.extends.yml", + "tests/images/.gitlab-ci.yml", + "tests/images/test.sh", + "tests/includes/.gitlab-ci.default.yml", + "tests/includes/.gitlab-ci.dict.yml", + "tests/includes/.gitlab-ci.list.dict.yml", + "tests/includes/.gitlab-ci.list.str.yml", + "tests/includes/.gitlab-ci.local.empty.yml", + "tests/includes/.gitlab-ci.local.yml", + "tests/includes/.gitlab-ci.nested.loop.yml", + "tests/includes/.gitlab-ci.nested.missing.yml", + "tests/includes/.gitlab-ci.nested.valid.yml", + "tests/includes/.gitlab-ci.project.empty.yml", + "tests/includes/.gitlab-ci.project.missing.yml", + "tests/includes/.gitlab-ci.project.yml", + "tests/includes/.gitlab-ci.relative.faulty.yml", + "tests/includes/.gitlab-ci.relative.folder.yml", + "tests/includes/.gitlab-ci.relative.root.yml", + "tests/includes/.gitlab-ci.str.yml", + "tests/includes/.gitlab-ci.variables.yml", + "tests/includes/.gitlab-ci.wildcards.local.missing.yml", + "tests/includes/.gitlab-ci.wildcards.project.missing.yml", + "tests/includes/.gitlab-ci.wildcards.recursive.faulty.yml", + "tests/includes/.gitlab-ci.wildcards.recursive.missing.yml", + "tests/includes/.gitlab-ci.wildcards.valid.yml", + "tests/includes/check_local.yml", + "tests/includes/common/templates/components/template.yml", + "tests/includes/common/templates/components/variables.yml", + "tests/includes/default_2.yml", + "tests/includes/directory/job_5.yml", + "tests/includes/directory/nested_5.yml", + "tests/includes/directory/relative.faulty.yml", + "tests/includes/directory/relative.folder.yml", + "tests/includes/directory/relative.root.yml", + "tests/includes/directory/subdirectory/job_6.yml", + "tests/includes/directory/subdirectory/nested_6.yml", + "tests/includes/directory/subdirectory/subsubdirectory/.hidden_7.yml", + "tests/includes/directory/subdirectory/subsubdirectory/job_7.yml", + "tests/includes/directory/subdirectory/subsubdirectory/job_8.yml", + "tests/includes/directory/subdirectory/subsubdirectory/nested_7.yml", + "tests/includes/file_empty.yml", + "tests/includes/global_variables.yml", + "tests/includes/image.yml", + "tests/includes/job_1.yml", + "tests/includes/job_2.yml", + "tests/includes/job_3.yml", + "tests/includes/job_4.yml", + "tests/includes/nested_1.yml", + "tests/includes/nested_2.yml", + "tests/includes/nested_3.yml", + "tests/includes/nested_loop.yml", + "tests/includes/nested_missing.yml", + "tests/includes/scripts.yml", + "tests/includes/src/.gitlab-ci.yml", + "tests/includes/test.sh", + "tests/inputs/.gitlab-ci.component.duplicates.yml", + "tests/inputs/.gitlab-ci.component.empty.yml", + "tests/inputs/.gitlab-ci.component.missing.yml", + "tests/inputs/.gitlab-ci.component.notfound.yml", + "tests/inputs/.gitlab-ci.component.yml", + "tests/inputs/.gitlab-ci.d/test/templates/component.yml", + "tests/inputs/.gitlab-ci.d/test/templates/documents.0.yml", + "tests/inputs/.gitlab-ci.d/test/templates/documents.3.yml", + "tests/inputs/.gitlab-ci.d/test/templates/mandatory.yml", + "tests/inputs/.gitlab-ci.d/test/templates/nospec.yml", + "tests/inputs/.gitlab-ci.d/test/templates/types.include.options.yml", + "tests/inputs/.gitlab-ci.d/test/templates/types.include.regex.yml", + "tests/inputs/.gitlab-ci.include.0.yml", + "tests/inputs/.gitlab-ci.include.3.yml", + "tests/inputs/.gitlab-ci.local.yml", + "tests/inputs/.gitlab-ci.mandatory.yml", + "tests/inputs/.gitlab-ci.nospec.yml", + "tests/inputs/.gitlab-ci.project.yml", + "tests/inputs/.gitlab-ci.types.array.unsupported.yml", + "tests/inputs/.gitlab-ci.types.boolean.0.yml", + "tests/inputs/.gitlab-ci.types.boolean.1.yml", + "tests/inputs/.gitlab-ci.types.boolean.broken.yml", + "tests/inputs/.gitlab-ci.types.boolean.false.yml", + "tests/inputs/.gitlab-ci.types.boolean.true.yml", + "tests/inputs/.gitlab-ci.types.include.options.yml", + "tests/inputs/.gitlab-ci.types.include.regex.yml", + "tests/inputs/.gitlab-ci.types.number.boolean.yml", + "tests/inputs/.gitlab-ci.types.number.broken.yml", + "tests/inputs/.gitlab-ci.types.number.empty.yml", + "tests/inputs/.gitlab-ci.types.number.floating.yml", + "tests/inputs/.gitlab-ci.types.number.integer.yml", + "tests/inputs/.gitlab-ci.types.number.regex.yml", + "tests/inputs/.gitlab-ci.types.options.boolean.yml", + "tests/inputs/.gitlab-ci.types.options.empty.yml", + "tests/inputs/.gitlab-ci.types.options.floating.yml", + "tests/inputs/.gitlab-ci.types.options.integer.yml", + "tests/inputs/.gitlab-ci.types.options.regex.yml", + "tests/inputs/.gitlab-ci.types.options.strings.yml", + "tests/inputs/.gitlab-ci.types.options.unknown.yml", + "tests/inputs/.gitlab-ci.types.strings.empty.yml", + "tests/inputs/.gitlab-ci.types.strings.regex.yml", + "tests/inputs/.gitlab-ci.types.unknown.broken.yml", + "tests/inputs/.gitlab-ci.types.yml", + "tests/inputs/test.sh", + "tests/interruptions/.gitlab-ci.yml", + "tests/interruptions/test.sh", + "tests/local/.gitlab-ci.paths.yml", + "tests/local/.gitlab-ci.unknown.yml", + "tests/local/.gitlab-ci.yml", + "tests/local/folder/environment.env", + "tests/local/test.sh", + "tests/macos/test.sh", + "tests/menus/.gitlab-ci.select.yml", + "tests/menus/.gitlab-ci.yml", + "tests/menus/test.sh", + "tests/multilines/.gitlab-ci.nested.yml", + "tests/multilines/.gitlab-ci.str.yml", + "tests/multilines/.gitlab-ci.yml", + "tests/multilines/test.sh", + "tests/network/.gitlab-ci.env.yml", + "tests/network/.gitlab-ci.yml", + "tests/network/test.sh", + "tests/notify/.gitlab-ci.image.yml", + "tests/notify/.gitlab-ci.local.yml", + "tests/notify/.gitlab-ci.yml", + "tests/notify/test.sh", + "tests/parallel/.gitlab-ci.yml", + "tests/parallel/test.sh", + "tests/parsers/.gitlab-ci.corrupt.yml", + "tests/parsers/.gitlab-ci.script.yml", + "tests/parsers/test.sh", + "tests/permissions/.gitlab-ci.yml", + "tests/permissions/test.sh", + "tests/pipes/.gitlab-ci.yml", + "tests/pipes/test.sh", + "tests/privileged/.gitlab-ci.variables.yml", + "tests/privileged/.gitlab-ci.yml", + "tests/privileged/test.sh", + "tests/project/.gitlab-ci.overrides.yml", + "tests/project/.gitlab-ci.yml", + "tests/project/first/data.raw", + "tests/project/second/data.raw", + "tests/project/test.sh", + "tests/references/.gitlab-ci.yml", + "tests/references/setup.yml", + "tests/references/test.sh", + "tests/regex/.gitlab-ci.yml", + "tests/regex/test.sh", + "tests/retry/.gitignore", + "tests/retry/.gitlab-ci.yml", + "tests/retry/test.sh", + "tests/safeties/.gitignore", + "tests/safeties/.gitlab-ci.yml", + "tests/safeties/test.sh", + "tests/scripts/.gitlab-ci.incomplete.yml", + "tests/scripts/.gitlab-ci.nested.yml", + "tests/scripts/.gitlab-ci.shebang.yml", + "tests/scripts/.gitlab-ci.yml", + "tests/scripts/test.sh", + "tests/settings/test.sh", + "tests/simple/.gitlab-ci.yml", + "tests/simple/data.raw", + "tests/simple/test.sh", + "tests/sockets/.gitlab-ci.custom.yml", + "tests/sockets/.gitlab-ci.global.yml", + "tests/sockets/.gitlab-ci.incomplete.yml", + "tests/sockets/.gitlab-ci.specific.yml", + "tests/sockets/test.sh", + "tests/ssh/.gitlab-ci.local.bool.yml", + "tests/ssh/.gitlab-ci.local.root.yml", + "tests/ssh/.gitlab-ci.local.user.yml", + "tests/ssh/.gitlab-ci.user.yml", + "tests/ssh/.gitlab-ci.yml", + "tests/ssh/data.raw", + "tests/ssh/test.sh", + "tests/stages/.gitlab-ci.defaults.yml", + "tests/stages/.gitlab-ci.disabled.yml", + "tests/stages/.gitlab-ci.pre.post.explicit.yml", + "tests/stages/.gitlab-ci.pre.post.implicit.yml", + "tests/stages/.gitlab-ci.test.yml", + "tests/stages/.gitlab-ci.unknown.yml", + "tests/stages/.gitlab-ci.yml", + "tests/stages/test.sh", + "tests/syntax/.gitlab-ci.documents.3.yml", + "tests/syntax/.gitlab-ci.empty.yml", + "tests/syntax/test.sh", + "tests/tags/.gitlab-ci.yml", + "tests/tags/test.sh", + "tests/templates/.gitlab-ci.partial.yml", + "tests/templates/.gitlab-ci.stages.yml", + "tests/templates/.gitlab-ci.yml", + "tests/templates/test.sh", + "tests/time/.gitlab-ci.yml", + "tests/time/test.sh", + "tests/triggers/.gitlab-ci.yml", + "tests/triggers/test.sh", + "tests/unsorted/.gitlab-ci.yml", + "tests/unsorted/test.sh", + "tests/variables/.gitlab-ci.image.yml", + "tests/variables/.gitlab-ci.images.yml", + "tests/variables/.gitlab-ci.nested.yml", + "tests/variables/.gitlab-ci.tags.yml", + "tests/variables/.gitlab-ci.yml", + "tests/variables/test.sh", + "tests/versions/.gitlab-ci.local.float.yml", + "tests/versions/.gitlab-ci.local.int.yml", + "tests/versions/.gitlab-ci.local.newer.yml", + "tests/versions/.gitlab-ci.local.older.yml", + "tests/versions/.gitlab-ci.local.str.yml", + "tests/versions/.gitlab-ci.yml", + "tests/versions/test.sh", + "tests/volumes/.gitlab-ci.empty.yml", + "tests/volumes/.gitlab-ci.relative.yml", + "tests/volumes/.gitlab-ci.variables.yml", + "tests/volumes/.gitlab-ci.windows.yml", + "tests/volumes/.gitlab-ci.yml", + "tests/volumes/test.sh", + "tests/when/.gitlab-ci.manual.yml", + "tests/when/test.sh", + "tests/windows/test.sh", + "tests/workdir/.gitlab-ci.builds.yml", + "tests/workdir/.gitlab-ci.clone.yml", + "tests/workdir/.gitlab-ci.flags.yml", + "tests/workdir/.gitlab-ci.host.yml", + "tests/workdir/.gitlab-ci.src.yml", + "tests/workdir/.gitlab-ci.tmp.yml", + "tests/workdir/test.sh" + ] +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/gitlabci_local.egg-info/scm_version.json new/gitlabci_local-13.1.0/gitlabci_local.egg-info/scm_version.json --- old/gitlabci_local-13.0.2/gitlabci_local.egg-info/scm_version.json 1970-01-01 01:00:00.000000000 +0100 +++ new/gitlabci_local-13.1.0/gitlabci_local.egg-info/scm_version.json 2026-08-22 17:30:15.956599700 +0200 @@ -0,0 +1,8 @@ +{ + "tag": "13.1.0", + "distance": 0, + "node": "g790f4e54373bd22968555575533970c54590c165", + "dirty": false, + "branch": "HEAD", + "node_date": "2026-08-22" +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/mkdocs.yml new/gitlabci_local-13.1.0/mkdocs.yml --- old/gitlabci_local-13.0.2/mkdocs.yml 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/mkdocs.yml 2026-08-22 17:30:13.270613400 +0200 @@ -19,7 +19,7 @@ site_url: https://radiandevcore.gitlab.io/tools/gcil # Project copyright -copyright: Copyright © 2024-2025 - <a href="https://gitlab.com/AdrianDC">Adrian DC</a> +copyright: Copyright © 2024-2026 - <a href="https://gitlab.com/AdrianDC">Adrian DC</a> # Excluded sources exclude_docs: | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/requirements/runtime.txt new/gitlabci_local-13.1.0/requirements/runtime.txt --- old/gitlabci_local-13.0.2/requirements/runtime.txt 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/requirements/runtime.txt 2026-08-22 17:30:13.270613400 +0200 @@ -8,4 +8,4 @@ questionary>=2.1.1 requests>=2.26.0 setuptools>=45.1.0 -update_checker>=0.18.0 +update_checker>=1.0.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/setup.py new/gitlabci_local-13.1.0/setup.py --- old/gitlabci_local-13.0.2/setup.py 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/setup.py 2026-08-22 17:30:13.270613400 +0200 @@ -69,11 +69,11 @@ 'License :: OSI Approved :: Apache Software License', 'Operating System :: OS Independent', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', + 'Programming Language :: Python :: 3.14', 'Topic :: Software Development', 'Topic :: Utilities', ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/sonar-project.properties new/gitlabci_local-13.1.0/sonar-project.properties --- old/gitlabci_local-13.0.2/sonar-project.properties 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/sonar-project.properties 2026-08-22 17:30:13.270613400 +0200 @@ -15,7 +15,7 @@ #sonar.sourceEncoding=UTF-8 # Python versions -sonar.python.version=3.9, 3.10, 3.11, 3.12, 3.13 +sonar.python.version=3.10, 3.11, 3.12, 3.13, 3.14 # Patterns used to exclude some files from coverage report. sonar.coverage.exclusions=docs/**/*,setup.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/src/engines/docker.py new/gitlabci_local-13.1.0/src/engines/docker.py --- old/gitlabci_local-13.0.2/src/engines/docker.py 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/src/engines/docker.py 2026-08-22 17:30:13.270613400 +0200 @@ -173,8 +173,8 @@ # Pull image with logs stream for data in self.__client.api.pull(image, stream=True, decode=True): - # Layer progress logs - if 'progress' in data: + # Layer progress logs (deprecated) + if 'progress' in data: # pragma: no cover if Platform.IS_TTY_STDOUT: print(f"\r\x1b[K{data['id']}: {data['status']} {data['progress']}", end='') @@ -191,7 +191,7 @@ print(f"\r\x1b[K{data['id']}: {data['status']}") Platform.flush() - # Layer error logs + # Layer error logs (deprecated) elif 'error' in data: # pragma: no cover print(f"\r\x1b[K{data['error']}") Platform.flush() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/src/features/menus.py new/gitlabci_local-13.1.0/src/features/menus.py --- old/gitlabci_local-13.0.2/src/features/menus.py 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/src/features/menus.py 2026-08-22 17:30:13.271613400 +0200 @@ -2,7 +2,7 @@ # Standard libraries from argparse import Namespace -from typing import Any, Dict, List, Optional, Union +from typing import Any, Dict, List, Optional # Components from ..models.flags import Flags @@ -205,7 +205,7 @@ # Variables default_check: bool = self.__options.all jobs_available: bool = False - jobs_choices: List[Union[questionary_Choice, questionary_Separator]] = [] + jobs_choices: List[questionary_Choice | questionary_Separator] = [] result: bool = True stage: str = '' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/src/jobs/scripts.py new/gitlabci_local-13.1.0/src/jobs/scripts.py --- old/gitlabci_local-13.0.2/src/jobs/scripts.py 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/src/jobs/scripts.py 2026-08-22 17:30:13.271613400 +0200 @@ -6,7 +6,7 @@ from typing import Dict, List # Components -from ..types.files import Files +from ..types.files import Files, TempFile from ..types.paths import Paths # ScriptsFile class @@ -17,7 +17,7 @@ SHEBANG_MARKER_BASH: str = '__GITLAB_CI_LOCAL_SHEBANG_MARKER_BASH__' # Members - __file: Files.TempFile + __file: TempFile # type: ignore[type-arg] __folder: str __ready: bool __target: str diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/src/models/flags.py new/gitlabci_local-13.1.0/src/models/flags.py --- old/gitlabci_local-13.0.2/src/models/flags.py 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/src/models/flags.py 2026-08-22 17:30:13.271613400 +0200 @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # Standard libraries -from typing import Optional, Union +from typing import Optional # Components from .variables import Variables @@ -19,7 +19,7 @@ # String @staticmethod - def string(value: Union[bool, str]) -> str: + def string(value: bool | str) -> str: if isinstance(value, bool): return 'true' if value else 'false' return str(value) # pragma: no cover @@ -46,7 +46,7 @@ # Check (bool) @staticmethod def check_bool( - option: Optional[Union[bool, str]], + option: Optional[bool | str], flag: str, variables: Variables, default: bool, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/src/models/images.py new/gitlabci_local-13.1.0/src/models/images.py --- old/gitlabci_local-13.0.2/src/models/images.py 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/src/models/images.py 2026-08-22 17:30:13.271613400 +0200 @@ -1,10 +1,10 @@ #!/usr/bin/env python3 # Standard libraries -from typing import List, Optional, Union +from typing import List, Optional # Entrypoint type -Entrypoint = Optional[Union[List[str], str]] +Entrypoint = Optional[List[str] | str] # Image type Image = str diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/src/models/settings.py new/gitlabci_local-13.1.0/src/models/settings.py --- old/gitlabci_local-13.0.2/src/models/settings.py 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/src/models/settings.py 2026-08-22 17:30:13.271613400 +0200 @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # Standard libraries -from typing import Dict, Optional, Union +from typing import Dict, Optional # AllowFailure type AllowFailure = bool @@ -10,7 +10,7 @@ Retry = int # Trigger type -Trigger = Optional[Union[Dict[str, str], str]] +Trigger = Optional[Dict[str, str] | str] # When type When = str diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/src/package/settings.py new/gitlabci_local-13.1.0/src/package/settings.py --- old/gitlabci_local-13.0.2/src/package/settings.py 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/src/package/settings.py 2026-08-22 17:30:13.271613400 +0200 @@ -4,7 +4,7 @@ from configparser import ConfigParser from pathlib import Path from sys import stdout -from typing import Optional, Union +from typing import Optional # Components from ..package.bundle import Bundle @@ -15,7 +15,7 @@ class Settings: # Types - Value = Union[int, str] + Value = int | str # Constants SETTINGS_FILE: str = 'settings.ini' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/src/package/updates.py new/gitlabci_local-13.1.0/src/package/updates.py --- old/gitlabci_local-13.0.2/src/package/updates.py 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/src/package/updates.py 2026-08-22 17:30:13.271613400 +0200 @@ -91,7 +91,10 @@ from update_checker import UpdateChecker # Check for updates - check = UpdateChecker(bypass_cache=True).check(self.__name, version) + check = UpdateChecker(bypass_cache=True).check( + package_name=self.__name, + package_version=version, + ) if check: # pragma: no cover # Show updates message @@ -201,12 +204,14 @@ # Updated version message elif same: + assert date is not None box.add( f'{version_prefix} {Colors.BOLD}was released {pretty_date(date)}{Colors.BOLD}!' ) # Older version message elif older: + assert date is not None box.add( f'{version_prefix} {Colors.BOLD}newer than {Colors.RED}{available}' \ f' {Colors.BOLD}from {pretty_date(date)}{Colors.BOLD}!' @@ -214,6 +219,7 @@ # Newer version message else: + assert date is not None box.add( f'{version_prefix} {Colors.BOLD}updated {pretty_date(date)}' \ f' to {Colors.GREEN}{available}{Colors.BOLD}!' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/src/parsers/gitlab.py new/gitlabci_local-13.1.0/src/parsers/gitlab.py --- old/gitlabci_local-13.0.2/src/parsers/gitlab.py 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/src/parsers/gitlab.py 2026-08-22 17:30:13.272613300 +0200 @@ -8,7 +8,7 @@ from pathlib import Path from re import match from time import sleep -from typing import Any, Dict, List, NamedTuple, Optional, Union +from typing import Any, Dict, List, NamedTuple, Optional # Modules libraries from packaging.version import parse as parse_version @@ -129,7 +129,7 @@ # Scripts @staticmethod - def __scripts(items: Union[str, List[str]]) -> List[str]: + def __scripts(items: str | List[str]) -> List[str]: # Variables scripts = [] @@ -221,7 +221,7 @@ # Pipeline image @staticmethod def __pipeline_image( - image_data: Union[Dict[str, Any], str], + image_data: Dict[str, Any] | str, pipeline: Pipeline, ) -> None: @@ -972,7 +972,7 @@ )] # Extract job tags - if 'tags' in job_data and job_data['tags']: + if 'tags' in job_data and isinstance(job_data['tags'], list): job.tags = job_data['tags'][:] assert job.tags is not None for index, tag in enumerate(job.tags): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/src/types/files.py new/gitlabci_local-13.1.0/src/types/files.py --- old/gitlabci_local-13.0.2/src/types/files.py 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/src/types/files.py 2026-08-22 17:30:13.272613300 +0200 @@ -5,24 +5,21 @@ from os import getpid, kill from pathlib import Path from signal import getsignal, SIGINT, signal, SIGTERM -from tempfile import _TemporaryFileWrapper, NamedTemporaryFile +from tempfile import _TemporaryFileWrapper as TempFile, NamedTemporaryFile from types import FrameType -from typing import Any, Callable, List, Optional, Union +from typing import Any, Callable, List, Optional # Files class class Files: # SignalHandler type - SignalHandler = Union[Callable[[int, Optional[FrameType]], Any], int, None] - - # TempFile type - TempFile = Union[_TemporaryFileWrapper] # type: ignore[type-arg] + SignalHandler = Callable[[int, Optional[FrameType]], Any] | int | None # Members registered: bool = False signal_int: SignalHandler signal_term: SignalHandler - temps: List[TempFile] = [] + temps: List[TempFile] = [] # type: ignore[type-arg] # Register @staticmethod @@ -78,7 +75,7 @@ mode: str = 'wt', newline: str = '\n', prefix: str = '.tmp.', - ) -> TempFile: + ) -> TempFile: # type: ignore[type-arg] # Create temporary file, pylint: disable=consider-using-with temp_file = NamedTemporaryFile( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/src/types/paths.py new/gitlabci_local-13.1.0/src/types/paths.py --- old/gitlabci_local-13.0.2/src/types/paths.py 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/src/types/paths.py 2026-08-22 17:30:13.272613300 +0200 @@ -4,7 +4,7 @@ from glob import glob from os.path import expanduser from pathlib import Path, PurePosixPath -from typing import List, Union +from typing import List # Components from ..system.platform import Platform @@ -44,7 +44,7 @@ # Get @staticmethod - def get(data: Union[Path, PurePosixPath, str]) -> str: + def get(data: Path | PurePosixPath | str) -> str: # POSIX path path: PurePosixPath = PurePosixPath(data) @@ -70,7 +70,7 @@ # Resolve @staticmethod - def resolve(data: Union[Path, str]) -> str: + def resolve(data: Path | str) -> str: # Resolve path path: str = str(Path(data).resolve()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/src/types/yaml.py new/gitlabci_local-13.1.0/src/types/yaml.py --- old/gitlabci_local-13.0.2/src/types/yaml.py 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/src/types/yaml.py 2026-08-22 17:30:13.272613300 +0200 @@ -5,10 +5,10 @@ from io import TextIOWrapper from re import fullmatch as regex_fullmatch, sub as regex_sub from sys import maxsize -from typing import Any, Dict, List, Optional, Union +from typing import Any, Dict, List, Optional # Modules libraries -from yaml import dump as yaml_dump, load_all as yaml_load_all +from yaml import dump as yaml_dump, Dumper as yaml_Dumper, load_all as yaml_load_all from yaml import SafeLoader as yaml_SafeLoader, YAMLError as yaml_Error from yaml.nodes import SequenceNode as yaml_SequenceNode @@ -31,11 +31,11 @@ TYPE_STRING: str = 'string' # Members - default: Optional[Union[float, int, str]] = None + default: Optional[float | int | str] = None description: Optional[str] = None options: Optional[List[str]] = None regex: Optional[str] = None - value: Optional[Union[float, int, str]] = None + value: Optional[float | int | str] = None value_type: str = TYPE_STRING # Set description @@ -89,7 +89,7 @@ # Set default def set_default( self, - default: Union[bool, float, int, str], + default: bool | float | int | str, ) -> None: self.default = self.parse_value(default) @@ -105,7 +105,7 @@ # Set value def set_value( self, - value: Union[bool, float, int, str], + value: bool | float | int | str, ) -> None: self.value = self.parse_value(value) @@ -121,8 +121,8 @@ # Parse value, pylint: disable=too-many-branches,too-many-return-statements def parse_value( self, - value: Union[bool, float, int, str], - ) -> Union[bool, float, int, str]: + value: bool | float | int | str, + ) -> bool | float | int | str: # Set boolean value if self.value_type == YAML.Input.TYPE_BOOLEAN: @@ -367,7 +367,7 @@ # Configure spec inputs if configure: from ..features.menus import MenusFeature # pylint: disable=cyclic-import,import-outside-toplevel - configure_inputs: Dict[str, Dict[str, Union[bool, List[str], str]]] = {} + configure_inputs: Dict[str, Dict[str, bool | List[str] | str]] = {} for key, node in file_inputs.items(): configure_inputs[key] = {} configure_inputs[key]['help'] = node.description \ @@ -413,13 +413,29 @@ @staticmethod def dump(data: Data) -> str: + # Dumper, pylint: disable=too-many-ancestors + class Dumper(yaml_Dumper): + pass + + # Representer + Dumper.add_representer( + str, + lambda dumper, data: dumper.represent_scalar( + 'tag:yaml.org,2002:str', + data, + style='|' if '\n' in data else None, + ), + ) + # Dump YAML data - return str(yaml_dump( - data, - indent=2, - sort_keys=False, - width=maxsize, - )) + return str( + yaml_dump( + data, + Dumper=Dumper, + indent=2, + sort_keys=False, + width=maxsize, + )) # Resolve @staticmethod diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/tests/parallel/.gitlab-ci.yml new/gitlabci_local-13.1.0/tests/parallel/.gitlab-ci.yml --- old/gitlabci_local-13.0.2/tests/parallel/.gitlab-ci.yml 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/tests/parallel/.gitlab-ci.yml 2026-08-22 17:30:13.276613200 +0200 @@ -6,7 +6,7 @@ stage: parallel parallel: matrix: - - PYTHON_VERSION: ['3.9', '3.13'] + - PYTHON_VERSION: ['3.10', '3.14'] script: - echo 'Job 1' - echo "${PYTHON_VERSION}" @@ -16,7 +16,7 @@ stage: parallel parallel: matrix: - - PYTHON_VERSION: ['3.9', '3.13'] + - PYTHON_VERSION: ['3.10', '3.14'] VALUE1: - '1' - '2' @@ -24,7 +24,7 @@ VALUE2: - '1' - '2' - - PYTHON_VERSION: ['3.9', '3.13'] + - PYTHON_VERSION: ['3.10', '3.14'] VALUE1: - '3' - '2' @@ -50,13 +50,13 @@ stage: parallel parallel: matrix: - - PYTHON_VERSION: '3.9' + - PYTHON_VERSION: '3.10' script: - echo 'Job 3' - echo "${PYTHON_VERSION}" 'Job 4': - image: registry.gitlab.com/radiandevcore/tools/gcil/python:3.13-alpine + image: registry.gitlab.com/radiandevcore/tools/gcil/python:3.14-alpine stage: parallel parallel: 10 script: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/tests/parallel/test.sh new/gitlabci_local-13.1.0/tests/parallel/test.sh --- old/gitlabci_local-13.0.2/tests/parallel/test.sh 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/tests/parallel/test.sh 2026-08-22 17:30:13.276613200 +0200 @@ -13,9 +13,9 @@ # Run tests gcil 'Job 1' -gcil -e PYTHON_VERSION=3.9 'Job 1' +gcil -e PYTHON_VERSION=3.10 'Job 1' gcil -e PYTHON_VERSION=0.0 'Job 1' && exit 1 || true -PYTHON_VERSION=3.9 gcil 'Job 1' +PYTHON_VERSION=3.10 gcil 'Job 1' PYTHON_VERSION=0.0 gcil 'Job 1' && exit 1 || true gcil -H 'Job 2' gcil -H -e VALUE1= 'Job 2' && exit 1 || true @@ -24,10 +24,10 @@ gcil -H -e VALUE2= 'Job 2' && exit 1 || true gcil -H -e VALUE2=2 'Job 2' gcil -H -e VALUE2=3 'Job 2' && exit 1 || true -gcil -H 'Job 2: [3.9, 1, 1]' -gcil -H -e VALUE2=2 'Job 2: [3.9, 1, 1]' && exit 1 || true -gcil -H 'Job 2: [3.9, 1, 2]' -gcil -H 'Job 2: [3.9, 1, 3]' && exit 1 || true +gcil -H 'Job 2: [3.10, 1, 1]' +gcil -H -e VALUE2=2 'Job 2: [3.10, 1, 1]' && exit 1 || true +gcil -H 'Job 2: [3.10, 1, 2]' +gcil -H 'Job 2: [3.10, 1, 3]' && exit 1 || true gcil 'Job 3' gcil -H 'Job 4' gcil -H 'Job 4 0/10' && exit 1 || true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/tests/permissions/test.sh new/gitlabci_local-13.1.0/tests/permissions/test.sh --- old/gitlabci_local-13.0.2/tests/permissions/test.sh 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/tests/permissions/test.sh 2026-08-22 17:30:13.276613200 +0200 @@ -39,7 +39,7 @@ # Run tests gcil -H -p gcil --rmi -timeout -sINT 1 gcil -p && exit 1 || true +timeout -sINT 1 gcil -C 'sleep 5' -p && exit 1 || true sudo -H -u test -E env PYTHONPATH="${PYTHONPATH}" gcil -c "${temp_dir}/holder/root/" -H -p && exit 1 || true sudo -H -u test -E env PYTHONPATH="${PYTHONPATH}" gcil -c "${temp_dir}/holder/parent/test/" -H -p sudo -H -u test -E env PYTHONPATH="${PYTHONPATH}" gcil -c "${temp_dir}/holder/test/" -H -p diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gitlabci_local-13.0.2/tests/scripts/.gitlab-ci.shebang.yml new/gitlabci_local-13.1.0/tests/scripts/.gitlab-ci.shebang.yml --- old/gitlabci_local-13.0.2/tests/scripts/.gitlab-ci.shebang.yml 2025-09-21 02:28:27.000000000 +0200 +++ new/gitlabci_local-13.1.0/tests/scripts/.gitlab-ci.shebang.yml 2026-08-22 17:30:13.277613400 +0200 @@ -5,7 +5,7 @@ 'Job 1': stage: scripts - image: registry.gitlab.com/radiandevcore/tools/gcil/python:3.13 + image: registry.gitlab.com/radiandevcore/tools/gcil/python:3.14 script: - echo 'Job 1' - type bash @@ -14,7 +14,7 @@ 'Job 2': stage: scripts - image: registry.gitlab.com/radiandevcore/tools/gcil/python:3.13-alpine + image: registry.gitlab.com/radiandevcore/tools/gcil/python:3.14-alpine script: - echo 'Job 2' - type bash && exit 1 || true
