plain.observer 0.9.1__tar.gz → 0.10.1__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.
Potentially problematic release.
This version of plain.observer might be problematic. Click here for more details.
- {plain_observer-0.9.1 → plain_observer-0.10.1}/PKG-INFO +1 -1
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/CHANGELOG.md +22 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/models.py +22 -18
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/views.py +2 -2
- {plain_observer-0.9.1 → plain_observer-0.10.1}/pyproject.toml +1 -1
- {plain_observer-0.9.1 → plain_observer-0.10.1}/.gitignore +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/LICENSE +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/README.md +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/README.md +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/__init__.py +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/admin.py +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/cli.py +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/config.py +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/core.py +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/default_settings.py +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/logging.py +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/migrations/0001_initial.py +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/migrations/0002_trace_share_created_at_trace_share_id_trace_summary_and_more.py +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/migrations/0003_span_plainobserv_span_id_e7ade3_idx.py +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/migrations/0004_trace_app_name_trace_app_version.py +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/migrations/0005_log_log_plainobserv_trace_i_fcfb7d_idx_and_more.py +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/migrations/0006_remove_log_logger.py +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/migrations/__init__.py +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/otel.py +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/templates/observer/partials/log.html +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/templates/observer/partials/span.html +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/templates/observer/trace.html +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/templates/observer/trace_detail.html +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/templates/observer/trace_share.html +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/templates/observer/traces.html +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/templates/toolbar/observer.html +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/templates/toolbar/observer_button.html +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/toolbar.py +0 -0
- {plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/urls.py +0 -0
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# plain-observer changelog
|
|
2
2
|
|
|
3
|
+
## [0.10.1](https://github.com/dropseed/plain/releases/plain-observer@0.10.1) (2025-10-08)
|
|
4
|
+
|
|
5
|
+
### What's changed
|
|
6
|
+
|
|
7
|
+
- Fixed content negotiation priority in trace detail and shared views to prefer HTML over JSON by default ([00212835aa](https://github.com/dropseed/plain/commit/00212835aa))
|
|
8
|
+
|
|
9
|
+
### Upgrade instructions
|
|
10
|
+
|
|
11
|
+
- No changes required
|
|
12
|
+
|
|
13
|
+
## [0.10.0](https://github.com/dropseed/plain/releases/plain-observer@0.10.0) (2025-10-07)
|
|
14
|
+
|
|
15
|
+
### What's changed
|
|
16
|
+
|
|
17
|
+
- Model configuration now uses `model_options` descriptor instead of `class Meta` for improved consistency with Plain framework patterns ([17a378d](https://github.com/dropseed/plain/commit/17a378dcfb))
|
|
18
|
+
- Custom QuerySet classes are now defined as descriptors on the model class instead of being configured in Meta ([2578301](https://github.com/dropseed/plain/commit/2578301819))
|
|
19
|
+
- Internal model metadata split into separate `model_options` and `_model_meta` attributes for better organization ([73ba469](https://github.com/dropseed/plain/commit/73ba469ba0))
|
|
20
|
+
|
|
21
|
+
### Upgrade instructions
|
|
22
|
+
|
|
23
|
+
- No changes required
|
|
24
|
+
|
|
3
25
|
## [0.9.1](https://github.com/dropseed/plain/releases/plain-observer@0.9.1) (2025-10-06)
|
|
4
26
|
|
|
5
27
|
### What's changed
|
|
@@ -63,21 +63,22 @@ class Trace(models.Model):
|
|
|
63
63
|
spans: BaseRelatedManager
|
|
64
64
|
logs: BaseRelatedManager
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
ordering
|
|
68
|
-
constraints
|
|
66
|
+
model_options = models.Options(
|
|
67
|
+
ordering=["-start_time"],
|
|
68
|
+
constraints=[
|
|
69
69
|
models.UniqueConstraint(
|
|
70
70
|
fields=["trace_id"],
|
|
71
71
|
name="observer_unique_trace_id",
|
|
72
72
|
)
|
|
73
|
-
]
|
|
74
|
-
indexes
|
|
73
|
+
],
|
|
74
|
+
indexes=[
|
|
75
75
|
models.Index(fields=["trace_id"]),
|
|
76
76
|
models.Index(fields=["start_time"]),
|
|
77
77
|
models.Index(fields=["request_id"]),
|
|
78
78
|
models.Index(fields=["share_id"]),
|
|
79
79
|
models.Index(fields=["session_id"]),
|
|
80
|
-
]
|
|
80
|
+
],
|
|
81
|
+
)
|
|
81
82
|
|
|
82
83
|
def __str__(self) -> str:
|
|
83
84
|
return self.trace_id
|
|
@@ -268,7 +269,7 @@ class Trace(models.Model):
|
|
|
268
269
|
return sorted(events, key=lambda x: x["timestamp"])
|
|
269
270
|
|
|
270
271
|
|
|
271
|
-
class SpanQuerySet(models.QuerySet):
|
|
272
|
+
class SpanQuerySet(models.QuerySet["Span"]):
|
|
272
273
|
def annotate_spans(self) -> list[Span]:
|
|
273
274
|
"""Annotate spans with nesting levels and duplicate query warnings."""
|
|
274
275
|
spans: list[Span] = list(self.order_by("start_time"))
|
|
@@ -329,21 +330,23 @@ class Span(models.Model):
|
|
|
329
330
|
status = models.CharField(max_length=50, default="", required=False)
|
|
330
331
|
span_data = models.JSONField(default=dict, required=False)
|
|
331
332
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
333
|
+
query = SpanQuerySet()
|
|
334
|
+
|
|
335
|
+
model_options = models.Options(
|
|
336
|
+
ordering=["-start_time"],
|
|
337
|
+
constraints=[
|
|
336
338
|
models.UniqueConstraint(
|
|
337
339
|
fields=["trace", "span_id"],
|
|
338
340
|
name="observer_unique_span_id",
|
|
339
341
|
)
|
|
340
|
-
]
|
|
341
|
-
indexes
|
|
342
|
+
],
|
|
343
|
+
indexes=[
|
|
342
344
|
models.Index(fields=["span_id"]),
|
|
343
345
|
models.Index(fields=["trace", "span_id"]),
|
|
344
346
|
models.Index(fields=["trace"]),
|
|
345
347
|
models.Index(fields=["start_time"]),
|
|
346
|
-
]
|
|
348
|
+
],
|
|
349
|
+
)
|
|
347
350
|
|
|
348
351
|
if TYPE_CHECKING:
|
|
349
352
|
level: int
|
|
@@ -513,11 +516,12 @@ class Log(models.Model):
|
|
|
513
516
|
level = models.CharField(max_length=20)
|
|
514
517
|
message = models.TextField()
|
|
515
518
|
|
|
516
|
-
|
|
517
|
-
ordering
|
|
518
|
-
indexes
|
|
519
|
+
model_options = models.Options(
|
|
520
|
+
ordering=["timestamp"],
|
|
521
|
+
indexes=[
|
|
519
522
|
models.Index(fields=["trace", "timestamp"]),
|
|
520
523
|
models.Index(fields=["trace", "span"]),
|
|
521
524
|
models.Index(fields=["timestamp"]),
|
|
522
525
|
models.Index(fields=["trace"]),
|
|
523
|
-
]
|
|
526
|
+
],
|
|
527
|
+
)
|
|
@@ -95,7 +95,7 @@ class ObserverTraceDetailView(AuthViewMixin, HTMXViewMixin, DetailView):
|
|
|
95
95
|
|
|
96
96
|
def get(self) -> Response | dict[str, Any]:
|
|
97
97
|
"""Return trace data as HTML, JSON, or logs based on content negotiation."""
|
|
98
|
-
preferred = self.request.get_preferred_type("
|
|
98
|
+
preferred = self.request.get_preferred_type("text/html", "application/json")
|
|
99
99
|
if (
|
|
100
100
|
preferred == "application/json"
|
|
101
101
|
or self.request.query_params.get("format") == "json"
|
|
@@ -152,7 +152,7 @@ class ObserverTraceSharedView(DetailView):
|
|
|
152
152
|
|
|
153
153
|
def get(self) -> Response:
|
|
154
154
|
"""Return trace data as HTML or JSON based on content negotiation."""
|
|
155
|
-
preferred = self.request.get_preferred_type("
|
|
155
|
+
preferred = self.request.get_preferred_type("text/html", "application/json")
|
|
156
156
|
if (
|
|
157
157
|
preferred == "application/json"
|
|
158
158
|
or self.request.query_params.get("format") == "json"
|
|
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
|
{plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/migrations/0006_remove_log_logger.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/templates/observer/partials/log.html
RENAMED
|
File without changes
|
{plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/templates/observer/partials/span.html
RENAMED
|
File without changes
|
|
File without changes
|
{plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/templates/observer/trace_detail.html
RENAMED
|
File without changes
|
{plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/templates/observer/trace_share.html
RENAMED
|
File without changes
|
{plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/templates/observer/traces.html
RENAMED
|
File without changes
|
{plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/templates/toolbar/observer.html
RENAMED
|
File without changes
|
{plain_observer-0.9.1 → plain_observer-0.10.1}/plain/observer/templates/toolbar/observer_button.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|