Skip to content

Release 2.0.0#20

Merged
The0mikkel merged 46 commits intomainfrom
develop
Mar 21, 2026
Merged

Release 2.0.0#20
The0mikkel merged 46 commits intomainfrom
develop

Conversation

@The0mikkel
Copy link
Member

@The0mikkel The0mikkel commented Feb 3, 2026

Update challenge-toolkit to v2.0.0.

The major change, is the change of entrypoint from src/ctf.py to src/challenge_toolkit/cli.py, which breaks the integreation from the challenge-ci and challenge repository, which currently uses the src/ctf.py to use the CLI, along with installing it as a submodule.

As the project is now officially available on PyPI as challenge-toolkit. Moving forward, the recommended way to use the system is via a global tool installation:

  • Using uv: uv tool install challenge-toolkit
  • Using pip: pip install challenge-toolkit

Once installed, you can invoke the system directly from your terminal using the command challenge-toolkit.

VaiTon and others added 20 commits February 3, 2026 21:18
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…yproject.yml (changes install setup) (#14)

This update changes the structure of the toolkit, and switches to require to be installed, rather than used directly.  
Please see the README.md for installation guide.

This update adds the following:

- Add pyproject.toml and uv.lock
- Move sources into src/challenge_toolkit
- Expose CLI as 'challenge-toolkit' via project.scripts
- Remove requirements.txt
- Modify imports to always start from package name
@The0mikkel The0mikkel self-assigned this Feb 3, 2026
VaiTon and others added 3 commits February 4, 2026 00:34
Run build and tests across Python 3.10–3.14
Run build and tests across Python 3.10–3.14
semantic-release-bot and others added 2 commits February 5, 2026 23:26
## [1.2.0-rc.1](v1.1.2...v1.2.0-rc.1) (2026-02-05)

### Features

* **ci:** add automated testing across python 3.10-3.14 ([#22](#22)) ([e689ebe](e689ebe))
* **release:** add automatic update of version in pyproject.toml ([7187d4a](7187d4a))
* switch package to be installed as `challenge-toolkit` through pyproject.yml (changes install setup)  ([#14](#14)) ([58a205e](58a205e))
* **test:** add pytest with uv ([#19](#19)) ([96fc932](96fc932))
semantic-release-bot and others added 2 commits March 21, 2026 19:45
## [1.2.0-rc.2](v1.2.0-rc.1...v1.2.0-rc.2) (2026-03-21)

### Features

* **release:** enable PyPI publishing in release configuration ([9d4334f](9d4334f))
semantic-release-bot and others added 2 commits March 21, 2026 20:25
## [1.2.0-rc.3](v1.2.0-rc.2...v1.2.0-rc.3) (2026-03-21)

### Bug Fixes

* **release:** update release workflow to correctly update uv.lock on new releases ([a6fccca](a6fccca))
BREAKING CHANGE: Project restructured for PyPI distribution and standard Python conventions.

The internal folder structure has been updated to align with modern Python packaging standards. The CLI entry point has moved from `src/ctf.py` to `src/challenge_toolkit/cli.py`.

**Action Required:**
The project is now officially available on PyPI as `challenge-toolkit`. Moving forward, the recommended way to use the system is via a global tool installation:

- Using uv: `uv tool install challenge-toolkit`
- Using pip: `pip install challenge-toolkit`

Once installed, you can invoke the system directly from your terminal using the command `challenge-toolkit`.
@The0mikkel The0mikkel changed the title Release 1.2.0 Release 2.0.0 Mar 21, 2026
## [2.0.0-rc.1](v1.2.0-rc.3...v2.0.0-rc.1) (2026-03-21)

### ⚠ BREAKING CHANGES

* Project restructured for PyPI distribution and standard Python conventions.

The internal folder structure has been updated to align with modern Python packaging standards. The CLI entry point has moved from `src/ctf.py` to `src/challenge_toolkit/cli.py`.

**Action Required:**
The project is now officially available on PyPI as `challenge-toolkit`. Moving forward, the recommended way to use the system is via a global tool installation:

- Using uv: `uv tool install challenge-toolkit`
- Using pip: `pip install challenge-toolkit`

Once installed, you can invoke the system directly from your terminal using the command `challenge-toolkit`.

### Documentation

* update installation guide ([49030f4](49030f4))
@The0mikkel The0mikkel marked this pull request as ready for review March 21, 2026 22:03
Copilot AI review requested due to automatic review settings March 21, 2026 22:03
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR packages the toolkit for a 2.0 release by migrating to standard Python packaging (pyproject/uv), moving the code into a challenge_toolkit package, and updating CI/release automation and tests accordingly.

Changes:

  • Introduces pyproject.toml + uv.lock (and removes src/requirements.txt) to support modern installs and builds.
  • Refactors CLI/commands to import from challenge_toolkit.* and adds a proper main() entrypoint.
  • Adds/updates test fixtures and CI workflows to run builds/tests via uv + pytest.

Reviewed changes

Copilot reviewed 15 out of 31 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
uv.lock Adds uv lockfile for reproducible installs.
pyproject.toml Defines package metadata, dependencies, and console script entrypoint.
pytest.toml Configures pytest import mode for the new package layout.
src/challenge_toolkit/cli.py Adds main() and wires subcommands via installed entrypoint.
src/challenge_toolkit/library/config.py Centralizes schema URLs, allowed values, and defaults.
src/challenge_toolkit/library/utils.py Adds filesystem helpers, slugify, and YAML/JSON loaders.
src/challenge_toolkit/library/data.py Implements Challenge/Page models, validation, and serialization/loading.
src/challenge_toolkit/library/generator.py Adds generator for challenge/page scaffold content.
src/challenge_toolkit/commands/challenge_creator.py Updates imports to packaged module paths.
src/challenge_toolkit/commands/template_renderer.py Updates imports to packaged module paths.
src/challenge_toolkit/commands/pipeline.py Updates imports to packaged module paths.
src/challenge_toolkit/commands/page.py Updates imports to packaged module paths.
src/challenge_toolkit/commands/slugify.py Updates imports to packaged module paths.
src/test.py Removes legacy direct test runner.
src/requirements.txt Removes legacy requirements file in favor of pyproject.toml.
tests/test_data.py Updates imports/path handling and expands/keeps unit tests.
tests/data/minimal-example.yml Adds minimal YAML fixture for load tests.
tests/data/full-example.yml Adds full YAML fixture for load tests.
tests/data/full-example.yaml Adds full YAML (alt extension) fixture for load tests.
tests/data/full-example.json Adds full JSON fixture for load tests.
tests/data/full-example-multi-flag.yml Adds multi-flag YAML fixture for load tests.
tests/data/full-example-multi-flag.json Adds multi-flag JSON fixture for load tests.
tests/data/full-example-multi-flag-object.yml Adds multi-flag-object YAML fixture for load tests.
tests/data/full-example-multi-flag-object.json Adds multi-flag-object JSON fixture for load tests.
README.md Updates installation and usage docs for packaged CLI + uv/pytest workflow.
.releaserc.json Adds semantic-release config for publishing and locking.
.github/workflows/release.yml Updates release workflow usage and secrets/plugins.
.github/workflows/ci.yaml Adds CI workflow to build and test with uv/pytest.
Comments suppressed due to low confidence (2)

tests/test_data.py:862

  • file_dir is a pathlib.Path, but these tests build file paths with an f-string containing .../{...}. On Windows this can produce mixed separators (e.g. C:\...\data/full-example.json). Prefer self.file_dir / self.json_file (and pass str(...) to Challenge.load if needed).
    tests/test_data.py:1189
  • The __main__ guard message tells contributors to run test.py, but this PR deletes src/test.py and the repo now documents running tests via pytest/uv run pytest. Update or remove this message to avoid pointing to a non-existent entry point.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@The0mikkel The0mikkel merged commit 054ad61 into main Mar 21, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add automated testing of CLI tool Add pyproject.toml to repository Add uv support Add python CLI package release

4 participants