core-lens 0.1.dev109__tar.gz → 0.1.dev111__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 (75) hide show
  1. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/PKG-INFO +1 -1
  2. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/_version.py +2 -2
  3. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/utils/spatial.py +27 -16
  4. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/.github/pull_request_template.md +0 -0
  5. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/.github/workflows/ci.yml +0 -0
  6. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/.github/workflows/gh-pages.yml +0 -0
  7. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/.github/workflows/pre-release.yml +0 -0
  8. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/.github/workflows/release.yml +0 -0
  9. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/.gitignore +0 -0
  10. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/.gitmessage +0 -0
  11. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/.pre-commit-config.yaml +0 -0
  12. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/.python-version +0 -0
  13. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/CONTRIBUTING.md +0 -0
  14. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/LICENSE +0 -0
  15. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/README.md +0 -0
  16. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/SKILLS.md +0 -0
  17. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/docs/Makefile +0 -0
  18. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/docs/make.bat +0 -0
  19. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/docs/source/concepts.md +0 -0
  20. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/docs/source/conf.py +0 -0
  21. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/docs/source/index.rst +0 -0
  22. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/docs/source/intro.md +0 -0
  23. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/docs/source/plots.md +0 -0
  24. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/docs/source/plugins.md +0 -0
  25. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/docs/source/queries.md +0 -0
  26. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/docs/source/quickstart.md +0 -0
  27. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/docs/source/stats.md +0 -0
  28. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/examples/demo_mws.py +0 -0
  29. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/examples/demo_tehsil.py +0 -0
  30. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/hooks/mypy.sh +0 -0
  31. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/hooks/no-parquet-outside-fixtures.sh +0 -0
  32. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/hooks/pytest.sh +0 -0
  33. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/pyproject.toml +0 -0
  34. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/__init__.py +0 -0
  35. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/__main__.py +0 -0
  36. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/aoi.py +0 -0
  37. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/base/__init__.py +0 -0
  38. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/base/entity.py +0 -0
  39. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/base/namespaces/__init__.py +0 -0
  40. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/base/namespaces/plot.py +0 -0
  41. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/base/namespaces/stats.py +0 -0
  42. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/base/result.py +0 -0
  43. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/base/view.py +0 -0
  44. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/entities/__init__.py +0 -0
  45. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/entities/mws.py +0 -0
  46. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/entities/tehsil.py +0 -0
  47. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/entities/waterbody.py +0 -0
  48. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/export/__init__.py +0 -0
  49. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/export/formats.py +0 -0
  50. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/py.typed +0 -0
  51. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/schema/__init__.py +0 -0
  52. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/schema/detection.py +0 -0
  53. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/schema/profile.py +0 -0
  54. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/utils/__init__.py +0 -0
  55. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/utils/polars_utils.py +0 -0
  56. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/src/core_lens/utils/season.py +0 -0
  57. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/fixtures/generate_fixtures.py +0 -0
  58. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/unit/conftest.py +0 -0
  59. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/unit/test_aoi.py +0 -0
  60. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/unit/test_entities.py +0 -0
  61. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/unit/test_entity.py +0 -0
  62. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/unit/test_export.py +0 -0
  63. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/unit/test_main.py +0 -0
  64. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/unit/test_plot.py +0 -0
  65. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/unit/test_polars_utils.py +0 -0
  66. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/unit/test_profile.py +0 -0
  67. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/unit/test_result.py +0 -0
  68. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/unit/test_schema_detection.py +0 -0
  69. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/unit/test_schema_profile.py +0 -0
  70. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/unit/test_season.py +0 -0
  71. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/unit/test_season_config.py +0 -0
  72. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/unit/test_spatial.py +0 -0
  73. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/unit/test_stats.py +0 -0
  74. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/tests/unit/test_view.py +0 -0
  75. {core_lens-0.1.dev109 → core_lens-0.1.dev111}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: core-lens
3
- Version: 0.1.dev109
3
+ Version: 0.1.dev111
4
4
  Summary: Query, analyse, and visualise CoreStack's microwatershed and Earth science data through a clean, composable Python API.
5
5
  Project-URL: Homepage, https://github.com/ApoorvaKashyap/core-lens
6
6
  Project-URL: Issues, https://github.com/ApoorvaKashyap/core-lens/issues
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.1.dev109'
22
- __version_tuple__ = version_tuple = (0, 1, 'dev109')
21
+ __version__ = version = '0.1.dev111'
22
+ __version_tuple__ = version_tuple = (0, 1, 'dev111')
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -77,26 +77,37 @@ def build_bbox_index(
77
77
  + "Cannot compute bounds from separate lat/lon columns without bbox hints."
78
78
  )
79
79
 
80
- df = pl.read_parquet(static_path, columns=cols_to_read)
81
- geom_series = df[geometry_col]
80
+ import pyarrow.dataset as ds # type: ignore[import-untyped]
82
81
 
83
- geom_array = geom_series.to_numpy()
82
+ dataset = ds.dataset(static_path)
83
+ chunks = []
84
84
 
85
- if geometry_type == "wkb":
86
- geoms = shapely.from_wkb(geom_array)
87
- else:
88
- geoms = shapely.from_wkt(geom_array)
85
+ for batch in dataset.to_batches(columns=cols_to_read, batch_size=25_000):
86
+ batch_df = pl.from_arrow(batch)
87
+ assert isinstance(batch_df, pl.DataFrame)
89
88
 
90
- if len(geoms) > 0:
91
- bnds = shapely.bounds(geoms)
92
- return df.select(key_cols).with_columns(
93
- pl.Series("minx", bnds[:, 0], dtype=pl.Float64),
94
- pl.Series("miny", bnds[:, 1], dtype=pl.Float64),
95
- pl.Series("maxx", bnds[:, 2], dtype=pl.Float64),
96
- pl.Series("maxy", bnds[:, 3], dtype=pl.Float64),
97
- )
89
+ geom_array = batch_df.get_column(geometry_col).to_numpy()
98
90
 
99
- return df.select(key_cols).with_columns(
91
+ if geometry_type == "wkb":
92
+ geoms = shapely.from_wkb(geom_array)
93
+ else:
94
+ geoms = shapely.from_wkt(geom_array)
95
+
96
+ if len(geoms) > 0:
97
+ bnds = shapely.bounds(geoms)
98
+ chunk = batch_df.select(key_cols).with_columns(
99
+ pl.Series("minx", bnds[:, 0], dtype=pl.Float64),
100
+ pl.Series("miny", bnds[:, 1], dtype=pl.Float64),
101
+ pl.Series("maxx", bnds[:, 2], dtype=pl.Float64),
102
+ pl.Series("maxy", bnds[:, 3], dtype=pl.Float64),
103
+ )
104
+ chunks.append(chunk)
105
+
106
+ if chunks:
107
+ return pl.concat(chunks)
108
+
109
+ empty_df = pl.read_parquet(static_path, columns=key_cols)
110
+ return empty_df.with_columns(
100
111
  pl.Series("minx", [], dtype=pl.Float64),
101
112
  pl.Series("miny", [], dtype=pl.Float64),
102
113
  pl.Series("maxx", [], dtype=pl.Float64),
File without changes
File without changes
File without changes
File without changes