All Versions
57
Latest Version
Avg Release Cycle
43 days
Latest Release
122 days ago

Changelog History
Page 3

  • v2.2.2 Changes

    December 26, 2019
    • πŸš€ Release version 2.2.2. [Bruno Rocha]

    Shortlog of commits since last release:

      Bruno Rocha (3):
            Release version 2.2.1
            Fix #258 custom message for validators
            Pin python-box version because of a breaking release
    
      Hildeberto (1):
            Close #178. Included integration tests redis/vault
    
    • πŸš€ Pin python-box version because of a breaking release. [Bruno Rocha]

    The release of python-box https://github.com/cdgriffith/Box/pull/116 is a breaking change.

    So pinning this until this project addapts.

    Also pinning other direct deps.

    • πŸ›  Fix #258 custom message for validators. [Bruno Rocha]
    • βœ… Close #178. Included integration tests redis/vault. [Hildeberto]
    • πŸš€ Release version 2.2.1. [Bruno Rocha]

    Shortlog of commits since last release:

      Bruno Rocha (4):
            Release version 2.2.0
            Fix #251 recursive call was using mutable memoized data (#254)
            Fix #266 created new variable FORCE_ENV to override ENV_FOR_DYNACONF
            Fix coverage for validators
    
      David Moreau Simard (1):
            Add ara as a user of dynaconf (#252)
    
      Emmanuel Nosa Evbuomwan (1):
            Update sensitive_secrets.md
    
      Hildeberto (1):
            Adjust remote upstream URL
    
      Jan Willhaus (1):
            Add support for detecting duplicate validators being added (and ignore them) (#256)
    
      Oliver Lehmann (5):
            fix: env_loader.write: quote_mode for non-string values
            : added line break
            fix str comparison
            changing quote logic
            fix open error @py3.5
    
  • v2.2.1 Changes

    December 06, 2019

    πŸ›  Fix

    - Env_loader.write: quote_mode for non-string values. [Oliver Lehmann]
    
    Other
    
    • πŸš€ Release version 2.2.1. [Bruno Rocha]

    Shortlog of commits since last release:

      Bruno Rocha (4):
            Release version 2.2.0
            Fix #251 recursive call was using mutable memoized data (#254)
            Fix #266 created new variable FORCE_ENV to override ENV_FOR_DYNACONF
            Fix coverage for validators
    
      David Moreau Simard (1):
            Add ara as a user of dynaconf (#252)
    
      Emmanuel Nosa Evbuomwan (1):
            Update sensitive_secrets.md
    
      Hildeberto (1):
            Adjust remote upstream URL
    
      Jan Willhaus (1):
            Add support for detecting duplicate validators being added (and ignore them) (#256)
    
      Oliver Lehmann (5):
            fix: env_loader.write: quote_mode for non-string values
            : added line break
            fix str comparison
            changing quote logic
            fix open error @py3.5
    
    • πŸ›  Fix coverage for validators. [Bruno Rocha]
    • Fix #266 created new variable FORCE_ENV to override ENV_FOR_DYNACONF. [Bruno Rocha]
    • Adjust remote upstream URL. [Hildeberto]
    • ⚑️ Update sensitive_secrets.md. [Emmanuel Nosa Evbuomwan]

    Updated the file reference from settings.toml{json|py|ini|yaml} to the convention used thus far; secrets.toml{json|py|ini|yaml}. This can help alleviate the slightest chance of the information becoming misleading or confusing. This can also be ignored if Dynaconf can be set to search for secrets in files other than secrets.<ext>

    • πŸ›  Fix open error @py3.5. [Oliver Lehmann]
    • Changing quote logic. [Oliver Lehmann]
    • πŸ›  Fix str comparison. [Oliver Lehmann]
    • : added line break. [Oliver Lehmann]
    • βž• Add support for detecting duplicate validators being added (and ignore them) (#256) [Jan Willhaus]
    • πŸ›  Fix #251 recursive call was using mutable memoized data (#254) [Bruno Rocha]

    replaced with recursive passing of parent data.

    NOTE to SELF: Never! use a mutable memoized data Always use == to compare when you dont know the types

    • βž• Add ara as a user of dynaconf (#252) [David Moreau Simard]
    • πŸš€ Release version 2.2.0. [Bruno Rocha]

    Shortlog of commits since last release:

      Bruno Rocha (5):
            Release version 2.1.1
            Fix #236 added .local. files loading and module impersonation docs (#239)
            Replace key.upper with `upperfy` function that keeps `__` attributes (#240)
            Fix #241 new merge standards (#243)
            Add support for PRELOAD_ setting. (#244)
    
      Kedar Kulkarni (1):
            Fixing how filename.local.* files are loaded (#238)
    
      paskozdilar (1):
            fix crash on empty settings (#242)
    
  • v2.2.0 Changes

    October 09, 2019
    • πŸš€ Release version 2.2.0. [Bruno Rocha]

    Shortlog of commits since last release:

      Bruno Rocha (5):
            Release version 2.1.1
            Fix #236 added .local. files loading and module impersonation docs (#239)
            Replace key.upper with `upperfy` function that keeps `__` attributes (#240)
            Fix #241 new merge standards (#243)
            Add support for PRELOAD_ setting. (#244)
    
      Kedar Kulkarni (1):
            Fixing how filename.local.* files are loaded (#238)
    
      paskozdilar (1):
            fix crash on empty settings (#242)
    
    • βž• Add support for PRELOAD_ setting. (#244) [Bruno Rocha]
    • πŸ›  Fix #241 new merge standards (#243) [Bruno Rocha]

    Adds dynaconf_merge and @merge for better merge standards. ref #241

    • πŸ›  Fix crash on empty settings (#242) [paskozdilar]

      • fix crash on empty settings
      • add test for empty environment
      • fix PEP 8 issue (expected 2 blank lines, found 1)
    • Replace key.upper with upperfy function that keeps __ attributes (#240) [Bruno Rocha]

    • πŸ›  Fix #236 added .local. files loading and module impersonation docs (#239) [Bruno Rocha]

    also MERGE_ENABLED is no more deprecated.

    • πŸ›  Fixing how filename.local.* files are loaded (#238) [Kedar Kulkarni]
    • πŸš€ Release version 2.1.1. [Bruno Rocha]

    Shortlog of commits since last release:

      Bruno Rocha (7):
            Release version 2.1.0
            Improve validators to use `from_env` method (#225)
            Add info about dunder envvars on django.md docs guide (#226)
            Fix #228 add `ignore` argument to Django explicit mode. (#229)
            Improvement to close #230 - do not throw error for base envs. (#231)
            dynaconf init will not write all possible envs, only [default] (#233)
            When both enabled, Vault has the priority over Redis for overriding (#234)
    
      Dave Barnow (1):
            Fix typo in CLI init (#227)
    
      Kedar Kulkarni (1):
            Fixing self._root_path to fall back to os.getcwd() only when `settings.load_file` is called directly or from includes (#232)
    
  • v2.1.1 Changes

    September 16, 2019
    • πŸš€ Release version 2.1.1. [Bruno Rocha]

    Shortlog of commits since last release:

      Bruno Rocha (7):
            Release version 2.1.0
            Improve validators to use `from_env` method (#225)
            Add info about dunder envvars on django.md docs guide (#226)
            Fix #228 add `ignore` argument to Django explicit mode. (#229)
            Improvement to close #230 - do not throw error for base envs. (#231)
            dynaconf init will not write all possible envs, only [default] (#233)
            When both enabled, Vault has the priority over Redis for overriding (#234)
    
      Dave Barnow (1):
            Fix typo in CLI init (#227)
    
      Kedar Kulkarni (1):
            Fixing self._root_path to fall back to os.getcwd() only when `settings.load_file` is called directly or from includes (#232)
    
    • When both enabled, Vault has the priority over Redis for overriding (#234) [Bruno Rocha]
    • 0️⃣ Dynaconf init will not write all possible envs, only default [Bruno Rocha]
    • Fixing self._root_path to fall back to os.getcwd() only when settings.load_file is called directly or from includes (#232) [Kedar Kulkarni]
    • πŸ‘Œ Improvement to close #230 - do not throw error for base envs. (#231) [Bruno Rocha]
    • πŸ›  Fix #228 add ignore argument to Django explicit mode. (#229) [Bruno Rocha]
    • πŸ›  Fix typo in CLI init (#227) [Dave Barnow]
    • βž• Add info about dunder envvars on django.md docs guide (#226) [Bruno Rocha]
    • πŸ‘Œ Improve validators to use from_env method (#225) [Bruno Rocha]
    • πŸš€ Release version 2.1.0. [Bruno Rocha]

    Shortlog of commits since last release:

      Bruno Rocha (8):
            Release version 2.0.4
            Merge branch 'dgarcia360-master'
            Fix #197 add support for DOTTED__ENV__VARS (#215)
            Add support to export merged env to filesystem via cli. (#217)
            Adds `from_env` method and change `_store` to be a `DynaBox` (#219)
            hotfix: next release will be 2.1.0 because new features added. (#220)
            Fix `make test_examples` to use better assertions, redis and vault loader now respects `envs` (#222)
            fix #221 removed JSON,YAML,INI,TOML cosntants from default_settings (#223)
    
      Kedar Kulkarni (1):
            Add `list_envs` function to vault loader and now envs can have `_` on its name.
    
      Pavel Alimpiev (1):
            Fix typo in documentation for a Validator class (#213)
    
      dgarcia360 (3):
            Updated configuration options table to csv table
            Added responsive table fix
            Fix format
    
  • v2.1.0 Changes

    September 05, 2019

    Highlights:

    🍱 🐲Nested envvars w/ DUNDER__KEYS (useful for #django)

    πŸ”§ Lets say you have a configuration like this:

    settings.py

    DATABASES = { 'default': { 'NAME': 'db', 'ENGINE': 'module.foo.engine', 'ARGS': {'timeout': 30} } }
    

    And now you want to change the values of ENGINE to other.module, via environment variables you can use the format ${ENVVAR_PREFIX}_${VARIABLE} __${NESTED_ITEM}__ ${NESTED_ITEM}

    Each __ (dunder, a.k.a double underline) denotes access to nested elements in a dictionary.

    So

    DATABASES['default']['ENGINE'] = 'other.module'
    

    Can be expressed as environment variables as:

    export DYNACONF\_DATABASES\_\_default\_\_ENGINE=other.module
    

    NOTE : if you are using Django extension then the prefix will be DJANGO_ instead of DYNACONF_ and the same if you are using FLASK_ or a custom prefix if you have customized the ENVVAR_PREFIX.

    This will result in

    DATABASES = { 'default': { 'NAME': 'db', 'ENGINE': 'other.module', 'ARGS': {'timeout': 30} } }
    

    βœ… Read more on: https://dynaconf.readthedocs.io/en/latest/guides/environment_variables.html#nested-keys-in-dictionaries-via-environment-variables

    🍱 πŸ”ƒ.from_env easy access to different envs

    Return a new isolated settings object pointing to specified env.

    Example of settings.toml::

    [development]message = 'This is in dev'foo = 1[other]message = 'this is in other env'bar = 2
    

    Then you can use from_env:

    \>\>\> print(settings.from\_env('other').MESSAGE)'This is in other env'\>\>\> print(settings.from\_env('other').BAR)2\>\>\> print(settings.from\_env('other').FOO)AttributeError: settings object has no attribute 'FOO'
    

    The existing settings object remains the same.

    \>\>\> print(settings.MESSAGE)'This is in dev'
    

    βœ… Read more on: https://dynaconf.readthedocs.io/en/latest/guides/advanced_usage.html#from-env

    🍱 πŸ“‹$dynaconf list -o export your settings as a file

    dynaconf list -o path/to/file.yaml
    

    πŸ‘ The above command will export all the items showed by dynaconf list to the desired format which is inferred by the -o file extension, supported formats yaml, toml, ini, json, py

    When using py you may want a flat output (without being nested inside the env key)

    dynaconf list -o path/to/file.py --output-flat
    

    βœ… Read more on: https://dynaconf.readthedocs.io/en/latest/guides/cli.html#exporting-current-environment-as-a-file

    πŸ”’ πŸ”@hashicorp #Vault & @RedisLabs supports multiple envs

    If you want to write to specific env pass the -e option.

    $ dynaconf write redis -v name=Bruno -v database=localhost -v port=1234 -e production
    

    The above data will be recorded in redis as a hash:

    DYNACONF_PRODUCTION {
        NAME='Bruno'
        DATABASE='localhost'
        PORT='@int 1234'
    }
    

    Then to access that values you can set export ENV_FOR_DYNACONF=production or directly via settings.from_env('production').NAME

    βœ… Read more on: https://dynaconf.readthedocs.io/en/latest/guides/external_storages.html

    Dynaconf 2.1.0

    Bruno Rocha (8):
          Release version 2.0.4
          Merge branch 'dgarcia360-master'
          Fix #197 add support for DOTTED __ENV__ VARS (#215)
          Add support to export merged env to filesystem via cli. (#217)
          Adds `from_env` method and change `_store` to be a `DynaBox` (#219)
          hotfix: next release will be 2.1.0 because new features added. (#220)
          Fix `make test_examples` to use better assertions, redis and vault loader now respects `envs` (#222)
          fix #221 removed JSON,YAML,INI,TOML cosntants from default_settings (#223)
    
    Kedar Kulkarni (1):
          Add `list_envs` function to vault loader and now envs can have `_` on its name.
    
    Pavel Alimpiev (1):
          Fix typo in documentation for a Validator class (#213)
    
    dgarcia360 (3):
          Updated configuration options table to csv table
          Added responsive table fix
          Fix format
    
  • v2.0.4 Changes

    August 22, 2019
    • πŸš€ Release version 2.0.4. [Bruno Rocha]

    Shortlog of commits since last release:

      Bruno Rocha (2):
            Release version 2.0.3
            Fix #207 allow python module path name for includes (#209)
    
      MichaΕ‚ Bartoszkiewicz (1):
            Update usage.md (#208)
    
      Pavel Alimpiev (2):
            Refactor Vault integration (#202)
            Update configuration.md (#205)
    
      Tanveer Alam (2):
            Update usage.md (#196)
            Update usage.md (#195)
    
    • πŸ›  Fix #207 allow python module path name for includes (#209) [Bruno Rocha]
    • ⚑️ Update usage.md (#208) [MichaΕ‚ Bartoszkiewicz]

    Change 'FLask' to 'Flask'

    • ⚑️ Update configuration.md (#205) [Pavel Alimpiev]
    • πŸ”¨ Refactor Vault integration (#202) [Pavel Alimpiev]

      • Add AppRole based authorization for Vault loader
      • Fix default value for VAULT_PATH_FOR_DYNACONF, Update docs
      • HVAC automatically adds /secret/ prefix on read and write access
      • /dynaconf was never added to the VAULT_PATH_FOR_DYNACONF value
      • Docs was inconsistent with the actual code base
      • Fix inconsistency in the docs
      • Remove VAULT_SESSION_FOR_DYNACONF config variable.
      • HVAC's session argument must be a fully initialized Session object, that means - it's very complicated to setup Vault client with this argument, via default instruments (.toml, .env, etc)
      • Users can still setup this argument by setting up VAULT_FOR_DYNACONF directly
      • Update documentation for VAULT_* configuration
      • Fix code style
    • ⚑️ Update usage.md (#195) [Tanveer Alam]

    • ⚑️ Update usage.md (#196) [Tanveer Alam]

    • πŸš€ Release version 2.0.3. [Bruno Rocha]

    Shortlog of commits since last release:

      Bruno Rocha (2):
            Release version 2.0.2
            Fix #194 flask.app.config __setitem__ (#199)
    
      Jan Willhaus (1):
            Catch BoxKeyError when contents are TOML parsable but not keyable (#192)
    
      Raoul Snyman (1):
            Use the Key Value API rather than the old 'read' and 'write' methods (#198)
    
  • v2.0.3 Changes

    June 27, 2019
    • πŸš€ Release version 2.0.3. [Bruno Rocha]

    Shortlog of commits since last release:

      Bruno Rocha (2):
            Release version 2.0.2
            Fix #194 flask.app.config __setitem__ (#199)
    
      Jan Willhaus (1):
            Catch BoxKeyError when contents are TOML parsable but not keyable (#192)
    
      Raoul Snyman (1):
            Use the Key Value API rather than the old 'read' and 'write' methods (#198)
    
    • Fix #194 flask.app.config setitem (#199) [Bruno Rocha]

    Flask.config was not proxying setitem attribute so this change adds a call to setitem on contrib/flask_dynaconf

    • πŸ‘‰ Use the Key Value API rather than the old 'read' and 'write' methods (#198) [Raoul Snyman]
    • Catch BoxKeyError when contents are TOML parsable but not keyable (#192) [Jan Willhaus]
    • πŸš€ Release version 2.0.2. [Bruno Rocha]

    Shortlog of commits since last release:

      Bruno Rocha (8):
            Release version 2.0.1
            Add note to release script
            Adhering to Github Community Standards (#175)
            removed pytest-xdist (#181)
            Add example and test for issue #182 (#183)
            Fix #179 dynaconf cli shows only user defined vars unless -a used (#188)
            Fix #184 - workdir should walk to root in ipython REPL (#190)
            Fix #189 added `settings.as_dict()` and `dynaconf list -o file.json` (#191)
    
      Jan Willhaus (4):
            Fix `False` not being an acceptable env (#176)
            Fix  base loader when having no ENVVAR_PREFIX_ (Addresses #177) (#185)
            Hide DeprecationWarning from Pytest when testing for them (#186)
            Replace logging.basicConfig with handler on logger (#187)
    
  • v2.0.2 Changes

    April 29, 2019
    • πŸš€ Release version 2.0.2. [Bruno Rocha]

    Shortlog of commits since last release:

      Bruno Rocha (8):
            Release version 2.0.1
            Add note to release script
            Adhering to Github Community Standards (#175)
            removed pytest-xdist (#181)
            Add example and test for issue #182 (#183)
            Fix #179 dynaconf cli shows only user defined vars unless -a used (#188)
            Fix #184 - workdir should walk to root in ipython REPL (#190)
            Fix #189 added `settings.as_dict()` and `dynaconf list -o file.json` (#191)
    
      Jan Willhaus (4):
            Fix `False` not being an acceptable env (#176)
            Fix  base loader when having no ENVVAR_PREFIX_ (Addresses #177) (#185)
            Hide DeprecationWarning from Pytest when testing for them (#186)
            Replace logging.basicConfig with handler on logger (#187)
    
    • πŸ›  Fix #189 added settings.as_dict() and dynaconf list -o file.json (#191) [Bruno Rocha]
    • πŸ›  Fix #184 - workdir should walk to root in ipython REPL (#190) [Bruno Rocha]
    • πŸ›  Fix #179 dynaconf cli shows only user defined vars unless -a used (#188) [Bruno Rocha]

    Command dynaconf list will show only user defined vars IF --all|-a is passed then it includes internal variables.

    • 🌲 Replace logging.basicConfig with handler on logger (#187) [Jan Willhaus]
    • βœ… Hide DeprecationWarning from Pytest when testing for them (#186) [Jan Willhaus]

      • Hide DeprecationWarnings from Pytest when testing for them
      • Use parametrized test instead of repeating code
    • Fix base loader when having no ENVVAR_PREFIX_ (Addresses #177) (#185) [Jan Willhaus]

      • Fix False not being an acceptable env
      • Additional testcase for prefix being false from envvar
      • Fix mistaken reference to ENVVAR_PREFIX
      • Fix typo
    • βž• Add example and test for issue #182 (#183) [Bruno Rocha]

      • Add working example for issue 182
      • Option 2 added
      • Allowed settings.load_file programmatically
    • βœ‚ Removed pytest-xdist (#181) [Bruno Rocha]

    Now tests run in a separate tmpdir so xdist is not needed anymore

    • πŸ›  Fix False not being an acceptable env (#176) [Jan Willhaus]

      • Fix False not being an acceptable env
      • Additional testcase for prefix being false from envvar
      • unset envvar_prefix after test
    • Adhering to Github Community Standards (#175) [Bruno Rocha]

    • βž• Add note to release script. [Bruno Rocha]

    • πŸš€ Release version 2.0.1. [Bruno Rocha]

    Shortlog of commits since last release:

      Bruno Rocha (17):
            Release version 2.0.0
            Added Django explicit mode to docs (#149)
            HOTIX: Django doc
            Logger is now cached (removed logging import time overhead)
            Update issue templates
            Adjusts issue templates
            Fix Typo in issue template
            fix #160 - invoking directory should not be search breaking point.
            Add explicit call to main() on cli.py (#165)
            Generate coverage.xml file (#167)
            Fix #166 renamed GLOBAL_ENV_ to ENVVAR_PREFIX_ (#168)
            Fix #169 renamed SETTINGS_MODULE_ to SETTINGS_FILE_ (#170)
            HOTFIX config.md on docs [skip ci] (#171)
            Fix some open file descriptors on exampls and tests (#172)
            Fix #151 setup pre-commit and black (#173)
            Add CONTRIBUTING.md, conrtib isntructions and Black badge (#174)
            Fix release script
    
      David Moreau Simard (1):
            Fix typos in bash export examples
    
      Jan Willhaus (2):
            Skip reloading envs for validators that only apply to current_env (#162)
            Fix #163 Allow disabling env prefix (#164)
    
  • v2.0.1 Changes

    April 22, 2019
    • πŸš€ Release version 2.0.1. [Bruno Rocha]

    Shortlog of commits since last release:

      Bruno Rocha (17):
            Release version 2.0.0
            Added Django explicit mode to docs (#149)
            HOTIX: Django doc
            Logger is now cached (removed logging import time overhead)
            Update issue templates
            Adjusts issue templates
            Fix Typo in issue template
            fix #160 - invoking directory should not be search breaking point.
            Add explicit call to main() on cli.py (#165)
            Generate coverage.xml file (#167)
            Fix #166 renamed GLOBAL_ENV_ to ENVVAR_PREFIX_ (#168)
            Fix #169 renamed SETTINGS_MODULE_ to SETTINGS_FILE_ (#170)
            HOTFIX config.md on docs [skip ci] (#171)
            Fix some open file descriptors on exampls and tests (#172)
            Fix #151 setup pre-commit and black (#173)
            Add CONTRIBUTING.md, conrtib isntructions and Black badge (#174)
            Fix release script
    
      David Moreau Simard (1):
            Fix typos in bash export examples
    
      Jan Willhaus (2):
            Skip reloading envs for validators that only apply to current_env (#162)
            Fix #163 Allow disabling env prefix (#164)
    
    • πŸ›  Fix release script. [Bruno Rocha]
    • βž• Add CONTRIBUTING.md, conrtib isntructions and Black badge (#174) [Bruno Rocha]
    • πŸ›  Fix #151 setup pre-commit and black (#173) [Bruno Rocha]

      • Add pre-commit to makefile
      • Fix #151 setup pre-commit and black
    • πŸ›  Fix some open file descriptors on exampls and tests (#172) [Bruno Rocha]

    • πŸš‘ HOTFIX config.md on docs skip ci [Bruno Rocha]

    • Fix #169 renamed SETTINGS_MODULE_ to SETTINGS_FILE_ (#170) [Bruno Rocha]

    Backwards compatibility maintained!

    • Fix #166 renamed GLOBAL_ENV_ to ENVVAR_PREFIX_ (#168) [Bruno Rocha]

      • Fix #166 renamed GLOBAL_ENV_ to ENVVAR_PREFIX_

    See #166

    • Added django compat example
      • Generate coverage.xml file (#167) [Bruno Rocha]
      • βž• Add explicit call to main() on cli.py (#165) [Bruno Rocha]

    To use click-web tool the module should be able to be explicitly called. python -m dynaconf.cli

    • πŸ›  Fix #163 Allow disabling env prefix (#164) [Jan Willhaus, janw [email protected] * Update docs for use of False instead of none]

      • Allow setting GLOBAL_ENV to "" or NoneType to remove prefix
      • Allow for underscore-only prefix with empty string GLOBAL_ENV
      • Test cases for the different GLOBAL_ENV settings
      • Update docs, add usage example
      • Apply suggestions from code review
    • Skip reloading envs for validators that only apply to current_env (#162) [Jan Willhaus]

      • Simplify control flow for single-env use-cases
      • Ensure uppercase env/current_env
      • Add test not reloading env with validation in same env
      • Pep8 compliance
      • Change mock call assertions for support in Py3.5
    • πŸ›  Fix #160 - invoking directory should not be search breaking point. [Bruno Rocha]

    Search should stop at breaking point only if ROOT_PATH is defined

    • πŸ›  Fix Typo in issue template. [Bruno Rocha]
    • Adjusts issue templates. [Bruno Rocha]
    • ⚑️ Update issue templates. [Bruno Rocha]
    • 🚚 Logger is now cached (removed logging import time overhead) [Bruno Rocha]

    Debugged using:

    python3.7 -X importtime -c 'import app' and python3.7 -X importtime -c 'import dynaconf'

    Found that the tries to import logzero were consuming 0.1us (not so much, but we dont want it)

    removed logzero, cached logger using lru_cache (that means that if loglevel changes, log changes)

    • imporved docs and badges.
      • πŸ›  Fix typos in bash export examples. [David Moreau Simard]
      • HOTIX: Django doc. [Bruno Rocha]
      • βž• Added Django explicit mode to docs (#149) [Bruno Rocha]
      • πŸš€ Release version 2.0.0. [Bruno Rocha]

    Shortlog of commits since last release:

      Aaron DeVore (1):
            GH-111: Fix MERGE_ENABLED merging settings with themselves
    
      Bruno Rocha (21):
            Merge branch 'jperras-merge-multiple-settings-files'
            Merge branch 'master' of github.com:rochacbruno/dynaconf
            Fix #106 make PROJECT_ROOT_FOR_DYNACONF to work with custom paths
            Update dynaconf/utils/boxing.py
            Update dynaconf/utils/boxing.py
            Add release script and CHANGELOG in place of history.
            Release version 1.2.0
            Tox is now part of pre-publish command
            Drop Python 3.4
            Release version 1.2.1
            add top contributors
            Fix #129 on settings file, single keys should be case insensitive.
            Fix #125 settings_module not being set on .configure()
            Fix #127 add configurable yaml loader method, default to full_load
            Fix #122 allow disable of core loaders, added examples.
            Fix #117 add support for extra secrets file (like for jenkins CI)
            Fix #110 add docs for dynaconf_include
            Add dynaconf_include examples
            Set up CI with Azure Pipelines (#142)
            Add dynaconf_merge fucntionality for dict and list settings. (#139)
            Preparing for 2.0.0
    
      Byungjin Park (1):
            Fix typo
    
      Jaepil Koh (1):
            Update django.md
    
      Joel Perras (3):
            Allow dotted-path based setting of configuration key/value pairs.
            Handle nested includes in settings files.
            Remove extraneous lines.
    
      Mantas (3):
            Add INSTANCE_FOR_DYNACONF and --instance
            Remove mocker fixture
            Python 3.4 has different error message
    
      Matthias (1):
            Fix small typo in README.md
    
      Pete Savage (1):
            Fix exponential slow down when loader is run multiple times
    
      Raoul Snyman (1):
            Add environments into the path in Vault so that the same Vault server can be used for multiple environments
    
      mspinelli (2):
            fixed infinite recursion caused by copy()
            add tests for dynabox fix
    
  • v2.0.0 Changes

    April 09, 2019
    • πŸš€ Release version 2.0.0. [Bruno Rocha]

    Shortlog of commits since last release:

      Aaron DeVore (1):
            GH-111: Fix MERGE_ENABLED merging settings with themselves
    
      Bruno Rocha (21):
            Merge branch 'jperras-merge-multiple-settings-files'
            Merge branch 'master' of github.com:rochacbruno/dynaconf
            Fix #106 make PROJECT_ROOT_FOR_DYNACONF to work with custom paths
            Update dynaconf/utils/boxing.py
            Update dynaconf/utils/boxing.py
            Add release script and CHANGELOG in place of history.
            Release version 1.2.0
            Tox is now part of pre-publish command
            Drop Python 3.4
            Release version 1.2.1
            add top contributors
            Fix #129 on settings file, single keys should be case insensitive.
            Fix #125 settings_module not being set on .configure()
            Fix #127 add configurable yaml loader method, default to full_load
            Fix #122 allow disable of core loaders, added examples.
            Fix #117 add support for extra secrets file (like for jenkins CI)
            Fix #110 add docs for dynaconf_include
            Add dynaconf_include examples
            Set up CI with Azure Pipelines (#142)
            Add dynaconf_merge fucntionality for dict and list settings. (#139)
            Preparing for 2.0.0
    
      Byungjin Park (1):
            Fix typo
    
      Jaepil Koh (1):
            Update django.md
    
      Joel Perras (3):
            Allow dotted-path based setting of configuration key/value pairs.
            Handle nested includes in settings files.
            Remove extraneous lines.
    
      Mantas (3):
            Add INSTANCE_FOR_DYNACONF and --instance
            Remove mocker fixture
            Python 3.4 has different error message
    
      Matthias (1):
            Fix small typo in README.md
    
      Pete Savage (1):
            Fix exponential slow down when loader is run multiple times
    
      Raoul Snyman (1):
            Add environments into the path in Vault so that the same Vault server can be used for multiple environments
    
      mspinelli (2):
            fixed infinite recursion caused by copy()
            add tests for dynabox fix
    
    • Preparing for 2.0.0. [Bruno Rocha]

    Dynaconf 2.0.0

    • Fix #129 get_fresh should be case insensitive
    • Fix #125 .configure was not loading settings_module passed as argument
    • Fix #127 fix YAML warnings and default to full_load
    • Allow disable of core loaders #122
    • Added support for Jenkins secrets file #117
    • Added more examples for includes #110
    • Moved to Azure Pipelines CI #142
    • Added 100% test coverage on windows (Unit & Functional tests)
    • Deprecated MERGE_ENABLED in favor of local dynaconf_merge
    • Fix #74 - Better File Searching (now building a reasonable Search Tree)
    • Now it finds settings when invoking from out of Script folder
    • Fixed test environment (each test now run in a separate tmpdir)
    • Added a check to avoid Circular references when starting settings inside settings
    • Added Django Extension v2 with better syntax and a lot od inspect instrospetion
    • Updated documentation about new features
    • Added a not that YAML is the recommended format for Django
    • Added support for Django Standalone Script
    • Added support for Django unit testing
    • Fix #148 env was not being passed to custom loaders
    • Fix #144 removed six as it is a Py3.4+ only project
    • Added Backwards compatibility for users using old django Extension
    • start_dotenv is now Lazy (only when settings._setup is called)
    • Added new _FOR_DYNACONF config options ENV_SWITCHER, SKIP_FILES, INCLUDES & SECRETS
    • Renamed config PROJECT_ROOT -> ROOT_PATH
      • βž• Add dynaconf_merge fucntionality for dict and list settings. (#139) [Bruno Rocha]

    If your settings has existing variables of types list ot dict and you want to merge instead of override then the dynaconf_merge and dynaconf_merge_unique stanzas can mark that variable as a candidate for merging.

    For dict value:

    Your main settings file (e.g settings.toml) has an existing DATABASE dict setting on [default] env.

    Now you want to contribute to the same DATABASE key by addind new keys, so you can use dynaconf_merge at the end of your dict:

    In specific [envs]

      [default]
      database = {host="server.com", user="default"}
    
      [development]
      database = {user="dev_user", dynaconf_merge=true}
    
      [production]
      database = {user="prod_user", dynaconf_merge=true}
    

    In an environment variable:

      export DYNACONF_DATABASE='{password=1234, dynaconf_merge=true}'
    

    Or in an additional file (e.g settings.yaml, .secrets.yaml, etc):

      default:
        database:
          password: 1234
          dynaconf_merge: true
    

    The dynaconf_merge token will mark that object to be merged with existing values (of course dynaconf_merge key will not be added to the final settings it is jsut a mark)

    The end result will be on [development] env:

      settings.DATABASE == {'host': 'server.com', 'user': 'dev_user', 'password': 1234}
    

    The same can be applied to lists:

    settings.toml

      [default]
      plugins = ["core"]
    
      [development]
      plugins = ["debug_toolbar", "dynaconf_merge"]
    

    And in environment variable

      export DYNACONF_PLUGINS='["ci_plugin", "dynaconf_merge"]'
    

    Then the end result on [development] is:

      settings.PLUGINS == ["ci_plugin", "debug_toolbar", "core"]
    

    The dynaconf_merge_unique is the token for when you want to avoid duplications in a list.

    Example:

      [default]
      scripts = ['install.sh', 'deploy.sh']
    
      [development]
      scripts = ['dev.sh', 'test.sh', 'deploy.sh', 'dynaconf_merge_unique']
    
      export DYNACONF_SCRIPTS='["deploy.sh", "run.sh", "dynaconf_merge_unique"]'
    

    The end result for [development] will be:

      settings.SCRIPTS == ['install.sh', 'dev.sh', 'test.sh', 'deploy.sh', 'run.sh']
    

    Note that deploy.sh is set 3 times but it is not repeated in the final settings.

    The dynaconf_merge functionality works only for the first level keys, it will not merge subdicts or nested lists (yet).

    • πŸ‘· Set up CI with Azure Pipelines (#142) [Bruno Rocha]

      • setup azure pipelines ci
      • remove travis
      • fix windows support
    • βž• Add dynaconf_include examples. [Bruno Rocha]

    • πŸ›  Fix #110 add docs for dynaconf_include. [Bruno Rocha]

    fix #110

    • πŸ›  Fix #117 add support for extra secrets file (like for jenkins CI) [Bruno Rocha]

    Now it is possible to export SECRETS_FOR_DYNACONF and have this extra point loaded, like in a Jenkins CI you can specify on job.

      secret_file:
        variable: SECRETS_FOR_DYNACONF
        credentials:
          type: specific_credentials
          value: /path/to/secrets_file.toml{json,ini,yaml,py}
    
    

    That variable can also be a list of paths.

    • πŸ›  Fix #122 allow disable of core loaders, added examples. [Bruno Rocha]
    • πŸ›  Fix #127 add configurable yaml loader method, default to full_load. [Bruno Rocha]
    • πŸ›  Fix #125 settings_module not being set on .configure() [Bruno Rocha]
    • πŸ›  Fix #129 on settings file, single keys should be case insensitive. [Bruno Rocha]
    • πŸ”€ GH-111: Fix MERGE_ENABLED merging settings with themselves. [Aaron DeVore]
    • βž• Add top contributors. [Bruno Rocha]
    • πŸš€ Release version 1.2.1. [Bruno Rocha]

    Shortlog of commits since last release:

      Bruno Rocha (9):
            Merge branch 'jperras-merge-multiple-settings-files'
            Merge branch 'master' of github.com:rochacbruno/dynaconf
            Fix #106 make PROJECT_ROOT_FOR_DYNACONF to work with custom paths
            Update dynaconf/utils/boxing.py
            Update dynaconf/utils/boxing.py
            Add release script and CHANGELOG in place of history.
            Release version 1.2.0
            Tox is now part of pre-publish command
            Drop Python 3.4
    
      Byungjin Park (1):
            Fix typo
    
      Jaepil Koh (1):
            Update django.md
    
      Joel Perras (3):
            Allow dotted-path based setting of configuration key/value pairs.
            Handle nested includes in settings files.
            Remove extraneous lines.
    
      Mantas (3):
            Add INSTANCE_FOR_DYNACONF and --instance
            Remove mocker fixture
            Python 3.4 has different error message
    
      Matthias (1):
            Fix small typo in README.md
    
      Pete Savage (1):
            Fix exponential slow down when loader is run multiple times
    
      Raoul Snyman (1):
            Add environments into the path in Vault so that the same Vault server can be used for multiple environments
    
      mspinelli (2):
            fixed infinite recursion caused by copy()
            add tests for dynabox fix