core-lens 0.1.dev149__tar.gz → 0.1.dev151__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.
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/PKG-INFO +1 -1
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/_version.py +2 -2
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/base/result.py +27 -5
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/.github/ISSUE_TEMPLATE/blank-proposal.yaml +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/.github/ISSUE_TEMPLATE/bug-report.yaml +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/.github/ISSUE_TEMPLATE/feature-request.yaml +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/.github/pull_request_template.md +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/.github/workflows/ci.yml +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/.github/workflows/gh-pages.yml +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/.github/workflows/pre-release.yml +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/.github/workflows/release.yml +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/.gitignore +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/.gitmessage +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/.pre-commit-config.yaml +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/.python-version +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/CONTRIBUTING.md +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/LICENSE +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/README.md +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/SKILLS.md +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/benchmarks/README.md +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/benchmarks/bench_aoi.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/benchmarks/bench_export.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/benchmarks/bench_polars_utils.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/benchmarks/bench_result.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/benchmarks/bench_schema.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/benchmarks/bench_season.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/benchmarks/bench_spatial.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/benchmarks/bench_view.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/benchmarks/run_all.sh +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/docs/Makefile +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/docs/make.bat +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/docs/source/concepts.md +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/docs/source/conf.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/docs/source/export.md +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/docs/source/index.rst +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/docs/source/intro.md +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/docs/source/logging.md +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/docs/source/plots.md +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/docs/source/plugins.md +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/docs/source/queries.md +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/docs/source/quickstart.md +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/docs/source/stats.md +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/examples/demo_mws.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/examples/demo_tehsil.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/hooks/mypy.sh +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/hooks/no-parquet-outside-fixtures.sh +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/hooks/pytest.sh +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/pyproject.toml +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/__init__.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/__main__.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/aoi.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/base/__init__.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/base/entity.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/base/namespaces/__init__.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/base/namespaces/plot.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/base/namespaces/stats.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/base/view.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/entities/__init__.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/entities/mws.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/entities/tehsil.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/entities/waterbody.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/export/__init__.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/export/formats.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/py.typed +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/schema/__init__.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/schema/detection.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/schema/profile.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/utils/__init__.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/utils/paths.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/utils/polars_utils.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/utils/season.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/src/core_lens/utils/spatial.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/fixtures/generate_fixtures.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/unit/conftest.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/unit/test_aoi.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/unit/test_entities.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/unit/test_entity.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/unit/test_export.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/unit/test_main.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/unit/test_plot.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/unit/test_polars_utils.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/unit/test_profile.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/unit/test_result.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/unit/test_schema_detection.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/unit/test_schema_profile.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/unit/test_season.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/unit/test_season_config.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/unit/test_spatial.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/unit/test_stats.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/tests/unit/test_view.py +0 -0
- {core_lens-0.1.dev149 → core_lens-0.1.dev151}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: core-lens
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.dev151
|
|
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.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 1, '
|
|
21
|
+
__version__ = version = '0.1.dev151'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 1, 'dev151')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -89,6 +89,14 @@ class Result:
|
|
|
89
89
|
"""
|
|
90
90
|
return collect_lf(self.data)
|
|
91
91
|
|
|
92
|
+
def materialise(self) -> "Result":
|
|
93
|
+
"""Evaluate the lazy computation graph and cache it in memory.
|
|
94
|
+
|
|
95
|
+
Returns:
|
|
96
|
+
Result: A new Result with the data cached as an in-memory LazyFrame.
|
|
97
|
+
"""
|
|
98
|
+
return self._replace(data=self.df().lazy())
|
|
99
|
+
|
|
92
100
|
def gdf(self) -> "gpd.GeoDataFrame":
|
|
93
101
|
"""Return the data as a ``GeoDataFrame``.
|
|
94
102
|
|
|
@@ -155,11 +163,25 @@ class Result:
|
|
|
155
163
|
return self
|
|
156
164
|
|
|
157
165
|
key_cols = self.key_cols
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
166
|
+
|
|
167
|
+
# 1. Evaluate the heavy aggregation graph ONCE to prevent Polars from
|
|
168
|
+
# evaluating it twice during the geometry extraction and join.
|
|
169
|
+
res = self.materialise()
|
|
170
|
+
keys_df = res.df().select(key_cols)
|
|
171
|
+
|
|
172
|
+
# 2. Push down the geometry filter into the Parquet reader using is_in
|
|
173
|
+
# so we don't scan the entire static geometry file (which takes ~0.4s).
|
|
174
|
+
geo_lf = self.entity.geometry_lazy
|
|
175
|
+
if len(key_cols) == 1 and keys_df.height < 50000:
|
|
176
|
+
key = key_cols[0]
|
|
177
|
+
geo_lf = geo_lf.filter(pl.col(key).is_in(keys_df[key]))
|
|
178
|
+
else:
|
|
179
|
+
geo_lf = geo_lf.join(keys_df.lazy(), on=key_cols, how="semi")
|
|
180
|
+
|
|
181
|
+
joined = res.data.join(geo_lf, on=key_cols, how="left")
|
|
182
|
+
|
|
183
|
+
# 3. Cache the joined geometry so multiple plots are instant.
|
|
184
|
+
return res._replace(data=joined, has_geometry=True).materialise()
|
|
163
185
|
|
|
164
186
|
def derive(self, name: str, expr: pl.Expr) -> "Result":
|
|
165
187
|
"""Return a new ``Result`` with a computed column appended.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|