Skip to main content

Kattis-CLI

Kattis CLI - download, test and submit Kattis problems using CLI or TUI. Inspired by the official Kattis CLI: https://github.com/Kattis/kattis-cli

Tests PyPI version PyPI - Downloads PyPI - License

Quick Tour of Kattis-CLI

Kattis-CLI

Requirements

  • Python 3.8+ (PyPy preferred as Kattis uses PyPy to run your Python3 solutions)
  • Kattis account

Windows

  • Use Command Line or PowerShell
  • Make sure python is in your PATH
    • Install Python from Windows Store
  • if you get codec error while running kattis-cli, run the following command in Command Prompt:
python --version
chcp 65001

Installation

If you've Python version 3.8 or higher, you can skip creating virtual environment. If you wish to create a virtual environment, see intructions below.

Create and activate virtual environment using venv

Create and activate virtual environment using conda

Install Kattis-cli

  • activate virtual environment if you've created one for kattis-cli
  • run the following command in Command Prompt or PowerShell
pip install kattis-cli
python -m pip install kattis-cli
kattis --version
  • on Windows add the path shown in the output of the above command to your PATH environment variable

Update/Upgrade Kattis-CLI

  • remove or rename .kattis-cli.toml file in your home directory
  • activate virtual environment if you've created one for kattis-cli
kattis --version
pip install kattis-cli --upgrade
python -m pip install kattis-cli --upgrade
  • on Windows add the path shown in the output of the above command to your PATH environment variable

Kattis configuration

  • run the following command and enter your Kattis credentials
  • follow the instructions provided in the terminal
kattis setup

Manual Configuration

  • see SETUP.md for detailed instructions to setup kattis-cli

Usage

kattis <command> [options]
kattis --help
kattis tui # get into text user interface mode

Commands

Download a problem sample files and it's metadata

Problem id

kattis get <problem_id>

Get problem id from URL

Display problem metadata

cd <problem_id>
kattis info

Problem info

Creating project template

  • create project template files for a given programming language
  • src style default templates are created in the home directory under .kattis-templates folder
  • you can overwrite/create new templates following the structure provided kattis_templates
  • local languages codes supported are:
    • python3
    • c++
    • java
    • c
    • nodejs
    • bash
kattis template --help
# create python3 project template for cold problem
kattis template -l python3 -p cold -s

Test a solution locally

Test

  • currently the following languages have been tested: Python 3, C++, NodeJS, C, Java, Bash
  • make sure CLI compilers are in your PATH
  • make sure python3 files have first line shebang: !/usr/bin/env python3
    • or have extensions .py3
  • make sure bash files have first line shebang: !/usr/bin/env bash
    • or have extension .sh
  • update the .kattis-cli.toml file in your home directory to add more languages
  • see kattis_cli/.kattis-cli.toml file for example.
cd <problem_id>
kattis test # for exact comparison of answers (works with string and int)
kattis test -a 6 # Answer accepted upto 6 decimal places of accuracy

Testing floating point results

  • for floating point ouput, problem provides the tolerance or accuracy upto certain decimal points
  • one can use -a <N> switch after kattis test command to provide the decimal places of accuracy
  • e.g., the following command checks for accuracy upto 6 decimal points or absolute error upto $10^-6$
kattis test -a 6

Submit a problem

  • make sure you've configured kattis-cli
kattis setup
  • see live results right on the terminal
cd <problem_id>
kattis submit

Result

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Please make sure to update tests as appropriate. Adding support for more languages is highly appreciated.

Using this Repo

  • clone this repo
  • create virtual environment with pypy 3.8 or higher
  • using conda the following command creates kattis virtual environment with pypy3.8
git clone git@github.com:rambasnet/kattis-cli.git
cd kattis-cli
pip install poetry
poetry install

Using conda and virtual environment

conda create -c conda-forge -n kattis pypy python=3.8
conda activate kattis
  • install dependencies
pip install -r requirements.txt
  • run the following command to install kattis-cli from this repo on Mac/Linux
make
./build.sh
pip install dist/kattis_cli-x.x.x-py3-none-any.whl --force-reinstall

Using Docker

  • clone this repo
  • run the following command to build and run the Dockerfile provided in this repo
  • if using Windows, run the following command in git-bash Terminal
docker-compose up -d
docker exec -it kattis-cli zsh

Metadata

Release files for kattis-cli 1.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kattis-cli 1.3.0
File Size Uploaded
kattis_cli-1.3.0.tar.gz 29.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for kattis-cli 1.3.0
File Interpreter ABI Platform
kattis_cli-1.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 69.1 kB

Release files / kattis_cli-1.3.0.tar.gz

Download URL kattis_cli-1.3.0.tar.gz
Size 29.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a8cb3b64eff2c7231e84a0195b4ac12ddfef9d3a8835b4fee4ac63600db759d7
BLAKE2b-256 checksum
How to use checksums
8b6f017d29832e54b5bca5ddcd50666d75c19277a4f779168b2a9ad43900a5f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 PyPy/7.3.20 Linux/6.10.14-linuxkit

Release files / kattis_cli-1.3.0-py3-none-any.whl

Download URL kattis_cli-1.3.0-py3-none-any.whl
Size 40.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a379416142f233926ef42552aada3470291c0e78fe2f4f0512b5826d02c5c459
BLAKE2b-256 checksum
How to use checksums
d994824fc210a21c01e6e89d3f43f9232a570c997f348733f365d8b54cb8b51a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 PyPy/7.3.20 Linux/6.10.14-linuxkit

Release history Release notifications | RSS feed

This release

1.3.0 This release

2 release files

1.2.9

2 release files

1.2.8

2 release files

1.2.7

2 release files

1.2.6

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.1.17

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

3 release files

0.1.0

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page