Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-keyring for openSUSE:Factory checked in at 2022-01-11 21:17:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-keyring (Old) and /work/SRC/openSUSE:Factory/.python-keyring.new.1892 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-keyring" Tue Jan 11 21:17:12 2022 rev:42 rq:945432 version:23.5.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-keyring/python-keyring.changes 2021-09-26 21:49:29.426835319 +0200 +++ /work/SRC/openSUSE:Factory/.python-keyring.new.1892/python-keyring.changes 2022-01-11 21:20:34.377013831 +0100 @@ -1,0 +2,16 @@ +Mon Jan 10 22:45:36 UTC 2022 - Dirk M??ller <dmuel...@suse.com> + +- update to 23.5.0: + * Require Python 3.7 or later. + * #551: Fixed docs warnings. + * #549: EnvironCredential now allows for equality + comparison. + * #529: macOS backend is no longer viable if the API module + cannot be loaded. Prevents "symbol not found" errors on + macOS 11 (Big Sur) and later when a "universal2" binary + is not used (available for Python 3.8.7 and later). + * #547: Tests no longer attempt to run macOS backends even + on macOS when the backend is non-viable. + * #542: Change get_credential to return generic Credential. + +------------------------------------------------------------------- Old: ---- keyring-23.2.1.tar.gz New: ---- keyring-23.5.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-keyring.spec ++++++ --- /var/tmp/diff_new_pack.21aTrv/_old 2022-01-11 21:20:34.801014129 +0100 +++ /var/tmp/diff_new_pack.21aTrv/_new 2022-01-11 21:20:34.805014132 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-keyring # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define skip_python2 1 Name: python-keyring -Version: 23.2.1 +Version: 23.5.0 Release: 0 Summary: System keyring service access from Python License: MIT AND Python-2.0 ++++++ keyring-23.2.1.tar.gz -> keyring-23.5.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/.github/workflows/main.yml new/keyring-23.5.0/.github/workflows/main.yml --- old/keyring-23.2.1/.github/workflows/main.yml 2021-09-12 19:16:05.000000000 +0200 +++ new/keyring-23.5.0/.github/workflows/main.yml 2022-01-02 01:29:18.000000000 +0100 @@ -7,10 +7,13 @@ strategy: matrix: python: - - 3.6 + - 3.7 - 3.9 - - 3.10.0-alpha - 3.10.99 - platform: [ubuntu-latest, macos-latest, windows-latest] + - "3.10" + platform: + - ubuntu-latest + - macos-latest + - windows-latest runs-on: ${{ matrix.platform }} steps: - uses: actions/checkout@v2 @@ -34,7 +37,7 @@ - name: Setup Python uses: actions/setup-python@v2 with: - python-version: 3.9 + python-version: "3.10" - name: Install tox run: | python -m pip install tox diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/CHANGES.rst new/keyring-23.5.0/CHANGES.rst --- old/keyring-23.2.1/CHANGES.rst 2021-09-12 19:16:05.000000000 +0200 +++ new/keyring-23.5.0/CHANGES.rst 2022-01-02 01:29:18.000000000 +0100 @@ -1,3 +1,32 @@ +v23.5.0 +------- + +* Require Python 3.7 or later. + +v23.4.1 +------- + +* #551: Fixed docs warnings. + +v23.4.0 +------- + +* #549: EnvironCredential now allows for equality + comparison. + +v23.3.0 +------- + +* #529: macOS backend is no longer viable if the API module + cannot be loaded. Prevents "symbol not found" errors on + macOS 11 (Big Sur) and later when a "universal2" binary + is not used (available for Python 3.8.7 and later). + +* #547: Tests no longer attempt to run macOS backends even + on macOS when the backend is non-viable. + +* #542: Change get_credential to return generic Credential. + v23.2.1 ------- @@ -85,7 +114,7 @@ * #403: Keyring no longer eagerly initializes the backend on import, but instead defers the backend initialization until a keyring is accessed. Any callers reliant on this - early intialization behavior may need to call + early initialization behavior may need to call ``keyring.core.init_backend()`` to explicitly initialize the detected backend. @@ -450,7 +479,7 @@ 10.3.1 ------ -* #266: Use private compatibity model rather than six to +* #266: Use private compatibility model rather than six to avoid the dependency. 10.3 @@ -476,7 +505,7 @@ for identifying each backend to users. 10.0.2 ------ +------ * #247: Restored console script. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/PKG-INFO new/keyring-23.5.0/PKG-INFO --- old/keyring-23.2.1/PKG-INFO 2021-09-12 19:16:25.911502800 +0200 +++ new/keyring-23.5.0/PKG-INFO 2022-01-02 01:29:41.817848400 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: keyring -Version: 23.2.1 +Version: 23.5.0 Summary: Store and access your passwords safely. Home-page: https://github.com/jaraco/keyring Author: Kang Zhang @@ -15,7 +15,7 @@ Classifier: License :: OSI Approved :: MIT License Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3 :: Only -Requires-Python: >=3.6 +Requires-Python: >=3.7 Provides-Extra: testing Provides-Extra: docs License-File: LICENSE @@ -76,6 +76,13 @@ .. _dbus-python: https://gitlab.freedesktop.org/dbus/dbus-python +Compatibility - macOS +===================== + +macOS keychain support macOS 11 (Big Sur) and later requires Python 3.8.7 +or later with the "universal2" binary. See +`#525 <https://github.com/jaraco/keyring/issues/525>`_ for details. + Using Keyring ============= @@ -229,7 +236,7 @@ def get_password(self, servicename, username): return "password from TestKeyring" - def delete_password(self, servicename, username, password): + def delete_password(self, servicename, username): pass # set the keyring for keyring lib diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/README.rst new/keyring-23.5.0/README.rst --- old/keyring-23.2.1/README.rst 2021-09-12 19:16:05.000000000 +0200 +++ new/keyring-23.5.0/README.rst 2022-01-02 01:29:18.000000000 +0100 @@ -54,6 +54,13 @@ .. _dbus-python: https://gitlab.freedesktop.org/dbus/dbus-python +Compatibility - macOS +===================== + +macOS keychain support macOS 11 (Big Sur) and later requires Python 3.8.7 +or later with the "universal2" binary. See +`#525 <https://github.com/jaraco/keyring/issues/525>`_ for details. + Using Keyring ============= @@ -207,7 +214,7 @@ def get_password(self, servicename, username): return "password from TestKeyring" - def delete_password(self, servicename, username, password): + def delete_password(self, servicename, username): pass # set the keyring for keyring lib diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/conftest.py new/keyring-23.5.0/conftest.py --- old/keyring-23.2.1/conftest.py 2021-09-12 19:16:05.000000000 +0200 +++ new/keyring-23.5.0/conftest.py 2022-01-02 01:29:18.000000000 +0100 @@ -1,8 +1,23 @@ -import platform +import ctypes collect_ignore = ["hook-keyring.backend.py"] -if platform.system() != 'Darwin': - collect_ignore.append('keyring/backends/macOS/api.py') + +def macos_api_ignore(): + """ + Starting with macOS 11, the security API becomes + non-viable except on universal2 binaries. + + Ref #525. + """ + + try: + ctypes.CDLL(ctypes.util.find_library('Security')).SecItemAdd + return False + except Exception: + return True + + +collect_ignore.extend(['keyring/backends/macOS/api.py'] * macos_api_ignore()) collect_ignore.append('keyring/devpi_client.py') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/docs/_templates/tidelift-sidebar.html new/keyring-23.5.0/docs/_templates/tidelift-sidebar.html --- old/keyring-23.2.1/docs/_templates/tidelift-sidebar.html 2021-09-12 19:16:05.000000000 +0200 +++ new/keyring-23.5.0/docs/_templates/tidelift-sidebar.html 1970-01-01 01:00:00.000000000 +0100 @@ -1,6 +0,0 @@ -<h3 class="donation">For Enterprise</h3> - -<p> -Professionally-supported {{ project }} is available with the -<a href="https://tidelift.com/subscription/pkg/pypi-{{ project }}?utm_source=pypi-{{ project }}&utm_medium=referral">Tidelift Subscription</a>. -</p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/docs/conf.py new/keyring-23.5.0/docs/conf.py --- old/keyring-23.2.1/docs/conf.py 2021-09-12 19:16:05.000000000 +0200 +++ new/keyring-23.5.0/docs/conf.py 2022-01-02 01:29:18.000000000 +0100 @@ -29,7 +29,11 @@ # Be strict about any broken references: nitpicky = True -# Custom sidebar templates, maps document names to template names. -html_theme = 'alabaster' -templates_path = ['_templates'] -html_sidebars = {'index': ['tidelift-sidebar.html']} +# Include Python intersphinx mapping to prevent failures +# jaraco/skeleton#51 +extensions += ['sphinx.ext.intersphinx'] +intersphinx_mapping = { + 'python': ('https://docs.python.org/3', None), +} + +extensions += ['jaraco.tidelift'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/docs/index.rst new/keyring-23.5.0/docs/index.rst --- old/keyring-23.2.1/docs/index.rst 2021-09-12 19:16:05.000000000 +0200 +++ new/keyring-23.5.0/docs/index.rst 2022-01-02 01:29:18.000000000 +0100 @@ -8,11 +8,27 @@ history +.. tidelift-referral-banner:: .. automodule:: keyring :members: :undoc-members: :show-inheritance: + +.. automodule:: keyring.backend + :members: + :undoc-members: + :show-inheritance: + +.. automodule:: keyring.core + :members: + :undoc-members: + :show-inheritance: + +.. automodule:: keyring.credentials + :members: + :undoc-members: + :show-inheritance: Indices and tables diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/keyring/backend.py new/keyring-23.5.0/keyring/backend.py --- old/keyring-23.2.1/keyring/backend.py 2021-09-12 19:16:05.000000000 +0200 +++ new/keyring-23.5.0/keyring/backend.py 2022-01-02 01:29:18.000000000 +0100 @@ -125,7 +125,7 @@ self, service: str, username: Optional[str], - ) -> Optional[credentials.SimpleCredential]: + ) -> Optional[credentials.Credential]: """Gets the username and password for the service. Returns a Credential instance. @@ -182,13 +182,11 @@ Locate all setuptools entry points by the name 'keyring backends' and initialize them. Any third-party library may register an entry point by adding the - following to their setup.py:: + following to their setup.cfg:: - entry_points = { - 'keyring.backends': [ - 'plugin_name = mylib.mymodule:initialize_func', - ], - }, + [options.entry_points] + keyring.backends = + plugin_name = mylib.mymodule:initialize_func `plugin_name` can be anything, and is only used to display the name of the plugin at initialization time. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/keyring/backends/Windows.py new/keyring-23.5.0/keyring/backends/Windows.py --- old/keyring-23.2.1/keyring/backends/Windows.py 2021-09-12 19:16:05.000000000 +0200 +++ new/keyring-23.5.0/keyring/backends/Windows.py 2022-01-02 01:29:18.000000000 +0100 @@ -1,4 +1,3 @@ -import functools import logging from ..util import properties @@ -111,7 +110,6 @@ Type=win32cred.CRED_TYPE_GENERIC, TargetName=target ) except pywintypes.error as e: - e = OldPywinError.wrap(e) if e.winerror == 1168 and e.funcname == 'CredRead': # not found return None raise @@ -156,7 +154,6 @@ try: win32cred.CredDelete(Type=win32cred.CRED_TYPE_GENERIC, TargetName=target) except pywintypes.error as e: - e = OldPywinError.wrap(e) if e.winerror == 1168 and e.funcname == 'CredDelete': # not found return raise @@ -172,27 +169,3 @@ if not res: return None return SimpleCredential(res['UserName'], res.value) - - -class OldPywinError: - """ - A compatibility wrapper for old PyWin32 errors, such as reported in - https://bitbucket.org/kang/python-keyring-lib/issue/140/ - """ - - def __init__(self, orig): - self.orig = orig - - @property - def funcname(self): - return self.orig[1] - - @property - def winerror(self): - return self.orig[0] - - @classmethod - def wrap(cls, orig_err): - attr_check = functools.partial(hasattr, orig_err) - is_old = not all(map(attr_check, ['funcname', 'winerror'])) - return cls(orig_err) if is_old else orig_err diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/keyring/backends/macOS/__init__.py new/keyring-23.5.0/keyring/backends/macOS/__init__.py --- old/keyring-23.2.1/keyring/backends/macOS/__init__.py 2021-09-12 19:16:05.000000000 +0200 +++ new/keyring-23.5.0/keyring/backends/macOS/__init__.py 2022-01-02 01:29:18.000000000 +0100 @@ -28,6 +28,8 @@ """ if platform.system() != 'Darwin': raise RuntimeError("macOS required") + if 'api' not in globals(): + raise RuntimeError("Security API unavailable") return 5 def set_password(self, service, username, password): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/keyring/credentials.py new/keyring-23.5.0/keyring/credentials.py --- old/keyring-23.2.1/keyring/credentials.py 2021-09-12 19:16:05.000000000 +0200 +++ new/keyring-23.5.0/keyring/credentials.py 2022-01-02 01:29:18.000000000 +0100 @@ -31,14 +31,29 @@ class EnvironCredential(Credential): - """Source credentials from environment variables. + """ + Source credentials from environment variables. + Actual sourcing is deferred until requested. + + Supports comparison by equality. + + >>> e1 = EnvironCredential('a', 'b') + >>> e2 = EnvironCredential('a', 'b') + >>> e3 = EnvironCredential('a', 'c') + >>> e1 == e2 + True + >>> e2 == e3 + False """ def __init__(self, user_env_var, pwd_env_var): self.user_env_var = user_env_var self.pwd_env_var = pwd_env_var + def __eq__(self, other: object) -> bool: + return vars(self) == vars(other) + def _get_env(self, env_var): """Helper to read an environment variable""" value = os.environ.get(env_var) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/keyring/util/platform_.py new/keyring-23.5.0/keyring/util/platform_.py --- old/keyring-23.2.1/keyring/util/platform_.py 2021-09-12 19:16:05.000000000 +0200 +++ new/keyring-23.5.0/keyring/util/platform_.py 2022-01-02 01:29:18.000000000 +0100 @@ -19,7 +19,7 @@ def _data_root_Linux(): """ - Use freedesktop.org Base Dir Specfication to determine storage + Use freedesktop.org Base Dir Specification to determine storage location. """ fallback = pathlib.Path.home() / '.local/share' @@ -53,7 +53,7 @@ def _config_root_Linux(): """ - Use freedesktop.org Base Dir Specfication to determine config + Use freedesktop.org Base Dir Specification to determine config location. """ _check_old_config_root() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/keyring.egg-info/PKG-INFO new/keyring-23.5.0/keyring.egg-info/PKG-INFO --- old/keyring-23.2.1/keyring.egg-info/PKG-INFO 2021-09-12 19:16:25.000000000 +0200 +++ new/keyring-23.5.0/keyring.egg-info/PKG-INFO 2022-01-02 01:29:41.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: keyring -Version: 23.2.1 +Version: 23.5.0 Summary: Store and access your passwords safely. Home-page: https://github.com/jaraco/keyring Author: Kang Zhang @@ -15,7 +15,7 @@ Classifier: License :: OSI Approved :: MIT License Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3 :: Only -Requires-Python: >=3.6 +Requires-Python: >=3.7 Provides-Extra: testing Provides-Extra: docs License-File: LICENSE @@ -76,6 +76,13 @@ .. _dbus-python: https://gitlab.freedesktop.org/dbus/dbus-python +Compatibility - macOS +===================== + +macOS keychain support macOS 11 (Big Sur) and later requires Python 3.8.7 +or later with the "universal2" binary. See +`#525 <https://github.com/jaraco/keyring/issues/525>`_ for details. + Using Keyring ============= @@ -229,7 +236,7 @@ def get_password(self, servicename, username): return "password from TestKeyring" - def delete_password(self, servicename, username, password): + def delete_password(self, servicename, username): pass # set the keyring for keyring lib diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/keyring.egg-info/SOURCES.txt new/keyring-23.5.0/keyring.egg-info/SOURCES.txt --- old/keyring-23.2.1/keyring.egg-info/SOURCES.txt 2021-09-12 19:16:25.000000000 +0200 +++ new/keyring-23.5.0/keyring.egg-info/SOURCES.txt 2022-01-02 01:29:41.000000000 +0100 @@ -25,7 +25,6 @@ docs/history.rst docs/index.rst docs/troubleshooting config.md -docs/_templates/tidelift-sidebar.html keyring/__init__.py keyring/__main__.py keyring/backend.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/keyring.egg-info/requires.txt new/keyring-23.5.0/keyring.egg-info/requires.txt --- old/keyring-23.2.1/keyring.egg-info/requires.txt 2021-09-12 19:16:25.000000000 +0200 +++ new/keyring-23.5.0/keyring.egg-info/requires.txt 2022-01-02 01:29:41.000000000 +0100 @@ -11,9 +11,10 @@ sphinx jaraco.packaging>=8.2 rst.linker>=1.9 +jaraco.tidelift>=1.4 [testing] -pytest>=4.6 +pytest>=6 pytest-checkdocs>=2.4 pytest-flake8 pytest-cov diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/pyproject.toml new/keyring-23.5.0/pyproject.toml --- old/keyring-23.2.1/pyproject.toml 2021-09-12 19:16:05.000000000 +0200 +++ new/keyring-23.5.0/pyproject.toml 2022-01-02 01:29:18.000000000 +0100 @@ -1,5 +1,5 @@ [build-system] -requires = ["setuptools>=56", "wheel", "setuptools_scm[toml]>=3.4.1"] +requires = ["setuptools>=56", "setuptools_scm[toml]>=3.4.1"] build-backend = "setuptools.build_meta" [tool.black] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/pytest.ini new/keyring-23.5.0/pytest.ini --- old/keyring-23.2.1/pytest.ini 2021-09-12 19:16:05.000000000 +0200 +++ new/keyring-23.5.0/pytest.ini 2022-01-02 01:29:18.000000000 +0100 @@ -2,11 +2,8 @@ norecursedirs=dist build .tox .eggs addopts=--doctest-modules doctest_optionflags=ALLOW_UNICODE ELLIPSIS -# workaround for warning pytest-dev/pytest#6178 -junit_family=xunit2 filterwarnings= # Suppress deprecation warning in flake8 ignore:SelectableGroups dict interface is deprecated::flake8 - # Suppress deprecation warning in pypa/packaging#433 - ignore:The distutils package is deprecated::packaging.tags + ignore:OS_X module is deprecated diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/setup.cfg new/keyring-23.5.0/setup.cfg --- old/keyring-23.2.1/setup.cfg 2021-09-12 19:16:25.911502800 +0200 +++ new/keyring-23.5.0/setup.cfg 2022-01-02 01:29:41.817848400 +0100 @@ -18,7 +18,7 @@ [options] packages = find_namespace: include_package_data = true -python_requires = >=3.6 +python_requires = >=3.7 install_requires = pywin32-ctypes!=0.1.0,!=0.1.1; sys_platform=="win32" SecretStorage>=3.2; sys_platform=="linux" @@ -34,7 +34,7 @@ [options.extras_require] testing = - pytest >= 4.6 + pytest >= 6 pytest-checkdocs >= 2.4 pytest-flake8 pytest-black >= 0.3.7; \ @@ -47,6 +47,7 @@ sphinx jaraco.packaging >= 8.2 rst.linker >= 1.9 + jaraco.tidelift >= 1.4 [options.entry_points] console_scripts = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/tests/backends/test_kwallet.py new/keyring-23.5.0/tests/backends/test_kwallet.py --- old/keyring-23.2.1/tests/backends/test_kwallet.py 2021-09-12 19:16:05.000000000 +0200 +++ new/keyring-23.5.0/tests/backends/test_kwallet.py 2022-01-02 01:29:18.000000000 +0100 @@ -40,16 +40,14 @@ keyring = self.keyring # for the non-existent password - self.assertEqual(keyring.get_password(service, username), None) + assert keyring.get_password(service, username) is None # common usage self.set_password(service, username, password, True) # re-init keyring to force migration self.keyring = keyring = self.init_keyring() ret_password = keyring.get_password(service, username) - self.assertEqual( - ret_password, - password, + assert ret_password == password, ( "Incorrect password for username: '%s' " "on service: '%s'. '%s' != '%s'" % (service, username, ret_password, password), @@ -60,16 +58,12 @@ # re-init keyring to force migration self.keyring = keyring = self.init_keyring() ret_password = keyring.get_password(service, username) - self.assertEqual( - ret_password, - "", + assert ret_password == "", ( "Incorrect password for username: '%s' " "on service: '%s'. '%s' != '%s'" % (service, username, ret_password, ""), ) ret_password = keyring.get_password('Python', username + '@' + service) - self.assertEqual( - ret_password, - None, + assert ret_password is None, ( "Not 'None' password returned for username: '%s' " "on service: '%s'. '%s' != '%s'. Passwords from old " "folder should be deleted during migration." diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-23.2.1/tests/backends/test_macOS.py new/keyring-23.5.0/tests/backends/test_macOS.py --- old/keyring-23.2.1/tests/backends/test_macOS.py 2021-09-12 19:16:05.000000000 +0200 +++ new/keyring-23.5.0/tests/backends/test_macOS.py 2022-01-02 01:29:18.000000000 +0100 @@ -1,16 +1,14 @@ -import sys - import pytest +import keyring from keyring.testing.backend import BackendBasicTests from keyring.backends import macOS -def is_osx_keychain_supported(): - return sys.platform in ('mac', 'darwin') - - -@pytest.mark.skipif(not is_osx_keychain_supported(), reason="Needs macOS") -class TestOSXKeychain(BackendBasicTests): +@pytest.mark.skipif( + not keyring.backends.macOS.Keyring.viable, + reason="macOS backend not viable", +) +class Test_macOSKeychain(BackendBasicTests): def init_keyring(self): return macOS.Keyring()