From dac0b3a420f4810579605a792e1267164a267b09 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2026 22:02:24 +0000 Subject: [PATCH 1/7] pip prod(deps): bump rich from 14.3.3 to 15.0.0 Bumps [rich](https://github.com/Textualize/rich) from 14.3.3 to 15.0.0. - [Release notes](https://github.com/Textualize/rich/releases) - [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md) - [Commits](https://github.com/Textualize/rich/compare/v14.3.3...v15.0.0) --- updated-dependencies: - dependency-name: rich dependency-version: 15.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- setup.py | 2 +- tools/requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index ee4b2174b..29e6f03b0 100644 --- a/setup.py +++ b/setup.py @@ -37,7 +37,7 @@ 'prompt_toolkit >= 2', 'pygments >= 2.0.0', 'urllib3 >= 1.24', - 'rich == 14.3.3' + 'rich == 15.0.0' ], keywords=['softlayer', 'cloud', 'slcli', 'ibmcloud'], classifiers=[ diff --git a/tools/requirements.txt b/tools/requirements.txt index 31f9584de..fe714ea5d 100644 --- a/tools/requirements.txt +++ b/tools/requirements.txt @@ -4,6 +4,6 @@ requests >= 2.32.2 prompt_toolkit >= 2 pygments >= 2.0.0 urllib3 >= 1.24 -rich == 14.3.3 +rich == 15.0.0 # only used for soap transport # softlayer-zeep >= 5.0.0 From c3c0e785e4e7ebad7d174f00710327c74cc82341 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Apr 2026 00:29:56 +0000 Subject: [PATCH 2/7] pip prod(deps): update prompt-toolkit requirement from >=2 to >=3.0.52 Updates the requirements on [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) to permit the latest version. - [Release notes](https://github.com/prompt-toolkit/python-prompt-toolkit/releases) - [Changelog](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/main/CHANGELOG) - [Commits](https://github.com/prompt-toolkit/python-prompt-toolkit/compare/2.0.1...3.0.52) --- updated-dependencies: - dependency-name: prompt-toolkit dependency-version: 3.0.52 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- tools/requirements.txt | 2 +- tools/test-requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/requirements.txt b/tools/requirements.txt index 31f9584de..09903becd 100644 --- a/tools/requirements.txt +++ b/tools/requirements.txt @@ -1,7 +1,7 @@ click == 8.1.8 requests >= 2.32.2 -prompt_toolkit >= 2 +prompt_toolkit >= 3.0.52 pygments >= 2.0.0 urllib3 >= 1.24 rich == 14.3.3 diff --git a/tools/test-requirements.txt b/tools/test-requirements.txt index 35ce0c513..607e3f009 100644 --- a/tools/test-requirements.txt +++ b/tools/test-requirements.txt @@ -6,7 +6,7 @@ mock sphinx click == 8.1.8 requests >= 2.32.2 -prompt_toolkit >= 2 +prompt_toolkit >= 3.0.52 pygments >= 2.0.0 urllib3 >= 1.24 rich >= 12.3.0 From e03ed13acfd3cef8f35850bda6170a9e781fd798 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Apr 2026 00:30:00 +0000 Subject: [PATCH 3/7] pip prod(deps): update requests requirement from >=2.32.2 to >=2.32.5 Updates the requirements on [requests](https://github.com/psf/requests) to permit the latest version. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.32.2...v2.32.5) --- updated-dependencies: - dependency-name: requests dependency-version: 2.32.5 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- tools/requirements.txt | 2 +- tools/test-requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/requirements.txt b/tools/requirements.txt index 31f9584de..25ae16273 100644 --- a/tools/requirements.txt +++ b/tools/requirements.txt @@ -1,6 +1,6 @@ click == 8.1.8 -requests >= 2.32.2 +requests >= 2.32.5 prompt_toolkit >= 2 pygments >= 2.0.0 urllib3 >= 1.24 diff --git a/tools/test-requirements.txt b/tools/test-requirements.txt index 35ce0c513..797d94238 100644 --- a/tools/test-requirements.txt +++ b/tools/test-requirements.txt @@ -5,7 +5,7 @@ pytest-cov mock sphinx click == 8.1.8 -requests >= 2.32.2 +requests >= 2.32.5 prompt_toolkit >= 2 pygments >= 2.0.0 urllib3 >= 1.24 From 3e5e8d0fde1009d5e36617019c6bae649818325a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Apr 2026 00:30:04 +0000 Subject: [PATCH 4/7] pip prod(deps): update pygments requirement from >=2.0.0 to >=2.20.0 Updates the requirements on [pygments](https://github.com/pygments/pygments) to permit the latest version. - [Release notes](https://github.com/pygments/pygments/releases) - [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES) - [Commits](https://github.com/pygments/pygments/compare/2.0...2.20.0) --- updated-dependencies: - dependency-name: pygments dependency-version: 2.20.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- tools/requirements.txt | 2 +- tools/test-requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/requirements.txt b/tools/requirements.txt index 31f9584de..a3701e0f4 100644 --- a/tools/requirements.txt +++ b/tools/requirements.txt @@ -2,7 +2,7 @@ click == 8.1.8 requests >= 2.32.2 prompt_toolkit >= 2 -pygments >= 2.0.0 +pygments >= 2.20.0 urllib3 >= 1.24 rich == 14.3.3 # only used for soap transport diff --git a/tools/test-requirements.txt b/tools/test-requirements.txt index 35ce0c513..396b225e5 100644 --- a/tools/test-requirements.txt +++ b/tools/test-requirements.txt @@ -7,7 +7,7 @@ sphinx click == 8.1.8 requests >= 2.32.2 prompt_toolkit >= 2 -pygments >= 2.0.0 +pygments >= 2.20.0 urllib3 >= 1.24 rich >= 12.3.0 flake8 From 2eda9992c60c7eaff8e133e52366f13383bed0f8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Apr 2026 00:30:09 +0000 Subject: [PATCH 5/7] pip prod(deps): update urllib3 requirement from >=1.24 to >=2.6.3 Updates the requirements on [urllib3](https://github.com/urllib3/urllib3) to permit the latest version. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.24...2.6.3) --- updated-dependencies: - dependency-name: urllib3 dependency-version: 2.6.3 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- tools/requirements.txt | 2 +- tools/test-requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/requirements.txt b/tools/requirements.txt index 31f9584de..9870bd8e8 100644 --- a/tools/requirements.txt +++ b/tools/requirements.txt @@ -3,7 +3,7 @@ click == 8.1.8 requests >= 2.32.2 prompt_toolkit >= 2 pygments >= 2.0.0 -urllib3 >= 1.24 +urllib3 >= 2.6.3 rich == 14.3.3 # only used for soap transport # softlayer-zeep >= 5.0.0 diff --git a/tools/test-requirements.txt b/tools/test-requirements.txt index 35ce0c513..3a3ee4d5a 100644 --- a/tools/test-requirements.txt +++ b/tools/test-requirements.txt @@ -8,7 +8,7 @@ click == 8.1.8 requests >= 2.32.2 prompt_toolkit >= 2 pygments >= 2.0.0 -urllib3 >= 1.24 +urllib3 >= 2.6.3 rich >= 12.3.0 flake8 autopep8 From 681d581b6f15e490f2c9bfc971f2fae7f0dad8c2 Mon Sep 17 00:00:00 2001 From: Christopher Gallo Date: Tue, 5 May 2026 17:07:04 -0500 Subject: [PATCH 6/7] Dropping support for py3.8 and py3.9. Adding support for py3.13 and py3.14 --- .github/workflows/documentation.yml | 2 +- .github/workflows/release.yml | 4 ++-- .github/workflows/tests.yml | 6 +++--- .gitignore | 6 ++++++ setup.py | 8 +++----- tests/CLI/environment_tests.py | 9 +++++++++ tests/api_tests.py | 2 ++ tox.ini | 2 +- 8 files changed, 27 insertions(+), 12 deletions(-) diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index f09354735..c9eb15e54 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.11] + python-version: [3.14] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 95afeced1..83a01c0ca 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,10 +18,10 @@ jobs: id-token: write steps: - uses: actions/checkout@v4 - - name: Set up Python 3.11 + - name: Set up Python 3.14 uses: actions/setup-python@v4 with: - python-version: 3.11 + python-version: 3.14 - name: Install pypa/build run: >- python -m diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 35ae72725..3dca03b03 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.8,3.9,'3.10',3.11,3.12] + python-version: ['3.10',3.11,3.12,3.13,3.14] steps: - uses: actions/checkout@v4 @@ -31,7 +31,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.12 + python-version: 3.14 - name: Install dependencies run: | python -m pip install --upgrade pip @@ -45,7 +45,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.12 + python-version: 3.14 - name: Install dependencies run: | python -m pip install --upgrade pip diff --git a/.gitignore b/.gitignore index 5dd1975be..72fd99883 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,9 @@ dist/* .cache .idea .pytest_cache/* +.vscode/* + +techbabble.xyz.crt +techbabble.xyz.csr +techbabble.xyz.icc +techbabble.xyz.key diff --git a/setup.py b/setup.py index 29e6f03b0..191010c0b 100644 --- a/setup.py +++ b/setup.py @@ -15,7 +15,7 @@ setup( name='SoftLayer', - version='v6.2.9', + version='v6.3.0', description=DESCRIPTION, long_description=LONG_DESCRIPTION, long_description_content_type='text/x-rst', @@ -30,7 +30,7 @@ 'slcli = SoftLayer.CLI.core:main', ], }, - python_requires='>=3.7', + python_requires='>=3.10', install_requires=[ 'click >= 8.0.4', 'requests >= 2.32.2', @@ -48,12 +48,10 @@ 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent', 'Topic :: Software Development :: Libraries :: Python Modules', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', + 'Programming Language :: Python :: 3.14', 'Programming Language :: Python :: Implementation :: CPython', 'Programming Language :: Python :: Implementation :: PyPy', ], diff --git a/tests/CLI/environment_tests.py b/tests/CLI/environment_tests.py index e0b739b1a..df462b8dc 100644 --- a/tests/CLI/environment_tests.py +++ b/tests/CLI/environment_tests.py @@ -7,11 +7,19 @@ import click from unittest import mock as mock +import pytest from SoftLayer.CLI import environment from SoftLayer.CLI import formatting from SoftLayer import testing +# Check if tkinter is available +try: + import tkinter + TKINTER_AVAILABLE = True +except ImportError: + TKINTER_AVAILABLE = False + @click.command() def fixture_command(): @@ -54,6 +62,7 @@ def test_getpass(self, prompt_mock): prompt_mock.assert_called_with('input', default=None, hide_input=True) self.assertEqual(prompt_mock(), r) + @pytest.mark.skipif(not TKINTER_AVAILABLE, reason="tkinter module not available") @mock.patch('click.prompt') @mock.patch('tkinter.Tk') def test_getpass_issues1436(self, tk, prompt_mock): diff --git a/tests/api_tests.py b/tests/api_tests.py index bf02b8cbd..13a76a2d4 100644 --- a/tests/api_tests.py +++ b/tests/api_tests.py @@ -555,6 +555,8 @@ def test_cf_call_large_dataset(self, _call): _call.side_effect = side_effects result = self.client.cf_call('SERVICE', 'METHOD', limit=limit) + # sort the results to ensure they are in order + result = sorted(result) self.assertEqual(_call.call_count, num_calls) self.assertEqual(len(result), total_items) diff --git a/tox.ini b/tox.ini index fccc3fbc7..bfaace3c6 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py38,py39,py310,py311,py312,pypy3,analysis,coverage,docs +envlist = py310,py311,py312,py313,314,pypy3,analysis,coverage,docs [flake8] From 7348794462bce70b249bfb8531d348313e626cb1 Mon Sep 17 00:00:00 2001 From: Christopher Gallo Date: Tue, 5 May 2026 17:56:45 -0500 Subject: [PATCH 7/7] Fixed tox errors --- SoftLayer/CLI/environment.py | 13 ++++++++----- tests/CLI/environment_tests.py | 4 ++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/SoftLayer/CLI/environment.py b/SoftLayer/CLI/environment.py index d5b8f584b..b1284ebfa 100644 --- a/SoftLayer/CLI/environment.py +++ b/SoftLayer/CLI/environment.py @@ -115,11 +115,14 @@ def getpass(self, prompt, default=None): if password == 'àR': # tkinter is a built in python gui, but it has clipboard reading functions. # pylint: disable=import-outside-toplevel - from tkinter import Tk - tk_manager = Tk() - password = tk_manager.clipboard_get() - # keep the window from showing - tk_manager.withdraw() + try: + from tkinter import Tk + tk_manager = Tk() + password = tk_manager.clipboard_get() + # keep the window from showing + tk_manager.withdraw() + except ImportError: + return password return password # Command loading methods diff --git a/tests/CLI/environment_tests.py b/tests/CLI/environment_tests.py index df462b8dc..49eded8fb 100644 --- a/tests/CLI/environment_tests.py +++ b/tests/CLI/environment_tests.py @@ -6,8 +6,8 @@ """ import click -from unittest import mock as mock import pytest +from unittest import mock as mock from SoftLayer.CLI import environment from SoftLayer.CLI import formatting @@ -15,7 +15,7 @@ # Check if tkinter is available try: - import tkinter + import tkinter # noqa: F401 TKINTER_AVAILABLE = True except ImportError: TKINTER_AVAILABLE = False