From 71160454de707915265a368ead2da3894b013ef5 Mon Sep 17 00:00:00 2001 From: SimonTarara62 <33222802+SimonTarara62@users.noreply.github.com> Date: Mon, 15 Jun 2026 19:53:12 +0300 Subject: [PATCH 1/4] test: guard PyPI discovery metadata (classifiers, keywords, urls) --- tests/test_packaging_metadata.py | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 tests/test_packaging_metadata.py diff --git a/tests/test_packaging_metadata.py b/tests/test_packaging_metadata.py new file mode 100644 index 0000000..932ea07 --- /dev/null +++ b/tests/test_packaging_metadata.py @@ -0,0 +1,33 @@ +"""The published distribution must carry discovery metadata (classifiers, +keywords). These feed PyPI search and Libraries.io. Reads the *installed* +distribution metadata, so run `pip install -e .` after changing pyproject.toml +to refresh editable metadata before this test will see new fields.""" + +from importlib import metadata + +DIST = "capitalcom-cli" + +EXPECTED_CLASSIFIERS = { + "Environment :: Console", + "Intended Audience :: Financial and Insurance Industry", + "Topic :: Office/Business :: Financial :: Investment", + "Programming Language :: Python :: 3.12", +} + + +def test_expected_classifiers_present() -> None: + classifiers = set(metadata.metadata(DIST).get_all("Classifier") or []) + missing = EXPECTED_CLASSIFIERS - classifiers + assert not missing, f"missing classifiers: {sorted(missing)}" + + +def test_expected_keywords_present() -> None: + keywords = metadata.metadata(DIST).get("Keywords", "") + assert "capital.com" in keywords + assert "trading" in keywords + + +def test_expected_project_urls_present() -> None: + urls = metadata.metadata(DIST).get_all("Project-URL") or [] + labels = {entry.split(",", 1)[0].strip().lower() for entry in urls} + assert {"documentation", "changelog", "source"} <= labels From a42bcfcfbc3e9656814b38280b4b13a1bb31099d Mon Sep 17 00:00:00 2001 From: SimonTarara62 <33222802+SimonTarara62@users.noreply.github.com> Date: Mon, 15 Jun 2026 19:54:42 +0300 Subject: [PATCH 2/4] build: add PyPI keywords, trove classifiers, and project URLs --- pyproject.toml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index d06c100..5c21368 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,6 +6,33 @@ authors = [{name = "Simon Tarara"}] readme = "README.md" requires-python = ">=3.10" license = {text = "Apache-2.0"} +keywords = [ + "capital.com", + "trading", + "cfd", + "broker", + "fintech", + "market-data", + "cli", + "sdk", + "async", + "websocket", + "finance", +] +classifiers = [ + "Development Status :: 4 - Beta", + "Environment :: Console", + "Intended Audience :: Developers", + "Intended Audience :: Financial and Insurance Industry", + "License :: OSI Approved :: Apache Software License", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business :: Financial :: Investment", + "Topic :: Utilities", +] dependencies = [ "typer>=0.12.0", @@ -33,6 +60,9 @@ capctl = "capital_cli.cli.app:run_cli" [project.urls] Homepage = "https://github.com/SimonTarara62/capitalcom-cli" +Documentation = "https://github.com/SimonTarara62/capitalcom-cli#readme" +Changelog = "https://github.com/SimonTarara62/capitalcom-cli/blob/main/CHANGELOG.md" +Source = "https://github.com/SimonTarara62/capitalcom-cli" Issues = "https://github.com/SimonTarara62/capitalcom-cli/issues" [build-system] From 7a16296ea5c9f2f5c6b7e2e38e167bc6f4e15bc6 Mon Sep 17 00:00:00 2001 From: SimonTarara62 <33222802+SimonTarara62@users.noreply.github.com> Date: Mon, 15 Jun 2026 19:59:41 +0300 Subject: [PATCH 3/4] chore: release 0.6.2 (metadata enrichment) --- CHANGELOG.md | 11 ++++++++++- capital_cli/__init__.py | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5003533..ff96cf9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,14 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +## [0.6.2] - 2026-06-15 + +### Added +- Richer PyPI metadata: search **keywords**, trove **classifiers** (audience, + topic, supported Python versions), and `Documentation`/`Changelog`/`Source` + project URLs. Improves discoverability on PyPI and Libraries.io. No API or + behavior changes. + ## [0.6.1] - 2026-06-15 ### Changed @@ -130,7 +138,8 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Persistent state for trade previews and the daily order counter. - Documentation: getting-started, use cases, troubleshooting, contributing. -[Unreleased]: https://github.com/SimonTarara62/capitalcom-cli/compare/v0.4.0...HEAD +[Unreleased]: https://github.com/SimonTarara62/capitalcom-cli/compare/v0.6.2...HEAD +[0.6.2]: https://github.com/SimonTarara62/capitalcom-cli/compare/v0.6.1...v0.6.2 [0.4.0]: https://github.com/SimonTarara62/capitalcom-cli/compare/v0.3.0...v0.4.0 [0.3.0]: https://github.com/SimonTarara62/capitalcom-cli/compare/v0.2.0...v0.3.0 [0.2.0]: https://github.com/SimonTarara62/capitalcom-cli/compare/v0.1.0...v0.2.0 diff --git a/capital_cli/__init__.py b/capital_cli/__init__.py index b6a6b22..a2a5ee0 100644 --- a/capital_cli/__init__.py +++ b/capital_cli/__init__.py @@ -1,3 +1,3 @@ """Capital.com command-line client.""" -__version__ = "0.6.1" +__version__ = "0.6.2" From 708801ebda555a28fca22c11e984d16edc798fcd Mon Sep 17 00:00:00 2001 From: SimonTarara62 <33222802+SimonTarara62@users.noreply.github.com> Date: Mon, 15 Jun 2026 20:00:13 +0300 Subject: [PATCH 4/4] docs: add distribution registry tracker + Terminal Trove submission --- docs/distribution.md | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 docs/distribution.md diff --git a/docs/distribution.md b/docs/distribution.md new file mode 100644 index 0000000..e8f31f9 --- /dev/null +++ b/docs/distribution.md @@ -0,0 +1,38 @@ +# Distribution & registries + +Where `capitalcom-cli` is published, and prepared text for directories that need +a manual/editorial submission. Curated *awesome-list* targets live separately in +[awesome-submission.md](awesome-submission.md). + +## Live channels +- **PyPI** — https://pypi.org/project/capitalcom-cli/ (`pipx install capitalcom-cli`) +- **Homebrew tap** — `brew install SimonTarara62/tap/capctl` + (repo: https://github.com/SimonTarara62/homebrew-tap) +- **Libraries.io** — passive; ingests PyPI metadata automatically. + +## Terminal Trove — prepared submission (submit manually) + +Terminal Trove (https://terminaltrove.com) is an editorial directory of terminal +tools. Submit via its "Submit a tool" form. **This is an outward-facing post — +done by the maintainer, not automated.** Ready-to-paste content: + +- **Name:** capctl +- **Category:** CLI +- **Tagline:** Unofficial, safety-first command-line client (and async Python + SDK) for the Capital.com Open API — market data, guarded order execution, and + real-time streaming. +- **Homepage / repo:** https://github.com/SimonTarara62/capitalcom-cli +- **Docs:** https://github.com/SimonTarara62/capitalcom-cli#readme +- **Install:** + - `pipx install capitalcom-cli` + - `brew install SimonTarara62/tap/capctl` +- **License:** Apache-2.0 +- **Language:** Python (3.10+) +- **Demo/screenshot:** reuse the `capctl market search "gold"` table from the + README, or record an asciinema of `market search` → `trade preview-position`. +- **Disclaimer (include verbatim):** Unofficial. Not affiliated with, endorsed + by, or sponsored by Capital.com. + +## Deferred (per spec — revisit on demand/traction) +Homebrew-core, Docker/GHCR/Docker Hub, conda-forge, AUR, Nixpkgs, winget, Scoop, +Chocolatey, best-of-python, awesome-fintech.