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
0adc1c58
Commit
0adc1c58
authored
May 19, 2023
by
Chris Kuehl
Committed by
Randy Döring
May 23, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
perf: avoid iterating through multiple caches for contradicted_incompatibilities (#7950)
parent
f54864e4
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
16 additions
and
14 deletions
+16
-14
src/poetry/mixology/version_solver.py
+16
-14
No files found.
src/poetry/mixology/version_solver.py
View file @
0adc1c58
...
...
@@ -105,9 +105,10 @@ class VersionSolver:
self
.
_provider
=
provider
self
.
_dependency_cache
=
DependencyCache
(
provider
)
self
.
_incompatibilities
:
dict
[
str
,
list
[
Incompatibility
]]
=
{}
self
.
_contradicted_incompatibilities
:
dict
[
int
,
set
[
Incompatibility
]]
=
(
collections
.
defaultdict
(
set
)
)
self
.
_contradicted_incompatibilities
:
set
[
Incompatibility
]
=
set
()
self
.
_contradicted_incompatibilities_by_level
:
dict
[
int
,
set
[
Incompatibility
]
]
=
collections
.
defaultdict
(
set
)
self
.
_solution
=
PartialSolution
()
@property
...
...
@@ -156,10 +157,7 @@ class VersionSolver:
# we can derive stronger assignments sooner and more eagerly find
# conflicts.
for
incompatibility
in
reversed
(
self
.
_incompatibilities
[
package
]):
if
any
(
incompatibility
in
c
for
c
in
self
.
_contradicted_incompatibilities
.
values
()
):
if
incompatibility
in
self
.
_contradicted_incompatibilities
:
continue
result
=
self
.
_propagate_incompatibility
(
incompatibility
)
...
...
@@ -208,9 +206,10 @@ class VersionSolver:
# If term is already contradicted by _solution, then
# incompatibility is contradicted as well and there's nothing new we
# can deduce from it.
self
.
_contradicted_incompatibilities
[
self
.
_solution
.
decision_level
]
.
add
(
incompatibility
)
self
.
_contradicted_incompatibilities
.
add
(
incompatibility
)
self
.
_contradicted_incompatibilities_by_level
[
self
.
_solution
.
decision_level
]
.
add
(
incompatibility
)
return
None
elif
relation
==
SetRelation
.
OVERLAPPING
:
# If more than one term is inconclusive, we can't deduce anything about
...
...
@@ -228,9 +227,10 @@ class VersionSolver:
if
unsatisfied
is
None
:
return
_conflict
self
.
_contradicted_incompatibilities
[
self
.
_solution
.
decision_level
]
.
add
(
incompatibility
)
self
.
_contradicted_incompatibilities
.
add
(
incompatibility
)
self
.
_contradicted_incompatibilities_by_level
[
self
.
_solution
.
decision_level
]
.
add
(
incompatibility
)
adverb
=
"not "
if
unsatisfied
.
is_positive
()
else
""
self
.
_log
(
f
"derived: {adverb}{unsatisfied.dependency}"
)
...
...
@@ -327,7 +327,9 @@ class VersionSolver:
for
level
in
range
(
self
.
_solution
.
decision_level
,
previous_satisfier_level
,
-
1
):
self
.
_contradicted_incompatibilities
.
pop
(
level
,
None
)
self
.
_contradicted_incompatibilities
.
difference_update
(
self
.
_contradicted_incompatibilities_by_level
.
pop
(
level
,
set
()),
)
self
.
_dependency_cache
.
clear_level
(
level
)
self
.
_solution
.
backtrack
(
previous_satisfier_level
)
...
...
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