python-clu 0.12.21__tar.gz → 0.12.23__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 (288) hide show
  1. {python_clu-0.12.21 → python_clu-0.12.23}/.bumpversion.toml +13 -2
  2. {python_clu-0.12.21 → python_clu-0.12.23}/CHANGELOG.md +41 -1
  3. python_clu-0.12.23/CITATION.cff +10 -0
  4. {python_clu-0.12.21 → python_clu-0.12.23}/MANIFEST.in +1 -0
  5. {python_clu-0.12.21 → python_clu-0.12.23}/PKG-INFO +1 -1
  6. python_clu-0.12.23/clu/__version__.py +1 -0
  7. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/keymap.py +2 -4
  8. {python_clu-0.12.21 → python_clu-0.12.23}/clu/dicts.py +49 -19
  9. {python_clu-0.12.21 → python_clu-0.12.23}/noxfile.py +5 -3
  10. {python_clu-0.12.21 → python_clu-0.12.23}/python_clu.egg-info/PKG-INFO +1 -1
  11. {python_clu-0.12.21 → python_clu-0.12.23}/python_clu.egg-info/SOURCES.txt +1 -1
  12. {python_clu-0.12.21 → python_clu-0.12.23}/setup.py +1 -1
  13. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_fs_abc.py +1 -1
  14. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_fs_appdirectories.py +6 -6
  15. python_clu-0.12.21/clu/__version__.py +0 -1
  16. python_clu-0.12.21/pytest.ini +0 -5
  17. {python_clu-0.12.21 → python_clu-0.12.23}/.coveragerc +0 -0
  18. {python_clu-0.12.21 → python_clu-0.12.23}/.editorconfig +0 -0
  19. {python_clu-0.12.21 → python_clu-0.12.23}/.gitchangelog.rc +0 -0
  20. {python_clu-0.12.21 → python_clu-0.12.23}/.gitignore +0 -0
  21. {python_clu-0.12.21 → python_clu-0.12.23}/.landscape.yml +0 -0
  22. {python_clu-0.12.21 → python_clu-0.12.23}/.travis.yml +0 -0
  23. {python_clu-0.12.21 → python_clu-0.12.23}/ABOUT.md +0 -0
  24. {python_clu-0.12.21 → python_clu-0.12.23}/CLASSIFIERS.txt +0 -0
  25. {python_clu-0.12.21 → python_clu-0.12.23}/CLU_Treatment.md +0 -0
  26. {python_clu-0.12.21 → python_clu-0.12.23}/CODE_OF_CONDUCT.md +0 -0
  27. {python_clu-0.12.21 → python_clu-0.12.23}/LICENSE.txt +0 -0
  28. {python_clu-0.12.21 → python_clu-0.12.23}/Makefile +0 -0
  29. {python_clu-0.12.21 → python_clu-0.12.23}/README.md +0 -0
  30. {python_clu-0.12.21 → python_clu-0.12.23}/appveyor.yml +0 -0
  31. {python_clu-0.12.21 → python_clu-0.12.23}/clu/__init__.py +0 -0
  32. {python_clu-0.12.21 → python_clu-0.12.23}/clu/__main__.py +0 -0
  33. {python_clu-0.12.21 → python_clu-0.12.23}/clu/abstract.py +0 -0
  34. {python_clu-0.12.21 → python_clu-0.12.23}/clu/all.py +0 -0
  35. {python_clu-0.12.21 → python_clu-0.12.23}/clu/api/__init__.py +0 -0
  36. {python_clu-0.12.21 → python_clu-0.12.23}/clu/api/__main__.py +0 -0
  37. {python_clu-0.12.21 → python_clu-0.12.23}/clu/application.py +0 -0
  38. {python_clu-0.12.21 → python_clu-0.12.23}/clu/compilation/__init__.py +0 -0
  39. {python_clu-0.12.21 → python_clu-0.12.23}/clu/compilation/compiledb.py +0 -0
  40. {python_clu-0.12.21 → python_clu-0.12.23}/clu/compilation/macros.py +0 -0
  41. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/__init__.py +0 -0
  42. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/abc.py +0 -0
  43. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/codecs.py +0 -0
  44. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/env.py +0 -0
  45. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/filebase.py +0 -0
  46. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/formats/__init__.py +0 -0
  47. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/formats/jsonfile.py +0 -0
  48. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/formats/picklefile.py +0 -0
  49. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/formats/tomlfile.py +0 -0
  50. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/formats/yamlfile.py +0 -0
  51. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/keymaputils.py +0 -0
  52. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/keymapview.py +0 -0
  53. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/legacy/__init__.py +0 -0
  54. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/legacy/base.py +0 -0
  55. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/legacy/fieldtypes.py +0 -0
  56. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/legacy/settings.py +0 -0
  57. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/ns.py +0 -0
  58. {python_clu-0.12.21 → python_clu-0.12.23}/clu/config/proxy.py +0 -0
  59. {python_clu-0.12.21 → python_clu-0.12.23}/clu/constants/__init__.py +0 -0
  60. {python_clu-0.12.21 → python_clu-0.12.23}/clu/constants/__main__.py +0 -0
  61. {python_clu-0.12.21 → python_clu-0.12.23}/clu/constants/consts.py +0 -0
  62. {python_clu-0.12.21 → python_clu-0.12.23}/clu/constants/data.py +0 -0
  63. {python_clu-0.12.21 → python_clu-0.12.23}/clu/constants/enums.py +0 -0
  64. {python_clu-0.12.21 → python_clu-0.12.23}/clu/constants/exceptions.py +0 -0
  65. {python_clu-0.12.21 → python_clu-0.12.23}/clu/constants/polyfills.py +0 -0
  66. {python_clu-0.12.21 → python_clu-0.12.23}/clu/csv.py +0 -0
  67. {python_clu-0.12.21 → python_clu-0.12.23}/clu/dispatch.py +0 -0
  68. {python_clu-0.12.21 → python_clu-0.12.23}/clu/enums.py +0 -0
  69. {python_clu-0.12.21 → python_clu-0.12.23}/clu/exporting.py +0 -0
  70. {python_clu-0.12.21 → python_clu-0.12.23}/clu/extending.py +0 -0
  71. {python_clu-0.12.21 → python_clu-0.12.23}/clu/fs/__init__.py +0 -0
  72. {python_clu-0.12.21 → python_clu-0.12.23}/clu/fs/abc.py +0 -0
  73. {python_clu-0.12.21 → python_clu-0.12.23}/clu/fs/appdirectories.py +0 -0
  74. {python_clu-0.12.21 → python_clu-0.12.23}/clu/fs/filesystem.py +0 -0
  75. {python_clu-0.12.21 → python_clu-0.12.23}/clu/fs/misc.py +0 -0
  76. {python_clu-0.12.21 → python_clu-0.12.23}/clu/fs/pypath.py +0 -0
  77. {python_clu-0.12.21 → python_clu-0.12.23}/clu/fs/sourcetree.py +0 -0
  78. {python_clu-0.12.21 → python_clu-0.12.23}/clu/importing/__init__.py +0 -0
  79. {python_clu-0.12.21 → python_clu-0.12.23}/clu/importing/__main__.py +0 -0
  80. {python_clu-0.12.21 → python_clu-0.12.23}/clu/importing/base.py +0 -0
  81. {python_clu-0.12.21 → python_clu-0.12.23}/clu/importing/proxy.py +0 -0
  82. {python_clu-0.12.21 → python_clu-0.12.23}/clu/keyvalue.py +0 -0
  83. {python_clu-0.12.21 → python_clu-0.12.23}/clu/mathematics.py +0 -0
  84. {python_clu-0.12.21 → python_clu-0.12.23}/clu/naming.py +0 -0
  85. {python_clu-0.12.21 → python_clu-0.12.23}/clu/predicates.py +0 -0
  86. {python_clu-0.12.21 → python_clu-0.12.23}/clu/repl/__init__.py +0 -0
  87. {python_clu-0.12.21 → python_clu-0.12.23}/clu/repl/ansi.py +0 -0
  88. {python_clu-0.12.21 → python_clu-0.12.23}/clu/repl/banners.py +0 -0
  89. {python_clu-0.12.21 → python_clu-0.12.23}/clu/repl/cli/__init__.py +0 -0
  90. {python_clu-0.12.21 → python_clu-0.12.23}/clu/repl/cli/ansidocs.py +0 -0
  91. {python_clu-0.12.21 → python_clu-0.12.23}/clu/repl/cli/boilerplate.py +0 -0
  92. {python_clu-0.12.21 → python_clu-0.12.23}/clu/repl/cli/boilerplate_copy.py +0 -0
  93. {python_clu-0.12.21 → python_clu-0.12.23}/clu/repl/cli/print_version.py +0 -0
  94. {python_clu-0.12.21 → python_clu-0.12.23}/clu/repl/columnize.py +0 -0
  95. {python_clu-0.12.21 → python_clu-0.12.23}/clu/repl/modules.py +0 -0
  96. {python_clu-0.12.21 → python_clu-0.12.23}/clu/repr.py +0 -0
  97. {python_clu-0.12.21 → python_clu-0.12.23}/clu/sanitizer.py +0 -0
  98. {python_clu-0.12.21 → python_clu-0.12.23}/clu/scripts/.gitignore +0 -0
  99. {python_clu-0.12.21 → python_clu-0.12.23}/clu/scripts/README.md +0 -0
  100. {python_clu-0.12.21 → python_clu-0.12.23}/clu/scripts/__init__.py +0 -0
  101. {python_clu-0.12.21 → python_clu-0.12.23}/clu/scripts/ansicolors.py +0 -0
  102. {python_clu-0.12.21 → python_clu-0.12.23}/clu/scripts/boilerplate.py +0 -0
  103. {python_clu-0.12.21 → python_clu-0.12.23}/clu/scripts/dictroast.py +0 -0
  104. {python_clu-0.12.21 → python_clu-0.12.23}/clu/scripts/legacy/forkumask.py +0 -0
  105. {python_clu-0.12.21 → python_clu-0.12.23}/clu/scripts/legacy/repl-bpython.py +0 -0
  106. {python_clu-0.12.21 → python_clu-0.12.23}/clu/scripts/legacy/repl-ipython.py +0 -0
  107. {python_clu-0.12.21 → python_clu-0.12.23}/clu/scripts/legacy/repl-ptpython.py +0 -0
  108. {python_clu-0.12.21 → python_clu-0.12.23}/clu/scripts/legacy/repl-pyzo.py +0 -0
  109. {python_clu-0.12.21 → python_clu-0.12.23}/clu/scripts/legacy/xdg-runtime.py +0 -0
  110. {python_clu-0.12.21 → python_clu-0.12.23}/clu/scripts/prediversus.py +0 -0
  111. {python_clu-0.12.21 → python_clu-0.12.23}/clu/scripts/repl.py +0 -0
  112. {python_clu-0.12.21 → python_clu-0.12.23}/clu/scripts/treeline.py +0 -0
  113. {python_clu-0.12.21 → python_clu-0.12.23}/clu/shelving/__init__.py +0 -0
  114. {python_clu-0.12.21 → python_clu-0.12.23}/clu/shelving/redat.py +0 -0
  115. {python_clu-0.12.21 → python_clu-0.12.23}/clu/shelving/redis.conf +0 -0
  116. {python_clu-0.12.21 → python_clu-0.12.23}/clu/stdio.py +0 -0
  117. {python_clu-0.12.21 → python_clu-0.12.23}/clu/testing/__init__.py +0 -0
  118. {python_clu-0.12.21 → python_clu-0.12.23}/clu/testing/hook.py +0 -0
  119. {python_clu-0.12.21 → python_clu-0.12.23}/clu/testing/obsolete.py +0 -0
  120. {python_clu-0.12.21 → python_clu-0.12.23}/clu/testing/pytest.py +0 -0
  121. {python_clu-0.12.21 → python_clu-0.12.23}/clu/testing/utils.py +0 -0
  122. {python_clu-0.12.21 → python_clu-0.12.23}/clu/trie.py +0 -0
  123. {python_clu-0.12.21 → python_clu-0.12.23}/clu/typespace/__init__.py +0 -0
  124. {python_clu-0.12.21 → python_clu-0.12.23}/clu/typespace/__main__.py +0 -0
  125. {python_clu-0.12.21 → python_clu-0.12.23}/clu/typespace/namespace.py +0 -0
  126. {python_clu-0.12.21 → python_clu-0.12.23}/clu/typology.py +0 -0
  127. {python_clu-0.12.21 → python_clu-0.12.23}/clu/version/__init__.py +0 -0
  128. {python_clu-0.12.21 → python_clu-0.12.23}/clu/version/__main__.py +0 -0
  129. {python_clu-0.12.21 → python_clu-0.12.23}/clu/version/git_version.py +0 -0
  130. {python_clu-0.12.21 → python_clu-0.12.23}/clu/version/read_version.py +0 -0
  131. {python_clu-0.12.21 → python_clu-0.12.23}/codecov.yml +0 -0
  132. {python_clu-0.12.21 → python_clu-0.12.23}/conftest.py +0 -0
  133. {python_clu-0.12.21 → python_clu-0.12.23}/docs/.DS_Store +0 -0
  134. {python_clu-0.12.21 → python_clu-0.12.23}/docs/Makefile +0 -0
  135. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/doctrees/api.doctree +0 -0
  136. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/doctrees/environment.pickle +0 -0
  137. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/doctrees/generated/clu.doctree +0 -0
  138. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/doctrees/index.doctree +0 -0
  139. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/.buildinfo +0 -0
  140. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_sources/api.rst.txt +0 -0
  141. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_sources/generated/clu.rst.txt +0 -0
  142. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_sources/index.rst.txt +0 -0
  143. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  144. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/alabaster.css +0 -0
  145. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/basic.css +0 -0
  146. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/badge_only.css +0 -0
  147. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  148. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  149. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  150. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  151. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  152. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
  153. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  154. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  155. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  156. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  157. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  158. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/fonts/lato-bold.woff +0 -0
  159. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/fonts/lato-bold.woff2 +0 -0
  160. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  161. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  162. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/fonts/lato-normal.woff +0 -0
  163. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/fonts/lato-normal.woff2 +0 -0
  164. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/css/theme.css +0 -0
  165. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/custom.css +0 -0
  166. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/doctools.js +0 -0
  167. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/documentation_options.js +0 -0
  168. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/file.png +0 -0
  169. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/jquery-3.6.0.js +0 -0
  170. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/jquery.js +0 -0
  171. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/js/badge_only.js +0 -0
  172. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/js/html5shiv-printshiv.min.js +0 -0
  173. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/js/html5shiv.min.js +0 -0
  174. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/js/theme.js +0 -0
  175. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/language_data.js +0 -0
  176. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/minus.png +0 -0
  177. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/plus.png +0 -0
  178. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/pygments.css +0 -0
  179. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/searchtools.js +0 -0
  180. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/underscore-1.13.1.js +0 -0
  181. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/_static/underscore.js +0 -0
  182. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/api.html +0 -0
  183. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/generated/clu.html +0 -0
  184. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/genindex.html +0 -0
  185. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/index.html +0 -0
  186. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/objects.inv +0 -0
  187. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/py-modindex.html +0 -0
  188. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/search.html +0 -0
  189. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/html/searchindex.js +0 -0
  190. {python_clu-0.12.21 → python_clu-0.12.23}/docs/build/man/clu.1 +0 -0
  191. {python_clu-0.12.21 → python_clu-0.12.23}/docs/make.bat +0 -0
  192. {python_clu-0.12.21 → python_clu-0.12.23}/docs/source/api.rst +0 -0
  193. {python_clu-0.12.21 → python_clu-0.12.23}/docs/source/conf.py +0 -0
  194. {python_clu-0.12.21 → python_clu-0.12.23}/docs/source/generated/clu.rst +0 -0
  195. {python_clu-0.12.21 → python_clu-0.12.23}/docs/source/index.rst +0 -0
  196. {python_clu-0.12.21 → python_clu-0.12.23}/hooks/autohook.sh +0 -0
  197. {python_clu-0.12.21 → python_clu-0.12.23}/hooks/post-push/00-coverage.sh +0 -0
  198. {python_clu-0.12.21 → python_clu-0.12.23}/hooks/pre-push/00-noop.sh +0 -0
  199. {python_clu-0.12.21 → python_clu-0.12.23}/hooks/pre-push/01-direnv-stdlib.sh +0 -0
  200. {python_clu-0.12.21 → python_clu-0.12.23}/hooks/scripts/coverage.sh +0 -0
  201. {python_clu-0.12.21 → python_clu-0.12.23}/hooks/scripts/display-issues.sh +0 -0
  202. {python_clu-0.12.21 → python_clu-0.12.23}/hooks/scripts/git-pushex +0 -0
  203. {python_clu-0.12.21 → python_clu-0.12.23}/hooks/scripts/noop.sh +0 -0
  204. {python_clu-0.12.21 → python_clu-0.12.23}/mypy.ini +0 -0
  205. {python_clu-0.12.21 → python_clu-0.12.23}/pyproject.toml +0 -0
  206. {python_clu-0.12.21 → python_clu-0.12.23}/python_clu.egg-info/dependency_links.txt +0 -0
  207. {python_clu-0.12.21 → python_clu-0.12.23}/python_clu.egg-info/entry_points.txt +0 -0
  208. {python_clu-0.12.21 → python_clu-0.12.23}/python_clu.egg-info/requires.txt +0 -0
  209. {python_clu-0.12.21 → python_clu-0.12.23}/python_clu.egg-info/top_level.txt +0 -0
  210. {python_clu-0.12.21 → python_clu-0.12.23}/python_clu.egg-info/zip-safe +0 -0
  211. {python_clu-0.12.21 → python_clu-0.12.23}/pytype.cfg +0 -0
  212. {python_clu-0.12.21 → python_clu-0.12.23}/requirements/changelog.txt +0 -0
  213. {python_clu-0.12.21 → python_clu-0.12.23}/requirements/dev.txt +0 -0
  214. {python_clu-0.12.21 → python_clu-0.12.23}/requirements/docs.txt +0 -0
  215. {python_clu-0.12.21 → python_clu-0.12.23}/requirements/install.txt +0 -0
  216. {python_clu-0.12.21 → python_clu-0.12.23}/requirements/nox/codecov.txt +0 -0
  217. {python_clu-0.12.21 → python_clu-0.12.23}/requirements/nox/docs.txt +0 -0
  218. {python_clu-0.12.21 → python_clu-0.12.23}/requirements/nox/manifest.txt +0 -0
  219. {python_clu-0.12.21 → python_clu-0.12.23}/requirements/nox/pyproject.txt +0 -0
  220. {python_clu-0.12.21 → python_clu-0.12.23}/requirements/nox/repl.txt +0 -0
  221. {python_clu-0.12.21 → python_clu-0.12.23}/requirements/nox/tests.txt +0 -0
  222. {python_clu-0.12.21 → python_clu-0.12.23}/requirements/tox.txt +0 -0
  223. {python_clu-0.12.21 → python_clu-0.12.23}/requirements/typecheck.txt +0 -0
  224. {python_clu-0.12.21 → python_clu-0.12.23}/scratch/direnv_transformed_env.py +0 -0
  225. {python_clu-0.12.21 → python_clu-0.12.23}/scratch/images/clu-module-list-example-small.jpg +0 -0
  226. {python_clu-0.12.21 → python_clu-0.12.23}/scratch/images/clu-module-list-example.jpg +0 -0
  227. {python_clu-0.12.21 → python_clu-0.12.23}/scratch/images/clu-module-list-example.pxd +0 -0
  228. {python_clu-0.12.21 → python_clu-0.12.23}/scratch/images/clu-testing-time-totals-example-small.jpg +0 -0
  229. {python_clu-0.12.21 → python_clu-0.12.23}/scratch/images/clu-testing-time-totals-example.jpg +0 -0
  230. {python_clu-0.12.21 → python_clu-0.12.23}/scratch/images/clu-testing-time-totals-example.pxd +0 -0
  231. {python_clu-0.12.21 → python_clu-0.12.23}/scratch/images/construx-and-capsela-small.jpg +0 -0
  232. {python_clu-0.12.21 → python_clu-0.12.23}/scratch/images/construx-and-capsela.jpg +0 -0
  233. {python_clu-0.12.21 → python_clu-0.12.23}/scratch/images/construx-and-capsela.pxd +0 -0
  234. {python_clu-0.12.21 → python_clu-0.12.23}/scratch/images/moira.png +0 -0
  235. {python_clu-0.12.21 → python_clu-0.12.23}/scratch/images/toml-module-rant.jpg +0 -0
  236. {python_clu-0.12.21 → python_clu-0.12.23}/scratch/inline-tests-ImportError-uggggh.ipynb +0 -0
  237. {python_clu-0.12.21 → python_clu-0.12.23}/scratch/nteract.ipynb +0 -0
  238. {python_clu-0.12.21 → python_clu-0.12.23}/setup.cfg +0 -0
  239. {python_clu-0.12.21 → python_clu-0.12.23}/tests/__init__.py +0 -0
  240. {python_clu-0.12.21 → python_clu-0.12.23}/tests/data/1-58.jpg +0 -0
  241. {python_clu-0.12.21 → python_clu-0.12.23}/tests/data/3471426989_aa8e83cac5_o.jpg +0 -0
  242. {python_clu-0.12.21 → python_clu-0.12.23}/tests/data/3472236406_1fbf1a567d_o.jpg +0 -0
  243. {python_clu-0.12.21 → python_clu-0.12.23}/tests/data/8600JC.jpg +0 -0
  244. {python_clu-0.12.21 → python_clu-0.12.23}/tests/data/8ba.png +0 -0
  245. {python_clu-0.12.21 → python_clu-0.12.23}/tests/data/IMG_20180505_205153567.jpg +0 -0
  246. {python_clu-0.12.21 → python_clu-0.12.23}/tests/data/cheetah-003.jpg +0 -0
  247. {python_clu-0.12.21 → python_clu-0.12.23}/tests/data/config/clu-config.toml +0 -0
  248. {python_clu-0.12.21 → python_clu-0.12.23}/tests/data/config/yodogg.toml +0 -0
  249. {python_clu-0.12.21 → python_clu-0.12.23}/tests/data/shutterstock_90194617.jpg +0 -0
  250. {python_clu-0.12.21 → python_clu-0.12.23}/tests/data/yodata/09163d51421853.5608b3c2a1be0.jpg +0 -0
  251. {python_clu-0.12.21 → python_clu-0.12.23}/tests/data/yodata/5d0227342500004e12e3506d.jpg +0 -0
  252. {python_clu-0.12.21 → python_clu-0.12.23}/tests/data/yodata/BlackCat2_large-22.jpg +0 -0
  253. {python_clu-0.12.21 → python_clu-0.12.23}/tests/data/yodogg/Serval_Cat_Kitten-706.jpg +0 -0
  254. {python_clu-0.12.21 → python_clu-0.12.23}/tests/data/yodogg/Servals_Thoiry_19801.jpg +0 -0
  255. {python_clu-0.12.21 → python_clu-0.12.23}/tests/data/yodogg/video-pride-serval.jpg +0 -0
  256. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_abstract.py +0 -0
  257. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_all.py +0 -0
  258. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_boilerplate.py +0 -0
  259. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_config.py +0 -0
  260. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_config_abc.py +0 -0
  261. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_config_ns_matching.py +0 -0
  262. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_csv.py +0 -0
  263. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_dicts.py +0 -0
  264. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_dispatch.py +0 -0
  265. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_enum_aliases.py +0 -0
  266. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_exporting.py +0 -0
  267. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_extending.py +0 -0
  268. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_fs_filesystem.py +0 -0
  269. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_fs_misc.py +0 -0
  270. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_importing.py +0 -0
  271. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_keyvalue.py +0 -0
  272. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_mathematics.py +0 -0
  273. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_naming.py +0 -0
  274. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_predicates.py +0 -0
  275. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_repl_columnize.py +0 -0
  276. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_repl_modules.py +0 -0
  277. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_repr.py +0 -0
  278. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_scripts_repl.py +0 -0
  279. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_typespace_namespace.py +0 -0
  280. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_typology.py +0 -0
  281. {python_clu-0.12.21 → python_clu-0.12.23}/tests/test_version.py +0 -0
  282. {python_clu-0.12.21 → python_clu-0.12.23}/tests/yodogg/.tm_properties +0 -0
  283. {python_clu-0.12.21 → python_clu-0.12.23}/tests/yodogg/__init__.py +0 -0
  284. {python_clu-0.12.21 → python_clu-0.12.23}/tests/yodogg/yodogg/__init__.py +0 -0
  285. {python_clu-0.12.21 → python_clu-0.12.23}/tests/yodogg/yodogg/config.py +0 -0
  286. {python_clu-0.12.21 → python_clu-0.12.23}/tests/yodogg/yodogg/exporting.py +0 -0
  287. {python_clu-0.12.21 → python_clu-0.12.23}/tests/yodogg/yodogg/iheard.py +0 -0
  288. {python_clu-0.12.21 → python_clu-0.12.23}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
 
