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.3.0.tar.gz (6.1 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.3.0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for dsa_tracker-0.3.0.tar.gz
Algorithm Hash digest
SHA256 bd27cb737eaa170f81e976dd70ff743dba770ecc4b2bda94ec106ed4fae1d146
MD5 c74d589c79c1bc2d2fcc8d5914a016c2
BLAKE2b-256 8cb0af510cc6b6f70826b76e2e1b646a41e7a3a0d279438d401eadce7e40ead2

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for dsa_tracker-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 82185cc542f51d8b5ad287dfadf1ecb2d66837708c47b4194dbc4f6d3dc018ee
MD5 43205b08e4b36375b5ff644996205c9a
BLAKE2b-256 f0f62d56e7d1d3f1ee424974150b850d96808ab7194cf3eec9404f914cdf5df5

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