Skip to content

[bug] maximum recursion #727

@remigermain

Description

@remigermain

Describe the bug
A error occure when i add files in "settings_file"
RecursionError: maximum recursion depth exceeded while calling a Python object

To Reproduce
in unique folder create:

settings.py
from dynaconf import LazySettings
import sys

sys.modules[__name__] = LazySettings(settings_files=["settings.toml"])
main.py
import settings

print(settings.USER)
settings.toml
USER = "admin" 

Executing under the following environment

python main.py

Expected behavior

...
module = getmodule(object, file)
  File "/usr/local/lib/python3.7/inspect.py", line 733, in getmodule
    if ismodule(module) and hasattr(module, '__file__'):
  File "/usr/local/lib/python3.7/inspect.py", line 70, in ismodule
    return isinstance(object, types.ModuleType)
  File "/usr/local/lib/python3.7/site-packages/dynaconf/utils/functional.py", line 16, in inner
    self._setup()
  File "/usr/local/lib/python3.7/site-packages/dynaconf/base.py", line 164, in _setup
    settings_module=settings_module, **self._kwargs
  File "/usr/local/lib/python3.7/site-packages/dynaconf/base.py", line 233, in __init__
    self.execute_loaders()
  File "/usr/local/lib/python3.7/site-packages/dynaconf/base.py", line 961, in execute_loaders
    default_loader(self, self._defaults)
  File "/usr/local/lib/python3.7/site-packages/dynaconf/loaders/__init__.py", line 33, in default_loader
    if not obj.exists(key):
  File "/usr/local/lib/python3.7/site-packages/dynaconf/base.py", line 447, in exists
    return self.get(key, fresh=fresh, default=missing) is not missing
  File "/usr/local/lib/python3.7/site-packages/dynaconf/base.py", line 399, in get
    nested_sep = self._store.get("NESTED_SEPARATOR_FOR_DYNACONF")
  File "/usr/local/lib/python3.7/site-packages/dynaconf/utils/boxing.py", line 16, in evaluate
    value = f(dynabox, item, *args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/dynaconf/utils/boxing.py", line 75, in get
    return self._case_insensitive_get(item, default)
  File "/usr/local/lib/python3.7/site-packages/dynaconf/utils/boxing.py", line 65, in _case_insensitive_get
    lower_self = {k.casefold(): v for k, v in self.items()}
  File "/usr/local/lib/python3.7/site-packages/dynaconf/vendor/box/box.py", line 119, in items
    def items(A):return[(B,A[B])for B in A.keys()]
  File "/usr/local/lib/python3.7/site-packages/dynaconf/vendor/box/box.py", line 119, in <listcomp>
    def items(A):return[(B,A[B])for B in A.keys()]
  File "/usr/local/lib/python3.7/site-packages/dynaconf/utils/boxing.py", line 19, in evaluate
    if getattr(value, "_dynaconf_lazy_format", None):
  File "/usr/local/lib/python3.7/site-packages/dynaconf/utils/boxing.py", line 16, in evaluate
    value = f(dynabox, item, *args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/dynaconf/utils/boxing.py", line 36, in __getattr__
    return super(DynaBox, self).__getattr__(item, *args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/dynaconf/vendor/box/box.py", line 168, in __getattr__
    try:C=A.__getitem__(B,_ignore_default=_G)
  File "/usr/local/lib/python3.7/site-packages/dynaconf/utils/boxing.py", line 16, in evaluate
    value = f(dynabox, item, *args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/dynaconf/utils/boxing.py", line 44, in __getitem__
    return super(DynaBox, self).__getitem__(item, *args, **kwargs)
RecursionError: maximum recursion depth exceeded

Environment (please complete the following information):

  • OS: [Linux/Ubuntu18]
  • Dynaconf Version [3.1.7]
  • Python version [3.7.3]

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions