- Fixed https://dev.azure.com/TDEI-UW/TDEI/_workitems/edit/3469
- Added regression coverage for
tests/assets/task_3469.zipto assert the exact per-featureissuespayload:"null" is not one of "down" or "up"onFIFA_sidewalks.edges.geojsonfeature index0. - Aligned package dependency pins by updating
setup.pytojsonschema_rs==0.33.0(matchingrequirements.txt).
- Fixed filename-based schema selection to use exact dataset suffixes such as
.nodes.geojson,.edges.geojson, and the legacy.nodes.OSW.geojsonform instead of loose substring matching. - Prevented false schema selection for filenames with misleading prefixes such as
gs_metaline_falls_uga.nodes.geojsonandgs_yarrow_point.edges.geojson. - Updated extracted dataset filename validation to enforce the same suffix-based rules and reject glued names such as
roadEdges.geojson. - Added regression coverage for suffix-based filename matching and refreshed the README to document current ZIP input, validation output, and supported filename patterns.
- Update leaf_cycle enums in 0.3 lines/points/polygons schemas and add coverage for the new allowed values.
- Add unit tests that validate acceptance/rejection of leaf_cycle values with the 0.3 schemas.
- Clarified unsupported-file messaging to show allowed patterns as
*.{edges, nodes, points, lines, zones, polygons}.geojson. - Structure-level validation errors now report the uploaded filename (ZIP) instead of the temp extraction directory; added coverage.
- Added tests for the additional-properties hint and refreshed the unit test overview counts.
- Fixed Task-2817
- Fixed Issue-2844
- Reject non-OSW GeoJSON files (anything beyond points/nodes/edges/lines/polygons/zones) with a clear error; added unit coverage for unsupported files and extension validation paths.
- Clarified extension handling expectations: external extension ZIPs are now considered invalid inputs in tests.
- Added a detailed scenario summary (
unit_test_overview.md) and renamed log-oriented tests for clarity; removed noisy traceback printing on unexpected validation errors.
- Restored custom field support across schemas (CustomNode/Edge/Zone) while aligning required fields with original behavior.
- Relaxed edges/zones global required lists to let custom features omit
highway(kept in branch-specific schemas). - Enhanced 0.2 compatibility guard: allow
ext:on nodes, block custom content per dataset with specific messages (e.g., Custom Edge/Point/Polygon), and reject non-pointext:. - Added schema parity tests and fixtures for custom feature branches and 0.2 vs 0.3 behavior, including guard reason checks.
- Improved diff tooling/reporting and parity fixtures to cover custom scenarios.
- Default to OSW 0.3 dataset-specific schemas (edges, lines, nodes, points, polygons, zones) with filename-driven selection; removed legacy monolithic/geometry schema files.
- Enforce the six canonical OSW 0.3 filenames inside datasets; reject non-standard names and detect duplicates/missing required files (with new unit tests).
- Validation now ignores
$schemahints and does not fall back to geometry typing; line schema is the final fallback when filenames give no hint. - Expanded test coverage for extension read failures, invalid extension ID extraction,
_w_idmissing in zones, cleanup edge cases, and required-file detection.
- Update the base schema to make the $schema key is required
- Added unit test cases for that
- Improved GeoJSON parse error reporting with detailed file, line, and column context.
- Added unit tests covering JSON parsing and file read failure scenarios.
- Capped duplicate
_idvalidation messages default it to first 20 values while reporting the total duplicate count to avoid excessively large issue payloads. - Added a new unit test that verifies duplicate ID logging trims the displayed IDs to 20 while reporting the total number of duplicates.
- Updated Schema
- Per-geometry schema support: auto-picks Point/LineString/Polygon schemas with sensible defaults.
- Structured per-feature issues output (former “fixme”): one best, human-friendly message per feature.
- Friendly error formatter:
- Compacts
Enumerrors. - Summarizes
anyOfby unioning required keys → “must include one of: …”.
- Compacts
_feature_index_from_error()to reliably extractfeature_indexfromjsonschema_rserror paths._get_colset()utility for safe set extraction with diagnostics for missing columns.- Unit tests covering helpers, schema selection, and issues aggregation.
validate()now streamsjsonschema_rserrors; legacyerrorslist remains but is capped bymax_errors.ValidationResultnow includesissues.- Schema selection prefers geometry from the first feature; falls back to filename heuristics (
nodes/points,edges/lines,zones/polygons).
- Robust GeoJSON/extension handling:
- Safe fallback to index when
_idis missing. - Non-serializable property detection in extensions (with clear messages).
- Safe fallback to index when
- Safer flattening of
_w_id(list-like) for zone validations.
- Prefer consuming
ValidationResult.issuesfor per-feature UX and tooling.
- Fixed BUG-2065
- Added functionality to catch serialization errors
- Added unit test cases for that
- Added test file
test_serialization_error.zipto test the serialization error
- Added limit the message error when u_id and v_id are missing
- Added Unit test cases for missing u_id and v_id
- Fixed geopands version to
0.14.4. - Latest geopands version
0.10.0is not compatible and failing to parse the zones. - Added unit test cases for valid and invalid zone files
- Switch to
jsonschema_rsfor performance enhancement, instead ofjsonschemapackage - Refactor code for improve memory utilization
- Added garbage collector
- Add garbage collection to free up memory after validation
- Updated geopandas package
- Performance improvement if there are any errors
- Added functionality to get the specific number of errors
validator = OSWValidation(zipfile_path=<ZIP_FILE_PATH>) result = validator.validate() // will return only first 20 errors by default result = validator.validate(max_errors=10) // will return only first 10 errors
- Updated zipfile_handler
- Fixed "No .geojson files found in the specified directory or its subdirectories." issue
- Updated schema file to OSW 0.2
- Added create_zip method to ZipFileHandler
- Made all OSW files optional
- Added additional validation steps based on the OSW network properties
- Add external extensions to ExtractedDataValidator
- Validate external extensions against basic Open Geospatial Consortium (OGC) standards
- Aggregate schema errors and data integrity errors separately before returning errors to user
- Support for multi-level geojson file
- Now handles the following two folder structures when unzipped abc.zip
- abc{nodes, edges, points}.geojson
- {nodes, edges, points}.geojson
- Points are not required for a valid OSW dataset
- Added schema file to package
- Updated package Unit test cases.
- Updated README file
- Initial version of python_osw_validation package.