streetworks
An open Python SDK for street works and roadworks data — the UK's registers, Europe's national feeds, the US WZDx standard, and providers across Australia and New Zealand, behind one consistent, typed, verification-first client.
We do this not because it is easy, but because it is hard.
Developed and published independently, in a personal capacity — not
on behalf of, or endorsed by, any employer. See
docs/governance/attribution.md for
the full statement and contributor credits.
Why?
Roadworks data is published through wildly different systems — statutory registers, DATEX II, WZDx, ArcGIS, WFS, bespoke REST APIs and regional platforms. Almost every provider also has its own authentication, pagination, geometry, date formats and quirks.
streetworks solves that integration problem so you can get on with
building applications instead of learning how every individual road
authority happens to publish its data.
It provides one common model without pretending those sources are equivalent — preserving the differences, limitations and provenance that matter.
And, honestly, part of the fun is discovering how different organisations have chosen to put their data together.
Install
pip install streetworks # core
pip install "streetworks[sns]" # + SNS signature verification (cryptography)
Requires Python 3.10+. Early alpha, pre-1.0 — see
docs/getting-started/installation.md
for what's verified against live systems today.
Quickstart
from streetworks.streetmanager import StreetManagerClient, Environment
with StreetManagerClient("api-user@example.com", password, environment=Environment.SANDBOX) as sm:
sm.authenticate() # verify credentials
submitted = sm.reporting.permits(status="submitted")
The fastest way to see everything working: copy the credential template, fill in what you have, and run the one-file tour — it logs in to each configured provider and retrieves a little real data (read-only). Providers you leave blank are skipped, and SRWR / OS Open USRN need no credentials at all.
cp .env.example .env # then edit .env
python examples/quickstart.py
For connectivity checks without data retrieval:
python scripts/smoke_test.py. Credential setup, environment variables and
what to expect from a real run are in
docs/getting-started/quickstart.md.
Coverage at a glance
UK statutory registers and gazetteers (Street Manager, DataVIA, D-TRO, SRWR,
OS Open USRN), national and regional roadworks feeds and address/street
registers across Europe, the US WZDx standard plus NYC/Chicago/Paris
municipal permit registers, DriveBC (British Columbia, Canada), Australia
(national + state), and New Zealand — and growing. Every provider carries
an explicit network_scope and a
confirmed (or honestly flagged unconfirmed) licence; nothing is silently
assumed open.
streetworks.providers() / get_provider() let you find a provider by what
it covers rather than needing to already know the module name — see
docs/providers/index.md for the full coverage
matrix, per-provider modules, and current Credentials-wanted scaffolds.
Examples
20 runnable examples in examples/ — single-provider reads,
a Street Manager Open Data receiver, a Section 50 write-path connector
(sandbox-verified, not production), a UK-first works_near join pattern
over a documented four-provider subset (deliberately example code, not
an SDK export — see docs/concepts/common-model.md),
two cross-provider comparisons/maps, a real-time AV last-mile router that
reroutes around live roadworks, and two visual showcases (a lone-worker
crime-context map, an OS Open USRN
terrain drape with a 3D-print export). Each one's docstring states
exactly what it needs and what state it's really in — see
docs/examples.md for the curated, one-line-per-example
index.
Documentation
- Getting started — installation, quickstart, development
- Concepts — architecture, data model, data integrity discipline, CRS & datums, write path (Section 50)
- Providers — index / coverage matrix / credentials wanted, UK & Crown Dependencies, Europe, Italy, Switzerland, Austria, Portugal, United States, Canada, Australia, New Zealand, pending candidates
- Domain notes — provider quirks, UK permits, excluded territories
- Roadmap —
docs/roadmap.md(chronological build log) - Contributing — scaffold states, agent boundaries, and see CONTRIBUTING.md for the full ground rules
- Governance — licensing, attribution and capacity
- Full docs entry point:
docs/index.md
Contributing
Contributions welcome — see CONTRIBUTING.md.
Licence
MIT. Not affiliated with or endorsed by the Department for Transport or
Geoplace. Street Manager documentation is © Crown copyright, available under
the Open Government Licence v3.0. See
docs/governance/licensing.md for the full
per-provider licence index.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file streetworks-0.10.0.tar.gz.
File metadata
- Download URL: streetworks-0.10.0.tar.gz
- Upload date:
- Size: 22.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c2c52f647b1494b5361c522b96875264fb8d65bc3e6093ec87664daab311dab
|
|
| MD5 |
a651b54e0d9cc8deebc2c4bdf52f0346
|
|
| BLAKE2b-256 |
437bf98b00de8af61c8fa2e5ce5ba685f7b0ca9849adfac6c01d0fdeba072b0f
|
Provenance
The following attestation bundles were made for streetworks-0.10.0.tar.gz:
Publisher:
publish.yml on KFergusonUK/StreetWorks-SDK
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
streetworks-0.10.0.tar.gz -
Subject digest:
8c2c52f647b1494b5361c522b96875264fb8d65bc3e6093ec87664daab311dab - Sigstore transparency entry: 2605440318
- Sigstore integration time:
-
Permalink:
KFergusonUK/StreetWorks-SDK@6792cedbc14dba347d6f7171e606dac26b2e5f33 -
Branch / Tag:
refs/tags/v0.10.0 - Owner: https://github.com/KFergusonUK
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6792cedbc14dba347d6f7171e606dac26b2e5f33 -
Trigger Event:
release
-
Statement type:
File details
Details for the file streetworks-0.10.0-py3-none-any.whl.
File metadata
- Download URL: streetworks-0.10.0-py3-none-any.whl
- Upload date:
- Size: 978.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60ee7992a9f3ac887684ac06dd6f1ceb510523bf08644174e411e1de0ff99705
|
|
| MD5 |
7efdfb96f2b43cbf61d150bffb026ee3
|
|
| BLAKE2b-256 |
928a39d36e11211f5a934e1a6811b8e8d92d39b665933cc7f8a110a8632f1efc
|
Provenance
The following attestation bundles were made for streetworks-0.10.0-py3-none-any.whl:
Publisher:
publish.yml on KFergusonUK/StreetWorks-SDK
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
streetworks-0.10.0-py3-none-any.whl -
Subject digest:
60ee7992a9f3ac887684ac06dd6f1ceb510523bf08644174e411e1de0ff99705 - Sigstore transparency entry: 2605440359
- Sigstore integration time:
-
Permalink:
KFergusonUK/StreetWorks-SDK@6792cedbc14dba347d6f7171e606dac26b2e5f33 -
Branch / Tag:
refs/tags/v0.10.0 - Owner: https://github.com/KFergusonUK
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6792cedbc14dba347d6f7171e606dac26b2e5f33 -
Trigger Event:
release
-
Statement type: