Skip to main content

A minimal, type-safe, file-backed state tracker using Pydantic models.

Project description

simple-state-tracker

A minimal, file-backed, type-safe state tracker using Pydantic models — ideal for scripts, scrapers, ETL pipelines, and resumable workflows.

PyPI Python License

Features

  • 🧠 Strong typing with pydantic models
  • 💾 Transparent JSON persistence
  • 🧰 Simple .get(), .set(), .edit() API
  • ✅ Schema validation and strict key control
  • 🪶 Lightweight — no databases, no DAGs, no dependencies beyond pydantic

Installation

pip install simple-state-tracker

Example

## Quick Start

```python
from simple_state_tracker import SimpleStateTracker, KeyModel, DataModel

class ScrapeKey(KeyModel):
    county: str
    municipality: str
    year: int

class ScrapeState(DataModel):
    scraped: bool = False
    scrape_error: str | None = None
    processed: bool = False
    process_error: str | None = None

tracker = SimpleStateTracker(ScrapeKey, ScrapeState, path="tracker.json")

key = ScrapeKey(county="DAUPHIN", municipality="HARRISBURG", year=2022)

with tracker.edit(key) as state:
    state.scraped = True
    state.scrape_error = None

tracker.save()

Use Cases

  • Track which URLs, files, or locations have been processed
  • Resume scraping jobs or ETL pipelines
  • Store structured state across CLI or batch job invocations
  • Replace ad-hoc JSON or YAML logs with something type-safe and self-validating

API Overview

SimpleStateTracker(key_model, data_model, path)

Creates a new tracker instance.

  • get(key) → returns the data model (or None)
  • set(key, value) → manually sets a value
  • edit(key) → yields a context-managed editable state
  • save() → writes the cache to disk
  • load() → reads from disk
  • all() → returns a shallow copy of all state

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

simple_state_tracker-0.1.1.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

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

simple_state_tracker-0.1.1-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file simple_state_tracker-0.1.1.tar.gz.

File metadata

  • Download URL: simple_state_tracker-0.1.1.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.13.0 Windows/11

File hashes

Hashes for simple_state_tracker-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a38069f48a2b308800947022240eca70ed0b46482844db6186a14868e09d9eec
MD5 4225096ce99c0fa44a7c27f1d080dedc
BLAKE2b-256 6592092603cd8c24650eeb76dc9e5ef842bbb007a012e3048076fc23ac9ce3bc

See more details on using hashes here.

File details

Details for the file simple_state_tracker-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for simple_state_tracker-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 eeb8974a784df44e17fd7e84c3673ba0fdff73e52340a1f4a02617bdd7b55586
MD5 876e27e2d8db3f91abbbd56d60fcd26c
BLAKE2b-256 2b1d1b4befc22e2cbd68bc169c1804acdc556442fa2ed0b654bd1c74b92edf30

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