python-clu 0.12.9__tar.gz → 0.12.12__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 (283) hide show
  1. {python_clu-0.12.9 → python_clu-0.12.12}/.bumpversion.toml +1 -1
  2. {python_clu-0.12.9 → python_clu-0.12.12}/CHANGELOG.md +63 -1
  3. {python_clu-0.12.9 → python_clu-0.12.12}/CLASSIFIERS.txt +0 -1
  4. {python_clu-0.12.9 → python_clu-0.12.12}/CODE_OF_CONDUCT.md +7 -0
  5. {python_clu-0.12.9 → python_clu-0.12.12}/PKG-INFO +1 -2
  6. python_clu-0.12.12/clu/__version__.py +1 -0
  7. {python_clu-0.12.9 → python_clu-0.12.12}/clu/enums.py +5 -5
  8. {python_clu-0.12.9 → python_clu-0.12.12}/clu/naming.py +16 -5
  9. {python_clu-0.12.9 → python_clu-0.12.12}/clu/repl/cli/ansidocs.py +3 -2
  10. {python_clu-0.12.9 → python_clu-0.12.12}/clu/scripts/repl.py +8 -6
  11. {python_clu-0.12.9 → python_clu-0.12.12}/clu/scripts/treeline.py +1 -1
  12. {python_clu-0.12.9 → python_clu-0.12.12}/python_clu.egg-info/PKG-INFO +1 -2
  13. {python_clu-0.12.9 → python_clu-0.12.12}/requirements/dev.txt +0 -1
  14. {python_clu-0.12.9 → python_clu-0.12.12}/setup.py +8 -12
  15. python_clu-0.12.9/clu/__version__.py +0 -1
  16. {python_clu-0.12.9 → python_clu-0.12.12}/.coveragerc +0 -0
  17. {python_clu-0.12.9 → python_clu-0.12.12}/.editorconfig +0 -0
  18. {python_clu-0.12.9 → python_clu-0.12.12}/.gitchangelog.rc +0 -0
  19. {python_clu-0.12.9 → python_clu-0.12.12}/.gitignore +0 -0
  20. {python_clu-0.12.9 → python_clu-0.12.12}/.landscape.yml +0 -0
  21. {python_clu-0.12.9 → python_clu-0.12.12}/.travis.yml +0 -0
  22. {python_clu-0.12.9 → python_clu-0.12.12}/ABOUT.md +0 -0
  23. {python_clu-0.12.9 → python_clu-0.12.12}/CLU_Treatment.md +0 -0
  24. {python_clu-0.12.9 → python_clu-0.12.12}/LICENSE.txt +0 -0
  25. {python_clu-0.12.9 → python_clu-0.12.12}/MANIFEST.in +0 -0
  26. {python_clu-0.12.9 → python_clu-0.12.12}/Makefile +0 -0
  27. {python_clu-0.12.9 → python_clu-0.12.12}/README.md +0 -0
  28. {python_clu-0.12.9 → python_clu-0.12.12}/appveyor.yml +0 -0
  29. {python_clu-0.12.9 → python_clu-0.12.12}/clu/__init__.py +0 -0
  30. {python_clu-0.12.9 → python_clu-0.12.12}/clu/__main__.py +0 -0
  31. {python_clu-0.12.9 → python_clu-0.12.12}/clu/abstract.py +0 -0
  32. {python_clu-0.12.9 → python_clu-0.12.12}/clu/all.py +0 -0
  33. {python_clu-0.12.9 → python_clu-0.12.12}/clu/api/__init__.py +0 -0
  34. {python_clu-0.12.9 → python_clu-0.12.12}/clu/api/__main__.py +0 -0
  35. {python_clu-0.12.9 → python_clu-0.12.12}/clu/application.py +0 -0
  36. {python_clu-0.12.9 → python_clu-0.12.12}/clu/compilation/__init__.py +0 -0
  37. {python_clu-0.12.9 → python_clu-0.12.12}/clu/compilation/compiledb.py +0 -0
  38. {python_clu-0.12.9 → python_clu-0.12.12}/clu/compilation/macros.py +0 -0
  39. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/__init__.py +0 -0
  40. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/abc.py +0 -0
  41. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/codecs.py +0 -0
  42. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/env.py +0 -0
  43. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/filebase.py +0 -0
  44. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/formats/__init__.py +0 -0
  45. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/formats/jsonfile.py +0 -0
  46. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/formats/picklefile.py +0 -0
  47. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/formats/tomlfile.py +0 -0
  48. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/formats/yamlfile.py +0 -0
  49. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/keymap.py +0 -0
  50. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/keymapview.py +0 -0
  51. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/legacy/__init__.py +0 -0
  52. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/legacy/base.py +0 -0
  53. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/legacy/fieldtypes.py +0 -0
  54. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/legacy/settings.py +0 -0
  55. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/ns.py +0 -0
  56. {python_clu-0.12.9 → python_clu-0.12.12}/clu/config/proxy.py +0 -0
  57. {python_clu-0.12.9 → python_clu-0.12.12}/clu/constants/__init__.py +0 -0
  58. {python_clu-0.12.9 → python_clu-0.12.12}/clu/constants/__main__.py +0 -0
  59. {python_clu-0.12.9 → python_clu-0.12.12}/clu/constants/consts.py +0 -0
  60. {python_clu-0.12.9 → python_clu-0.12.12}/clu/constants/data.py +0 -0
  61. {python_clu-0.12.9 → python_clu-0.12.12}/clu/constants/enums.py +0 -0
  62. {python_clu-0.12.9 → python_clu-0.12.12}/clu/constants/exceptions.py +0 -0
  63. {python_clu-0.12.9 → python_clu-0.12.12}/clu/constants/polyfills.py +0 -0
  64. {python_clu-0.12.9 → python_clu-0.12.12}/clu/csv.py +0 -0
  65. {python_clu-0.12.9 → python_clu-0.12.12}/clu/dicts.py +0 -0
  66. {python_clu-0.12.9 → python_clu-0.12.12}/clu/dispatch.py +0 -0
  67. {python_clu-0.12.9 → python_clu-0.12.12}/clu/exporting.py +0 -0
  68. {python_clu-0.12.9 → python_clu-0.12.12}/clu/extending.py +0 -0
  69. {python_clu-0.12.9 → python_clu-0.12.12}/clu/fs/__init__.py +0 -0
  70. {python_clu-0.12.9 → python_clu-0.12.12}/clu/fs/abc.py +0 -0
  71. {python_clu-0.12.9 → python_clu-0.12.12}/clu/fs/appdirectories.py +0 -0
  72. {python_clu-0.12.9 → python_clu-0.12.12}/clu/fs/filesystem.py +0 -0
  73. {python_clu-0.12.9 → python_clu-0.12.12}/clu/fs/misc.py +0 -0
  74. {python_clu-0.12.9 → python_clu-0.12.12}/clu/fs/pypath.py +0 -0
  75. {python_clu-0.12.9 → python_clu-0.12.12}/clu/fs/sourcetree.py +0 -0
  76. {python_clu-0.12.9 → python_clu-0.12.12}/clu/importing/__init__.py +0 -0
  77. {python_clu-0.12.9 → python_clu-0.12.12}/clu/importing/__main__.py +0 -0
  78. {python_clu-0.12.9 → python_clu-0.12.12}/clu/importing/base.py +0 -0
  79. {python_clu-0.12.9 → python_clu-0.12.12}/clu/importing/proxy.py +0 -0
  80. {python_clu-0.12.9 → python_clu-0.12.12}/clu/keyvalue.py +0 -0
  81. {python_clu-0.12.9 → python_clu-0.12.12}/clu/mathematics.py +0 -0
  82. {python_clu-0.12.9 → python_clu-0.12.12}/clu/predicates.py +0 -0
  83. {python_clu-0.12.9 → python_clu-0.12.12}/clu/repl/__init__.py +0 -0
  84. {python_clu-0.12.9 → python_clu-0.12.12}/clu/repl/ansi.py +0 -0
  85. {python_clu-0.12.9 → python_clu-0.12.12}/clu/repl/banners.py +0 -0
  86. {python_clu-0.12.9 → python_clu-0.12.12}/clu/repl/cli/__init__.py +0 -0
  87. {python_clu-0.12.9 → python_clu-0.12.12}/clu/repl/cli/boilerplate.py +0 -0
  88. {python_clu-0.12.9 → python_clu-0.12.12}/clu/repl/cli/boilerplate_copy.py +0 -0
  89. {python_clu-0.12.9 → python_clu-0.12.12}/clu/repl/cli/print_version.py +0 -0
  90. {python_clu-0.12.9 → python_clu-0.12.12}/clu/repl/columnize.py +0 -0
  91. {python_clu-0.12.9 → python_clu-0.12.12}/clu/repl/modules.py +0 -0
  92. {python_clu-0.12.9 → python_clu-0.12.12}/clu/repr.py +0 -0
  93. {python_clu-0.12.9 → python_clu-0.12.12}/clu/sanitizer.py +0 -0
  94. {python_clu-0.12.9 → python_clu-0.12.12}/clu/scripts/.gitignore +0 -0
  95. {python_clu-0.12.9 → python_clu-0.12.12}/clu/scripts/README.md +0 -0
  96. {python_clu-0.12.9 → python_clu-0.12.12}/clu/scripts/__init__.py +0 -0
  97. {python_clu-0.12.9 → python_clu-0.12.12}/clu/scripts/ansicolors.py +0 -0
  98. {python_clu-0.12.9 → python_clu-0.12.12}/clu/scripts/boilerplate.py +0 -0
  99. {python_clu-0.12.9 → python_clu-0.12.12}/clu/scripts/dictroast.py +0 -0
  100. {python_clu-0.12.9 → python_clu-0.12.12}/clu/scripts/legacy/forkumask.py +0 -0
  101. {python_clu-0.12.9 → python_clu-0.12.12}/clu/scripts/legacy/repl-bpython.py +0 -0
  102. {python_clu-0.12.9 → python_clu-0.12.12}/clu/scripts/legacy/repl-ipython.py +0 -0
  103. {python_clu-0.12.9 → python_clu-0.12.12}/clu/scripts/legacy/repl-ptpython.py +0 -0
  104. {python_clu-0.12.9 → python_clu-0.12.12}/clu/scripts/legacy/repl-pyzo.py +0 -0
  105. {python_clu-0.12.9 → python_clu-0.12.12}/clu/scripts/legacy/xdg-runtime.py +0 -0
  106. {python_clu-0.12.9 → python_clu-0.12.12}/clu/scripts/prediversus.py +0 -0
  107. {python_clu-0.12.9 → python_clu-0.12.12}/clu/shelving/__init__.py +0 -0
  108. {python_clu-0.12.9 → python_clu-0.12.12}/clu/shelving/redat.py +0 -0
  109. {python_clu-0.12.9 → python_clu-0.12.12}/clu/shelving/redis.conf +0 -0
  110. {python_clu-0.12.9 → python_clu-0.12.12}/clu/stdio.py +0 -0
  111. {python_clu-0.12.9 → python_clu-0.12.12}/clu/testing/__init__.py +0 -0
  112. {python_clu-0.12.9 → python_clu-0.12.12}/clu/testing/hook.py +0 -0
  113. {python_clu-0.12.9 → python_clu-0.12.12}/clu/testing/obsolete.py +0 -0
  114. {python_clu-0.12.9 → python_clu-0.12.12}/clu/testing/pytest.py +0 -0
  115. {python_clu-0.12.9 → python_clu-0.12.12}/clu/testing/utils.py +0 -0
  116. {python_clu-0.12.9 → python_clu-0.12.12}/clu/typespace/__init__.py +0 -0
  117. {python_clu-0.12.9 → python_clu-0.12.12}/clu/typespace/__main__.py +0 -0
  118. {python_clu-0.12.9 → python_clu-0.12.12}/clu/typespace/namespace.py +0 -0
  119. {python_clu-0.12.9 → python_clu-0.12.12}/clu/typology.py +0 -0
  120. {python_clu-0.12.9 → python_clu-0.12.12}/clu/version/__init__.py +0 -0
  121. {python_clu-0.12.9 → python_clu-0.12.12}/clu/version/__main__.py +0 -0
  122. {python_clu-0.12.9 → python_clu-0.12.12}/clu/version/git_version.py +0 -0
  123. {python_clu-0.12.9 → python_clu-0.12.12}/clu/version/read_version.py +0 -0
  124. {python_clu-0.12.9 → python_clu-0.12.12}/codecov.yml +0 -0
  125. {python_clu-0.12.9 → python_clu-0.12.12}/conftest.py +0 -0
  126. {python_clu-0.12.9 → python_clu-0.12.12}/docs/.DS_Store +0 -0
  127. {python_clu-0.12.9 → python_clu-0.12.12}/docs/Makefile +0 -0
  128. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/doctrees/api.doctree +0 -0
  129. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/doctrees/environment.pickle +0 -0
  130. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/doctrees/generated/clu.doctree +0 -0
  131. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/doctrees/index.doctree +0 -0
  132. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/.buildinfo +0 -0
  133. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_sources/api.rst.txt +0 -0
  134. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_sources/generated/clu.rst.txt +0 -0
  135. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_sources/index.rst.txt +0 -0
  136. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  137. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/alabaster.css +0 -0
  138. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/basic.css +0 -0
  139. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/badge_only.css +0 -0
  140. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  141. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  142. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  143. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  144. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  145. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
  146. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  147. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  148. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  149. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  150. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  151. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/fonts/lato-bold.woff +0 -0
  152. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/fonts/lato-bold.woff2 +0 -0
  153. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  154. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  155. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/fonts/lato-normal.woff +0 -0
  156. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/fonts/lato-normal.woff2 +0 -0
  157. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/css/theme.css +0 -0
  158. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/custom.css +0 -0
  159. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/doctools.js +0 -0
  160. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/documentation_options.js +0 -0
  161. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/file.png +0 -0
  162. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/jquery-3.6.0.js +0 -0
  163. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/jquery.js +0 -0
  164. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/js/badge_only.js +0 -0
  165. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/js/html5shiv-printshiv.min.js +0 -0
  166. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/js/html5shiv.min.js +0 -0
  167. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/js/theme.js +0 -0
  168. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/language_data.js +0 -0
  169. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/minus.png +0 -0
  170. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/plus.png +0 -0
  171. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/pygments.css +0 -0
  172. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/searchtools.js +0 -0
  173. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/underscore-1.13.1.js +0 -0
  174. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/_static/underscore.js +0 -0
  175. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/api.html +0 -0
  176. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/generated/clu.html +0 -0
  177. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/genindex.html +0 -0
  178. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/index.html +0 -0
  179. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/objects.inv +0 -0
  180. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/py-modindex.html +0 -0
  181. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/search.html +0 -0
  182. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/html/searchindex.js +0 -0
  183. {python_clu-0.12.9 → python_clu-0.12.12}/docs/build/man/clu.1 +0 -0
  184. {python_clu-0.12.9 → python_clu-0.12.12}/docs/make.bat +0 -0
  185. {python_clu-0.12.9 → python_clu-0.12.12}/docs/source/api.rst +0 -0
  186. {python_clu-0.12.9 → python_clu-0.12.12}/docs/source/conf.py +0 -0
  187. {python_clu-0.12.9 → python_clu-0.12.12}/docs/source/generated/clu.rst +0 -0
  188. {python_clu-0.12.9 → python_clu-0.12.12}/docs/source/index.rst +0 -0
  189. {python_clu-0.12.9 → python_clu-0.12.12}/hooks/autohook.sh +0 -0
  190. {python_clu-0.12.9 → python_clu-0.12.12}/hooks/post-push/00-coverage.sh +0 -0
  191. {python_clu-0.12.9 → python_clu-0.12.12}/hooks/pre-push/00-noop.sh +0 -0
  192. {python_clu-0.12.9 → python_clu-0.12.12}/hooks/pre-push/01-direnv-stdlib.sh +0 -0
  193. {python_clu-0.12.9 → python_clu-0.12.12}/hooks/scripts/coverage.sh +0 -0
  194. {python_clu-0.12.9 → python_clu-0.12.12}/hooks/scripts/display-issues.sh +0 -0
  195. {python_clu-0.12.9 → python_clu-0.12.12}/hooks/scripts/git-pushex +0 -0
  196. {python_clu-0.12.9 → python_clu-0.12.12}/hooks/scripts/noop.sh +0 -0
  197. {python_clu-0.12.9 → python_clu-0.12.12}/mypy.ini +0 -0
  198. {python_clu-0.12.9 → python_clu-0.12.12}/noxfile.py +0 -0
  199. {python_clu-0.12.9 → python_clu-0.12.12}/pyproject.toml +0 -0
  200. {python_clu-0.12.9 → python_clu-0.12.12}/pytest.ini +0 -0
  201. {python_clu-0.12.9 → python_clu-0.12.12}/python_clu.egg-info/SOURCES.txt +0 -0
  202. {python_clu-0.12.9 → python_clu-0.12.12}/python_clu.egg-info/dependency_links.txt +0 -0
  203. {python_clu-0.12.9 → python_clu-0.12.12}/python_clu.egg-info/entry_points.txt +0 -0
  204. {python_clu-0.12.9 → python_clu-0.12.12}/python_clu.egg-info/requires.txt +0 -0
  205. {python_clu-0.12.9 → python_clu-0.12.12}/python_clu.egg-info/top_level.txt +0 -0
  206. {python_clu-0.12.9 → python_clu-0.12.12}/python_clu.egg-info/zip-safe +0 -0
  207. {python_clu-0.12.9 → python_clu-0.12.12}/pytype.cfg +0 -0
  208. {python_clu-0.12.9 → python_clu-0.12.12}/requirements/changelog.txt +0 -0
  209. {python_clu-0.12.9 → python_clu-0.12.12}/requirements/docs.txt +0 -0
  210. {python_clu-0.12.9 → python_clu-0.12.12}/requirements/install.txt +0 -0
  211. {python_clu-0.12.9 → python_clu-0.12.12}/requirements/nox/codecov.txt +0 -0
  212. {python_clu-0.12.9 → python_clu-0.12.12}/requirements/nox/docs.txt +0 -0
  213. {python_clu-0.12.9 → python_clu-0.12.12}/requirements/nox/manifest.txt +0 -0
  214. {python_clu-0.12.9 → python_clu-0.12.12}/requirements/nox/pyproject.txt +0 -0
  215. {python_clu-0.12.9 → python_clu-0.12.12}/requirements/nox/repl.txt +0 -0
  216. {python_clu-0.12.9 → python_clu-0.12.12}/requirements/nox/tests.txt +0 -0
  217. {python_clu-0.12.9 → python_clu-0.12.12}/requirements/tox.txt +0 -0
  218. {python_clu-0.12.9 → python_clu-0.12.12}/requirements/typecheck.txt +0 -0
  219. {python_clu-0.12.9 → python_clu-0.12.12}/scratch/direnv_transformed_env.py +0 -0
  220. {python_clu-0.12.9 → python_clu-0.12.12}/scratch/images/clu-module-list-example-small.jpg +0 -0
  221. {python_clu-0.12.9 → python_clu-0.12.12}/scratch/images/clu-module-list-example.jpg +0 -0
  222. {python_clu-0.12.9 → python_clu-0.12.12}/scratch/images/clu-module-list-example.pxd +0 -0
  223. {python_clu-0.12.9 → python_clu-0.12.12}/scratch/images/clu-testing-time-totals-example-small.jpg +0 -0
  224. {python_clu-0.12.9 → python_clu-0.12.12}/scratch/images/clu-testing-time-totals-example.jpg +0 -0
  225. {python_clu-0.12.9 → python_clu-0.12.12}/scratch/images/clu-testing-time-totals-example.pxd +0 -0
  226. {python_clu-0.12.9 → python_clu-0.12.12}/scratch/images/construx-and-capsela-small.jpg +0 -0
  227. {python_clu-0.12.9 → python_clu-0.12.12}/scratch/images/construx-and-capsela.jpg +0 -0
  228. {python_clu-0.12.9 → python_clu-0.12.12}/scratch/images/construx-and-capsela.pxd +0 -0
  229. {python_clu-0.12.9 → python_clu-0.12.12}/scratch/images/toml-module-rant.jpg +0 -0
  230. {python_clu-0.12.9 → python_clu-0.12.12}/scratch/inline-tests-ImportError-uggggh.ipynb +0 -0
  231. {python_clu-0.12.9 → python_clu-0.12.12}/scratch/nteract.ipynb +0 -0
  232. {python_clu-0.12.9 → python_clu-0.12.12}/setup.cfg +0 -0
  233. {python_clu-0.12.9 → python_clu-0.12.12}/tests/__init__.py +0 -0
  234. {python_clu-0.12.9 → python_clu-0.12.12}/tests/data/1-58.jpg +0 -0
  235. {python_clu-0.12.9 → python_clu-0.12.12}/tests/data/3471426989_aa8e83cac5_o.jpg +0 -0
  236. {python_clu-0.12.9 → python_clu-0.12.12}/tests/data/3472236406_1fbf1a567d_o.jpg +0 -0
  237. {python_clu-0.12.9 → python_clu-0.12.12}/tests/data/8600JC.jpg +0 -0
  238. {python_clu-0.12.9 → python_clu-0.12.12}/tests/data/8ba.png +0 -0
  239. {python_clu-0.12.9 → python_clu-0.12.12}/tests/data/IMG_20180505_205153567.jpg +0 -0
  240. {python_clu-0.12.9 → python_clu-0.12.12}/tests/data/cheetah-003.jpg +0 -0
  241. {python_clu-0.12.9 → python_clu-0.12.12}/tests/data/config/clu-config.toml +0 -0
  242. {python_clu-0.12.9 → python_clu-0.12.12}/tests/data/config/yodogg.toml +0 -0
  243. {python_clu-0.12.9 → python_clu-0.12.12}/tests/data/shutterstock_90194617.jpg +0 -0
  244. {python_clu-0.12.9 → python_clu-0.12.12}/tests/data/yodata/09163d51421853.5608b3c2a1be0.jpg +0 -0
  245. {python_clu-0.12.9 → python_clu-0.12.12}/tests/data/yodata/5d0227342500004e12e3506d.jpg +0 -0
  246. {python_clu-0.12.9 → python_clu-0.12.12}/tests/data/yodata/BlackCat2_large-22.jpg +0 -0
  247. {python_clu-0.12.9 → python_clu-0.12.12}/tests/data/yodogg/Serval_Cat_Kitten-706.jpg +0 -0
  248. {python_clu-0.12.9 → python_clu-0.12.12}/tests/data/yodogg/Servals_Thoiry_19801.jpg +0 -0
  249. {python_clu-0.12.9 → python_clu-0.12.12}/tests/data/yodogg/video-pride-serval.jpg +0 -0
  250. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_abstract.py +0 -0
  251. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_all.py +0 -0
  252. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_boilerplate.py +0 -0
  253. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_config.py +0 -0
  254. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_config_abc.py +0 -0
  255. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_csv.py +0 -0
  256. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_dicts.py +0 -0
  257. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_dispatch.py +0 -0
  258. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_enum_aliases.py +0 -0
  259. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_exporting.py +0 -0
  260. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_extending.py +0 -0
  261. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_fs_abc.py +0 -0
  262. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_fs_appdirectories.py +0 -0
  263. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_fs_filesystem.py +0 -0
  264. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_fs_misc.py +0 -0
  265. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_importing.py +0 -0
  266. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_keyvalue.py +0 -0
  267. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_mathematics.py +0 -0
  268. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_naming.py +0 -0
  269. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_predicates.py +0 -0
  270. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_repl_columnize.py +0 -0
  271. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_repl_modules.py +0 -0
  272. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_repr.py +0 -0
  273. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_scripts_repl.py +0 -0
  274. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_typespace_namespace.py +0 -0
  275. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_typology.py +0 -0
  276. {python_clu-0.12.9 → python_clu-0.12.12}/tests/test_version.py +0 -0
  277. {python_clu-0.12.9 → python_clu-0.12.12}/tests/yodogg/.tm_properties +0 -0
  278. {python_clu-0.12.9 → python_clu-0.12.12}/tests/yodogg/__init__.py +0 -0
  279. {python_clu-0.12.9 → python_clu-0.12.12}/tests/yodogg/yodogg/__init__.py +0 -0
  280. {python_clu-0.12.9 → python_clu-0.12.12}/tests/yodogg/yodogg/config.py +0 -0
  281. {python_clu-0.12.9 → python_clu-0.12.12}/tests/yodogg/yodogg/exporting.py +0 -0
  282. {python_clu-0.12.9 → python_clu-0.12.12}/tests/yodogg/yodogg/iheard.py +0 -0
  283. {python_clu-0.12.9 → python_clu-0.12.12}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
 
2
2
  [tool.bumpversion]
3
- current_version = "0.12.9"
3
+ current_version = "0.12.12"
4
4
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
5
5
  serialize = ["{major}.{minor}.{patch}"]
6
6
  search = "{current_version}"
@@ -1,7 +1,65 @@
1
1
  # Changelog
2
2
 
3
3
 
4
- ## 0.12.8:pre8+g4f192b8 [SNAPSHOT]
4
+ ## 0.12.11:pre6+gf6ef978 [SNAPSHOT]
5
+
6
+ ### Other
7
+
8
+ * Reaffirming the commands’ non-erroneousness AGAIN!! [Alexander Böhn]
9
+
10
+ * Reaffirming the commands’ non-erroneousness. [Alexander Böhn]
11
+
12
+ * Supress raising pointless `ValueError`s when running “clu-ansidocs” [Alexander Böhn]
13
+
14
+ * Properly assigning `__doc__` string. [Alexander Böhn]
15
+
16
+ * Small updates to `clu.enums` and `clu.naming.qualified_import(…)` [Alexander Böhn]
17
+
18
+ … “clu.enums” uses its DUNDER constant internally
19
+ … “clu.naming.qualified_import(…)” has an internally-used “recurse”
20
+ argument that basically disables the whole “qualified” check,
21
+ which by the way I am starting to see as totally unnecessary
22
+
23
+ * Docstring MUST OCCUR FIRST!!! in a thing. [Alexander Böhn]
24
+
25
+
26
+ ## v0.12.11 (2025-05-25)
27
+
28
+ ### Other
29
+
30
+ * Bumped version: 0.12.10 → 0.12.11. [Alexander Böhn]
31
+
32
+ * [make] New changelog added. [Alexander Böhn]
33
+
34
+ * Ahhhh my home-brewed classifier didn’t work, booooo. [Alexander Böhn]
35
+
36
+
37
+ ## v0.12.10 (2025-05-25)
38
+
39
+ ### Other
40
+
41
+ * Bumped version: 0.12.9 → 0.12.10. [Alexander Böhn]
42
+
43
+ * [make] New changelog added. [Alexander Böhn]
44
+
45
+ * Fixed `clu.naming.qualified_name_tuple(…)` to work for module objects. [Alexander Böhn]
46
+
47
+ … this involved special-casing the whole thing, but it was worth it,
48
+ as it just wasn’t fucking working for this entire case this whole
49
+ time, which is fucking embarrasing. Yes!
50
+
51
+ * More requirement/REPL-import adjustments. [Alexander Böhn]
52
+
53
+ * Code of Conduct clarification. [Alexander Böhn]
54
+
55
+ * Classifier tidy-up. [Alexander Böhn]
56
+
57
+ * Gentlemen prefer f-strings. [Alexander Böhn]
58
+
59
+ * Updating straggling little info corners that didn’t get the memo. [Alexander Böhn]
60
+
61
+
62
+ ## v0.12.9 (2025-05-24)
5
63
 
6
64
  ### Add
7
65
 
@@ -13,6 +71,10 @@
13
71
 
14
72
  ### Other
15
73
 
74
+ * Bumped version: 0.12.8 → 0.12.9. [Alexander Böhn]
75
+
76
+ * [make] New changelog added. [Alexander Böhn]
77
+
16
78
  * Removed (fortunately vestigial) Click package dependency. [Alexander Böhn]
17
79
 
18
80
  * Expanded “getdoc” codepath in `clu.repl.ansi.signature(…)` [Alexander Böhn]
@@ -5,7 +5,6 @@ Topic :: Software Development
5
5
  Topic :: Software Development :: Testing
6
6
  Topic :: Utilities
7
7
  Operating System :: MacOS
8
- Operating System :: Microsoft :: Windows
9
8
  Operating System :: OS Independent
10
9
  Operating System :: POSIX
11
10
  Operating System :: Unix
@@ -74,3 +74,10 @@ available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.ht
74
74
 
75
75
  For answers to common questions about this code of conduct, see
76
76
  https://www.contributor-covenant.org/faq
77
+
78
+ ## The Main Thing
79
+
80
+ Do not be dicks. If you or people you happen to like are dicks, they will have to go
81
+ be dickish elsewhere, and in exrtreme cases you’ll be reported to the FBI or perhaps
82
+ shot at dawn through the lungs, to prevent you from being such dickhead morons.
83
+ OK? OK.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-clu
3
- Version: 0.12.9
3
+ Version: 0.12.12
4
4
  Summary: Python-CLU: Common Lightweight Utilities
