python-clu 0.12.21__tar.gz → 0.12.24__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.
- {python_clu-0.12.21 → python_clu-0.12.24}/.bumpversion.toml +13 -2
- {python_clu-0.12.21 → python_clu-0.12.24}/CHANGELOG.md +71 -1
- python_clu-0.12.24/CITATION.cff +11 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/MANIFEST.in +2 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/PKG-INFO +1 -1
- python_clu-0.12.24/clu/__version__.py +1 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/keymap.py +2 -4
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/dicts.py +49 -19
- {python_clu-0.12.21 → python_clu-0.12.24}/noxfile.py +5 -3
- {python_clu-0.12.21 → python_clu-0.12.24}/pyproject.toml +1 -1
- {python_clu-0.12.21 → python_clu-0.12.24}/python_clu.egg-info/PKG-INFO +1 -1
- {python_clu-0.12.21 → python_clu-0.12.24}/python_clu.egg-info/SOURCES.txt +1 -1
- {python_clu-0.12.21 → python_clu-0.12.24}/setup.py +1 -1
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_fs_abc.py +1 -1
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_fs_appdirectories.py +6 -6
- python_clu-0.12.21/clu/__version__.py +0 -1
- python_clu-0.12.21/pytest.ini +0 -5
- {python_clu-0.12.21 → python_clu-0.12.24}/.coveragerc +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/.editorconfig +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/.gitchangelog.rc +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/.gitignore +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/.landscape.yml +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/.travis.yml +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/ABOUT.md +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/CLASSIFIERS.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/CLU_Treatment.md +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/CODE_OF_CONDUCT.md +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/LICENSE.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/Makefile +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/README.md +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/appveyor.yml +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/__main__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/abstract.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/all.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/api/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/api/__main__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/application.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/compilation/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/compilation/compiledb.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/compilation/macros.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/abc.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/codecs.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/env.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/filebase.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/formats/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/formats/jsonfile.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/formats/picklefile.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/formats/tomlfile.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/formats/yamlfile.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/keymaputils.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/keymapview.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/legacy/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/legacy/base.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/legacy/fieldtypes.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/legacy/settings.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/ns.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/config/proxy.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/constants/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/constants/__main__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/constants/consts.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/constants/data.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/constants/enums.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/constants/exceptions.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/constants/polyfills.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/csv.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/dispatch.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/enums.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/exporting.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/extending.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/fs/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/fs/abc.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/fs/appdirectories.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/fs/filesystem.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/fs/misc.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/fs/pypath.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/fs/sourcetree.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/importing/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/importing/__main__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/importing/base.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/importing/proxy.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/keyvalue.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/mathematics.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/naming.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/predicates.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/repl/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/repl/ansi.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/repl/banners.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/repl/cli/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/repl/cli/ansidocs.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/repl/cli/boilerplate.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/repl/cli/boilerplate_copy.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/repl/cli/print_version.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/repl/columnize.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/repl/modules.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/repr.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/sanitizer.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/scripts/.gitignore +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/scripts/README.md +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/scripts/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/scripts/ansicolors.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/scripts/boilerplate.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/scripts/dictroast.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/scripts/legacy/forkumask.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/scripts/legacy/repl-bpython.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/scripts/legacy/repl-ipython.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/scripts/legacy/repl-ptpython.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/scripts/legacy/repl-pyzo.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/scripts/legacy/xdg-runtime.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/scripts/prediversus.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/scripts/repl.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/scripts/treeline.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/shelving/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/shelving/redat.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/shelving/redis.conf +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/stdio.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/testing/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/testing/hook.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/testing/obsolete.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/testing/pytest.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/testing/utils.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/trie.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/typespace/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/typespace/__main__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/typespace/namespace.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/typology.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/version/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/version/__main__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/version/git_version.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/clu/version/read_version.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/codecov.yml +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/conftest.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/.DS_Store +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/Makefile +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/doctrees/api.doctree +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/doctrees/environment.pickle +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/doctrees/generated/clu.doctree +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/doctrees/index.doctree +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/.buildinfo +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_sources/api.rst.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_sources/generated/clu.rst.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_sources/index.rst.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/alabaster.css +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/basic.css +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/badge_only.css +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/fonts/lato-bold.woff +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/fonts/lato-bold.woff2 +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/fonts/lato-normal.woff +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/fonts/lato-normal.woff2 +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/css/theme.css +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/custom.css +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/doctools.js +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/documentation_options.js +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/file.png +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/jquery-3.6.0.js +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/jquery.js +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/js/badge_only.js +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/js/html5shiv-printshiv.min.js +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/js/html5shiv.min.js +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/js/theme.js +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/language_data.js +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/minus.png +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/plus.png +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/pygments.css +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/searchtools.js +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/underscore-1.13.1.js +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/_static/underscore.js +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/api.html +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/generated/clu.html +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/genindex.html +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/index.html +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/objects.inv +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/py-modindex.html +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/search.html +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/html/searchindex.js +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/build/man/clu.1 +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/make.bat +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/source/api.rst +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/source/conf.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/source/generated/clu.rst +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/docs/source/index.rst +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/hooks/autohook.sh +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/hooks/post-push/00-coverage.sh +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/hooks/pre-push/00-noop.sh +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/hooks/pre-push/01-direnv-stdlib.sh +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/hooks/scripts/coverage.sh +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/hooks/scripts/display-issues.sh +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/hooks/scripts/git-pushex +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/hooks/scripts/noop.sh +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/mypy.ini +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/python_clu.egg-info/dependency_links.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/python_clu.egg-info/entry_points.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/python_clu.egg-info/requires.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/python_clu.egg-info/top_level.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/python_clu.egg-info/zip-safe +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/pytype.cfg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/requirements/changelog.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/requirements/dev.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/requirements/docs.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/requirements/install.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/requirements/nox/codecov.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/requirements/nox/docs.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/requirements/nox/manifest.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/requirements/nox/pyproject.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/requirements/nox/repl.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/requirements/nox/tests.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/requirements/tox.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/requirements/typecheck.txt +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/scratch/direnv_transformed_env.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/scratch/images/clu-module-list-example-small.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/scratch/images/clu-module-list-example.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/scratch/images/clu-module-list-example.pxd +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/scratch/images/clu-testing-time-totals-example-small.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/scratch/images/clu-testing-time-totals-example.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/scratch/images/clu-testing-time-totals-example.pxd +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/scratch/images/construx-and-capsela-small.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/scratch/images/construx-and-capsela.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/scratch/images/construx-and-capsela.pxd +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/scratch/images/moira.png +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/scratch/images/toml-module-rant.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/scratch/inline-tests-ImportError-uggggh.ipynb +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/scratch/nteract.ipynb +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/setup.cfg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/data/1-58.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/data/3471426989_aa8e83cac5_o.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/data/3472236406_1fbf1a567d_o.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/data/8600JC.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/data/8ba.png +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/data/IMG_20180505_205153567.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/data/cheetah-003.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/data/config/clu-config.toml +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/data/config/yodogg.toml +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/data/shutterstock_90194617.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/data/yodata/09163d51421853.5608b3c2a1be0.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/data/yodata/5d0227342500004e12e3506d.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/data/yodata/BlackCat2_large-22.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/data/yodogg/Serval_Cat_Kitten-706.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/data/yodogg/Servals_Thoiry_19801.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/data/yodogg/video-pride-serval.jpg +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_abstract.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_all.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_boilerplate.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_config.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_config_abc.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_config_ns_matching.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_csv.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_dicts.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_dispatch.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_enum_aliases.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_exporting.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_extending.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_fs_filesystem.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_fs_misc.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_importing.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_keyvalue.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_mathematics.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_naming.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_predicates.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_repl_columnize.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_repl_modules.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_repr.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_scripts_repl.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_typespace_namespace.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_typology.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/test_version.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/yodogg/.tm_properties +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/yodogg/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/yodogg/yodogg/__init__.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/yodogg/yodogg/config.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/yodogg/yodogg/exporting.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tests/yodogg/yodogg/iheard.py +0 -0
- {python_clu-0.12.21 → python_clu-0.12.24}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
[tool.bumpversion]
|
|
3
|
-
current_version = "0.12.
|
|
3
|
+
current_version = "0.12.24"
|
|
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}}-\\d{{2}}-\\d{{2}}""""
|
|
42
|
+
replace = """date-released: "{now:%Y-%m-%d}""""
|
|
43
|
+
regex = true
|
|
@@ -1,7 +1,75 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
## 0.12.
|
|
4
|
+
## 0.12.23:pre6+g583bcc6 [SNAPSHOT]
|
|
5
|
+
|
|
6
|
+
### Add
|
|
7
|
+
|
|
8
|
+
* Adding `pip` as an explict `pyproject.toml` requirement. [Alexander Böhn]
|
|
9
|
+
|
|
10
|
+
* Added `uv.lock` file … OK, let’s see how this goes. [Alexander Böhn]
|
|
11
|
+
|
|
12
|
+
### Other
|
|
13
|
+
|
|
14
|
+
* [make] Changelog updated @ 1d52c39. [Alexander Böhn]
|
|
15
|
+
|
|
16
|
+
* Got the date format backwards in `CITATION.cff` [Alexander Böhn]
|
|
17
|
+
|
|
18
|
+
* Keeping `uv.lock` out of packages and wheels. [Alexander Böhn]
|
|
19
|
+
|
|
20
|
+
* Further expanded `CITATION.cff` and related `.bumpversion.toml` settings … dates are now proper precise dates, and additional settings have been added. Yes! [Alexander Böhn]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## v0.12.23 (2026-08-18)
|
|
24
|
+
|
|
25
|
+
### Bump
|
|
26
|
+
|
|
27
|
+
* Bumped version: 0.12.22 → 0.12.23. [Alexander Böhn]
|
|
28
|
+
|
|
29
|
+
### Other
|
|
30
|
+
|
|
31
|
+
* [make] Changelog updated @ 49698e8. [Alexander Böhn]
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
## v0.12.22 (2026-08-18)
|
|
35
|
+
|
|
36
|
+
### Bump
|
|
37
|
+
|
|
38
|
+
* Bumped version: 0.12.21 → 0.12.22. [Alexander Böhn]
|
|
39
|
+
|
|
40
|
+
### Add
|
|
41
|
+
|
|
42
|
+
* 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]
|
|
43
|
+
|
|
44
|
+
* Added a `CITATION.cff` file, and rearranged imports in `clu.dicts` [Alexander Böhn]
|
|
45
|
+
|
|
46
|
+
… the “CITATION.cff” file goes with “orcid.org”; see also:
|
|
47
|
+
- https://orcid.org/0009-0007-9645-1744
|
|
48
|
+
|
|
49
|
+
… and the “clu.dicts” reshuffle was because I was for some reason
|
|
50
|
+
at one point paranoid about needing, for some reason, to be able
|
|
51
|
+
to import “clu.dicts” within “clu.predicates” or “clu.typology”.
|
|
52
|
+
That isn’t necessary, and it’s time to stop writing “defensive code”
|
|
53
|
+
around this for no reason, yeah? Yeah!
|
|
54
|
+
|
|
55
|
+
### Remove
|
|
56
|
+
|
|
57
|
+
* Removed py.test legacy config file … this ensures it uses the config stuff in “pyproject.toml” [Alexander Böhn]
|
|
58
|
+
|
|
59
|
+
### Other
|
|
60
|
+
|
|
61
|
+
* [make] Changelog updated @ 02e3900. [Alexander Böhn]
|
|
62
|
+
|
|
63
|
+
* Assuaging the whinging by the latest py.test version. [Alexander Böhn]
|
|
64
|
+
|
|
65
|
+
* 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]
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
## v0.12.21 (2025-11-26)
|
|
69
|
+
|
|
70
|
+
### Bump
|
|
71
|
+
|
|
72
|
+
* Bumped version: 0.12.20 → 0.12.21. [Alexander Böhn]
|
|
5
73
|
|
|
6
74
|
### New
|
|
7
75
|
|
|
@@ -46,6 +114,8 @@
|
|
|
46
114
|
|
|
47
115
|
### Other
|
|
48
116
|
|
|
117
|
+
* [make] Changelog updated @ 46e4b9a. [Alexander Böhn]
|
|
118
|
+
|
|
49
119
|
* Working around enhanced rigorousness (?!) in `pickle.whichmodule(…)` [Alexander Böhn]
|
|
50
120
|
|
|
51
121
|
… like WTF, so forever you would call this random module function –
|
|
@@ -0,0 +1,11 @@
|
|
|
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: "Python-CLU"
|
|
8
|
+
version: 0.12.24
|
|
9
|
+
date-released: "2026-08-18"
|
|
10
|
+
url: "https://github.com/fish2000/CLU"
|
|
11
|
+
repository-code: "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
|
|
@@ -39,6 +40,7 @@ exclude .coverage
|
|
|
39
40
|
exclude .envrc
|
|
40
41
|
exclude .noxresults.json
|
|
41
42
|
exclude coverage.xml
|
|
43
|
+
exclude uv.lock
|
|
42
44
|
|
|
43
45
|
recursive-exclude clu *.pyc *~ *.so .DS_Store
|
|
44
46
|
recursive-exclude docs *.pyc *~ *.so .DS_Store
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '0.12.24'
|
|
@@ -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=
|
|
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.
|
|
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
|
-
#
|
|
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(
|
|
171
|
+
total = (f",\n{ts}").join(sequence)
|
|
148
172
|
|
|
149
173
|
# Return the formatted map contents:
|
|
150
|
-
return f"
|
|
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
|
-
|
|
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',
|
|
28
|
+
session.run('validate-pyproject', '--verbose', tomls)
|
|
27
29
|
|
|
28
30
|
@nox.session
|
|
29
31
|
@nox.parametrize('module', (
|
|
@@ -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'
|
python_clu-0.12.21/pytest.ini
DELETED
|
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
|
|
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
|
|
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
|