Skip to main content

Simple, dependency-free data automation for church administration (attendance, giving and membership analytics).

Project description

provost

PyPI version Python versions License: MIT CI Wheel Downloads

Simple, dependency-free data automation for church administration.

provost helps church and congregation administrators turn the CSV exports their management software already produces into plain-English summaries: attendance trends, giving analytics and membership lifecycle metrics — without a spreadsheet wrestling match.

The name is a nod to the traditional role of a provost: the person who keeps the day-to-day administration of a church running.

📚 Full documentation lives in docs/ and builds into a searchable site with MkDocs (pip install ".[docs]" && mkdocs serve).

Why provost?

  • No third-party runtime dependencies. It is built entirely on the Python standard library, so it installs instantly and audits easily.
  • No surprises. It reads only the CSV files you point it at and writes only to stdout. It never touches the network, phones home, collects telemetry, or runs anything at install time. What you see in the source is all it does.
  • Explainable maths. Every metric is a short, readable function you can check yourself. No black boxes.

Install

pip install provost

Python 3.9 or newer.

Quick start

As a command-line tool

provost attendance attendance.csv
provost giving giving.csv
provost members members.csv

Example output:

Attendance summary for attendance.csv
  weeks recorded : 12
  mean / week    : 182.5
  median / week  : 180.0
  best week      : 240
  quietest week  : 150
  next-week est. : 188.0
  by year:
    2024: 2190

As a library

from provost import read_attendance, attendance_summary, forecast_next

records = read_attendance("attendance.csv")
print(attendance_summary(records))     # mean, median, min, max, stdev...
print(forecast_next(records))          # naive next-week estimate
from provost import read_giving, giving_by_fund, recurring_donors

gifts = read_giving("giving.csv")
print(giving_by_fund(gifts))           # {"general": 12450.0, "building": 3200.0}
print(recurring_donors(gifts))         # members who gave in 3+ distinct months
from provost import read_members, active_members, retention_rate
from datetime import date

members = read_members("members.csv")
print(len(active_members(members)))
print(retention_rate(members, date(2023, 1, 1), date(2024, 1, 1)))

Expected CSV formats

Attendancedate,service,count (service optional, defaults to main):

date,service,count
2024-01-07,morning,182
2024-01-07,evening,64

Givingdate,member_id,amount (plus optional fund, method):

date,member_id,amount,fund,method
2024-01-07,M001,100.00,general,card

Membersmember_id,join_date (plus optional status, left_date):

member_id,join_date,status,left_date
M001,2019-03-01,active,

Sample files live in examples/.

What's included

Module Highlights
provost.attendance weekly totals, rolling average, year-over-year, naive forecast
provost.giving totals, split by fund/member, average gift, recurring donors
provost.membership active members, joiners, leavers, net growth, retention
provost.metrics moving average, growth rate, CAGR, percentile, summary stats
provost.io tolerant CSV loaders with clear per-row error messages

Development

pip install -e ".[dev]"
pytest

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

provost-0.1.0.tar.gz (14.8 kB view details)

Uploaded Source

Built Distribution

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

provost-0.1.0-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file provost-0.1.0.tar.gz.

File metadata

  • Download URL: provost-0.1.0.tar.gz
  • Upload date:
  • Size: 14.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for provost-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ea169e226482973c56e1d633265e568112ef9e79cce29abd9363835904fef413
MD5 4d9088138713682650132edfecede084
BLAKE2b-256 e45097f8bd825ec19d5430f74910ad548dd932f67e99c22340a2a8f2ab435845

See more details on using hashes here.

Provenance

The following attestation bundles were made for provost-0.1.0.tar.gz:

Publisher: publish.yml on MartinGallagher-code/provost

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file provost-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: provost-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 13.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for provost-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c5a48e6423e7e9193b7c8f6f9b3e0b442f4e9ac0335d9a37068f17b204d465b2
MD5 b3fed86267f5ff140e8977f4be116849
BLAKE2b-256 b9b70e6628bf123fc81d7d7bf8a2390d3c9bcc7243f71681541818284de97021

See more details on using hashes here.

Provenance

The following attestation bundles were made for provost-0.1.0-py3-none-any.whl:

Publisher: publish.yml on MartinGallagher-code/provost

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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