Opened 3 years ago

Last modified 3 years ago

#32764 closed New feature

pass getattr() for settings to the settings module — at Initial Version

Reported by: Mike Brancato Owned by: nobody
Component: Core (Other) Version: 3.2
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

When the Settings class loads the global settings, it roughly does the following.

  1. Uses importlib to instantiate the settings module.
  2. Iterates thru the upper-case attributes of the module.
  3. Assigns the value of the module attribute to an attribute on the Settings class instance.

setting_value = getattr(mod, setting)

This effectively makes dynamic settings impossible. There are probably many use cases for settings which change during runtime, my use-case is dynamic credentials that rotate periodically. So I've used features from PEP-562 (requires Python 3.7) to make certain attributes of a module dynamic. The only requirement really is that getattr() be called on the module.

Is there any reason that the Settings class could instead maintain a list of settings and use a __getattr__ method to check known settings and pass those to the module?

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top