dynaconf 3.2.8__tar.gz → 3.2.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dynaconf-3.2.8 → dynaconf-3.2.9}/CHANGELOG.md +2 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/PKG-INFO +10 -43
- dynaconf-3.2.9/dynaconf/VERSION +1 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/_termui_impl.py +1 -1
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/_unicodefun.py +1 -1
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/core.py +2 -2
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/exceptions.py +2 -2
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/formatting.py +3 -3
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/parser.py +1 -1
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/termui.py +1 -1
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/testing.py +1 -1
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/types.py +5 -5
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf.egg-info/PKG-INFO +10 -43
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf.egg-info/SOURCES.txt +0 -27
- dynaconf-3.2.8/dynaconf/VERSION +0 -1
- dynaconf-3.2.8/dynaconf/vendor/dotenv/py.typed +0 -1
- dynaconf-3.2.8/dynaconf/vendor/ruamel/yaml/py.typed +0 -0
- dynaconf-3.2.8/tests/test_base.py +0 -1633
- dynaconf-3.2.8/tests/test_basic.py +0 -7
- dynaconf-3.2.8/tests/test_cli.py +0 -892
- dynaconf-3.2.8/tests/test_compat.py +0 -56
- dynaconf-3.2.8/tests/test_django.py +0 -44
- dynaconf-3.2.8/tests/test_dynabox.py +0 -103
- dynaconf-3.2.8/tests/test_endtoend.py +0 -67
- dynaconf-3.2.8/tests/test_env_loader.py +0 -523
- dynaconf-3.2.8/tests/test_envvar_prefix.py +0 -46
- dynaconf-3.2.8/tests/test_feature_flag.py +0 -34
- dynaconf-3.2.8/tests/test_flask.py +0 -165
- dynaconf-3.2.8/tests/test_hooking.py +0 -268
- dynaconf-3.2.8/tests/test_ini_loader.py +0 -208
- dynaconf-3.2.8/tests/test_inspect.py +0 -1009
- dynaconf-3.2.8/tests/test_json_loader.py +0 -230
- dynaconf-3.2.8/tests/test_nested_loading.py +0 -385
- dynaconf-3.2.8/tests/test_py_loader.py +0 -275
- dynaconf-3.2.8/tests/test_redis.py +0 -124
- dynaconf-3.2.8/tests/test_settings_loader.py +0 -167
- dynaconf-3.2.8/tests/test_toml_loader.py +0 -268
- dynaconf-3.2.8/tests/test_utils.py +0 -556
- dynaconf-3.2.8/tests/test_validators.py +0 -887
- dynaconf-3.2.8/tests/test_validators_conditions.py +0 -64
- dynaconf-3.2.8/tests/test_vault.py +0 -131
- dynaconf-3.2.8/tests/test_yaml_loader.py +0 -580
- {dynaconf-3.2.8 → dynaconf-3.2.9}/3.x-release-notes.md +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/CONTRIBUTING.md +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/CONTRIBUTORS.md +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/LICENSE +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/MANIFEST.in +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/README.md +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/__init__.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/base.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/cli.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/constants.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/contrib/__init__.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/contrib/django_dynaconf_v2.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/contrib/flask_dynaconf.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/default_settings.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/hooking.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/__init__.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/base.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/env_loader.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/ini_loader.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/json_loader.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/py_loader.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/redis_loader.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/toml_loader.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/vault_loader.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/yaml_loader.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/strategies/__init__.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/strategies/filtering.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/test_settings.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/utils/__init__.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/utils/boxing.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/utils/files.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/utils/functional.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/utils/inspect.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/utils/parse_conf.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/validator.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/validator_conditions.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/__init__.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/box/__init__.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/box/box.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/box/box_list.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/box/config_box.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/box/converters.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/box/exceptions.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/box/from_file.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/box/shorthand_box.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/__init__.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/_bashcomplete.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/_compat.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/_textwrap.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/_winconsole.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/decorators.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/globals.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/utils.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/dotenv/__init__.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/dotenv/cli.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/dotenv/compat.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/dotenv/ipython.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/dotenv/main.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/dotenv/parser.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/dotenv/version.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/__init__.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/__init__.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/anchor.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/comments.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/compat.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/composer.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/configobjwalker.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/constructor.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/cyaml.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/dumper.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/emitter.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/error.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/events.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/loader.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/main.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/nodes.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/parser.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/reader.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/representer.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/resolver.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/scalarbool.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/scalarfloat.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/scalarint.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/scalarstring.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/scanner.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/serializer.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/setup.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/timestamp.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/tokens.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/util.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/toml/__init__.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/toml/decoder.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/toml/encoder.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/toml/ordered.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/toml/tz.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/tomllib/__init__.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/tomllib/_parser.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/tomllib/_re.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/tomllib/_types.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/tomllib/_writer.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf.egg-info/dependency_links.txt +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf.egg-info/entry_points.txt +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf.egg-info/not-zip-safe +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf.egg-info/requires.txt +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf.egg-info/top_level.txt +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/setup.cfg +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/setup.py +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/vendor_licenses/box-LICENSE.txt +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/vendor_licenses/click-LICENSE.rst +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/vendor_licenses/licenses.sh +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/vendor_licenses/python-dotenv-LICENSE.txt +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/vendor_licenses/ruamel.yaml-LICENSE.txt +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/vendor_licenses/toml-LICENSE.txt +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/vendor_licenses/tomli-LICENSE.txt +0 -0
- {dynaconf-3.2.8 → dynaconf-3.2.9}/vendor_licenses/vendor_versions.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
2
|
Name: dynaconf
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.9
|
|
4
4
|
Summary: The dynamic configurator for your Python Project
|
|
5
5
|
Home-page: https://github.com/dynaconf/dynaconf
|
|
6
6
|
Author: Bruno Rocha
|
|
@@ -26,6 +26,14 @@ Classifier: Topic :: Software Development :: Libraries
|
|
|
26
26
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
27
27
|
Requires-Python: >=3.8
|
|
28
28
|
Description-Content-Type: text/markdown
|
|
29
|
+
Provides-Extra: redis
|
|
30
|
+
Provides-Extra: vault
|
|
31
|
+
Provides-Extra: yaml
|
|
32
|
+
Provides-Extra: toml
|
|
33
|
+
Provides-Extra: ini
|
|
34
|
+
Provides-Extra: configobj
|
|
35
|
+
Provides-Extra: all
|
|
36
|
+
Provides-Extra: test
|
|
29
37
|
License-File: LICENSE
|
|
30
38
|
License-File: vendor_licenses/box-LICENSE.txt
|
|
31
39
|
License-File: vendor_licenses/click-LICENSE.rst
|
|
@@ -35,47 +43,6 @@ License-File: vendor_licenses/ruamel.yaml-LICENSE.txt
|
|
|
35
43
|
License-File: vendor_licenses/toml-LICENSE.txt
|
|
36
44
|
License-File: vendor_licenses/tomli-LICENSE.txt
|
|
37
45
|
License-File: vendor_licenses/vendor_versions.txt
|
|
38
|
-
Provides-Extra: redis
|
|
39
|
-
Requires-Dist: redis; extra == "redis"
|
|
40
|
-
Provides-Extra: vault
|
|
41
|
-
Requires-Dist: hvac; extra == "vault"
|
|
42
|
-
Provides-Extra: yaml
|
|
43
|
-
Requires-Dist: ruamel.yaml; extra == "yaml"
|
|
44
|
-
Provides-Extra: toml
|
|
45
|
-
Requires-Dist: toml; extra == "toml"
|
|
46
|
-
Provides-Extra: ini
|
|
47
|
-
Requires-Dist: configobj; extra == "ini"
|
|
48
|
-
Provides-Extra: configobj
|
|
49
|
-
Requires-Dist: configobj; extra == "configobj"
|
|
50
|
-
Provides-Extra: all
|
|
51
|
-
Requires-Dist: redis; extra == "all"
|
|
52
|
-
Requires-Dist: ruamel.yaml; extra == "all"
|
|
53
|
-
Requires-Dist: configobj; extra == "all"
|
|
54
|
-
Requires-Dist: hvac; extra == "all"
|
|
55
|
-
Provides-Extra: test
|
|
56
|
-
Requires-Dist: pytest; extra == "test"
|
|
57
|
-
Requires-Dist: pytest-cov; extra == "test"
|
|
58
|
-
Requires-Dist: pytest-xdist; extra == "test"
|
|
59
|
-
Requires-Dist: pytest-mock; extra == "test"
|
|
60
|
-
Requires-Dist: radon; extra == "test"
|
|
61
|
-
Requires-Dist: flask>=0.12; extra == "test"
|
|
62
|
-
Requires-Dist: django; extra == "test"
|
|
63
|
-
Requires-Dist: python-dotenv; extra == "test"
|
|
64
|
-
Requires-Dist: toml; extra == "test"
|
|
65
|
-
Requires-Dist: redis; extra == "test"
|
|
66
|
-
Requires-Dist: hvac>=1.1.0; extra == "test"
|
|
67
|
-
Requires-Dist: configobj; extra == "test"
|
|
68
|
-
Dynamic: author
|
|
69
|
-
Dynamic: author-email
|
|
70
|
-
Dynamic: classifier
|
|
71
|
-
Dynamic: description
|
|
72
|
-
Dynamic: description-content-type
|
|
73
|
-
Dynamic: home-page
|
|
74
|
-
Dynamic: license
|
|
75
|
-
Dynamic: platform
|
|
76
|
-
Dynamic: provides-extra
|
|
77
|
-
Dynamic: requires-python
|
|
78
|
-
Dynamic: summary
|
|
79
46
|
|
|
80
47
|
<!-- [](http://dynaconf.com) -->
|
|
81
48
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.2.9
|
|
@@ -135,7 +135,7 @@ def pager(generator,color=_A):
|
|
|
135
135
|
def _pipepager(generator,cmd,color):
|
|
136
136
|
H='LESS';A=color;import subprocess as E;F=dict(os.environ);G=cmd.rsplit('/',1)[-1].split()
|
|
137
137
|
if A is _A and G[0]=='less':
|
|
138
|
-
C=f"{os.environ.get(H,
|
|
138
|
+
C=f"{os.environ.get(H,'')}{' '.join(G[1:])}"
|
|
139
139
|
if not C:F[H]='-R';A=_B
|
|
140
140
|
elif'r'in C or'R'in C:A=_B
|
|
141
141
|
B=E.Popen(cmd,shell=_B,stdin=E.PIPE,env=F);I=get_best_encoding(B.stdin)
|
|
@@ -19,7 +19,7 @@ def _verify_python_env():
|
|
|
19
19
|
B+='\n\n'
|
|
20
20
|
if not E:B+='Additional information: on this system no suitable UTF-8 locales were discovered. This most likely requires resolving by reconfiguring the locale system.'
|
|
21
21
|
elif J:B+='This system supports the C.UTF-8 locale which is recommended. You might be able to resolve your issue by exporting the following environment variables:\n\n export LC_ALL=C.UTF-8\n export LANG=C.UTF-8'
|
|
22
|
-
else:B+=f"This system lists some UTF-8 supporting locales that you can pick from. The following suitable locales were discovered: {
|
|
22
|
+
else:B+=f"This system lists some UTF-8 supporting locales that you can pick from. The following suitable locales were discovered: {', '.join(sorted(E))}"
|
|
23
23
|
F=H
|
|
24
24
|
for A in(os.environ.get('LC_ALL'),os.environ.get('LANG')):
|
|
25
25
|
if A and A.lower().endswith((K,L)):F=A
|
|
@@ -74,7 +74,7 @@ class ParameterSource:
|
|
|
74
74
|
@classmethod
|
|
75
75
|
def validate(A,value):
|
|
76
76
|
B=value
|
|
77
|
-
if B not in A.VALUES:raise ValueError(f"Invalid ParameterSource value: {B!r}. Valid values are: {
|
|
77
|
+
if B not in A.VALUES:raise ValueError(f"Invalid ParameterSource value: {B!r}. Valid values are: {','.join(A.VALUES)}")
|
|
78
78
|
class Context:
|
|
79
79
|
def __init__(A,command,parent=_A,info_name=_A,obj=_A,auto_envvar_prefix=_A,default_map=_A,terminal_width=_A,max_content_width=_A,resilient_parsing=_B,allow_extra_args=_A,allow_interspersed_args=_A,ignore_unknown_options=_A,help_option_names=_A,token_normalize_func=_A,color=_A,show_default=_A):
|
|
80
80
|
O=info_name;N=color;M=token_normalize_func;L=ignore_unknown_options;K=allow_interspersed_args;J=allow_extra_args;I=max_content_width;H=terminal_width;G=default_map;F=obj;E=help_option_names;D=command;C=auto_envvar_prefix;B=parent;A.parent=B;A.command=D;A.info_name=O;A.params={};A.args=[];A.protected_args=[]
|
|
@@ -277,7 +277,7 @@ class Command(BaseCommand):
|
|
|
277
277
|
if not B and C.no_args_is_help and not A.resilient_parsing:echo(A.get_help(),color=A.color);A.exit()
|
|
278
278
|
D=C.make_parser(A);E,B,F=D.parse_args(args=B)
|
|
279
279
|
for G in iter_params_for_processing(F,C.get_params(A)):H,B=G.handle_parse_result(A,E,B)
|
|
280
|
-
if B and not A.allow_extra_args and not A.resilient_parsing:A.fail(f"Got unexpected extra argument{
|
|
280
|
+
if B and not A.allow_extra_args and not A.resilient_parsing:A.fail(f"Got unexpected extra argument{'s'if len(B)!=1 else''} ({' '.join(map(make_str,B))})")
|
|
281
281
|
A.args=B;return B
|
|
282
282
|
def invoke(A,ctx):
|
|
283
283
|
_maybe_show_deprecated_notice(A)
|
|
@@ -45,7 +45,7 @@ class MissingParameter(BadParameter):
|
|
|
45
45
|
if E:
|
|
46
46
|
if C:C+=f". {E}"
|
|
47
47
|
else:C=E
|
|
48
|
-
F=f" {B}"if B else'';return f"Missing {D}{F}.{
|
|
48
|
+
F=f" {B}"if B else'';return f"Missing {D}{F}.{' 'if C else''}{C or''}"
|
|
49
49
|
def __str__(A):
|
|
50
50
|
if A.message is _A:B=A.param.name if A.param else _A;return f"missing parameter: {B}"
|
|
51
51
|
else:return A.message
|
|
@@ -58,7 +58,7 @@ class NoSuchOption(UsageError):
|
|
|
58
58
|
B=[A.message]
|
|
59
59
|
if A.possibilities:
|
|
60
60
|
if len(A.possibilities)==1:B.append(f"Did you mean {A.possibilities[0]}?")
|
|
61
|
-
else:C=sorted(A.possibilities);B.append(f"(Possible options: {
|
|
61
|
+
else:C=sorted(A.possibilities);B.append(f"(Possible options: {', '.join(C)})")
|
|
62
62
|
return' '.join(B)
|
|
63
63
|
class BadOptionUsage(UsageError):
|
|
64
64
|
def __init__(A,option_name,message,ctx=_A):UsageError.__init__(A,message,ctx);A.option_name=option_name
|
|
@@ -51,7 +51,7 @@ class HelpFormatter:
|
|
|
51
51
|
if D>=term_len(B)+20:C=_C*term_len(B);A.write(wrap_text(args,D,initial_indent=B,subsequent_indent=C))
|
|
52
52
|
else:A.write(B);A.write(_B);C=_C*(max(A.current_indent,term_len(E))+4);A.write(wrap_text(args,D,initial_indent=C,subsequent_indent=C))
|
|
53
53
|
A.write(_B)
|
|
54
|
-
def write_heading(A,heading):A.write(f"{
|
|
54
|
+
def write_heading(A,heading):A.write(f"{'':>{A.current_indent}}{heading}:\n")
|
|
55
55
|
def write_paragraph(A):
|
|
56
56
|
if A.buffer:A.write(_B)
|
|
57
57
|
def write_text(A,text):C=max(A.width-A.current_indent,11);B=_C*A.current_indent;A.write(wrap_text(text,C,initial_indent=B,subsequent_indent=B,preserve_paragraphs=_E));A.write(_B)
|
|
@@ -60,14 +60,14 @@ class HelpFormatter:
|
|
|
60
60
|
if len(E)!=2:raise TypeError('Expected two columns for definition list')
|
|
61
61
|
B=min(E[0],col_max)+G
|
|
62
62
|
for(F,H)in iter_rows(C,len(E)):
|
|
63
|
-
A.write(f"{
|
|
63
|
+
A.write(f"{'':>{A.current_indent}}{F}")
|
|
64
64
|
if not H:A.write(_B);continue
|
|
65
65
|
if term_len(F)<=B-G:A.write(_C*(B-term_len(F)))
|
|
66
66
|
else:A.write(_B);A.write(_C*(B+A.current_indent))
|
|
67
67
|
I=max(A.width-B-2,10);J=wrap_text(H,I,preserve_paragraphs=_E);D=J.splitlines()
|
|
68
68
|
if D:
|
|
69
69
|
A.write(f"{D[0]}\n")
|
|
70
|
-
for K in D[1:]:A.write(f"{
|
|
70
|
+
for K in D[1:]:A.write(f"{'':>{B+A.current_indent}}{K}\n")
|
|
71
71
|
if len(D)>1:A.write(_B)
|
|
72
72
|
else:A.write(_B)
|
|
73
73
|
@contextmanager
|
|
@@ -143,7 +143,7 @@ class OptionParser:
|
|
|
143
143
|
else:I=_A
|
|
144
144
|
E.process(I,A)
|
|
145
145
|
if J:break
|
|
146
|
-
if B.ignore_unknown_options and G:A.largs.append(f"{K}{
|
|
146
|
+
if B.ignore_unknown_options and G:A.largs.append(f"{K}{''.join(G)}")
|
|
147
147
|
def _process_opts(B,arg,state):
|
|
148
148
|
C=state;A=arg;D=_A
|
|
149
149
|
if'='in A:E,D=A.split('=',1)
|
|
@@ -17,7 +17,7 @@ _ansi_reset_all='\x1b[0m'
|
|
|
17
17
|
def hidden_prompt_func(prompt):import getpass as A;return A.getpass(prompt)
|
|
18
18
|
def _build_prompt(text,suffix,show_default=_B,default=_A,show_choices=_C,type=_A):
|
|
19
19
|
B=default;A=text
|
|
20
|
-
if type is not _A and show_choices and isinstance(type,Choice):A+=f" ({
|
|
20
|
+
if type is not _A and show_choices and isinstance(type,Choice):A+=f" ({', '.join(map(str,type.choices))})"
|
|
21
21
|
if B is not _A and show_default:A=f"{A} [{_format_default(B)}]"
|
|
22
22
|
return f"{A}{suffix}"
|
|
23
23
|
def _format_default(default):
|
|
@@ -50,7 +50,7 @@ class CliRunner:
|
|
|
50
50
|
if A.mix_stderr:sys.stderr=sys.stdout
|
|
51
51
|
sys.stdin=input
|
|
52
52
|
def L(prompt=_A):sys.stdout.write(prompt or'');A=input.readline().rstrip(_B);sys.stdout.write(f"{A}\n");sys.stdout.flush();return A
|
|
53
|
-
def M(prompt=_A):sys.stdout.write(f"{prompt or
|
|
53
|
+
def M(prompt=_A):sys.stdout.write(f"{prompt or''}\n");sys.stdout.flush();return input.readline().rstrip(_B)
|
|
54
54
|
def N(echo):
|
|
55
55
|
A=sys.stdin.read(1)
|
|
56
56
|
if echo:sys.stdout.write(A);sys.stdout.flush()
|
|
@@ -59,19 +59,19 @@ class StringParamType(ParamType):
|
|
|
59
59
|
class Choice(ParamType):
|
|
60
60
|
name='choice'
|
|
61
61
|
def __init__(A,choices,case_sensitive=_C):A.choices=choices;A.case_sensitive=case_sensitive
|
|
62
|
-
def get_metavar(A,param):return f"[{
|
|
62
|
+
def get_metavar(A,param):return f"[{'|'.join(A.choices)}]"
|
|
63
63
|
def get_missing_message(A,param):B=',\n\t'.join(A.choices);return f"Choose from:\n\t{B}"
|
|
64
64
|
def convert(D,value,param,ctx):
|
|
65
65
|
E=value;B=ctx;C=E;A={A:A for A in D.choices}
|
|
66
66
|
if B is not _A and B.token_normalize_func is not _A:C=B.token_normalize_func(E);A={B.token_normalize_func(A):C for(A,C)in A.items()}
|
|
67
67
|
if not D.case_sensitive:C=C.casefold();A={A.casefold():B for(A,B)in A.items()}
|
|
68
68
|
if C in A:return A[C]
|
|
69
|
-
D.fail(f"invalid choice: {E}. (choose from {
|
|
69
|
+
D.fail(f"invalid choice: {E}. (choose from {', '.join(D.choices)})",param,B)
|
|
70
70
|
def __repr__(A):return f"Choice({list(A.choices)})"
|
|
71
71
|
class DateTime(ParamType):
|
|
72
72
|
name='datetime'
|
|
73
73
|
def __init__(A,formats=_A):A.formats=formats or['%Y-%m-%d','%Y-%m-%dT%H:%M:%S','%Y-%m-%d %H:%M:%S']
|
|
74
|
-
def get_metavar(A,param):return f"[{
|
|
74
|
+
def get_metavar(A,param):return f"[{'|'.join(A.formats)}]"
|
|
75
75
|
def _try_to_convert_date(A,value,format):
|
|
76
76
|
try:return datetime.strptime(value,format)
|
|
77
77
|
except ValueError:return
|
|
@@ -80,7 +80,7 @@ class DateTime(ParamType):
|
|
|
80
80
|
for format in A.formats:
|
|
81
81
|
C=A._try_to_convert_date(B,format)
|
|
82
82
|
if C:return C
|
|
83
|
-
A.fail(f"invalid datetime format: {B}. (choose from {
|
|
83
|
+
A.fail(f"invalid datetime format: {B}. (choose from {', '.join(A.formats)})")
|
|
84
84
|
def __repr__(A):return'DateTime'
|
|
85
85
|
class IntParamType(ParamType):
|
|
86
86
|
name='integer'
|
|
@@ -193,7 +193,7 @@ class Path(ParamType):
|
|
|
193
193
|
class Tuple(CompositeParamType):
|
|
194
194
|
def __init__(A,types):A.types=[convert_type(A)for A in types]
|
|
195
195
|
@property
|
|
196
|
-
def name(self):return f"<{
|
|
196
|
+
def name(self):return f"<{' '.join(A.name for A in self.types)}>"
|
|
197
197
|
@property
|
|
198
198
|
def arity(self):return len(self.types)
|
|
199
199
|
def convert(A,value,param,ctx):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
2
|
Name: dynaconf
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.9
|
|
4
4
|
Summary: The dynamic configurator for your Python Project
|
|
5
5
|
Home-page: https://github.com/dynaconf/dynaconf
|
|
6
6
|
Author: Bruno Rocha
|
|
@@ -26,6 +26,14 @@ Classifier: Topic :: Software Development :: Libraries
|
|
|
26
26
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
27
27
|
Requires-Python: >=3.8
|
|
28
28
|
Description-Content-Type: text/markdown
|
|
29
|
+
Provides-Extra: redis
|
|
30
|
+
Provides-Extra: vault
|
|
31
|
+
Provides-Extra: yaml
|
|
32
|
+
Provides-Extra: toml
|
|
33
|
+
Provides-Extra: ini
|
|
34
|
+
Provides-Extra: configobj
|
|
35
|
+
Provides-Extra: all
|
|
36
|
+
Provides-Extra: test
|
|
29
37
|
License-File: LICENSE
|
|
30
38
|
License-File: vendor_licenses/box-LICENSE.txt
|
|
31
39
|
License-File: vendor_licenses/click-LICENSE.rst
|
|
@@ -35,47 +43,6 @@ License-File: vendor_licenses/ruamel.yaml-LICENSE.txt
|
|
|
35
43
|
License-File: vendor_licenses/toml-LICENSE.txt
|
|
36
44
|
License-File: vendor_licenses/tomli-LICENSE.txt
|
|
37
45
|
License-File: vendor_licenses/vendor_versions.txt
|
|
38
|
-
Provides-Extra: redis
|
|
39
|
-
Requires-Dist: redis; extra == "redis"
|
|
40
|
-
Provides-Extra: vault
|
|
41
|
-
Requires-Dist: hvac; extra == "vault"
|
|
42
|
-
Provides-Extra: yaml
|
|
43
|
-
Requires-Dist: ruamel.yaml; extra == "yaml"
|
|
44
|
-
Provides-Extra: toml
|
|
45
|
-
Requires-Dist: toml; extra == "toml"
|
|
46
|
-
Provides-Extra: ini
|
|
47
|
-
Requires-Dist: configobj; extra == "ini"
|
|
48
|
-
Provides-Extra: configobj
|
|
49
|
-
Requires-Dist: configobj; extra == "configobj"
|
|
50
|
-
Provides-Extra: all
|
|
51
|
-
Requires-Dist: redis; extra == "all"
|
|
52
|
-
Requires-Dist: ruamel.yaml; extra == "all"
|
|
53
|
-
Requires-Dist: configobj; extra == "all"
|
|
54
|
-
Requires-Dist: hvac; extra == "all"
|
|
55
|
-
Provides-Extra: test
|
|
56
|
-
Requires-Dist: pytest; extra == "test"
|
|
57
|
-
Requires-Dist: pytest-cov; extra == "test"
|
|
58
|
-
Requires-Dist: pytest-xdist; extra == "test"
|
|
59
|
-
Requires-Dist: pytest-mock; extra == "test"
|
|
60
|
-
Requires-Dist: radon; extra == "test"
|
|
61
|
-
Requires-Dist: flask>=0.12; extra == "test"
|
|
62
|
-
Requires-Dist: django; extra == "test"
|
|
63
|
-
Requires-Dist: python-dotenv; extra == "test"
|
|
64
|
-
Requires-Dist: toml; extra == "test"
|
|
65
|
-
Requires-Dist: redis; extra == "test"
|
|
66
|
-
Requires-Dist: hvac>=1.1.0; extra == "test"
|
|
67
|
-
Requires-Dist: configobj; extra == "test"
|
|
68
|
-
Dynamic: author
|
|
69
|
-
Dynamic: author-email
|
|
70
|
-
Dynamic: classifier
|
|
71
|
-
Dynamic: description
|
|
72
|
-
Dynamic: description-content-type
|
|
73
|
-
Dynamic: home-page
|
|
74
|
-
Dynamic: license
|
|
75
|
-
Dynamic: platform
|
|
76
|
-
Dynamic: provides-extra
|
|
77
|
-
Dynamic: requires-python
|
|
78
|
-
Dynamic: summary
|
|
79
46
|
|
|
80
47
|
<!-- [](http://dynaconf.com) -->
|
|
81
48
|
|
|
@@ -77,7 +77,6 @@ dynaconf/vendor/dotenv/compat.py
|
|
|
77
77
|
dynaconf/vendor/dotenv/ipython.py
|
|
78
78
|
dynaconf/vendor/dotenv/main.py
|
|
79
79
|
dynaconf/vendor/dotenv/parser.py
|
|
80
|
-
dynaconf/vendor/dotenv/py.typed
|
|
81
80
|
dynaconf/vendor/dotenv/version.py
|
|
82
81
|
dynaconf/vendor/ruamel/__init__.py
|
|
83
82
|
dynaconf/vendor/ruamel/yaml/__init__.py
|
|
@@ -96,7 +95,6 @@ dynaconf/vendor/ruamel/yaml/loader.py
|
|
|
96
95
|
dynaconf/vendor/ruamel/yaml/main.py
|
|
97
96
|
dynaconf/vendor/ruamel/yaml/nodes.py
|
|
98
97
|
dynaconf/vendor/ruamel/yaml/parser.py
|
|
99
|
-
dynaconf/vendor/ruamel/yaml/py.typed
|
|
100
98
|
dynaconf/vendor/ruamel/yaml/reader.py
|
|
101
99
|
dynaconf/vendor/ruamel/yaml/representer.py
|
|
102
100
|
dynaconf/vendor/ruamel/yaml/resolver.py
|
|
@@ -120,31 +118,6 @@ dynaconf/vendor/tomllib/_parser.py
|
|
|
120
118
|
dynaconf/vendor/tomllib/_re.py
|
|
121
119
|
dynaconf/vendor/tomllib/_types.py
|
|
122
120
|
dynaconf/vendor/tomllib/_writer.py
|
|
123
|
-
tests/test_base.py
|
|
124
|
-
tests/test_basic.py
|
|
125
|
-
tests/test_cli.py
|
|
126
|
-
tests/test_compat.py
|
|
127
|
-
tests/test_django.py
|
|
128
|
-
tests/test_dynabox.py
|
|
129
|
-
tests/test_endtoend.py
|
|
130
|
-
tests/test_env_loader.py
|
|
131
|
-
tests/test_envvar_prefix.py
|
|
132
|
-
tests/test_feature_flag.py
|
|
133
|
-
tests/test_flask.py
|
|
134
|
-
tests/test_hooking.py
|
|
135
|
-
tests/test_ini_loader.py
|
|
136
|
-
tests/test_inspect.py
|
|
137
|
-
tests/test_json_loader.py
|
|
138
|
-
tests/test_nested_loading.py
|
|
139
|
-
tests/test_py_loader.py
|
|
140
|
-
tests/test_redis.py
|
|
141
|
-
tests/test_settings_loader.py
|
|
142
|
-
tests/test_toml_loader.py
|
|
143
|
-
tests/test_utils.py
|
|
144
|
-
tests/test_validators.py
|
|
145
|
-
tests/test_validators_conditions.py
|
|
146
|
-
tests/test_vault.py
|
|
147
|
-
tests/test_yaml_loader.py
|
|
148
121
|
vendor_licenses/box-LICENSE.txt
|
|
149
122
|
vendor_licenses/click-LICENSE.rst
|
|
150
123
|
vendor_licenses/licenses.sh
|
dynaconf-3.2.8/dynaconf/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
3.2.8
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
# Marker file for PEP 561
|
|
File without changes
|