Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
python-poetry
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open
python-poetry
Commits
750e31de
Unverified
Commit
750e31de
authored
Nov 24, 2018
by
Sébastien Eustace
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix the way packages info are retrieved for legacy repositories
parent
7ac4ee24
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
132 additions
and
15 deletions
+132
-15
CHANGELOG.md
+7
-0
poetry/masonry/publishing/uploader.py
+1
-7
poetry/repositories/legacy_repository.py
+11
-8
poetry/utils/patterns.py
+9
-0
tests/puzzle/test_solver.py
+46
-0
tests/repositories/fixtures/legacy/futures.html
+12
-0
tests/repositories/fixtures/legacy/isort.html
+13
-0
tests/repositories/fixtures/pypi.org/dists/futures-3.2.0-py2-none-any.whl
+0
-0
tests/repositories/fixtures/pypi.org/dists/futures-3.2.0.tar.gz
+0
-0
tests/repositories/test_legacy_repository.py
+33
-0
No files found.
CHANGELOG.md
View file @
750e31de
# Change Log
# Change Log
## [Unreleased]
### Fixed
-
Fixed the way packages information are retrieved for legacy repositories.
## [0.12.10] - 2018-11-22
## [0.12.10] - 2018-11-22
### Fixed
### Fixed
...
...
poetry/masonry/publishing/uploader.py
View file @
750e31de
...
@@ -14,17 +14,11 @@ from requests_toolbelt.multipart import MultipartEncoder, MultipartEncoderMonito
...
@@ -14,17 +14,11 @@ from requests_toolbelt.multipart import MultipartEncoder, MultipartEncoderMonito
from
poetry.__version__
import
__version__
from
poetry.__version__
import
__version__
from
poetry.utils.helpers
import
normalize_version
from
poetry.utils.helpers
import
normalize_version
from
poetry.utils.patterns
import
wheel_file_re
from
..metadata
import
Metadata
from
..metadata
import
Metadata
wheel_file_re
=
re
.
compile
(
r"""^(?P<namever>(?P<name>.+?)(-(?P<ver>\d.+?))?)
((-(?P<build>\d.*?))?-(?P<pyver>.+?)-(?P<abi>.+?)-(?P<plat>.+?)
\.whl|\.dist-info)$"""
,
re
.
VERBOSE
,
)
_has_blake2
=
hasattr
(
hashlib
,
"blake2b"
)
_has_blake2
=
hasattr
(
hashlib
,
"blake2b"
)
...
...
poetry/repositories/legacy_repository.py
View file @
750e31de
...
@@ -30,7 +30,6 @@ from cachy import CacheManager
...
@@ -30,7 +30,6 @@ from cachy import CacheManager
import
poetry.packages
import
poetry.packages
from
poetry.locations
import
CACHE_DIR
from
poetry.locations
import
CACHE_DIR
from
poetry.masonry.publishing.uploader
import
wheel_file_re
from
poetry.packages
import
Package
from
poetry.packages
import
Package
from
poetry.packages
import
dependency_from_pep_508
from
poetry.packages
import
dependency_from_pep_508
from
poetry.packages.utils.link
import
Link
from
poetry.packages.utils.link
import
Link
...
@@ -40,6 +39,7 @@ from poetry.semver import VersionConstraint
...
@@ -40,6 +39,7 @@ from poetry.semver import VersionConstraint
from
poetry.semver
import
VersionRange
from
poetry.semver
import
VersionRange
from
poetry.utils._compat
import
Path
from
poetry.utils._compat
import
Path
from
poetry.utils.helpers
import
canonicalize_name
from
poetry.utils.helpers
import
canonicalize_name
from
poetry.utils.patterns
import
wheel_file_re
from
poetry.version.markers
import
InvalidMarker
from
poetry.version.markers
import
InvalidMarker
from
.auth
import
Auth
from
.auth
import
Auth
...
@@ -269,6 +269,9 @@ class LegacyRepository(PyPiRepository):
...
@@ -269,6 +269,9 @@ class LegacyRepository(PyPiRepository):
release_info
=
self
.
get_release_info
(
name
,
version
)
release_info
=
self
.
get_release_info
(
name
,
version
)
package
=
poetry
.
packages
.
Package
(
name
,
version
,
version
)
package
=
poetry
.
packages
.
Package
(
name
,
version
,
version
)
if
release_info
[
"requires_python"
]:
package
.
python_versions
=
release_info
[
"requires_python"
]
package
.
source_type
=
"legacy"
package
.
source_type
=
"legacy"
package
.
source_url
=
self
.
_url
package
.
source_url
=
self
.
_url
package
.
source_reference
=
self
.
name
package
.
source_reference
=
self
.
name
...
@@ -330,7 +333,7 @@ class LegacyRepository(PyPiRepository):
...
@@ -330,7 +333,7 @@ class LegacyRepository(PyPiRepository):
"version"
:
version
,
"version"
:
version
,
"summary"
:
""
,
"summary"
:
""
,
"requires_dist"
:
[],
"requires_dist"
:
[],
"requires_python"
:
[]
,
"requires_python"
:
None
,
"digests"
:
[],
"digests"
:
[],
}
}
...
@@ -346,7 +349,11 @@ class LegacyRepository(PyPiRepository):
...
@@ -346,7 +349,11 @@ class LegacyRepository(PyPiRepository):
default_link
=
links
[
0
]
default_link
=
links
[
0
]
for
link
in
links
:
for
link
in
links
:
if
link
.
is_wheel
:
if
link
.
is_wheel
:
urls
[
"bdist_wheel"
]
=
link
.
url
m
=
wheel_file_re
.
match
(
default_link
.
filename
)
python
=
m
.
group
(
"pyver"
)
platform
=
m
.
group
(
"plat"
)
if
python
==
"py2.py3"
and
platform
==
"any"
:
urls
[
"bdist_wheel"
]
=
default_link
.
url
elif
link
.
filename
.
endswith
(
".tar.gz"
):
elif
link
.
filename
.
endswith
(
".tar.gz"
):
urls
[
"sdist"
]
=
link
.
url
urls
[
"sdist"
]
=
link
.
url
elif
(
elif
(
...
@@ -363,11 +370,7 @@ class LegacyRepository(PyPiRepository):
...
@@ -363,11 +370,7 @@ class LegacyRepository(PyPiRepository):
if
not
urls
:
if
not
urls
:
if
default_link
.
is_wheel
:
if
default_link
.
is_wheel
:
m
=
wheel_file_re
.
match
(
default_link
.
filename
)
urls
[
"bdist_wheel"
]
=
default_link
.
url
python
=
m
.
group
(
"pyver"
)
platform
=
m
.
group
(
"plat"
)
if
python
==
"py2.py3"
and
platform
==
"any"
:
urls
[
"bdist_wheel"
]
=
default_link
.
url
elif
default_link
.
filename
.
endswith
(
".tar.gz"
):
elif
default_link
.
filename
.
endswith
(
".tar.gz"
):
urls
[
"sdist"
]
=
default_link
.
url
urls
[
"sdist"
]
=
default_link
.
url
elif
(
elif
(
...
...
poetry/utils/patterns.py
0 → 100644
View file @
750e31de
import
re
wheel_file_re
=
re
.
compile
(
r"""^(?P<namever>(?P<name>.+?)(-(?P<ver>\d.+?))?)
((-(?P<build>\d.*?))?-(?P<pyver>.+?)-(?P<abi>.+?)-(?P<plat>.+?)
\.whl|\.dist-info)$"""
,
re
.
VERBOSE
,
)
tests/puzzle/test_solver.py
View file @
750e31de
...
@@ -15,6 +15,9 @@ from poetry.version.markers import parse_marker
...
@@ -15,6 +15,9 @@ from poetry.version.markers import parse_marker
from
tests.helpers
import
get_dependency
from
tests.helpers
import
get_dependency
from
tests.helpers
import
get_package
from
tests.helpers
import
get_package
from
tests.repositories.test_legacy_repository
import
(
MockRepository
as
MockLegacyRepository
,
)
@pytest.fixture
()
@pytest.fixture
()
...
@@ -1488,3 +1491,46 @@ def test_solver_can_resolve_wheel_dependencies_with_extras(solver, repo, package
...
@@ -1488,3 +1491,46 @@ def test_solver_can_resolve_wheel_dependencies_with_extras(solver, repo, package
assert
op
.
package
.
version
.
text
==
"0.1.0"
assert
op
.
package
.
version
.
text
==
"0.1.0"
assert
op
.
package
.
source_type
==
"file"
assert
op
.
package
.
source_type
==
"file"
assert
op
.
package
.
source_url
==
path
assert
op
.
package
.
source_url
==
path
def
test_solver_can_solve_with_legacy_repository_using_proper_dists
(
package
,
installed
,
locked
,
io
):
repo
=
MockLegacyRepository
()
pool
=
Pool
([
repo
])
solver
=
Solver
(
package
,
pool
,
installed
,
locked
,
io
)
package
.
add_dependency
(
"isort"
,
"4.3.4"
)
ops
=
solver
.
solve
()
check_solver_result
(
ops
,
[
{
"job"
:
"install"
,
"package"
:
get_package
(
"futures"
,
"3.2.0"
)},
{
"job"
:
"install"
,
"package"
:
get_package
(
"isort"
,
"4.3.4"
)},
],
)
futures
=
ops
[
0
]
.
package
assert
futures
.
python_versions
==
">=2.6, <3"
def
test_solver_can_solve_with_legacy_repository_using_proper_python_compatible_dists
(
package
,
installed
,
locked
,
io
):
package
.
python_versions
=
"^3.7"
repo
=
MockLegacyRepository
()
pool
=
Pool
([
repo
])
solver
=
Solver
(
package
,
pool
,
installed
,
locked
,
io
)
package
.
add_dependency
(
"isort"
,
"4.3.4"
)
ops
=
solver
.
solve
()
check_solver_result
(
ops
,
[{
"job"
:
"install"
,
"package"
:
get_package
(
"isort"
,
"4.3.4"
)}]
)
tests/repositories/fixtures/legacy/futures.html
0 → 100644
View file @
750e31de
<!DOCTYPE html>
<html>
<head>
<title>
Links for futures
</title>
</head>
<body>
<h1>
Links for futures
</h1>
<a
href=
"https://files.pythonhosted.org/packages/2d/99/b2c4e9d5a30f6471e410a146232b4118e697fa3ffc06d6a65efde84debd0/futures-3.2.0-py2-none-any.whl#sha256=ec0a6cb848cc212002b9828c3e34c675e0c9ff6741dc445cab6fdd4e1085d1f1"
data-requires-python=
">=2.6, <3"
>
futures-3.2.0-py2-none-any.whl
</a><br/>
<a
href=
"https://files.pythonhosted.org/packages/1f/9e/7b2ff7e965fc654592269f2906ade1c7d705f1bf25b7d469fa153f7d19eb/futures-3.2.0.tar.gz#sha256=9ec02aa7d674acb8618afb127e27fde7fc68994c0437ad759fa094a574adb265"
data-requires-python=
">=2.6, <3"
>
futures-3.2.0.tar.gz
</a><br/>
</body>
</html>
<!--SERIAL 3865286-->
tests/repositories/fixtures/legacy/isort.html
0 → 100644
View file @
750e31de
<!DOCTYPE html>
<html>
<head>
<title>
Links for isort
</title>
</head>
<body>
<h1>
Links for isort
</h1>
<a
href=
"https://files.pythonhosted.org/packages/41/d8/a945da414f2adc1d9e2f7d6e7445b27f2be42766879062a2e63616ad4199/isort-4.3.4-py2-none-any.whl#sha256=ec9ef8f4a9bc6f71eec99e1806bfa2de401650d996c59330782b89a5555c1497"
>
isort-4.3.4-py2-none-any.whl
</a><br/>
<a
href=
"https://files.pythonhosted.org/packages/1f/2c/22eee714d7199ae0464beda6ad5fedec8fee6a2f7ffd1e8f1840928fe318/isort-4.3.4-py3-none-any.whl#sha256=1153601da39a25b14ddc54955dbbacbb6b2d19135386699e2ad58517953b34af"
>
isort-4.3.4-py3-none-any.whl
</a><br/>
<a
href=
"https://files.pythonhosted.org/packages/b1/de/a628d16fdba0d38cafb3d7e34d4830f2c9cb3881384ce5c08c44762e1846/isort-4.3.4.tar.gz#sha256=b9c40e9750f3d77e6e4d441d8b0266cf555e7cdabdcff33c4fd06366ca761ef8"
>
isort-4.3.4.tar.gz
</a><br/>
</body>
</html>
<!--SERIAL 3575149-->
tests/repositories/fixtures/pypi.org/dists/futures-3.2.0-py2-none-any.whl
0 → 100644
View file @
750e31de
File added
tests/repositories/fixtures/pypi.org/dists/futures-3.2.0.tar.gz
0 → 100644
View file @
750e31de
File added
tests/repositories/test_legacy_repository.py
View file @
750e31de
...
@@ -136,3 +136,36 @@ def test_find_packages_no_prereleases():
...
@@ -136,3 +136,36 @@ def test_find_packages_no_prereleases():
packages
=
repo
.
find_packages
(
"pyyaml"
)
packages
=
repo
.
find_packages
(
"pyyaml"
)
assert
len
(
packages
)
==
1
assert
len
(
packages
)
==
1
def
test_get_package_information_chooses_correct_distribution
():
repo
=
MockRepository
()
package
=
repo
.
package
(
"isort"
,
"4.3.4"
)
assert
package
.
name
==
"isort"
assert
package
.
version
.
text
==
"4.3.4"
assert
package
.
requires
==
[
Dependency
(
"futures"
,
"*"
)]
futures_dep
=
package
.
requires
[
0
]
assert
futures_dep
.
python_versions
==
"~2.7"
def
test_get_package_information_includes_python_requires
():
repo
=
MockRepository
()
package
=
repo
.
package
(
"futures"
,
"3.2.0"
)
assert
package
.
name
==
"futures"
assert
package
.
version
.
text
==
"3.2.0"
assert
package
.
python_versions
==
">=2.6, <3"
def
test_get_package_information_sets_appropriate_python_versions_if_wheels_only
():
repo
=
MockRepository
()
package
=
repo
.
package
(
"futures"
,
"3.2.0"
)
assert
package
.
name
==
"futures"
assert
package
.
version
.
text
==
"3.2.0"
assert
package
.
python_versions
==
">=2.6, <3"
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment