Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

humpty cannot convert 2.1 metadata #5

Open
tardyp opened this issue May 14, 2018 · 1 comment
Open

humpty cannot convert 2.1 metadata #5

tardyp opened this issue May 14, 2018 · 1 comment

Comments

@tardyp
Copy link

tardyp commented May 14, 2018

We start to see wheels with 2.1 metadata in wheels.

ex: https://pypi.org/project/python-dateutil/2.7.3/#files

traceback, with some debug info added.

Traceback (most recent call last):
  File "[...]/site-packages/distlib/metadata.py", line 709, in __init__
    self._data = json.loads(data)
  File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/az02096/dev/nestor/reposyncer/.venv/bin/humpty", line 11, in <module>
    sys.exit(main())
  File "[...]/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "[...]/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "[...]/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "[...]/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "[...]/site-packages/humpty.py", line 665, in main
    EggWriter(wheel).build_egg(dist_dir)
  File "[...]/site-packages/humpty.py", line 546, in build_egg
    egg_info = egg_metadata(wheel)
  File "[...]/site-packages/humpty.py", line 441, in egg_metadata
    wheel.metadata,
  File "[...]/site-packages/distlib/util.py", line 446, in __get__
    value = self.func(obj)
  File "[...]/site-packages/distlib/wheel.py", line 234, in metadata
    result = Metadata(fileobj=wf)
  File "[...]/site-packages/distlib/metadata.py", line 719, in __init__
    scheme=scheme)
  File "[...]/site-packages/distlib/metadata.py", line 263, in __init__
    self.read_file(fileobj)
  File "[...]/site-packages/distlib/metadata.py", line 362, in read_file
    self.set_metadata_version()
  File "[...]/site-packages/distlib/metadata.py", line 269, in set_metadata_version
    self._fields['Metadata-Version'] = _best_version(self._fields)
  File "[...]/site-packages/distlib/metadata.py", line 149, in _best_version
    raise MetadataConflictError('Unknown metadata set' + str(fields) + str(keys))
distlib.metadata.MetadataConflictError: Unknown metadata set{'Metadata-Version': '2.1', 'Summary': 'Extensions to the standard Python datetime module', 'Maintainer': 'Paul Ganssle', 'Classifier': ['Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License', 'License :: OSI Approved :: Apache Software License', 'Programming Language :: Python', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', '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', 'Topic :: Software Development :: Libraries'], 'Author-email': '[email protected]', 'Maintainer-email': '[email protected]', 'Platform': ['UNKNOWN'], 'Name': 'python-dateutil', 'Requires-Dist': ['six (>=1.5)'], 'License': 'Dual License', 'Author': 'Gustavo Niemeyer', 'Version': '2.7.3', 'Requires': ['six'], 'Requires-Python': '>=2.7, !=3.0.*, !=3.1.*, !=3.2.*', 'Home-page': 'https://dateutil.readthedocs.io'}['Metadata-Version', 'Summary', 'Maintainer', 'Classifier', 'Author-email', 'Maintainer-email', 'Platform', 'Name', 'Requires-Dist', 'License', 'Author', 'Version', 'Requires', 'Requires-Python', 'Home-page']

I think the problem is probably in distlib, but probably you want to be more reliant on unknown metadata versions

@tardyp
Copy link
Author

tardyp commented May 14, 2018

wheel 0.3.1 introduces 2.1 metadata

https://github.com/pypa/wheel/blob/master/CHANGES.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant