feat: add module member name sorting to Stubgen #938
+15
−2
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.
hey @wjakob, thanks for the awesome package.
this relates to #899 (but may not be exactly the same thing). My stubs are getting generated out of order, and therefore have
Undefined name
errors for some default values when running things like ruff on the output, due toinspect.getmembers()
sorting members alphabetically.I recognize this is a tricky topic, so this PR is designed to do nothing by default, but leave a little bit of agency to the end user. It adds a new
member_sort
parameter toStubGen
if a Callable or None (the default) is passed, it is used directly in
sorted(getmembers(value), key=self. member_sort)
if the literal string
'as-defined'
is passed, then the module members are sorted as they are defined in the module (using the module__dict__
).let me know what you think