Skip to main content

morpc-census

Introduction

morpc-census is a Python package maintained by the MORPC data team for working with US Census Bureau data. It provides tools for connecting to the Census API, retrieving survey data, and structuring results as long-format tables with frictionless metadata.

This package depends on morpc-py for shared MORPC utilities.

Modules

  • morpc_census.api — Census API client (Endpoint, Group, CensusAPI) and data structuring classes (DimensionTable, RaceDimensionTable, TimeSeries, RaceTable) for reshaping results into long- and wide-format DataFrames with frictionless metadata.
  • morpc_census.geos — Geography utilities: Scope (named query extents), SumLevel (summary level codes), GeoIDFQ (GEOID parser/builder), and functions for translating between Census GEOIDs and MORPC geography definitions.
  • morpc_census.tigerweb — Fetches GeoDataFrames from the Census TIGERweb REST API.
  • morpc_census.constants — Domain lookup tables for age groups, race, education, income-to-poverty, and NTD categories.

Installation

pip install morpc-census

Dev Install

To install an editable version for development:

git clone https://github.com/jinskeep-morpc/morpc-census.git
pip install -e /path/to/morpc-census/

Then import as:

import morpc_census

Usage

from morpc_census import Endpoint, Group, CensusAPI, DimensionTable, RaceDimensionTable, SCOPES, SumLevel

ep  = Endpoint('acs/acs5', 2023)
grp = Group(ep, 'B01001')

# Fetch ACS 5-year age/sex data for counties in the 15-county region
api = CensusAPI(ep, SCOPES['region15'], group=grp, sumlevel=SumLevel('county'))

# Long-format DataFrame
print(api.long.head())

# Reshape into wide MultiIndex table and compute percentages
table = DimensionTable(api.long)
wide  = table.wide()
pct   = table.percent()

# Save data + frictionless schema + resource to disk
api.save('./output')

Demos and Documentation

See demos for examples and documentation.


Roadmap — Code Improvements

  • Fix Python 3.10/3.11 syntax bug in geos.py
  • Cache _get_api_key()
  • Replace global _avail_endpoints_cache with @functools.cache
  • Avoid double-computing wide() inside percent()
  • Rename DimensionTable.variable_type → value_cols
  • Rename map parameter in find_replace_variable_map → label_map
  • Split CensusAPI.melt() into focused private helpers
  • Pin numpy as an explicit dependency
  • Add minimum version pins to all dependencies
  • Add module docstrings to geos.py and tigerweb.py
  • Validate or auto-fetch tigerweb.py current_endpoints

Roadmap — Production Readiness & PyPI Release

Phase 1 — Pre-release cleanup

  • Apply all code improvement items above
  • Fix the README usage example
  • Expand test coverage for offline paths (wide(), percent(), remap(), drop(), melt())
  • Update pyproject.toml classifier from Development Status :: 1 - Planning to 4 - Beta
  • Add a CHANGELOG.md
  • Add a py.typed marker file

Phase 2 — Dependency audit

  • Assess whether morpc can be published to PyPI or replaced
  • Document installation order if morpc remains a private dependency
  • Pin morpc to a minimum version in pyproject.toml

Phase 3 — CI/CD

  • Add GitHub Actions CI workflow (pytest -m "not network" on push/PR, Python 3.10–3.12)
  • Add build verification step (python -m build + twine check)
  • Add publish workflow triggered on release tags

Phase 4 — Versioning & release

  • Switch to dynamic versioning via setuptools-scm
  • Tag v0.1.0 and publish first release
  • Document versioning policy and breaking-change rules in CONTRIBUTING.md

Phase 5 — Documentation

  • Auto-generate API reference docs from docstrings
  • Add CONTRIBUTING.md with setup instructions and PR process
  • Add usage examples to docstrings for commonly called functions

This product uses the Census Bureau Data API but is not endorsed or certified by the Census Bureau.

Metadata

Release files for morpc-census 0.6.3

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

Source distribution (sdist)

Source distribution for morpc-census 0.6.3
File Size Uploaded
morpc_census-0.6.3.tar.gz 1.9 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for morpc-census 0.6.3
File Interpreter ABI Platform
morpc_census-0.6.3-py3-none-any.whl Python 3 none any Details

Total release size: 2.1 MB

Release files / morpc_census-0.6.3.tar.gz

Download URL morpc_census-0.6.3.tar.gz
Size 1.9 MB
Tags Source
SHA-256 checksum
How to use checksums
4486b384f8f14891ded1f8289c54c5a6dbbd0d408d37a6b6a1b8bf2865502c1a
BLAKE2b-256 checksum
How to use checksums
b5d150c35a8ab62d269615b1610a5ff8f9efc715871930980a1a8fa00cb5f038
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 Sep 23, 2026.

Transparency log

Release files / morpc_census-0.6.3-py3-none-any.whl

Download URL morpc_census-0.6.3-py3-none-any.whl
Size 169.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bf5339ba860ab25af912e94f38756681652308962dd846a58b746157a3a577a6
BLAKE2b-256 checksum
How to use checksums
289689cf7f8091a4694c881c33ca6ef6fbf3d1c3ae9167e18933831491bfa231
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 Sep 23, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

This release

0.6.3 This release

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.3.4

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

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