[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#927183: marked as done ([pre-approval] unblock: debiancontributors/0.7.8-1)



Your message dated Wed, 17 Apr 2019 04:49:00 +0000
with message-id <6f7b33a9-c8ed-b7a3-eeb6-18ac2e5d8cea@thykier.net>
and subject line Re: Bug#927183: [pre-approval] unblock: debiancontributors/0.7.8-1
has caused the Debian Bug report #927183,
regarding [pre-approval] unblock: debiancontributors/0.7.8-1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
927183: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=927183
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Hello!

This is a pre-approval to unblock package debiancontributors 0.7.8-1

debiancontributors is a package used internally by our infra team and this
upload would fix some simple but important bugs, in particular:

https://salsa.debian.org/python-team/modules/python-debiancontributors/commit/51adfafa4ee8cb58fc4d651ec99b6f46a83f02d5

https://salsa.debian.org/python-team/modules/python-debiancontributors/commit/b41908ea65e6a550438f90339c29ea2a3feda718

The first one (workaround for #801506) is the most important one:
python-requests can't support (for now) 100-Continue response.

The debdiff against the package in testing is attached. Thanks for considering
this pre-approval.

unblock debiancontributors/0.7.8-1

-- System Information:
Debian Release: buster/sid
  APT prefers testing
  APT policy: (900, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 4.19.0-4-amd64 (SMP w/4 CPU cores)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL
set to en_US.UTF-8), LANGUAGE=en_US:en (charmap=UTF-8) (ignored: LC_ALL set to
en_US.UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
diff -Nru debiancontributors-0.7.7/dc-tool debiancontributors-0.7.8/dc-tool
--- debiancontributors-0.7.7/dc-tool	2018-02-14 15:33:56.000000000 +0100
+++ debiancontributors-0.7.8/dc-tool	2019-04-16 01:24:06.000000000 +0200
@@ -26,6 +26,7 @@
 import argparse
 import logging
 
+
 def read_json_sources(source_name, pathnames):
     import debiancontributors as dc
     # Read JSON data, parsing it to validate it
@@ -50,6 +51,7 @@
         submission = dc.Submission.from_json(source_name, sys.stdin)
     return submission
 
+
 if __name__ == "__main__":
     parser = argparse.ArgumentParser()
     parser.add_argument("--debug", help="enable debugging output", action="store_true")
@@ -95,8 +97,10 @@
             sys.exit(1)
 
     # Override auth_token and baseurl from commandline if requested
-    if args.auth_token: submission.set_auth_token(args.auth_token)
-    if args.baseurl: submission.baseurl = args.baseurl
+    if args.auth_token:
+        submission.set_auth_token(args.auth_token)
+    if args.baseurl:
+        submission.baseurl = args.baseurl
 
     if args.post:
         success, details = submission.post()
diff -Nru debiancontributors-0.7.7/debian/changelog debiancontributors-0.7.8/debian/changelog
--- debiancontributors-0.7.7/debian/changelog	2018-02-14 14:27:21.000000000 +0100
+++ debiancontributors-0.7.8/debian/changelog	2019-04-16 02:27:01.000000000 +0200
@@ -1,3 +1,12 @@
+debiancontributors (0.7.8-1) unstable; urgency=medium
+
+  * New upstream release.
+  * Update to use my debian.org mail address.
+  * debian/control
+    - Bump Standards-Version to 4.3.0 (no changes needed).
+
+ -- Daniele Tricoli <eriol@debian.org>  Tue, 16 Apr 2019 02:27:01 +0200
+
 debiancontributors (0.7.7-1) unstable; urgency=medium
 
   * Team upload.
diff -Nru debiancontributors-0.7.7/debian/control debiancontributors-0.7.8/debian/control
--- debiancontributors-0.7.7/debian/control	2018-02-14 14:27:21.000000000 +0100
+++ debiancontributors-0.7.8/debian/control	2019-04-16 02:27:01.000000000 +0200
@@ -1,6 +1,6 @@
 Source: debiancontributors
 Maintainer: Debian Python Modules Team <python-modules-team@lists.alioth.debian.org>
-Uploaders: Enrico Zini <enrico@debian.org>, Daniele Tricoli <eriol@mornie.org>
+Uploaders: Enrico Zini <enrico@debian.org>, Daniele Tricoli <eriol@debian.org>
 Section: python
 Priority: optional
 Build-Depends: debhelper (>= 11),
@@ -14,7 +14,7 @@
                python3-six,
                python3-debian
 Build-Depends-Indep: help2man
-Standards-Version: 4.1.3
+Standards-Version: 4.3.0
 Homepage: https://salsa.debian.org/python-team/modules/python-debiancontributors
 Vcs-Git: https://salsa.debian.org/python-team/modules/python-debiancontributors.git
 Vcs-Browser: https://salsa.debian.org/python-team/modules/python-debiancontributors
diff -Nru debiancontributors-0.7.7/debian/copyright debiancontributors-0.7.8/debian/copyright
--- debiancontributors-0.7.7/debian/copyright	2018-02-14 14:27:21.000000000 +0100
+++ debiancontributors-0.7.8/debian/copyright	2019-04-16 02:27:01.000000000 +0200
@@ -9,7 +9,7 @@
 
 Files: debian/*
 Copyright: 2013, Enrico Zini <enrico@debian.org>
-           2016, Daniele Tricoli <eriol@mornie.org>
+           2016, Daniele Tricoli <eriol@debian.org>
 License: LGPL-3+
 
 License: LGPL-3+
diff -Nru debiancontributors-0.7.7/debian/rules debiancontributors-0.7.8/debian/rules
--- debiancontributors-0.7.7/debian/rules	2018-02-14 14:27:21.000000000 +0100
+++ debiancontributors-0.7.8/debian/rules	2019-04-16 02:27:01.000000000 +0200
@@ -24,4 +24,3 @@
 	      exit 1 ; \
 	fi
 	gbp buildpackage --git-debian-branch=backport -S -us -uc
-
diff -Nru debiancontributors-0.7.7/debiancontributors/parser.py debiancontributors-0.7.8/debiancontributors/parser.py
--- debiancontributors-0.7.7/debiancontributors/parser.py	2018-02-14 15:33:56.000000000 +0100
+++ debiancontributors-0.7.8/debiancontributors/parser.py	2019-04-16 01:24:06.000000000 +0200
@@ -25,6 +25,7 @@
 import io
 import six
 
+
 class Fail(BaseException):
     """
     Exception raised when a validation or lookup fails
@@ -33,6 +34,7 @@
         self.code = code
         self.msg = msg
 
+
 class ClusterFail(Fail):
     """
     Exception raised to report a number of errors of the same kind
@@ -41,6 +43,7 @@
         super(ClusterFail, self).__init__(code, msg)
         self.errors = errors
 
+
 def get_key(d, key):
     "Get a key from a dict"
     try:
@@ -48,6 +51,7 @@
     except KeyError:
         raise Fail(400, "Key '{}' not found".format(key))
 
+
 def get_key_int(d, key):
     "Get a key from a dict, as an int"
     try:
@@ -55,11 +59,13 @@
     except ValueError:
         raise Fail(400, "Key '{}' does not contain an integer value".format(key))
 
+
 def get_key_string(d, key, empty=False):
     "Get a key from a dict, as a string"
     if empty:
         res = d.get(key, "")
-        if not res: return ""
+        if not res:
+            return ""
     else:
         res = get_key(d, key)
 
@@ -73,11 +79,13 @@
 
     return res
 
+
 def get_key_unicode(d, key, empty=False):
     "Get a key from a dict, as a unicode, decoded from utf8 if necessary"
     if empty:
         res = d.get(key, "")
-        if not res: return ""
+        if not res:
+            return ""
     else:
         res = get_key(d, key)
         if not res:
@@ -94,6 +102,7 @@
         escaped = res.decode(encoding="utf8", errors="replace")
         raise Fail(400, "Key '{}' contain {} which is not a valid UTF8 string".format(key, escaped))
 
+
 def get_key_sequence(d, key):
     "Get a key from a dict, ensuring it is a list or tuple"
     res = get_key(d, key)
@@ -101,6 +110,7 @@
         raise Fail(400, "Key '{}' does not contain an array".format(key))
     return res
 
+
 def get_key_sequence_or_object(d, key):
     """
     Get a key from a dict, ensuring it is a list or tuple, allowing singleton
@@ -114,16 +124,19 @@
     else:
         raise Fail(400, "Key '{}' does not contain an array or object".format(key))
 
+
 def get_key_date_or_none(d, key):
     "Get a key from a dict, as a date, allowing None"
     res = get_key_string(d, key, empty=True)
-    if not res: return None
+    if not res:
+        return None
 
     try:
         return datetime.datetime.strptime(res, "%Y-%m-%d").date()
     except ValueError:
         raise Fail(400, "Key '{}' does not contain a YYYY-MM-DD date".format(key))
 
+
 def get_json(f, compression=None):
     """
     Parse JSON from data from a file-like object, with optional decompression
@@ -222,11 +235,11 @@
                 s_contribs = [self.parse_contribution(d)
                               for d in get_key_sequence_or_object(rec, "contributions")]
             except Fail as f:
-                errors.append("#{} for {}: cannot parse contribution(s): {}".format(idx, s_id[0].id, f.msg))
+                errors.append("#{} for {}: cannot parse contribution(s): {}".format(idx, s_ids[0].id, f.msg))
                 continue
 
             if not s_contribs:
-                errors.append("#{} for {}: contribution list is empty".format(idx, s_id[0].id))
+                errors.append("#{} for {}: contribution list is empty".format(idx, s_ids[0].id))
                 continue
 
             yield s_ids, s_contribs
diff -Nru debiancontributors-0.7.7/debiancontributors/scanners/utils/bts.py debiancontributors-0.7.8/debiancontributors/scanners/utils/bts.py
--- debiancontributors-0.7.7/debiancontributors/scanners/utils/bts.py	2018-02-14 15:33:56.000000000 +0100
+++ debiancontributors-0.7.8/debiancontributors/scanners/utils/bts.py	2019-04-16 01:24:06.000000000 +0200
@@ -19,7 +19,7 @@
 from __future__ import absolute_import
 from __future__ import division
 from __future__ import unicode_literals
-from ...submission import Identifier, Contribution
+from ...types import Identifier, Contribution
 import os
 import os.path
 import datetime
diff -Nru debiancontributors-0.7.7/debiancontributors/scanners/utils/filesystem.py debiancontributors-0.7.8/debiancontributors/scanners/utils/filesystem.py
--- debiancontributors-0.7.7/debiancontributors/scanners/utils/filesystem.py	2018-02-14 15:33:56.000000000 +0100
+++ debiancontributors-0.7.8/debiancontributors/scanners/utils/filesystem.py	2019-04-16 01:24:06.000000000 +0200
@@ -19,7 +19,7 @@
 from __future__ import absolute_import
 from __future__ import division
 from __future__ import unicode_literals
-from ...submission import Identifier
+from ...types import Identifier
 from .mine import Aggregate
 import os
 import os.path
diff -Nru debiancontributors-0.7.7/debiancontributors/submission.py debiancontributors-0.7.8/debiancontributors/submission.py
--- debiancontributors-0.7.7/debiancontributors/submission.py	2018-02-14 15:33:56.000000000 +0100
+++ debiancontributors-0.7.8/debiancontributors/submission.py	2019-04-16 01:24:06.000000000 +0200
@@ -20,7 +20,7 @@
 from __future__ import division
 from __future__ import unicode_literals
 from collections import defaultdict
-from .types import *
+from .types import Contribution
 import sys
 import os
 import io
@@ -31,6 +31,7 @@
 
 DEFAULT_BASE_URL = "https://contributors.debian.org/";
 
+
 class Submission(object):
     """
     A submission to contributors.debian.org
@@ -109,7 +110,7 @@
         for ident, contributions in self.entries.items():
             yield {
                 "id": (ident.to_json(),),
-                "contributions": [ c.to_json() for c in contributions.values() ],
+                "contributions": [c.to_json() for c in contributions.values()],
             }
 
     def to_json(self, file=None, indent=None):
@@ -158,7 +159,6 @@
 
         # Build the POST request to contributors.debian.org
         url = urljoin(self.baseurl, '/contributors/post')
-        #print("Posting to '{}'...".format(url))
 
         # Prepare the file to post
         try:
@@ -168,6 +168,7 @@
         except ImportError:
             import gzip
             compress_type = "gzip"
+
             def compress(data):
                 out = io.BytesIO()
                 with gzip.GzipFile(mode="wb", fileobj=out) as fd:
@@ -197,8 +198,14 @@
             args["verify"] = "/etc/ssl/ca-debian/ca-certificates.crt"
         else:
             args["verify"] = True
+
+        session = requests.Session()
         try:
-            res = requests.post(url, **args)
+            # Do a GET before the POST, to do HTTPS negotiation without a huge
+            # payload. See #801506
+            res = session.get(url)
+            res.raise_for_status()
+            res = session.post(url, **args)
             res.raise_for_status()
         except requests.ConnectionError as e:
             return False, {
@@ -211,7 +218,7 @@
             try:
                 parsed = json.loads(res.text)
                 errors = parsed["errors"]
-            except:
+            except Exception:
                 errors = []
             return False, {
                 "code": None,
@@ -248,10 +255,11 @@
         parser = Parser()
         for ids, contribs in parser.parse_submission(data):
             for i in ids:
-                res.entries[i] = { c.type: c for c in contribs }
+                res.entries[i] = {c.type: c for c in contribs}
 
         return res
 
+
 def merge_contrib_dicts(d1, d2):
     """
     Merge two dicts of contributions from the same identifier.
diff -Nru debiancontributors-0.7.7/debiancontributors/types.py debiancontributors-0.7.8/debiancontributors/types.py
--- debiancontributors-0.7.7/debiancontributors/types.py	2018-02-14 15:33:56.000000000 +0100
+++ debiancontributors-0.7.8/debiancontributors/types.py	2019-04-16 01:24:06.000000000 +0200
@@ -25,18 +25,21 @@
 
 __all__ = ["Identifier", "Contribution"]
 
+
 class Identifier(object):
     """
     Information about a user identifier
     """
+    __slots__ = ("type", "id", "desc")
+
     # Validator regexps
     TYPE_VALIDATORS = {
         "login": re.compile(r"^[a-z0-9._-]+$"),
         # From http://www.regular-expressions.info/email.html
-        "email": re.compile(r"^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$", re.I),
+        "email": re.compile(r"^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}", re.I),
         "fpr": re.compile(r"^[A-F0-9]{32,40}$"),
         "url": re.compile(r"^https?://"),
-        #"wiki": re.compile("^[A-Za-z]+$"),
+        # "wiki": re.compile("^[A-Za-z]+$"),
     }
 
     def __init__(self, type, id, desc=None):
@@ -49,7 +52,7 @@
 
     def __eq__(self, other):
         return (self.type == other.type
-            and self.id == other.id)
+                and self.id == other.id)
 
     def to_json(self):
         """
@@ -123,11 +126,12 @@
         raise ValueError("cannot infer a valid Identifier from '{}'".format(s))
 
 
-
 class Contribution(object):
     """
     Information about a contribution.
     """
+    __slots__ = ("type", "begin", "end", "url")
+
     def __init__(self, type, begin=None, end=None, url=None):
         """
         type: contribution type (as configured in contrbutors.debian.org for a
@@ -147,8 +151,8 @@
 
     def __eq__(self, other):
         return (self.type == other.type
-            and self.begin == other.begin
-            and self.end == other.end)
+                and self.begin == other.begin
+                and self.end == other.end)
 
     def extend_by_date(self, date):
         """
@@ -171,10 +175,13 @@
         """
         Return a JSON-serializable structure for this contribution
         """
-        res = { "type": self.type }
-        if self.begin: res["begin"] = self.begin.strftime("%Y-%m-%d")
-        if self.end: res["end"] = self.end.strftime("%Y-%m-%d")
-        if self.url: res["url"] = self.url
+        res = {"type": self.type}
+        if self.begin:
+            res["begin"] = self.begin.strftime("%Y-%m-%d")
+        if self.end:
+            res["end"] = self.end.strftime("%Y-%m-%d")
+        if self.url:
+            res["url"] = self.url
         return res
 
     @classmethod
@@ -212,7 +219,8 @@
         if not isinstance(self.type, six.string_types):
             raise Fail(400, "Contribution type is '{}' instead of a string".format(type(self.type)))
         if self.begin is not None and not hasattr(self.begin, "strftime"):
-            raise Fail(400, "Contribution begin is '{}' and does not look like a date or datetime".format(type(self.begin)))
+            raise Fail(400, "Contribution begin is '{}' and does not look like a date or datetime".format(
+                type(self.begin)))
         if self.end is not None and not hasattr(self.end, "strftime"):
             raise Fail(400, "Contribution end is '{}' and does not look like a date or datetime".format(type(self.end)))
         if self.url is not None and not isinstance(self.url, six.string_types):
diff -Nru debiancontributors-0.7.7/.gitignore debiancontributors-0.7.8/.gitignore
--- debiancontributors-0.7.7/.gitignore	1970-01-01 01:00:00.000000000 +0100
+++ debiancontributors-0.7.8/.gitignore	2019-04-16 01:24:06.000000000 +0200
@@ -0,0 +1,3 @@
+*.swp
+*.pyc
+MANIFEST
diff -Nru debiancontributors-0.7.7/PKG-INFO debiancontributors-0.7.8/PKG-INFO
--- debiancontributors-0.7.7/PKG-INFO	2018-02-14 15:54:45.000000000 +0100
+++ debiancontributors-0.7.8/PKG-INFO	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
-Metadata-Version: 1.1
-Name: debiancontributors
-Version: 0.7.7
-Summary: Manage submissions to contributors.debian.org
-Home-page: https://salsa.debian.org/python-team/modules/python-debiancontributors
-Author: ['Enrico Zini']
-Author-email: ['enrico@debian.org']
-License: http://www.gnu.org/licenses/lgpl-3.0.html
-Description: UNKNOWN
-Platform: UNKNOWN
-Requires: requests (>=2.0.0)
diff -Nru debiancontributors-0.7.7/setup.py debiancontributors-0.7.8/setup.py
--- debiancontributors-0.7.7/setup.py	2018-02-14 15:33:56.000000000 +0100
+++ debiancontributors-0.7.8/setup.py	2019-04-16 01:24:06.000000000 +0200
@@ -25,14 +25,14 @@
     scripts = ['dc-tool']
 
 setup(
-    name = "debiancontributors",
+    name="debiancontributors",
     requires=['requests (>=2.0.0)'],
-    version = "0.7.7",
-    description = "Manage submissions to contributors.debian.org",
-    author = ["Enrico Zini"],
-    author_email = ["enrico@debian.org"],
-    url = "https://salsa.debian.org/python-team/modules/python-debiancontributors";,
-    license = "http://www.gnu.org/licenses/lgpl-3.0.html";,
-    packages = ["debiancontributors", "debiancontributors.scanners", "debiancontributors.scanners.utils"],
+    version="0.7.8",
+    description="Manage submissions to contributors.debian.org",
+    author=["Enrico Zini"],
+    author_email=["enrico@debian.org"],
+    url="https://salsa.debian.org/python-team/modules/python-debiancontributors";,
+    license="http://www.gnu.org/licenses/lgpl-3.0.html";,
+    packages=["debiancontributors", "debiancontributors.scanners", "debiancontributors.scanners.utils"],
     scripts=scripts,
 )

Attachment: signature.asc
Description: OpenPGP digital signature


--- End Message ---
--- Begin Message ---
Daniele Tricoli:
> tag 927183 - moreinfo
> thanks
> 
> Hello Niels,
> 
> On 16/04/2019 07:40, Niels Thykier wrote:
>> Please go ahead with the upload and remove the moreinfo tag when the
>> upload is ready to be unblocked.
> 
> Many thanks for your quick review!
> 
>> For future reference: Please avoid generic code-style
>> rewrite/refactoring during freezes (and instead deploy it after the
>> freeze).  In the particular instance, it was manageable to review but
>> most of the was "noise" due to that refactoring - this in turn increases
>> the risk that the proposal is rejected.
> 
> Thanks for the suggestion, and sorry for the added "noise". I will
> 
> coordinate better next time: the code-style/refactoring was done several months
> 
> ago, but we (me and Enrico) did not make a release of debiancontributors before
> 
> the freeze.
> 
> Next time I will remember that it's better to release before the freeze because
> 
> it can happen to need to push a new release during the freeze for some important
> 
> fixes.
> 
> Thanks again and kind regards,
> 

Unblocked, thanks.
~Niels

--- End Message ---

Reply to: