Skip to main content

codeforcespy

PyPI Python 3.13+ License: GPL-3.0 Type Safe

A fast, type-safe Python wrapper for the Codeforces API with sync and async support.

codeforcespy

Features

  • Sync & Async - Full support for both blocking and non-blocking clients
  • Type Safe - 100% typed, no Any, passes strict pyright
  • Fast - Built on httpx and msgspec for high performance
  • Complete - Covers all public Codeforces API endpoints

Installation

pip install codeforcespy

Quick Start

Async Client (Recommended)

import asyncio
import codeforcespy.processors

async def main():
    client = codeforcespy.processors.AsyncMethod()
    
    try:
        # Get user info
        users = await client.get_user(handles="tourist")
        print(f"{users[0].handle}: {users[0].rating}")
        
        # Get recent contests
        contests = await client.get_contest_list()
        print(f"Found {len(contests)} contests")
    finally:
        await client.close()

asyncio.run(main())

Sync Client

import codeforcespy.processors

client = codeforcespy.processors.SyncMethod()

try:
    users = client.get_user(handles="tourist")
    print(f"{users[0].handle}: {users[0].rating}")
finally:
    client.close()

API Methods

User

Method Description
get_user(handles) Get user profile(s) by handle
get_user_rating(handle) Get rating history
get_user_status(handle, count) Get recent submissions
get_user_friends(only_online) Get friends list (auth required)
get_user_blog_entries(handle) Get user's blog posts
get_user_rated_list(...) Get rated users list

Contest

Method Description
get_contest_list(of_gym) List all contests
get_contest_standings(...) Get contest standings
get_contest_status(contest_id) Get contest submissions
get_contest_hacks(contest_id) Get contest hacks
get_contest_rating_changes(contest_id) Get rating changes

Problemset

Method Description
get_problemset_problems(tags) Get problems by tags
get_problemset_recent_status(count) Get recent submissions

Blog & Recent

Method Description
get_blog_entry_view(blog_entry_id) Get blog post
get_blog_entry_comments(blog_entry_id) Get blog comments
get_recent_actions(max_count) Get recent platform activity

Authentication

For authenticated endpoints (friends, private data):

client = codeforcespy.processors.AsyncMethod(
    enable_auth=True,
    auth_key="YOUR_API_KEY",
    secret="YOUR_API_SECRET",
)

Get your API key at codeforces.com/settings/api.

Error Handling

import codeforcespy.errors
import codeforcespy.processors

client = codeforcespy.processors.SyncMethod()

try:
    users = client.get_user(handles="nonexistent_user_12345")
except codeforcespy.errors.APIError as e:
    print(f"API error: {e.message}")
except codeforcespy.errors.CodeforcesPyError as e:
    print(f"Library error: {e.message}")

Examples

See the examples/ directory for complete working examples:

  • sync_example.py - Synchronous client usage
  • async_example.py - Asynchronous client with concurrent requests

License

GPL-3.0 License - see LICENSE for details.

Release files for codeforcespy 1.2.1

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

Source distribution (sdist)

Source distribution for codeforcespy 1.2.1
File Size Uploaded
codeforcespy-1.2.1.tar.gz 35.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for codeforcespy 1.2.1
File Interpreter ABI Platform
codeforcespy-1.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 74.6 kB

Release files / codeforcespy-1.2.1.tar.gz

Download URL codeforcespy-1.2.1.tar.gz
Size 35.3 kB
Tags Source
SHA-256 checksum
How to use checksums
6cdd10c972a0c3ecc27173e0ad01c048a6b766a4f781b7a0d55d347e2acaca5a
BLAKE2b-256 checksum
How to use checksums
e10f6f9bd82b8616e3569289e74a38d001cd62881341e12986ea89fddf0ce808
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / codeforcespy-1.2.1-py3-none-any.whl

Download URL codeforcespy-1.2.1-py3-none-any.whl
Size 39.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6bbb235f5179ac5598508106faf319386f06a6581e665680ee8bf06cecc4741c
BLAKE2b-256 checksum
How to use checksums
340cae87ef3f43187af6c47f0e02a96b073653d20a7482a9fcb8b6498514a599
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release history Release notifications | RSS feed

This release

1.2.1 This release

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0

2 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