Hello community,

here is the log from the commit of package python-pkginfo for openSUSE:Factory 
checked in at 2019-06-27 15:53:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pkginfo (Old)
 and      /work/SRC/openSUSE:Factory/.python-pkginfo.new.4615 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pkginfo"

Thu Jun 27 15:53:42 2019 rev:5 rq:711153 version:1.5.0.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pkginfo/python-pkginfo.changes    
2018-12-24 11:46:28.721181942 +0100
+++ /work/SRC/openSUSE:Factory/.python-pkginfo.new.4615/python-pkginfo.changes  
2019-06-27 15:53:43.563968668 +0200
@@ -1,0 +2,11 @@
+Wed Jun 19 12:59:08 UTC 2019 - pgaj...@suse.com
+
+- version update to 1.5.0.1
+  * Fix broken 'sdist'. LP #1639585.
+  * Fix 'console_scripts' entry point syntax. LP #1810734.
+  * Add support for JSON output from the CLI.
+  * Add support for installed wheels.  E.g., 'dist-info/' dirs.
+  * Add support for Python 3.6 and 3.7.
+  * Drop support for Python 3.3.
+
+-------------------------------------------------------------------

Old:
----
  pkginfo-1.4.2.tar.gz

New:
----
  pkginfo-1.5.0.1.tar.gz

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

Other differences:
------------------
++++++ python-pkginfo.spec ++++++
--- /var/tmp/diff_new_pack.Nyq3w1/_old  2019-06-27 15:53:44.007969356 +0200
+++ /var/tmp/diff_new_pack.Nyq3w1/_new  2019-06-27 15:53:44.011969362 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-pkginfo
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,10 +17,8 @@
 
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
-# Tests are currently broken.
-%bcond_without tests
 Name:           python-pkginfo
-Version:        1.4.2
+Version:        1.5.0.1
 Release:        0
 Summary:        Python package for querying metadatdata from 
sdists/bdists/installed packages
 License:        MIT
@@ -32,10 +30,12 @@
 BuildRequires:  python-rpm-macros
 Requires(post): update-alternatives
 Requires(preun): update-alternatives
+Requires:       python-setuptools
 BuildArch:      noarch
-%if %{with tests}
+# SECTION test requirements
 BuildRequires:  %{python_module nose}
-%endif
+BuildRequires:  %{python_module pytest}
+# /SECTION
 %python_subpackages
 
 %description
@@ -49,8 +49,7 @@
 %prep
 %setup -q -n pkginfo-%{version}
 # fix tests until fixed upstream
-sed -i 's|1\.1|2.1|' pkginfo/tests/__init__.py
-sed -i "s|'1\.1'|None|" pkginfo/tests/test_installed.py
+sed -i "s|'2\.1'|None|" pkginfo/tests/test_installed.py
 
 %build
 %python_build
@@ -60,12 +59,8 @@
 %python_expand %fdupes %{buildroot}%{$python_sitelib}
 %python_clone -a %{buildroot}%{_bindir}/pkginfo
 
-%if %{with tests}
 %check
-%{python_expand $python setup.py develop --user
-$python setup.py test -q
-}
-%endif
+%pytest
 
 %post
 %python_install_alternative pkginfo

++++++ pkginfo-1.4.2.tar.gz -> pkginfo-1.5.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/.coveragerc 
new/pkginfo-1.5.0.1/.coveragerc
--- old/pkginfo-1.4.2/.coveragerc       1970-01-01 01:00:00.000000000 +0100
+++ new/pkginfo-1.5.0.1/.coveragerc     2018-08-20 22:25:40.000000000 +0200
@@ -0,0 +1,3 @@
+[report]
+show_missing=1
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/CHANGES.txt 
new/pkginfo-1.5.0.1/CHANGES.txt
--- old/pkginfo-1.4.2/CHANGES.txt       2018-03-14 18:28:24.000000000 +0100
+++ new/pkginfo-1.5.0.1/CHANGES.txt     2019-01-08 22:30:22.000000000 +0100
@@ -1,6 +1,24 @@
 ``pkginfo`` Changelog
 =====================
 
