Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-keyring-pass for
openSUSE:Factory checked in at 2024-01-08 23:46:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-keyring-pass (Old)
and /work/SRC/openSUSE:Factory/.python-keyring-pass.new.21961 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-keyring-pass"
Mon Jan 8 23:46:32 2024 rev:2 rq:1137571 version:0.9.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-keyring-pass/python-keyring-pass.changes
2022-10-03 13:45:03.845389300 +0200
+++
/work/SRC/openSUSE:Factory/.python-keyring-pass.new.21961/python-keyring-pass.changes
2024-01-08 23:46:38.261312400 +0100
@@ -1,0 +2,9 @@
+Mon Jan 8 13:14:52 UTC 2024 - Matej Cepl <[email protected]>
+
+- Update to 0.9.2:
+ - add get_credential()
+ - Use functools.lru_cache when functools.cache is not available by @bo5o in
#11
+ - Bump cryptography to 41.0.2
+ - v0.8.0: migrate to Poetry & add configurable binary
+
+-------------------------------------------------------------------
Old:
----
keyring_pass-0.7.1.tar.gz
New:
----
keyring_pass-0.9.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-keyring-pass.spec ++++++
--- /var/tmp/diff_new_pack.NY3uNj/_old 2024-01-08 23:46:39.685364177 +0100
+++ /var/tmp/diff_new_pack.NY3uNj/_new 2024-01-08 23:46:39.693364468 +0100
@@ -1,7 +1,7 @@
#
-# spec file for package keyring-pass
+# spec file for package python-keyring-pass
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,15 +16,16 @@
#
-%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-keyring-pass
-Version: 0.7.1
+Version: 0.9.2
Release: 0
Summary: Pass backend for python-keyring
License: MIT
URL: https://github.com/nazarewk/keyring_pass
Source:
https://files.pythonhosted.org/packages/source/k/keyring_pass/keyring_pass-%{version}.tar.gz
-BuildRequires: %{python_module setuptools}
+BuildRequires: %{python_module pip}
+BuildRequires: %{python_module poetry-core}
+BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-jaraco.classes
@@ -43,10 +44,10 @@
%autosetup -p1 -n keyring_pass-%{version}
%build
-%python_build
+%pyproject_wheel
%install
-%python_install
+%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%files %{python_files}
++++++ keyring_pass-0.7.1.tar.gz -> keyring_pass-0.9.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keyring_pass-0.7.1/PKG-INFO
new/keyring_pass-0.9.2/PKG-INFO
--- old/keyring_pass-0.7.1/PKG-INFO 2022-09-13 12:23:35.634640500 +0200
+++ new/keyring_pass-0.9.2/PKG-INFO 1970-01-01 01:00:00.000000000 +0100
@@ -1,36 +1,59 @@
Metadata-Version: 2.1
-Name: keyring_pass
-Version: 0.7.1
+Name: keyring-pass
+Version: 0.9.2
Summary: https://www.passwordstore.org/ backend for
https://pypi.org/project/keyring/
Home-page: https://github.com/nazarewk/keyring_pass
+License: MIT
+Keywords: keyring,pass
Author: Krzysztof Nazarewski
Author-email: [email protected]
-Classifier: Programming Language :: Python :: 3
+Requires-Python: >=3.7
Classifier: License :: OSI Approved :: MIT License
-Classifier: Operating System :: OS Independent
-Requires-Python: >3.3
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
+Requires-Dist: jaraco-classes (>=3.2.3)
+Requires-Dist: keyring (>=23.9.3)
+Project-URL: Repository, https://github.com/nazarewk/keyring_pass
Description-Content-Type: text/markdown
-License-File: LICENSE
# keyring_pass
This is a [`pass`](https://www.passwordstore.org/) backend for
[`keyring`](https://pypi.org/project/keyring/)
-Install with `pip install keyring-pass` and set the following content in your
[`keyringrc.cfg`](https://pypi.org/project/keyring/#config-file-path) file:
+Install with `pip install keyring-pass` and set the following content in
+your [`keyringrc.cfg`](https://pypi.org/project/keyring/#config-file-path)
file:
```ini
[backend]
-default-keyring=keyring_pass.PasswordStoreBackend
+default-keyring = keyring_pass.PasswordStoreBackend
```
You can modify the default `python-keyring` prefix for `pass`, by:
+
- adding following to `keyringrc.cfg`:
-
+
```ini
[pass]
key-prefix=alternative/prefix/path
+ binary=gopass
```
-- (for `keyring` version 23.0.0 or higher) setting environment variable
`KEYRING_PROPERTY_PASS_KEY_PREFIX`
+- (for `keyring` version 23.0.0 or higher) setting environment variables:
+ - `KEYRING_PROPERTY_PASS_KEY_PREFIX`
+ - `KEYRING_PROPERTY_PASS_BINARY`
+
+- You can clear the path (start from root), by setting above to `.` or an
empty value (just `key-prefix=` on the line).
+
+## Test your setup
+
+You can check if your setup works end-to-end (creates, reads and deletes a key
from password store).
+
+```shell
+# warning: this will create and delete a key at `<prefix>/test/asd` in your
password store
+python -m keyring_pass
+```
-You can clear the path (store in root), by setting above to `.` or an empty
value.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keyring_pass-0.7.1/README.md
new/keyring_pass-0.9.2/README.md
--- old/keyring_pass-0.7.1/README.md 2022-09-13 10:38:21.000000000 +0200
+++ new/keyring_pass-0.9.2/README.md 2022-10-20 15:22:58.861889600 +0200
@@ -2,21 +2,35 @@
This is a [`pass`](https://www.passwordstore.org/) backend for
[`keyring`](https://pypi.org/project/keyring/)
-Install with `pip install keyring-pass` and set the following content in your
[`keyringrc.cfg`](https://pypi.org/project/keyring/#config-file-path) file:
+Install with `pip install keyring-pass` and set the following content in
+your [`keyringrc.cfg`](https://pypi.org/project/keyring/#config-file-path)
file:
```ini
[backend]
-default-keyring=keyring_pass.PasswordStoreBackend
+default-keyring = keyring_pass.PasswordStoreBackend
```
You can modify the default `python-keyring` prefix for `pass`, by:
+
- adding following to `keyringrc.cfg`:
-
+
```ini
[pass]
key-prefix=alternative/prefix/path
+ binary=gopass
```
-- (for `keyring` version 23.0.0 or higher) setting environment variable
`KEYRING_PROPERTY_PASS_KEY_PREFIX`
+- (for `keyring` version 23.0.0 or higher) setting environment variables:
+ - `KEYRING_PROPERTY_PASS_KEY_PREFIX`
+ - `KEYRING_PROPERTY_PASS_BINARY`
+
+- You can clear the path (start from root), by setting above to `.` or an
empty value (just `key-prefix=` on the line).
-You can clear the path (store in root), by setting above to `.` or an empty
value.
+## Test your setup
+
+You can check if your setup works end-to-end (creates, reads and deletes a key
from password store).
+
+```shell
+# warning: this will create and delete a key at `<prefix>/test/asd` in your
password store
+python -m keyring_pass
+```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keyring_pass-0.7.1/keyring_pass/__init__.py
new/keyring_pass-0.9.2/keyring_pass/__init__.py
--- old/keyring_pass-0.7.1/keyring_pass/__init__.py 2022-09-13
10:38:21.000000000 +0200
+++ new/keyring_pass-0.9.2/keyring_pass/__init__.py 2024-01-08
12:38:23.499510300 +0100
@@ -1,74 +1,188 @@
-import codecs
+# -*- coding: utf-8 -*-
import configparser
import os
+import re
import shutil
import subprocess
import sys
import keyring
from jaraco.classes import properties
-from keyring import backend
+from keyring import backend, credentials
from keyring.util import platform_ as platform
+try:
+ from functools import cache
+except ImportError:
+ from functools import lru_cache
-def command(cmd, **kwargs):
- kwargs.setdefault('stderr', sys.stderr)
+ cache = lru_cache(maxsize=None)
+
+
+def command(cmd, **kwargs) -> str:
+ kwargs.setdefault("encoding", "utf8")
+ kwargs.setdefault("stderr", sys.stderr)
try:
- output = subprocess.check_output(cmd, **kwargs)
+ return subprocess.check_output(cmd, **kwargs)
except subprocess.CalledProcessError as exc:
- pattern = b'password store is empty'
+ pattern = "password store is empty"
if pattern in exc.output:
raise RuntimeError(exc.output)
- sys.stderr.write(exc.stdout.decode('utf8'))
+ sys.stderr.write(exc.stdout)
raise
- return codecs.decode(output, 'utf8')
+
+
+@cache
+def _load_config(
+ keyring_cfg=os.path.join(platform.config_root(), "keyringrc.cfg"),
+):
+ cfg = {}
+ if not os.path.exists(keyring_cfg):
+ return cfg
+
+ config = configparser.RawConfigParser()
+ config.read(keyring_cfg)
+ for attr, option in PasswordStoreBackend.INI_OPTIONS.items():
+ try:
+ cfg[attr] = config.get("pass", option)
+ except (configparser.NoSectionError, configparser.NoOptionError):
+ pass
+ return cfg
class PasswordStoreBackend(backend.KeyringBackend):
- pass_key_prefix = 'python-keyring'
+ pass_key_prefix = "python-keyring"
+ pass_binary = "pass"
+ pass_exact_service = True
+
+ INI_OPTIONS = {
+ "pass_key_prefix": "key-prefix",
+ "pass_binary": "binary",
+ "pass_exact_service": "exact-service",
+ }
def __init__(self):
+ for k, v in _load_config().items():
+ setattr(self, k, v)
+ if isinstance(self.pass_exact_service, str):
+ self.pass_exact_service = self.pass_exact_service.lower() == "true"
+ self.pass_key_prefix = os.path.normpath(self.pass_key_prefix)
super().__init__()
- self._load_config()
-
- def _load_config(self):
- keyring_cfg = os.path.join(platform.config_root(), 'keyringrc.cfg')
- if not os.path.exists(keyring_cfg):
- return
-
- config = configparser.RawConfigParser()
- config.read(keyring_cfg)
- try:
- self.pass_key_prefix = config.get('pass', 'key-prefix')
- except (configparser.NoSectionError, configparser.NoOptionError):
- pass
@properties.classproperty
- @classmethod
def priority(cls):
- if not shutil.which('pass'):
- raise RuntimeError('`pass` executable is missing!')
+ binary = _load_config().get("pass_binary", cls.pass_binary)
+ if not shutil.which(binary):
+ raise RuntimeError(f"`{binary}` executable is missing!")
- command(['pass', 'ls'])
+ command([binary, "ls"])
return 1
def get_key(self, service, username):
- return os.path.join(
- self.pass_key_prefix,
- service,
- username,
+ service = os.path.normpath(service)
+ path = (
+ os.path.join(self.pass_key_prefix, service)
+ if self.pass_key_prefix
+ else service
)
+ if username:
+ path = os.path.join(path, username)
+ return path
def set_password(self, servicename, username, password):
password = password.splitlines()[0]
- inp = '%s\n' % password
+ inp = "%s\n" % password
inp *= 2
- command(['pass', 'insert', '--force', self.get_key(servicename,
username)], input=inp.encode('utf8'))
+ command(
+ [
+ self.pass_binary,
+ "insert",
+ "--force",
+ self.get_key(servicename, username),
+ ],
+ input=inp,
+ )
+
+ def get_credential(self, servicename, username):
+ if username:
+ return credentials.SimpleCredential(
+ username,
+ self.get_password(servicename, username),
+ )
+ try:
+ servicename = os.path.normpath(servicename)
+ service_key = self.get_key(servicename, None)
+ output = command([self.pass_binary, "ls", service_key])
+ except subprocess.CalledProcessError as exc:
+ if exc.returncode == 1:
+ return None
+ raise
+ # Currently pass only has tree like structure output.
+ # Internally it uses the command tree but does not pass
+ # output formatter options (e.g., for json).
+ lines = output.splitlines()
+ lines = [re.sub(r"\x1B\[([0-9]+;)?[0-9]+m", "", line) for line in
lines]
+
+ # Assumption that output paths must contain leaves.
+ # Services and users are entries in our keyring. Thus remove any
+ # non-word char from the left.
+ entries = [re.sub(r"^\W+", "", line) for line in lines]
+ # Just in case: Remove empty entries and corresponding lines
+ indents, entries = zip(
+ *[
+ (len(line) - len(entry), entry)
+ for line, entry in zip(lines, entries)
+ if entry
+ ]
+ )
+ # The count of removed characters tells us how far elements are
indented.
+ # Elements with the same count are on the same level.
+ # EOF tree is at indent 0 again.
+ indents = list(indents) + [0]
+ entries = list(entries)
+ # Now to identify the user entries from service keys we must identify
+ # which elements do not have further entries further down the
structure.
+ # This means that the next element is not indented any further.
+ users_ids = [
+ i for i, j in enumerate(zip(indents[:-1], indents[1:])) if j[0] >=
j[1]
+ ]
+ # A user with the least indent is closest to the specified service
path.
+ users_ids = sorted(users_ids, key=lambda i: indents[i])
+
+ # Parse hierarchy and get complete path
+ if users_ids:
+ idx = users_ids[0]
+ username = entries[idx]
+ # current level of the last added service key
+ branch_indent = indents[idx]
+ # last level that can be added
+ # so stop there.
+ top_indent = indents[1]
+ paths = []
+
+ while branch_indent > top_indent:
+ idx = idx - 1
+ # higher up in the tree or same level
+ indent = indents[idx]
+ if indent < branch_indent:
+ # less indented means new service key
+ paths.insert(0, entries[idx])
+ branch_indent = indent
+
+ found_service = os.path.join(servicename, *paths) if paths else
servicename
+
+ if (not self.pass_exact_service) or servicename == found_service:
+ return credentials.SimpleCredential(
+ username, self.get_password(found_service, username)
+ )
+ return None
def get_password(self, servicename, username):
try:
- ret = command(['pass', 'show', self.get_key(servicename,
username)])
+ ret = command(
+ [self.pass_binary, "show", self.get_key(servicename, username)]
+ )
except subprocess.CalledProcessError as exc:
if exc.returncode == 1:
return None
@@ -76,21 +190,49 @@
return ret.splitlines()[0]
def delete_password(self, service, username):
- command(['pass', 'rm', '--force', self.get_key(service, username)])
+ command([self.pass_binary, "rm", "--force", self.get_key(service,
username)])
-if __name__ == '__main__':
- svc = 'test'
- user = 'asd'
- pwd = 'zxc'
+if __name__ == "__main__":
+ svc = "test"
+ user = "asd"
+ pwd = "zxc"
+
+ keyring.set_keyring(PasswordStoreBackend())
+ errors = []
+ print(f"testing with {svc=} {user=} {pwd=}")
try:
keyring.set_password(svc, user, pwd)
returned = keyring.get_password(svc, user)
-
+ credential = keyring.get_credential(svc, None)
finally:
keyring.delete_password(svc, user)
if returned != pwd:
- print('{} != {}'.format(returned, pwd))
+ errors.append(f"get_password(): {returned=} != {pwd=}")
+ else:
+ print(f"OK: get_password(): matches")
+
+ if not credential:
+ errors.append(f"get_credential() not found ({credential=})")
+ else:
+ print(f"OK: get_credential(): found")
+ if credential.username != user:
+ errors.append(
+ f"get_credential(): {credential.username=} doesn't match
{user=}"
+ )
+ else:
+ print(f"OK: get_credential(): username matches")
+
+ if credential.password != pwd:
+ errors.append(
+ f"get_credential(): {credential.password=} doesn't match
{pwd=}"
+ )
+ else:
+ print(f"OK: get_credential(): password matches")
+
+ for err in errors:
+ print(f"ERROR: {err}")
+ if errors:
sys.exit(1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keyring_pass-0.7.1/keyring_pass.egg-info/PKG-INFO
new/keyring_pass-0.9.2/keyring_pass.egg-info/PKG-INFO
--- old/keyring_pass-0.7.1/keyring_pass.egg-info/PKG-INFO 2022-09-13
12:23:35.000000000 +0200
+++ new/keyring_pass-0.9.2/keyring_pass.egg-info/PKG-INFO 1970-01-01
01:00:00.000000000 +0100
@@ -1,36 +0,0 @@
-Metadata-Version: 2.1
-Name: keyring-pass
-Version: 0.7.1
-Summary: https://www.passwordstore.org/ backend for
https://pypi.org/project/keyring/
-Home-page: https://github.com/nazarewk/keyring_pass
-Author: Krzysztof Nazarewski
-Author-email: [email protected]
-Classifier: Programming Language :: Python :: 3
-Classifier: License :: OSI Approved :: MIT License
-Classifier: Operating System :: OS Independent
-Requires-Python: >3.3
-Description-Content-Type: text/markdown
-License-File: LICENSE
-
-# keyring_pass
-
-This is a [`pass`](https://www.passwordstore.org/) backend for
[`keyring`](https://pypi.org/project/keyring/)
-
-Install with `pip install keyring-pass` and set the following content in your
[`keyringrc.cfg`](https://pypi.org/project/keyring/#config-file-path) file:
-
-```ini
-[backend]
-default-keyring=keyring_pass.PasswordStoreBackend
-```
-
-You can modify the default `python-keyring` prefix for `pass`, by:
-- adding following to `keyringrc.cfg`:
-
- ```ini
- [pass]
- key-prefix=alternative/prefix/path
- ```
-
-- (for `keyring` version 23.0.0 or higher) setting environment variable
`KEYRING_PROPERTY_PASS_KEY_PREFIX`
-
-You can clear the path (store in root), by setting above to `.` or an empty
value.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keyring_pass-0.7.1/keyring_pass.egg-info/SOURCES.txt
new/keyring_pass-0.9.2/keyring_pass.egg-info/SOURCES.txt
--- old/keyring_pass-0.7.1/keyring_pass.egg-info/SOURCES.txt 2022-09-13
12:23:35.000000000 +0200
+++ new/keyring_pass-0.9.2/keyring_pass.egg-info/SOURCES.txt 1970-01-01
01:00:00.000000000 +0100
@@ -1,10 +0,0 @@
-LICENSE
-README.md
-setup.py
-keyring_pass/__init__.py
-keyring_pass.egg-info/PKG-INFO
-keyring_pass.egg-info/SOURCES.txt
-keyring_pass.egg-info/dependency_links.txt
-keyring_pass.egg-info/entry_points.txt
-keyring_pass.egg-info/requires.txt
-keyring_pass.egg-info/top_level.txt
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/keyring_pass-0.7.1/keyring_pass.egg-info/dependency_links.txt
new/keyring_pass-0.9.2/keyring_pass.egg-info/dependency_links.txt
--- old/keyring_pass-0.7.1/keyring_pass.egg-info/dependency_links.txt
2022-09-13 12:23:35.000000000 +0200
+++ new/keyring_pass-0.9.2/keyring_pass.egg-info/dependency_links.txt
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/keyring_pass-0.7.1/keyring_pass.egg-info/entry_points.txt
new/keyring_pass-0.9.2/keyring_pass.egg-info/entry_points.txt
--- old/keyring_pass-0.7.1/keyring_pass.egg-info/entry_points.txt
2022-09-13 12:23:35.000000000 +0200
+++ new/keyring_pass-0.9.2/keyring_pass.egg-info/entry_points.txt
1970-01-01 01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-[keyring.backends]
-pass = keyring_pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/keyring_pass-0.7.1/keyring_pass.egg-info/requires.txt
new/keyring_pass-0.9.2/keyring_pass.egg-info/requires.txt
--- old/keyring_pass-0.7.1/keyring_pass.egg-info/requires.txt 2022-09-13
12:23:35.000000000 +0200
+++ new/keyring_pass-0.9.2/keyring_pass.egg-info/requires.txt 1970-01-01
01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-keyring
-jaraco.classes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/keyring_pass-0.7.1/keyring_pass.egg-info/top_level.txt
new/keyring_pass-0.9.2/keyring_pass.egg-info/top_level.txt
--- old/keyring_pass-0.7.1/keyring_pass.egg-info/top_level.txt 2022-09-13
12:23:35.000000000 +0200
+++ new/keyring_pass-0.9.2/keyring_pass.egg-info/top_level.txt 1970-01-01
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-keyring_pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keyring_pass-0.7.1/pyproject.toml
new/keyring_pass-0.9.2/pyproject.toml
--- old/keyring_pass-0.7.1/pyproject.toml 1970-01-01 01:00:00.000000000
+0100
+++ new/keyring_pass-0.9.2/pyproject.toml 2024-01-08 12:39:54.790916000
+0100
@@ -0,0 +1,28 @@
+[tool.poetry]
+name = "keyring-pass"
+version = "0.9.2"
+description = "https://www.passwordstore.org/ backend for
https://pypi.org/project/keyring/"
+authors = ["Krzysztof Nazarewski <[email protected]>"]
+homepage = "https://github.com/nazarewk/keyring_pass"
+repository = "https://github.com/nazarewk/keyring_pass"
+license = "MIT"
+readme = "README.md"
+keywords = [
+ "keyring",
+ "pass",
+]
+classifiers = []
+packages = [{ include = "keyring_pass" }]
+
+[tool.poetry.dependencies]
+python = ">=3.7" # required by `jaraco.classes`
+keyring = ">=23.9.3"
+jaraco-classes = ">=3.2.3"
+
+[tool.poetry.plugins."keyring.backends"]
+pass = "keyring_pass"
+
+
+[build-system]
+requires = ["poetry-core"]
+build-backend = "poetry.core.masonry.api"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keyring_pass-0.7.1/setup.cfg
new/keyring_pass-0.9.2/setup.cfg
--- old/keyring_pass-0.7.1/setup.cfg 2022-09-13 12:23:35.635640400 +0200
+++ new/keyring_pass-0.9.2/setup.cfg 1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-[egg_info]
-tag_build =
-tag_date = 0
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keyring_pass-0.7.1/setup.py
new/keyring_pass-0.9.2/setup.py
--- old/keyring_pass-0.7.1/setup.py 2022-09-13 10:39:55.000000000 +0200
+++ new/keyring_pass-0.9.2/setup.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,35 +0,0 @@
-import setuptools
-
-with open('README.md', 'r') as f:
- long_description = f.read()
-
-setuptools.setup(
- name='keyring_pass',
- version='0.7.1',
- author='Krzysztof Nazarewski',
- author_email='[email protected]',
- description='https://www.passwordstore.org/ backend for
https://pypi.org/project/keyring/',
- long_description=long_description,
- long_description_content_type="text/markdown",
- url='https://github.com/nazarewk/keyring_pass',
-
- python_requires='>3.3',
- packages=['keyring_pass'],
-
- entry_points={
- 'keyring.backends': [
- 'pass = keyring_pass',
- ]
- },
-
- classifiers=[
- "Programming Language :: Python :: 3",
- "License :: OSI Approved :: MIT License",
- "Operating System :: OS Independent",
- ],
-
- install_requires=[
- 'keyring',
- "jaraco.classes",
- ]
-)