Opened 4 years ago

Last modified 4 years ago

#32764 closed New feature

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

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 (last modified by Mike Brancato)

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 not instead maintain a list of settings and use a __getattr__ method to check known settings and pass those to the module?

Change History (1)

comment:1 by Mike Brancato, 4 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top