core-lens 0.1.dev161__tar.gz → 0.1.dev163__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.dev161 → core_lens-0.1.dev163}/PKG-INFO +1 -1
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/pyproject.toml +15 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/_version.py +2 -2
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/base/namespaces/plot.py +9 -14
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/export/formats.py +1 -1
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/utils/spatial.py +1 -1
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/.github/ISSUE_TEMPLATE/blank-proposal.yaml +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/.github/ISSUE_TEMPLATE/bug-report.yaml +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/.github/ISSUE_TEMPLATE/feature-request.yaml +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/.github/pull_request_template.md +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/.github/workflows/ci.yml +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/.github/workflows/gh-pages.yml +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/.github/workflows/pre-release.yml +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/.github/workflows/release.yml +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/.gitignore +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/.gitmessage +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/.pre-commit-config.yaml +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/.python-version +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/CONTRIBUTING.md +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/LICENSE +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/README.md +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/SKILLS.md +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/benchmarks/README.md +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/benchmarks/bench_aoi.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/benchmarks/bench_export.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/benchmarks/bench_polars_utils.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/benchmarks/bench_result.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/benchmarks/bench_schema.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/benchmarks/bench_season.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/benchmarks/bench_spatial.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/benchmarks/bench_view.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/benchmarks/run_all.sh +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/docs/Makefile +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/docs/make.bat +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/docs/source/concepts.md +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/docs/source/conf.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/docs/source/export.md +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/docs/source/index.rst +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/docs/source/intro.md +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/docs/source/logging.md +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/docs/source/plots.md +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/docs/source/plugins.md +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/docs/source/queries.md +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/docs/source/quickstart.md +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/docs/source/stats.md +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/examples/demo_mws.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/examples/demo_tehsil.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/hooks/mypy.sh +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/hooks/no-parquet-outside-fixtures.sh +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/hooks/pytest.sh +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/__init__.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/__main__.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/aoi.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/base/__init__.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/base/entity.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/base/namespaces/__init__.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/base/namespaces/stats.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/base/result.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/base/view.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/entities/__init__.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/entities/mws.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/entities/tehsil.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/entities/waterbody.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/export/__init__.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/py.typed +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/schema/__init__.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/schema/detection.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/schema/profile.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/utils/__init__.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/utils/paths.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/utils/polars_utils.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/src/core_lens/utils/season.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/fixtures/generate_fixtures.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/unit/conftest.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/unit/test_aoi.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/unit/test_entities.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/unit/test_entity.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/unit/test_export.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/unit/test_main.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/unit/test_plot.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/unit/test_polars_utils.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/unit/test_profile.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/unit/test_result.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/unit/test_schema_detection.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/unit/test_schema_profile.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/unit/test_season.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/unit/test_season_config.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/unit/test_spatial.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/unit/test_stats.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/tests/unit/test_view.py +0 -0
- {core_lens-0.1.dev161 → core_lens-0.1.dev163}/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.dev163
|
|
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
|
|
@@ -122,3 +122,18 @@ cudf-polars-cu13 = { index = "nvidia" }
|
|
|
122
122
|
|
|
123
123
|
[tool.coverage.run]
|
|
124
124
|
source = ["src/core_lens"]
|
|
125
|
+
|
|
126
|
+
[tool.ruff.lint]
|
|
127
|
+
select = [
|
|
128
|
+
"E",
|
|
129
|
+
"F", # Default rules (Error and Pyflakes)
|
|
130
|
+
"S", # Enable all flake8-bandit security rules
|
|
131
|
+
]
|
|
132
|
+
ignore = [
|
|
133
|
+
"E501", # line too long
|
|
134
|
+
"S101", # use of assert
|
|
135
|
+
]
|
|
136
|
+
|
|
137
|
+
[tool.ruff.lint.per-file-ignores]
|
|
138
|
+
"tests/*" = ["S"]
|
|
139
|
+
"examples/*" = ["S"]
|
|
@@ -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.dev163'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 1, 'dev163')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -157,7 +157,7 @@ def _wkb_to_arrow_table(
|
|
|
157
157
|
if b"ARROW:extension:metadata" in ext_meta:
|
|
158
158
|
try:
|
|
159
159
|
geo_meta = json.loads(ext_meta[b"ARROW:extension:metadata"].decode("utf-8"))
|
|
160
|
-
except Exception:
|
|
160
|
+
except Exception: # noqa: S110
|
|
161
161
|
pass
|
|
162
162
|
geo_meta["crs"] = "EPSG:4326"
|
|
163
163
|
ext_meta[b"ARROW:extension:metadata"] = json.dumps(geo_meta).encode("utf-8")
|
|
@@ -206,21 +206,16 @@ def _apply_theme(fig: Any, result: "Result", title: str) -> None:
|
|
|
206
206
|
fig.title.text_font = "Inter, sans-serif"
|
|
207
207
|
fig.title.text_font_size = "14pt"
|
|
208
208
|
|
|
209
|
-
from bokeh.models.annotations import
|
|
209
|
+
from bokeh.models.annotations import Title
|
|
210
210
|
|
|
211
|
-
subtitle =
|
|
212
|
-
x=fig.plot_width if hasattr(fig, "plot_width") else 800,
|
|
213
|
-
y=0,
|
|
214
|
-
x_units="screen",
|
|
215
|
-
y_units="screen",
|
|
211
|
+
subtitle = Title(
|
|
216
212
|
text=f"Entity: {entity_name} | Visualised with Bokeh",
|
|
217
213
|
text_font_size="9pt",
|
|
218
214
|
text_color="gray",
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
text_align="right",
|
|
215
|
+
align="right",
|
|
216
|
+
text_font="Inter, sans-serif",
|
|
222
217
|
)
|
|
223
|
-
fig.add_layout(subtitle)
|
|
218
|
+
fig.add_layout(subtitle, "below")
|
|
224
219
|
|
|
225
220
|
|
|
226
221
|
class MapWithLegend:
|
|
@@ -607,8 +602,8 @@ class PlotNamespace:
|
|
|
607
602
|
)
|
|
608
603
|
|
|
609
604
|
if fig.legend:
|
|
610
|
-
fig.legend.location = "top_left"
|
|
611
605
|
fig.legend.click_policy = "hide"
|
|
606
|
+
fig.add_layout(fig.legend[0], "right")
|
|
612
607
|
_apply_theme(fig, self.result, title)
|
|
613
608
|
return fig
|
|
614
609
|
|
|
@@ -720,8 +715,8 @@ class PlotNamespace:
|
|
|
720
715
|
alpha=0.7,
|
|
721
716
|
)
|
|
722
717
|
if fig.legend:
|
|
723
|
-
fig.legend.location = "top_left"
|
|
724
718
|
fig.legend.click_policy = "hide"
|
|
719
|
+
fig.add_layout(fig.legend[0], "right")
|
|
725
720
|
_apply_theme(fig, self.result, "Scatter Distribution")
|
|
726
721
|
return fig
|
|
727
722
|
|
|
@@ -791,8 +786,8 @@ class PlotNamespace:
|
|
|
791
786
|
legend_label=str(entity),
|
|
792
787
|
)
|
|
793
788
|
if fig.legend:
|
|
794
|
-
fig.legend.location = "top_right"
|
|
795
789
|
fig.legend.click_policy = "hide"
|
|
790
|
+
fig.add_layout(fig.legend[0], "right")
|
|
796
791
|
_apply_theme(fig, self.result, "Distribution")
|
|
797
792
|
return fig
|
|
798
793
|
|
|
@@ -59,7 +59,7 @@ def _bbox_sidecar_path(static_path: str) -> pathlib.Path | None:
|
|
|
59
59
|
# Fallback to user cache dir.
|
|
60
60
|
import hashlib
|
|
61
61
|
|
|
62
|
-
fingerprint = hashlib.
|
|
62
|
+
fingerprint = hashlib.sha256(static_path.encode()).hexdigest()[:16]
|
|
63
63
|
_CACHE_DIR.mkdir(parents=True, exist_ok=True)
|
|
64
64
|
sidecar = _CACHE_DIR / (fingerprint + _SIDECAR_SUFFIX)
|
|
65
65
|
return sidecar
|
|
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
|