python-clu 0.11.1__tar.gz → 0.11.3__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 (269) hide show
  1. {python_clu-0.11.1 → python_clu-0.11.3}/.bumpversion.toml +1 -1
  2. {python_clu-0.11.1 → python_clu-0.11.3}/PKG-INFO +1 -1
  3. {python_clu-0.11.1 → python_clu-0.11.3}/README.md +3 -0
  4. {python_clu-0.11.1 → python_clu-0.11.3}/clu/__init__.py +2 -2
  5. python_clu-0.11.3/clu/__version__.py +1 -0
  6. {python_clu-0.11.1 → python_clu-0.11.3}/clu/abstract.py +22 -22
  7. {python_clu-0.11.1 → python_clu-0.11.3}/clu/config/keymapview.py +5 -16
  8. {python_clu-0.11.1 → python_clu-0.11.3}/clu/fs/filesystem.py +9 -9
  9. {python_clu-0.11.1 → python_clu-0.11.3}/clu/fs/pypath.py +1 -1
  10. {python_clu-0.11.1 → python_clu-0.11.3}/clu/importing/base.py +14 -15
  11. {python_clu-0.11.1 → python_clu-0.11.3}/clu/importing/proxy.py +2 -2
  12. {python_clu-0.11.1 → python_clu-0.11.3}/clu/scripts/repl.py +21 -0
  13. {python_clu-0.11.1 → python_clu-0.11.3}/clu/scripts/treeline.py +1 -1
  14. {python_clu-0.11.1 → python_clu-0.11.3}/python_clu.egg-info/PKG-INFO +1 -1
  15. {python_clu-0.11.1 → python_clu-0.11.3}/setup.py +2 -2
  16. python_clu-0.11.1/clu/__version__.py +0 -1
  17. {python_clu-0.11.1 → python_clu-0.11.3}/.coveragerc +0 -0
  18. {python_clu-0.11.1 → python_clu-0.11.3}/.editorconfig +0 -0
  19. {python_clu-0.11.1 → python_clu-0.11.3}/.gitchangelog.rc +0 -0
  20. {python_clu-0.11.1 → python_clu-0.11.3}/.gitignore +0 -0
  21. {python_clu-0.11.1 → python_clu-0.11.3}/.landscape.yml +0 -0
  22. {python_clu-0.11.1 → python_clu-0.11.3}/.travis.yml +0 -0
  23. {python_clu-0.11.1 → python_clu-0.11.3}/ABOUT.md +0 -0
  24. {python_clu-0.11.1 → python_clu-0.11.3}/CHANGELOG.md +0 -0
  25. {python_clu-0.11.1 → python_clu-0.11.3}/CLASSIFIERS.txt +0 -0
  26. {python_clu-0.11.1 → python_clu-0.11.3}/CODE_OF_CONDUCT.md +0 -0
  27. {python_clu-0.11.1 → python_clu-0.11.3}/COPYING.md +0 -0
  28. {python_clu-0.11.1 → python_clu-0.11.3}/LICENSE.txt +0 -0
  29. {python_clu-0.11.1 → python_clu-0.11.3}/MANIFEST.in +0 -0
  30. {python_clu-0.11.1 → python_clu-0.11.3}/Makefile +0 -0
  31. {python_clu-0.11.1 → python_clu-0.11.3}/appveyor.yml +0 -0
  32. {python_clu-0.11.1 → python_clu-0.11.3}/clu/__main__.py +0 -0
  33. {python_clu-0.11.1 → python_clu-0.11.3}/clu/all.py +0 -0
  34. {python_clu-0.11.1 → python_clu-0.11.3}/clu/api/__init__.py +0 -0
  35. {python_clu-0.11.1 → python_clu-0.11.3}/clu/api/__main__.py +0 -0
  36. {python_clu-0.11.1 → python_clu-0.11.3}/clu/application.py +0 -0
  37. {python_clu-0.11.1 → python_clu-0.11.3}/clu/compilation/__init__.py +0 -0
  38. {python_clu-0.11.1 → python_clu-0.11.3}/clu/compilation/compiledb.py +0 -0
  39. {python_clu-0.11.1 → python_clu-0.11.3}/clu/compilation/macros.py +0 -0
  40. {python_clu-0.11.1 → python_clu-0.11.3}/clu/config/__init__.py +0 -0
  41. {python_clu-0.11.1 → python_clu-0.11.3}/clu/config/abc.py +0 -0
  42. {python_clu-0.11.1 → python_clu-0.11.3}/clu/config/base.py +0 -0
  43. {python_clu-0.11.1 → python_clu-0.11.3}/clu/config/codecs.py +0 -0
  44. {python_clu-0.11.1 → python_clu-0.11.3}/clu/config/env.py +0 -0
  45. {python_clu-0.11.1 → python_clu-0.11.3}/clu/config/fieldtypes.py +0 -0
  46. {python_clu-0.11.1 → python_clu-0.11.3}/clu/config/filebase.py +0 -0
  47. {python_clu-0.11.1 → python_clu-0.11.3}/clu/config/formats/__init__.py +0 -0
  48. {python_clu-0.11.1 → python_clu-0.11.3}/clu/config/formats/jsonfile.py +0 -0
  49. {python_clu-0.11.1 → python_clu-0.11.3}/clu/config/formats/picklefile.py +0 -0
  50. {python_clu-0.11.1 → python_clu-0.11.3}/clu/config/formats/tomlfile.py +0 -0
  51. {python_clu-0.11.1 → python_clu-0.11.3}/clu/config/formats/yamlfile.py +0 -0
  52. {python_clu-0.11.1 → python_clu-0.11.3}/clu/config/keymap.py +0 -0
  53. {python_clu-0.11.1 → python_clu-0.11.3}/clu/config/ns.py +0 -0
  54. {python_clu-0.11.1 → python_clu-0.11.3}/clu/config/proxy.py +0 -0
  55. {python_clu-0.11.1 → python_clu-0.11.3}/clu/config/settings.py +0 -0
  56. {python_clu-0.11.1 → python_clu-0.11.3}/clu/constants/__init__.py +0 -0
  57. {python_clu-0.11.1 → python_clu-0.11.3}/clu/constants/__main__.py +0 -0
  58. {python_clu-0.11.1 → python_clu-0.11.3}/clu/constants/consts.py +0 -0
  59. {python_clu-0.11.1 → python_clu-0.11.3}/clu/constants/data.py +0 -0
  60. {python_clu-0.11.1 → python_clu-0.11.3}/clu/constants/enums.py +0 -0
  61. {python_clu-0.11.1 → python_clu-0.11.3}/clu/constants/exceptions.py +0 -0
  62. {python_clu-0.11.1 → python_clu-0.11.3}/clu/constants/polyfills.py +0 -0
  63. {python_clu-0.11.1 → python_clu-0.11.3}/clu/csv.py +0 -0
  64. {python_clu-0.11.1 → python_clu-0.11.3}/clu/dicts.py +0 -0
  65. {python_clu-0.11.1 → python_clu-0.11.3}/clu/dispatch.py +0 -0
  66. {python_clu-0.11.1 → python_clu-0.11.3}/clu/enums.py +0 -0
  67. {python_clu-0.11.1 → python_clu-0.11.3}/clu/exporting.py +0 -0
  68. {python_clu-0.11.1 → python_clu-0.11.3}/clu/extending.py +0 -0
  69. {python_clu-0.11.1 → python_clu-0.11.3}/clu/fs/__init__.py +0 -0
  70. {python_clu-0.11.1 → python_clu-0.11.3}/clu/fs/abc.py +0 -0
  71. {python_clu-0.11.1 → python_clu-0.11.3}/clu/fs/appdirectories.py +0 -0
  72. {python_clu-0.11.1 → python_clu-0.11.3}/clu/fs/misc.py +0 -0
  73. {python_clu-0.11.1 → python_clu-0.11.3}/clu/fs/sourcetree.py +0 -0
  74. {python_clu-0.11.1 → python_clu-0.11.3}/clu/importing/__init__.py +0 -0
  75. {python_clu-0.11.1 → python_clu-0.11.3}/clu/importing/__main__.py +0 -0
  76. {python_clu-0.11.1 → python_clu-0.11.3}/clu/keyvalue.py +0 -0
  77. {python_clu-0.11.1 → python_clu-0.11.3}/clu/mathematics.py +0 -0
  78. {python_clu-0.11.1 → python_clu-0.11.3}/clu/naming.py +0 -0
  79. {python_clu-0.11.1 → python_clu-0.11.3}/clu/predicates.py +0 -0
  80. {python_clu-0.11.1 → python_clu-0.11.3}/clu/repl/__init__.py +0 -0
  81. {python_clu-0.11.1 → python_clu-0.11.3}/clu/repl/ansi.py +0 -0
  82. {python_clu-0.11.1 → python_clu-0.11.3}/clu/repl/banners.py +0 -0
  83. {python_clu-0.11.1 → python_clu-0.11.3}/clu/repl/cli/__init__.py +0 -0
  84. {python_clu-0.11.1 → python_clu-0.11.3}/clu/repl/cli/boilerplate.py +0 -0
  85. {python_clu-0.11.1 → python_clu-0.11.3}/clu/repl/cli/boilerplate_copy.py +0 -0
  86. {python_clu-0.11.1 → python_clu-0.11.3}/clu/repl/cli/print_version.py +0 -0
  87. {python_clu-0.11.1 → python_clu-0.11.3}/clu/repl/columnize.py +0 -0
  88. {python_clu-0.11.1 → python_clu-0.11.3}/clu/repl/modules.py +0 -0
  89. {python_clu-0.11.1 → python_clu-0.11.3}/clu/repr.py +0 -0
  90. {python_clu-0.11.1 → python_clu-0.11.3}/clu/sanitizer.py +0 -0
  91. {python_clu-0.11.1 → python_clu-0.11.3}/clu/scripts/.gitignore +0 -0
  92. {python_clu-0.11.1 → python_clu-0.11.3}/clu/scripts/README.md +0 -0
  93. {python_clu-0.11.1 → python_clu-0.11.3}/clu/scripts/__init__.py +0 -0
  94. {python_clu-0.11.1 → python_clu-0.11.3}/clu/scripts/ansicolors.py +0 -0
  95. {python_clu-0.11.1 → python_clu-0.11.3}/clu/scripts/boilerplate.py +0 -0
  96. {python_clu-0.11.1 → python_clu-0.11.3}/clu/scripts/dictroast.py +0 -0
  97. {python_clu-0.11.1 → python_clu-0.11.3}/clu/scripts/legacy/forkumask.py +0 -0
  98. {python_clu-0.11.1 → python_clu-0.11.3}/clu/scripts/legacy/repl-bpython.py +0 -0
  99. {python_clu-0.11.1 → python_clu-0.11.3}/clu/scripts/legacy/repl-ipython.py +0 -0
  100. {python_clu-0.11.1 → python_clu-0.11.3}/clu/scripts/legacy/repl-ptpython.py +0 -0
  101. {python_clu-0.11.1 → python_clu-0.11.3}/clu/scripts/legacy/repl-pyzo.py +0 -0
  102. {python_clu-0.11.1 → python_clu-0.11.3}/clu/scripts/legacy/xdg-runtime.py +0 -0
  103. {python_clu-0.11.1 → python_clu-0.11.3}/clu/scripts/prediversus.py +0 -0
  104. {python_clu-0.11.1 → python_clu-0.11.3}/clu/shelving/__init__.py +0 -0
  105. {python_clu-0.11.1 → python_clu-0.11.3}/clu/shelving/redat.py +0 -0
  106. {python_clu-0.11.1 → python_clu-0.11.3}/clu/shelving/redis.conf +0 -0
  107. {python_clu-0.11.1 → python_clu-0.11.3}/clu/stdio.py +0 -0
  108. {python_clu-0.11.1 → python_clu-0.11.3}/clu/testing/__init__.py +0 -0
  109. {python_clu-0.11.1 → python_clu-0.11.3}/clu/testing/hook.py +0 -0
  110. {python_clu-0.11.1 → python_clu-0.11.3}/clu/testing/obsolete.py +0 -0
  111. {python_clu-0.11.1 → python_clu-0.11.3}/clu/testing/pytest.py +0 -0
  112. {python_clu-0.11.1 → python_clu-0.11.3}/clu/testing/utils.py +0 -0
  113. {python_clu-0.11.1 → python_clu-0.11.3}/clu/typespace/__init__.py +0 -0
  114. {python_clu-0.11.1 → python_clu-0.11.3}/clu/typespace/__main__.py +0 -0
  115. {python_clu-0.11.1 → python_clu-0.11.3}/clu/typespace/namespace.py +0 -0
  116. {python_clu-0.11.1 → python_clu-0.11.3}/clu/typology.py +0 -0
  117. {python_clu-0.11.1 → python_clu-0.11.3}/clu/version/__init__.py +0 -0
  118. {python_clu-0.11.1 → python_clu-0.11.3}/clu/version/__main__.py +0 -0
  119. {python_clu-0.11.1 → python_clu-0.11.3}/clu/version/git_version.py +0 -0
  120. {python_clu-0.11.1 → python_clu-0.11.3}/clu/version/read_version.py +0 -0
  121. {python_clu-0.11.1 → python_clu-0.11.3}/codecov.yml +0 -0
  122. {python_clu-0.11.1 → python_clu-0.11.3}/conftest.py +0 -0
  123. {python_clu-0.11.1 → python_clu-0.11.3}/docs/Makefile +0 -0
  124. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/doctrees/api.doctree +0 -0
  125. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/doctrees/environment.pickle +0 -0
  126. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/doctrees/generated/clu.doctree +0 -0
  127. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/doctrees/index.doctree +0 -0
  128. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/.buildinfo +0 -0
  129. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_sources/api.rst.txt +0 -0
  130. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_sources/generated/clu.rst.txt +0 -0
  131. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_sources/index.rst.txt +0 -0
  132. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  133. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/alabaster.css +0 -0
  134. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/basic.css +0 -0
  135. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/badge_only.css +0 -0
  136. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  137. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  138. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  139. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  140. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  141. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
  142. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  143. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  144. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  145. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  146. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  147. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/fonts/lato-bold.woff +0 -0
  148. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/fonts/lato-bold.woff2 +0 -0
  149. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  150. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  151. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/fonts/lato-normal.woff +0 -0
  152. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/fonts/lato-normal.woff2 +0 -0
  153. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/css/theme.css +0 -0
  154. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/custom.css +0 -0
  155. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/doctools.js +0 -0
  156. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/documentation_options.js +0 -0
  157. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/file.png +0 -0
  158. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/jquery-3.6.0.js +0 -0
  159. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/jquery.js +0 -0
  160. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/js/badge_only.js +0 -0
  161. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/js/html5shiv-printshiv.min.js +0 -0
  162. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/js/html5shiv.min.js +0 -0
  163. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/js/theme.js +0 -0
  164. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/language_data.js +0 -0
  165. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/minus.png +0 -0
  166. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/plus.png +0 -0
  167. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/pygments.css +0 -0
  168. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/searchtools.js +0 -0
  169. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/underscore-1.13.1.js +0 -0
  170. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/_static/underscore.js +0 -0
  171. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/api.html +0 -0
  172. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/generated/clu.html +0 -0
  173. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/genindex.html +0 -0
  174. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/index.html +0 -0
  175. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/objects.inv +0 -0
  176. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/py-modindex.html +0 -0
  177. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/search.html +0 -0
  178. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/html/searchindex.js +0 -0
  179. {python_clu-0.11.1 → python_clu-0.11.3}/docs/build/man/clu.1 +0 -0
  180. {python_clu-0.11.1 → python_clu-0.11.3}/docs/make.bat +0 -0
  181. {python_clu-0.11.1 → python_clu-0.11.3}/docs/source/api.rst +0 -0
  182. {python_clu-0.11.1 → python_clu-0.11.3}/docs/source/conf.py +0 -0
  183. {python_clu-0.11.1 → python_clu-0.11.3}/docs/source/generated/clu.rst +0 -0
  184. {python_clu-0.11.1 → python_clu-0.11.3}/docs/source/index.rst +0 -0
  185. {python_clu-0.11.1 → python_clu-0.11.3}/hooks/autohook.sh +0 -0
  186. {python_clu-0.11.1 → python_clu-0.11.3}/hooks/post-push/00-coverage.sh +0 -0
  187. {python_clu-0.11.1 → python_clu-0.11.3}/hooks/pre-push/00-noop.sh +0 -0
  188. {python_clu-0.11.1 → python_clu-0.11.3}/hooks/pre-push/01-direnv-stdlib.sh +0 -0
  189. {python_clu-0.11.1 → python_clu-0.11.3}/hooks/scripts/coverage.sh +0 -0
  190. {python_clu-0.11.1 → python_clu-0.11.3}/hooks/scripts/display-issues.sh +0 -0
  191. {python_clu-0.11.1 → python_clu-0.11.3}/hooks/scripts/git-pushex +0 -0
  192. {python_clu-0.11.1 → python_clu-0.11.3}/hooks/scripts/noop.sh +0 -0
  193. {python_clu-0.11.1 → python_clu-0.11.3}/mypy.ini +0 -0
  194. {python_clu-0.11.1 → python_clu-0.11.3}/noxfile.py +0 -0
  195. {python_clu-0.11.1 → python_clu-0.11.3}/pyproject.toml +0 -0
  196. {python_clu-0.11.1 → python_clu-0.11.3}/pytest.ini +0 -0
  197. {python_clu-0.11.1 → python_clu-0.11.3}/python_clu.egg-info/SOURCES.txt +0 -0
  198. {python_clu-0.11.1 → python_clu-0.11.3}/python_clu.egg-info/dependency_links.txt +0 -0
  199. {python_clu-0.11.1 → python_clu-0.11.3}/python_clu.egg-info/entry_points.txt +0 -0
  200. {python_clu-0.11.1 → python_clu-0.11.3}/python_clu.egg-info/requires.txt +0 -0
  201. {python_clu-0.11.1 → python_clu-0.11.3}/python_clu.egg-info/top_level.txt +0 -0
  202. {python_clu-0.11.1 → python_clu-0.11.3}/python_clu.egg-info/zip-safe +0 -0
  203. {python_clu-0.11.1 → python_clu-0.11.3}/pytype.cfg +0 -0
  204. {python_clu-0.11.1 → python_clu-0.11.3}/requirements/changelog.txt +0 -0
  205. {python_clu-0.11.1 → python_clu-0.11.3}/requirements/dev.txt +0 -0
  206. {python_clu-0.11.1 → python_clu-0.11.3}/requirements/docs.txt +0 -0
  207. {python_clu-0.11.1 → python_clu-0.11.3}/requirements/install.txt +0 -0
  208. {python_clu-0.11.1 → python_clu-0.11.3}/requirements/nox/codecov.txt +0 -0
  209. {python_clu-0.11.1 → python_clu-0.11.3}/requirements/nox/docs.txt +0 -0
  210. {python_clu-0.11.1 → python_clu-0.11.3}/requirements/nox/manifest.txt +0 -0
  211. {python_clu-0.11.1 → python_clu-0.11.3}/requirements/nox/repl.txt +0 -0
  212. {python_clu-0.11.1 → python_clu-0.11.3}/requirements/nox/tests.txt +0 -0
  213. {python_clu-0.11.1 → python_clu-0.11.3}/requirements/tox.txt +0 -0
  214. {python_clu-0.11.1 → python_clu-0.11.3}/requirements/typecheck.txt +0 -0
  215. {python_clu-0.11.1 → python_clu-0.11.3}/scratch/direnv_transformed_env.py +0 -0
  216. {python_clu-0.11.1 → python_clu-0.11.3}/scratch/inline-tests-ImportError-uggggh.ipynb +0 -0
  217. {python_clu-0.11.1 → python_clu-0.11.3}/scratch/nteract.ipynb +0 -0
  218. {python_clu-0.11.1 → python_clu-0.11.3}/setup.cfg +0 -0
  219. {python_clu-0.11.1 → python_clu-0.11.3}/tests/__init__.py +0 -0
  220. {python_clu-0.11.1 → python_clu-0.11.3}/tests/data/1-58.jpg +0 -0
  221. {python_clu-0.11.1 → python_clu-0.11.3}/tests/data/3471426989_aa8e83cac5_o.jpg +0 -0
  222. {python_clu-0.11.1 → python_clu-0.11.3}/tests/data/3472236406_1fbf1a567d_o.jpg +0 -0
  223. {python_clu-0.11.1 → python_clu-0.11.3}/tests/data/8600JC.jpg +0 -0
  224. {python_clu-0.11.1 → python_clu-0.11.3}/tests/data/8ba.png +0 -0
  225. {python_clu-0.11.1 → python_clu-0.11.3}/tests/data/IMG_20180505_205153567.jpg +0 -0
  226. {python_clu-0.11.1 → python_clu-0.11.3}/tests/data/cheetah-003.jpg +0 -0
  227. {python_clu-0.11.1 → python_clu-0.11.3}/tests/data/config/clu-config.toml +0 -0
  228. {python_clu-0.11.1 → python_clu-0.11.3}/tests/data/config/yodogg.toml +0 -0
  229. {python_clu-0.11.1 → python_clu-0.11.3}/tests/data/shutterstock_90194617.jpg +0 -0
  230. {python_clu-0.11.1 → python_clu-0.11.3}/tests/data/yodata/09163d51421853.5608b3c2a1be0.jpg +0 -0
  231. {python_clu-0.11.1 → python_clu-0.11.3}/tests/data/yodata/5d0227342500004e12e3506d.jpg +0 -0
  232. {python_clu-0.11.1 → python_clu-0.11.3}/tests/data/yodata/BlackCat2_large-22.jpg +0 -0
  233. {python_clu-0.11.1 → python_clu-0.11.3}/tests/data/yodogg/Serval_Cat_Kitten-706.jpg +0 -0
  234. {python_clu-0.11.1 → python_clu-0.11.3}/tests/data/yodogg/Servals_Thoiry_19801.jpg +0 -0
  235. {python_clu-0.11.1 → python_clu-0.11.3}/tests/data/yodogg/video-pride-serval.jpg +0 -0
  236. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_abstract.py +0 -0
  237. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_all.py +0 -0
  238. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_boilerplate.py +0 -0
  239. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_config.py +0 -0
  240. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_config_abc.py +0 -0
  241. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_csv.py +0 -0
  242. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_dicts.py +0 -0
  243. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_dispatch.py +0 -0
  244. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_enum_aliases.py +0 -0
  245. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_exporting.py +0 -0
  246. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_extending.py +0 -0
  247. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_fs_abc.py +0 -0
  248. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_fs_appdirectories.py +0 -0
  249. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_fs_filesystem.py +0 -0
  250. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_fs_misc.py +0 -0
  251. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_importing.py +0 -0
  252. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_keyvalue.py +0 -0
  253. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_mathematics.py +0 -0
  254. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_naming.py +0 -0
  255. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_predicates.py +0 -0
  256. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_repl_columnize.py +0 -0
  257. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_repl_modules.py +0 -0
  258. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_repr.py +0 -0
  259. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_scripts_repl.py +0 -0
  260. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_typespace_namespace.py +0 -0
  261. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_typology.py +0 -0
  262. {python_clu-0.11.1 → python_clu-0.11.3}/tests/test_version.py +0 -0
  263. {python_clu-0.11.1 → python_clu-0.11.3}/tests/yodogg/.tm_properties +0 -0
  264. {python_clu-0.11.1 → python_clu-0.11.3}/tests/yodogg/__init__.py +0 -0
  265. {python_clu-0.11.1 → python_clu-0.11.3}/tests/yodogg/yodogg/__init__.py +0 -0
  266. {python_clu-0.11.1 → python_clu-0.11.3}/tests/yodogg/yodogg/config.py +0 -0
  267. {python_clu-0.11.1 → python_clu-0.11.3}/tests/yodogg/yodogg/exporting.py +0 -0
  268. {python_clu-0.11.1 → python_clu-0.11.3}/tests/yodogg/yodogg/iheard.py +0 -0
  269. {python_clu-0.11.1 → python_clu-0.11.3}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
 
2
2
  [tool.bumpversion]
3
- current_version = "0.11.1"
3
+ current_version = "0.11.3"
4
4
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
5
5
  serialize = ["{major}.{minor}.{patch}"]
6
6
  search = "{current_version}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-clu
3
- Version: 0.11.1
3
+ Version: 0.11.3
4
4
  Summary: CLU - Common Lightweight Utilities, or Command-Line Utilities (your pick)
5
5
  Home-page: https://github.com/fish2000/clu
6
6
  Download-URL: https://github.com/fish2000/clu/zipball/master
@@ -3,6 +3,9 @@ CLU – Common Lightweight Utilities (née Command-Line Utilities)
3
3
 
4
4
  [![codecov](https://codecov.io/gh/fish2000/CLU/branch/master/graph/badge.svg)](https://codecov.io/gh/fish2000/CLU)
5
5
 
6
+ Install it right now! Type: `$ pip install -U python-clu`
7
+ ---------------------------------------------------------
8
+
6
9
  This is a packaged-up and sanely version-controlled version of [the Python tools I wrote for my REPLs](https://github.com/fish2000/homage/blob/master/.script-bin/replutilities.py), divided up into
7
10
  a bunch of subordinate packages:
8
11
 
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # CLU -- Common Lightweight Utilities
5
5
  #
6
- # Copyright © 2012-2025 Alexander Böhn
6
+ # Copyright © 2012-2035 Alexander Böhn
7
7
  #
8
8
  # Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  # of this software and associated documentation files (the "Software"), to deal
@@ -47,7 +47,7 @@ __title__ = 'clu'
47
47
  __author__ = 'Alexander Böhn'
48
48
  __maintainer__ = __author__
49
49
  __license__ = 'MIT'
50
- __copyright__ = f'{__title__} © 2012-2025 {__author__}'
50
+ __copyright__ = f'{__title__} © 2012-2035 {__author__}'
51
51
 
52
52
  # The CLU project version:
53
53
  version_info = VersionInfo(__version__)
@@ -0,0 +1 @@
1
+ __version__ = '0.11.3'
@@ -25,10 +25,10 @@ class Slotted(abc.ABCMeta):
25
25
  if '__slots__' not in attributes:
26
26
  attributes['__slots__'] = tuple()
27
27
 
28
- return super(Slotted, metacls).__new__(metacls, name, # type: ignore
29
- bases,
30
- attributes,
31
- **kwargs)
28
+ return super().__new__(metacls, name, # type: ignore
29
+ bases,
30
+ attributes,
31
+ **kwargs)
32
32
 
33
33
  class SlotMatch(Slotted):
34
34
 
@@ -48,10 +48,10 @@ class SlotMatch(Slotted):
48
48
  attributes['__match_args__'] = tuple()
49
49
 
50
50
  # Create the new class via “super(…)” – calling “Slotted.__new__(…)”
51
- cls = super(SlotMatch, metacls).__new__(metacls, name, # type: ignore
52
- bases,
53
- attributes,
54
- **kwargs)
51
+ cls = super().__new__(metacls, name, # type: ignore
52
+ bases,
53
+ attributes,
54
+ **kwargs)
55
55
 
56
56
  # Set “__match_args__” using “slots_for(…)” and return
57
57
  cls.__match_args__ = slots_for(cls)
@@ -70,10 +70,10 @@ class NonSlotted(abc.ABCMeta):
70
70
  if '__slots__' in attributes:
71
71
  attributes.pop('__slots__')
72
72
 
73
- return super(NonSlotted, metacls).__new__(metacls, name,
74
- bases,
75
- attributes,
76
- **kwargs)
73
+ return super().__new__(metacls, name,
74
+ bases,
75
+ attributes,
76
+ **kwargs)
77
77
 
78
78
  class UnhashableMeta(Slotted):
79
79
 
@@ -89,10 +89,10 @@ class UnhashableMeta(Slotted):
89
89
  attributes.pop('__hash__')
90
90
  attributes['__hash__'] = None
91
91
 
92
- return super(UnhashableMeta, metacls).__new__(metacls, name,
93
- bases,
94
- attributes,
95
- **kwargs)
92
+ return super().__new__(metacls, name,
93
+ bases,
94
+ attributes,
95
+ **kwargs)
96
96
 
97
97
  class Unhashable(abc.ABC, metaclass=UnhashableMeta):
98
98
 
@@ -344,7 +344,7 @@ class BasePath(Slotted):
344
344
  @classmethod
345
345
  def __prepare__(metacls, name, bases, basepath="/", **kwargs):
346
346
  """ Remove the “basepath” class keyword before calling up """
347
- return super(BasePath, metacls).__prepare__(name, bases, **kwargs)
347
+ return super().__prepare__(name, bases, **kwargs)
348
348
 
349
349
  def __new__(metacls, name, bases, attributes, basepath="/", **kwargs):
350
350
  """ Override for `Slotted.__new__(…)` setting up a
@@ -356,10 +356,10 @@ class BasePath(Slotted):
356
356
  and os.fspath(basepath) \
357
357
  or basepath)
358
358
 
359
- return super(BasePath, metacls).__new__(metacls, name,
360
- bases,
361
- attributes,
362
- **kwargs)
359
+ return super().__new__(metacls, name,
360
+ bases,
361
+ attributes,
362
+ **kwargs)
363
363
 
364
364
  class AppName(abc.ABC):
365
365
 
@@ -373,7 +373,7 @@ class AppName(abc.ABC):
373
373
  from clu.predicates import mro, attr_search
374
374
  if 'appspace' in kwargs:
375
375
  del kwargs['appspace']
376
- super(AppName, cls).__init_subclass__(**kwargs)
376
+ super().__init_subclass__(**kwargs)
377
377
  cls.appname = ValueDescriptor(appname or attr_search('appname', *mro(cls)))
378
378
 
379
379
  def __init__(self, *args, **kwargs):
@@ -22,6 +22,7 @@ exporter = Exporter(path=__file__)
22
22
  export = exporter.decorator()
23
23
 
24
24
  typename = lambda thing: type(thing).__name__
25
+ set_returner = lambda self, iterable: set(iterable)
25
26
 
26
27
  @export
27
28
  class KeyMapViewBase(collections.abc.Sequence,
@@ -88,10 +89,7 @@ class KeyMapKeysView(KeyMapViewBase,
88
89
 
89
90
  """ A KeyMap key view. """
90
91
 
91
- @classmethod
92
- def _from_iterable(cls, iterable): # pragma: no cover
93
- # Required by the “collections.abc.Set” API:
94
- return set(iterable)
92
+ _from_iterable = classmethod(set_returner)
95
93
 
96
94
  def __contains__(self, nskey):
97
95
  return nskey in self.mapping.submap(*self.namespaces)
@@ -108,10 +106,7 @@ class KeyMapItemsView(KeyMapViewBase,
108
106
 
109
107
  """ A KeyMap items view. """
110
108
 
111
- @classmethod
112
- def _from_iterable(cls, iterable): # pragma: no cover
113
- # Required by the “collections.abc.Set” API:
114
- return set(iterable)
109
+ _from_iterable = classmethod(set_returner)
115
110
 
116
111
  def __contains__(self, item):
117
112
  nskey, value = item
@@ -170,10 +165,7 @@ class NamespaceWalkerKeysView(NamespaceWalkerViewBase,
170
165
 
171
166
  """ A keys view specifically tailored to NamespaceWalker types. """
172
167
 
173
- @classmethod
174
- def _from_iterable(cls, iterable): # pragma: no cover
175
- # Required by the “collections.abc.Set” API:
176
- return set(iterable)
168
+ _from_iterable = classmethod(set_returner)
177
169
 
178
170
  def __contains__(self, nskey):
179
171
  for *namespaces, key, value in self.mapping.walk():
@@ -194,10 +186,7 @@ class NamespaceWalkerItemsView(NamespaceWalkerViewBase,
194
186
 
195
187
  """ An items view specifically tailored to NamespaceWalker types. """
196
188
 
197
- @classmethod
198
- def _from_iterable(cls, iterable): # pragma: no cover
199
- # Required by the “collections.abc.Set” API:
200
- return set(iterable)
189
+ _from_iterable = classmethod(set_returner)
201
190
 
202
191
  def __contains__(self, item):
203
192
  nskey, putative = item
@@ -1057,7 +1057,7 @@ class cd(Directory):
1057
1057
  def __init__(self, pth):
1058
1058
  """ Change to a new directory (the target path `pth` must be specified).
1059
1059
  """
1060
- super(cd, self).__init__(pth)
1060
+ super().__init__(pth)
1061
1061
 
1062
1062
  @export
1063
1063
  class wd(Directory):
@@ -1065,7 +1065,7 @@ class wd(Directory):
1065
1065
  def __init__(self):
1066
1066
  """ Initialize a Directory instance for the current working directory.
1067
1067
  """
1068
- super(wd, self).__init__(pth=None)
1068
+ super().__init__(pth=None)
1069
1069
 
1070
1070
  @export
1071
1071
  class td(Directory):
@@ -1074,7 +1074,7 @@ class td(Directory):
1074
1074
  """ Initialize a Directory instance for the current temporary directory.
1075
1075
  """
1076
1076
  from tempfile import gettempdir
1077
- super(td, self).__init__(pth=gettempdir())
1077
+ super().__init__(pth=gettempdir())
1078
1078
 
1079
1079
  @export
1080
1080
  class hd(Directory):
@@ -1082,7 +1082,7 @@ class hd(Directory):
1082
1082
  def __init__(self):
1083
1083
  """ Initialize a Directory instance for the current user’s home directory.
1084
1084
  """
1085
- super(hd, self).__init__(pth=gethomedir())
1085
+ super().__init__(pth=gethomedir())
1086
1086
 
1087
1087
  @export
1088
1088
  class TemporaryDirectory(Directory):
@@ -1128,7 +1128,7 @@ class TemporaryDirectory(Directory):
1128
1128
  self.prefix = prefix
1129
1129
  self.suffix = suffix
1130
1130
  self.change = change
1131
- super(TemporaryDirectory, self).__init__(self._name)
1131
+ super().__init__(self._name)
1132
1132
 
1133
1133
  @property
1134
1134
  def name(self):
@@ -1150,7 +1150,7 @@ class TemporaryDirectory(Directory):
1150
1150
 
1151
1151
  @wraps(Directory.ctx_prepare)
1152
1152
  def ctx_prepare(self):
1153
- change = super(TemporaryDirectory, self).ctx_prepare().change
1153
+ change = super().ctx_prepare().change
1154
1154
  self.will_change = self.will_change_back = bool(self.will_change and change)
1155
1155
  return self
1156
1156
 
@@ -1166,7 +1166,7 @@ class TemporaryDirectory(Directory):
1166
1166
  """ Delete the directory pointed to by the TemporaryDirectory
1167
1167
  instance, and everything it contains. USE WITH CAUTION.
1168
1168
  """
1169
- out = super(TemporaryDirectory, self).close()
1169
+ out = super().close()
1170
1170
  if self.exists:
1171
1171
  return rm_rf(self.name) and out
1172
1172
  return False
@@ -1184,11 +1184,11 @@ class TemporaryDirectory(Directory):
1184
1184
  def __enter__(self):
1185
1185
  if not self.exists:
1186
1186
  self.makedirs()
1187
- super(TemporaryDirectory, self).__enter__()
1187
+ super().__enter__()
1188
1188
  return self
1189
1189
 
1190
1190
  def __exit__(self, exc_type=None, exc_val=None, exc_tb=None):
1191
- out = super(TemporaryDirectory, self).__exit__(exc_type, exc_val, exc_tb)
1191
+ out = super().__exit__(exc_type, exc_val, exc_tb)
1192
1192
  if self.destroy:
1193
1193
  out &= self.close()
1194
1194
  return out
@@ -57,7 +57,7 @@ def mutate_syspath(container):
57
57
  for path in sys.path:
58
58
  if path in container:
59
59
  new_syspath.append(path)
60
- sys.path = new_syspath
60
+ sys.path[:] = new_syspath
61
61
  return new_syspath
62
62
 
63
63
  @export
@@ -186,7 +186,7 @@ class Registry(abc.ABC, metaclass=MetaRegistry):
186
186
  dictionary, indexed by the qualified name.
187
187
  """
188
188
  # Call up:
189
- super(Registry, cls).__init_subclass__(**kwargs)
189
+ super().__init_subclass__(**kwargs)
190
190
 
191
191
  # We were called with a class for which the values
192
192
  # of appname, appspace, and __name__ have been assigned –
@@ -216,8 +216,8 @@ class ModuleSpec(importlib.machinery.ModuleSpec):
216
216
  are required arguments).
217
217
  """
218
218
  _, packagename = dotpath_split(name)
219
- super(ModuleSpec, self).__init__(name, loader,
220
- origin=packagename)
219
+ super().__init__(name, loader,
220
+ origin=packagename)
221
221
 
222
222
  def __hash__(self):
223
223
  return hash(self.loader) \
@@ -234,7 +234,7 @@ class Package(types.Module):
234
234
  """
235
235
 
236
236
  def __init__(self, name, doc=None, path=None):
237
- super(Package, self).__init__(name, doc)
237
+ super().__init__(name, doc)
238
238
  self.__path__ = path or []
239
239
 
240
240
  def __repr__(self):
@@ -593,9 +593,9 @@ class MetaModule(MetaRegistry):
593
593
  deferred_export.__doc__ = inspect.getdoc(ExporterBase.export)
594
594
 
595
595
  # Call up:
596
- attributes = super(MetaModule, metacls).__prepare__(name,
597
- bases,
598
- **kwargs)
596
+ attributes = super().__prepare__(name,
597
+ bases,
598
+ **kwargs)
599
599
 
600
600
  # Return a new Namespace with the deferred export function
601
601
  # defined as “export”:
@@ -610,10 +610,10 @@ class MetaModule(MetaRegistry):
610
610
  deferred_export = attributes.pop('export', None)
611
611
 
612
612
  # Call up, creating and initializing the module class:
613
- cls = super(MetaModule, metacls).__new__(metacls, name,
614
- bases,
615
- dict(attributes),
616
- **kwargs)
613
+ cls = super().__new__(metacls, name,
614
+ bases,
615
+ dict(attributes),
616
+ **kwargs)
617
617
 
618
618
  # If an appname is defined, try to install
619
619
  # an instance of the appropriate Exporter:
@@ -749,7 +749,7 @@ class ModuleBase(Package, Registry, metaclass=MetaModule):
749
749
  cls.appname = appname or attr_search('appname', *ancestors)
750
750
  cls.appspace = appspace or attr_search('appspace', *ancestors)
751
751
  cls.__loader__ = linkages.get(cls.appname, none_function)()
752
- super(ModuleBase, cls).__init_subclass__(**kwargs)
752
+ super().__init_subclass__(**kwargs)
753
753
 
754
754
  @classmethod
755
755
  def __class_getitem__(cls, key):
@@ -767,7 +767,7 @@ class ModuleBase(Package, Registry, metaclass=MetaModule):
767
767
  qualified_name = None
768
768
  if self.prefix:
769
769
  qualified_name = dotpath_join(self.prefix, name)
770
- super(ModuleBase, self).__init__(qualified_name or name, doc)
770
+ super().__init__(qualified_name or name, doc)
771
771
 
772
772
  def __execute__(self):
773
773
  """ The “__execute__()” class-based module instance method is called
@@ -813,8 +813,7 @@ class ModuleBase(Package, Registry, metaclass=MetaModule):
813
813
  cls = type(self)
814
814
  if hasattr(cls, consts.EXPORTER_NAME):
815
815
  return getattr(cls, consts.EXPORTER_NAME).dir_function()()
816
- names = chain(cls.__dict__.keys(),
817
- super(ModuleBase, self).__dir__())
816
+ names = chain(cls.__dict__.keys(), super().__dir__())
818
817
  return sorted(frozenset(names) - DO_NOT_INCLUDE)
819
818
 
820
819
  @dataclass
@@ -201,7 +201,7 @@ class ProxyModule(ModuleBase):
201
201
  See the main class docstring for the deets.
202
202
  """
203
203
  # Call up, creating the instance:
204
- instance = super(ProxyModule, cls).__new__(cls)
204
+ instance = super().__new__(cls)
205
205
 
206
206
  # Fill in our “slots” with empty structs:
207
207
  instance.__filters__ = []
@@ -238,7 +238,7 @@ class ProxyModule(ModuleBase):
238
238
  mappings.
239
239
  """
240
240
  # Super-initialize:
241
- super(ProxyModule, self).__init__(name, doc=doc)
241
+ super().__init__(name, doc=doc)
242
242
 
243
243
  # Get a reference to the module class:
244
244
  cls = type(self)
@@ -27,10 +27,16 @@ repl.py – THE RUBRICK:
27
27
  from __future__ import print_function
28
28
 
29
29
  import importlib
30
+ import os.path
31
+ import runpy
32
+ import warnings
30
33
 
31
34
  from clu.all import import_clu_modules
35
+ from clu.config.env import Environ
36
+ from clu.constants import consts
32
37
  from clu.naming import nameof, qualified_import
33
38
  from clu.predicates import ispublic
39
+ from clu.repl import columnize
34
40
 
35
41
  # MODULE EXPORT FUNCTIONS: given a module name, export
36
42
  # either the module or its contents into a given namespace:
@@ -190,6 +196,21 @@ else:
190
196
  # I do this practically every time, so I might as well do it here:
191
197
  catimage = Image.open(image_paths[0])
192
198
 
199
+ # Access CLU app environment variables:
200
+ cluenv = Environ(appname='clu')
201
+
202
+ # If you, the user, set up a CLU_USER_SCRIPT environment variable
203
+ # before running this repl script, you can have it executed herein:
204
+ if 'user:script' in cluenv:
205
+ user_script_path = cluenv['user:script']
206
+ if os.path.exists(user_script_path):
207
+ user_script_globals = runpy.run_path(user_script_path)
208
+ GLOBALS.update(user_script_globals)
209
+ else:
210
+ message = "CLU_USER_SCRIPT needs to point to a Python file"
211
+ warnings.simplefilter('always')
212
+ warnings.warn(stacklevel=2, message=message)
213
+
193
214
  # Remove duplicate and invalid sys.paths:
194
215
 
195
216
  pypath.remove_invalid_paths()
@@ -114,7 +114,7 @@ class NodeBase(collections.abc.Hashable,
114
114
  instance.child_nodes = {}
115
115
 
116
116
  if children:
117
- self._append_nodes(*children)
117
+ instance._append_nodes(*children)
118
118
 
119
119
  return instance
120
120
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-clu
3
- Version: 0.11.1
3
+ Version: 0.11.3
4
4
  Summary: CLU - Common Lightweight Utilities, or Command-Line Utilities (your pick)
5
5
  Home-page: https://github.com/fish2000/clu
6
6
  Download-URL: https://github.com/fish2000/clu/zipball/master
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # CLU -- Common Lightweight Utilities
5
5
  #
6
- # Copyright © 2012-2025 Alexander Böhn
6
+ # Copyright © 2012-2035 Alexander Böhn
7
7
  #
8
8
  # Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  # of this software and associated documentation files (the "Software"), to deal
@@ -91,7 +91,7 @@ try:
91
91
  '__version__.py')).read(),
92
92
  '__version__.py', 'exec'))
93
93
  except:
94
- __version__ = '0.11.1'
94
+ __version__ = '0.11.3'
95
95
 
96
96
  # PROJECT DESCRIPTION
97
97
  LONG_DESCRIPTION = project_content('ABOUT.md')
@@ -1 +0,0 @@
1
- __version__ = '0.11.1'
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
File without changes
File without changes
File without changes
File without changes
File without changes