2
2
  [tool.bumpversion]
3
- current_version = "0.12.21"
3
+ current_version = "0.12.23"
4
4
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
5
5
  serialize = ["{major}.{minor}.{patch}"]
6
6
  search = "{current_version}"
@@ -29,4 +29,15 @@ replace = """__version__ = '{new_version}'"""
29
29
  [[tool.bumpversion.files]]
30
30
  filename = "clu/__version__.py"
31
31
  search = """__version__ = '{current_version}'"""
32
- replace = """__version__ = '{new_version}'"""
32
+ replace = """__version__ = '{new_version}'"""
33
+
34
+ [[tool.bumpversion.files]]
35
+ filename = "CITATION.cff"
36
+ search = """version: {current_version}"""
37
+ replace = """version: {new_version}"""
38
+
39
+ [[tool.bumpversion.files]]
40
+ filename = "CITATION.cff"
41
+ search = """date-released: \\d{{4}}"""
42
+ replace = """date-released: {now:%Y}"""
43
+ regex = true
@@ -1,7 +1,45 @@
1
1
  # Changelog
2
2
 
3
3
 
4
- ## 0.12.20 [release]
4
+ ## v0.12.22 (2026-08-18)
5
+
6
+ ### Bump
7
+
8
+ * Bumped version: 0.12.21 → 0.12.22. [Alexander Böhn]
9
+
10
+ ### Add
11
+
12
+ * Added additional TOML file validation to `noxfile` … right now we’re just running “.bumpversion.toml” through it all, but it’s nice to have. You know, for the future. Yes! [Alexander Böhn]
13
+
14
+ * Added a `CITATION.cff` file, and rearranged imports in `clu.dicts` [Alexander Böhn]
15
+
16
+ … the “CITATION.cff” file goes with “orcid.org”; see also:
17
+ - https://orcid.org/0009-0007-9645-1744
18
+
19
+ … and the “clu.dicts” reshuffle was because I was for some reason
20
+ at one point paranoid about needing, for some reason, to be able
21
+ to import “clu.dicts” within “clu.predicates” or “clu.typology”.
22
+ That isn’t necessary, and it’s time to stop writing “defensive code”
23
+ around this for no reason, yeah? Yeah!
24
+
25
+ ### Remove
26
+
27
+ * Removed py.test legacy config file … this ensures it uses the config stuff in “pyproject.toml” [Alexander Böhn]
28
+
29
+ ### Other
30
+
31
+ * [make] Changelog updated @ 02e3900. [Alexander Böhn]
32
+
33
+ * Assuaging the whinging by the latest py.test version. [Alexander Böhn]
34
+
35
+ * Cleaner logic for short-circuting in `clu.config.keymap.Flat` … Kind of a nothingburger, but I’ll likely spread this notion around, because it assuages my OCD. [Alexander Böhn]
36
+
37
+
38
+ ## v0.12.21 (2025-11-26)
39
+
40
+ ### Bump
41
+
42
+ * Bumped version: 0.12.20 → 0.12.21. [Alexander Böhn]
5
43
 
6
44
  ### New
7
45
 
@@ -46,6 +84,8 @@
46
84
 
47
85
  ### Other
48
86
 
87
+ * [make] Changelog updated @ 46e4b9a. [Alexander Böhn]
88
+
49
89
  * Working around enhanced rigorousness (?!) in `pickle.whichmodule(…)` [Alexander Böhn]
50
90
 
51
91
  … like WTF, so forever you would call this random module function –
@@ -0,0 +1,10 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use this software, please cite it as below."
3
+ authors:
4
+ - family-names: "Böhn"
5
+ given-names: "Alexander"
6
+ orcid: "https://orcid.org/0009-0007-9645-1744"
7
+ title: "CLU"
8
+ version: 0.12.23
9
+ date-released: 2026
10
+ url: "https://github.com/fish2000/CLU"
@@ -11,6 +11,7 @@ include appveyor.yml
11
11
  include codecov.yml
12
12
 
13
13
  include ABOUT.md
14
+ include CITATION.cff
14
15
  include CHANGELOG.md
15
16
  include CLASSIFIERS.txt
16
17
  include CLU_Treatment.md
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-clu
3
- Version: 0.12.21
3
+ Version: 0.12.23
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
@@ -0,0 +1 @@
1
+ __version__ = '0.12.23'
@@ -142,10 +142,8 @@ class Flat(FrozenFlat, abc.KeyMap):
142
142
  mapping, or over only those key/value pairs in the mapping whose
