Skip to main content

CLI client for judge.nitro-ai.org

Project description

Nitro CLI

CLI client for judge.nitro-ai.org.

Features

  • login using Playwright plus Nitro credentials
  • list contests with page controls
  • list tasks for a contest
  • view full task statements
  • submit solutions and wait for feedback
  • list submissions
  • inspect submission feedback/details
  • interactive shell mode when run without arguments

Requirements

  • Python 3.10+
  • Playwright is installed as a package dependency

Login

nitro-cli login opens a real browser session using Playwright to obtain Cloudflare clearance, then completes the Nitro login flow automatically.

Behavior:

  1. reuses saved session if still valid
  2. reuses saved cf_clearance when possible
  3. opens a browser if a fresh Cloudflare clearance is needed
  4. retries login automatically if the saved clearance expired

On first use, nitro-cli may install the Playwright Chromium browser.

Browser behavior:

  • headless by default, so no browser window flashes
  • to force a visible browser for debugging:
NITRO_BROWSER_HEADLESS=0 nitro-cli login

Example:

nitro-cli login --username MihneaStoica --password '...'

Installation

With pipx:

pipx install .

With pip:

python3 -m pip install .

For local development:

python3 -m pip install -e .

From PyPI:

pipx install nitro-ai-judge-cli

Usage

Direct commands:

nitro-cli login
nitro-cli contests
nitro-cli contests --page 2
nitro-cli contests --all-pages
nitro-cli tasks algolymp/algolymp-preojia-ix-x
nitro-cli task algolymp/algolymp-preojia-ix-x 1
nitro-cli submissions algolymp/algolymp-preojia-ix-x 1 --mode both
nitro-cli submission 3a009d767bd5 --org algolymp --comp algolymp-preojia-ix-x --task-id 1
nitro-cli submit algolymp/algolymp-preojia-ix-x 1 --output submission.csv --source solution.py --wait

Interactive shell:

nitro-cli

Example shell session:

contest list
contest list --page 2
contest list --all-pages
select 20
tasks
select 1
show
submit submission.csv solution.py --wait
submissions
submission 1

Shell commands:

help
exit | quit
back
login [username] [password]
status
contests
contest list [--all] [--page N] [--page-size N] [--all-pages]
contest select <index|org/slug>
contest show
tasks
task list
task select <index|id>
select <index|id>
show
submit <output.csv> [source.py] [--note TEXT] [--wait]
task show
task submit <output.csv> [source.py] [--note TEXT] [--wait]
submissions [--mode partial|complete|both]
task submissions list [--mode partial|complete|both]
submission <index|short-id|full-id>
submission view <index|short-id|full-id>
task submissions show <index|short-id|full-id>
set-final <index|short-id|full-id>
unset-final <index|short-id|full-id>

State

Login state is stored in:

~/.nitro-cli/state.json

Override with:

NITRO_STATE_DIR=/some/path nitro-cli login

Repo Notes

competition-frontend/ and competition-backend/ are not required for the published CLI.

Publishing

This repo includes a GitHub Actions workflow at .github/workflows/publish.yml.

Behavior:

  1. Builds the package on pushes, pull requests, and manual runs
  2. Runs twine check on built distributions
  3. Publishes to PyPI when you push a tag matching v*

Recommended release flow:

python3 -m pip install --upgrade build twine
python3 -m build
python3 -m twine check dist/*
git tag v0.1.0
git push origin main --tags

For PyPI trusted publishing, configure PyPI to trust this GitHub repository and the pypi environment.

Package name on PyPI: nitro-ai-judge-cli Command name after install: nitro-cli

Before publishing publicly, choose and add a license file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nitro_ai_judge_cli-0.1.0.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nitro_ai_judge_cli-0.1.0-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

File details

Details for the file nitro_ai_judge_cli-0.1.0.tar.gz.

File metadata

  • Download URL: nitro_ai_judge_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nitro_ai_judge_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9043a2b4160004b4334dedfa224588dddf7a515fbd99d00ef8d962aeb6973cd1
MD5 858afbd46969e9b09862b68f1349b1cc
BLAKE2b-256 a5ded78d84487a78f393bf4c9f21cd378d577d95640460b81d9f1a25507a6031

See more details on using hashes here.

Provenance

The following attestation bundles were made for nitro_ai_judge_cli-0.1.0.tar.gz:

Publisher: publish.yml on MihneaTeodorStoica/nitro-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nitro_ai_judge_cli-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for nitro_ai_judge_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ddb6caf6f5067d9bd563b7f9fe41780b7eee01914597aa515b82ff2b8cc0e702
MD5 fb7905d8fb478acf7e9fed4b4fbac3ef
BLAKE2b-256 7cfe9c1bbc655c5c3f35bec8ba08e8ae7dfdf1251cb925bf371f191afeafa373

See more details on using hashes here.

Provenance

The following attestation bundles were made for nitro_ai_judge_cli-0.1.0-py3-none-any.whl:

Publisher: publish.yml on MihneaTeodorStoica/nitro-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page