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
 
-![preview.svg](https://gitlab.com/RadianDevCore/tools/gcil/raw/13.0.2/docs/preview.svg)
+![preview.svg](https://gitlab.com/RadianDevCore/tools/gcil/raw/13.1.0/docs/preview.svg)
 
 ---
 
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
 
-![preview.svg](https://gitlab.com/RadianDevCore/tools/gcil/raw/13.0.2/docs/preview.svg)
+![preview.svg](https://gitlab.com/RadianDevCore/tools/gcil/raw/13.1.0/docs/preview.svg)
 
 ---
 
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
 
-![preview.svg](https://gitlab.com/RadianDevCore/tools/gcil/raw/13.0.2/docs/preview.svg)
+![preview.svg](https://gitlab.com/RadianDevCore/tools/gcil/raw/13.1.0/docs/preview.svg)
 
 ---
 
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 &copy; 2024-2025 - <a 
href="https://gitlab.com/AdrianDC";>Adrian DC</a>
+copyright: Copyright &copy; 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

Reply via email to