Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-launchpadlib for openSUSE:Factory checked in at 2024-11-08 12:01:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-launchpadlib (Old) and /work/SRC/openSUSE:Factory/.python-launchpadlib.new.2017 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-launchpadlib" Fri Nov 8 12:01:06 2024 rev:2 rq:1222644 version:2.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-launchpadlib/python-launchpadlib.changes 2024-06-05 17:39:26.795654298 +0200 +++ /work/SRC/openSUSE:Factory/.python-launchpadlib.new.2017/python-launchpadlib.changes 2024-11-08 12:05:17.648276253 +0100 @@ -1,0 +2,7 @@ +Fri Nov 8 06:21:44 UTC 2024 - Matej Cepl <mc...@cepl.eu> + +- Update to 2.0.0: + - Remove support for Python 2. +- Remove upstreamed patch 0001-Remove-support-for-Python-2.patch + +------------------------------------------------------------------- Old: ---- 0001-Remove-support-for-Python-2.patch launchpadlib-1.11.0.tar.gz New: ---- launchpadlib-2.0.0.tar.gz BETA DEBUG BEGIN: Old: - Remove support for Python 2. - Remove upstreamed patch 0001-Remove-support-for-Python-2.patch BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-launchpadlib.spec ++++++ --- /var/tmp/diff_new_pack.n5x5Rq/_old 2024-11-08 12:05:18.064293675 +0100 +++ /var/tmp/diff_new_pack.n5x5Rq/_new 2024-11-08 12:05:18.064293675 +0100 @@ -17,16 +17,12 @@ Name: python-launchpadlib -Version: 1.11.0 +Version: 2.0.0 Release: 0 Summary: Python client library for Launchpad's web service License: LGPL-3.0-only URL: https://pypi.org/project/launchpadlib/ Source: https://launchpad.net/launchpadlib/trunk/%{version}/+download/launchpadlib-%{version}.tar.gz -# PATCH-FEATURE-UPSTREAM 0001-Remove-support-for-Python-2.patch mc...@suse.com -# Code from https://code.launchpad.net/~cjwatson/launchpadlib/+git/launchpadlib/+merge/461678 -# Remove support for Python 2 -Patch0: 0001-Remove-support-for-Python-2.patch BuildRequires: %{python_module base >= 3.7} BuildRequires: %{python_module httplib2} BuildRequires: %{python_module lazr.restfulclient} @@ -56,14 +52,16 @@ %install %pyproject_install -%python_expand %fdupes %{buildroot}%{$python_sitelib} +%{python_expand rm -r %{buildroot}%{$python_sitelib}/launchpadlib/docs +%fdupes %{buildroot}%{$python_sitelib} +} %check %pyunittest discover -v src/launchpadlib/tests/ %files %{python_files} %license COPYING.txt -%doc CONTRIBUTING.rst NEWS.rst README.rst +%doc README.rst src/launchpadlib/docs/ %{python_sitelib}/launchpadlib %{python_sitelib}/launchpadlib-%{version}*-info ++++++ launchpadlib-1.11.0.tar.gz -> launchpadlib-2.0.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/MANIFEST.in new/launchpadlib-2.0.0/MANIFEST.in --- old/launchpadlib-1.11.0/MANIFEST.in 2021-10-26 17:42:25.000000000 +0200 +++ new/launchpadlib-2.0.0/MANIFEST.in 2024-07-17 11:39:42.000000000 +0200 @@ -3,3 +3,4 @@ include src/launchpadlib/docs/Makefile src/launchpadlib/docs/conf.py prune src/launchpadlib/docs/_build prune .tox +prune dist diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/NEWS.rst new/launchpadlib-2.0.0/NEWS.rst --- old/launchpadlib-1.11.0/NEWS.rst 2023-01-09 10:46:40.000000000 +0100 +++ new/launchpadlib-2.0.0/NEWS.rst 2024-07-19 12:30:09.000000000 +0200 @@ -2,6 +2,10 @@ NEWS for launchpadlib ===================== +2.0.0 (2024-07-19) +================== +- Remove support for Python 2. + 1.11.0 (2023-01-09) =================== - Move the ``keyring`` dependency to a new ``keyring`` extra. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/PKG-INFO new/launchpadlib-2.0.0/PKG-INFO --- old/launchpadlib-1.11.0/PKG-INFO 2023-01-09 10:52:32.067530600 +0100 +++ new/launchpadlib-2.0.0/PKG-INFO 2024-07-19 12:44:38.909896400 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: launchpadlib -Version: 1.11.0 +Version: 2.0.0 Summary: Script Launchpad through its web services interfaces. Officially supported. Home-page: https://help.launchpad.net/API/launchpadlib Download-URL: https://launchpad.net/launchpadlib/+download @@ -27,11 +27,22 @@ Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 +Requires-Python: >=3.5 +License-File: COPYING.txt +Requires-Dist: httplib2 +Requires-Dist: importlib-metadata; python_version < "3.8" +Requires-Dist: lazr.restfulclient>=0.14.2 +Requires-Dist: lazr.uri Provides-Extra: keyring +Requires-Dist: keyring; extra == "keyring" Provides-Extra: docs +Requires-Dist: Sphinx; extra == "docs" Provides-Extra: testing +Requires-Dist: testresources; extra == "testing" +Requires-Dist: wadllib; extra == "testing" Provides-Extra: test -License-File: COPYING.txt +Requires-Dist: coverage; extra == "test" +Requires-Dist: pytest; extra == "test" .. This file is part of launchpadlib. @@ -58,6 +69,10 @@ NEWS for launchpadlib ===================== +2.0.0 (2024-07-19) +================== +- Remove support for Python 2. + 1.11.0 (2023-01-09) =================== - Move the ``keyring`` dependency to a new ``keyring`` extra. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/pyproject.toml new/launchpadlib-2.0.0/pyproject.toml --- old/launchpadlib-1.11.0/pyproject.toml 2021-11-17 02:30:15.000000000 +0100 +++ new/launchpadlib-2.0.0/pyproject.toml 2024-07-17 11:31:21.000000000 +0200 @@ -1,3 +1,3 @@ [tool.black] line-length = 79 -target-version = ['py27'] +target-version = ['py35'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/setup.cfg new/launchpadlib-2.0.0/setup.cfg --- old/launchpadlib-1.11.0/setup.cfg 2023-01-09 10:52:32.067530600 +0100 +++ new/launchpadlib-2.0.0/setup.cfg 2024-07-19 12:44:38.909896400 +0200 @@ -1,6 +1,3 @@ -[bdist_wheel] -universal = 1 - [flake8] ignore = E203 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/setup.py new/launchpadlib-2.0.0/setup.py --- old/launchpadlib-1.11.0/setup.py 2023-01-09 10:46:54.000000000 +0100 +++ new/launchpadlib-2.0.0/setup.py 2024-07-17 11:35:30.000000000 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright 2008-2022 Canonical Ltd. # @@ -46,12 +46,11 @@ 'importlib-metadata; python_version < "3.8"', "lazr.restfulclient>=0.14.2", "lazr.uri", - "six", ] setup( name="launchpadlib", - version="1.11.0", + version="2.0.0", packages=find_packages("src"), package_dir={"": "src"}, include_package_data=True, @@ -64,6 +63,7 @@ description=open("README.rst").readline().strip(), long_description=generate("src/launchpadlib/docs/index.rst", "NEWS.rst"), license="LGPL v3", + python_requires=">=3.5", install_requires=install_requires, url="https://help.launchpad.net/API/launchpadlib", project_urls={ @@ -99,7 +99,6 @@ # Dependencies only needed by launchpadlib's own tests. "test": [ "coverage", - 'mock; python_version < "3"', "pytest", ], }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/src/launchpadlib/apps.py new/launchpadlib-2.0.0/src/launchpadlib/apps.py --- old/launchpadlib-1.11.0/src/launchpadlib/apps.py 2021-11-17 02:30:15.000000000 +0100 +++ new/launchpadlib-2.0.0/src/launchpadlib/apps.py 2024-07-17 11:31:21.000000000 +0200 @@ -30,7 +30,7 @@ from launchpadlib.uris import lookup_web_root -class RequestTokenApp(object): +class RequestTokenApp: """An application that creates request tokens.""" def __init__(self, web_root, consumer_name, context): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/src/launchpadlib/credentials.py new/launchpadlib-2.0.0/src/launchpadlib/credentials.py --- old/launchpadlib-1.11.0/src/launchpadlib/credentials.py 2021-11-17 10:42:31.000000000 +0100 +++ new/launchpadlib-2.0.0/src/launchpadlib/credentials.py 2024-07-17 11:31:21.000000000 +0200 @@ -14,11 +14,8 @@ # You should have received a copy of the GNU Lesser General Public License # along with launchpadlib. If not, see <http://www.gnu.org/licenses/>. -from __future__ import print_function - """launchpadlib credentials and authentication support.""" -__metaclass__ = type __all__ = [ "AccessToken", "AnonymousAccessToken", @@ -29,40 +26,20 @@ "Credentials", ] -try: - from cStringIO import StringIO -except ImportError: - from io import StringIO - +from base64 import ( + b64decode, + b64encode, +) import httplib2 +from io import StringIO import json import os from select import select import stat from sys import stdin import time - -try: - from urllib.parse import urlencode -except ImportError: - from urllib import urlencode -try: - from urllib.parse import urljoin -except ImportError: - from urlparse import urljoin +from urllib.parse import urlencode, urljoin, parse_qs import webbrowser -from base64 import ( - b64decode, - b64encode, -) - -from six.moves.urllib.parse import parse_qs - -if bytes is str: - # Python 2 - unicode_type = unicode # noqa: F821 -else: - unicode_type = str from lazr.restfulclient.errors import HTTPError from lazr.restfulclient.authorize.oauth import ( @@ -135,7 +112,7 @@ sio = StringIO() self.save(sio) serialized = sio.getvalue() - if isinstance(serialized, unicode_type): + if isinstance(serialized, str): serialized = serialized.encode("utf-8") return serialized @@ -146,7 +123,7 @@ This should probably be moved into OAuthAuthorizer. """ credentials = cls() - if not isinstance(value, unicode_type): + if not isinstance(value, str): value = value.decode("utf-8") credentials.load(StringIO(value)) return credentials @@ -255,7 +232,7 @@ @classmethod def from_string(cls, query_string): """Create and return a new `AccessToken` from the given string.""" - if not isinstance(query_string, unicode_type): + if not isinstance(query_string, str): query_string = query_string.decode("utf-8") params = parse_qs(query_string, keep_blank_values=False) key = params["oauth_token"] @@ -280,10 +257,10 @@ """ def __init__(self): - super(AnonymousAccessToken, self).__init__("", "") + super().__init__("", "") -class CredentialStore(object): +class CredentialStore: """Store OAuth credentials locally. This is a generic superclass. To implement a specific way of @@ -369,7 +346,7 @@ B64MARKER = b"<B64>" def __init__(self, credential_save_failed=None, fallback=False): - super(KeyringCredentialStore, self).__init__(credential_save_failed) + super().__init__(credential_save_failed) self._fallback = None if fallback: self._fallback = MemoryCredentialStore(credential_save_failed) @@ -438,7 +415,7 @@ else: raise if credential_string is not None: - if isinstance(credential_string, unicode_type): + if isinstance(credential_string, str): credential_string = credential_string.encode("utf8") if credential_string.startswith(self.B64MARKER): try: @@ -468,9 +445,7 @@ """ def __init__(self, filename, credential_save_failed=None): - super(UnencryptedFileCredentialStore, self).__init__( - credential_save_failed - ) + super().__init__(credential_save_failed) self.filename = filename def do_save(self, credentials, unique_key): @@ -495,7 +470,7 @@ """ def __init__(self, credential_save_failed=None): - super(MemoryCredentialStore, self).__init__(credential_save_failed) + super().__init__(credential_save_failed) self._credentials = {} def do_save(self, credentials, unique_key): @@ -507,7 +482,7 @@ return self._credentials.get(unique_key) -class RequestTokenAuthorizationEngine(object): +class RequestTokenAuthorizationEngine: """The superclass of all request token authorizers. This base class does not implement request token authorization, @@ -774,15 +749,13 @@ # It doesn't look like we're doing anything here, but we # are discarding the passed-in values for consumer_name and # allow_access_levels. - super(AuthorizeRequestTokenWithBrowser, self).__init__( + super().__init__( service_root, application_name, None, credential_save_failed ) def notify_end_user_authorization_url(self, authorization_url): """Notify the end-user of the URL.""" - super( - AuthorizeRequestTokenWithBrowser, self - ).notify_end_user_authorization_url(authorization_url) + super().notify_end_user_authorization_url(authorization_url) try: browser_obj = webbrowser.get() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/src/launchpadlib/docs/NEWS.rst new/launchpadlib-2.0.0/src/launchpadlib/docs/NEWS.rst --- old/launchpadlib-1.11.0/src/launchpadlib/docs/NEWS.rst 2023-01-09 10:46:40.000000000 +0100 +++ new/launchpadlib-2.0.0/src/launchpadlib/docs/NEWS.rst 2024-07-19 12:30:09.000000000 +0200 @@ -2,6 +2,10 @@ NEWS for launchpadlib ===================== +2.0.0 (2024-07-19) +================== +- Remove support for Python 2. + 1.11.0 (2023-01-09) =================== - Move the ``keyring`` dependency to a new ``keyring`` extra. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/src/launchpadlib/docs/conf.py new/launchpadlib-2.0.0/src/launchpadlib/docs/conf.py --- old/launchpadlib-1.11.0/src/launchpadlib/docs/conf.py 2021-11-05 23:40:06.000000000 +0100 +++ new/launchpadlib-2.0.0/src/launchpadlib/docs/conf.py 2024-07-17 11:31:21.000000000 +0200 @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # launchpadlib documentation build configuration file, created by # sphinx-quickstart on Tue Nov 5 23:48:15 2019. # @@ -47,9 +45,9 @@ master_doc = "index" # General information about the project. -project = u"launchpadlib" -copyright = u"2008-2019, Canonical Ltd." -author = u"LAZR Developers <lazr-develop...@lists.launchpad.net>" +project = "launchpadlib" +copyright = "2008-2019, Canonical Ltd." +author = "LAZR Developers <lazr-develop...@lists.launchpad.net>" # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the @@ -65,7 +63,7 @@ # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. -language = None +language = "en" # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. @@ -140,8 +138,8 @@ ( master_doc, "launchpadlib.tex", - u"launchpadlib Documentation", - u"LAZR Developers \\textless{}lazr-develop...@lists.launchpad.net\\textgreater{}", # noqa: E501 + "launchpadlib Documentation", + "LAZR Developers \\textless{}lazr-develop...@lists.launchpad.net\\textgreater{}", # noqa: E501 "manual", ), ] @@ -152,7 +150,7 @@ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ - (master_doc, "launchpadlib", u"launchpadlib Documentation", [author], 1) + (master_doc, "launchpadlib", "launchpadlib Documentation", [author], 1) ] @@ -165,7 +163,7 @@ ( master_doc, "launchpadlib", - u"launchpadlib Documentation", + "launchpadlib Documentation", author, "launchpadlib", "One line description of project.", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/src/launchpadlib/launchpad.py new/launchpadlib-2.0.0/src/launchpadlib/launchpad.py --- old/launchpadlib-1.11.0/src/launchpadlib/launchpad.py 2022-01-21 15:12:11.000000000 +0100 +++ new/launchpadlib-2.0.0/src/launchpadlib/launchpad.py 2024-07-17 11:31:21.000000000 +0200 @@ -16,18 +16,13 @@ """Root Launchpad API class.""" -__metaclass__ = type __all__ = [ "Launchpad", ] import errno import os - -try: - from urllib.parse import urlsplit -except ImportError: - from urlparse import urlsplit +from urllib.parse import urlsplit import warnings try: @@ -130,7 +125,7 @@ def __init__(self, launchpad, authorization_engine, *args): self.launchpad = launchpad self.authorization_engine = authorization_engine - super(LaunchpadOAuthAwareHttp, self).__init__(*args) + super().__init__(*args) def _bad_oauth_token(self, response, content): """Helper method to detect an error caused by a bad OAuth token.""" @@ -141,9 +136,7 @@ ) def _request(self, *args): - response, content = super(LaunchpadOAuthAwareHttp, self)._request( - *args - ) + response, content = super()._request(*args) return self.retry_on_bad_token(response, content, *args) def retry_on_bad_token(self, response, content, *args): @@ -227,7 +220,7 @@ # case we need to authorize a new token during use. self.authorization_engine = authorization_engine - super(Launchpad, self).__init__( + super().__init__( credentials, service_root, cache, timeout, proxy_info, version ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/src/launchpadlib/testing/helpers.py new/launchpadlib-2.0.0/src/launchpadlib/testing/helpers.py --- old/launchpadlib-1.11.0/src/launchpadlib/testing/helpers.py 2021-10-29 15:45:13.000000000 +0200 +++ new/launchpadlib-2.0.0/src/launchpadlib/testing/helpers.py 2024-07-17 11:31:21.000000000 +0200 @@ -18,8 +18,6 @@ """launchpadlib testing helpers.""" - -__metaclass__ = type __all__ = [ "BadSaveKeyring", "fake_keyring", @@ -64,7 +62,7 @@ ACCESS_TOKEN_KEY = "access_key:84" def __init__(self, *args, **kwargs): - super(NoNetworkAuthorizationEngine, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) # Set up some instrumentation. self.request_tokens_obtained = 0 self.access_tokens_obtained = 0 @@ -144,7 +142,7 @@ generally pass in fully-formed Credentials objects. :param service_root: Defaults to 'test_dev'. """ - super(TestableLaunchpad, self).__init__( + super().__init__( credentials, authorization_engine, credential_store, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/src/launchpadlib/testing/launchpad.py new/launchpadlib-2.0.0/src/launchpadlib/testing/launchpad.py --- old/launchpadlib-1.11.0/src/launchpadlib/testing/launchpad.py 2023-01-09 10:45:40.000000000 +0100 +++ new/launchpadlib-2.0.0/src/launchpadlib/testing/launchpad.py 2024-07-17 11:31:21.000000000 +0200 @@ -65,23 +65,15 @@ also in the WADL file itelf. """ +from collections.abc import Callable from datetime import datetime -try: - from collections.abc import Callable -except ImportError: - from collections import Callable -import sys - -if sys.version_info[0] >= 3: - basestring = str - class IntegrityError(Exception): """Raised when bad sample data is used with a L{FakeLaunchpad} instance.""" -class FakeLaunchpad(object): +class FakeLaunchpad: """A fake Launchpad API class for unit tests that depend on L{Launchpad}. @param application: A C{wadllib.application.Application} instance for a @@ -188,7 +180,7 @@ return "{http://research.sun.com/wadl/2006/10}" + tag_name -class FakeResource(object): +class FakeResource: """ Represents valid sample data on L{FakeLaunchpad} instances. @@ -434,7 +426,7 @@ if param is None: raise IntegrityError("%s not found" % name) if param.type is None: - if not isinstance(value, basestring): + if not isinstance(value, str): raise IntegrityError( "%s is not a str or unicode for %s" % (value, name) ) @@ -594,7 +586,7 @@ resource_type = application.get_resource_type( application.markup_url + "#service-root" ) - super(FakeRoot, self).__init__(application, resource_type) + super().__init__(application, resource_type) class FakeEntry(FakeResource): @@ -612,9 +604,7 @@ name=None, child_resource_type=None, ): - super(FakeCollection, self).__init__( - application, resource_type, values - ) + super().__init__(application, resource_type, values) self.__dict__.update( {"_name": name, "_child_resource_type": child_resource_type} ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/src/launchpadlib/testing/tests/test_launchpad.py new/launchpadlib-2.0.0/src/launchpadlib/testing/tests/test_launchpad.py --- old/launchpadlib-1.11.0/src/launchpadlib/testing/tests/test_launchpad.py 2023-01-09 10:45:40.000000000 +0100 +++ new/launchpadlib-2.0.0/src/launchpadlib/testing/tests/test_launchpad.py 2024-07-17 11:31:21.000000000 +0200 @@ -160,8 +160,8 @@ dicts that represent objects. Plain string values can be represented as C{unicode} strings. """ - self.launchpad.me = dict(name=u"foo") - self.assertEqual(u"foo", self.launchpad.me.name) + self.launchpad.me = dict(name="foo") + self.assertEqual("foo", self.launchpad.me.name) def test_datetime_property(self): """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/src/launchpadlib/tests/test_credential_store.py new/launchpadlib-2.0.0/src/launchpadlib/tests/test_credential_store.py --- old/launchpadlib-1.11.0/src/launchpadlib/tests/test_credential_store.py 2021-11-05 23:40:06.000000000 +0100 +++ new/launchpadlib-2.0.0/src/launchpadlib/tests/test_credential_store.py 2024-07-17 11:31:21.000000000 +0200 @@ -169,9 +169,7 @@ # handled correctly. (See bug lp:877374) class UnicodeInMemoryKeyring(InMemoryKeyring): def get_password(self, service, username): - password = super(UnicodeInMemoryKeyring, self).get_password( - service, username - ) + password = super().get_password(service, username) if isinstance(password, unicode_type): password = password.encode("utf-8") return password @@ -194,9 +192,7 @@ class UnencodedInMemoryKeyring(InMemoryKeyring): def get_password(self, service, username): - pw = super(UnencodedInMemoryKeyring, self).get_password( - service, username - ) + pw = super().get_password(service, username) return b64decode(pw[5:]) self.keyring = UnencodedInMemoryKeyring() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/src/launchpadlib/tests/test_http.py new/launchpadlib-2.0.0/src/launchpadlib/tests/test_http.py --- old/launchpadlib-1.11.0/src/launchpadlib/tests/test_http.py 2021-11-17 02:30:15.000000000 +0100 +++ new/launchpadlib-2.0.0/src/launchpadlib/tests/test_http.py 2024-07-17 11:31:21.000000000 +0200 @@ -17,15 +17,10 @@ """Tests for the LaunchpadOAuthAwareHTTP class.""" from collections import deque -from json import dumps +from json import dumps, JSONDecodeError import tempfile import unittest -try: - from json import JSONDecodeError -except ImportError: - JSONDecodeError = ValueError - from launchpadlib.errors import Unauthorized from launchpadlib.credentials import UnencryptedFileCredentialStore from launchpadlib.launchpad import ( @@ -75,7 +70,7 @@ :param responses: A list of HttpResponse objects to use in response to requests. """ - super(SimulatedResponsesHttp, self).__init__(*args) + super().__init__(*args) self.sent_responses = [] self.unsent_responses = responses self.cache = None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/src/launchpadlib/tests/test_launchpad.py new/launchpadlib-2.0.0/src/launchpadlib/tests/test_launchpad.py --- old/launchpadlib-1.11.0/src/launchpadlib/tests/test_launchpad.py 2023-01-05 13:20:42.000000000 +0100 +++ new/launchpadlib-2.0.0/src/launchpadlib/tests/test_launchpad.py 2024-07-17 11:31:21.000000000 +0200 @@ -16,8 +16,6 @@ """Tests for the Launchpad class.""" -__metaclass__ = type - from contextlib import contextmanager import os import shutil @@ -25,11 +23,7 @@ import stat import tempfile import unittest - -try: - from unittest.mock import patch -except ImportError: - from mock import patch +from unittest.mock import patch import warnings from lazr.restfulclient.resource import ServiceRoot @@ -351,11 +345,11 @@ """Tests for Launchpad.login_with().""" def setUp(self): - super(TestLaunchpadLoginWith, self).setUp() + super().setUp() self.temp_dir = tempfile.mkdtemp() def tearDown(self): - super(TestLaunchpadLoginWith, self).tearDown() + super().tearDown() shutil.rmtree(self.temp_dir) def test_dirs_created(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/src/launchpadlib/uris.py new/launchpadlib-2.0.0/src/launchpadlib/uris.py --- old/launchpadlib-1.11.0/src/launchpadlib/uris.py 2021-11-05 23:40:06.000000000 +0100 +++ new/launchpadlib-2.0.0/src/launchpadlib/uris.py 2024-07-17 11:31:21.000000000 +0200 @@ -20,18 +20,15 @@ "https://api.staging.launchpad.net/". """ -__metaclass__ = type __all__ = [ "lookup_service_root", "lookup_web_root", "web_root_for_service_root", ] -try: - from urllib.parse import urlparse -except ImportError: - from urlparse import urlparse +from urllib.parse import urlparse import warnings + from lazr.uri import URI LPNET_SERVICE_ROOT = "https://api.launchpad.net/" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/src/launchpadlib.egg-info/PKG-INFO new/launchpadlib-2.0.0/src/launchpadlib.egg-info/PKG-INFO --- old/launchpadlib-1.11.0/src/launchpadlib.egg-info/PKG-INFO 2023-01-09 10:52:29.000000000 +0100 +++ new/launchpadlib-2.0.0/src/launchpadlib.egg-info/PKG-INFO 2024-07-19 12:44:38.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: launchpadlib -Version: 1.11.0 +Version: 2.0.0 Summary: Script Launchpad through its web services interfaces. Officially supported. Home-page: https://help.launchpad.net/API/launchpadlib Download-URL: https://launchpad.net/launchpadlib/+download @@ -27,11 +27,22 @@ Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 +Requires-Python: >=3.5 +License-File: COPYING.txt +Requires-Dist: httplib2 +Requires-Dist: importlib-metadata; python_version < "3.8" +Requires-Dist: lazr.restfulclient>=0.14.2 +Requires-Dist: lazr.uri Provides-Extra: keyring +Requires-Dist: keyring; extra == "keyring" Provides-Extra: docs +Requires-Dist: Sphinx; extra == "docs" Provides-Extra: testing +Requires-Dist: testresources; extra == "testing" +Requires-Dist: wadllib; extra == "testing" Provides-Extra: test -License-File: COPYING.txt +Requires-Dist: coverage; extra == "test" +Requires-Dist: pytest; extra == "test" .. This file is part of launchpadlib. @@ -58,6 +69,10 @@ NEWS for launchpadlib ===================== +2.0.0 (2024-07-19) +================== +- Remove support for Python 2. + 1.11.0 (2023-01-09) =================== - Move the ``keyring`` dependency to a new ``keyring`` extra. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/launchpadlib-1.11.0/src/launchpadlib.egg-info/requires.txt new/launchpadlib-2.0.0/src/launchpadlib.egg-info/requires.txt --- old/launchpadlib-1.11.0/src/launchpadlib.egg-info/requires.txt 2023-01-09 10:52:29.000000000 +0100 +++ new/launchpadlib-2.0.0/src/launchpadlib.egg-info/requires.txt 2024-07-19 12:44:38.000000000 +0200 @@ -1,7 +1,6 @@ httplib2 lazr.restfulclient>=0.14.2 lazr.uri -six [:python_version < "3.8"] importlib-metadata @@ -16,9 +15,6 @@ coverage pytest -[test:python_version < "3"] -mock - [testing] testresources wadllib