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.
Files changed (157) hide show
  1. {dynaconf-3.2.8 → dynaconf-3.2.9}/CHANGELOG.md +2 -0
  2. {dynaconf-3.2.8 → dynaconf-3.2.9}/PKG-INFO +10 -43
  3. dynaconf-3.2.9/dynaconf/VERSION +1 -0
  4. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/_termui_impl.py +1 -1
  5. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/_unicodefun.py +1 -1
  6. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/core.py +2 -2
  7. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/exceptions.py +2 -2
  8. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/formatting.py +3 -3
  9. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/parser.py +1 -1
  10. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/termui.py +1 -1
  11. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/testing.py +1 -1
  12. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/types.py +5 -5
  13. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf.egg-info/PKG-INFO +10 -43
  14. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf.egg-info/SOURCES.txt +0 -27
  15. dynaconf-3.2.8/dynaconf/VERSION +0 -1
  16. dynaconf-3.2.8/dynaconf/vendor/dotenv/py.typed +0 -1
  17. dynaconf-3.2.8/dynaconf/vendor/ruamel/yaml/py.typed +0 -0
  18. dynaconf-3.2.8/tests/test_base.py +0 -1633
  19. dynaconf-3.2.8/tests/test_basic.py +0 -7
  20. dynaconf-3.2.8/tests/test_cli.py +0 -892
  21. dynaconf-3.2.8/tests/test_compat.py +0 -56
  22. dynaconf-3.2.8/tests/test_django.py +0 -44
  23. dynaconf-3.2.8/tests/test_dynabox.py +0 -103
  24. dynaconf-3.2.8/tests/test_endtoend.py +0 -67
  25. dynaconf-3.2.8/tests/test_env_loader.py +0 -523
  26. dynaconf-3.2.8/tests/test_envvar_prefix.py +0 -46
  27. dynaconf-3.2.8/tests/test_feature_flag.py +0 -34
  28. dynaconf-3.2.8/tests/test_flask.py +0 -165
  29. dynaconf-3.2.8/tests/test_hooking.py +0 -268
  30. dynaconf-3.2.8/tests/test_ini_loader.py +0 -208
  31. dynaconf-3.2.8/tests/test_inspect.py +0 -1009
  32. dynaconf-3.2.8/tests/test_json_loader.py +0 -230
  33. dynaconf-3.2.8/tests/test_nested_loading.py +0 -385
  34. dynaconf-3.2.8/tests/test_py_loader.py +0 -275
  35. dynaconf-3.2.8/tests/test_redis.py +0 -124
  36. dynaconf-3.2.8/tests/test_settings_loader.py +0 -167
  37. dynaconf-3.2.8/tests/test_toml_loader.py +0 -268
  38. dynaconf-3.2.8/tests/test_utils.py +0 -556
  39. dynaconf-3.2.8/tests/test_validators.py +0 -887
  40. dynaconf-3.2.8/tests/test_validators_conditions.py +0 -64
  41. dynaconf-3.2.8/tests/test_vault.py +0 -131
  42. dynaconf-3.2.8/tests/test_yaml_loader.py +0 -580
  43. {dynaconf-3.2.8 → dynaconf-3.2.9}/3.x-release-notes.md +0 -0
  44. {dynaconf-3.2.8 → dynaconf-3.2.9}/CONTRIBUTING.md +0 -0
  45. {dynaconf-3.2.8 → dynaconf-3.2.9}/CONTRIBUTORS.md +0 -0
  46. {dynaconf-3.2.8 → dynaconf-3.2.9}/LICENSE +0 -0
  47. {dynaconf-3.2.8 → dynaconf-3.2.9}/MANIFEST.in +0 -0
  48. {dynaconf-3.2.8 → dynaconf-3.2.9}/README.md +0 -0
  49. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/__init__.py +0 -0
  50. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/base.py +0 -0
  51. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/cli.py +0 -0
  52. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/constants.py +0 -0
  53. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/contrib/__init__.py +0 -0
  54. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/contrib/django_dynaconf_v2.py +0 -0
  55. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/contrib/flask_dynaconf.py +0 -0
  56. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/default_settings.py +0 -0
  57. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/hooking.py +0 -0
  58. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/__init__.py +0 -0
  59. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/base.py +0 -0
  60. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/env_loader.py +0 -0
  61. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/ini_loader.py +0 -0
  62. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/json_loader.py +0 -0
  63. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/py_loader.py +0 -0
  64. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/redis_loader.py +0 -0
  65. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/toml_loader.py +0 -0
  66. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/vault_loader.py +0 -0
  67. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/loaders/yaml_loader.py +0 -0
  68. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/strategies/__init__.py +0 -0
  69. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/strategies/filtering.py +0 -0
  70. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/test_settings.py +0 -0
  71. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/utils/__init__.py +0 -0
  72. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/utils/boxing.py +0 -0
  73. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/utils/files.py +0 -0
  74. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/utils/functional.py +0 -0
  75. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/utils/inspect.py +0 -0
  76. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/utils/parse_conf.py +0 -0
  77. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/validator.py +0 -0
  78. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/validator_conditions.py +0 -0
  79. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/__init__.py +0 -0
  80. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/box/__init__.py +0 -0
  81. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/box/box.py +0 -0
  82. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/box/box_list.py +0 -0
  83. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/box/config_box.py +0 -0
  84. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/box/converters.py +0 -0
  85. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/box/exceptions.py +0 -0
  86. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/box/from_file.py +0 -0
  87. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/box/shorthand_box.py +0 -0
  88. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/__init__.py +0 -0
  89. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/_bashcomplete.py +0 -0
  90. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/_compat.py +0 -0
  91. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/_textwrap.py +0 -0
  92. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/_winconsole.py +0 -0
  93. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/decorators.py +0 -0
  94. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/globals.py +0 -0
  95. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/click/utils.py +0 -0
  96. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/dotenv/__init__.py +0 -0
  97. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/dotenv/cli.py +0 -0
  98. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/dotenv/compat.py +0 -0
  99. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/dotenv/ipython.py +0 -0
  100. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/dotenv/main.py +0 -0
  101. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/dotenv/parser.py +0 -0
  102. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/dotenv/version.py +0 -0
  103. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/__init__.py +0 -0
  104. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/__init__.py +0 -0
  105. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/anchor.py +0 -0
  106. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/comments.py +0 -0
  107. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/compat.py +0 -0
  108. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/composer.py +0 -0
  109. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/configobjwalker.py +0 -0
  110. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/constructor.py +0 -0
  111. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/cyaml.py +0 -0
  112. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/dumper.py +0 -0
  113. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/emitter.py +0 -0
  114. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/error.py +0 -0
  115. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/events.py +0 -0
  116. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/loader.py +0 -0
  117. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/main.py +0 -0
  118. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/nodes.py +0 -0
  119. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/parser.py +0 -0
  120. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/reader.py +0 -0
  121. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/representer.py +0 -0
  122. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/resolver.py +0 -0
  123. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/scalarbool.py +0 -0
  124. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/scalarfloat.py +0 -0
  125. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/scalarint.py +0 -0
  126. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/scalarstring.py +0 -0
  127. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/scanner.py +0 -0
  128. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/serializer.py +0 -0
  129. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/setup.py +0 -0
  130. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/timestamp.py +0 -0
  131. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/tokens.py +0 -0
  132. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/ruamel/yaml/util.py +0 -0
  133. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/toml/__init__.py +0 -0
  134. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/toml/decoder.py +0 -0
  135. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/toml/encoder.py +0 -0
  136. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/toml/ordered.py +0 -0
  137. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/toml/tz.py +0 -0
  138. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/tomllib/__init__.py +0 -0
  139. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/tomllib/_parser.py +0 -0
  140. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/tomllib/_re.py +0 -0
  141. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/tomllib/_types.py +0 -0
  142. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf/vendor/tomllib/_writer.py +0 -0
  143. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf.egg-info/dependency_links.txt +0 -0
  144. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf.egg-info/entry_points.txt +0 -0
  145. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf.egg-info/not-zip-safe +0 -0
  146. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf.egg-info/requires.txt +0 -0
  147. {dynaconf-3.2.8 → dynaconf-3.2.9}/dynaconf.egg-info/top_level.txt +0 -0
  148. {dynaconf-3.2.8 → dynaconf-3.2.9}/setup.cfg +0 -0
  149. {dynaconf-3.2.8 → dynaconf-3.2.9}/setup.py +0 -0
  150. {dynaconf-3.2.8 → dynaconf-3.2.9}/vendor_licenses/box-LICENSE.txt +0 -0
  151. {dynaconf-3.2.8 → dynaconf-3.2.9}/vendor_licenses/click-LICENSE.rst +0 -0
  152. {dynaconf-3.2.8 → dynaconf-3.2.9}/vendor_licenses/licenses.sh +0 -0
  153. {dynaconf-3.2.8 → dynaconf-3.2.9}/vendor_licenses/python-dotenv-LICENSE.txt +0 -0
  154. {dynaconf-3.2.8 → dynaconf-3.2.9}/vendor_licenses/ruamel.yaml-LICENSE.txt +0 -0
  155. {dynaconf-3.2.8 → dynaconf-3.2.9}/vendor_licenses/toml-LICENSE.txt +0 -0
  156. {dynaconf-3.2.8 → dynaconf-3.2.9}/vendor_licenses/tomli-LICENSE.txt +0 -0
  157. {dynaconf-3.2.8 → dynaconf-3.2.9}/vendor_licenses/vendor_versions.txt +0 -0
