Tags: IEDB/NGArgParser
Tags
Release 0.3.5
- An unconfigured project now exits 1 with the project root and the `./configure` command to run, instead of `TypeError: expected str, bytes or os.PathLike object, not NoneType` from `pathlib`
- `src/core/set_pythonpath.py` guards `os.getenv('APP_ROOT')` before constructing `Path(...)`
- Freshly extracted build tarballs always hit this: `build.sh`'s `"$PROJECT_ROOT"/*` glob skips dotfiles, so `.env` is never staged, and the build never runs `configure`
- An empty `APP_ROOT=` is caught too; it previously yielded `Path('')` and a silently wrong `libs/` path
- Existing projects pick this up via `cli sync` / `cli upgrade`
- README documents that `.env` never ships and that a hand-extracted tarball must be configured before use; the `!.env` line in the `.distignore` section is marked as syntax-only
- README version badge and pinned install example bumped to 0.3.5 (both were four releases behind), with `tests/test_readme_version.py` asserting they track `pyproject.toml` from now on
Release 0.3.4 - Fix: an exclusion file (.distignore / legacy do-not-distribute.txt) whose last line lacks a trailing newline no longer silently drops that rule - build.sh terminates the user's exclusion file before appending the forced contract rules (!README, !deploy/, !deploy/install.sh), so the final pattern can no longer fuse with !README - Add a regression test covering an exclusion file with no trailing final newline
v0.3.3 - `cli upgrade --check` now distinguishes an unreachable remote from a remote with no releases - Network/timeout failures print "Couldn't reach the remote" and exit 2, instead of the misleading "No semver tags on remote" - A real `cli upgrade` no longer silently installs `master` when the tag lookup fails; it aborts - Added `_RemoteUnavailable` + `strict` mode to `_latest_release_tag`; resolved tag threaded through to avoid a duplicate ls-remote - First tests for the version-check logic (tests/test_upgrade.py), network monkeypatched
v0.3.2 - Tarball exclusion file now has exact .gitignore semantics (wildcards, dir-only, `!` negation, anchoring, `**`, at every depth) - Built-in `.*` baseline: hidden files excluded by default, re-include with `!`; `.git/` and `build/` always excluded; `README` and `deploy/install.sh` always included - Renamed to `.distignore` at the project root; `scripts/do-not-distribute.txt` still honored as an alias - Build tooling (build.sh, hooks.sh, exclusion file) no longer leaks into tarballs - First behavioral tests for build.sh; git installed in CI and required at build time
v0.3.1 - `cli upgrade` now reliably reminds you to run `cli sync` afterward. - Inside a stale project the reminder names both versions and points at `cli sync`; from anywhere else it prints a generic "`cli upgrade` updates the CLI, not your projects" reminder. - The reminder now fires when upgrading from outside a project, and when the tool is already current but the project is behind. - Local-checkout installs (`cli upgrade --ref .`) are covered too. - Clearer, jargon-free reminder wording. - `--help` contact block now points at the IEDB Discussion Forum (https://discuss.iedb.org) instead of the help@iedb.org email.
v0.3.0 — tsv-first result output via shared core/result_writer serial…
…izer
- Result output is now tsv-first and framework-owned: predict's --output-prefix/-o and --output-format/-f moved into the base class; -f is a real {tsv,json} choice (predict defaults tsv, postprocess json), the metavar is dropped so usage renders {tsv,json}, and the default shows inline.
- Add core/result_writer.py (write_results): renders the standard result envelope to tsv or json, to stdout or file(s), with --- <type> --- banners and per-table <prefix>.<type>.tsv files for multi-table results; warnings/errors routed to stderr.
- Wire the serializer into cli generate and cli sync so it propagates to existing projects.
- Reference templates (run_aa_counter.py, run_app.py, both postprocess.py) now serialize via core.result_writer.write_results.
- Fix the predict -f help/behaviour mismatch (help said tsv while the code defaulted to json).
- Remove the pseudo `table` output format / terminal table rendering; -f accepts only {tsv,json}.
- BREAKING: tools that declare their own predict -o/-f must remove them after `cli sync` (now inherited) and switch to core.result_writer; use update_arguments(...) to keep a custom default.
- Add `cli upgrade` (alias `u`): standalone self-update to the latest… … GitLab release tag; works anywhere, never touches project files. `--check` reports installed-vs-latest; `--ref <tag/branch/sha>` pins a version (`--ref .` / `<path>` installs a local checkout); `--dev` tracks master - `cli upgrade` is uv-tool aware: uses `uv tool install`, `python -m pip`, or `uv pip install` per environment — works on uv-tool installs, pip venvs, and pip-less uv-managed venvs - Add a passive update notifier: any `cli` invocation (incl. `--version` / `--help`) occasionally prints a one-line "newer version available" notice — throttled 1/day, cached, interactive-TTY only, suppressed in CI / when piped / during `cli upgrade` / via NGARGPARSER_NO_UPDATE_CHECK=1 - After `cli upgrade` inside a scaffolded project that's behind, nudge to run `cli sync` - `cli sync` and `cli upgrade` share one upgrade path; `cli sync` behavior unchanged - Fix: build no longer breaks when `TOOL_VERSION` contains a slash (e.g. a `feature/foo` branch); `build.sh` sanitizes `/` -> `-` - Remove deprecated `cli config-paths` (and its `c` alias) — use `cli deps`
- Fix `cli sync` (`cli s`) self-upgrade failing with "No module named… … pip" on `uv tool` installs - Detect uv-managed env (via sys.prefix) and upgrade via `uv tool install --force --reinstall` - Fall back to `python -m pip` for pip / pipx installs - On failure, print the manual `uv tool install` command and the `cli s --no-upgrade` escape hatch
- cli sync (cli s) now self-upgrades the installed ngargparser packag… …e and re-execs before syncing project templates; a single cli s invocation handles both halves of a version bump (no more manual pip install --upgrade step). - cli sync --ref selects the upgrade source. Default is 'latest', resolved via git ls-remote --tags to the highest semver tag on the remote (falling back to master if no tags exist). Pass a branch/tag/sha (e.g. --ref v0.2.0) to override. - cli sync --dev: shortcut for --ref master; pulls the bleeding-edge tip of master instead of the latest tagged release. Overrides --ref if both are given. - cli sync --no-upgrade (and NGARGPARSER_NO_SELF_UPGRADE=1): skip the self-upgrade step for offline / CI runs. NGARGPARSER_UPGRADE_URL overrides the full upgrade URL.
- Adopted uv across framework and scaffolds; uv tool install is now t… …he primary install path. - cli config-paths renamed to cli deps; added scriptable add/remove/list. Old name kept as deprecated alias. - cli generate is now non-interactive. - scripts/build.sh moved to scripts/core/; scripts/dependencies.sh renamed to scripts/hooks.sh. cli sync migrates legacy projects. - Build defaults to copy; symlinks are opt-in via EXCLUDE_FROM_BUILD_SYMLINK. - Added deploy/install.sh scaffold for nxg-tools-deployments. - Added [tool.ngargparser] scaffold_version stamp; cli sync keeps it current. - Framework packaging migrated from setup.py/setup.cfg to pyproject.toml. - Removed build.conf knobs: BUILD_ENTRY_SCRIPT, BUILD_COPY_TOPLEVEL_FILES, APP_NAME_NORMALIZED, TOOL_NAME. - Added Prerequisites section and CHANGELOG.md to the README. - Project URLs (pyproject.toml Homepage, README badge and install examples, scaffolded README badge generators, and the templates/hooks.sh nxg-tools example) now point at gitlab.lji.org/iedb/tools/tools-redesign/...; previously had stale github.com/IEDB URLs.
PreviousNext