143
143
  keys match the specified namespace values.
144
144
  """
145
- if unprefixed:
146
- return super().items(unprefixed=True)
147
- if not namespaces:
148
- return super().items()
145
+ if unprefixed or not namespaces:
146
+ return super().items(unprefixed=unprefixed)
149
147
  return ((key, value) for key, value in self.dictionary.items() \
150
148
  if any(ns.namespace_matches(key, namespace) for namespace in namespaces))
151
149
 
@@ -14,8 +14,18 @@ import sys
14
14
 
15
15
  from clu.constants.consts import STRINGPAIR, WHITESPACE, NoDefault
16
16
  from clu.config.abc import FlatOrderedSet as FOSet
17
- from clu.naming import qualified_name
18
- from clu.typology import iterlen
17
+ from clu.naming import isbuiltin, nameof, qualified_name
18
+ from clu.typespace.namespace import isnamespace
19
+
20
+ from clu.predicates import (haspyattr, or_none,
21
+ getitem, finditem, try_items,
22
+ item_search, item_across,
23
+ tuplize, typeof)
24
+
25
+ from clu.typology import (iterlen, subclasscheck,
26
+ ismapping, isstring,
27
+ isset, issequence)
28
+
19
29
  from clu.exporting import Exporter
20
30
 
21
31
  exporter = Exporter(path=__file__)
@@ -115,12 +125,14 @@ class ChainRepr(Repr):
115
125
 
116
126
  def subrepr(self, thing, level):
117
127
  """ An internal “core” repr helper method. """
118
- from clu.typology import ismapping
119
-
120
128
  # For mappings, go down another level:
121
129
  if ischainmap(thing) or ismapping(thing):
122
130
  return self.repr1(thing, level - 1)
123
131
 
132
+ # for sequences, use “seqrepr(…)”:
133
+ if isset(thing) or issequence(thing):
134
+ return self.repr1(tuplize(thing), level - 1)
135
+
124
136
  # For everything else, defer to the type:
125
137
  return repr(thing)
126
138
 
@@ -137,17 +149,29 @@ class ChainRepr(Repr):
137
149
  item = STRINGPAIR.format(key, self.subrepr(mapping[key], level))
138
150
  return f"{{ {item} }}"
139
151
 
140
- # Format all items:
152
+ # Pair all key-values off into individual items:
141
153
  items = tuple(STRINGPAIR.format(key, self.subrepr(mapping[key], level)) \
142
154
  for key in mapping.keys())
143
155
 
156
+ # Format the item list as a sequence
157
+ return self.seqrepr(items, level)
158
+
159
+ def seqrepr(self, sequence, level):
160
+ """ The internal method for “core” repr production of
161
+ any and all sequence data
162
+ """
163
+ if len(sequence) == 0:
164
+ return "[]"
165
+ elif len(sequence) == 1:
166
+ return f"'{sequence[0]}'"
167
+
144
168
  # Compute indentation levels:
145
169
  ts = " " * (int(self.maxlevel - level) + 1)
146
170
  ls = " " * (int(self.maxlevel - level) + 0)
147
- total = (f",\n{ts}").join(items)
171
+ total = (f",\n{ts}").join(sequence)
148
172
 
149
173
  # Return the formatted map contents:
150
- return f"{{ \n{ts}{total}\n{ls}}}"
174
+ return f"[[ \n{ts}{total}\n{ls}]]"
151
175
 
152
176
  def toprepr(self, chainmap, level):
153
177
  """ The “top-level” ChainMap-specific repr method –
@@ -155,7 +179,6 @@ class ChainRepr(Repr):
155
179
  that comprise the ChainMap instance, and dispatch
156
180
  sub-repr method calls accordingly.
157
181
  """
158
- from clu.naming import isbuiltin, nameof
159
182
  from clu.testing.utils import multiple
160
183
 
161
184
  # Typename and map item counts:
@@ -243,6 +266,24 @@ class ChainRepr(Repr):
243
266
  def repr_FrozenNested(self, mapping, level):
244
267
  return self.primerepr(mapping, level)
245
268
 
269
+ def repr_set(self, sequence, level):
270
+ return self.seqrepr(tuplize(sequence), level)
271
+
272
+ def repr_frozenset(self, sequence, level):
273
+ return self.seqrepr(tuplize(sequence), level)
274
+
275
+ def repr_list(self, sequence, level):
276
+ return self.seqrepr(sequence, level)
277
+
278
+ def repr_tuple(self, sequence, level):
279
+ return self.seqrepr(sequence, level)
280
+
281
+ def repr_generator(self, sequence, level):
282
+ return self.seqrepr(tuplize(sequence), level)
283
+
284
+ def repr_FlatOrderedSet(self, sequence, level):
285
+ return self.seqrepr(tuplize(sequence.things), level)
286
+
246
287
  def shortrepr(self, thing):
247
288
  """ Return the “short” repr of a chainmap instance –
248
289
  all whitespace will be condensed to single spaces
@@ -321,7 +362,6 @@ class ChainMap(collections.abc.MutableMapping,
321
362
  raise KeyError(key)
322
363
 
323
364
  def __getitem__(self, key):
324
- from clu.predicates import try_items
325
365
  try:
326
366
  return try_items(key, *self.maps)
327
367
  except KeyError:
@@ -354,7 +394,6 @@ class ChainMap(collections.abc.MutableMapping,
354
394
  """
355
395
  if default is NoDefault:
356
396
  return self[key]
357
- from clu.predicates import getitem
358
397
  return getitem(self, key, default=default)
359
398
 
360
399
  def mapchain(self):
@@ -439,7 +478,6 @@ class ChainMap(collections.abc.MutableMapping,
439
478
  containing an item by the specified name, may optionally
440
479
  be passsed in as well.
441
480
  """
442
- from clu.predicates import finditem
443
481
  if default is NoDefault:
444
482
  return finditem(itx, *self.maps) or { itx : self.__missing__(itx) }
445
483
  return finditem(itx, *self.maps, default=default)
@@ -517,7 +555,6 @@ class ChainMapPlusPlus(ChainMap):
517
555
 
518
556
  def getall(self, key, default=NoDefault):
519
557
  """ Return all values for a key. """
520
- from clu.predicates import item_across
521
558
  if default is NoDefault:
522
559
  return item_across(key, *self.dicts) or self.__missing__(key)
523
560
  return item_across(key, *self.dicts, default=default)
@@ -550,7 +587,6 @@ def ischainmap(thing):
550
587
  focus on. I didn’t want to disappoint. Now I miss everybody,
551
588
  is it still light outside?
552
589
  """
553
- from clu.typology import subclasscheck
554
590
  return subclasscheck(thing, (ChainMap, collections.ChainMap))
555
591
 
556
592
  # DICT FUNCTIONS: dictionary-merging
@@ -623,7 +659,6 @@ def merge_two(one, two, *, cls=dict, **overrides):
623
659
 
624
660
  Based on this docopt example source: https://git.io/fjCZ6
625
661
  """
626
- from clu.predicates import typeof, item_search
627
662
  cls = typeof(cls or one)
628
663
  zero = dict(overrides)
629
664
  keys = tuple(frozenset(zero.keys()) | frozenset(one.keys()) | frozenset(two.keys()))
@@ -635,7 +670,6 @@ def merge_as(*dicts, cls=dict, **overrides):
635
670
  """ Merge all dictionary arguments into a new instance of the specified class,
636
671
  passing all additional keyword arguments to the class constructor as overrides
637
672
  """
638
- from clu.predicates import typeof, item_search
639
673
  cls = typeof(cls or (dicts and dicts[0] or dict))
640
674
  dicts = [dict(overrides), *dicts]
641
675
  keyset = set()
@@ -658,9 +692,6 @@ def merge(*dicts, **overrides):
658
692
  @export
659
693
  def asdict(thing): # pragma: no cover
660
694
  """ asdict(thing) → returns either thing, thing.__dict__, or dict(thing) as necessary """
661
- from clu.predicates import haspyattr, or_none, typeof
662
- from clu.typology import ismapping
663
- from clu.typespace.namespace import isnamespace
664
695
  if typeof(thing) is thing:
665
696
  return thing
666
697
  if isnamespace(thing):
@@ -697,7 +728,6 @@ def test():
697
728
  from clu.constants.consts import TEST_PATH
698
729
  from clu.constants.data import XDGS
699
730
  from clu.fs.filesystem import Directory
700
- from clu.predicates import try_items
701
731
  from clu.testing.utils import inline
702
732
  import os
703
733
 
@@ -8,7 +8,6 @@ sys.path.append(os.path.dirname(__file__))
8
8
  # Recycle, reduce, reuse:
9
9
  nox.options.reuse_existing_virtualenvs = True
10
10
  nox.options.stop_on_first_error = True
11
- # nox.options.keywords = tuple()
12
11
 
13
12
  # Skip manifest check if we’re not running in a Git repo:
14
13
  from clu.version.git_version import are_we_gitted
@@ -20,10 +19,13 @@ def checkmanifest(session):
20
19
  session.run('python', '-m', 'check_manifest', '-v')
21
20
 
22
21
  @nox.session
23
- def checkpyproject(session):
22
+ @nox.parametrize('tomls', (
23
+ nox.param('.bumpversion.toml', id='bumpversion'),
24
+ nox.param('pyproject.toml', id='pyproject')))
25
+ def checkpyproject(session, tomls):
24
26
  """ Validate CLU’s pyproject.toml """
25
27
  session.install("-r", "requirements/nox/pyproject.txt")
26
- session.run('validate-pyproject', '--verbose', 'pyproject.toml')
28
+ session.run('validate-pyproject', '--verbose', tomls)
27
29
 
28
30
  @nox.session
29
31
  @nox.parametrize('module', (
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-clu
3
- Version: 0.12.21
3
+ Version: 0.12.23
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
@@ -7,6 +7,7 @@
7
7
  .travis.yml
8
8
  ABOUT.md
9
9
  CHANGELOG.md
10
+ CITATION.cff
10
11
  CLASSIFIERS.txt
11
12
  CLU_Treatment.md
12
13
  CODE_OF_CONDUCT.md
@@ -20,7 +21,6 @@ conftest.py
20
21
  mypy.ini
21
22
  noxfile.py
22
23
  pyproject.toml
23
- pytest.ini
24
24
  pytype.cfg
25
25
  setup.py
26
26
  tox.ini
@@ -84,7 +84,7 @@ try:
84
84
  '__version__.py')).read(),
85
85
  '__version__.py', 'exec'))
86
86
  except:
87
- __version__ = '0.12.21'
87
+ __version__ = '0.12.23'
88
88
 
89
89
  # PROJECT DESCRIPTION
90
90
  LONG_DESCRIPTION = project_content('ABOUT.md')
@@ -25,7 +25,7 @@ class TestFsMisc(object):
25
25
  assert Directory in TypeLocker.types.values()
26
26
  assert TemporaryFileWrapper in TypeLocker.types.values()
27
27
 
28
- @pytest.mark.parametrize('tmp', filter(os.path.exists, tmps))
28
+ @pytest.mark.parametrize('tmp', tuple(filter(os.path.exists, tmps)))
29
29
  def test_BaseFSName_concrete_subclass(self, consts,
30
30
  temporarydir,
31
31
  tmp):
@@ -30,7 +30,7 @@ class TestFsAppdirectories(object):
30
30
  'version' : "1.2.4"
31
31
  }
32
32
 
33
- @pytest.mark.parametrize('system', System.unixes())
33
+ @pytest.mark.parametrize('system', tuple(System.unixes()))
34
34
  def test_yes_version_no_author(self, arbitrary,
35
35
  system,
36
36
  consts,
@@ -60,7 +60,7 @@ class TestFsAppdirectories(object):
60
60
  assert str(appdirs.version_info) == str(VersionInfo(appversion))
61
61
  assert str(appdirs) == repr(appdirs)
62
62
 
63
- @pytest.mark.parametrize('system', System.unixes())
63
+ @pytest.mark.parametrize('system', tuple(System.unixes()))
64
64
  def test_yes_version_yes_author(self, arbitrary,
65
65
  system,
66
66
  consts,
@@ -96,7 +96,7 @@ class TestFsAppdirectories(object):
96
96
  assert str(appdirs.version_info) == str(VersionInfo(appversion))
97
97
  assert str(appdirs) == repr(appdirs)
98
98
 
99
- @pytest.mark.parametrize('system', System.unixes())
99
+ @pytest.mark.parametrize('system', tuple(System.unixes()))
100
100
  def test_no_version_no_author(self, arbitrary,
101
101
  system,
102
102
  consts,
@@ -124,7 +124,7 @@ class TestFsAppdirectories(object):
124
124
  assert appdirs.version_info == None
125
125
  assert str(appdirs) == repr(appdirs)
126
126
 
127
- @pytest.mark.parametrize('system', System.unixes())
127
+ @pytest.mark.parametrize('system', tuple(System.unixes()))
128
128
  def test_no_version_yes_author(self, arbitrary,
129
129
  system,
130
130
  consts,
@@ -157,7 +157,7 @@ class TestFsAppdirectories(object):
157
157
  assert appdirs.version_info == None
158
158
  assert str(appdirs) == repr(appdirs)
159
159
 
160
- @pytest.mark.parametrize('system', System.unixes())
160
+ @pytest.mark.parametrize('system', tuple(System.unixes()))
161
161
  def test_clu_appdirs_versioned(self, system,
162
162
  consts,
163
163
  environment,
@@ -186,7 +186,7 @@ class TestFsAppdirectories(object):
186
186
 
187
187
  assert appdirs is clu_appdirs(system=system)
188
188
 
189
- @pytest.mark.parametrize('system', System.unixes())
189
+ @pytest.mark.parametrize('system', tuple(System.unixes()))
190
190
  def test_clu_appdirs_unversioned(self, system,
191
191
  consts,
192
192
  environment):
@@ -1 +0,0 @@
1
- __version__ = '0.12.21'
@@ -1,5 +0,0 @@
1
- [pytest]
2
-
3
- ## Delete “$TMPDIR/pytest-of-$USER” at the end of a pytest run -
4
- ## Q.v. “clu.testing.pytest”, “clu.testing.hooks”, and ‘conftest.py’:
5
- # delete_temps = true
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