loki-reader-core 0.2.1__tar.gz → 0.2.3__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.
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/PKG-INFO +1 -1
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/pyproject.toml +1 -1
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/src/loki_reader_core/__init__.py +1 -1
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/src/loki_reader_core/client.py +35 -11
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/.gitignore +0 -0
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/README.md +0 -0
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/build-publish.sh +0 -0
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/dev-requirements.txt +0 -0
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/src/loki_reader_core/exceptions.py +0 -0
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/src/loki_reader_core/models/__init__.py +0 -0
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/src/loki_reader_core/models/log_entry.py +0 -0
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/src/loki_reader_core/models/log_stream.py +0 -0
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/src/loki_reader_core/models/metric_sample.py +0 -0
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/src/loki_reader_core/models/metric_series.py +0 -0
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/src/loki_reader_core/models/query_result.py +0 -0
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/src/loki_reader_core/models/query_stats.py +0 -0
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/src/loki_reader_core/utils.py +0 -0
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/tests/__init__.py +0 -0
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/tests/test_client.py +0 -0
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/tests/test_models.py +0 -0
- {loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/tests/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: loki-reader-core
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: Python library for querying Grafana Loki logs via REST API
|
|
5
5
|
Project-URL: Homepage, https://github.com/jmazzahacks/loki-reader-core
|
|
6
6
|
Project-URL: Issues, https://github.com/jmazzahacks/loki-reader-core/issues
|
|
@@ -6,7 +6,7 @@ from .client import LokiClient
|
|
|
6
6
|
from .exceptions import LokiAuthError, LokiConnectionError, LokiError, LokiQueryError
|
|
7
7
|
from .models import LogEntry, LogStream, MetricSample, MetricSeries, QueryResult, QueryStats
|
|
8
8
|
|
|
9
|
-
__version__ = "0.2.
|
|
9
|
+
__version__ = "0.2.3"
|
|
10
10
|
|
|
11
11
|
__all__ = [
|
|
12
12
|
"LokiClient",
|
|
@@ -269,6 +269,20 @@ class LokiClient:
|
|
|
269
269
|
|
|
270
270
|
return data
|
|
271
271
|
|
|
272
|
+
def _discovery_time_range(self) -> tuple[int, int]:
|
|
273
|
+
"""Get a 30-day time range for label discovery queries.
|
|
274
|
+
|
|
275
|
+
Without a time range, Loki's label API only returns labels for
|
|
276
|
+
recently active streams. Using a 30-day window ensures we find
|
|
277
|
+
apps that haven't logged in a while.
|
|
278
|
+
|
|
279
|
+
Returns:
|
|
280
|
+
Tuple of (start_ns, end_ns) covering the last 30 days.
|
|
281
|
+
"""
|
|
282
|
+
end = now_ns()
|
|
283
|
+
start = end - (30 * 24 * NANOSECONDS_PER_HOUR)
|
|
284
|
+
return (start, end)
|
|
285
|
+
|
|
272
286
|
def _find_app_label(self, app_value: str) -> str:
|
|
273
287
|
"""Discover which label name contains the given app value.
|
|
274
288
|
|
|
@@ -436,6 +450,10 @@ class LokiClient:
|
|
|
436
450
|
"""
|
|
437
451
|
Get list of available label names.
|
|
438
452
|
|
|
453
|
+
Defaults to a 30-day lookback when no time range is provided,
|
|
454
|
+
since Loki's label API may only return labels for recently
|
|
455
|
+
active streams without an explicit range.
|
|
456
|
+
|
|
439
457
|
Args:
|
|
440
458
|
start: Optional start timestamp in nanoseconds.
|
|
441
459
|
end: Optional end timestamp in nanoseconds.
|
|
@@ -443,14 +461,15 @@ class LokiClient:
|
|
|
443
461
|
Returns:
|
|
444
462
|
List of label names.
|
|
445
463
|
"""
|
|
446
|
-
|
|
464
|
+
if start is None and end is None:
|
|
465
|
+
start, end = self._discovery_time_range()
|
|
447
466
|
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
467
|
+
params = {
|
|
468
|
+
"start": str(start),
|
|
469
|
+
"end": str(end),
|
|
470
|
+
}
|
|
452
471
|
|
|
453
|
-
response = self._request("GET", "/loki/api/v1/labels", params
|
|
472
|
+
response = self._request("GET", "/loki/api/v1/labels", params)
|
|
454
473
|
return response.get("data", [])
|
|
455
474
|
|
|
456
475
|
def get_label_values(
|
|
@@ -462,6 +481,10 @@ class LokiClient:
|
|
|
462
481
|
"""
|
|
463
482
|
Get list of values for a specific label.
|
|
464
483
|
|
|
484
|
+
Defaults to a 30-day lookback when no time range is provided,
|
|
485
|
+
since Loki's label API may only return values for recently
|
|
486
|
+
active streams without an explicit range.
|
|
487
|
+
|
|
465
488
|
Args:
|
|
466
489
|
label: Label name to get values for.
|
|
467
490
|
start: Optional start timestamp in nanoseconds.
|
|
@@ -470,12 +493,13 @@ class LokiClient:
|
|
|
470
493
|
Returns:
|
|
471
494
|
List of label values.
|
|
472
495
|
"""
|
|
473
|
-
|
|
496
|
+
if start is None and end is None:
|
|
497
|
+
start, end = self._discovery_time_range()
|
|
474
498
|
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
499
|
+
params = {
|
|
500
|
+
"start": str(start),
|
|
501
|
+
"end": str(end),
|
|
502
|
+
}
|
|
479
503
|
|
|
480
504
|
endpoint = f"/loki/api/v1/label/{label}/values"
|
|
481
505
|
response = self._request("GET", endpoint, params or None)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/src/loki_reader_core/models/metric_sample.py
RENAMED
|
File without changes
|
{loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/src/loki_reader_core/models/metric_series.py
RENAMED
|
File without changes
|
{loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/src/loki_reader_core/models/query_result.py
RENAMED
|
File without changes
|
{loki_reader_core-0.2.1 → loki_reader_core-0.2.3}/src/loki_reader_core/models/query_stats.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|