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

Fixed handling of markers with the in operator

parent 9ecb7579
Loading
Loading
Loading
Loading
+4 −1
Changes for CHANGELOG.md: 4 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -6,12 +6,15 @@

- Added compatibility with Python 3.4 and 3.5.


### Changed

- Improved dependency resolution to avoid unnecessary operations.
- Improved dependency resolution speed.

### Fixed

- Fixed handling of markers with the `in` operator.


## [0.6.5] - 2018-03-22

+25 −0
Changes for poetry/packages/__init__.py: 25 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -98,6 +98,22 @@ def dependency_from_pep_508(name):
                    op = ''
                elif op == '!=':
                    version += '.*'
                elif op == 'in':
                    versions = []
                    for v in version.split(' '):
                        split = v.split('.')
                        if len(split) in [1, 2]:
                            split.append('*')
                            op = ''
                        else:
                            op = '=='

                        versions.append(op + '.'.join(split))

                    if versions:
                        ands.append(' || '.join(versions))

                    continue

                ands.append('{}{}'.format(op, version))

@@ -112,6 +128,15 @@ def dependency_from_pep_508(name):
            for op, platform in or_:
                if op == '==':
                    op = ''
                elif op == 'in':
                    platforms = []
                    for v in platform.split(' '):
                        platforms.append(v)

                    if platforms:
                        ands.append(' || '.join(platforms))

                    continue

                ands.append('{}{}'.format(op, platform))

+24 −0
Changes for tests/packages/test_main.py: 24 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -96,3 +96,27 @@ def test_dependency_from_pep_508_complex():
    assert dep.extras == ['foo']
    assert dep.python_versions == '>=2.7 !=3.2.*'
    assert dep.platform == 'win32 || darwin'


def test_dependency_python_version_in():
    name = (
        'requests (==2.18.0); '
        'python_version in \'3.3 3.4 3.5\''
    )
    dep = dependency_from_pep_508(name)

    assert dep.name == 'requests'
    assert str(dep.constraint) == '== 2.18.0.0'
    assert dep.python_versions == '3.3.* || 3.4.* || 3.5.*'


def test_dependency_platform_in():
    name = (
        'requests (==2.18.0); '
        'sys_platform in \'win32 darwin\''
    )
    dep = dependency_from_pep_508(name)

    assert dep.name == 'requests'
    assert str(dep.constraint) == '== 2.18.0.0'
    assert dep.platform == 'win32 || darwin'