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
9175a538
Commit
9175a538
authored
Mar 25, 2021
by
Arun Babu Neelicattu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
core: use new version class implementation
parent
3738ae79
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
57 additions
and
55 deletions
+57
-55
poetry.lock
+16
-3
poetry/console/commands/version.py
+9
-18
poetry/installation/executor.py
+3
-2
poetry/masonry/builders/editable.py
+1
-1
poetry/mixology/version_solver.py
+1
-1
poetry/packages/locker.py
+1
-1
poetry/publishing/uploader.py
+1
-1
poetry/puzzle/solver.py
+1
-1
poetry/repositories/legacy_repository.py
+3
-3
poetry/repositories/pypi_repository.py
+5
-5
poetry/repositories/repository.py
+3
-3
poetry/utils/helpers.py
+0
-5
poetry/version/version_selector.py
+3
-3
pyproject.toml
+1
-1
tests/console/commands/env/test_use.py
+1
-1
tests/console/commands/self/test_update.py
+1
-1
tests/mixology/version_solver/test_backtracking.py
+1
-1
tests/packages/test_locker.py
+3
-1
tests/utils/test_env.py
+1
-1
tests/utils/test_setup_reader.py
+2
-2
No files found.
poetry.lock
View file @
9175a538
...
...
@@ -152,6 +152,14 @@ ssh = ["bcrypt (>=3.1.5)"]
test = ["pytest (>=6.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"]
[[package]]
name = "dataclasses"
version = "0.8"
description = "A backport of the dataclasses module for Python 3.6"
category = "main"
optional = false
python-versions = ">=3.6, <3.7"
[[package]]
name = "deepdiff"
version = "5.2.3"
description = "Deep Difference and Search of any Python object/data."
...
...
@@ -390,13 +398,14 @@ python-versions = "^3.6"
develop = false
[package.dependencies]
dataclasses = {version = "^0.8", markers = "python_version >= \"3.6\" and python_version < \"3.7\""}
importlib-metadata = {version = "^1.7.0", markers = "python_version >= \"3.5\" and python_version < \"3.8\""}
[package.source]
type = "git"
url = "https://github.com/python-poetry/poetry-core"
url = "https://github.com/python-poetry/poetry-core
.git
"
reference = "master"
resolved_reference = "
5d5251c427aacedcf54f9743635a8124e5a26151
"
resolved_reference = "
c11cb9a6ebdda53d45dae78b45f6f73f5368e793
"
[[package]]
name = "pre-commit"
...
...
@@ -705,7 +714,7 @@ testing = ["pytest (>=4.6)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pyt
[metadata]
lock-version = "1.1"
python-versions = "^3.6"
content-hash = "
c72b0807603d4902cff83901d0e65165e243937b5be90b05c17d3c92a06b4fc8
"
content-hash = "
8442060c68d80744b05aac3a07818a1e04e457c05b0e481d717cb44721009566
"
[metadata.files]
appdirs = [
...
...
@@ -859,6 +868,10 @@ cryptography = [
{file = "cryptography-3.4.6-pp37-pypy37_pp73-manylinux2014_x86_64.whl", hash = "sha256:9e98b452132963678e3ac6c73f7010fe53adf72209a32854d55690acac3f6724"},
{file = "cryptography-3.4.6.tar.gz", hash = "sha256:2d32223e5b0ee02943f32b19245b61a62db83a882f0e76cc564e1cec60d48f87"},
]
dataclasses = [
{file = "dataclasses-0.8-py3-none-any.whl", hash = "sha256:0201d89fa866f68c8ebd9d08ee6ff50c0b255f8ec63a71c16fda7af82bb887bf"},
{file = "dataclasses-0.8.tar.gz", hash = "sha256:8479067f342acf957dc82ec415d355ab5edb7e7646b90dc6e2fd1d96ad084c97"},
]
deepdiff = [
{file = "deepdiff-5.2.3-py3-none-any.whl", hash = "sha256:3d3da4bd7e01fb5202088658ed26427104c748dda56a0ecfac9ce9a1d2d00844"},
{file = "deepdiff-5.2.3.tar.gz", hash = "sha256:ae2cb98353309f93fbfdda4d77adb08fb303314d836bb6eac3d02ed71a10b40e"},
...
...
poetry/console/commands/version.py
View file @
9175a538
...
...
@@ -87,31 +87,22 @@ patch, minor, major, prepatch, preminor, premajor, prerelease.
raise
ValueError
(
"The project's version doesn't seem to follow semver"
)
if
rule
in
{
"major"
,
"premajor"
}:
new
=
version
.
next_major
new
=
version
.
next_major
()
if
rule
==
"premajor"
:
new
=
new
.
first_prerelease
new
=
new
.
first_prerelease
()
elif
rule
in
{
"minor"
,
"preminor"
}:
new
=
version
.
next_minor
new
=
version
.
next_minor
()
if
rule
==
"preminor"
:
new
=
new
.
first_prerelease
new
=
new
.
first_prerelease
()
elif
rule
in
{
"patch"
,
"prepatch"
}:
new
=
version
.
next_patch
new
=
version
.
next_patch
()
if
rule
==
"prepatch"
:
new
=
new
.
first_prerelease
new
=
new
.
first_prerelease
()
elif
rule
==
"prerelease"
:
if
version
.
is_prerelease
():
pre
=
version
.
prerelease
new_prerelease
=
int
(
pre
[
1
])
+
1
new
=
Version
.
parse
(
"{}.{}.{}-{}"
.
format
(
version
.
major
,
version
.
minor
,
version
.
patch
,
"."
.
join
([
pre
[
0
],
str
(
new_prerelease
)]),
)
)
if
version
.
is_unstable
():
new
=
Version
(
version
.
epoch
,
version
.
release
,
version
.
pre
.
next
())
else
:
new
=
version
.
next_patch
.
first_prerelease
new
=
version
.
next_patch
()
.
first_prerelease
()
else
:
new
=
Version
.
parse
(
rule
)
...
...
poetry/installation/executor.py
View file @
9175a538
...
...
@@ -543,8 +543,9 @@ class Executor(object):
# some versions of pip (< 19.0.0) don't understand it
# so we need to check the version of pip to know
# if we can rely on the build system
legacy_pip
=
self
.
_env
.
pip_version
<
self
.
_env
.
pip_version
.
__class__
(
19
,
0
,
0
legacy_pip
=
(
self
.
_env
.
pip_version
<
self
.
_env
.
pip_version
.
__class__
.
from_parts
(
19
,
0
,
0
)
)
package_poetry
=
Factory
()
.
create_poetry
(
pyproject
.
file
.
path
.
parent
)
...
...
poetry/masonry/builders/editable.py
View file @
9175a538
...
...
@@ -84,7 +84,7 @@ class EditableBuilder(Builder):
f
.
write
(
decode
(
builder
.
build_setup
()))
try
:
if
self
.
_env
.
pip_version
<
Version
(
19
,
0
):
if
self
.
_env
.
pip_version
<
Version
.
from_parts
(
19
,
0
):
pip_editable_install
(
self
.
_path
,
self
.
_env
)
else
:
# Temporarily rename pyproject.toml
...
...
poetry/mixology/version_solver.py
View file @
9175a538
...
...
@@ -339,7 +339,7 @@ class VersionSolver:
if
locked
and
(
dependency
.
constraint
.
allows
(
locked
.
version
)
or
locked
.
is_prerelease
()
and
dependency
.
constraint
.
allows
(
locked
.
version
.
next_patch
)
and
dependency
.
constraint
.
allows
(
locked
.
version
.
next_patch
()
)
):
return
1
...
...
poetry/packages/locker.py
View file @
9175a538
...
...
@@ -478,7 +478,7 @@ class Locker(object):
# We expect the locker to be able to read lock files
# from the same semantic versioning range
accepted_versions
=
parse_constraint
(
"^{}"
.
format
(
Version
(
current_version
.
major
,
0
))
"^{}"
.
format
(
Version
.
from_parts
(
current_version
.
major
,
0
))
)
lock_version_allowed
=
accepted_versions
.
allows
(
lock_version
)
if
lock_version_allowed
and
current_version
<
lock_version
:
...
...
poetry/publishing/uploader.py
View file @
9175a538
...
...
@@ -24,7 +24,7 @@ from poetry.__version__ import __version__
from
poetry.core.masonry.metadata
import
Metadata
from
poetry.core.masonry.utils.helpers
import
escape_name
from
poetry.core.masonry.utils.helpers
import
escape_version
from
poetry.utils.helpers
import
normalize_version
from
poetry.
core.
utils.helpers
import
normalize_version
from
poetry.utils.patterns
import
wheel_file_re
...
...
poetry/puzzle/solver.py
View file @
9175a538
...
...
@@ -437,7 +437,7 @@ class PackageNode(DFSNode):
if
pkg
.
complete_name
==
dependency
.
complete_name
and
(
dependency
.
constraint
.
allows
(
pkg
.
version
)
or
dependency
.
allows_prereleases
()
and
pkg
.
version
.
is_
prereleas
e
()
and
pkg
.
version
.
is_
unstabl
e
()
and
dependency
.
constraint
.
allows
(
pkg
.
version
.
stable
)
):
# If there is already a child with this name
...
...
poetry/repositories/legacy_repository.py
View file @
9175a538
...
...
@@ -254,9 +254,9 @@ class LegacyRepository(PyPiRepository):
if
isinstance
(
constraint
,
VersionRange
):
if
(
constraint
.
max
is
not
None
and
constraint
.
max
.
is_
prereleas
e
()
and
constraint
.
max
.
is_
unstabl
e
()
or
constraint
.
min
is
not
None
and
constraint
.
min
.
is_
prereleas
e
()
and
constraint
.
min
.
is_
unstabl
e
()
):
allow_prereleases
=
True
...
...
@@ -275,7 +275,7 @@ class LegacyRepository(PyPiRepository):
versions
=
[]
for
version
in
page
.
versions
:
if
version
.
is_
prereleas
e
()
and
not
allow_prereleases
:
if
version
.
is_
unstabl
e
()
and
not
allow_prereleases
:
if
constraint
.
is_any
():
# we need this when all versions of the package are pre-releases
ignored_pre_release_versions
.
append
(
version
)
...
...
poetry/repositories/pypi_repository.py
View file @
9175a538
...
...
@@ -20,10 +20,10 @@ from html5lib.html5parser import parse
from
poetry.core.packages.dependency
import
Dependency
from
poetry.core.packages.package
import
Package
from
poetry.core.packages.utils.link
import
Link
from
poetry.core.semver.exceptions
import
ParseVersionError
from
poetry.core.semver.helpers
import
parse_constraint
from
poetry.core.semver.version_constraint
import
VersionConstraint
from
poetry.core.semver.version_range
import
VersionRange
from
poetry.core.version.exceptions
import
InvalidVersion
from
poetry.core.version.markers
import
parse_marker
from
poetry.locations
import
REPOSITORY_CACHE_DIR
from
poetry.utils._compat
import
to_str
...
...
@@ -98,9 +98,9 @@ class PyPiRepository(RemoteRepository):
if
isinstance
(
constraint
,
VersionRange
):
if
(
constraint
.
max
is
not
None
and
constraint
.
max
.
is_
prereleas
e
()
and
constraint
.
max
.
is_
unstabl
e
()
or
constraint
.
min
is
not
None
and
constraint
.
min
.
is_
prereleas
e
()
and
constraint
.
min
.
is_
unstabl
e
()
):
allow_prereleases
=
True
...
...
@@ -129,7 +129,7 @@ class PyPiRepository(RemoteRepository):
try
:
package
=
Package
(
info
[
"info"
][
"name"
],
version
)
except
ParseVersionError
:
except
InvalidVersion
:
self
.
_log
(
'Unable to parse version "{}" for the {} package, skipping'
.
format
(
version
,
dependency
.
name
...
...
@@ -186,7 +186,7 @@ class PyPiRepository(RemoteRepository):
result
=
Package
(
name
,
version
,
description
)
result
.
description
=
to_str
(
description
.
strip
())
results
.
append
(
result
)
except
ParseVersionError
:
except
InvalidVersion
:
self
.
_log
(
'Unable to parse version "{}" for the {} package, skipping'
.
format
(
version
,
name
...
...
poetry/repositories/repository.py
View file @
9175a538
...
...
@@ -55,9 +55,9 @@ class Repository(BaseRepository):
if
isinstance
(
constraint
,
VersionRange
):
if
(
constraint
.
max
is
not
None
and
constraint
.
max
.
is_
prereleas
e
()
and
constraint
.
max
.
is_
unstabl
e
()
or
constraint
.
min
is
not
None
and
constraint
.
min
.
is_
prereleas
e
()
and
constraint
.
min
.
is_
unstabl
e
()
):
allow_prereleases
=
True
...
...
@@ -77,7 +77,7 @@ class Repository(BaseRepository):
if
constraint
.
allows
(
package
.
version
)
or
(
package
.
is_prerelease
()
and
constraint
.
allows
(
package
.
version
.
next_patch
)
and
constraint
.
allows
(
package
.
version
.
next_patch
()
)
):
packages
.
append
(
package
)
...
...
poetry/utils/helpers.py
View file @
9175a538
...
...
@@ -17,7 +17,6 @@ import requests
from
poetry.config.config
import
Config
from
poetry.core.packages.package
import
Package
from
poetry.core.version
import
Version
try
:
...
...
@@ -37,10 +36,6 @@ def module_name(name: str) -> str:
return
canonicalize_name
(
name
)
.
replace
(
"."
,
"_"
)
.
replace
(
"-"
,
"_"
)
def
normalize_version
(
version
:
str
)
->
str
:
return
str
(
Version
(
version
))
def
_del_ro
(
action
:
Callable
,
name
:
str
,
exc
:
Exception
)
->
None
:
os
.
chmod
(
name
,
stat
.
S_IWRITE
)
os
.
remove
(
name
)
...
...
poetry/version/version_selector.py
View file @
9175a538
...
...
@@ -36,7 +36,7 @@ class VersionSelector(object):
},
)
candidates
=
self
.
_pool
.
find_packages
(
dependency
)
only_prereleases
=
all
([
c
.
version
.
is_
prereleas
e
()
for
c
in
candidates
])
only_prereleases
=
all
([
c
.
version
.
is_
unstabl
e
()
for
c
in
candidates
])
if
not
candidates
:
return
False
...
...
@@ -77,7 +77,7 @@ class VersionSelector(object):
version
=
pretty_version
else
:
version
=
"."
.
join
(
str
(
p
)
for
p
in
parts
)
if
parsed
.
is_
prereleas
e
():
version
+=
"-{}"
.
format
(
"."
.
join
(
str
(
p
)
for
p
in
parsed
.
prerelease
))
if
parsed
.
is_
unstabl
e
():
version
+=
"-{}"
.
format
(
parsed
.
pre
.
to_string
(
))
return
"^{}"
.
format
(
version
)
pyproject.toml
View file @
9175a538
...
...
@@ -27,7 +27,7 @@ generate-setup-file = false
[tool.poetry.dependencies]
python
=
"^3.6"
poetry-core
=
{
git
=
"https://github.com/python-poetry/poetry-core"
,
branch
=
"master"
}
poetry-core
=
{
git
=
"https://github.com/python-poetry/poetry-core
.git
"
,
branch
=
"master"
}
cleo
=
"^1.0.0a1"
crashtest
=
"^0.3.0"
requests
=
"^2.18"
...
...
tests/console/commands/env/test_use.py
View file @
9175a538
...
...
@@ -23,7 +23,7 @@ def setup(mocker):
def
mock_subprocess_calls
(
setup
,
current_python
,
mocker
):
mocker
.
patch
(
"subprocess.check_output"
,
side_effect
=
check_output_wrapper
(
Version
(
*
current_python
)),
side_effect
=
check_output_wrapper
(
Version
.
from_parts
(
*
current_python
)),
)
mocker
.
patch
(
"subprocess.Popen.communicate"
,
...
...
tests/console/commands/self/test_update.py
View file @
9175a538
...
...
@@ -25,7 +25,7 @@ def test_self_update_should_install_all_necessary_elements(
command
=
tester
.
command
version
=
Version
.
parse
(
__version__
)
.
next_minor
.
text
version
=
Version
.
parse
(
__version__
)
.
next_minor
()
.
text
mocker
.
patch
(
"poetry.repositories.pypi_repository.PyPiRepository.find_packages"
,
return_value
=
[
Package
(
"poetry"
,
version
)],
...
...
tests/mixology/version_solver/test_backtracking.py
View file @
9175a538
...
...
@@ -99,7 +99,7 @@ def test_backjump_to_nearer_unsatisfied_package(root, provider, repo):
root
.
add_dependency
(
Factory
.
create_dependency
(
"b"
,
"*"
))
add_to_repo
(
repo
,
"a"
,
"1.0.0"
,
deps
=
{
"c"
:
"1.0.0"
})
add_to_repo
(
repo
,
"a"
,
"2.0.0"
,
deps
=
{
"c"
:
"2.0.0-
nonexistent
"
})
add_to_repo
(
repo
,
"a"
,
"2.0.0"
,
deps
=
{
"c"
:
"2.0.0-
1
"
})
add_to_repo
(
repo
,
"b"
,
"1.0.0"
)
add_to_repo
(
repo
,
"b"
,
"2.0.0"
)
add_to_repo
(
repo
,
"b"
,
"3.0.0"
)
...
...
tests/packages/test_locker.py
View file @
9175a538
...
...
@@ -428,7 +428,9 @@ content-hash = "c3d07fca33fba542ef2b2a4d75bf5b48d892d21a830e2ad9c952ba5123a52f77
[metadata.files]
"""
.
format
(
version
=
"."
.
join
(
Version
.
parse
(
Locker
.
_VERSION
)
.
next_minor
.
text
.
split
(
"."
)[:
2
])
version
=
"."
.
join
(
Version
.
parse
(
Locker
.
_VERSION
)
.
next_minor
()
.
text
.
split
(
"."
)[:
2
]
)
)
caplog
.
set_level
(
logging
.
WARNING
,
logger
=
"poetry.packages.locker"
)
...
...
tests/utils/test_env.py
View file @
9175a538
...
...
@@ -429,7 +429,7 @@ def test_deactivate_activated(tmp_dir, manager, poetry, config, mocker):
venv_name
=
manager
.
generate_env_name
(
"simple-project"
,
str
(
poetry
.
file
.
parent
))
version
=
Version
.
parse
(
"."
.
join
(
str
(
c
)
for
c
in
sys
.
version_info
[:
3
]))
other_version
=
Version
.
parse
(
"3.4"
)
if
version
.
major
==
2
else
version
.
next_minor
other_version
=
Version
.
parse
(
"3.4"
)
if
version
.
major
==
2
else
version
.
next_minor
()
(
Path
(
tmp_dir
)
/
"{}-py{}.{}"
.
format
(
venv_name
,
version
.
major
,
version
.
minor
)
)
.
mkdir
()
...
...
tests/utils/test_setup_reader.py
View file @
9175a538
...
...
@@ -2,7 +2,7 @@ import os
import
pytest
from
poetry.core.
semver.exceptions
import
ParseVersionError
from
poetry.core.
version.exceptions
import
InvalidVersion
from
poetry.utils.setup_reader
import
SetupReader
...
...
@@ -115,7 +115,7 @@ def test_setup_reader_read_setup_cfg(setup):
def
test_setup_reader_read_setup_cfg_with_attr
(
setup
):
with
pytest
.
raises
(
ParseVersionError
):
with
pytest
.
raises
(
InvalidVersion
):
SetupReader
.
read_from_directory
(
setup
(
"with-setup-cfg-attr"
))
...
...
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