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 2023-01-06 17:04:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-keyring (Old)
 and      /work/SRC/openSUSE:Factory/.python-keyring.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-keyring"

Fri Jan  6 17:04:48 2023 rev:53 rq:1055998 version:23.13.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-keyring/python-keyring.changes    
2022-11-10 14:21:46.922179059 +0100
+++ /work/SRC/openSUSE:Factory/.python-keyring.new.1563/python-keyring.changes  
2023-01-06 17:05:16.440086450 +0100
@@ -1,0 +2,11 @@
+Mon Jan  2 16:58:52 UTC 2023 - Dirk Müller <dmuel...@suse.com>
+
+- update to 23.13.1:
+  * #608: Added support for tab completion on the ``keyring`` command
+  if the ``completion`` extra is installed (``keyring[completion]``).
+  * #612: Prevent installation of ``pywin32-ctypes 0.1.2`` with broken
+  ``use2to3`` directive.
+  * #607: Removed PSF license as it was unused and confusing. Project
+  remains MIT licensed as always.
+
+-------------------------------------------------------------------

Old:
----
  keyring-23.11.0.tar.gz

New:
----
  keyring-23.13.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-keyring.spec ++++++
--- /var/tmp/diff_new_pack.9ga9Ij/_old  2023-01-06 17:05:17.008089640 +0100
+++ /var/tmp/diff_new_pack.9ga9Ij/_new  2023-01-06 17:05:17.016089685 +0100
@@ -1,7 +1,7 @@
 #
 # spec file
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -25,10 +25,10 @@
 %bcond_with test
 %endif
 Name:           python-keyring%{psuffix}
-Version:        23.11.0
+Version:        23.13.1
 Release:        0
 Summary:        System keyring service access from Python
-License:        MIT AND Python-2.0
+License:        MIT
 URL:            https://github.com/jaraco/keyring
 Source:         
https://files.pythonhosted.org/packages/source/k/keyring/keyring-%{version}.tar.gz
 BuildRequires:  %{python_module base >= 3.7}
@@ -39,6 +39,9 @@
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 Requires:       python-SecretStorage >= 3.2
+%if 0%{python_version_nodots} < 310
+Requires:       python-importlib-resources
+%endif
 Requires:       python-jaraco.classes
 Requires:       python-jeepney >= 0.4.2
 %if 0%{python_version_nodots} < 312

++++++ keyring-23.11.0.tar.gz -> keyring-23.13.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/.github/FUNDING.yml 
new/keyring-23.13.1/.github/FUNDING.yml
--- old/keyring-23.11.0/.github/FUNDING.yml     2022-11-05 14:42:49.000000000 
+0100
+++ new/keyring-23.13.1/.github/FUNDING.yml     2022-12-18 21:24:12.000000000 
+0100
@@ -1 +1,2 @@
-tidelift: pypi/PROJECT
+github: jaraco
+tidelift: pypi/keyring
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/.github/workflows/main.yml 
new/keyring-23.13.1/.github/workflows/main.yml
--- old/keyring-23.11.0/.github/workflows/main.yml      2022-11-05 
14:42:49.000000000 +0100
+++ new/keyring-23.13.1/.github/workflows/main.yml      2022-12-18 
21:24:12.000000000 +0100
@@ -2,14 +2,46 @@
 
 on: [push, pull_request]
 
+env:
+  # Environment variables to support color support (jaraco/skeleton#66):
+  # Request colored output from CLI tools supporting it. Different tools
+  # interpret the value differently. For some, just being set is sufficient.
+  # For others, it must be a non-zero integer. For yet others, being set
+  # to a non-empty value is sufficient. For tox, it must be one of
+  # <blank>, 0, 1, false, no, off, on, true, yes. The only enabling value
+  # in common is "1".
+  FORCE_COLOR: 1
+  # MyPy's color enforcement (must be a non-zero number)
+  MYPY_FORCE_COLOR: -42
+  # Recognized by the `py` package, dependency of `pytest` (must be "1")
+  PY_COLORS: 1
+  # Make tox-wrapped tools see color requests
+  TOX_TESTENV_PASSENV: >-
+    FORCE_COLOR
+    MYPY_FORCE_COLOR
+    NO_COLOR
+    PY_COLORS
+    PYTEST_THEME
+    PYTEST_THEME_MODE
+
+  # Suppress noisy pip warnings
+  PIP_DISABLE_PIP_VERSION_CHECK: 'true'
+  PIP_NO_PYTHON_VERSION_WARNING: 'true'
+  PIP_NO_WARN_SCRIPT_LOCATION: 'true'
+
+  # Disable the spinner, noise in GHA; TODO(webknjaz): Fix this upstream
+  # Must be "1".
+  TOX_PARALLEL_NO_SPINNER: 1
+
+
 jobs:
   test:
     strategy:
       matrix:
         python:
         - "3.7"
-        - "3.10"
         - "3.11"
+        - "3.12"
         # Workaround for actions/setup-python#508
         dev:
         - -dev
@@ -18,9 +50,16 @@
         - macos-latest
         - windows-latest
         include:
+        - python: "3.8"
+          platform: ubuntu-latest
+        - python: "3.9"
+          platform: ubuntu-latest
+        - python: "3.10"
+          platform: ubuntu-latest
         - python: pypy3.9
           platform: ubuntu-latest
     runs-on: ${{ matrix.platform }}
+    continue-on-error: ${{ matrix.python == '3.12' }}
     steps:
       - uses: actions/checkout@v3
       - name: Setup Python
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/.readthedocs.yaml 
new/keyring-23.13.1/.readthedocs.yaml
--- old/keyring-23.11.0/.readthedocs.yaml       1970-01-01 01:00:00.000000000 
+0100
+++ new/keyring-23.13.1/.readthedocs.yaml       2022-12-18 21:24:12.000000000 
+0100
@@ -0,0 +1,13 @@
+version: 2
+python:
+  install:
+  - path: .
+    extra_requirements:
+      - docs
+
+# workaround for readthedocs/readthedocs.org#9623
+build:
+  # workaround for readthedocs/readthedocs.org#9635
+  os: ubuntu-22.04
+  tools:
+    python: "3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/.readthedocs.yml 
new/keyring-23.13.1/.readthedocs.yml
--- old/keyring-23.11.0/.readthedocs.yml        2022-11-05 14:42:49.000000000 
+0100
+++ new/keyring-23.13.1/.readthedocs.yml        1970-01-01 01:00:00.000000000 
+0100
@@ -1,13 +0,0 @@
-version: 2
-python:
-  install:
-  - path: .
-    extra_requirements:
-      - docs
-
-# workaround for readthedocs/readthedocs.org#9623
-build:
-  # workaround for readthedocs/readthedocs.org#9635
-  os: ubuntu-22.04
-  tools:
-    python: "3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/CHANGES.rst 
new/keyring-23.13.1/CHANGES.rst
--- old/keyring-23.11.0/CHANGES.rst     2022-11-05 14:42:49.000000000 +0100
+++ new/keyring-23.13.1/CHANGES.rst     2022-12-18 21:24:12.000000000 +0100
@@ -1,3 +1,28 @@
+v23.13.1
+--------
+
+* #573: Fixed failure in macOS backend when attempting to set a
+  password after previously setting a blank password, including a
+  test applying to all backends.
+
+v23.13.0
+--------
+
+* #608: Added support for tab completion on the ``keyring`` command
+  if the ``completion`` extra is installed (``keyring[completion]``).
+
+v23.12.1
+--------
+
+* #612: Prevent installation of ``pywin32-ctypes 0.1.2`` with broken
+  ``use2to3`` directive.
+
+v23.12.0
+--------
+
+* #607: Removed PSF license as it was unused and confusing. Project
+  remains MIT licensed as always.
+
 v23.11.0
 --------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/PKG-INFO new/keyring-23.13.1/PKG-INFO
--- old/keyring-23.11.0/PKG-INFO        2022-11-05 14:43:15.404185000 +0100
+++ new/keyring-23.13.1/PKG-INFO        2022-12-18 21:24:33.392923600 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: keyring
-Version: 23.11.0
+Version: 23.13.1
 Summary: Store and access your passwords safely.
 Home-page: https://github.com/jaraco/keyring
 Author: Kang Zhang
