Python library for OSW validation
Project description
TDEI python lib OSW validation package
This package validates OSW GeoJSON datasets packaged as a ZIP file.
System requirements
| Software | Version |
|---|---|
| Python | >= 3.10 |
What this package does?
- Extracts the provided ZIP file
- Finds supported OSW dataset files inside the extracted directory
- Validates each file (
edges,lines,nodes,points,polygons, andzones) against the matching schema - Runs cross-file integrity checks such as duplicate
_iddetection and edge or zone references back to nodes - Returns a
ValidationResultobject withis_valid,errors, andissues
Any subset of the six supported dataset files may be present. By default, no individual dataset file is required.
Starting a new project with template
- Add
python-osw-validationpackage as dependency in yourrequirements.txt - or
pip install python-osw-validation - Start using the packages in your code.
Initialize and Configuration
from python_osw_validation import OSWValidation
validator = OSWValidation(zipfile_path='<Zip file path>')
result = validator.validate()
print(result.is_valid)
print(result.errors) # returns up to the first 20 high-level errors by default
print(result.issues) # per-file or per-feature issues
result = validator.validate(max_errors=10)
print(result.is_valid)
print(result.errors) # returns up to the first 10 high-level errors
You can also override schemas:
from python_osw_validation import OSWValidation
validator = OSWValidation(
zipfile_path='<Zip file path>',
schema_paths={
'nodes': 'path/to/opensidewalks.nodes.schema-0.3.json',
'edges': 'path/to/opensidewalks.edges.schema-0.3.json',
},
)
Supported filenames
The validator accepts dataset files whose names end with one of these exact suffixes:
.edges.geojson.lines.geojson.nodes.geojson.points.geojson.polygons.geojson.zones.geojson
It also accepts the legacy form:
.edges.OSW.geojson.lines.OSW.geojson.nodes.OSW.geojson.points.OSW.geojson.polygons.OSW.geojson.zones.OSW.geojson
Examples:
gs_metaline_falls_uga.nodes.geojsonis validgs_yarrow_point.edges.geojsonis validroadEdges.geojsonis invalid
If a dataset uses canonical OSW 0.3 names that start with opensidewalks., then only these exact names are allowed:
opensidewalks.edges.geojsonopensidewalks.lines.geojsonopensidewalks.nodes.geojsonopensidewalks.points.geojsonopensidewalks.polygons.geojsonopensidewalks.zones.geojson
Testing
All unit tests are under tests/unit_tests.
-
To execute the tests:
pip install -r requirements.txtpython -m unittest discover -v tests/unit_tests -
To execute code coverage:
coverage run --source=src/python_osw_validation -m unittest discover -v tests/unit_testscoverage htmlcoverage report
After running coverage, open htmlcov/index.html to inspect the report in a browser.
Use locally
To use the library locally, use the example.py code
Deployment
Deploy to TestPyPI
- On every push to
devbranch, a workflow is triggered which publishes the updated version to TestPyPI
Deploy to PyPI
- This happens whenever a tag or release is created with
*.*.*notation, for example0.0.8 - To change the version, update version.py
- To release a new version:
- Go to the GitHub repository
- Under releases, click on
Draft a new release - Under
choose a new tag, add a new tagv*.*.*, then generate release notes - Choose
mainbranch for release - Publish the release.
- This release triggers a workflow to generate the new package version.
- The new package will be available at https://pypi.org/project/python-osw-validation/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
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 python_osw_validation-0.3.5-py3-none-any.whl.
File metadata
- Download URL: python_osw_validation-0.3.5-py3-none-any.whl
- Upload date:
- Size: 41.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fc7bf4acbee4324ca8df3df1f182fe5380f4db39a72b789a09013d1741528af
|
|
| MD5 |
6c364e4820af81fef05c26f03a596b58
|
|
| BLAKE2b-256 |
b24d6936dc25efcde324e636fdb90079c92d255037c1bdb438d0e24cd3de368d
|