Skip to main content

codingame-tools

CI PyPI version Python versions License: MIT

Solve CodinGame puzzles and author CodinGame contributions from your own editor, under version control — instead of in the browser IDE.

Highlights

  • Browser login — CodinGame has no API tokens, so cg login drives a real browser and captures the session. Works with any sign-in method, including third-party identity providers. Credentials are stored per profile; a headless --manual path exists for CI.

  • Async client with structured API wrappersCgClient exposes 22 service endpoints as typed methods, with dataclasses for every request and response, plus a helper layer that handles retries and the CDN timeouts that heavy operations provoke.

  • Puzzle manager — a local working directory for solving a puzzle: import it, edit one file, run its test cases, submit. Language switching restores your own previous code, since CodinGame stores your latest source per language.

  • Contribution manager — a local working directory for a puzzle you're writing. data/ is a real git working tree with main/server/version-data branches, so syncing with CodinGame is a genuine fetch/rebase/merge workflow — conflicts included — rather than a one-shot overwrite.

  • A CLI exposing all of it — 148 commands, from the two workflow groups down to one subcommand per raw API method. Nothing is library-only.

  • Local validation — run your solution against real test cases with no network access at all. Output comparison reproduces CodinGame's own rule exactly, measured against the live service, so a local pass predicts a remote one.

  • VS Code integration, including debugging — generated run/debug configuration, breakpoints in your solution, and a test-case picker. Compiled languages build, run and debug inside Docker, so C++ works with no local toolchain at all.

  • The protocol, documented — CodinGame publishes no API spec. Every endpoint here was reverse-engineered, wrapped in dataclasses, and documented with what it actually does — including the parts that contradict what the name suggests. Where behaviour was confirmed by probing the live service, the docstring says so.

  • Fully typedmypy clean across the package and its tests, py.typed shipped.

Installation

pip install codingame-tools

Quick start

cg login                          # opens a browser, saves credentials
cg whoami

cg puzzle import temperatures     # pull a puzzle into ./puzzle
$EDITOR puzzle/solution.py
cg puzzle play                    # run locally against downloaded test cases -- no network
cg puzzle submit                  # graded submission

Authoring a contribution:

cg contribution create ./my-puzzle "My Puzzle"   # purely local; nothing exists server-side yet
$EDITOR my-puzzle/data/statement.cgmd
cg contribution play                             # validate locally
cg contribution push                             # now it exists

Or use the client directly:

import asyncio
from codingame_tools.client import CgClient

async def main() -> None:
    async with CgClient() as client:
        for c in await client.services.contribution.get_all_pending_contributions():
            print(c.public_handle, c.title)

asyncio.run(main())

Documentation

The first link is relative in the repository and is rewritten to an absolute, tag-pinned URL when a release is cut, so it resolves both on GitHub and on PyPI, and always points at the docs as they were for that version.

Caveats

This talks to a private API by imitating the web client. It will occasionally break when CodinGame changes something, usually as a clear error naming the field that moved. And some operations are irreversible or publicly visible — submitting creates a permanent graded submission, pushing updates real content, and running a server-side test durably overwrites your saved code. Commands that do any of that say so.

Supported Python versions

Python 3.10 through 3.14.

License

MIT. See LICENSE.


For development and release workflow, see CONTRIBUTING.md.

Download files

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

Source Distribution

codingame_tools-1.0.0.tar.gz (359.4 kB view details)

Uploaded Source

Built Distribution

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

codingame_tools-1.0.0-py3-none-any.whl (358.1 kB view details)

Uploaded Python 3

File details

Details for the file codingame_tools-1.0.0.tar.gz.

File metadata

  • Download URL: codingame_tools-1.0.0.tar.gz
  • Upload date:
  • Size: 359.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for codingame_tools-1.0.0.tar.gz
Algorithm Hash digest
SHA256 faeec77ec5ca2a44b5ee8360fcb9c63e76c0fef1a0eed5ee3a73505b248831ba
MD5 6ce4dab7d508d52374dcbb0bd8d04899
BLAKE2b-256 212671a82a2c379e6e9ef049c769cce16c3dba0cb01387e51ef3d3605aba20b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for codingame_tools-1.0.0.tar.gz:

Publisher: publish.yml on mckelvie-org/codingame-tools

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

File details

Details for the file codingame_tools-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: codingame_tools-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 358.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for codingame_tools-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 34ee5bfca5bb20ac555f0994b860150304ae71af2d79bc17bdcb044b116bd690
MD5 cacde334391376c87f934704e59e3916
BLAKE2b-256 2ce4611c493b9160b58741d46732c85a48b8c77448740ffbdf262b817765f465

See more details on using hashes here.

Provenance

The following attestation bundles were made for codingame_tools-1.0.0-py3-none-any.whl:

Publisher: publish.yml on mckelvie-org/codingame-tools

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

Release history Release notifications | RSS feed

2.0.3

2 files

2.0.0

2 files

1.0.5

2 files

1.0.3

2 files

This release

1.0.0 This release

2 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