Skip to content

BUG: ensure Config classes' docstrings remain available at runtime for introspection (fix calling ConfigNamespace.help under Python's optimized mode) - #17548

Merged
pllim merged 1 commit into
astropy:mainfrom
neutrinoceros:config/bug/fix_ConfigNamespace_help_optimized_mode
Dec 17, 2024
Merged

pllim merged 1 commit into
astropy:mainfrom
neutrinoceros:config/bug/fix_ConfigNamespace_help_optimized_mode

Conversation

@neutrinoceros

@neutrinoceros neutrinoceros commented Dec 17, 2024 •

Copy link
Copy Markdown
Contributor

Description

ref #17472
This is a direct follow up to #13499 by @eerovaher
Since ConfigNamespace.help relies on the availability of docstrings at runtime, we can override the optimization that drops them by setting a class level __doc__ attribute instead of writing a docstring normally.
To be clear, it is probably not a great idea to use the optimized mode (supposedly meant for production-ready applications) with the help (which I think is targetted at REPL users), but if we can make it work for cheap, I think it's still worth a shot.

Specifically, this patch allows the following tests to pass with PYTHONOPTIMIZE=2:

astropy/config/tests/test_configs.py::test_help
docs/config/index.rst::index.rst
  • By checking this box, the PR author has requested that maintainers do NOT use the "Squash and Merge" button. Maintainers should respect this when possible; however, the final decision is at the discretion of the maintainer that merges the PR.

@github-actions

Copy link
Copy Markdown
Contributor

Thank you for your contribution to Astropy! 🌌 This checklist is meant to remind the package maintainers who will review this pull request of some common things to look for.

  • Do the proposed changes actually accomplish desired goals?
  • Do the proposed changes follow the Astropy coding guidelines?
  • Are tests added/updated as required? If so, do they follow the Astropy testing guidelines?
  • Are docs added/updated as required? If so, do they follow the Astropy documentation guidelines?
  • Is rebase and/or squash necessary? If so, please provide the author with appropriate instructions. Also see instructions for rebase and squash.
  • Did the CI pass? If no, are the failures related? If you need to run daily and weekly cron jobs as part of the PR, please apply the "Extra CI" label. Codestyle issues can be fixed by the bot.
  • Is a change log needed? If yes, did the change log check pass? If no, add the "no-changelog-entry-needed" label. If this is a manual backport, use the "skip-changelog-checks" label unless special changelog handling is necessary.
  • Is this a big PR that makes a "What's new?" entry worthwhile and if so, is (1) a "what's new" entry included in this PR and (2) the "whatsnew-needed" label applied?
  • At the time of adding the milestone, if the milestone set requires a backport to release branch(es), apply the appropriate "backport-X.Y.x" label(s) before merge.

@github-actions

Copy link
Copy Markdown
Contributor

👋 Thank you for your draft pull request! Do you know that you can use [ci skip] or [skip ci] in your commit messages to skip running continuous integration tests until you are ready?

@neutrinoceros neutrinoceros changed the title BUG: ensure Config classes' docstrings remain available at runtime for introspection (fix calling ConfigNamespace.help under Python's optimized mode) BUG: ensure Config classes' docstrings remain available at runtime for introspection (fix calling ConfigNamespace.help under Python's optimized mode) Dec 17, 2024
@neutrinoceros
neutrinoceros force-pushed the config/bug/fix_ConfigNamespace_help_optimized_mode branch from 4730ae9 to 2e7dd3a Compare December 17, 2024 11:11
…r introspection (fix calling ConfigNamespace.help under Python's optimized mode)
@neutrinoceros
neutrinoceros force-pushed the config/bug/fix_ConfigNamespace_help_optimized_mode branch from 2e7dd3a to 328c92d Compare December 17, 2024 11:21
@neutrinoceros
neutrinoceros marked this pull request as ready for review December 17, 2024 11:46

@pllim pllim left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM since the changes do not fail CI and doc renders okay. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants