Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-redfish for openSUSE:Factory checked in at 2022-04-13 21:04:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-redfish (Old) and /work/SRC/openSUSE:Factory/.python-redfish.new.1900 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-redfish" Wed Apr 13 21:04:58 2022 rev:9 rq:969608 version:3.1.5 Changes: -------- --- /work/SRC/openSUSE:Factory/python-redfish/python-redfish.changes 2022-01-20 00:12:55.750607969 +0100 +++ /work/SRC/openSUSE:Factory/.python-redfish.new.1900/python-redfish.changes 2022-04-13 21:05:47.388605442 +0200 @@ -1,0 +2,14 @@ +Wed Apr 13 02:13:23 UTC 2022 - Steve Kowalik <steven.kowa...@suse.com> + +- Update to 3.1.5: + * Added methods for specifying proxies directly with a new 'proxies' + parameter + * Removed enforcement of trailing '/' in the 'default_prefix' + * Added support for Unix sockets + * Corrected usage of header storage and retrieval for static response objects + * Corrected 'import' statements to support Python 3.10 +- Drop patch collections-python310.patch, included upstream. +- Add requests-unixsocket to {Build,}Requires. +- Drop unneeded BuildRequires on mock. + +------------------------------------------------------------------- Old: ---- collections-python310.patch redfish-3.1.0.tar.gz New: ---- redfish-3.1.5.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-redfish.spec ++++++ --- /var/tmp/diff_new_pack.agkwkZ/_old 2022-04-13 21:05:47.988606047 +0200 +++ /var/tmp/diff_new_pack.agkwkZ/_new 2022-04-13 21:05:47.996606055 +0200 @@ -19,15 +19,12 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-redfish -Version: 3.1.0 +Version: 3.1.5 Release: 0 Summary: Redfish Python Library License: BSD-3-Clause -Group: Development/Languages/Python URL: https://github.com/DMTF/python-redfish-library Source: https://github.com/DMTF/python-redfish-library/archive/%{version}.tar.gz#/redfish-%{version}.tar.gz -# submitted as gh#DMTF/python-redfish-library#118 -Patch1: collections-python310.patch BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros @@ -35,14 +32,16 @@ Requires: python-jsonpath-rw Requires: python-jsonpointer Requires: python-requests +Requires: python-requests-toolbelt +Requires: python-requests-unixsocket BuildArch: noarch # SECTION test requirements BuildRequires: %{python_module jsonpatch} BuildRequires: %{python_module jsonpath-rw} BuildRequires: %{python_module jsonpointer} -BuildRequires: %{python_module mock} BuildRequires: %{python_module pytest} BuildRequires: %{python_module requests-toolbelt} +BuildRequires: %{python_module requests-unixsocket} BuildRequires: %{python_module requests} # /SECTION %python_subpackages ++++++ redfish-3.1.0.tar.gz -> redfish-3.1.5.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-redfish-library-3.1.0/.travis.yml new/python-redfish-library-3.1.5/.travis.yml --- old/python-redfish-library-3.1.0/.travis.yml 2022-01-10 14:55:53.000000000 +0100 +++ new/python-redfish-library-3.1.5/.travis.yml 2022-04-01 22:08:02.000000000 +0200 @@ -1,14 +1,15 @@ -dist: xenial +dist: focal language: python cache: - pip python: -- '3.4' - '3.5' - '3.6' - '3.7' - '3.8' - '3.9' +# workaround for https://travis-ci.community/t/add-python-3-10/12220/12 +- '3.10.1' before_install: - pip install -U pip - pip install -U setuptools diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-redfish-library-3.1.0/CHANGELOG.md new/python-redfish-library-3.1.5/CHANGELOG.md --- old/python-redfish-library-3.1.0/CHANGELOG.md 2022-01-10 14:55:53.000000000 +0100 +++ new/python-redfish-library-3.1.5/CHANGELOG.md 2022-04-01 22:08:02.000000000 +0200 @@ -1,5 +1,20 @@ # Change Log +## [3.1.5] - 2022-04-01 +- Added methods for specifying proxies directly with a new 'proxies' parameter + +## [3.1.4] - 2022-03-25 +- Removed enforcement of trailing '/' in the 'default_prefix' + +## [3.1.3] - 2022-03-21 +- Added support for Unix sockets + +## [3.1.2] - 2022-03-10 +- Corrected usage of header storage and retrieval for static response objects + +## [3.1.1] - 2022-01-18 +- Corrected 'import' statements to support Python 3.10 + ## [3.1.0] - 2022-01-10 - Updated library to leverage 'requests' in favor of 'http.client' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-redfish-library-3.1.0/README.rst new/python-redfish-library-3.1.5/README.rst --- old/python-redfish-library-3.1.0/README.rst 2022-01-10 14:55:53.000000000 +0100 +++ new/python-redfish-library-3.1.5/README.rst 2022-04-01 22:08:02.000000000 +0200 @@ -1,8 +1,6 @@ python-redfish-library ====================== -.. image:: https://travis-ci.org/DMTF/python-redfish-library.svg?branch=master - :target: https://travis-ci.org/DMTF/python-redfish-library .. image:: https://img.shields.io/pypi/v/redfish.svg?maxAge=2592000 :target: https://pypi.python.org/pypi/redfish .. image:: https://img.shields.io/github/release/DMTF/python-redfish-library.svg?maxAge=2592000 @@ -11,20 +9,15 @@ :target: https://raw.githubusercontent.com/DMTF/python-redfish-library/master/LICENSE .. image:: https://img.shields.io/pypi/pyversions/redfish.svg?maxAge=2592000 :target: https://pypi.python.org/pypi/redfish -.. image:: https://api.codacy.com/project/badge/Grade/1283adc3972d42b4a3ddb9b96660bc07 - :target: https://www.codacy.com/app/rexysmydog/python-redfish-library?utm_source=github.com&utm_medium=referral&utm_content=DMTF/python-redfish-library&utm_campaign=Badge_Grade - .. contents:: :depth: 1 - Description ----------- As of version 3.0.0, Python2 is no longer supported. If Python2 is required, ``redfish<3.0.0`` can be specified in a requirements file. -REST (Representational State Transfer) is a web based software architectural style consisting of a set of constraints that focuses on a system's resources. The Redfish library performs the basic HTTPS operations GET, POST, PUT, PATCH and DELETE on resources using the HATEOAS (Hypermedia as the Engine of Application State) Redfish architecture. API clients allow you to manage and interact with the system through a fixed URL and several URIs. Go to the `wiki <../../wiki>`_ for more details. - +REST (Representational State Transfer) is a web based software architectural style consisting of a set of constraints that focuses on a system's resources. The Redfish library performs GET, POST, PUT, PATCH and DELETE HTTP operations on resources within a Redfish service. Go to the `wiki <../../wiki>`_ for more details. Installing ---------- @@ -33,7 +26,6 @@ pip install redfish - Building from zip file source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -43,65 +35,74 @@ cd dist pip install redfish-x.x.x.zip - Requirements ------------ Ensure the system does not have the OpenStack "python-redfish" module installed on the target system. This module is using a conflicting package name that this library already uses. The module in question can be found here: https://pypi.org/project/python-redfish/ - Usage ---------- -A set of examples is provided under the examples directory of this project. In addition to the directives present in this paragraph, you will find valuable implementation tips and tricks in those examples. - +A set of examples is provided under the examples directory of this project. In addition to the directives present in this paragraph, you will find valuable implementation tips and tricks in those examples. -Import the relevant python module +Import the relevant Python module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -For a Redfish compliant application import the relevant python module. +For a Redfish conformant application import the relevant Python module. -For Redfish compliant application: +For Redfish conformant application: .. code-block:: python import redfish - -Create a Redfish Object +Create a Redfish object ~~~~~~~~~~~~~~~~~~~~~~~ -The Redfish Objects contain 3 parameters: the target secured URL (i.e. "https://IP" or "https://X.Y.Z.T"), an user name and its password. -There are additional 2 optional parameters: timeout (in seconds before a connection initialization times out) and max_retry (how many times a request will retry after a timeout). If unset these default to None and 10 respectively. -To crete a Redfish Object, call the redfish_client method: +The Redfish object contains three required parameters: + +* ``base_url``: The address of the Redfish service (with scheme). Example: ``https://192.168.1.100``. For Unix sockets, use the scheme ``http+unix://``, followed by the percent-encoded filepath to the socket. +* ``username``: The username for authentication. +* ``password``: The password for authentication. + +There are several optional parameters: + +* ``default_prefix``: The path to the Redfish service root. This is only used for initial connection and authentication with the service. The default value is ``/redfish/v1/``. +* ``sessionkey``: The session key to use with subsequent requests. This can be used to bypass the login step. The default value is ``None``. +* ``cafile``: The file path to the CA certificate that issued the Redfish service's certificate. The default value is ``None``. +* ``timeout``: The number of seconds to wait for a response before closing the connection. The default value is ``None``. +* ``max_retry``: The number of retries to perform an operation before giving up. The default value is ``10``. +* ``proxies``: A dictionary containing protocol to proxy URL mappings. The default value is ``None``. See `Using proxies`_. + +To crete a Redfish object, call the ``redfish_client`` method: .. code-block:: python REDFISH_OBJ = redfish.redfish_client(base_url=login_host, username=login_account, \ - password=login_password, default_prefix='/redfish/v1') + password=login_password, default_prefix='/redfish/v1/') +Login to the service +~~~~~~~~~~~~~~~~~~~~ -Login to the server -~~~~~~~~~~~~~~~~~~~ +After creating the REDFISH_OBJ, perform the ``login`` operation to authenticate with the service. The ``auth`` parameter allows you to specify the login method. Possible values are: -The login operation is performed when creating the REDFISH_OBJ. You can continue with a basic authentication, but it would less secure. +* ``session``: Creates a Redfish session with a session token. +* ``basic``: Uses HTTP Basic authentication for all requests. .. code-block:: python REDFISH_OBJ.login(auth="session") - Perform a GET operation ~~~~~~~~~~~~~~~~~~~~~~~ A simple GET operation can be performed to obtain the data present in any valid path. -An example of rawget operation on the path "/redfish/v1/systems/1" is shown below: +An example of GET operation on the path "/redfish/v1/systems/1" is shown below: .. code-block:: python response = REDFISH_OBJ.get("/redfish/v1/systems/1", None) - Perform a POST operation ~~~~~~~~~~~~~~~~~~~~~~~~ @@ -113,13 +114,12 @@ body = {"ResetType": "GracefulShutdown"} response = REDFISH_OBJ.post("/redfish/v1/systems/1/Actions/ComputerSystem.Reset", body=body) - -Working with Tasks +Working with tasks ~~~~~~~~~~~~~~~~~~ -A POST operation may result in a task, describing an operation with a duration greater than the span of a single request. -The action message object that is_processing will return a Task resource that can be accessed reviewed when polled with monitor. -An example of a POST operation with a possible Task is shown below. +A POST and PATCH operations may result in a task, describing an operation with a duration greater than the span of a single request. +The action message object that ``is_processing`` will return a task that can be accessed reviewed when polled with monitor. +An example of a POST operation with a possible task is shown below. .. code-block:: python @@ -134,22 +134,25 @@ time.sleep(retry_time if retry_time else 5) task = response.monitor(context) - Logout the created session ~~~~~~~~~~~~~~~~~~~~~~~~~~ -Make sure you logout every session you create as it will remain alive until it times out. +Ensure you perform a ``logout`` operation when done interacting with the Redfish service. If this step isn't performed, the session will remain active until the Redfish service decides to close it. .. code-block:: python REDFISH_OBJ.logout() - -A logout deletes the current sesssion from the system. The redfish_client object destructor includes a logout statement. +The ``logout`` operation deletes the current sesssion from the service. The ``redfish_client`` object destructor includes a logout statement. Using proxies ~~~~~~~~~~~~~ +There are two methods for using proxies. + +Environment variables +^^^^^^^^^^^^^^^^^^^^^ + You can use a proxy by specifying the ``HTTP_PROXY`` and ``HTTPS_PROXY`` environment variables. Hosts to be excluded from the proxy can be specified using the NO_PROXY environment variable. .. code-block:: shell @@ -157,31 +160,44 @@ export HTTP_PROXY="http://192.168.1.10:8888" export HTTPS_PROXY="http://192.168.1.10:8888" +Directly provided +^^^^^^^^^^^^^^^^^ + +You can use a proxy by building a dictionary containing the proxy information and providing it to the ``proxies`` argument when creating the ``redfish_client`` object. +The key-value pairs of the dictionary contain the protocol and the proxy URL for the protocol. + +.. code-block:: python + + proxies = { + 'http': 'http://192.168.1.10:8888', + 'https': 'http://192.168.1.10:8888', + } + REDFISH_OBJ = redfish.redfish_client(base_url=login_host, username=login_account, \ + password=login_password, proxies=proxies) + Contributing ------------ 1. Fork it! -2. Create your feature branch: `git checkout -b my-new-feature` -3. Commit your changes: `git commit -am 'Add some feature'` -4. Push to the branch: `git push origin my-new-feature` +2. Create your feature branch: ``git checkout -b my-new-feature`` +3. Commit your changes: ``git commit -s -am 'Add some feature'`` +4. Push to the branch: ``git push origin my-new-feature`` 5. Submit a pull request :D - Release Process --------------- -Run the `release.sh` script to publish a new version. +Run the ``release.sh`` script to publish a new version. .. code-block:: shell sh release.sh <NewVersion> - Enter the release notes when prompted; an empty line signifies no more notes to add. Copyright and License --------------------- Copyright Notice: -Copyright 2016-2021 DMTF. All rights reserved. +Copyright 2016-2022 DMTF. All rights reserved. License: BSD 3-Clause License. For full text see link: `https://github.com/DMTF/python-redfish-library/blob/master/LICENSE.md <https://github.com/DMTF/python-redfish-library/blob/master/LICENSE.md>`_ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-redfish-library-3.1.0/requirements.txt new/python-redfish-library-3.1.5/requirements.txt --- old/python-redfish-library-3.1.0/requirements.txt 2022-01-10 14:55:53.000000000 +0100 +++ new/python-redfish-library-3.1.5/requirements.txt 2022-04-01 22:08:02.000000000 +0200 @@ -2,6 +2,6 @@ jsonpatch ; python_version >= '3.5' jsonpath_rw jsonpointer -urllib3 requests requests-toolbelt +requests-unixsocket diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-redfish-library-3.1.0/setup.py new/python-redfish-library-3.1.5/setup.py --- old/python-redfish-library-3.1.0/setup.py 2022-01-10 14:55:53.000000000 +0100 +++ new/python-redfish-library-3.1.5/setup.py 2022-04-01 22:08:02.000000000 +0200 @@ -12,7 +12,7 @@ long_description = f.read() setup(name='redfish', - version='3.1.0', + version='3.1.5', description='Redfish Python Library', long_description=long_description, long_description_content_type='text/x-rst', @@ -33,6 +33,7 @@ 'jsonpointer', "requests", 'requests_toolbelt', + 'requests-unixsocket' ], extras_require={ ':python_version == "3.4"': [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-redfish-library-3.1.0/src/redfish/__init__.py new/python-redfish-library-3.1.5/src/redfish/__init__.py --- old/python-redfish-library-3.1.0/src/redfish/__init__.py 2022-01-10 14:55:53.000000000 +0100 +++ new/python-redfish-library-3.1.5/src/redfish/__init__.py 2022-04-01 22:08:02.000000000 +0200 @@ -6,7 +6,7 @@ """ Redfish restful library """ __all__ = ['rest', 'ris', 'discovery'] -__version__ = "3.1.0" +__version__ = "3.1.5" from redfish.rest.v1 import redfish_client from redfish.rest.v1 import AuthMethod diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-redfish-library-3.1.0/src/redfish/rest/v1.py new/python-redfish-library-3.1.5/src/redfish/rest/v1.py --- old/python-redfish-library-3.1.0/src/redfish/rest/v1.py 2022-01-10 14:55:53.000000000 +0100 +++ new/python-redfish-library-3.1.5/src/redfish/rest/v1.py 2022-04-01 22:08:02.000000000 +0200 @@ -16,6 +16,7 @@ import logging import warnings import requests +import requests_unixsocket from collections import (OrderedDict) @@ -402,10 +403,32 @@ returnlist.append((key, value)) else: for item in self._headers: - returnlist.append(item.items()[0]) + returnlist.append(item) return returnlist + def getheader(self, name): + """Property for accessing an individual header + + :param name: The header name to retrieve. + :type name: str. + :returns: returns a header from HTTP response + """ + returnheader = None + + if isinstance(self._headers, dict): + for key, value in self._headers.items(): + if key.lower() == name.lower(): + returnheader = self._headers[key] + break + else: + for item in self._headers: + if item[0].lower() == name.lower(): + returnheader = item[1] + break + + return returnheader + class AuthMethod(object): """AUTH Method class""" BASIC = 'basic' @@ -417,7 +440,7 @@ def __init__(self, base_url, username=None, password=None, default_prefix='/redfish/v1/', sessionkey=None, capath=None, cafile=None, timeout=None, - max_retry=None): + max_retry=None, proxies=None): """Initialization of the base class RestClientBase :param base_url: The URL of the remote system @@ -438,6 +461,8 @@ :type timeout: int :param max_retry: Number of times a request will retry after a timeout :type max_retry: int + :param proxies: Dictionary containing protocol to proxy URL mappings + :type proxies: dict """ @@ -447,9 +472,13 @@ self.__session_key = sessionkey self.__authorization_key = None self.__session_location = None - self._session = requests.Session() + if self.__base_url.startswith('http+unix://'): + self._session = requests_unixsocket.Session() + else: + self._session = requests.Session() self._timeout = timeout self._max_retry = max_retry if max_retry is not None else 10 + self._proxies = proxies self.login_url = None self.default_prefix = default_prefix self.capath = capath @@ -822,7 +851,7 @@ verify = self.cafile resp = self._session.request(method.upper(), "{}{}".format(self.__base_url, reqpath), data=body, headers=headers, timeout=self._timeout, allow_redirects=allow_redirects, - verify=verify) + verify=verify, proxies=self._proxies) if sys.version_info < (3, 3): endtime = time.clock() @@ -944,7 +973,7 @@ default_prefix='/redfish/v1/', sessionkey=None, capath=None, cafile=None, timeout=None, - max_retry=None): + max_retry=None, proxies=None): """Initialize HttpClient :param base_url: The url of the remote system @@ -965,13 +994,15 @@ :type timeout: int :param max_retry: Number of times a request will retry after a timeout :type max_retry: int + :param proxies: Dictionary containing protocol to proxy URL mappings + :type proxies: dict """ super(HttpClient, self).__init__(base_url, username=username, password=password, default_prefix=default_prefix, sessionkey=sessionkey, capath=capath, cafile=cafile, timeout=timeout, - max_retry=max_retry) + max_retry=max_retry, proxies=proxies) try: self.login_url = self.root.Links.Sessions['@odata.id'] @@ -1000,11 +1031,6 @@ :returns: returns a rest request """ - if self.default_prefix == path and path[-1] != '/': - path = path + '/' - else: - pass - return super(HttpClient, self)._rest_request(path=path, method=method, args=args, body=body, headers=headers, @@ -1029,7 +1055,7 @@ default_prefix='/redfish/v1/', sessionkey=None, capath=None, cafile=None, timeout=None, - max_retry=None): + max_retry=None, proxies=None): """Create and return appropriate REDFISH client instance.""" """ Instantiates appropriate Redfish object based on existing""" """ configuration. Use this to retrieve a pre-configured Redfish object @@ -1052,6 +1078,8 @@ :type timeout: int :param max_retry: Number of times a request will retry after a timeout :type max_retry: int + :param proxies: Dictionary containing protocol to proxy URL mappings + :type proxies: dict :returns: a client object. """ @@ -1061,4 +1089,4 @@ return HttpClient(base_url=base_url, username=username, password=password, default_prefix=default_prefix, sessionkey=sessionkey, capath=capath, cafile=cafile, timeout=timeout, - max_retry=max_retry) + max_retry=max_retry, proxies=proxies) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-redfish-library-3.1.0/src/redfish/ris/rmc.py new/python-redfish-library-3.1.5/src/redfish/ris/rmc.py --- old/python-redfish-library-3.1.0/src/redfish/ris/rmc.py 2022-01-10 14:55:53.000000000 +0100 +++ new/python-redfish-library-3.1.5/src/redfish/ris/rmc.py 2022-04-01 22:08:02.000000000 +0200 @@ -15,7 +15,8 @@ import copy import shutil import logging -from collections import OrderedDict, Mapping +from collections import OrderedDict +from collections.abc import Mapping import jsonpatch import jsonpath_rw @@ -251,7 +252,7 @@ current_client = property(get_current_client, None) def login(self, username=None, password=None, base_url=None, verbose=False, - path=None, skipbuild=False, includelogs=False): + path=None, skipbuild=False, includelogs=False, proxies=None): """Main worker function for login command :param username: user name required to login to server. @@ -268,6 +269,8 @@ :type skipbuild: boolean. :param includelogs: flag to determine id logs should be downloaded. :type includelogs: boolean. + :param proxies: Dictionary containing protocol to proxy URL mappings + :type proxies: dict """ if not self.check_current_rmc_client(url=base_url): @@ -278,11 +281,12 @@ existing_client = self.get_rmc_client(url=base_url) if existing_client: self.update_rmc_client(url=base_url, username=username, - password=password) + password=password) else: try: self.add_rmc_client(RmcClient(username=username, - password=password, url=base_url)) + password=password, url=base_url, + proxies=proxies)) except Exception as excp: raise excp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-redfish-library-3.1.0/src/redfish/ris/rmc_helper.py new/python-redfish-library-3.1.5/src/redfish/ris/rmc_helper.py --- old/python-redfish-library-3.1.0/src/redfish/ris/rmc_helper.py 2022-01-10 14:55:53.000000000 +0100 +++ new/python-redfish-library-3.1.5/src/redfish/ris/rmc_helper.py 2022-04-01 22:08:02.000000000 +0200 @@ -82,7 +82,8 @@ class RmcClient(object): """RMC client base class""" - def __init__(self, url=None, username=None, password=None, sessionkey=None): + def __init__(self, url=None, username=None, password=None, sessionkey=None, + proxies=None): """Initialized RmcClient :param url: redfish host name or IP address. :type url: str. @@ -92,10 +93,13 @@ :type password: str. :param sessionkey: session key credential for current login :type sessionkey: str + :param proxies: Dictionary containing protocol to proxy URL mappings + :type proxies: dict """ - self._rest_client = redfish.rest.v1.redfish_client(base_url=url, - username=username, password=password, sessionkey=sessionkey) + self._rest_client = redfish.rest.v1.redfish_client( + base_url=url, username=username, password=password, + sessionkey=sessionkey, proxies=proxies) self._get_cache = dict() self._monolith = RisMonolith(self) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-redfish-library-3.1.0/tox.ini new/python-redfish-library-3.1.5/tox.ini --- old/python-redfish-library-3.1.0/tox.ini 2022-01-10 14:55:53.000000000 +0100 +++ new/python-redfish-library-3.1.5/tox.ini 2022-04-01 22:08:02.000000000 +0200 @@ -1,5 +1,5 @@ [tox] -envlist = py34,py35,py36,py37,py38,py39 +envlist = py35,py36,py37,py38,py39,py310 [testenv] usedevelop = True @@ -7,25 +7,13 @@ deps = coverage fixtures - nose - nose-timer + pytest -rrequirements.txt commands = - nosetests \ - --with-timer \ - --with-coverage --cover-erase --cover-package=src - -[testenv:py34] -deps = - coverage - fixtures - nose - nose-timer - testtools >= 0.9.22, <= 2.3.0 - -rrequirements.txt + pytest -v [testenv:pep8] -basepython = python3.6 +basepython = python3 deps = flake8 commands = flake8 tests/ src/redfish/discovery