5
5
  Home-page: https://github.com/fish2000/clu
6
6
  Download-URL: https://github.com/fish2000/clu/zipball/master
@@ -24,7 +24,6 @@ Classifier: Topic :: Software Development
24
24
  Classifier: Topic :: Software Development :: Testing
25
25
  Classifier: Topic :: Utilities
26
26
  Classifier: Operating System :: MacOS
27
- Classifier: Operating System :: Microsoft :: Windows
28
27
  Classifier: Operating System :: OS Independent
29
28
  Classifier: Operating System :: POSIX
30
29
  Classifier: Operating System :: Unix
@@ -0,0 +1 @@
1
+ __version__ = '0.12.12'
@@ -16,8 +16,6 @@ MIFFLIN = SUNDER = '_aliases_'
16
16
  @export
17
17
  class alias(clu.abstract.BaseDescriptor, metaclass=clu.abstract.Slotted):
18
18
 
19
- __slots__ = ('name', 'aliased')
20
-
21
19
  """ Alias one Enum class instance to another. To wit:
22
20
 
23
21
  @unique
@@ -48,6 +46,8 @@ class alias(clu.abstract.BaseDescriptor, metaclass=clu.abstract.Slotted):
48
46
  ISN’T ALL OF THAT FUCKING AWESOME?!?!? I think so. Yes!
49
47
  """
