dot-dsl: remove mutable default arguments#1838
Merged
Merged
Conversation
yawpitch
approved these changes
Jul 10, 2019
Contributor
yawpitch
left a comment
There was a problem hiding this comment.
Agreed that we should remove the usage of mutable defaults. Also agreed that it's sensible to not provide default values for the Edge and Node classes, as they're dependent on Graph, which is the entry-point interface. Because Graph is the entry-point I think it's reasonable to let it have the default so that an empty Graph can be created.
Contributor
|
@cmccandless any thoughts on this one before I merge? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Unintentional mutable default arguments lead to surprising results and are confusing to newcomers to say the least ( https://docs.python-guide.org/writing/gotchas ).
A mutable default argument
can be replaced with
or possibly even more compact
However, this particular exercise forces all of the arguments to be passed through the test suite (specifically,
test_malformed_EDGE). In that case, I think it makes sense not to provide any defaults for the constructors ofNodeandEdgeat all, and an immutable default (or, again, no default at all) for the constructor ofGraph.