core-lens 0.1.dev99__tar.gz → 0.1.dev100__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.dev99 → core_lens-0.1.dev100}/PKG-INFO +1 -1
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/_version.py +2 -2
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/base/namespaces/plot.py +40 -16
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/.github/pull_request_template.md +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/.github/workflows/ci.yml +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/.github/workflows/gh-pages.yml +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/.github/workflows/pre-release.yml +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/.github/workflows/release.yml +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/.gitignore +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/.gitmessage +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/.pre-commit-config.yaml +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/.python-version +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/CONTRIBUTING.md +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/LICENSE +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/README.md +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/SKILLS.md +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/docs/Makefile +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/docs/make.bat +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/docs/source/concepts.md +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/docs/source/conf.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/docs/source/index.rst +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/docs/source/intro.md +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/docs/source/plots.md +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/docs/source/plugins.md +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/docs/source/queries.md +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/docs/source/quickstart.md +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/docs/source/stats.md +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/examples/demo_mws.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/examples/demo_tehsil.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/hooks/mypy.sh +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/hooks/no-parquet-outside-fixtures.sh +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/hooks/pytest.sh +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/pyproject.toml +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/__init__.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/__main__.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/aoi.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/base/__init__.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/base/entity.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/base/namespaces/__init__.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/base/namespaces/stats.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/base/result.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/base/view.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/entities/__init__.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/entities/mws.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/entities/tehsil.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/export/__init__.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/export/formats.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/py.typed +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/schema/__init__.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/schema/detection.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/schema/profile.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/utils/__init__.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/utils/polars_utils.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/utils/season.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/src/core_lens/utils/spatial.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/fixtures/generate_fixtures.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/unit/conftest.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/unit/test_aoi.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/unit/test_entities.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/unit/test_entity.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/unit/test_export.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/unit/test_main.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/unit/test_plot.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/unit/test_polars_utils.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/unit/test_profile.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/unit/test_result.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/unit/test_schema_detection.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/unit/test_schema_profile.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/unit/test_season.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/unit/test_season_config.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/unit/test_spatial.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/unit/test_stats.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/tests/unit/test_view.py +0 -0
- {core_lens-0.1.dev99 → core_lens-0.1.dev100}/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.dev100
|
|
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.dev100'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 1, 'dev100')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -261,9 +261,8 @@ class PlotNamespace:
|
|
|
261
261
|
y_col = y_cols[0]
|
|
262
262
|
|
|
263
263
|
def _make_fig(pdf: Any, title: str) -> "BokehFigure":
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
]
|
|
264
|
+
hover_cols = [c for c in pdf.columns if c not in ("geometry", "geom")]
|
|
265
|
+
tooltips = [(c, f"@{{{c}}}") for c in hover_cols]
|
|
267
266
|
fig = figure( # type: ignore[call-arg]
|
|
268
267
|
width=900,
|
|
269
268
|
height=400,
|
|
@@ -275,6 +274,13 @@ class PlotNamespace:
|
|
|
275
274
|
fig.xaxis.axis_label_text_font = "Inter, sans-serif"
|
|
276
275
|
fig.yaxis.axis_label_text_font = "Inter, sans-serif"
|
|
277
276
|
|
|
277
|
+
from bokeh.models import ColumnDataSource
|
|
278
|
+
|
|
279
|
+
def _src(row: Any) -> ColumnDataSource:
|
|
280
|
+
return ColumnDataSource(
|
|
281
|
+
{c: row[c].tolist() for c in hover_cols if c in row.columns}
|
|
282
|
+
)
|
|
283
|
+
|
|
278
284
|
if subplot_col and subplot_col in pdf.columns:
|
|
279
285
|
# One sub-panel per unique subplot_col value via colour coding.
|
|
280
286
|
unique_vals = sorted(pdf[subplot_col].dropna().unique())
|
|
@@ -287,16 +293,19 @@ class PlotNamespace:
|
|
|
287
293
|
row = sub[sub[key_col] == entity] if entity is not None else sub
|
|
288
294
|
color = _color_for(vi * len(entities) + ei)
|
|
289
295
|
label = f"{entity} ({val})" if entity is not None else str(val)
|
|
296
|
+
source = _src(row)
|
|
290
297
|
fig.line(
|
|
291
|
-
x=
|
|
292
|
-
y=
|
|
298
|
+
x=x,
|
|
299
|
+
y=y_col,
|
|
300
|
+
source=source,
|
|
293
301
|
color=color,
|
|
294
302
|
legend_label=label,
|
|
295
303
|
line_width=2,
|
|
296
304
|
)
|
|
297
305
|
fig.scatter(
|
|
298
|
-
x=
|
|
299
|
-
y=
|
|
306
|
+
x=x,
|
|
307
|
+
y=y_col,
|
|
308
|
+
source=source,
|
|
300
309
|
color=color,
|
|
301
310
|
size=5,
|
|
302
311
|
)
|
|
@@ -304,26 +313,35 @@ class PlotNamespace:
|
|
|
304
313
|
for i, entity in enumerate(pdf[key_col].unique()):
|
|
305
314
|
row = pdf[pdf[key_col] == entity]
|
|
306
315
|
color = _color_for(i)
|
|
316
|
+
source = _src(row)
|
|
307
317
|
fig.line(
|
|
308
|
-
x=
|
|
309
|
-
y=
|
|
318
|
+
x=x,
|
|
319
|
+
y=y_col,
|
|
320
|
+
source=source,
|
|
310
321
|
color=color,
|
|
311
322
|
legend_label=str(entity),
|
|
312
323
|
line_width=2,
|
|
313
324
|
)
|
|
314
325
|
fig.scatter(
|
|
315
|
-
x=
|
|
326
|
+
x=x,
|
|
327
|
+
y=y_col,
|
|
328
|
+
source=source,
|
|
329
|
+
color=color,
|
|
330
|
+
size=5,
|
|
316
331
|
)
|
|
317
332
|
else:
|
|
333
|
+
source = _src(pdf)
|
|
318
334
|
fig.line(
|
|
319
|
-
x=
|
|
320
|
-
y=
|
|
335
|
+
x=x,
|
|
336
|
+
y=y_col,
|
|
337
|
+
source=source,
|
|
321
338
|
color=_color_for(0),
|
|
322
339
|
line_width=2,
|
|
323
340
|
)
|
|
324
341
|
fig.scatter(
|
|
325
|
-
x=
|
|
326
|
-
y=
|
|
342
|
+
x=x,
|
|
343
|
+
y=y_col,
|
|
344
|
+
source=source,
|
|
327
345
|
color=_color_for(0),
|
|
328
346
|
size=5,
|
|
329
347
|
)
|
|
@@ -407,6 +425,8 @@ class PlotNamespace:
|
|
|
407
425
|
df_pd = df.to_pandas()
|
|
408
426
|
|
|
409
427
|
def _make_scatter(y_col: str) -> "BokehFigure":
|
|
428
|
+
from bokeh.models import ColumnDataSource
|
|
429
|
+
|
|
410
430
|
fig = figure( # type: ignore[call-arg]
|
|
411
431
|
width=800,
|
|
412
432
|
height=450,
|
|
@@ -417,9 +437,13 @@ class PlotNamespace:
|
|
|
417
437
|
)
|
|
418
438
|
for i, entity in enumerate(df_pd[key_col].unique()):
|
|
419
439
|
row = df_pd[df_pd[key_col] == entity]
|
|
440
|
+
source = ColumnDataSource(
|
|
441
|
+
{c: row[c].tolist() for c in hover_cols if c in row.columns}
|
|
442
|
+
)
|
|
420
443
|
fig.scatter(
|
|
421
|
-
x=
|
|
422
|
-
y=
|
|
444
|
+
x=x,
|
|
445
|
+
y=y_col,
|
|
446
|
+
source=source,
|
|
423
447
|
color=_color_for(i),
|
|
424
448
|
legend_label=str(entity),
|
|
425
449
|
size=8,
|
|
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
|