@@ -9,22 +9,19 @@
 Maintainer-email: jar...@jaraco.com
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: Python Software Foundation License
 Classifier: License :: OSI Approved :: MIT License
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3 :: Only
 Requires-Python: >=3.7
 Provides-Extra: testing
 Provides-Extra: docs
+Provides-Extra: completion
 License-File: LICENSE
 
 .. image:: https://img.shields.io/pypi/v/keyring.svg
-   :target: `PyPI link`_
+   :target: https://pypi.org/project/keyring
 
 .. image:: https://img.shields.io/pypi/pyversions/keyring.svg
-   :target: `PyPI link`_
-
-.. _PyPI link: https://pypi.org/project/keyring
 
 .. image:: https://github.com/jaraco/keyring/workflows/tests/badge.svg
    :target: 
https://github.com/jaraco/keyring/actions?query=workflow%3A%22tests%22
@@ -116,6 +113,41 @@
     $ python -m keyring get system username
     password
 
+Tab Completion
+--------------
+
+If installed via a package manager (apt, pacman, nix, homebrew, etc),
+these shell completions may already have been distributed with the package
+(no action required).
+
+Keyring provides tab completion if the ``completion`` extra is installed::
+
+    $ pip install 'keyring[completion]'
+
+Then, generate shell completions, something like::
+
+    $ keyring --print-completion bash | sudo tee 
/usr/share/bash-completion/completions/keyring
+    $ keyring --print-completion zsh | sudo tee 
/usr/share/zsh/site-functions/_keyring
+    $ keyring --print-completion tcsh | sudo tee /etc/profile.d/keyring.csh
+
+**Note**: the path of `/usr/share` is mainly for GNU/Linux. For other OSs,
+consider:
+
+- macOS (Homebrew x86): /usr/local/share
+- macOS (Homebrew ARM): /opt/homebrew/share
+- Android (Termux): /data/data/com.termux/files/usr/share
+- Windows (mingw64 of msys2): /mingw64/share
+- ...
+
+After installing the shell completions, enable them following your shell's
+recommended instructions. e.g.:
+
+- bash: install [bash-completion](https://github.com/scop/bash-completion),
+  and ensure ``. /usr/share/bash-completion/bash_completion`` in ``~/.bashrc``.
+- zsh: ensure ``autoload -Uz compinit && compinit`` appears in ``~/.zshrc``,
+  then ``grep -w keyring ~/.zcompdump`` to verify keyring appears, indicating
+  it was installed correctly.
+
 Configuring
 ===========
 
@@ -421,7 +453,7 @@
 
 This project and the maintainers of thousands of other packages are working 
with Tidelift to deliver one enterprise subscription that covers all of the 
open source you use.
 
-`Learn more 
<https://tidelift.com/subscription/pkg/pypi-PROJECT?utm_source=pypi-PROJECT&utm_medium=referral&utm_campaign=github>`_.
+`Learn more 
<https://tidelift.com/subscription/pkg/pypi-keyring?utm_source=pypi-keyring&utm_medium=referral&utm_campaign=github>`_.
 
 Security Contact
 ================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/README.rst 
new/keyring-23.13.1/README.rst
--- old/keyring-23.11.0/README.rst      2022-11-05 14:42:49.000000000 +0100
+++ new/keyring-23.13.1/README.rst      2022-12-18 21:24:12.000000000 +0100
@@ -1,10 +1,7 @@
 .. image:: https://img.shields.io/pypi/v/keyring.svg
-   :target: `PyPI link`_
+   :target: https://pypi.org/project/keyring
 
 .. image:: https://img.shields.io/pypi/pyversions/keyring.svg
-   :target: `PyPI link`_
-
-.. _PyPI link: https://pypi.org/project/keyring
 
 .. image:: https://github.com/jaraco/keyring/workflows/tests/badge.svg
    :target: 
https://github.com/jaraco/keyring/actions?query=workflow%3A%22tests%22
@@ -96,6 +93,41 @@
     $ python -m keyring get system username
     password
 
+Tab Completion
+--------------
+
+If installed via a package manager (apt, pacman, nix, homebrew, etc),
+these shell completions may already have been distributed with the package
+(no action required).
+
+Keyring provides tab completion if the ``completion`` extra is installed::
+
+    $ pip install 'keyring[completion]'
+
+Then, generate shell completions, something like::
+
+    $ keyring --print-completion bash | sudo tee 
/usr/share/bash-completion/completions/keyring
+    $ keyring --print-completion zsh | sudo tee 
/usr/share/zsh/site-functions/_keyring
+    $ keyring --print-completion tcsh | sudo tee /etc/profile.d/keyring.csh
+
+**Note**: the path of `/usr/share` is mainly for GNU/Linux. For other OSs,
+consider:
+
+- macOS (Homebrew x86): /usr/local/share
+- macOS (Homebrew ARM): /opt/homebrew/share
+- Android (Termux): /data/data/com.termux/files/usr/share
+- Windows (mingw64 of msys2): /mingw64/share
+- ...
+
+After installing the shell completions, enable them following your shell's
+recommended instructions. e.g.:
+
+- bash: install [bash-completion](https://github.com/scop/bash-completion),
+  and ensure ``. /usr/share/bash-completion/bash_completion`` in ``~/.bashrc``.
+- zsh: ensure ``autoload -Uz compinit && compinit`` appears in ``~/.zshrc``,
+  then ``grep -w keyring ~/.zcompdump`` to verify keyring appears, indicating
+  it was installed correctly.
+
 Configuring
 ===========
 
@@ -401,7 +433,7 @@
 
 This project and the maintainers of thousands of other packages are working 
with Tidelift to deliver one enterprise subscription that covers all of the 
open source you use.
 
-`Learn more 
<https://tidelift.com/subscription/pkg/pypi-PROJECT?utm_source=pypi-PROJECT&utm_medium=referral&utm_campaign=github>`_.
+`Learn more 
<https://tidelift.com/subscription/pkg/pypi-keyring?utm_source=pypi-keyring&utm_medium=referral&utm_campaign=github>`_.
 
 Security Contact
 ================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/docs/conf.py 
new/keyring-23.13.1/docs/conf.py
--- old/keyring-23.11.0/docs/conf.py    2022-11-05 14:42:49.000000000 +0100
+++ new/keyring-23.13.1/docs/conf.py    2022-12-18 21:24:12.000000000 +0100
@@ -1,7 +1,3 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-# flake8: noqa
-
 extensions = [
     'sphinx.ext.autodoc',
     'jaraco.packaging.sphinx',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/keyring/backend_complete.zsh 
new/keyring-23.13.1/keyring/backend_complete.zsh
--- old/keyring-23.11.0/keyring/backend_complete.zsh    1970-01-01 
01:00:00.000000000 +0100
+++ new/keyring-23.13.1/keyring/backend_complete.zsh    2022-12-18 
21:24:12.000000000 +0100
@@ -0,0 +1,14 @@
+# Complete keyring backends for `keyring -b` from `keyring --list-backends`
+# % keyring -b <TAB>
+# keyring priority
+# keyring.backends.chainer.ChainerBackend   10
+# keyring.backends.fail.Keyring             0
+# ...                                       ...
+
+backend_complete() {
+       local line
+       while read -r line; do
+               choices+=(${${line/ \(priority: /\\\\:}/)/})
+       done <<< "$($words[1] --list-backends)"
+       _arguments "*:keyring priority:(($choices))"
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/keyring/backends/macOS/api.py 
new/keyring-23.13.1/keyring/backends/macOS/api.py
--- old/keyring-23.11.0/keyring/backends/macOS/api.py   2022-11-05 
14:42:49.000000000 +0100
+++ new/keyring-23.13.1/keyring/backends/macOS/api.py   2022-12-18 
21:24:12.000000000 +0100
@@ -1,3 +1,4 @@
+import contextlib
 import ctypes
 from ctypes import (
     c_void_p,
@@ -147,7 +148,7 @@
 
 
 def set_generic_password(name, service, username, password):
-    if find_generic_password(name, service, username, not_found_ok=True):
+    with contextlib.suppress(NotFound):
         delete_generic_password(name, service, username)
 
     q = create_query(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/keyring/cli.py 
new/keyring-23.13.1/keyring/cli.py
--- old/keyring-23.11.0/keyring/cli.py  2022-11-05 14:42:49.000000000 +0100
+++ new/keyring-23.13.1/keyring/cli.py  2022-12-18 21:24:12.000000000 +0100
@@ -7,6 +7,7 @@
 
 from . import core
 from . import backend
+from . import completion
 from . import set_keyring, get_password, set_password, delete_password
 
 
@@ -37,7 +38,7 @@
         )
         self.parser.add_argument(
             'operation',
-            help="get|set|del",
+            choices=["get", "set", "del"],
             nargs="?",
         )
         self.parser.add_argument(
@@ -48,6 +49,7 @@
             'username',
             nargs="?",
         )
+        completion.install(self.parser)
 
     def run(self, argv):
         args = self.parser.parse_args(argv)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/keyring/completion.py 
new/keyring-23.13.1/keyring/completion.py
--- old/keyring-23.11.0/keyring/completion.py   1970-01-01 01:00:00.000000000 
+0100
+++ new/keyring-23.13.1/keyring/completion.py   2022-12-18 21:24:12.000000000 
+0100
@@ -0,0 +1,51 @@
+import argparse
+import sys
+
+try:
+    import shtab
+except ImportError:
+    pass
+
+if sys.version_info < (3, 9):
+    from importlib_resources import files
+else:
+    from importlib.resources import files
+
+
+class _MissingCompletionAction(argparse.Action):
+    def __call__(self, parser, namespace, values, option_string):
+        print("Install keyring[completion] for completion support.")
+        parser.exit(0)
+
+
+def add_completion_notice(parser):
+    """Add completion argument to parser."""
+    parser.add_argument(
+        "--print-completion",
+        choices=["bash", "zsh", "tcsh"],
+        action=_MissingCompletionAction,
+        help="print shell completion script",
+    )
+    return parser
+
+
+def get_action(parser, option):
+    (match,) = (action for action in parser._actions if option in 
action.option_strings)
+    return match
+
+
+def install_completion(parser):
+    preamble = dict(
+        zsh=files(__package__).joinpath('backend_complete.zsh').read_text(),
+    )
+    shtab.add_argument_to(parser, preamble=preamble)
+    get_action(parser, '--keyring-path').completion = shtab.DIR
+    get_action(parser, '--keyring-backend').completion = 
dict(zsh='backend_complete')
+    return parser
+
+
+def install(parser):
+    try:
+        install_completion(parser)
+    except NameError:
+        add_completion_notice(parser)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/keyring/testing/backend.py 
new/keyring-23.13.1/keyring/testing/backend.py
--- old/keyring-23.11.0/keyring/testing/backend.py      2022-11-05 
14:42:49.000000000 +0100
+++ new/keyring-23.13.1/keyring/testing/backend.py      2022-12-18 
21:24:12.000000000 +0100
@@ -71,6 +71,12 @@
         service = random_string(20)
         self.check_set_get(service, username, password)
 
+    def test_set_after_set_blank(self):
+        service = random_string(20)
+        username = random_string(20)
+        self.keyring.set_password(service, username, "")
+        self.keyring.set_password(service, username, "non-blank")
+
     def test_difficult_chars(self):
         password = random_string(20, self.DIFFICULT_CHARS)
         username = random_string(20, self.DIFFICULT_CHARS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/keyring.egg-info/PKG-INFO 
new/keyring-23.13.1/keyring.egg-info/PKG-INFO
--- old/keyring-23.11.0/keyring.egg-info/PKG-INFO       2022-11-05 
14:43:15.000000000 +0100
+++ new/keyring-23.13.1/keyring.egg-info/PKG-INFO       2022-12-18 
21:24:33.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: keyring
-Version: 23.11.0
+Version: 23.13.1
 Summary: Store and access your passwords safely.
 Home-page: https://github.com/jaraco/keyring
 Author: Kang Zhang
@@ -9,22 +9,19 @@
 Maintainer-email: jar...@jaraco.com
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: Python Software Foundation License
 Classifier: License :: OSI Approved :: MIT License
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3 :: Only
 Requires-Python: >=3.7
 Provides-Extra: testing
 Provides-Extra: docs
+Provides-Extra: completion
 License-File: LICENSE
 
 .. image:: https://img.shields.io/pypi/v/keyring.svg
-   :target: `PyPI link`_
+   :target: https://pypi.org/project/keyring
 
 .. image:: https://img.shields.io/pypi/pyversions/keyring.svg
-   :target: `PyPI link`_
-
-.. _PyPI link: https://pypi.org/project/keyring
 
 .. image:: https://github.com/jaraco/keyring/workflows/tests/badge.svg
    :target: 
https://github.com/jaraco/keyring/actions?query=workflow%3A%22tests%22
@@ -116,6 +113,41 @@
     $ python -m keyring get system username
     password
 
+Tab Completion
+--------------
+
+If installed via a package manager (apt, pacman, nix, homebrew, etc),
+these shell completions may already have been distributed with the package
+(no action required).
+
+Keyring provides tab completion if the ``completion`` extra is installed::
+
+    $ pip install 'keyring[completion]'
+
+Then, generate shell completions, something like::
+
+    $ keyring --print-completion bash | sudo tee 
/usr/share/bash-completion/completions/keyring
+    $ keyring --print-completion zsh | sudo tee 
/usr/share/zsh/site-functions/_keyring
+    $ keyring --print-completion tcsh | sudo tee /etc/profile.d/keyring.csh
+
+**Note**: the path of `/usr/share` is mainly for GNU/Linux. For other OSs,
+consider:
+
+- macOS (Homebrew x86): /usr/local/share
+- macOS (Homebrew ARM): /opt/homebrew/share
+- Android (Termux): /data/data/com.termux/files/usr/share
+- Windows (mingw64 of msys2): /mingw64/share
+- ...
+
+After installing the shell completions, enable them following your shell's
+recommended instructions. e.g.:
+
+- bash: install [bash-completion](https://github.com/scop/bash-completion),
+  and ensure ``. /usr/share/bash-completion/bash_completion`` in ``~/.bashrc``.
+- zsh: ensure ``autoload -Uz compinit && compinit`` appears in ``~/.zshrc``,
+  then ``grep -w keyring ~/.zcompdump`` to verify keyring appears, indicating
+  it was installed correctly.
+
 Configuring
 ===========
 
@@ -421,7 +453,7 @@
 
 This project and the maintainers of thousands of other packages are working 
with Tidelift to deliver one enterprise subscription that covers all of the 
open source you use.
 
-`Learn more 
<https://tidelift.com/subscription/pkg/pypi-PROJECT?utm_source=pypi-PROJECT&utm_medium=referral&utm_campaign=github>`_.
+`Learn more 
<https://tidelift.com/subscription/pkg/pypi-keyring?utm_source=pypi-keyring&utm_medium=referral&utm_campaign=github>`_.
 
 Security Contact
 ================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/keyring.egg-info/SOURCES.txt 
new/keyring-23.13.1/keyring.egg-info/SOURCES.txt
--- old/keyring-23.11.0/keyring.egg-info/SOURCES.txt    2022-11-05 
14:43:15.000000000 +0100
+++ new/keyring-23.13.1/keyring.egg-info/SOURCES.txt    2022-12-18 
21:24:33.000000000 +0100
@@ -3,7 +3,7 @@
 .flake8
 .gitignore
 .pre-commit-config.yaml
-.readthedocs.yml
+.readthedocs.yaml
 .travis-macos
 CHANGES.rst
 Dockerfile
@@ -29,7 +29,9 @@
 keyring/_compat.py
 keyring/_properties_compat.py
 keyring/backend.py
+keyring/backend_complete.zsh
 keyring/cli.py
+keyring/completion.py
 keyring/core.py
 keyring/credentials.py
 keyring/devpi_client.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/keyring.egg-info/requires.txt 
new/keyring-23.13.1/keyring.egg-info/requires.txt
--- old/keyring-23.11.0/keyring.egg-info/requires.txt   2022-11-05 
14:43:15.000000000 +0100
+++ new/keyring-23.13.1/keyring.egg-info/requires.txt   2022-12-18 
21:24:33.000000000 +0100
@@ -3,12 +3,18 @@
 [:python_version < "3.12"]
 importlib_metadata>=4.11.4
 
+[:python_version < "3.9"]
+importlib_resources
+
 [:sys_platform == "linux"]
 SecretStorage>=3.2
 jeepney>=0.4.2
 
 [:sys_platform == "win32"]
-pywin32-ctypes!=0.1.0,!=0.1.1
+pywin32-ctypes>=0.2.0
+
+[completion]
+shtab
 
 [docs]
 sphinx>=3.5
@@ -20,7 +26,6 @@
 [testing]
 pytest>=6
 pytest-checkdocs>=2.4
-pytest-flake8
 flake8<5
 pytest-cov
 pytest-enabler>=1.3
@@ -28,3 +33,6 @@
 [testing:platform_python_implementation != "PyPy"]
 pytest-black>=0.3.7
 pytest-mypy>=0.9.1
+
+[testing:python_version < "3.12"]
+pytest-flake8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/mypy.ini new/keyring-23.13.1/mypy.ini
--- old/keyring-23.11.0/mypy.ini        2022-11-05 14:42:49.000000000 +0100
+++ new/keyring-23.13.1/mypy.ini        2022-12-18 21:24:12.000000000 +0100
@@ -1,2 +1,5 @@
 [mypy]
 ignore_missing_imports = True
+# required to support namespace packages
+# https://github.com/python/mypy/issues/14057
+explicit_package_bases = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/pytest.ini 
new/keyring-23.13.1/pytest.ini
--- old/keyring-23.11.0/pytest.ini      2022-11-05 14:42:49.000000000 +0100
+++ new/keyring-23.13.1/pytest.ini      2022-12-18 21:24:12.000000000 +0100
@@ -3,6 +3,9 @@
 addopts=--doctest-modules
 doctest_optionflags=ALLOW_UNICODE ELLIPSIS
 filterwarnings=
+       # Ensure ResourceWarnings are emitted
+       default::ResourceWarning
+
        # Suppress deprecation warning in flake8
        ignore:SelectableGroups dict interface is deprecated::flake8
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/keyring-23.11.0/setup.cfg 
new/keyring-23.13.1/setup.cfg
--- old/keyring-23.11.0/setup.cfg       2022-11-05 14:43:15.404185000 +0100
+++ new/keyring-23.13.1/setup.cfg       2022-12-18 21:24:33.392923600 +0100
@@ -10,7 +10,6 @@
 classifiers = 
        Development Status :: 5 - Production/Stable
        Intended Audience :: Developers
-       License :: OSI Approved :: Python Software Foundation License
        License :: OSI Approved :: MIT License
        Programming Language :: Python :: 3
        Programming Language :: Python :: 3 :: Only
@@ -20,11 +19,12 @@
 include_package_data = true
 python_requires = >=3.7
 install_requires = 
-       pywin32-ctypes!=0.1.0,!=0.1.1; sys_platform=="win32"
+       pywin32-ctypes>=0.2.0; sys_platform=="win32"
        SecretStorage>=3.2; sys_platform=="linux"
        jeepney>=0.4.2; sys_platform=="linux"
        importlib_metadata >= 4.11.4; python_version < "3.12"
        jaraco.classes
+       importlib_resources; python_version < "3.9"
 
 [options.packages.find]
 exclude = 
@@ -37,7 +37,8 @@
 testing = 
        pytest >= 6
        pytest-checkdocs >= 2.4
-       pytest-flake8
+       pytest-flake8; \
+       python_version < "3.12"
        flake8 < 5
        pytest-black >= 0.3.7; \
        python_implementation != "PyPy"
@@ -51,6 +52,8 @@
        rst.linker >= 1.9
        furo
        jaraco.tidelift >= 1.4
+completion = 
+       shtab
 
 [options.entry_points]
 console_scripts = 

Reply via email to