python-clu 0.10.1__tar.gz → 0.11.2__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.10.1 → python_clu-0.11.2}/.bumpversion.toml +1 -1
- {python_clu-0.10.1 → python_clu-0.11.2}/PKG-INFO +1 -1
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/__init__.py +2 -2
- python_clu-0.11.2/clu/__version__.py +1 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/abstract.py +31 -22
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/config/abc.py +1 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/config/keymapview.py +5 -16
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/fs/filesystem.py +9 -9
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/fs/pypath.py +7 -4
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/importing/base.py +14 -15
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/importing/proxy.py +2 -2
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/scripts/repl.py +3 -2
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/scripts/treeline.py +1 -1
- {python_clu-0.10.1 → python_clu-0.11.2}/noxfile.py +2 -2
- {python_clu-0.10.1 → python_clu-0.11.2}/python_clu.egg-info/PKG-INFO +1 -1
- {python_clu-0.10.1 → python_clu-0.11.2}/setup.py +2 -2
- python_clu-0.10.1/clu/__version__.py +0 -1
- {python_clu-0.10.1 → python_clu-0.11.2}/.coveragerc +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/.editorconfig +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/.gitchangelog.rc +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/.gitignore +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/.landscape.yml +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/.travis.yml +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/ABOUT.md +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/CHANGELOG.md +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/CLASSIFIERS.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/CODE_OF_CONDUCT.md +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/COPYING.md +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/LICENSE.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/MANIFEST.in +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/Makefile +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/README.md +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/appveyor.yml +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/__main__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/all.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/api/__init__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/api/__main__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/application.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/compilation/__init__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/compilation/compiledb.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/compilation/macros.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/config/__init__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/config/base.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/config/codecs.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/config/env.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/config/fieldtypes.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/config/filebase.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/config/formats/__init__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/config/formats/jsonfile.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/config/formats/picklefile.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/config/formats/tomlfile.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/config/formats/yamlfile.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/config/keymap.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/config/ns.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/config/proxy.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/config/settings.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/constants/__init__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/constants/__main__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/constants/consts.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/constants/data.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/constants/enums.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/constants/exceptions.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/constants/polyfills.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/csv.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/dicts.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/dispatch.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/enums.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/exporting.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/extending.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/fs/__init__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/fs/abc.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/fs/appdirectories.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/fs/misc.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/fs/sourcetree.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/importing/__init__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/importing/__main__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/keyvalue.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/mathematics.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/naming.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/predicates.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/repl/__init__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/repl/ansi.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/repl/banners.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/repl/cli/__init__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/repl/cli/boilerplate.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/repl/cli/boilerplate_copy.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/repl/cli/print_version.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/repl/columnize.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/repl/modules.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/repr.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/sanitizer.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/scripts/.gitignore +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/scripts/README.md +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/scripts/__init__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/scripts/ansicolors.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/scripts/boilerplate.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/scripts/dictroast.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/scripts/legacy/forkumask.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/scripts/legacy/repl-bpython.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/scripts/legacy/repl-ipython.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/scripts/legacy/repl-ptpython.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/scripts/legacy/repl-pyzo.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/scripts/legacy/xdg-runtime.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/scripts/prediversus.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/shelving/__init__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/shelving/redat.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/shelving/redis.conf +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/stdio.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/testing/__init__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/testing/hook.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/testing/obsolete.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/testing/pytest.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/testing/utils.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/typespace/__init__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/typespace/__main__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/typespace/namespace.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/typology.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/version/__init__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/version/__main__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/version/git_version.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/clu/version/read_version.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/codecov.yml +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/conftest.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/Makefile +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/doctrees/api.doctree +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/doctrees/environment.pickle +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/doctrees/generated/clu.doctree +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/doctrees/index.doctree +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/.buildinfo +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_sources/api.rst.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_sources/generated/clu.rst.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_sources/index.rst.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/alabaster.css +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/basic.css +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/badge_only.css +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/fonts/lato-bold.woff +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/fonts/lato-bold.woff2 +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/fonts/lato-normal.woff +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/fonts/lato-normal.woff2 +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/css/theme.css +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/custom.css +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/doctools.js +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/documentation_options.js +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/file.png +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/jquery-3.6.0.js +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/jquery.js +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/js/badge_only.js +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/js/html5shiv-printshiv.min.js +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/js/html5shiv.min.js +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/js/theme.js +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/language_data.js +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/minus.png +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/plus.png +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/pygments.css +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/searchtools.js +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/underscore-1.13.1.js +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/_static/underscore.js +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/api.html +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/generated/clu.html +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/genindex.html +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/index.html +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/objects.inv +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/py-modindex.html +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/search.html +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/html/searchindex.js +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/build/man/clu.1 +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/make.bat +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/source/api.rst +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/source/conf.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/source/generated/clu.rst +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/docs/source/index.rst +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/hooks/autohook.sh +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/hooks/post-push/00-coverage.sh +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/hooks/pre-push/00-noop.sh +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/hooks/pre-push/01-direnv-stdlib.sh +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/hooks/scripts/coverage.sh +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/hooks/scripts/display-issues.sh +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/hooks/scripts/git-pushex +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/hooks/scripts/noop.sh +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/mypy.ini +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/pyproject.toml +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/pytest.ini +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/python_clu.egg-info/SOURCES.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/python_clu.egg-info/dependency_links.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/python_clu.egg-info/entry_points.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/python_clu.egg-info/requires.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/python_clu.egg-info/top_level.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/python_clu.egg-info/zip-safe +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/pytype.cfg +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/requirements/changelog.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/requirements/dev.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/requirements/docs.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/requirements/install.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/requirements/nox/codecov.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/requirements/nox/docs.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/requirements/nox/manifest.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/requirements/nox/repl.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/requirements/nox/tests.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/requirements/tox.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/requirements/typecheck.txt +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/scratch/direnv_transformed_env.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/scratch/inline-tests-ImportError-uggggh.ipynb +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/scratch/nteract.ipynb +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/setup.cfg +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/__init__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/data/1-58.jpg +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/data/3471426989_aa8e83cac5_o.jpg +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/data/3472236406_1fbf1a567d_o.jpg +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/data/8600JC.jpg +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/data/8ba.png +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/data/IMG_20180505_205153567.jpg +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/data/cheetah-003.jpg +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/data/config/clu-config.toml +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/data/config/yodogg.toml +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/data/shutterstock_90194617.jpg +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/data/yodata/09163d51421853.5608b3c2a1be0.jpg +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/data/yodata/5d0227342500004e12e3506d.jpg +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/data/yodata/BlackCat2_large-22.jpg +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/data/yodogg/Serval_Cat_Kitten-706.jpg +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/data/yodogg/Servals_Thoiry_19801.jpg +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/data/yodogg/video-pride-serval.jpg +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_abstract.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_all.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_boilerplate.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_config.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_config_abc.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_csv.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_dicts.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_dispatch.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_enum_aliases.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_exporting.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_extending.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_fs_abc.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_fs_appdirectories.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_fs_filesystem.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_fs_misc.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_importing.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_keyvalue.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_mathematics.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_naming.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_predicates.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_repl_columnize.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_repl_modules.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_repr.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_scripts_repl.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_typespace_namespace.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_typology.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/test_version.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/yodogg/.tm_properties +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/yodogg/__init__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/yodogg/yodogg/__init__.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/yodogg/yodogg/config.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/yodogg/yodogg/exporting.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tests/yodogg/yodogg/iheard.py +0 -0
- {python_clu-0.10.1 → python_clu-0.11.2}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-clu
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.11.2
|
|
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-
|
|
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-
|
|
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.2'
|
|
@@ -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(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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(
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
92
|
+
return super().__new__(metacls, name,
|
|
93
|
+
bases,
|
|
94
|
+
attributes,
|
|
95
|
+
**kwargs)
|
|
96
96
|
|
|
97
97
|
class Unhashable(abc.ABC, metaclass=UnhashableMeta):
|
|
98
98
|
|
|
@@ -143,6 +143,15 @@ class Sanitizer(Format):
|
|
|
143
143
|
def render(self, string):
|
|
144
144
|
return self.regex.sub('', string)
|
|
145
145
|
|
|
146
|
+
class Serializable(abc.ABC):
|
|
147
|
+
|
|
148
|
+
@classmethod
|
|
149
|
+
def from_dict(cls, instance_dict):
|
|
150
|
+
...
|
|
151
|
+
|
|
152
|
+
def to_dict(self):
|
|
153
|
+
...
|
|
154
|
+
|
|
146
155
|
class Cloneable(abc.ABC):
|
|
147
156
|
|
|
148
157
|
""" An abstract class representing something “clonable.” A cloneable
|
|
@@ -335,7 +344,7 @@ class BasePath(Slotted):
|
|
|
335
344
|
@classmethod
|
|
336
345
|
def __prepare__(metacls, name, bases, basepath="/", **kwargs):
|
|
337
346
|
""" Remove the “basepath” class keyword before calling up """
|
|
338
|
-
return super(
|
|
347
|
+
return super().__prepare__(name, bases, **kwargs)
|
|
339
348
|
|
|
340
349
|
def __new__(metacls, name, bases, attributes, basepath="/", **kwargs):
|
|
341
350
|
""" Override for `Slotted.__new__(…)` setting up a
|
|
@@ -347,10 +356,10 @@ class BasePath(Slotted):
|
|
|
347
356
|
and os.fspath(basepath) \
|
|
348
357
|
or basepath)
|
|
349
358
|
|
|
350
|
-
return super(
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
359
|
+
return super().__new__(metacls, name,
|
|
360
|
+
bases,
|
|
361
|
+
attributes,
|
|
362
|
+
**kwargs)
|
|
354
363
|
|
|
355
364
|
class AppName(abc.ABC):
|
|
356
365
|
|
|
@@ -364,7 +373,7 @@ class AppName(abc.ABC):
|
|
|
364
373
|
from clu.predicates import mro, attr_search
|
|
365
374
|
if 'appspace' in kwargs:
|
|
366
375
|
del kwargs['appspace']
|
|
367
|
-
super(
|
|
376
|
+
super().__init_subclass__(**kwargs)
|
|
368
377
|
cls.appname = ValueDescriptor(appname or attr_search('appname', *mro(cls)))
|
|
369
378
|
|
|
370
379
|
def __init__(self, *args, **kwargs):
|
|
@@ -32,6 +32,7 @@ export = exporter.decorator()
|
|
|
32
32
|
@export
|
|
33
33
|
class FrozenKeyMapBase(collections.abc.Mapping,
|
|
34
34
|
collections.abc.Reversible,
|
|
35
|
+
clu.abstract.Serializable,
|
|
35
36
|
metaclass=clu.abstract.Slotted):
|
|
36
37
|
|
|
37
38
|
""" Abstract sub-base interface class for immutable namespaced mappings.
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
1191
|
+
out = super().__exit__(exc_type, exc_val, exc_tb)
|
|
1192
1192
|
if self.destroy:
|
|
1193
1193
|
out &= self.close()
|
|
1194
1194
|
return out
|
|
@@ -26,16 +26,19 @@ def add_paths(*putatives, prepend=False):
|
|
|
26
26
|
paths = frozenset(sys.path)
|
|
27
27
|
add_paths.oldpaths.append(tuple(sys.path))
|
|
28
28
|
for pth in (os.fspath(putative) for putative in putatives):
|
|
29
|
-
if not os.path.exists(pth):
|
|
30
|
-
out[pth] = False
|
|
31
|
-
continue
|
|
32
29
|
# if pth in paths:
|
|
33
30
|
# out[pth] = False
|
|
34
31
|
# continue
|
|
35
32
|
for p in paths:
|
|
33
|
+
if not os.path.exists(p):
|
|
34
|
+
out[pth] = False
|
|
35
|
+
continue
|
|
36
36
|
if os.path.samefile(p, pth):
|
|
37
37
|
out[pth] = False
|
|
38
38
|
continue
|
|
39
|
+
if not os.path.exists(pth):
|
|
40
|
+
out[pth] = False
|
|
41
|
+
continue
|
|
39
42
|
if prepend:
|
|
40
43
|
sys.path.insert(0, pth)
|
|
41
44
|
else:
|
|
@@ -54,7 +57,7 @@ def mutate_syspath(container):
|
|
|
54
57
|
for path in sys.path:
|
|
55
58
|
if path in container:
|
|
56
59
|
new_syspath.append(path)
|
|
57
|
-
sys.path = new_syspath
|
|
60
|
+
sys.path[:] = new_syspath
|
|
58
61
|
return new_syspath
|
|
59
62
|
|
|
60
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(
|
|
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(
|
|
220
|
-
|
|
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(
|
|
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(
|
|
597
|
-
|
|
598
|
-
|
|
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(
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
241
|
+
super().__init__(name, doc=doc)
|
|
242
242
|
|
|
243
243
|
# Get a reference to the module class:
|
|
244
244
|
cls = type(self)
|
|
@@ -99,8 +99,8 @@ mods = ('clu',
|
|
|
99
99
|
'sys', 'os', 'io', 're', 'abc',
|
|
100
100
|
'argparse', 'collections', 'contextlib', 'copy',
|
|
101
101
|
'datetime', 'functools', 'importlib', 'inspect',
|
|
102
|
-
'itertools', 'math', 'operator', '
|
|
103
|
-
'shutil', 'sysconfig', 'weakref',
|
|
102
|
+
'itertools', 'math', 'operator', 'pathlib',
|
|
103
|
+
'pickle', 'six', 'shutil', 'sysconfig', 'weakref',
|
|
104
104
|
'numpy', 'more_itertools', 'colorama', 'termcolor',
|
|
105
105
|
'xerox', 'zict', 'pytz', 'dateutil',
|
|
106
106
|
'termplotlib', 'termtables')
|
|
@@ -131,6 +131,7 @@ import collections.abc
|
|
|
131
131
|
from PIL import Image
|
|
132
132
|
from pprint import pprint, pformat
|
|
133
133
|
|
|
134
|
+
pp = pprint
|
|
134
135
|
ppt = lambda thing: pprint(tuple(thing))
|
|
135
136
|
|
|
136
137
|
# These two imports trigger module-level __getattr__ actions:
|
|
@@ -13,7 +13,7 @@ nox.options.stop_on_first_error = True
|
|
|
13
13
|
# Skip manifest check if we’re not running in a Git repo:
|
|
14
14
|
from clu.version.git_version import are_we_gitted
|
|
15
15
|
if not are_we_gitted():
|
|
16
|
-
nox.options.keywords
|
|
16
|
+
nox.options.keywords = "not checkmanifest"
|
|
17
17
|
|
|
18
18
|
@nox.session
|
|
19
19
|
def checkmanifest(session):
|
|
@@ -93,7 +93,7 @@ def coverage(session):
|
|
|
93
93
|
'clu.scripts.repl'):
|
|
94
94
|
session.run('coverage',
|
|
95
95
|
'run', '--append', '-m', modulename,
|
|
96
|
-
|
|
96
|
+
silent=True)
|
|
97
97
|
|
|
98
98
|
# Run each inline-test function:
|
|
99
99
|
for modulename in clu.all.inline_tests():
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-clu
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.11.2
|
|
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-
|
|
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.
|
|
94
|
+
__version__ = '0.11.2'
|
|
95
95
|
|
|
96
96
|
# PROJECT DESCRIPTION
|
|
97
97
|
LONG_DESCRIPTION = project_content('ABOUT.md')
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '0.10.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
|
|
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
|