This repository has been archived by the owner on Apr 26, 2024. It is now read-only.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Speedup tests by caching HomeServerConfig instances #15284
Speedup tests by caching HomeServerConfig instances #15284
Changes from 4 commits
743af2e
22865fa
a4027d4
64e9d5d
02bcd46
11f78e8
dd086ad
4e589d3
813dc8a
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While I don't fully understand the need for this function, I think what you probably want to do here is
and replace
if root
withif isinstance(config, RootConfig)
. That should help avoid the casts.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like mypy can't figure it out:
prints:
I'll tell it to ignore the issue
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't follow why we're doing the deepcopying. Is it to allow tests to mutate config at test-time?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or, put differently: what sort of validation are we avoiding here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, many of them do.
jsonschema and compiling Jinja templates. Profiling interfers heavily with the runtimes there, so I cannot easily get exact timings.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if its easier to return the config wrapped in a class that stores any modifications on itself, e.g.:
that way you avoid having to try and write a deep copy mechanism, while ensuring the underlying config object doesn't change?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This would only work when setting attributes directly to the root attribute. Otherwise,
root.foo.bar = "abc"
would add an attribute to the objectroot.foo
, but we still need to somehow get rid of it when resettingroot
.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah yup, you're totally right.