Skip to main content

dlt-parentsquare

CI Prek CodeQL OpenSSF Scorecard PyPI Latest release License

An unofficial, read-only dlt source for ParentSquare posts and calendar events. The reusable HTTP client lives in the separate parentsquare-client repository so applications can use it without installing dlt.

ParentSquare does not publish a parent-facing API. This project reads the authenticated parent web experience and therefore may stop working when ParentSquare changes its site or account protections. It is not affiliated with or endorsed by ParentSquare, Inc. Review ParentSquare's current terms and your district's policies before using it.

Install the dlt adapter:

pip install "dlt-parentsquare[dlt]"
uv add "dlt-parentsquare[dlt]"

Configure the source through dlt's providers. For a local pipeline, copy .dlt/secrets.toml.example to .dlt/secrets.toml and fill in the ParentSquare credentials. Keep that file out of version control:

[sources.parentsquare]
username = "parent@example.com"
password = "replace-me"

The same values can be supplied as SOURCES__PARENTSQUARE__USERNAME and SOURCES__PARENTSQUARE__PASSWORD environment variables. A nonsecret base_url option may go in .dlt/config.toml or SOURCES__PARENTSQUARE__BASE_URL. See configuration for the provider layout and MFA guidance.

Then run the source:

import dlt
from dlt_parentsquare import parentsquare

pipeline = dlt.pipeline("parentsquare", destination="duckdb", dataset_name="school")
pipeline.run(parentsquare())

The source exposes posts, group_posts, and calendar_events by default. posts contains school-feed posts. group_posts contains the corresponding group feeds and uses a feed-scoped source_id (school:<id>:group:<id>:post:<id>) so a post visible in both feeds is not collapsed during a merge. Parent-visible schools, students, student_dashboards, groups, and school_features resources are available with parentsquare(include_context=True). Context resources are opt-in because they contain household and school-directory data. IDs are stable within ParentSquare's account and are used as merge keys. Each group record includes student_ids; join those values to students.id to attach a group to the linked student names without copying names into every group row. The same relationship can be used to filter a downstream school or group view. A local DuckDB example is in examples/duckdb_pipeline.py. Synthetic fixtures are used in tests; real messages, cookies, credentials, student records, and calendar URLs must never be committed.

The pages argument controls the bounded number of pages read from each school and group feed, for example parentsquare(pages=3). ParentSquare does not expose a stable cursor, so each run deliberately re-reads the selected page window and merges edited records.

The resources use merge with stable IDs because the ParentSquare web interface does not expose a reliable updated-at cursor. Each run re-reads the bounded feed and lets dlt merge edited records without losing changes. This is deliberate: adding a timestamp cursor here could skip an edited post.

Authentication

The shared client supports the normal sign-in flow and a six-digit MFA challenge. An embedding application handles MFARequired by presenting the masked destination and calling submit_mfa_code. The client does not persist credentials or cookies; the embedding application owns that storage policy.

Status

This is an early alpha. Reads only are implemented. Replies, acknowledgements, forms, sign-ups, payments, attachments, and action extraction are deliberately out of scope.

Development

Run uv run --extra dev --extra dlt pytest for the test suite. Install prek with uvx prek install to run the same checks as CI. Tagged releases create GitHub release artifacts, and the publish workflow supports PyPI Trusted Publishing plus manual TestPyPI verification.

See docs/releasing.md for the one-time Trusted Publisher configuration and tag workflow.

Metadata

Release files for dlt-parentsquare 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dlt-parentsquare 0.3.0
File Size Uploaded Provenance
dlt_parentsquare-0.3.0.tar.gz 130.4 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for dlt-parentsquare 0.3.0
File Interpreter ABI Platform
dlt_parentsquare-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 137.3 kB

Release files / dlt_parentsquare-0.3.0.tar.gz

Download URL dlt_parentsquare-0.3.0.tar.gz
Size 130.4 kB
Tags Source
SHA-256 checksum
How to use checksums
74e516f2f803e238e2f8cb9ae2cca9892328b21a542e5f1e15eac3837a1353cb
BLAKE2b-256 checksum
How to use checksums
5f581e2bebf6489ff8d9899e31b3fe922ea968e911cce3667e63b63931af7dac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.

Transparency log

Release files / dlt_parentsquare-0.3.0-py3-none-any.whl

Download URL dlt_parentsquare-0.3.0-py3-none-any.whl
Size 7.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
08536b5c6991cc61fa4ab2c99e2af0646d06cf7044d52ded4418730a1bfd3af5
BLAKE2b-256 checksum
How to use checksums
b195f6fb93e70ec7869895a822efbfb21eed127fd40e6aaf3c9a29929ce05ace
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.

Transparency log

Security for dlt-parentsquare 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for dlt_parentsquare-0.3.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page