Vertopal CLI v2.0.0
Note
This version was published to PyPI but no binary build using GitHub Actions was created.
2.0.3 is the latest patch release and should be preferred.
📦 Migration Guide (from 1.x to 2.0.0)
If you are upgrading from Vertopal CLI 1.x, please review and apply the following changes to ensure a smooth transition:
-
Reconfigure private credentials
-
The configuration key for the application ID has changed from
api.appidtoapi.app. -
You must update your stored credentials; otherwise, the program will raise an
InvalidCredentialErrorexception. -
New syntax (v2.0.0+):
vertopal config api.app "your-app-id" api.token "your-security-token"
-
Old syntax (pre‑2.0.0):
vertopal config --app "your-app-id" --token "your-security-token"
-
-
Note the new public default credential
- Vertopal CLI now ships with a built‑in, non‑authenticated credential (
app: free,token: FREE-TOKEN) so you can start using it immediately after installation. - This credential is free but subject to daily rate limits. For production workloads, configure your private credentials as shown above.
- Vertopal CLI now ships with a built‑in, non‑authenticated credential (
For full details, see the Breaking Changes and Added sections below.
🚨 Removed (Breaking Changes)
-
Dropped support for Python 3.7 and 3.8 — the package now requires Python 3.9 or later (see
pyproject.toml). -
Removed support for legacy import/layout patterns; the project now uses the
src/package layout as the canonical layout. -
Removed several legacy public symbols previously exported from the package root to provide a smaller, stable public surface (see
vertopal/__init__.py). -
Removed the top-level re-export of internal API classes. Consumers should import low-level clients directly from their modules (for example
vertopal.api.v1.API). -
Removed several command-line flags from the
vertopalcommand:--app,--token,--overwrite, and--silent. -
Configuration key changed — the application ID is now stored under the INI-style key
api.appin the user configuration file (previouslyapi.appid).
Users upgrading from earlier versions must reconfigure their private credentials to continue using them.New syntax (v2.0.0+):
vertopal config api.app "your-app-id" api.token "your-security-token"
Old syntax (pre‑2.0.0):
vertopal config --app "your-app-id" --token "your-security-token"
The old flags are no longer supported. See also the new public default credential in the Added section.
✨ Added
- Improvements to the
vertopalCLI (seevertopal convert --help):- Bulk conversion support: accept files, directories, globs and brace/range patterns (e.g.
{a,b},{1..5},**/*). - Read from
stdinby using-as an input source. - Write to
stdoutby passing--output -. - Accept a file list as input and override output filename or output directory per invocation.
- Recursive directory traversal and exclude-by-pattern support.
- Filter inputs by modification date using an ISO 8601
--modified-sincefilter.
- Bulk conversion support: accept files, directories, globs and brace/range patterns (e.g.
- Added credential management to centralize application ID and security token handling (see
vertopal/api/credential.py). - Introduced a new
clisubpackage and refactored command managers for clearer separation of concerns (seevertopal/cli). - Reworked the CLI entry point and argument parser for clearer help, subcommands, and argument validation (see
vertopal/vertopal.py). - Added
ReadableandWritableI/O protocols and three adapter modules: file, in-memory, and stdio for consistent I/O abstractions (seevertopal/io/protocols.py, andvertopal/io/__init__.py). - Added structured API response wrappers and richer helpers to the v1 client to simplify caller code (vertopal/api/v1.py).
- Added a centralized
settingsmodule,enums,types, andPrismterminal styling helper for consistency across the codebase (seevertopal/settings.py,vertopal/enums.py,vertopal/types.py, andvertopal.utils.prism). - Added a public default credential to simplify first-run experience: the CLI ships with a non-authenticated, limited credential (app:
free, token:FREE-TOKEN) so users can try the service without creating an account. This credential is intended for personal testing and evaluation and is subject to daily rate limits; production workloads should configure a private credential in the user config.
🛠 Changed
- Moved terminal and CLI internals into the new
clisubpackage; command registration and adapter responsibilities were reorganized into dedicated manager modules (seevertopal/cli). - Converted API client methods to return lightweight, structured response wrappers rather than raw dicts/tuples to improve ergonomics and error handling (see
vertopal/api/v1.py, andvertopal/utils/data_wrappers.py). - Stabilized packaging and metadata to the
src/layout and modern build metadata (seepyproject.toml, andsetup.py). - Moved API exception types into the top-level
vertopal.exceptionsmodule and simplified exception usage across modules. - Relocated the build helper into
tools/build.pyfor clearer separation of tooling code. - Reworked the configuration module to use a singleton
Configand safer load/write semantics (seevertopal/utils/config.py). - Redesigned
vertopal.api.v1.APIto be an instantiable client object rather than a module-level static; this enables per-instance configuration and better testability. - Updated the
vertopal configsubcommand: the command's interface and behavior for modifying the user configuration file has been redesigned. It now exposes clearer interactive and non-interactive options, safer write semantics, and explicit flags for common keys (seevertopal config --help).
🐛 Fixed
- Fixed multiple resource leaks and inconsistent timeout usages in HTTP calls; timeouts are now applied uniformly for requests, uploads, and downloads.
Full Changelog: v1.1.0...v2.0.0