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.7.0.tar.gz (8.6 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.7.0-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dsa_tracker-0.7.0.tar.gz
  • Upload date:
  • Size: 8.6 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.7.0.tar.gz
Algorithm Hash digest
SHA256 578a5a95e05142f44ca73e89265f5fdb70bc187f89c39db9ed4aa20ad6b0d5e7
MD5 fa75ecca6c8113f4241cbea47e6cf630
BLAKE2b-256 4f9d89da23d9f5927f2af7631cd9484004080ab119b1f308d3ac93cc8a49cf83

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsa_tracker-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 12.1 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.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 86b3b653826ee6363b90f1ac42c86c6974add538fd61ce514603db77c79ae506
MD5 52b9a3342a9589944be21e0cf7ab4c78
BLAKE2b-256 5ce4fbe4064cf6a3565cd9fe70fcfd7ce73b7e588a69e7435d806290b2b816b5

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