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.5.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.5-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: simple_state_tracker-0.1.5.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.5.tar.gz
Algorithm Hash digest
SHA256 3c2cb105a9d1e22ce83c29bc572228a3ce43510175a5ee79e8cef61411b05ce7
MD5 12c457254daefe98a09514e0d2c5d101
BLAKE2b-256 90c1129c8886169a9cf8a5683a49e2bd6b391e39727c8429f8b8395523798746

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for simple_state_tracker-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 33a91405eee252b6730df76ec5a95e22ba0f931b1b00055cd665df5c40a1d7dc
MD5 4289ed43789b17780ff2e84d89aea5bc
BLAKE2b-256 ce8af86cd072a6ba29a3d9cd98597ce0b87342c99689143636f851e7c6c993b6

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