mapsmith 0.2.1__tar.gz → 0.3.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 (123) hide show
  1. mapsmith-0.3.0/.dockerignore +35 -0
  2. mapsmith-0.3.0/.gitignore +63 -0
  3. mapsmith-0.3.0/CHANGELOG.md +608 -0
  4. {mapsmith-0.2.1 → mapsmith-0.3.0}/CLAUDE.md +12 -7
  5. {mapsmith-0.2.1 → mapsmith-0.3.0}/CONTRIBUTING.md +2 -2
  6. mapsmith-0.3.0/Dockerfile +43 -0
  7. mapsmith-0.3.0/PKG-INFO +830 -0
  8. mapsmith-0.3.0/README.md +788 -0
  9. mapsmith-0.3.0/SECURITY.md +171 -0
  10. mapsmith-0.3.0/docs/argleton-run.json +11 -0
  11. mapsmith-0.3.0/docs/benchmarks.md +568 -0
  12. mapsmith-0.3.0/docs/catalog-entry-spec.md +259 -0
  13. {mapsmith-0.2.1 → mapsmith-0.3.0}/examples/03_validated_plans.ipynb +23 -23
  14. mapsmith-0.3.0/funding.json +71 -0
  15. mapsmith-0.3.0/pyproject.toml +113 -0
  16. mapsmith-0.3.0/schema/operation.schema.json +198 -0
  17. {mapsmith-0.2.1 → mapsmith-0.3.0}/server.json +4 -4
  18. mapsmith-0.3.0/site/build.py +388 -0
  19. mapsmith-0.3.0/site/index.template.html +552 -0
  20. mapsmith-0.3.0/src/mapsmith/__init__.py +12 -0
  21. mapsmith-0.3.0/src/mapsmith/catalog.py +3798 -0
  22. {mapsmith-0.2.1 → mapsmith-0.3.0}/src/mapsmith/engines/dispatch.py +168 -124
  23. {mapsmith-0.2.1 → mapsmith-0.3.0}/src/mapsmith/engines/duckdb_engine.py +125 -5
  24. mapsmith-0.3.0/src/mapsmith/engines/geodesy.py +200 -0
  25. mapsmith-0.3.0/src/mapsmith/engines/raster.py +1172 -0
  26. mapsmith-0.3.0/src/mapsmith/engines/vector.py +2371 -0
  27. mapsmith-0.3.0/src/mapsmith/engines/whitebox_engine.py +1125 -0
  28. mapsmith-0.3.0/src/mapsmith/gdal_policy.py +128 -0
  29. {mapsmith-0.2.1 → mapsmith-0.3.0}/src/mapsmith/jobs.py +95 -87
  30. {mapsmith-0.2.1 → mapsmith-0.3.0}/src/mapsmith/plans/executor.py +169 -158
  31. mapsmith-0.3.0/src/mapsmith/plans/registry.py +607 -0
  32. {mapsmith-0.2.1 → mapsmith-0.3.0}/src/mapsmith/plans/validator.py +706 -689
  33. {mapsmith-0.2.1 → mapsmith-0.3.0}/src/mapsmith/preview.py +266 -291
  34. mapsmith-0.3.0/src/mapsmith/provenance.py +354 -0
  35. mapsmith-0.3.0/src/mapsmith/readers.py +354 -0
  36. mapsmith-0.3.0/src/mapsmith/retrieval.py +163 -0
  37. mapsmith-0.3.0/src/mapsmith/server.py +903 -0
  38. mapsmith-0.3.0/src/mapsmith/sql_policy.py +105 -0
  39. {mapsmith-0.2.1 → mapsmith-0.3.0}/src/mapsmith/verify.py +130 -68
  40. mapsmith-0.3.0/src/mapsmith/workspace.py +201 -0
  41. mapsmith-0.3.0/tests/data/discovery_queries.json +1536 -0
  42. mapsmith-0.3.0/tests/data/manifest-v1.schema.json +284 -0
  43. mapsmith-0.3.0/tests/data/manifest_spec_validator.py +248 -0
  44. mapsmith-0.3.0/tests/test_ambiguous_layer.py +68 -0
  45. mapsmith-0.3.0/tests/test_band_math.py +138 -0
  46. mapsmith-0.3.0/tests/test_catalog.py +166 -0
  47. mapsmith-0.3.0/tests/test_catalog_applicability.py +180 -0
  48. mapsmith-0.3.0/tests/test_catalog_entry_spec.py +109 -0
  49. mapsmith-0.3.0/tests/test_centroid_convert.py +141 -0
  50. mapsmith-0.3.0/tests/test_clip_reclassify_raster.py +179 -0
  51. mapsmith-0.3.0/tests/test_describe_raster.py +75 -0
  52. mapsmith-0.3.0/tests/test_discovery_contract.py +259 -0
  53. mapsmith-0.3.0/tests/test_discovery_report.py +102 -0
  54. {mapsmith-0.2.1 → mapsmith-0.3.0}/tests/test_duckdb_sandbox.py +43 -14
  55. mapsmith-0.3.0/tests/test_gdal_policy.py +313 -0
  56. mapsmith-0.3.0/tests/test_geodesy.py +148 -0
  57. mapsmith-0.3.0/tests/test_geoparquet2.py +444 -0
  58. mapsmith-0.3.0/tests/test_measure_area.py +184 -0
  59. mapsmith-0.3.0/tests/test_merge_simplify.py +188 -0
  60. mapsmith-0.3.0/tests/test_nearest_explode.py +97 -0
  61. mapsmith-0.3.0/tests/test_overlay_dissolve.py +136 -0
  62. mapsmith-0.3.0/tests/test_path_containment.py +249 -0
  63. mapsmith-0.3.0/tests/test_raster_reproject_bands.py +353 -0
  64. mapsmith-0.3.0/tests/test_redaction.py +207 -0
  65. mapsmith-0.3.0/tests/test_resample_raster.py +149 -0
  66. mapsmith-0.3.0/tests/test_retrieval.py +109 -0
  67. mapsmith-0.3.0/tests/test_retrieval_at_scale.py +219 -0
  68. mapsmith-0.3.0/tests/test_retrieval_degradation.py +212 -0
  69. mapsmith-0.3.0/tests/test_showcase.py +868 -0
  70. {mapsmith-0.2.1 → mapsmith-0.3.0}/tests/test_smoke.py +92 -90
  71. mapsmith-0.3.0/tests/test_sql_axis_order.py +111 -0
  72. mapsmith-0.3.0/tests/test_sql_credentials.py +117 -0
  73. mapsmith-0.3.0/tests/test_terrain_derivatives.py +101 -0
  74. mapsmith-0.3.0/tests/test_tier_a_operations.py +307 -0
  75. {mapsmith-0.2.1 → mapsmith-0.3.0}/tests/test_verification_status.py +135 -135
  76. mapsmith-0.3.0/tests/test_verify.py +511 -0
  77. {mapsmith-0.2.1 → mapsmith-0.3.0}/tests/test_verify_repair.py +2 -2
  78. mapsmith-0.3.0/tests/test_voronoi.py +182 -0
  79. {mapsmith-0.2.1 → mapsmith-0.3.0}/tests/test_whitebox.py +201 -201
  80. mapsmith-0.3.0/tests/test_whitebox_derivatives.py +245 -0
  81. mapsmith-0.3.0/tests/test_whitebox_geographic_refusal.py +167 -0
  82. mapsmith-0.3.0/tests/test_worked_example.py +186 -0
  83. {mapsmith-0.2.1 → mapsmith-0.3.0}/tests/test_workspace.py +52 -9
  84. mapsmith-0.2.1/.gitignore +0 -44
  85. mapsmith-0.2.1/CHANGELOG.md +0 -141
  86. mapsmith-0.2.1/Dockerfile +0 -17
  87. mapsmith-0.2.1/PKG-INFO +0 -410
  88. mapsmith-0.2.1/README.md +0 -374
  89. mapsmith-0.2.1/SECURITY.md +0 -83
  90. mapsmith-0.2.1/docs/benchmarks.md +0 -173
  91. mapsmith-0.2.1/pyproject.toml +0 -66
  92. mapsmith-0.2.1/src/mapsmith/__init__.py +0 -3
  93. mapsmith-0.2.1/src/mapsmith/catalog.py +0 -975
  94. mapsmith-0.2.1/src/mapsmith/engines/raster.py +0 -134
  95. mapsmith-0.2.1/src/mapsmith/engines/vector.py +0 -257
  96. mapsmith-0.2.1/src/mapsmith/engines/whitebox_engine.py +0 -431
  97. mapsmith-0.2.1/src/mapsmith/plans/registry.py +0 -161
  98. mapsmith-0.2.1/src/mapsmith/provenance.py +0 -90
  99. mapsmith-0.2.1/src/mapsmith/server.py +0 -465
  100. mapsmith-0.2.1/src/mapsmith/workspace.py +0 -106
  101. mapsmith-0.2.1/tests/test_catalog.py +0 -85
  102. mapsmith-0.2.1/tests/test_showcase.py +0 -303
  103. mapsmith-0.2.1/tests/test_verify.py +0 -69
  104. {mapsmith-0.2.1 → mapsmith-0.3.0}/LICENSE +0 -0
  105. {mapsmith-0.2.1 → mapsmith-0.3.0}/MANIFESTO.md +0 -0
  106. {mapsmith-0.2.1 → mapsmith-0.3.0}/TRADEMARKS.md +0 -0
  107. {mapsmith-0.2.1 → mapsmith-0.3.0}/docker-compose.yml +0 -0
  108. {mapsmith-0.2.1 → mapsmith-0.3.0}/examples/01_verified_geoprocessing.ipynb +0 -0
  109. {mapsmith-0.2.1 → mapsmith-0.3.0}/examples/02_terrain_hydrology.ipynb +0 -0
  110. {mapsmith-0.2.1 → mapsmith-0.3.0}/examples/README.md +0 -0
  111. {mapsmith-0.2.1 → mapsmith-0.3.0}/examples/fixtures/mount_st_helens_dem.tif +0 -0
  112. {mapsmith-0.2.1 → mapsmith-0.3.0}/src/mapsmith/engines/__init__.py +0 -0
  113. {mapsmith-0.2.1 → mapsmith-0.3.0}/src/mapsmith/engines/sedona_engine.py +0 -0
  114. {mapsmith-0.2.1 → mapsmith-0.3.0}/src/mapsmith/plans/__init__.py +0 -0
  115. {mapsmith-0.2.1 → mapsmith-0.3.0}/src/mapsmith/plans/models.py +0 -0
  116. {mapsmith-0.2.1 → mapsmith-0.3.0}/src/mapsmith/ui.py +0 -0
  117. {mapsmith-0.2.1 → mapsmith-0.3.0}/tests/test_catalog_retrieval.py +0 -0
  118. {mapsmith-0.2.1 → mapsmith-0.3.0}/tests/test_engines.py +0 -0
  119. {mapsmith-0.2.1 → mapsmith-0.3.0}/tests/test_plans.py +0 -0
  120. {mapsmith-0.2.1 → mapsmith-0.3.0}/tests/test_preview.py +0 -0
  121. {mapsmith-0.2.1 → mapsmith-0.3.0}/tests/test_raster.py +0 -0
  122. {mapsmith-0.2.1 → mapsmith-0.3.0}/tests/test_ui.py +0 -0
  123. {mapsmith-0.2.1 → mapsmith-0.3.0}/tests/test_whitebox_encoding.py +0 -0
