Skip to main content

Log DSA prep solves from a Colab/Jupyter notebook to your DSA Tracker instance.

Project description

dsa-tracker

Tiny Python client for DSA Tracker. Log a solve from a Colab/Jupyter notebook in one call — same SM-2 scheduling and GitHub auto-push you get from the web app.

Install

pip install dsa-tracker

Get an API key

In your DSA Tracker dashboard → Settings → API keys → Generate new key. The plaintext value is shown exactly once — copy it and treat it like a password. You can name keys per device/notebook so revoking one doesn't break the others.

Use it

from dsa_tracker import Tracker

tracker = Tracker(
    api_url="https://your-dsa-tracker.com",
    api_key="dsa_xxxxxxxxxxxxxxxxxxxxxx",
)

# Solve the problem like you always do
def two_sum(nums, target):
    seen = {}
    for i, n in enumerate(nums):
        if target - n in seen:
            return [seen[target - n], i]
        seen[n] = i

# Log it without leaving the notebook
import inspect

result = tracker.log(
    title="Two Sum",
    confidence=4,                            # 1 (Forgot) → 5 (Easy)
    code=inspect.getsource(two_sum),
    language="python",
    difficulty="easy",
    topics=["Array", "HashMap"],
    pattern="Hash Lookup",
    time_complexity="O(n)",
    space_complexity="O(n)",
    playlist="leetcode-75",                  # optional: push to this playlist's GitHub config
)

print(f"→ next review: {result['next_review_at']} · status: {result['status']}")
if result.get('git_push_queued'):
    print("→ pushed to GitHub via playlist 'leetcode-75'")
elif result.get('git_push_skip_reason'):
    print(f"→ no GitHub push: {result['git_push_skip_reason']}")

What happens on the server

  1. Two Sum is looked up by slug. Created if new, otherwise reused.
  2. A new Solution row captures your code, language, complexities.
  3. A new Review row runs through SM-2 with your confidence rating.
  4. problem.next_review_at and problem.status are updated.
  5. If you have GitHub auto-push enabled, the solution is committed to your repo in the background.

The return value tells you exactly what happened:

{
    'problem_id': 42,
    'solution_id': 87,
    'review_id': 105,
    'created': True,                # False if you've logged this title before
    'next_review_at': '2026-05-27',
    'status': 'learning',
    'reps': 1,
    'interval_days': 1,
}

All parameters

Required Optional
title, confidence code, language, difficulty, topics, pattern, platform, problem_url, approach, time_complexity, space_complexity, notes

Defaults: language="python", difficulty="medium", approach="optimal". Anything you omit just isn't sent.

Errors

The client raises TrackerError on any non-2xx response with the server's reason attached:

from dsa_tracker import TrackerError

try:
    tracker.log(title="X", confidence=4)
except TrackerError as e:
    print(f"Couldn't log: {e}")

Common cases: 401 (bad/revoked API key), 422 (missing required field), connection timeout.

Context manager

For scripts that make many calls, use it as a context manager to clean up the underlying connection pool:

with Tracker(api_url=..., api_key=...) as tracker:
    for problem in queue:
        tracker.log(title=problem.name, confidence=problem.rating, code=problem.code)

License

MIT.

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

dsa_tracker-0.4.0.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

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

dsa_tracker-0.4.0-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file dsa_tracker-0.4.0.tar.gz.

File metadata

  • Download URL: dsa_tracker-0.4.0.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for dsa_tracker-0.4.0.tar.gz
Algorithm Hash digest
SHA256 07a2103c48e1c7700a769ac1761328f62fb3646661ed33528c9d407110a854a7
MD5 5d5d09a8936298e7c48b4a1757503e31
BLAKE2b-256 5e21322f931d7868eda8ddd1e5d255503adbc3ddc58e5efe0e3908af0339db94

See more details on using hashes here.

File details

Details for the file dsa_tracker-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: dsa_tracker-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for dsa_tracker-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 374372129e348cc51e02e0ed38159c330e1425bcc918ba464517779975d67801
MD5 74ae7c9f3e9456128c80a37539003dd3
BLAKE2b-256 6b2a43fa226aa7f5aea293a37f9d78c43f5feb8ef31a3fae58732daf1b7411ce

See more details on using hashes here.

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