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

Uploaded Python 3

File details

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

File metadata

  • Download URL: simple_state_tracker-0.1.3.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.3.tar.gz
Algorithm Hash digest
SHA256 fa853e9fdf510f6c0ba9d2fa6018ffc1370501ab495cb85d385a6beb1a00fa24
MD5 eef1fd930d98df98fae7844b53c7027a
BLAKE2b-256 c43a42ca7023f9953181621a66e579dffda881c5a55a5b66023251ba1e978b9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for simple_state_tracker-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4f44d9c1e9336b2e37bd8b7bc2f62d064e6356b844a14fef782ff13c500fa188
MD5 859b87151c892ede9032467d322715ca
BLAKE2b-256 f259bf67fa06daf1e3a66e5db51fcf389e2bef22c744e97d7cbeffb002dbd7a9

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