mapsmith 0.3.0__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. {mapsmith-0.3.0 → mapsmith-0.5.0}/.gitignore +5 -0
  2. mapsmith-0.5.0/.zenodo.json +19 -0
  3. mapsmith-0.5.0/CHANGELOG.md +1630 -0
  4. mapsmith-0.5.0/CITATION.cff +36 -0
  5. {mapsmith-0.3.0 → mapsmith-0.5.0}/CLAUDE.md +3 -3
  6. {mapsmith-0.3.0 → mapsmith-0.5.0}/CONTRIBUTING.md +1 -1
  7. {mapsmith-0.3.0 → mapsmith-0.5.0}/Dockerfile +18 -0
  8. {mapsmith-0.3.0 → mapsmith-0.5.0}/MANIFESTO.md +6 -3
  9. {mapsmith-0.3.0 → mapsmith-0.5.0}/PKG-INFO +566 -144
  10. {mapsmith-0.3.0 → mapsmith-0.5.0}/README.md +563 -141
  11. mapsmith-0.5.0/SECURITY.md +319 -0
  12. {mapsmith-0.3.0 → mapsmith-0.5.0}/docs/argleton-run.json +6 -6
  13. {mapsmith-0.3.0 → mapsmith-0.5.0}/docs/benchmarks.md +54 -7
  14. {mapsmith-0.3.0 → mapsmith-0.5.0}/docs/catalog-entry-spec.md +43 -7
  15. mapsmith-0.5.0/docs/manifest-vocabulary.md +169 -0
  16. {mapsmith-0.3.0 → mapsmith-0.5.0}/examples/01_verified_geoprocessing.ipynb +128 -27
  17. mapsmith-0.5.0/examples/02_terrain_hydrology.ipynb +507 -0
  18. {mapsmith-0.3.0 → mapsmith-0.5.0}/examples/03_validated_plans.ipynb +31 -24
  19. {mapsmith-0.3.0 → mapsmith-0.5.0}/funding.json +71 -71
  20. mapsmith-0.5.0/glama.json +6 -0
  21. {mapsmith-0.3.0 → mapsmith-0.5.0}/pyproject.toml +3 -3
  22. {mapsmith-0.3.0 → mapsmith-0.5.0}/schema/operation.schema.json +11 -2
  23. {mapsmith-0.3.0 → mapsmith-0.5.0}/server.json +4 -4
  24. {mapsmith-0.3.0 → mapsmith-0.5.0}/site/build.py +18 -1
  25. {mapsmith-0.3.0 → mapsmith-0.5.0}/site/index.template.html +144 -35
  26. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/__init__.py +2 -2
  27. mapsmith-0.5.0/src/mapsmith/antimeridian.py +225 -0
  28. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/catalog.py +1568 -66
  29. mapsmith-0.5.0/src/mapsmith/datum.py +308 -0
  30. mapsmith-0.5.0/src/mapsmith/discovery_log.py +182 -0
  31. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/engines/dispatch.py +15 -2
  32. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/engines/duckdb_engine.py +20 -4
  33. mapsmith-0.5.0/src/mapsmith/engines/esri.py +245 -0
  34. mapsmith-0.5.0/src/mapsmith/engines/linework.py +956 -0
  35. mapsmith-0.5.0/src/mapsmith/engines/network.py +1103 -0
  36. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/engines/raster.py +354 -33
  37. mapsmith-0.5.0/src/mapsmith/engines/sampling.py +629 -0
  38. mapsmith-0.5.0/src/mapsmith/engines/spatial_stats.py +824 -0
  39. mapsmith-0.5.0/src/mapsmith/engines/summaries.py +606 -0
  40. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/engines/vector.py +2957 -2371
  41. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/engines/whitebox_engine.py +508 -12
  42. mapsmith-0.5.0/src/mapsmith/grid.py +539 -0
  43. mapsmith-0.5.0/src/mapsmith/lineage.py +718 -0
  44. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/plans/registry.py +297 -0
  45. mapsmith-0.5.0/src/mapsmith/provenance.py +810 -0
  46. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/readers.py +397 -354
  47. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/server.py +92 -6
  48. mapsmith-0.5.0/src/mapsmith/sql_policy.py +265 -0
  49. mapsmith-0.5.0/src/mapsmith/stacks.py +304 -0
  50. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/verify.py +163 -7
  51. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/workspace.py +45 -0
  52. mapsmith-0.5.0/tests/conftest.py +223 -0
  53. mapsmith-0.5.0/tests/data/discovery_queries.json +2046 -0
  54. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/data/manifest-v1.schema.json +54 -7
  55. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/data/manifest_spec_validator.py +63 -1
  56. mapsmith-0.5.0/tests/test_antimeridian.py +346 -0
  57. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_band_math.py +37 -0
  58. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_catalog.py +1 -1
  59. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_catalog_applicability.py +32 -3
  60. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_clip_reclassify_raster.py +12 -2
  61. mapsmith-0.5.0/tests/test_contours_and_cost.py +287 -0
  62. mapsmith-0.5.0/tests/test_dashboard.py +319 -0
  63. mapsmith-0.5.0/tests/test_datum.py +527 -0
  64. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_discovery_contract.py +95 -9
  65. mapsmith-0.5.0/tests/test_discovery_log.py +321 -0
  66. mapsmith-0.5.0/tests/test_discovery_report.py +727 -0
  67. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_duckdb_sandbox.py +69 -0
  68. mapsmith-0.5.0/tests/test_environment.py +618 -0
  69. mapsmith-0.5.0/tests/test_grid_registration.py +449 -0
  70. mapsmith-0.5.0/tests/test_lineage.py +648 -0
  71. mapsmith-0.5.0/tests/test_linework.py +465 -0
  72. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_merge_simplify.py +19 -2
  73. mapsmith-0.5.0/tests/test_network.py +472 -0
  74. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_overlay_dissolve.py +9 -1
  75. mapsmith-0.5.0/tests/test_path_containment.py +494 -0
  76. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_plans.py +55 -0
  77. mapsmith-0.5.0/tests/test_published_figures.py +407 -0
  78. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_raster.py +7 -1
  79. mapsmith-0.5.0/tests/test_redaction.py +427 -0
  80. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_retrieval_at_scale.py +221 -219
  81. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_retrieval_degradation.py +99 -1
  82. mapsmith-0.5.0/tests/test_sampling.py +497 -0
  83. mapsmith-0.5.0/tests/test_select_and_extract.py +720 -0
  84. mapsmith-0.5.0/tests/test_showcase.py +1905 -0
  85. mapsmith-0.5.0/tests/test_south_up_and_mixed.py +257 -0
  86. mapsmith-0.5.0/tests/test_spatial_stats.py +485 -0
  87. mapsmith-0.5.0/tests/test_sql_credentials.py +289 -0
  88. mapsmith-0.5.0/tests/test_stacks.py +289 -0
  89. mapsmith-0.5.0/tests/test_summaries.py +468 -0
  90. mapsmith-0.5.0/tests/test_verify.py +2433 -0
  91. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_verify_repair.py +10 -2
  92. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_whitebox.py +207 -201
  93. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_whitebox_derivatives.py +351 -245
  94. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_worked_example.py +58 -83
  95. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_workspace.py +50 -0
  96. mapsmith-0.3.0/CHANGELOG.md +0 -608
  97. mapsmith-0.3.0/SECURITY.md +0 -171
  98. mapsmith-0.3.0/examples/02_terrain_hydrology.ipynb +0 -507
  99. mapsmith-0.3.0/src/mapsmith/provenance.py +0 -354
  100. mapsmith-0.3.0/src/mapsmith/sql_policy.py +0 -105
  101. mapsmith-0.3.0/tests/data/discovery_queries.json +0 -1536
  102. mapsmith-0.3.0/tests/test_discovery_report.py +0 -102
  103. mapsmith-0.3.0/tests/test_path_containment.py +0 -249
  104. mapsmith-0.3.0/tests/test_redaction.py +0 -207
  105. mapsmith-0.3.0/tests/test_showcase.py +0 -868
  106. mapsmith-0.3.0/tests/test_sql_credentials.py +0 -117
  107. mapsmith-0.3.0/tests/test_verify.py +0 -511
  108. {mapsmith-0.3.0 → mapsmith-0.5.0}/.dockerignore +0 -0
  109. {mapsmith-0.3.0 → mapsmith-0.5.0}/LICENSE +0 -0
  110. {mapsmith-0.3.0 → mapsmith-0.5.0}/TRADEMARKS.md +0 -0
  111. {mapsmith-0.3.0 → mapsmith-0.5.0}/docker-compose.yml +0 -0
  112. {mapsmith-0.3.0 → mapsmith-0.5.0}/examples/README.md +0 -0
  113. {mapsmith-0.3.0 → mapsmith-0.5.0}/examples/fixtures/mount_st_helens_dem.tif +0 -0
  114. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/engines/__init__.py +0 -0
  115. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/engines/geodesy.py +0 -0
  116. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/engines/sedona_engine.py +0 -0
  117. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/gdal_policy.py +0 -0
  118. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/jobs.py +0 -0
  119. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/plans/__init__.py +0 -0
  120. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/plans/executor.py +0 -0
  121. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/plans/models.py +0 -0
  122. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/plans/validator.py +0 -0
  123. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/preview.py +0 -0
  124. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/retrieval.py +0 -0
  125. {mapsmith-0.3.0 → mapsmith-0.5.0}/src/mapsmith/ui.py +0 -0
  126. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_ambiguous_layer.py +0 -0
  127. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_catalog_entry_spec.py +0 -0
  128. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_catalog_retrieval.py +0 -0
  129. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_centroid_convert.py +0 -0
  130. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_describe_raster.py +0 -0
  131. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_engines.py +0 -0
  132. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_gdal_policy.py +0 -0
  133. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_geodesy.py +0 -0
  134. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_geoparquet2.py +0 -0
  135. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_measure_area.py +0 -0
  136. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_nearest_explode.py +0 -0
  137. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_preview.py +0 -0
  138. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_raster_reproject_bands.py +0 -0
  139. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_resample_raster.py +0 -0
  140. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_retrieval.py +0 -0
  141. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_smoke.py +0 -0
  142. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_sql_axis_order.py +0 -0
  143. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_terrain_derivatives.py +0 -0
  144. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_tier_a_operations.py +0 -0
  145. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_ui.py +0 -0
  146. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_verification_status.py +0 -0
  147. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_voronoi.py +0 -0
  148. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_whitebox_encoding.py +0 -0
  149. {mapsmith-0.3.0 → mapsmith-0.5.0}/tests/test_whitebox_geographic_refusal.py +0 -0
@@ -61,3 +61,8 @@ uv.lock
61
61
 
62
62
  # The site is generated: `python site/build.py dist` rebuilds it from a real run.
63
63
  site/generated/
64
+
65
+ # Written by `benchmarks/dashboard.py` and by MAPSMITH_DISCOVERY_LOG:
66
+ # both hold the queries somebody typed, so they stay out of the repository.
67
+ dashboard.html
68
+ *.jsonl
@@ -0,0 +1,19 @@
1
+ {
2
+ "upload_type": "software",
3
+ "title": "MapSmith: geospatial processing over MCP, with verifiable provenance",
4
+ "version": "0.5.0",
5
+ "creators": [
6
+ {"name": "The MapSmith project"}
7
+ ],
8
+ "license": "agpl-3.0-or-later",
9
+ "access_right": "open",
10
+ "keywords": [
11
+ "GIS",
12
+ "geospatial",
13
+ "provenance",
14
+ "reproducibility",
15
+ "Model Context Protocol",
16
+ "MCP"
17
+ ],
18
+ "description": "<p>An MCP server for professional geoprocessing under a rule the caller cannot bend: every geometry and every number comes from a real engine run, never from the model.</p><p>Each operation that writes a dataset also writes a manifest beside it &mdash; the inputs and their hashes, the exact parameters, the coordinate-system decisions and the reason for each, the engine and its version, the environment that changed the answer, and the deterministic checks that ran. The manifest is written <em>before</em> a failed check raises, so the audit trail survives the error rather than disappearing with it.</p><p>Capabilities are reached through a searchable catalogue rather than a wall of tools, because a caller's ability to pick the right tool degrades long before a catalogue does. The catalogue answers with a set of candidates and the text that distinguishes them, not with a verdict.</p><p>A manifest records what was done; it does <em>not</em> certify that what was done was right. MapSmith says so in its own documentation, and a separate correctness suite exists to measure the difference.</p>"
19
+ }