Skip to content

Commit 532faed

Browse files
committed
avoid a hot splitlines
1 parent b6feb8b commit 532faed

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

src/attr/_make.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ def _compile_and_eval(
223223
eval(bytecode, globs, locs)
224224

225225

226-
def _make_method(script, filename, globs, locals=None) -> dict:
226+
def _make_method(script, scriptlines, filename, globs, locals=None) -> dict:
227227
"""
228228
Create the method with the script given and return the method object.
229229
"""
@@ -237,7 +237,7 @@ def _make_method(script, filename, globs, locals=None) -> dict:
237237
linecache_tuple = (
238238
len(script),
239239
None,
240-
script.splitlines(True),
240+
scriptlines,
241241
filename,
242242
)
243243
old_val = linecache.cache.setdefault(filename, linecache_tuple)
@@ -534,6 +534,7 @@ def _make_cached_property_getattr(cached_properties, original_getattr, cls):
534534

535535
return _make_method(
536536
"\n".join(lines),
537+
lines,
537538
unique_filename,
538539
glob,
539540
locals={
@@ -769,13 +770,15 @@ def __repr__(self):
769770

770771
def _eval_snippets(self) -> None:
771772
"""Evaluate any registered snippets in one go."""
772-
script = "\n".join([snippet[0] for snippet in self._script_snippets])
773+
script_lines = [snippet[0] for snippet in self._script_snippets]
774+
script = "\n".join(script_lines)
773775
globs = {}
774776
for _, snippet_globs, _ in self._script_snippets:
775777
globs.update(snippet_globs)
776778

777779
locs = _make_method(
778780
script,
781+
script_lines,
779782
filename=_generate_unique_filename(self._cls, "methods"),
780783
globs=globs,
781784
)

0 commit comments

Comments
 (0)