Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
slapos.buildout
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
6
Merge Requests
6
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
slapos.buildout
Commits
25140175
Commit
25140175
authored
Nov 09, 2023
by
Xavier Thompson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[opti] Remove redundant deepcopies
parent
4f666926
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
19 additions
and
30 deletions
+19
-30
src/zc/buildout/buildout.py
src/zc/buildout/buildout.py
+19
-30
No files found.
src/zc/buildout/buildout.py
View file @
25140175
...
...
@@ -2028,41 +2028,30 @@ def _dists_sig(dists):
def
_update_section
(
in1
,
s2
):
s1
=
copy
.
deepcopy
(
in1
)
# Base section 2 on section 1; section 1 is copied, with key-value pairs
# in section 2 overriding those in section 1. If there are += or -=
# operators in section 2, process these to add or subtract items (delimited
# by newlines) from the preexisting values.
s2
=
copy
.
deepcopy
(
s2
)
# avoid mutating the second argument, which is unexpected
# Sort on key, then on the addition or subtraction operator (+ comes first)
for
k
,
v
in
sorted
(
s2
.
items
(),
key
=
lambda
x
:
(
x
[
0
].
rstrip
(
' +'
),
x
[
0
][
-
1
])):
# in section 2 overriding those in section 1.
# If there are += or -= operators in s2, process these to add or subtract
# items (delimited by newlines) from the preexisting values.
# Sort on key, then on + and - operators, so that KEY < KEY + < KEY -, to
# process them in this order if several are defined in the same section.
keysort
=
lambda
x
:
(
x
[
0
].
rstrip
(
' +'
),
x
[
0
].
endswith
(
'+'
))
for
k
,
v
in
sorted
(
s2
.
items
(),
key
=
keysort
):
if
k
.
endswith
(
'+'
):
key
=
k
.
rstrip
(
' +'
)
implicit_value
=
SectionKey
(
""
,
"IMPLICIT_VALUE"
)
# Find v1 in s2 first; it may have been defined locally too.
section_key
=
s2
.
get
(
key
,
s1
.
get
(
key
,
implicit_value
))
section_key
=
copy
.
deepcopy
(
section_key
)
section_key
.
addToValue
(
v
.
value
,
v
.
source
)
s2
[
key
]
=
section_key
del
s2
[
k
]
value
=
s1
.
get
(
key
,
SectionKey
(
""
,
"IMPLICIT_VALUE"
))
value
.
addToValue
(
v
.
value
,
v
.
source
)
s1
[
key
]
=
value
elif
k
.
endswith
(
'-'
):
key
=
k
.
rstrip
(
' -'
)
implicit_value
=
SectionKey
(
""
,
"IMPLICIT_VALUE"
)
# Find v1 in s2 first; it may have been set by a += operation first
section_key
=
s2
.
get
(
key
,
s1
.
get
(
key
,
implicit_value
))
section_key
=
copy
.
deepcopy
(
section_key
)
section_key
.
removeFromValue
(
v
.
value
,
v
.
source
)
s2
[
key
]
=
section_key
del
s2
[
k
]
_update_verbose
(
s1
,
s2
)
return
s1
def
_update_verbose
(
s1
,
s2
):
for
key
,
v2
in
s2
.
items
():
if
key
in
s1
:
v1
=
s1
[
key
]
v1
.
overrideValue
(
v2
)
value
=
s1
.
get
(
key
,
SectionKey
(
""
,
"IMPLICIT_VALUE"
))
value
.
removeFromValue
(
v
.
value
,
v
.
source
)
s1
[
key
]
=
value
else
:
s1
[
key
]
=
copy
.
deepcopy
(
v2
)
if
k
in
s1
:
v1
=
s1
[
k
]
v1
.
overrideValue
(
v
)
else
:
s1
[
k
]
=
v
return
s1
def
_update
(
in1
,
d2
):
d1
=
copy
.
deepcopy
(
in1
)
...
...
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