+1.5.0.1 (2019-01-08)
+--------------------
+
+- Fix broken 'sdist'. LP #1639585.
+
+1.5.0 (2019-01-07)
+------------------
+
+- Fix 'console_scripts' entry point syntax. LP #1810734.
+
+- Add support for JSON output from the CLI.
+
+- Add support for installed wheels.  E.g., 'dist-info/' dirs.
+
+- Add support for Python 3.6 and 3.7.
+
+- Drop support for Python 3.3.
+
 1.4.2 (2018-03-14)
 ------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/PKG-INFO new/pkginfo-1.5.0.1/PKG-INFO
--- old/pkginfo-1.4.2/PKG-INFO  2018-03-14 18:34:34.000000000 +0100
+++ new/pkginfo-1.5.0.1/PKG-INFO        2019-01-08 22:31:51.000000000 +0100
@@ -1,12 +1,11 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
 Name: pkginfo
-Version: 1.4.2
+Version: 1.5.0.1
 Summary: Query metadatdata from sdists / bdists / installed packages.
 Home-page: https://code.launchpad.net/~tseaver/pkginfo/trunk
 Author: Tres Seaver, Agendaless Consulting
 Author-email: tsea...@agendaless.com
 License: MIT
-Description-Content-Type: UNKNOWN
 Description: ``pkginfo`` README
         ==================
         
@@ -25,6 +24,24 @@
         ``pkginfo`` Changelog
         =====================
         
+        1.5.0.1 (2019-01-08)
+        --------------------
+        
+        - Fix broken 'sdist'. LP #1639585.
+        
+        1.5.0 (2019-01-07)
+        ------------------
+        
+        - Fix 'console_scripts' entry point syntax. LP #1810734.
+        
+        - Add support for JSON output from the CLI.
+        
+        - Add support for installed wheels.  E.g., 'dist-info/' dirs.
+        
+        - Add support for Python 3.6 and 3.7.
+        
+        - Drop support for Python 3.3.
+        
         1.4.2 (2018-03-14)
         ------------------
         
@@ -269,10 +286,12 @@
 Classifier: License :: OSI Approved :: MIT License
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3.3
 Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
 Classifier: Topic :: System :: Software Distribution
+Provides-Extra: testing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/docs/conf.py 
new/pkginfo-1.5.0.1/docs/conf.py
--- old/pkginfo-1.4.2/docs/conf.py      2018-03-08 21:32:05.000000000 +0100
+++ new/pkginfo-1.5.0.1/docs/conf.py    2018-08-20 22:05:50.000000000 +0200
@@ -99,7 +99,7 @@
 # The style sheet to use for HTML and HTML Help pages. A file of that name
 # must exist either in Sphinx' static/ path, or in one of the custom paths
 # given in html_static_path.
-html_style = 'default.css'
+#html_style = 'default.css'
 
 # The name for this set of Sphinx documents.  If None, it defaults to
 # "<project> v<release> documentation".
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pkginfo-1.4.2/docs/examples/mypackage-0.1.dist-info/METADATA 
new/pkginfo-1.5.0.1/docs/examples/mypackage-0.1.dist-info/METADATA
--- old/pkginfo-1.4.2/docs/examples/mypackage-0.1.dist-info/METADATA    
1970-01-01 01:00:00.000000000 +0100
+++ new/pkginfo-1.5.0.1/docs/examples/mypackage-0.1.dist-info/METADATA  
2013-11-27 22:40:58.000000000 +0100
@@ -0,0 +1,15 @@
+Metadata-Version: 2.0
+Name: mypackage
+Version: 0.1
+Summary: UNKNOWN
+Home-page: http://pypi.python.org/pypi/pkginfo
+Author: Tres Seaver
+Author-email: tsea...@palladion.com
+License: UNKNOWN
+Platform: UNKNOWN
+Classifier: Development Status :: 4 - Beta
+Classifier: Environment :: Console (Text Based)
+
+UNKNOWN
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/pkginfo/commandline.py 
new/pkginfo-1.5.0.1/pkginfo/commandline.py
--- old/pkginfo-1.4.2/pkginfo/commandline.py    2018-03-08 21:45:50.000000000 
+0100
+++ new/pkginfo-1.5.0.1/pkginfo/commandline.py  2018-08-20 22:13:54.000000000 
+0200
@@ -10,8 +10,8 @@
 o a binary distribution:  in this case, 'path' should point to an existing
   archive file (.egg)
 
-o a "develop" checkout:  in ths case,  'path' should point to a directory
-  intialized via 'setup.py develop' (under setuptools).
+o a "develop" checkout:  in this case,  'path' should point to a directory
+  initialized via 'setup.py develop' (under setuptools).
 
 o an installed package:  in this case, 'path' should be the importable name
   of the package.
@@ -20,7 +20,9 @@
     from configparser import ConfigParser
 except ImportError:  # pragma: NO COVER
     from ConfigParser import ConfigParser
+from collections import OrderedDict
 from csv import writer
+import json
 import optparse
 import os
 import sys
@@ -82,6 +84,11 @@
                       help="Output as INI",
                       )
 
+    parser.add_option("--json", dest="output", action="store_const",
+                      const='json',
+                      help="Output as JSON",
+                      )
+
     options, args = parser.parse_args(args)
 
     if len(args)==0:
@@ -174,11 +181,32 @@
     def finish(self):
         self._parser.write(sys.stdout)  # pragma: NO COVER
 
+class JSON(Base):
+    _fields = None
+    def __init__(self, options):
+        super(JSON, self).__init__(options)
+        self._mapping = OrderedDict()
+
+    def __call__(self, meta):
+        if self._fields is None:
+            self._fields = list(meta)
+        for field in self._fields:
+            value = getattr(meta, field)
+            if value and not isinstance(value, (tuple, list)):
+                value = str(value)
+            if field in self._mapping:
+                raise ValueError('Duplicate field: %(field)r' % locals())
+            self._mapping[field] = value
+
+    def finish(self):
+        json.dump(self._mapping, sys.stdout, indent=2)
+
 _FORMATTERS = {
     'simple': Simple,
     'single': SingleLine,
     'csv': CSV,
     'ini': INI,
+    'json': JSON,
 }
 
 def main(args=None):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/pkginfo/develop.py 
new/pkginfo-1.5.0.1/pkginfo/develop.py
--- old/pkginfo-1.4.2/pkginfo/develop.py        2018-03-08 21:45:50.000000000 
+0100
+++ new/pkginfo-1.5.0.1/pkginfo/develop.py      2018-08-20 22:05:50.000000000 
+0200
@@ -1,3 +1,4 @@
+import io
 import os
 import sys
 import warnings
@@ -40,6 +41,6 @@
         for candidate in candidates:
             path = os.path.join(candidate, 'PKG-INFO')
             if os.path.exists(path):
-                with open(path) as f:
+                with io.open(path, errors='ignore') as f:
                     return f.read()
         warnings.warn('No PKG-INFO found for path: %s' % self.path)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/pkginfo/installed.py 
new/pkginfo-1.5.0.1/pkginfo/installed.py
--- old/pkginfo-1.4.2/pkginfo/installed.py      2018-03-08 21:45:50.000000000 
+0100
+++ new/pkginfo-1.5.0.1/pkginfo/installed.py    2018-08-20 22:05:50.000000000 
+0200
@@ -1,4 +1,5 @@
 import glob
+import io
 import os
 import sys
 import warnings
@@ -48,6 +49,6 @@
                     else:
                         path = candidate
                     if os.path.exists(path):
