Commit 801883a5 by Sébastien Eustace

Fix wheel metadata

parent c2332f2d
......@@ -5,7 +5,7 @@
### Fixed
- Fixed wheel entry points being written on a single line.
- Fixed wheel metadata (Tag and Root-Is-Purelib).
## [0.6.0] - 2018-03-16
......
......@@ -28,8 +28,9 @@ from .builder import Builder
wheel_file_template = """\
Wheel-Version: 1.0
Generator: poetry {version}
Root-Is-Purelib: true
""".format(version=__version__)
Root-Is-Purelib: {pure_lib}
Tag: {tag}
"""
class WheelBuilder(Builder):
......@@ -178,28 +179,10 @@ class WheelBuilder(Builder):
@property
def wheel_filename(self) -> str:
if self._package.build:
platform = get_platform().replace('.', '_').replace('-', '_')
impl_name = get_abbr_impl()
impl_ver = get_impl_ver()
impl = impl_name + impl_ver
abi_tag = str(get_abi_tag()).lower()
tag = (impl, abi_tag, platform)
else:
platform = 'any'
if self.supports_python2():
impl = 'py2.py3'
else:
impl = 'py3'
tag = (impl, 'none', platform)
tag = '-'.join(tag)
return '{}-{}-{}.whl'.format(
re.sub("[^\w\d.]+", "_", self._package.pretty_name, flags=re.UNICODE),
re.sub("[^\w\d.]+", "_", self._package.version, flags=re.UNICODE),
tag
self.tag
)
def supports_python2(self):
......@@ -216,6 +199,26 @@ class WheelBuilder(Builder):
return '{}-{}.dist-info'.format(escaped_name, escaped_version)
@property
def tag(self):
if self._package.build:
platform = get_platform().replace('.', '_').replace('-', '_')
impl_name = get_abbr_impl()
impl_ver = get_impl_ver()
impl = impl_name + impl_ver
abi_tag = str(get_abi_tag()).lower()
tag = (impl, abi_tag, platform)
else:
platform = 'any'
if self.supports_python2():
impl = 'py2.py3'
else:
impl = 'py3'
tag = (impl, 'none', platform)
return '-'.join(tag)
def _add_file(self, full_path, rel_path):
full_path, rel_path = str(full_path), str(rel_path)
if os.sep != '/':
......@@ -282,12 +285,13 @@ class WheelBuilder(Builder):
fp.write('\n')
def _write_wheel_file(self, fp):
fp.write(wheel_file_template)
if self.supports_python2():
fp.write("Tag: py2-none-any\n")
fp.write("Tag: py3-none-any\n")
fp.write(
wheel_file_template.format(
version=__version__,
pure_lib='true' if self._package.build is None else 'false',
tag=self.tag
)
)
def _write_metadata_file(self, fp):
"""
......
import pytest
import re
import shutil
import tarfile
import zipfile
from pathlib import Path
from poetry import __version__
from poetry import Poetry
from poetry.io import NullIO
from poetry.masonry.builders import CompleteBuilder
......@@ -53,10 +55,20 @@ def test_wheel_c_extension():
if name.startswith('extended/extended') and name.endswith('.so'):
has_compiled_extension = True
zip.close()
assert has_compiled_extension
try:
wheel_data = zip.read('extended-0.1.dist-info/WHEEL').decode()
assert re.match("""(?m)^\
Wheel-Version: 1.0
Generator: poetry {}
Root-Is-Purelib: false
Tag: cp3\d-cp3\dm-.+
$""".format(__version__), wheel_data) is not None
finally:
zip.close()
def test_complete():
module_path = fixtures_dir / 'complete'
......@@ -72,12 +84,20 @@ def test_complete():
try:
entry_points = zip.read('my_package-1.2.3.dist-info/entry_points.txt')
print(entry_points.decode())
assert entry_points.decode() == """[console_scripts]
assert entry_points.decode() == """\
[console_scripts]
my-2nd-script=my_package:main2
my-script=my_package:main
"""
wheel_data = zip.read('my_package-1.2.3.dist-info/WHEEL').decode()
assert wheel_data == f"""\
Wheel-Version: 1.0
Generator: poetry {__version__}
Root-Is-Purelib: true
Tag: py3-none-any
"""
finally:
zip.close()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment