smoothify 0.3.0__tar.gz → 0.3.2__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 (76) hide show
  1. {smoothify-0.3.0 → smoothify-0.3.2}/CHANGELOG.md +11 -0
  2. {smoothify-0.3.0 → smoothify-0.3.2}/PKG-INFO +1 -1
  3. {smoothify-0.3.0 → smoothify-0.3.2}/examples/Water_Smoothed.gpkg +0 -0
  4. smoothify-0.3.2/examples/real_world_water_example.ipynb +773 -0
  5. smoothify-0.3.2/examples/usage_examples.ipynb +837 -0
  6. smoothify-0.3.2/fuzz/__init__.py +27 -0
  7. smoothify-0.3.2/fuzz/generators.py +193 -0
  8. smoothify-0.3.2/fuzz/oracle.py +93 -0
  9. smoothify-0.3.2/fuzz/runner.py +177 -0
  10. {smoothify-0.3.0 → smoothify-0.3.2}/pytest.ini +1 -0
  11. smoothify-0.3.2/scripts/fuzz_run.py +143 -0
  12. smoothify-0.3.2/scripts/fuzz_visualize.py +89 -0
  13. {smoothify-0.3.0 → smoothify-0.3.2}/smoothify/_version.py +3 -3
  14. {smoothify-0.3.0 → smoothify-0.3.2}/smoothify/smoothify_core.py +110 -19
  15. {smoothify-0.3.0 → smoothify-0.3.2}/smoothify.egg-info/PKG-INFO +1 -1
  16. {smoothify-0.3.0 → smoothify-0.3.2}/smoothify.egg-info/SOURCES.txt +10 -0
  17. smoothify-0.3.2/smoothify.egg-info/scm_file_list.json +68 -0
  18. smoothify-0.3.2/smoothify.egg-info/scm_version.json +8 -0
  19. smoothify-0.3.2/tests/test_fuzz.py +54 -0
  20. smoothify-0.3.2/tests/test_self_intersecting_variant.py +86 -0
  21. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_smoothify_core.py +101 -0
  22. smoothify-0.3.0/examples/real_world_water_example.ipynb +0 -773
  23. smoothify-0.3.0/examples/usage_examples.ipynb +0 -837
  24. {smoothify-0.3.0 → smoothify-0.3.2}/.github/workflows/ci.yml +0 -0
  25. {smoothify-0.3.0 → smoothify-0.3.2}/.github/workflows/publish.yml +0 -0
  26. {smoothify-0.3.0 → smoothify-0.3.2}/.gitignore +0 -0
  27. {smoothify-0.3.0 → smoothify-0.3.2}/.pre-commit-config.yaml +0 -0
  28. {smoothify-0.3.0 → smoothify-0.3.2}/.python-version +0 -0
  29. {smoothify-0.3.0 → smoothify-0.3.2}/.vscode/settings.json +0 -0
  30. {smoothify-0.3.0 → smoothify-0.3.2}/LICENSE +0 -0
  31. {smoothify-0.3.0 → smoothify-0.3.2}/README.md +0 -0
  32. {smoothify-0.3.0 → smoothify-0.3.2}/RELEASING.md +0 -0
  33. {smoothify-0.3.0 → smoothify-0.3.2}/benchmarks/bench_water.py +0 -0
  34. {smoothify-0.3.0 → smoothify-0.3.2}/examples/Water.gpkg +0 -0
  35. {smoothify-0.3.0 → smoothify-0.3.2}/examples/merge_holes_examples.ipynb +0 -0
  36. {smoothify-0.3.0 → smoothify-0.3.2}/examples/smoothify_vs_shapely_comparison.ipynb +0 -0
  37. {smoothify-0.3.0 → smoothify-0.3.2}/images/example_1_polygon.png +0 -0
  38. {smoothify-0.3.0 → smoothify-0.3.2}/images/example_2_linestring.png +0 -0
  39. {smoothify-0.3.0 → smoothify-0.3.2}/images/example_3_iterations.png +0 -0
  40. {smoothify-0.3.0 → smoothify-0.3.2}/images/example_4_merging.png +0 -0
  41. {smoothify-0.3.0 → smoothify-0.3.2}/images/generate_example_images.ipynb +0 -0
  42. {smoothify-0.3.0 → smoothify-0.3.2}/images/generate_pipeline_graphic.py +0 -0
  43. {smoothify-0.3.0 → smoothify-0.3.2}/images/generate_readme_image.ipynb +0 -0
  44. {smoothify-0.3.0 → smoothify-0.3.2}/images/pipeline_steps.png +0 -0
  45. {smoothify-0.3.0 → smoothify-0.3.2}/images/smoothify_hero.png +0 -0
  46. {smoothify-0.3.0 → smoothify-0.3.2}/images/smoothify_logo.png +0 -0
  47. {smoothify-0.3.0 → smoothify-0.3.2}/pyproject.toml +0 -0
  48. {smoothify-0.3.0 → smoothify-0.3.2}/setup.cfg +0 -0
  49. {smoothify-0.3.0 → smoothify-0.3.2}/smoothify/__init__.py +0 -0
  50. {smoothify-0.3.0 → smoothify-0.3.2}/smoothify/coordinator.py +0 -0
  51. {smoothify-0.3.0 → smoothify-0.3.2}/smoothify/geometry_ops.py +0 -0
  52. {smoothify-0.3.0 → smoothify-0.3.2}/smoothify/py.typed +0 -0
  53. {smoothify-0.3.0 → smoothify-0.3.2}/smoothify.egg-info/dependency_links.txt +0 -0
  54. {smoothify-0.3.0 → smoothify-0.3.2}/smoothify.egg-info/requires.txt +0 -0
  55. {smoothify-0.3.0 → smoothify-0.3.2}/smoothify.egg-info/top_level.txt +0 -0
  56. {smoothify-0.3.0 → smoothify-0.3.2}/tests/README.md +0 -0
  57. {smoothify-0.3.0 → smoothify-0.3.2}/tests/__init__.py +0 -0
  58. {smoothify-0.3.0 → smoothify-0.3.2}/tests/conftest.py +0 -0
  59. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_all_geometry_types.py +0 -0
  60. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_area_tolerance.py +0 -0
  61. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_auto_segment_length.py +0 -0
  62. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_chaikin.py +0 -0
  63. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_congruence_dedup.py +0 -0
  64. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_convexity_artifacts.py +0 -0
  65. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_corner_rounding.py +0 -0
  66. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_data/convex_pixel_rectangle.gpkg +0 -0
  67. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_data/naip_owm_water_bodies.geojson +0 -0
  68. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_edge_cases_coverage.py +0 -0
  69. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_geometry_types.py +0 -0
  70. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_invalid_polygon.py +0 -0
  71. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_merge_holes.py +0 -0
  72. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_real_world_data.py +0 -0
  73. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_smoothify_api.py +0 -0
  74. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_synthetic_blob_fuzz.py +0 -0
  75. {smoothify-0.3.0 → smoothify-0.3.2}/tests/test_water_quality_sweep.py +0 -0
  76. {smoothify-0.3.0 → smoothify-0.3.2}/tests/visual_tests.ipynb +0 -0
@@ -4,6 +4,17 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.3.2] - 2026-06-30
8
+
9
+ ### Changed
10
+ - Area preservation is faster with no change to output. The buffer-distance search now seeds from the Steiner area expansion `A(d) ≈ A₀ + L·d + π·d²` — solving that quadratic for the initial offset instead of using a linear estimate — and refines with Newton's method using the measured boundary length as the derivative (the rate of area change of an outward offset equals its perimeter), so it no longer brackets the root before solving. This cuts buffer operations per ring from roughly 5–6 to 1–2. On `examples/Water.gpkg` the full single-core pipeline is ~1.3x faster at the default 5 iterations (5.1s → 3.8s), with the speedup scaling up with iteration count and the polygon share of the workload (down to ~1.0x on hole-dominated inputs). Output is unchanged within the area tolerance (per-polygon symmetric difference ≤ 0.005%, area-preservation accuracy identical). Awkward shapes where Newton stalls (pinch-offs or topology changes near the root) fall back to the previous bracketed Brent's-method search, so robustness is unchanged.
11
+
12
+ ## [0.3.1] - 2026-06-15
13
+
14
+ ### Fixed
15
+ - Fixed an `AssertionError` crash (`Resulting geometry must be Polygon or LineString. Got <GeometryCollection>`) when smoothing certain valid thin/staircase polygons only a few `segment_length`s across. A rotated start-point variant could self-intersect after simplify + Chaikin where it rounds a neck about one `segment_length` wide; `make_valid()` then repaired that variant into a polygon *plus* a zero-area line filament at the pinch, and `unary_union` kept the 1-D debris, so the variant union became a `GeometryCollection` the rest of the pipeline could not handle. Zero-area debris is now stripped from each repaired variant before the union, so the result stays a clean, valid `Polygon`.
16
+ - Improved the sharp-concave-fold repair (introduced in 0.3.0) for thin features that shed significant area during smoothing. The closing (dilate-erode) seal now operates on the area-preserved result and restores area again afterwards, instead of sealing the area-deficient pre-buffer variant union — which the area-preservation buffer could then re-expand into the same cusp. This reduces residual folds on narrow arms.
17
+
7
18
  ## [0.3.0] - 2026-06-12
8
19
 
9
20
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smoothify
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: Transform pixelated geometries from raster data into smooth natural looking features
5
5
  Author-email: Nick Wright <nicholas.wright@dpird.wa.gov.au>
6
6
  License-Expression: MIT