50
48
 
49
+ __slots__ = ('name', 'aliased')
50
+
51
51
  def __init__(self, instance, name=None, cls=None):
52
52
  """ Set up the alias, passing an enum instance.
53
53
 
@@ -94,7 +94,7 @@ class alias(clu.abstract.BaseDescriptor, metaclass=clu.abstract.Slotted):
94
94
  if it has a dictionary attribute “__aliases__”).
95
95
  """
96
96
  self.name = name
97
- if hasattr(cls, '__aliases__'):
97
+ if hasattr(cls, DUNDER): # check for __aliases__
98
98
  if self.name in cls.__aliases__:
99
99
  message = f"Enum already contains an alias named {self.name}"
100
100
  raise AttributeError(message)
@@ -113,8 +113,8 @@ class AliasingEnumMeta(EnumMeta):
113
113
  the normal enum `__members__` directory only with aliases. Yes.
114
114
  """
115
115
 
116
- if '__aliases__' not in attributes:
117
- attributes['__aliases__'] = {}
116
+ if DUNDER not in attributes:
117
+ attributes[DUNDER] = {}
118
118
 
119
119
  return super().__new__(metacls, name,
120
120
  bases,
@@ -32,7 +32,7 @@ def determine_module(thing, name=None):
32
32
  import pickle
33
33
  return pickle.whichmodule(thing, name) # type: ignore
34
34
 
35
- """
35
+ __doc__ = """
36
36
  NAME AND MODULE SEARCH FUNCTIONS: the “nameof(…)” and “moduleof(…)”
37
37
  functions each search through, in order:
38
38
 
@@ -248,17 +248,17 @@ def dotpath_split(dotpath):
248
248
  return head, tail or None
249
249
 
250
250
  @export
251
- def qualified_import(qualified):
251
+ def qualified_import(qualified, *, recurse=False):
252
252
  """ Import a thing based on its full thing-name.
