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
6ff23efb
Commit
6ff23efb
authored
Nov 17, 2021
by
Branch Vincent
Committed by
Bjorn Neergaard
Nov 17, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore(puzzle): remove type errors
parent
fd3f3387
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
40 additions
and
33 deletions
+40
-33
pyproject.toml
+0
-2
src/poetry/installation/operations/operation.py
+5
-2
src/poetry/puzzle/exceptions.py
+1
-1
src/poetry/puzzle/provider.py
+14
-12
src/poetry/puzzle/solver.py
+19
-15
src/poetry/puzzle/transaction.py
+1
-1
No files found.
pyproject.toml
View file @
6ff23efb
...
...
@@ -108,7 +108,6 @@ files = "src"
[[tool.mypy.overrides]]
module
=
[
'poetry.poetry'
,
'poetry.config.file_config_source'
,
'poetry.console.*'
,
'poetry.factory.*'
,
...
...
@@ -117,7 +116,6 @@ module = [
'poetry.layouts.*'
,
'poetry.mixology.*'
,
'poetry.packages.locker'
,
'poetry.puzzle.*'
,
'poetry.repositories.installed_repository'
,
'poetry.utils.*'
]
...
...
src/poetry/installation/operations/operation.py
View file @
6ff23efb
from
typing
import
TYPE_CHECKING
from
typing
import
Optional
from
typing
import
TypeVar
if
TYPE_CHECKING
:
from
poetry.core.packages.package
import
Package
T
=
TypeVar
(
"T"
,
bound
=
"Operation"
)
class
Operation
:
def
__init__
(
self
,
reason
:
Optional
[
str
]
=
None
,
priority
:
int
=
0
)
->
None
:
...
...
@@ -41,13 +44,13 @@ class Operation:
def
format_version
(
self
,
package
:
"Package"
)
->
str
:
return
package
.
full_pretty_version
def
skip
(
self
,
reason
:
str
)
->
"Operation"
:
def
skip
(
self
:
T
,
reason
:
str
)
->
T
:
self
.
_skipped
=
True
self
.
_skip_reason
=
reason
return
self
def
unskip
(
self
)
->
"Operation"
:
def
unskip
(
self
:
T
)
->
T
:
self
.
_skipped
=
False
self
.
_skip_reason
=
None
...
...
src/poetry/puzzle/exceptions.py
View file @
6ff23efb
...
...
@@ -18,5 +18,5 @@ class OverrideNeeded(Exception):
self
.
_overrides
=
overrides
@property
def
overrides
(
self
)
->
Tuple
[
Dict
]:
def
overrides
(
self
)
->
Tuple
[
Dict
,
...
]:
return
self
.
_overrides
src/poetry/puzzle/provider.py
View file @
6ff23efb
import
logging
import
os
import
re
import
tempfile
import
time
import
urllib.parse
...
...
@@ -12,6 +13,7 @@ from typing import Dict
from
typing
import
Iterator
from
typing
import
List
from
typing
import
Optional
from
typing
import
Set
from
typing
import
Union
from
cleo.ui.progress_indicator
import
ProgressIndicator
...
...
@@ -39,7 +41,6 @@ from poetry.repositories import Pool
from
poetry.utils.env
import
Env
from
poetry.utils.helpers
import
download_file
from
poetry.utils.helpers
import
safe_rmtree
from
poetry.utils.helpers
import
temporary_directory
logger
=
logging
.
getLogger
(
__name__
)
...
...
@@ -54,7 +55,7 @@ class Indicator(ProgressIndicator):
class
Provider
:
UNSAFE_PACKAGES
=
set
()
UNSAFE_PACKAGES
:
Set
[
str
]
=
set
()
def
__init__
(
self
,
package
:
Package
,
pool
:
Pool
,
io
:
Any
,
env
:
Optional
[
Env
]
=
None
...
...
@@ -64,11 +65,11 @@ class Provider:
self
.
_io
=
io
self
.
_env
=
env
self
.
_python_constraint
=
package
.
python_constraint
self
.
_search_for
=
{}
self
.
_search_for
:
Dict
[
Dependency
,
List
[
Package
]]
=
{}
self
.
_is_debugging
=
self
.
_io
.
is_debug
()
or
self
.
_io
.
is_very_verbose
()
self
.
_in_progress
=
False
self
.
_overrides
=
{}
self
.
_deferred_cache
=
{}
self
.
_overrides
:
Dict
=
{}
self
.
_deferred_cache
:
Dict
[
Dependency
,
Package
]
=
{}
self
.
_load_deferred
=
True
@property
...
...
@@ -351,12 +352,11 @@ class Provider:
@classmethod
def
get_package_from_url
(
cls
,
url
:
str
)
->
Package
:
with
temporary_directory
()
as
temp_dir
:
temp_dir
=
Path
(
temp_dir
)
file_name
=
os
.
path
.
basename
(
urllib
.
parse
.
urlparse
(
url
)
.
path
)
download_file
(
url
,
str
(
temp_dir
/
file_name
))
package
=
cls
.
get_package_from_file
(
temp_dir
/
file_name
)
with
tempfile
.
TemporaryDirectory
()
as
temp_dir
:
dest
=
Path
(
temp_dir
)
/
file_name
download_file
(
url
,
str
(
dest
))
package
=
cls
.
get_package_from_file
(
dest
)
package
.
_source_type
=
"url"
package
.
_source_url
=
url
...
...
@@ -543,7 +543,7 @@ class Provider:
# An example of this is:
# - pypiwin32 (220); sys_platform == "win32" and python_version >= "3.6"
# - pypiwin32 (219); sys_platform == "win32" and python_version < "3.6"
duplicates
=
{}
duplicates
:
Dict
[
str
,
List
[
Dependency
]]
=
{}
for
dep
in
dependencies
:
if
dep
.
complete_name
not
in
duplicates
:
duplicates
[
dep
.
complete_name
]
=
[]
...
...
@@ -559,7 +559,7 @@ class Provider:
self
.
debug
(
f
"<debug>Duplicate dependencies for {dep_name}</debug>"
)
# Regrouping by constraint
by_constraint
=
{}
by_constraint
:
Dict
[
str
,
List
[
Dependency
]]
=
{}
for
dep
in
deps
:
if
dep
.
constraint
not
in
by_constraint
:
by_constraint
[
dep
.
constraint
]
=
[]
...
...
@@ -723,6 +723,8 @@ class Provider:
if
message
.
startswith
(
"fact:"
):
if
"depends on"
in
message
:
m
=
re
.
match
(
r"fact: (.+?) depends on (.+?) \((.+?)\)"
,
message
)
if
m
is
None
:
raise
ValueError
(
f
"Unable to parse fact: {message}"
)
m2
=
re
.
match
(
r"(.+?) \((.+?)\)"
,
m
.
group
(
1
))
if
m2
:
name
=
m2
.
group
(
1
)
...
...
src/poetry/puzzle/solver.py
View file @
6ff23efb
...
...
@@ -57,7 +57,7 @@ class Solver:
provider
=
Provider
(
self
.
_package
,
self
.
_pool
,
self
.
_io
)
self
.
_provider
=
provider
self
.
_overrides
=
[]
self
.
_overrides
:
List
[
Dict
]
=
[]
@property
def
provider
(
self
)
->
Provider
:
...
...
@@ -94,7 +94,7 @@ class Solver:
)
def
solve_in_compatibility_mode
(
self
,
overrides
:
Tuple
[
Dict
],
use_latest
:
List
[
str
]
=
None
self
,
overrides
:
Tuple
[
Dict
,
...
],
use_latest
:
List
[
str
]
=
None
)
->
Tuple
[
List
[
"Package"
],
List
[
int
]]:
locked
=
{}
for
package
in
self
.
_locked
.
packages
:
...
...
@@ -178,10 +178,11 @@ class Solver:
return
final_packages
,
depths
DFSNodeID
=
Tuple
[
str
,
FrozenSet
[
str
],
bool
]
class
DFSNode
:
def
__init__
(
self
,
id
:
Tuple
[
str
,
FrozenSet
[
str
],
bool
],
name
:
str
,
base_name
:
str
)
->
None
:
def
__init__
(
self
,
id
:
DFSNodeID
,
name
:
str
,
base_name
:
str
)
->
None
:
self
.
id
=
id
self
.
name
=
name
self
.
base_name
=
base_name
...
...
@@ -205,9 +206,9 @@ class VisitedState(enum.Enum):
def
depth_first_search
(
source
:
"PackageNode"
,
aggregator
:
Callable
)
->
List
[
Tuple
[
Package
,
int
]]:
back_edges
=
defaultdict
(
list
)
visited
=
{}
topo_sorted_nodes
=
[]
back_edges
:
Dict
[
DFSNodeID
,
List
[
"PackageNode"
]]
=
defaultdict
(
list
)
visited
:
Dict
[
DFSNodeID
,
VisitedState
]
=
{}
topo_sorted_nodes
:
List
[
"PackageNode"
]
=
[]
dfs_visit
(
source
,
back_edges
,
visited
,
topo_sorted_nodes
)
...
...
@@ -233,8 +234,8 @@ def depth_first_search(
def
dfs_visit
(
node
:
"PackageNode"
,
back_edges
:
Dict
[
str
,
List
[
"PackageNode"
]],
visited
:
Dict
[
str
,
VisitedState
],
back_edges
:
Dict
[
DFSNodeID
,
List
[
"PackageNode"
]],
visited
:
Dict
[
DFSNodeID
,
VisitedState
],
sorted_nodes
:
List
[
"PackageNode"
],
)
->
bool
:
if
visited
.
get
(
node
.
id
,
VisitedState
.
Unvisited
)
==
VisitedState
.
Visited
:
...
...
@@ -292,12 +293,14 @@ class PackageNode(DFSNode):
if
not
previous
:
self
.
category
=
"dev"
self
.
groups
=
frozenset
()
self
.
groups
:
FrozenSet
[
str
]
=
frozenset
()
self
.
optional
=
True
el
se
:
el
if
dep
:
self
.
category
=
"main"
if
"default"
in
dep
.
groups
else
"dev"
self
.
groups
=
dep
.
groups
self
.
optional
=
dep
.
is_optional
()
else
:
raise
ValueError
(
"Both previous and dep must be passed"
)
super
()
.
__init__
(
(
package
.
complete_name
,
self
.
groups
,
self
.
optional
),
...
...
@@ -315,7 +318,8 @@ class PackageNode(DFSNode):
self
.
seen
.
append
(
self
.
package
)
if
(
self
.
previous_dep
self
.
dep
and
self
.
previous_dep
and
self
.
previous_dep
is
not
self
.
dep
and
self
.
previous_dep
.
name
==
self
.
dep
.
name
):
...
...
@@ -359,7 +363,7 @@ class PackageNode(DFSNode):
return
children
def
visit
(
self
,
parents
:
"PackageNode"
)
->
None
:
def
visit
(
self
,
parents
:
List
[
"PackageNode"
]
)
->
None
:
# The root package, which has no parents, is defined as having depth -1
# So that the root package's top-level dependencies have depth 0.
self
.
depth
=
1
+
max
(
...
...
@@ -376,7 +380,7 @@ def aggregate_package_nodes(
)
->
Tuple
[
Package
,
int
]:
package
=
nodes
[
0
]
.
package
depth
=
max
(
node
.
depth
for
node
in
nodes
)
groups
=
[]
groups
:
List
[
str
]
=
[]
for
node
in
nodes
:
groups
.
extend
(
node
.
groups
)
...
...
src/poetry/puzzle/transaction.py
View file @
6ff23efb
...
...
@@ -33,7 +33,7 @@ class Transaction:
from
poetry.installation.operations.uninstall
import
Uninstall
from
poetry.installation.operations.update
import
Update
operations
=
[]
operations
:
List
[
"OperationTypes"
]
=
[]
for
result_package
,
priority
in
self
.
_result_packages
:
installed
=
False
...
...
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