-                        with open(path) as f:
+                        with io.open(path, errors='ignore') as f:
                             return f.read()
         warnings.warn('No PKG-INFO found for package: %s' % self.package_name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/pkginfo/sdist.py 
new/pkginfo-1.5.0.1/pkginfo/sdist.py
--- old/pkginfo-1.4.2/pkginfo/sdist.py  2018-03-08 21:45:50.000000000 +0100
+++ new/pkginfo-1.5.0.1/pkginfo/sdist.py        2018-08-20 22:05:50.000000000 
+0200
@@ -1,3 +1,4 @@
+import io
 import os
 import tarfile
 import zipfile
@@ -66,7 +67,8 @@
 
     def read(self):
         try:
-            with open(os.path.join(self.filename, 'PKG-INFO')) as f:
+            pkg_info = os.path.join(self.filename, 'PKG-INFO')
+            with io.open(pkg_info, errors='ignore') as f:
                 return f.read()
         except Exception as e:
             raise ValueError('Could not load %s as an unpacked sdist: %s'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/pkginfo/tests/__init__.py 
new/pkginfo-1.5.0.1/pkginfo/tests/__init__.py
--- old/pkginfo-1.4.2/pkginfo/tests/__init__.py 2018-03-08 21:32:05.000000000 
+0100
+++ new/pkginfo-1.5.0.1/pkginfo/tests/__init__.py       2018-08-20 
22:20:07.000000000 +0200
@@ -21,9 +21,10 @@
       'License :: OSI Approved :: MIT License',
       'Operating System :: OS Independent',
       'Programming Language :: Python :: 2.7',
-      'Programming Language :: Python :: 3.3',
       'Programming Language :: Python :: 3.4',
       'Programming Language :: Python :: 3.5',
+      'Programming Language :: Python :: 3.6',
+      'Programming Language :: Python :: 3.7',
       'Programming Language :: Python :: Implementation :: CPython',
       'Programming Language :: Python :: Implementation :: PyPy',
       'Topic :: Software Development :: Libraries :: Python Modules',
@@ -32,7 +33,4 @@
 
 
 def _defaultMetadataVersion():
-    import sys
-    if sys.version_info[:2] > (2, 6):
-        return '1.1'
-    return '1.0'
+    return '2.1'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/pkginfo/tests/test_commandline.py 
new/pkginfo-1.5.0.1/pkginfo/tests/test_commandline.py
--- old/pkginfo-1.4.2/pkginfo/tests/test_commandline.py 2018-03-08 
21:32:05.000000000 +0100
+++ new/pkginfo-1.5.0.1/pkginfo/tests/test_commandline.py       2018-08-20 
22:13:54.000000000 +0200
@@ -196,6 +196,62 @@
         self.assertEqual(cp.get('foo-0.1', 'foo'), 'Foo')
         self.assertEqual(cp.get('foo-0.1', 'bar'), 'Bar1\n\tBar2')
 
+class JSONtests(unittest.TestCase, _FormatterBase):
+
+    def _getTargetClass(self):
+        from pkginfo.commandline import JSON
+        return JSON
+
+    def _makeOne(self, options):
+        return self._getTargetClass()(options)
+
+    def test___call___duplicate_with_meta_and_fields(self):
+        json = self._makeOne(_Options(fields=('name',)))
+        meta = _Meta(name='foo', version='0.1', foo='Foo')
+        json._mapping['name'] = 'foo'
+        self.assertRaises(ValueError, json, meta)
+
+    def test___call___duplicate_with_meta_wo_fields(self):
+        json = self._makeOne(_Options(fields=None))
+        meta = _Meta(name='foo', version='0.1', foo='Foo')
+        json._mapping['name'] = 'foo'
+        self.assertRaises(ValueError, json, meta)
+
+    def test___call___wo_fields_wo_list(self):
+        from collections import OrderedDict
+
+        json = self._makeOne(_Options(fields=None))
+        meta = _Meta(name='foo', version='0.1', foo='Foo')
+        json(meta)
+        expected = OrderedDict([
+            ('foo', 'Foo'), ('name', 'foo'), ('version', '0.1')])
+        self.assertEqual(expected, json._mapping)
+
+    def test___call___w_fields_w_list(self):
+        from collections import OrderedDict
+
+        json = self._makeOne(_Options(fields=('foo', 'bar')))
+        meta = _Meta(name='foo', version='0.1',
+                     foo='Foo', bar=['Bar1', 'Bar2'], baz='Baz')
+        json(meta)
+        expected = OrderedDict([
+            ('foo', 'Foo'), ('bar', ['Bar1', 'Bar2'])])
+        self.assertEqual(expected, json._mapping)
+
+    def test___call___output(self):
+        from collections import OrderedDict
+        import json as json_parser
+
+        json = self._makeOne(_Options(fields=None))
+        meta = _Meta(name='foo', version='0.1', foo='Foo')
+        json(meta)
+        output = self._capture_output(json.finish)
+        output = json_parser.loads(
+            output, object_pairs_hook=OrderedDict)
+        expected = OrderedDict([
+            ('foo', 'Foo'), ('name', 'foo'), ('version', '0.1')])
+        self.assertEqual(expected, output)
+
 class Test_main(unittest.TestCase):
 
     def _callFUT(self, args, monkey='simple'):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/pkginfo/tests/test_installed.py 
new/pkginfo-1.5.0.1/pkginfo/tests/test_installed.py
--- old/pkginfo-1.4.2/pkginfo/tests/test_installed.py   2018-03-08 
21:32:05.000000000 +0100
+++ new/pkginfo-1.5.0.1/pkginfo/tests/test_installed.py 2018-08-20 
22:05:50.000000000 +0200
@@ -53,7 +53,7 @@
             self.assertEqual(installed.package, types)
             self.assertEqual(installed.package_name, 'types')
             if sys.version_info[:2] >= (3, 3):
-                self.assertEqual(installed.metadata_version, '1.1')
+                self.assertEqual(installed.metadata_version, '2.1')
             else:
                 self.assertEqual(installed.metadata_version, None)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/pkginfo/tests/test_wheel.py 
new/pkginfo-1.5.0.1/pkginfo/tests/test_wheel.py
--- old/pkginfo-1.4.2/pkginfo/tests/test_wheel.py       2018-03-08 
21:32:05.000000000 +0100
+++ new/pkginfo-1.5.0.1/pkginfo/tests/test_wheel.py     2018-08-20 
22:48:14.000000000 +0200
@@ -52,6 +52,16 @@
         self._checkSample(wheel, filename)
         self._checkClassifiers(wheel)
 
+    def test_ctor_w_installed_wheel(self):
+        import os
+        d, _ = os.path.split(__file__)
+        filename = (
+            '%s/../../docs/examples/mypackage-0.1.dist-info') % d
+        wheel = self._makeOne(filename)
+        self.assertEqual(wheel.metadata_version, '2.0')
+        self._checkSample(wheel, filename)
+        self._checkClassifiers(wheel)
+
     def test_ctor_w_valid_wheel_and_metadata_version(self):
         import os
         d, _ = os.path.split(__file__)
@@ -62,3 +72,25 @@
         self._checkSample(wheel, filename)
         self._checkClassifiers(wheel)
 
+    def test_ctor_w_valid_installed_wheel(self):
+        import os
+        import shutil
+        import tempfile
+        import zipfile
+
+        d, _ = os.path.split(__file__)
+        filename = ('%s/../../docs/examples/'
+                    'mypackage-0.1-cp26-none-linux_x86_64.whl') % d
+
+        try:
+            # note: we mock a wheel installation by unzipping
+            test_dir = tempfile.mkdtemp()
+            with zipfile.ZipFile(filename) as zipf:
+                zipf.extractall(test_dir)
+            wheel = self._makeOne(filename)
+            self.assertEqual(wheel.metadata_version, '2.0')
+            self._checkSample(wheel, filename)
+            self._checkClassifiers(wheel)
+        finally:
+            if os.path.exists(test_dir):
+                shutil.rmtree(test_dir)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/pkginfo/utils.py 
new/pkginfo-1.5.0.1/pkginfo/utils.py
--- old/pkginfo-1.4.2/pkginfo/utils.py  2018-03-08 21:45:50.000000000 +0100
+++ new/pkginfo-1.5.0.1/pkginfo/utils.py        2018-08-20 22:06:26.000000000 
+0200
@@ -52,6 +52,11 @@
 
     if os.path.isdir(path_or_module):
         try:
+            return Wheel(path_or_module, metadata_version)
+        except (ValueError, IOError): #pragma NO COVER
+            pass
+
+        try:
             return Develop(path_or_module, metadata_version)
         except (ValueError, IOError): #pragma NO COVER
             pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/pkginfo/wheel.py 
new/pkginfo-1.5.0.1/pkginfo/wheel.py
--- old/pkginfo-1.4.2/pkginfo/wheel.py  2018-03-08 21:35:58.000000000 +0100
+++ new/pkginfo-1.5.0.1/pkginfo/wheel.py        2018-08-20 22:50:49.000000000 
+0200
@@ -1,8 +1,11 @@
+import io
 import os
 import zipfile
 
 
 from .distribution import Distribution
+from .distribution import must_decode
+from .distribution import parse
 
 
 class Wheel(Distribution):
@@ -23,8 +26,21 @@
 
             def read_file(name):
                 return archive.read(name)
+
+            close = archive.close
+
+        elif fqn.endswith('.dist-info'):
+            names = [os.path.join(fqn, p) for p in os.listdir(fqn)]
+
+            def read_file(name):
+                with io.open(name, mode='rb') as inf:
+                    return inf.read()
+
+            close = lambda : None
+
         else:
-            raise ValueError('Not a known archive format: %s' % fqn)
+            raise ValueError('Not a known wheel archive format or '
+                             'installed .dist-info: %s' % fqn)
 
         try:
             tuples = [x.split('/') for x in names if 'METADATA' in x]
@@ -35,6 +51,12 @@
                 if b'Metadata-Version' in data:
                     return data
         finally:
-            archive.close()
+            close()
 
         raise ValueError('No METADATA in archive: %s' % fqn)
+
+    def parse(self, data):
+        super(Wheel, self).parse(data)
+        fp = io.StringIO(must_decode(data))
+        msg = parse(fp)
+        self.description = msg.get_payload()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/pkginfo.egg-info/PKG-INFO 
new/pkginfo-1.5.0.1/pkginfo.egg-info/PKG-INFO
--- old/pkginfo-1.4.2/pkginfo.egg-info/PKG-INFO 2018-03-14 18:34:34.000000000 
+0100
+++ new/pkginfo-1.5.0.1/pkginfo.egg-info/PKG-INFO       2019-01-08 
22:31:51.000000000 +0100
@@ -1,12 +1,11 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
 Name: pkginfo
-Version: 1.4.2
+Version: 1.5.0.1
 Summary: Query metadatdata from sdists / bdists / installed packages.
 Home-page: https://code.launchpad.net/~tseaver/pkginfo/trunk
 Author: Tres Seaver, Agendaless Consulting
 Author-email: tsea...@agendaless.com
 License: MIT
-Description-Content-Type: UNKNOWN
 Description: ``pkginfo`` README
         ==================
         
@@ -25,6 +24,24 @@
         ``pkginfo`` Changelog
         =====================
         
+        1.5.0.1 (2019-01-08)
+        --------------------
+        
+        - Fix broken 'sdist'. LP #1639585.
+        
+        1.5.0 (2019-01-07)
+        ------------------
+        
+        - Fix 'console_scripts' entry point syntax. LP #1810734.
+        
+        - Add support for JSON output from the CLI.
+        
+        - Add support for installed wheels.  E.g., 'dist-info/' dirs.
+        
+        - Add support for Python 3.6 and 3.7.
+        
+        - Drop support for Python 3.3.
+        
         1.4.2 (2018-03-14)
         ------------------
         
@@ -269,10 +286,12 @@
 Classifier: License :: OSI Approved :: MIT License
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3.3
 Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
 Classifier: Topic :: System :: Software Distribution
+Provides-Extra: testing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/pkginfo.egg-info/SOURCES.txt 
new/pkginfo-1.5.0.1/pkginfo.egg-info/SOURCES.txt
--- old/pkginfo-1.4.2/pkginfo.egg-info/SOURCES.txt      2018-03-14 
18:34:34.000000000 +0100
+++ new/pkginfo-1.5.0.1/pkginfo.egg-info/SOURCES.txt    2019-01-08 
22:31:51.000000000 +0100
@@ -1,4 +1,5 @@
 .bzrignore
+.coveragerc
 CHANGES.txt
 LICENSE.txt
 README.txt
@@ -24,6 +25,7 @@
 docs/examples/mypackage-0.1/README.txt
 docs/examples/mypackage-0.1/setup.cfg
 docs/examples/mypackage-0.1/setup.py
+docs/examples/mypackage-0.1.dist-info/METADATA
 pkginfo/__init__.py
 pkginfo/_compat.py
 pkginfo/bdist.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/setup.py new/pkginfo-1.5.0.1/setup.py
--- old/pkginfo-1.4.2/setup.py  2018-03-14 18:20:54.000000000 +0100
+++ new/pkginfo-1.5.0.1/setup.py        2019-01-08 22:28:44.000000000 +0100
@@ -20,7 +20,7 @@
 
 setup(
     name='pkginfo',
-    version='1.4.2',
+    version='1.5.0.1',
     description='Query metadatdata from sdists / bdists / installed packages.',
     platforms=['Unix', 'Windows'],
     long_description='\n\n'.join([README, CHANGES]),
@@ -30,22 +30,23 @@
     author_email='tsea...@agendaless.com',
     license='MIT',
     classifiers=[
-      'Intended Audience :: Developers',
-      'License :: OSI Approved :: MIT License',
-      'Operating System :: OS Independent',
-      'Programming Language :: Python :: 2.7',
-      'Programming Language :: Python :: 3.3',
-      'Programming Language :: Python :: 3.4',
-      'Programming Language :: Python :: 3.5',
-      'Programming Language :: Python :: Implementation :: CPython',
-      'Programming Language :: Python :: Implementation :: PyPy',
-      'Topic :: Software Development :: Libraries :: Python Modules',
-      'Topic :: System :: Software Distribution',
+        'Intended Audience :: Developers',
+        'License :: OSI Approved :: MIT License',
+        'Operating System :: OS Independent',
+        'Programming Language :: Python :: 2.7',
+        'Programming Language :: Python :: 3.4',
+        'Programming Language :: Python :: 3.5',
+        'Programming Language :: Python :: 3.6',
+        'Programming Language :: Python :: 3.7',
+        'Programming Language :: Python :: Implementation :: CPython',
+        'Programming Language :: Python :: Implementation :: PyPy',
+        'Topic :: Software Development :: Libraries :: Python Modules',
+        'Topic :: System :: Software Distribution',
     ],
     entry_points={
-      'console_scripts': [
-        ['pkginfo = pkginfo.commandline:main']
-      ]
+        'console_scripts': [
+            'pkginfo = pkginfo.commandline:main',
+        ]
     },
     packages=['pkginfo', 'pkginfo.tests'],
     **extras
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pkginfo-1.4.2/tox.ini new/pkginfo-1.5.0.1/tox.ini
--- old/pkginfo-1.4.2/tox.ini   2018-03-08 21:32:05.000000000 +0100
+++ new/pkginfo-1.5.0.1/tox.ini 2018-08-20 22:19:23.000000000 +0200
@@ -1,17 +1,16 @@
 [tox]
 envlist = 
-    py27,pypy,py33,py34,py35,pypy3,cover2,cover3,docs
+    py27,pypy,py34,py35,py36,py37,pypy3,cover2,cover3,docs
 
 [testenv]
+usedevelop = true
 commands = 
-    python setup.py develop
     python setup.py test -q
 
 [testenv:cover2]
 basepython =
     python2.7
 commands = 
-    python setup.py develop
     python setup.py nosetests --with-xunit --with-xcoverage
 deps =
     nose
@@ -20,9 +19,8 @@
 
 [testenv:cover3]
 basepython =
-    python3.3
+    python3.7
 commands = 
-    python setup.py develop
     python setup.py nosetests --with-xunit --with-xcoverage
 deps =
     nose
@@ -37,8 +35,3 @@
     sphinx-build -b doctest -d docs/_build/doctrees docs docs/_build/doctest
 deps =
     Sphinx
-
-# we separate coverage into its own testenv because a) "last run wins" wrt
-# cobertura jenkins reporting and b) pypy and jython can't handle any
-# combination of versions of coverage and nosexcover that i can find.
-


Reply via email to