diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index adb9914f8..35ae72725 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] + python-version: [3.8,3.9,'3.10',3.11,3.12] steps: - uses: actions/checkout@v4 @@ -31,7 +31,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.11 + python-version: 3.12 - 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.11 + python-version: 3.12 - name: Install dependencies run: | python -m pip install --upgrade pip diff --git a/SoftLayer/CLI/environment.py b/SoftLayer/CLI/environment.py index 3d33fbc97..c17ee72a8 100644 --- a/SoftLayer/CLI/environment.py +++ b/SoftLayer/CLI/environment.py @@ -12,7 +12,7 @@ from json.decoder import JSONDecodeError import click -import pkg_resources + from rich.console import Console from rich.syntax import Syntax @@ -23,9 +23,6 @@ # pylint: disable=too-many-instance-attributes, invalid-name -# Calling pkg_resources.iter_entry_points shows a false-positive -# pylint: disable=no-member - class Environment(object): """Provides access to the current CLI environment.""" @@ -165,8 +162,6 @@ def load(self): self.load_modules_from_python(routes.ALL_ROUTES) self.aliases.update(routes.ALL_ALIASES) - self._load_modules_from_entry_points('softlayer.cli') - self._modules_loaded = True def load_modules_from_python(self, route_list): @@ -178,20 +173,6 @@ def load_modules_from_python(self, route_list): path, attr = modpath, None self.commands[name] = ModuleLoader(path, attr=attr) - def _load_modules_from_entry_points(self, entry_point_group): - """Load modules from the entry_points (slower). - - Entry points can be used to add new commands to the CLI. - - Usage: - - entry_points={'softlayer.cli': ['new-cmd = mymodule.new_cmd.cli']} - - """ - for obj in pkg_resources.iter_entry_points(group=entry_point_group, - name=None): - self.commands[obj.name] = obj - def ensure_client(self, config_file=None, is_demo=False, proxy=None): """Create a new SLAPI client to the environment. diff --git a/SoftLayer/CLI/event_log/get.py b/SoftLayer/CLI/event_log/get.py index 0a7ca5936..ccec732eb 100644 --- a/SoftLayer/CLI/event_log/get.py +++ b/SoftLayer/CLI/event_log/get.py @@ -76,7 +76,7 @@ def cli(env, date_min, date_max, obj_event, obj_id, obj_type, utc_offset, metada f"'{user}','{metadata_data}'") else: click.secho(f"'{log['eventName']}','{label}','{log['objectName']}'," - f"'{utils.clean_time(log['eventCreateDate'],in_format=log_time)}'," + f"'{utils.clean_time(log['eventCreateDate'], in_format=log_time)}'," f"'{user}'") row_count = row_count + 1 diff --git a/SoftLayer/CLI/file/access/list.py b/SoftLayer/CLI/file/access/list.py index b3415e2e3..9b9e74f9b 100644 --- a/SoftLayer/CLI/file/access/list.py +++ b/SoftLayer/CLI/file/access/list.py @@ -15,7 +15,7 @@ @click.option('--sortby', help='Column to sort by', default='name') @click.option('--columns', callback=column_helper.get_formatter(storage_utils.COLUMNS), - help=f"Columns to display. Options: { ', '.join(column.name for column in storage_utils.COLUMNS)}", + help=f"Columns to display. Options: {', '.join(column.name for column in storage_utils.COLUMNS)}", default=','.join(storage_utils.DEFAULT_COLUMNS)) @environment.pass_env def cli(env, columns, sortby, volume_id): diff --git a/SoftLayer/managers/ordering.py b/SoftLayer/managers/ordering.py index 8e6a34d8d..8a17455bd 100644 --- a/SoftLayer/managers/ordering.py +++ b/SoftLayer/managers/ordering.py @@ -268,7 +268,7 @@ def get_package_by_key(self, package_keyname, mask=None): """ _filter = {'keyName': {'operation': package_keyname}} - packages = self.package_svc.getAllObjects(mask=mask, filter=_filter) + packages = self.client.call('SoftLayer_Product_Package', 'getAllObjects', mask=mask, filter=_filter) if len(packages) == 0: raise exceptions.SoftLayerError(f"Package {package_keyname} does not exist") diff --git a/SoftLayer/testing/xmlrpc.py b/SoftLayer/testing/xmlrpc.py index 208c1cb11..b60c2bf0c 100644 --- a/SoftLayer/testing/xmlrpc.py +++ b/SoftLayer/testing/xmlrpc.py @@ -17,11 +17,11 @@ # pylint: disable=invalid-name, broad-except, arguments-differ -class TestServer(http.server.HTTPServer): +class TestServer(http.server.ThreadingHTTPServer): """Test HTTP server which holds a given transport.""" def __init__(self, transport, *args, **kw): - http.server.HTTPServer.__init__(self, *args, **kw) + http.server.ThreadingHTTPServer.__init__(self, *args, **kw) self.transport = transport diff --git a/setup.py b/setup.py index 6db59889e..28462d005 100644 --- a/setup.py +++ b/setup.py @@ -56,6 +56,7 @@ 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: Implementation :: CPython', 'Programming Language :: Python :: Implementation :: PyPy', ], diff --git a/tox.ini b/tox.ini index 084231ffd..63e8ac7fc 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py37,py38,py39,py310,py311,pypy3,analysis,coverage,docs +envlist = py38,py39,py310,py311,py312,pypy3,analysis,coverage,docs [flake8]