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
206e1d5d
Unverified
Commit
206e1d5d
authored
Mar 01, 2018
by
Sébastien Eustace
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Store dependencies of each package in poetry.lock
parent
0b546d20
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
107 additions
and
3 deletions
+107
-3
CHANGELOG.md
+4
-0
poetry/console/commands/show.py
+14
-0
poetry/packages/dependency.py
+4
-3
poetry/packages/locker.py
+11
-0
tests/installation/fixtures/with-sub-dependencies.test
+48
-0
tests/installation/test_installer.py
+26
-0
No files found.
CHANGELOG.md
View file @
206e1d5d
...
@@ -2,6 +2,10 @@
...
@@ -2,6 +2,10 @@
## [Unreleased]
## [Unreleased]
## Changed
-
Dependencies of each package is now stored in
`poetry.lock`
.
### Fixed
### Fixed
-
Fixed the
`add`
command for packages with dots in their names.
-
Fixed the
`add`
command for packages with dots in their names.
...
...
poetry/console/commands/show.py
0 → 100644
View file @
206e1d5d
from
.command
import
Command
class
ShowCommand
(
Command
):
"""
Shows information about packages.
show
{ package? : Package to inspect. }
{ version? : Version to inspect. }
"""
help
=
"""The show command displays detailed information about a package, or
lists all packages available."""
poetry/packages/dependency.py
View file @
206e1d5d
...
@@ -5,6 +5,7 @@ class Dependency:
...
@@ -5,6 +5,7 @@ class Dependency:
def
__init__
(
self
,
name
,
constraint
,
optional
=
False
,
category
=
'main'
):
def
__init__
(
self
,
name
,
constraint
,
optional
=
False
,
category
=
'main'
):
self
.
_name
=
name
.
lower
()
self
.
_name
=
name
.
lower
()
self
.
_pretty_name
=
name
try
:
try
:
self
.
_constraint
=
VersionParser
()
.
parse_constraints
(
constraint
)
self
.
_constraint
=
VersionParser
()
.
parse_constraints
(
constraint
)
except
ValueError
:
except
ValueError
:
...
@@ -28,7 +29,7 @@ class Dependency:
...
@@ -28,7 +29,7 @@ class Dependency:
@property
@property
def
pretty_name
(
self
):
def
pretty_name
(
self
):
return
'{} ({})'
.
format
(
self
.
_name
,
self
.
pretty_constraint
)
return
self
.
_pretty_name
@property
@property
def
category
(
self
):
def
category
(
self
):
...
@@ -53,7 +54,7 @@ class Dependency:
...
@@ -53,7 +54,7 @@ class Dependency:
return
hash
((
self
.
_name
,
self
.
_pretty_constraint
))
return
hash
((
self
.
_name
,
self
.
_pretty_constraint
))
def
__str__
(
self
):
def
__str__
(
self
):
return
self
.
pretty_name
return
f
'{self._pretty_name} ({self._pretty_constraint})'
def
__repr__
(
self
):
def
__repr__
(
self
):
return
'<Dependency {}>'
.
format
(
self
.
pretty_name
)
return
f
'<Dependency {str(self)}>'
poetry/packages/locker.py
View file @
206e1d5d
...
@@ -93,6 +93,9 @@ class Locker:
...
@@ -93,6 +93,9 @@ class Locker:
package
.
hashes
=
lock_data
[
'metadata'
][
'hashes'
][
info
[
'name'
]]
package
.
hashes
=
lock_data
[
'metadata'
][
'hashes'
][
info
[
'name'
]]
package
.
python_versions
=
info
[
'python-versions'
]
package
.
python_versions
=
info
[
'python-versions'
]
for
dep_name
,
constraint
in
info
.
get
(
'dependencies'
,
{})
.
items
():
package
.
add_dependency
(
dep_name
,
constraint
)
if
'source'
in
info
:
if
'source'
in
info
:
package
.
source_type
=
info
[
'source'
][
'type'
]
package
.
source_type
=
info
[
'source'
][
'type'
]
package
.
source_url
=
info
[
'source'
][
'url'
]
package
.
source_url
=
info
[
'source'
][
'url'
]
...
@@ -173,6 +176,13 @@ class Locker:
...
@@ -173,6 +176,13 @@ class Locker:
return
locked
return
locked
def
_dump_package
(
self
,
package
:
'poetry.packages.Package'
)
->
dict
:
def
_dump_package
(
self
,
package
:
'poetry.packages.Package'
)
->
dict
:
dependencies
=
{}
for
dependency
in
package
.
requires
:
if
dependency
.
is_optional
():
continue
dependencies
[
dependency
.
pretty_name
]
=
dependency
.
pretty_constraint
data
=
{
data
=
{
'name'
:
package
.
pretty_name
,
'name'
:
package
.
pretty_name
,
'version'
:
package
.
pretty_version
,
'version'
:
package
.
pretty_version
,
...
@@ -181,6 +191,7 @@ class Locker:
...
@@ -181,6 +191,7 @@ class Locker:
'python-versions'
:
package
.
python_versions
,
'python-versions'
:
package
.
python_versions
,
'platform'
:
package
.
platform
,
'platform'
:
package
.
platform
,
'hashes'
:
package
.
hashes
,
'hashes'
:
package
.
hashes
,
'dependencies'
:
dependencies
}
}
if
package
.
source_type
:
if
package
.
source_type
:
...
...
tests/installation/fixtures/with-sub-dependencies.test
0 → 100644
View file @
206e1d5d
[[
package
]]
name
=
"A"
version
=
"1.0"
category
=
"main"
optional
=
false
python
-
versions
=
"*"
platform
=
"*"
[
package
.
dependencies
]
D
=
"^1.0"
[[
package
]]
name
=
"B"
version
=
"1.1"
category
=
"main"
optional
=
false
python
-
versions
=
"*"
platform
=
"*"
[
package
.
dependencies
]
C
=
"~1.2"
[[
package
]]
name
=
"C"
version
=
"1.2"
category
=
"main"
optional
=
false
python
-
versions
=
"*"
platform
=
"*"
[[
package
]]
name
=
"D"
version
=
"1.3"
category
=
"main"
optional
=
false
python
-
versions
=
"*"
platform
=
"*"
[
metadata
]
python
-
versions
=
"*"
platform
=
"*"
content
-
hash
=
"123456789"
[
metadata
.
hashes
]
A
=
[]
B
=
[]
C
=
[]
D
=
[]
tests/installation/test_installer.py
View file @
206e1d5d
...
@@ -45,6 +45,10 @@ class Locker(BaseLocker):
...
@@ -45,6 +45,10 @@ class Locker(BaseLocker):
return
'123456789'
return
'123456789'
def
_write_lock_data
(
self
,
data
)
->
None
:
def
_write_lock_data
(
self
,
data
)
->
None
:
for
package
in
data
[
'package'
]:
if
not
package
[
'dependencies'
]:
del
package
[
'dependencies'
]
self
.
_written_data
=
data
self
.
_written_data
=
data
...
@@ -188,3 +192,25 @@ def test_run_whitelist_remove(installer, locker, repo, package):
...
@@ -188,3 +192,25 @@ def test_run_whitelist_remove(installer, locker, repo, package):
expected
=
fixture
(
'remove'
)
expected
=
fixture
(
'remove'
)
assert
locker
.
written_data
==
expected
assert
locker
.
written_data
==
expected
def
test_add_with_sub_dependencies
(
installer
,
locker
,
repo
,
package
):
package_a
=
get_package
(
'A'
,
'1.0'
)
package_b
=
get_package
(
'B'
,
'1.1'
)
package_c
=
get_package
(
'C'
,
'1.2'
)
package_d
=
get_package
(
'D'
,
'1.3'
)
repo
.
add_package
(
package_a
)
repo
.
add_package
(
package_b
)
repo
.
add_package
(
package_c
)
repo
.
add_package
(
package_d
)
package
.
add_dependency
(
'A'
,
'~1.0'
)
package
.
add_dependency
(
'B'
,
'^1.0'
)
package_a
.
add_dependency
(
'D'
,
'^1.0'
)
package_b
.
add_dependency
(
'C'
,
'~1.2'
)
installer
.
run
()
expected
=
fixture
(
'with-sub-dependencies'
)
assert
locker
.
written_data
==
expected
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