@@ -2,6 +2,8 @@ Changelog
2
2
  =========
3
3
 
4
4
  <!-- insertion marker -->
5
+ ## [3.2.9](https://github.com/dynaconf/dynaconf/releases/tag/3.2.9) - 2025-02-16
6
+
5
7
  ## [3.2.8](https://github.com/dynaconf/dynaconf/releases/tag/3.2.8) - 2025-02-16
6
8
 
7
9
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.1
2
2
  Name: dynaconf
3
- Version: 3.2.8
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
  <!-- [![Dynaconf](docs/img/logo_400.svg?sanitize=true)](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,"")}{" ".join(G[1:])}"
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: {", ".join(sorted(E))}"
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: {",".join(A.VALUES)}")
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{"s"if len(B)!=1 else""} ({" ".join(map(make_str,B))})")
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}.{" "if C else""}{C or""}"
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: {", ".join(C)})")
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"{"":>{A.current_indent}}{heading}:\n")
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"{"":>{A.current_indent}}{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"{"":>{B+A.current_indent}}{K}\n")
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}{"".join(G)}")
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" ({", ".join(map(str,type.choices))})"
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""}\n");sys.stdout.flush();return input.readline().rstrip(_B)
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"[{"|".join(A.choices)}]"
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 {", ".join(D.choices)})",param,B)
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"[{"|".join(A.formats)}]"
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 {", ".join(A.formats)})")
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"<{" ".join(A.name for A in self.types)}>"
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.2
1
+ Metadata-Version: 2.1
2
2
  Name: dynaconf
3
- Version: 3.2.8
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
  <!-- [![Dynaconf](docs/img/logo_400.svg?sanitize=true)](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
@@ -1 +0,0 @@
1
- 3.2.8
@@ -1 +0,0 @@
1
- # Marker file for PEP 561
File without changes