253
253
  e.g. 'instakit.processors.halftone.FloydSteinberg'
254
254
  """
255
- if QUALIFIER not in qualified:
255
+ if not recurse and QUALIFIER not in qualified:
256
256
  raise ValueError(f"qualified name required (got {qualified})")
257
257
  try:
258
258
  imported = importlib.import_module(qualified)
259
259
  except ModuleNotFoundError:
260
260
  head, tail = dotpath_split(qualified)
261
- module = qualified_import(tail)
261
+ module = qualified_import(tail, recurse=True)
262
262
  imported = getattr(module, head)
263
263
  return imported
264
264
 
@@ -267,7 +267,18 @@ def qualified_name_tuple(thing):
267
267
  """ Get the thing-name and module/package name for a class or module.
268
268
  e.g. ('FloydSteinberg', 'instakit.processors.halftone')
269
269
  """
270
- from clu.predicates import pyqualname
270
+ from clu.predicates import pyqualname, pyname
271
+ from clu.typology import ismodule
272
+
273
+ # Special case for figuring out module names:
274
+ if ismodule(thing):
275
+ putative = pyname(thing)
276
+ if QUALIFIER in putative:
277
+ partition = putative.rpartition(QUALIFIER)
278
+ return partition[-1:][0], partition[:-1][0]
279
+ else:
280
+ return putative, ''
281
+
271
282
  return pyqualname(thing) or nameof(thing), \
272
283
  moduleof(thing)
273
284
 
@@ -18,9 +18,9 @@ def actually_print_ansidocs(dotpath):
18
18
 
19
19
  # Attempt to import it:
20
20
  try:
21
- thing = qualified_import(dotpath)
21
+ thing = qualified_import(dotpath, recurse=True)
22
22
  except ValueError:
23
- thing = import_module(dotpath)
23
+ thing = actually_print_ansidocs(dotpath)
24
24
  except AttributeError as error:
25
25
  error_string = str(error)
26
26
  print(f"[ERROR] {error_string}", file=ansidocs.iohandle)
@@ -28,6 +28,7 @@ def actually_print_ansidocs(dotpath):
28
28
 
29
29
  # This goes directly to stdout:
30
30
  ansidocs(thing)
31
+ return thing
31
32
 
32
33
  def ansidocs_command():
33
34
  """ Print out the ANSI-ified docstring for the given thing(s) """
@@ -76,16 +76,13 @@ GLOBALS = globals()
76
76
  starmods = ('clu.repl.ansi',
77
77
  'clu.repl.columnize',
78
78
  'clu.repl.modules',
79
- 'clu.constants.enums',
80
- 'clu.constants.data',
81
- 'clu.application',
82
79
  'clu.config.abc',
83
80
  'clu.config.env',
84
81
  'clu.config.keymap',
85
82
  'clu.config.proxy',
86
- 'clu.dicts', 'clu.enums', 'clu.exporting',
83
+ 'clu.dicts', 'clu.exporting',
87
84
  'clu.importing', 'clu.naming', 'clu.predicates', 'clu.typology',
88
- 'clu.fs.abc', 'clu.fs.filesystem', 'clu.fs.misc', 'clu.repr',
85
+ 'clu.fs.filesystem', 'clu.fs.misc',
89
86
  'clu.scripts.treeline',
90
87
  'clu.typespace.namespace',
91
88
  'clu.testing.utils')
@@ -94,15 +91,20 @@ mods = ('clu',
94
91
  'clu.all',
95
92
  'clu.abstract',
96
93
  'clu.constants.consts',
94
+ 'clu.constants.data',
95
+ 'clu.constants.enums',
97
96
  'clu.constants.polyfills',
98
97
  'clu.config.codecs',
99
98
  'clu.config.ns',
100
99
  'clu.csv',
100
+ 'clu.enums',
101
+ 'clu.fs.abc',
101
102
  'clu.fs.appdirectories',
102
103
  'clu.keyvalue',
103
104
  'clu.mathematics',
104
105
  'clu.dispatch', 'clu.sanitizer', 'clu.fs.pypath',
105
106
  'clu.extending', 'clu.shelving.redat',
107
+ 'clu.repr',
106
108
  'clu.scripts.ansicolors',
107
109
  'clu.scripts.treeline',
108
110
  'clu.stdio',
@@ -113,7 +115,7 @@ mods = ('clu',
113
115
  'datetime', 'functools', 'importlib', 'inspect',
114
116
  'itertools', 'math', 'operator', 'pathlib',
115
117
  'pickle', 'six', 'shutil', 'sysconfig', 'weakref',
116
- 'numpy', 'more_itertools', 'colorama',
118
+ 'numpy', 'colorama',
117
119
  'xerox', 'zict')
118
120
 
119
121
  # “Star-import” all starmods – this is equivalent to doing:
@@ -20,7 +20,7 @@ from clu.exporting import Exporter
20
20
  exporter = Exporter(path=__file__)
21
21
  export = exporter.decorator()
22
22
 
23
- """
23
+ __doc__ = """
24
24
  TREELINE – tree ± command-line
25
25
 
26
26
  • Turn a command like this:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-clu
3
- Version: 0.12.9
3
+ Version: 0.12.12
4
4
  Summary: Python-CLU: Common Lightweight Utilities
5
5
  Home-page: https://github.com/fish2000/clu
6
6
  Download-URL: https://github.com/fish2000/clu/zipball/master
@@ -24,7 +24,6 @@ Classifier: Topic :: Software Development
24
24
  Classifier: Topic :: Software Development :: Testing
25
25
  Classifier: Topic :: Utilities
26
26
  Classifier: Operating System :: MacOS
27
- Classifier: Operating System :: Microsoft :: Windows
28
27
  Classifier: Operating System :: OS Independent
29
28
  Classifier: Operating System :: POSIX
30
29
  Classifier: Operating System :: Unix
@@ -11,7 +11,6 @@ coverage>=5.0.0
11
11
  curtsies>=0.3.1
12
12
  cython>=0.29.14
13
13
  gfm>=0.0.2
14
- greenlet>=0.4.0
15
14
  ipython>=7.10.0
16
15
  jedi>=0.16.0
17
16
  lmdb>=0.8.0
@@ -23,13 +23,12 @@
23
23
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
24
  # SOFTWARE.
25
25
  #
26
- ''' CLU - Common Lightweight Utilities, or Command-Line Utilities (your pick) '''
26
+ ''' CLU - Common Lightweight Utilities '''
27
27
 
28
28
  from __future__ import print_function
29
29
  from setuptools import setup, find_packages
30
30
 
31
- import os
32
- import sys
31
+ import sys, os, io
33
32
  import sysconfig
34
33
 
35
34
  # CONSTANTS
@@ -40,11 +39,9 @@ AUTHOR_USER = 'fish2000'
40
39
  GITHUB = 'github.com'
41
40
  GMAIL = 'gmail.com'
42
41
 
43
- AUTHOR_EMAIL = '%s@%s' % (AUTHOR_USER, GMAIL)
44
- PROJECT_GH_URL = 'https://%s/%s/%s' % (GITHUB,
45
- AUTHOR_USER,
46
- PROJECT_NAME)
47
- PROJECT_DL_URL = '%s/zipball/master' % PROJECT_GH_URL
42
+ AUTHOR_EMAIL = f'{AUTHOR_USER}@{GMAIL}'
43
+ PROJECT_GH_URL = f'https://{GITHUB}/{AUTHOR_USER}/{PROJECT_NAME}'
44
+ PROJECT_DL_URL = f'{PROJECT_GH_URL}/zipball/master'
48
45
 
49
46
  KEYWORDS = ('command',
50
47
  'utilities', PROJECT_NAME,
@@ -69,15 +66,14 @@ ENTRY_POINTS = {
69
66
  }
70
67
 
71
68
  def project_content(*filenames):
72
- import io
73
69
  filepath = os.path.join(CWD, *filenames)
74
70
  if not os.path.isfile(filepath):
75
- raise IOError("""File %s doesn't exist""" % filepath)
71
+ raise IOError(f"File {filepath} doesn't exist")
76
72
  out = ''
77
73
  with io.open(filepath, 'r') as handle:
78
74
  out += handle.read()
79
75
  if not out:
80
- raise ValueError("""File %s couldn't be read""" % os.path.sep.join(filenames))
76
+ raise ValueError(f"File {filepath} couldn't be read")
81
77
  return out.strip()
82
78
 
83
79
  # PROJECT VERSION & METADATA
@@ -88,7 +84,7 @@ try:
88
84
  '__version__.py')).read(),
89
85
  '__version__.py', 'exec'))
90
86
  except:
91
- __version__ = '0.12.9'
87
+ __version__ = '0.12.12'
92
88
 
93
89
  # PROJECT DESCRIPTION
94
90
  LONG_DESCRIPTION = project_content('ABOUT.md')
@@ -1 +0,0 @@
1
- __version__ = '0.12.9'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes