.. this will be appended to README.rst Changelog ========= .. Feature request ................. - Confirm setuptools-scm file finders are being called? - self hosted package server. See article https://safjan.com/Create%20Self-Hosted%20Python%20Package%20Repository/ Known regressions .................. - release.yml affects: py39 monkey/wrap_infer_version reproduce: encountered when using :code:`python -m build` getting dist.metadata.name example: e.g. gh workflow quality --> isort black flake8 https://github.com/msftcangoblowm/drain-swamp/actions/runs/11362396076/job/31604183207 discussion: https://github.com/pypa/setuptools/issues/3452 https://github.com/pypa/setuptools/pull/3832 - activate drain-swamp .venv logging-strict has no dependency, drain-swamp. However from logging-strict package base folder :code:`pre-commit run --all-files --show-diff-on-failure` fails. LookupError: toml section missing ...logging_strict/pyproject.toml does not contain a tool.drain-swamp section - rtd installs does not build or run a workflow. Does rtd give any workaround? Use github pages instead of rtd. Unless rtd respects workflows - test build sdist to detect issue with build backend - tox does not pass in config_settings. Read in DS_CONFIG_SETTINGS Commit items for NEXT VERSION .............................. .. scriv-start-here .. _changes_2-1-1: Version 2.1.1 — 2025-01-07 -------------------------- - ci: bump actions versions - chore: update requirements - chore(pre-commit): update requirements - refactor: remove logging config dict constants.LOGGING - test: add pytest-logging-strict support .. _changes_2-1-0: Version 2.1.0 — 2024-12-15 -------------------------- - fix(dev.lock): requires latest wreck release - chore: bump wreck - fix(docs/conf.py): sphinx conf broken import - fix(pyproject.toml): add missing build dependency wreck - feat: add wreck support - fix: pyproject.toml section pipenv-unlock (#10) - refactor: remove entrypoint pipenv-unlock - docs: reduce links in source code not sphinx inventory files .. _changes_2-0-0: Version 2.0.0 — 2024-11-06 -------------------------- - feat: approach for requirements organize by venvs rather than folders - feat(lock_inspect): add unlock_compile implementation - refactor(lock_toggle): move InFile related --> lock_infile - docs(conf.py): add autodoc_type_aliases for documenting TypeAlias - test: lock_util.replace_suffixes_last rather than _safe_path.replace_suffixes - test(lock_infile): add test for InFiles.write .. _changes_1-8-6: Version 1.8.6 — 2024-10-30 -------------------------- - feat: add command pipenv-unlock fix (#14) - fix(lock_inspect): Pins.subset_req Windows unsafe path comparison - refactor(lock_inspect): add _wrapper_pins_by_pkg Pins.by_pkg wrapper function - test(test_lock_inspect.py): use get_locals on _wrapper_pins_by_pkg - chore(MANIFEST.in): remove global include of .lnk files - chore(tox-test.ini): turn on pytest verbose and show locals .. _changes_1-8-5: Version 1.8.5 — 2024-10-24 -------------------------- - ci(python-nightly): for tox from python version strip -nightly - chore(branch-test-others): update to use env.OS_SHORT - chore(python-nightly): update to use env.OS_SHORT - ci(tox-test.ini): from setenv remove COVERAGE_FILE - ci(tox-test.ini): allow coverage combine no data to combine error - ci(testsuite): env.OS_SHORT unavailable in same step - ci(testsuite): append OS_SHORT into GITHUB_ENV - feat(tox-test.ini): add cov.pth to inform coverage about subprocess - ci(testsuite): try tox -e with matrix.os-short - ci(testsuite): tox-test use -e to restrict to one python version - fix(mypy): really annoying catch 22 try-except import block - ci: bump msftcangoblowm/drain-swamp-action to 1.0.2 - chore: add pins-cffi.in. Adjust tests - chore: bump cffi to 1.17.1 - chore: bump logging-strict to 1.3.6 - chore: bump pyproject-hooks to 1.2.0 - chore: bump logging-strict to 1.3.5 - fix: dist.metadata.name --> dist.name setuptools#3319 - refactor: remove plugin ds_refresh_links - refactor: stop editing pyproject.toml snippet - refactor: remove .lnk stop using .lnk also in ci - refactor: remove pipenv-unlock is_lock and pipenv-unlock refresh - fix(pyproject.toml): required dependencies unlock - ci: pip install requirements on one line - ci(release): try --use-pep517 to deal with setuptools#3319 - fix(tox.ini): flake8-pyi and black disagree. Ignore flake8 failure - chore: bump drain-swamp-snippet to 1.0.1 - chore: bump logging-strict to 1.3.4 - fix: add support for .shared.in (#13) - fix: pins.in and prod.in now have extension .shared.in - fix: For multiple suffixes check only last suffix - feat: add pyproject_reading from setuptools-scm (MIT) - feat(patch_pyproject_reading): add TOML array of tables support - feat(pep518_read): find_pyproject_toml add support for test files - fix(pep518_read): find_pyproject_toml given a valid file path, avoid reverse search - ci: condense multiple pip calls .. _changes_1-8-3: Version 1.8.3 — 2024-10-05 -------------------------- - ci(test-coverage): unique job name and py39 --> py310 - ci(quality-docs): fix outputs job name - fix: importlib-metadata ensure use latest version - refactor: build plugins prefix plugin name to messages - refactor(lock_toggle): improve instructions when missing .unlock or .lock files - ci(quality-docs): separate workflow for docs - ci: bump pypa/gh-action-pypi-publish to 1.10.3 - ci: drain-swamp-action version is 1.0.1 not v1.0.1 - fix: click.Path parameters receive as pathlib.Path. Previously str - chore: normalize pip and setuptools versions - chore: bump actions/checkout to v4.2.0 - docs: add mission and contributing - chore: rtd and tox.ini target docs py39 --> py310 - docs: py39 --> py310 - chore: two venvs. docs py310. Everything else py39 - docs(Makefile): catch all target comment out .. _changes_1-8-2: Version 1.8.2 — 2024-09-23 -------------------------- - fix: resolve_path cannot find executable fallback to pep366 invocation - refactor: rename tests/test_snip --> tests/_good_snips - chore: remove dependency pytest-cov - docs: rewrite front page - ci: from drain-swamp-action remove input fetch_tags - ci: actions/checkout put repository in with block - ci(release): kind tag not env.RELEASE_VERSION .. _changes_1-8-1: Version 1.8.1 — 2024-09-20 -------------------------- - ci: use msftcangoblowm/drain-swamp-action - chore(workflows): review gha versions .. _changes_1-8-0: Version 1.8.0 — 2024-09-20 -------------------------- - feat: use package drain-swamp-snippet - refactor: remove module drain_swamp.snip - chore: add build requirement dependency drain-swamp-snippet .. _changes_1-7-2: Version 1.7.2 — 2024-09-11 -------------------------- - test(static dependencies): remove tool.pipenv-unlock section - fix(backend_abc): from pyproject.toml process additional folders - chore: turn all is_module_debug flags off - chore(cli_unlock): comment out __debug__ blocks .. _changes_1-7-1: Version 1.7.1 — 2024-09-10 -------------------------- - ci(testsuite): pypy-3.9 upstream issue sys.executable suffix wrong case - test(backend_abc): copy over .lock and .unlock files, not just empty files - fix(backend_abc): fix sorting hat parsing optional dependencies - fix(backend_abc): sorting hat on Windows sort resolved - feat(safe_path): add replace_suffixes - fix(backend_abc): sorting hat strategy differs by platform - fix(run_cmd): cmd sequence --> str --> shlex.split - test(backend_abc): confirm cause not run_cmd pipenv-unlock refresh - fix: sorting hat combine paths with resolve_joinpath - fix(run_cmd): shlex.split set posix parameter - refactor: remove exception BackendNotSupportedError - refactor: remove the concept of backend awareness - refactor: backend_abc no longer an abc - fix: careful not to write Windows linesep into a TOML file - refactor: where possible _to_purepath rather than PurePosixPath and PureWindowsPath - fix: remove snip constructor param is_quiet - fix(backend_setuptools): dependency file relative path treat as PurePosixPath - fix: TOML format path must be single quoted - feat: automagically choose platform supported dependency lock copy implementation - feat: packaging process symlinks --> files. Check for either - test: On Windows, no executable true, but there might be git - fix: strftime %D and %T works on all platforms - fix: run_cmd file not found error message is platform specific - test: if Windows, unlink file not symlink - fix: patch strftime. Platform consistency - test(backend_setuptools): apply platform line seperator .. _changes_1-7-0: Version 1.7.0 — 2024-09-06 -------------------------- - feat: Windows support .. _changes_1-6-11: Version 1.6.11 — 2024-09-06 --------------------------- - fix(lock_toggle): on Windows rather than symlink copy file - style(lock_toggle): log folder access permissions .. _changes_1-6-10: Version 1.6.10 — 2024-09-06 --------------------------- - fix(lock_toggle): move open folder file descriptor into try-except block - fix(safe_path): resolve_joinpath maintain Path and PurePath flavor .. _changes_1-6-9: Version 1.6.9 — 2024-09-06 -------------------------- - style: pipenv-unlock refresh improve log messages .. _changes_1-6-8: Version 1.6.8 — 2024-09-06 -------------------------- - feat: print logging, by entrypoint or entrypoint cmd, if __debug__ and not running tests .. _changes_1-6-7: Version 1.6.7 — 2024-09-05 -------------------------- - fix(version_semantic): fixes the zero commits semantic str .. _changes_1-6-6: Version 1.6.6 — 2024-09-05 -------------------------- - chore: upgrade cffi. On macos, cffi build fail .. _changes_1-6-5: Version 1.6.5 — 2024-09-05 -------------------------- - feat: add safe path module - ci(release): update pypa/gh-action-pypi-publish .. _changes_1-6-4: Version 1.6.4 — 2024-09-05 -------------------------- - ci: add macos to os.matrix - ci: update gha versions - chore(pre-commit): add interrogate - chore(tox): add interrogate target - docs: add interrogate package and requirements. Ensure 100% documentation. - test: in each test, document pytest command to get coverage for one module - style: update project.urls so recognized by pypi .. _changes_1-6-3: Version 1.6.3 — 2024-09-03 -------------------------- - feat: add BackendType repr - feat(_run_cmd): add Windows safe resolve_path - feat(_run_cmd): cmd str support - ci(branch-test-others): refresh .lnk rather than build package - ci(branch-test-others): fix requirement file suffix - fix(cli_igor): seed changelog add check file not found and missing start token - test: remove non-regression pytest.xfail .. _changes_1-6-2: Version 1.6.2 — 2024-08-31 -------------------------- - ci(coverage): update codecov/codecov-action to latest commit - ci(branch-test-others): add workflow for branches to test on MacOS and Windows .. _changes_1-6-1: Version 1.6.1 — 2024-08-22 -------------------------- - ci(python-nightly): try py312 and py313 tagged not nightly .. _changes_1-6-0: Version 1.6.0 — 2024-08-22 -------------------------- - fix(lock_toggle): recognize .in files options -c and -r - refactor(lock_toggle): enum.Enum to identify sets InFiles._files and InFiles._zeroes - refactor(lock_toggle): add .in file line pattern match functions - ci(python-nightly): tox run only tests folder - docs: add favicons 200x200 svg and 180x180 apple-touch-icon .. _changes_1-5-4: Version 1.5.4 — 2024-08-20 -------------------------- - docs(.gitattributes): inform git .inv are binary files - docs: add inventory for pluggy and setuptools - docs(linkcheck): fix broken links - docs: fix numerous minor issues - docs(code manual): toctree --> grid - style: carefully choose grid item icons .. _changes_1-5-3post0: Version 1.5.3.post0 — 2024-08-18 -------------------------------- - docs: add inventory so Sphinx recognize class packaging.version.Version .. _changes_1-5-3: Version 1.5.3 — 2024-08-18 -------------------------- - fix(version_semantic): edge cases pre+post. pre+post+dev and post+dev - docs: inform pypi docs available on both rtd and gh pages .. _changes_1-5-2: Version 1.5.2 — 2024-08-16 -------------------------- - ci(gh-pages): deploy with both branch and tag protection nonviable - ci(gh-pages): allow workflow dispatch .. _changes_1-5-1: Version 1.5.1 — 2024-08-16 -------------------------- - ci: add workflow gh-pages - ci: set concurrency group. quality docs higher priority than gh-pages .. _changes_1-5-0: Version 1.5.0 — 2024-08-16 -------------------------- - feat: upgrade dependencies sphinx-external-toc-strict zipp typing-extensions - fix(version_semantic): get_version recognize definition of release level ambiguous - fix: resolve dependency hell sphinx-external-toc-strict zipp typing-extensions - docs: add dependencies sphinx-design sphinx-tabs sphinx-favicon - docs: improve page elements appearance. Use card grid tabs - test: when missing dependencies build fail --> pytest.xfail .. _changes_1-4-0post0: Version 1.4.0post0 — 2024-08-14 -------------------------- - fix(config_settings): fix module import dotted path - feat: pipenv-unlock refresh and in plugin set dependency suffix to .lnk - fix(config_settings): catch and log warning on malformed toml exception - refactor: move BackendType.read --> TomlParser.read - refactor: add check is_package_installed. Remove redundant checks .. _changes_1-3-4: Version 1.3.4 — 2024-08-11 -------------------------- - docs: fix add requirement sphinx-copybutton .. _changes_1-3-3: Version 1.3.3 — 2024-08-11 -------------------------- - fix: fileinput module requires to print each line - docs: add extension sphinx-copybutton .. _changes_1-3-2: Version 1.3.2 — 2024-08-11 -------------------------- - fix: pypi requires tag version. Downgrade pip-tools to tag version .. _changes_1-3-1: Version 1.3.1 — 2024-08-11 -------------------------- - fix: pin latest development version of pip-tools .. _changes_1-3-0: Version 1.3.0 — 2024-08-11 -------------------------- - feat: .lock files post process paths absolute --> relative - docs(index): remove table of contents at bottom of page - docs(overview): hide page section title .. _changes_1-2-9: Version 1.2.9 — 2024-08-07 -------------------------- - docs: be explicit supported tested platforms - docs: add badge platforms .. _changes_1-2-8: Version 1.2.8 — 2024-08-07 -------------------------- - docs: tests confirm py313 support. Update pyproject.toml classifiers - docs: reorder badges - docs: add badges downloads implementations .. _changes_1-2-7: Version 1.2.7 — 2024-08-07 -------------------------- - ci(coverage): fix codecov-action commit sha - ci(testsuite): py314 not available yet .. _changes_1-2-6: Version 1.2.6 — 2024-08-07 -------------------------- - ci(python-nightly): upgrade ubuntu focal 20.04 --> jammy 22.04 - ci(workflows): actions commit sha instead of version tag - ci(workflows): resume cache python package - ci(tox): add gh section .. _changes_1-2-5: Version 1.2.5 — 2024-08-06 -------------------------- - ci(python-nightly): missing .lnk. build sdist to refresh .. _changes_1-2-4: Version 1.2.4 — 2024-08-06 -------------------------- - docs(pdf): missing index page. Move contents index --> overview - docs: add banner - docs: rewrite front page of docs - style: update project description .. _changes_1-2-3: Version 1.2.3 — 2024-08-06 -------------------------- - fix(wrap_infer_version): get package folder from env variable or Path.cwd - refactor: version accessible from package. rtd needs - ci(rtd): cease ignoring generated version file - ci(pre-commit): exclude version file - style: exclude version file from isort black flake8 - style: flake-pyi vs black gentlemenly tussle over trifles - style: decorator kwarg quoted str, mistaken for a doc string Y020 - docs(README): add badges .. _changes_1-2-2: Version 1.2.2 — 2024-08-05 -------------------------- - docs(conf.py): use version from version file otherwise version from snippet .. _changes_1-2-1: Version 1.2.1 — 2024-08-05 -------------------------- - fix(entrypoints): remove support for --version option - refactor: add module constants_maybe. Move constants.__version_app constants.__url__ - ci(tox-test): remove py314 - ci: build sdist to run build plugins to recreate generated files .. _changes_1-2-0: Version 1.2.0 — 2024-08-05 -------------------------- - style: watchmen Dr Manhatten stands by does nothing expresses academic curiousity - feat: add param is_only_not_exists. Create nonexistent version file during write - fix: version file is generated, git no track. During build, not exists, create it - fix: in build backend, lazy load plugins after ensuring existence of version file - fix(build plugins): subprocess cmd use absolute path - fix(wrap_infer_version): add reverse search for config file - refactor: remove package exports except exceptions - refactor: config_settings hack encapsulate in class ConfigSettings - tests(conftest): fixture finalize remove resources only on success - tests(conftest): add fixture to verify version file semantic version str - ci: missing requirements include .. _changes_1-1-2: Version 1.1.2 — 2024-08-02 -------------------------- - ci: fix terniary condition use single quotes not double quotes .. _changes_1-1-1: Version 1.1.1 — 2024-08-02 -------------------------- - ci: create github repository variable vars.DRAINSWAMP_SET_LOCK - ci: workflows bypass .lnk symlinks env variable LOCK_SUFFIX and SET_LOCK - ci(testsuite): refresh dependency locks .lnk before run tests .. _changes_1-1-0: Version 1.1.0 — 2024-08-01 -------------------------- - style: fantastic four helicopter jump skiing - feat: build backend support for DS_CONFIG_SETTINGS - fix(lock_toggle): py314 deprecation warning for pkgutil.find_loader - fix(mypy.in): add typing stub dependency types-setuptools - fix(pip.lock): resolve dependency conflict typing-extensions - docs(snip): fix param reference parsing issue - refactor(lock_toggle): sphinx friendly dataclass - ci: add .github workflows - ci(tox-test.ini): add separate tox file for running tests - test(conftest): remove pytest_plugins sphinx.testing.fixtures - docs(MANIFEST.in): remove exclude src/_version.py - docs(objects-python-missing): to inventory add entry for dataclasses.InitVar - docs(README.rst): remove non-vanilla ReStructuredText .. _changes_1-0-1: Version 1.0.1 — 2024-07-29 -------------------------- - style: little shop of horrors two dozen roses - docs: add donation procedure - docs: add closed source license procedure - docs: license from apache2 to agplv3+ - docs(MANIFEST.in): remove include lines - docs(LICENSE): move to base folder. In docs, symlink to base folder file .. _changes_1-0-0: Version 1.0.0 — 2024-07-25 -------------------------- - style: little shop of horrors N2O helmet - fix: require minimum setuptools>=70.0.0 version - feat: add entrypoint scm-version - feat: refresh symlink during sdist build or manually pipenv-unlock refresh - feat: native support for version file - feat: entrypoint setuptools.finalize_distribution_options use plugins - feat: setuptools thin wrapped build-backend - feat(drain-swamp): add tag command - ci(tox.ini): use symlink .lnk not .lock or .unlock - ci(gitignore): add to ignore .lnk symlinks - ci(gitignore): add to ignore rogue src/_version.py - refactor(setup.py): remove. Use entrypoint distutils.setup_keywords - refactor(parser_in): class TomlParser. reverse search path_file and d_pyproject_toml - refactor(_run_cmd): wrap subprocess.run return a tuple - test: from setuptools-scm, 5 fingers appropriate class WorkDir and pytest fixture wd - feat(check_type): add check click_bool - feat: sane fallback when before git init and no version file - fix(pep518_read): find_project_root remove lru_cache decorator - docs: do not show blank page after toc - docs: add make targets pdf-view and html-view - test(test_wrap_version_keyword): cleanup temporary version file - test: use resources teardown resources .. _changes_0-5-1: Version 0.5.1 — 2024-06-15 -------------------------- - style: little shop of horrors punchable dental hygienist - refactor: tool.drain-swamp rather than tool.sphinxcontrib-snip - fix(pipenv-unlock): remove ignore of additional_folders argument to unlock and lock - test(integration): click allow input as str only - docs: when to use: alpha, beta, post, and rc - docs: add section troubleshooting - docs: add section paid services - docs: add section api - docs: add section getting started - docs: add section why - style: edit project description .. _changes_0-5-0: Version 0.5.0 — 2024-06-10 -------------------------- - feat(pipenv-unlock): add command is_lock - feat(swamp-drain): add command cheats - refactor(entrypoints): py313+ importlib to ignore __package__. Use __spec__ - fix: click.Path(resolve_path=True) resolves relative path --> absolute path - test(pep366): run commands directly. Use only source code - test(pep366): integration test. Isolated from 1st run unit tests - refactor: retire igor.py .. _changes_0-4-0: Version 0.4.0 — 2024-06-07 -------------------------- - style: Little shop of horror motorcycle googles - feat(snip): infer snippet_co. When not provided and only one snippet - feat: list snippets - refactor: remove redundant entrypoint, sphinxcontrib-snip .. _changes_0-3-0: Version 0.3.0 — 2024-06-04 -------------------------- - style: little shop of horrors obedient girlfriend - fix: build package bomb when encounter ``.in`` files with -c lines - feat(pipenv-unlock): compile requirements .in --> .unlock - refactor: add constant SUFFIX_UNLOCK to not confuse .in and .unlock - refactor(snip): add Enum, ReplaceResult. Retire optional boolean .. _changes_0-2-0: Version 0.2.0 — 2024-05-28 -------------------------- - style: little shop of horrors overly dramatic water spout - feat(drain-swamp): add command, pretag. Sanitize semantic version str - refactor(igor.py): remove do_edit_for_release do_bump_version do_build_next do_pretag - ci(howto.txt): sanitize a semantic version str - ci(howto.txt): should be master, not main - refactor(igor.py): remove print_banner - style: package was renamed, in requirments .in files, refer to the new package name - refactor: add setuptool-scm as a dependency. Get the current version - refactor(version_semantic): private member prepend with single underscore - docs: inventory for setuptools-scm - docs: add doctests for _version.py. Explain pretag with examples - docs: show private members of version_semantic.py - docs: fix doctest which explain snippet usage - fix: get current version no longer update _version.py - feat(cli_igor): add command, current. Gets current version .. _changes_0-1-0: Version 0.1.0 — 2024-05-23 -------------------------- - style: little shop of horrors shrine candles - style: dentist keep shrine with candles. Building yet to burn down - feat: snippets technique extended to support optional snippet code - feat: build package with full semantic versioning support - feat: lock and unlock dependences - feat: update Sphinx docs/conf.py, NOTICE.rst, and CHANGES.rst .. scriv-end-here