@@ -0,0 +1,35 @@
1
+ # The build only needs pyproject/README/LICENSE/src, but everything else in the
2
+ # directory is still sent to the daemon without this file — including a local
3
+ # .venv, built wheels and any .env sitting next to them. CI builds from a clean
4
+ # checkout, so nothing private has ever reached a published layer; this is here
5
+ # so a `docker build .` on a working machine cannot be the first time.
6
+ .git/
7
+ .github/
8
+ .venv/
9
+ venv/
10
+ env/
11
+ dist/
12
+ build/
13
+ *.egg-info/
14
+ __pycache__/
15
+ *.py[cod]
16
+ .pytest_cache/
17
+ .ruff_cache/
18
+ .mypy_cache/
19
+ .ipynb_checkpoints/
20
+
21
+ # secrets and local configuration
22
+ .env
23
+ .env.*
24
+ *.pem
25
+ *.key
26
+
27
+ # large or irrelevant to the image
28
+ benchmarks/
29
+ docs/
30
+ examples/
31
+ tests/
32
+ deploy/
33
+ *.md
34
+ !README.md
35
+ uv.lock
@@ -0,0 +1,63 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ dist/
6
+ build/
7
+ .venv/
8
+ venv/
9
+ .pytest_cache/
10
+ .ruff_cache/
11
+
12
+ # Data & outputs (never commit datasets)
13
+ *.gpkg
14
+ *.gpkg-journal
15
+ *.shp
16
+ *.shx
17
+ *.dbf
18
+ *.prj
19
+ *.tif
20
+ *.tiff
21
+ *.parquet
22
+ *.provenance.json
23
+ data/
24
+ # ...except the vendored spec artefacts: test dependencies, not datasets. This
25
+ # has now bitten twice in the same way -- the validator was silently ignored
26
+ # once, and on 2026-08-26 the schema next to it went the same way, because the
27
+ # exception was a filename rather than a rule. Both times the conformance test
28
+ # passed locally and CI could not find the file. The comment did not prevent the
29
+ # second one, so `test_showcase.py` now checks that everything under
30
+ # `tests/data/` is tracked: a rule that asserts a property without checking it
31
+ # is worse than no rule.
32
+ !tests/data/
33
+ tests/data/*
34
+ !tests/data/manifest_spec_validator.py
35
+ !tests/data/manifest-v1.schema.json
36
+ # The discovery benchmark: 95 queries written by a second model from work
37
+ # scenarios, never from this catalog. It is tracked BECAUSE it is a dataset — an
38
+ # evaluation set nobody can inspect is a claim, not a measurement.
39
+ !tests/data/discovery_queries.json
40
+
41
+ # Scratch databases: probing the DuckDB sandbox (ATTACH, COPY) drops these in
42
+ # the repo root, and one of them reached a public commit before we noticed.
43
+ *.db
44
+ *.duckdb
45
+ *.wal
46
+
47
+ # OS / editors
48
+ .DS_Store
49
+ Thumbs.db
50
+ .vscode/
51
+ .idea/
52
+
53
+ # Notebook gallery runtime data
54
+ examples/data/
55
+
56
+ # ...but the gallery's one real-world input is versioned on purpose: a
57
+ # showcase built on synthetic terrain does not show what the tools do.
58
+ !examples/fixtures/
59
+ !examples/fixtures/*.tif
60
+ uv.lock
61
+
62
+ # The site is generated: `python site/build.py dist` rebuilds it from a real run.
63
+ site/generated/