Unverified Commit 801883a5 authored by Sébastien Eustace's avatar Sébastien Eustace
Browse files

Fix wheel metadata

parent c2332f2d
Loading
Loading
Loading
Loading
+1 −1
Changes for CHANGELOG.md: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -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

+31 −27
Changes for poetry/masonry/builders/wheel.py: 31 added lines, 27 removed lines.
Original line number Diff line number Diff line
@@ -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):
        """
+24 −4
Changes for tests/masonry/builders/test_complete.py: 24 added lines, 4 removed lines.
Original line number Diff line number Diff line
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()