runtime-narrative 1.2.0__tar.gz → 1.2.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.
- {runtime_narrative-1.2.0/runtime_narrative.egg-info → runtime_narrative-1.2.1}/PKG-INFO +2 -1
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/README.md +1 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/pyproject.toml +1 -1
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/__init__.py +1 -1
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/renderer/console.py +6 -1
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1/runtime_narrative.egg-info}/PKG-INFO +2 -1
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/LICENSE +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/analyzers/__init__.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/analyzers/anthropic.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/analyzers/base.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/analyzers/deduplication.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/analyzers/ollama.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/celery.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/cli.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/context.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/decorators.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/diagnostics.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/events.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/failure.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/grpc_interceptor.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/instrumentation.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/logging_bridge.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/middleware.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/middleware_django.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/renderer/__init__.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/renderer/alert_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/renderer/filter_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/renderer/html_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/renderer/json_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/renderer/otel_log_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/renderer/otel_metrics_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/renderer/otel_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/renderer/persistence_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/renderer/prometheus_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/stage.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/story.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/task_group.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/testing.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative.egg-info/SOURCES.txt +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative.egg-info/dependency_links.txt +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative.egg-info/entry_points.txt +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative.egg-info/requires.txt +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative.egg-info/top_level.txt +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/setup.cfg +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_alert_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_analyzers.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_anthropic_analyzer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_async_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_celery.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_console_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_decorators.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_deduplication.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_diagnostics.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_dry_run.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_failure.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_filter_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_grpc_interceptor.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_html_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_instrumentation.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_instrumentation_phase2.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_issues.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_json_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_logging_bridge.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_middleware.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_middleware_django.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_middleware_propagation.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_otel_log_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_otel_metrics_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_otel_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_persistence_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_prometheus_renderer.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_redaction_extended.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_stage.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_stage_metadata.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_story.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_structured_analysis.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_task_group.py +0 -0
- {runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/tests/test_testing_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: runtime-narrative
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.1
|
|
4
4
|
Summary: Model execution as human-readable stories with lean/rich failure diagnostics and optional LLM analysis
|
|
5
5
|
Author-email: Shashank Raj <shashank.raj28@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -273,6 +273,7 @@ Every script under `examples/` is runnable as-is: `uv run python examples/<name>
|
|
|
273
273
|
| `sqlite_persistence.py` | `SqliteStoryRenderer` + the `runtime-narrative` CLI |
|
|
274
274
|
| `otel_tracing.py` | `OtelRenderer`, `OtelLogRenderer`, `OtelMetricsRenderer` |
|
|
275
275
|
| `alert_routing.py` | `AlertRoutingRenderer` — async webhook fan-out |
|
|
276
|
+
| `colorful_errors_and_emojis.py` | `ConsoleRenderer`'s built-in color + `level_icons` emoji across log levels and a failure |
|
|
276
277
|
|
|
277
278
|
**Framework integrations and concurrency**
|
|
278
279
|
| Script | Demonstrates |
|
|
@@ -214,6 +214,7 @@ Every script under `examples/` is runnable as-is: `uv run python examples/<name>
|
|
|
214
214
|
| `sqlite_persistence.py` | `SqliteStoryRenderer` + the `runtime-narrative` CLI |
|
|
215
215
|
| `otel_tracing.py` | `OtelRenderer`, `OtelLogRenderer`, `OtelMetricsRenderer` |
|
|
216
216
|
| `alert_routing.py` | `AlertRoutingRenderer` — async webhook fan-out |
|
|
217
|
+
| `colorful_errors_and_emojis.py` | `ConsoleRenderer`'s built-in color + `level_icons` emoji across log levels and a failure |
|
|
217
218
|
|
|
218
219
|
**Framework integrations and concurrency**
|
|
219
220
|
| Script | Demonstrates |
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "runtime-narrative"
|
|
7
|
-
version = "1.2.
|
|
7
|
+
version = "1.2.1"
|
|
8
8
|
description = "Model execution as human-readable stories with lean/rich failure diagnostics and optional LLM analysis"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -131,7 +131,12 @@ class ConsoleRenderer:
|
|
|
131
131
|
@staticmethod
|
|
132
132
|
def _secho(text: str, *, fg=None, bold: bool = False, nl: bool = True) -> None:
|
|
133
133
|
if typer is None:
|
|
134
|
-
|
|
134
|
+
try:
|
|
135
|
+
print(text, end="\n" if nl else "")
|
|
136
|
+
except UnicodeEncodeError:
|
|
137
|
+
enc = getattr(sys.stdout, "encoding", "utf-8") or "utf-8"
|
|
138
|
+
safe = text.encode(enc, errors="replace").decode(enc, errors="replace")
|
|
139
|
+
print(safe, end="\n" if nl else "")
|
|
135
140
|
return
|
|
136
141
|
try:
|
|
137
142
|
typer.secho(text, fg=fg, bold=bold, nl=nl)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: runtime-narrative
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.1
|
|
4
4
|
Summary: Model execution as human-readable stories with lean/rich failure diagnostics and optional LLM analysis
|
|
5
5
|
Author-email: Shashank Raj <shashank.raj28@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -273,6 +273,7 @@ Every script under `examples/` is runnable as-is: `uv run python examples/<name>
|
|
|
273
273
|
| `sqlite_persistence.py` | `SqliteStoryRenderer` + the `runtime-narrative` CLI |
|
|
274
274
|
| `otel_tracing.py` | `OtelRenderer`, `OtelLogRenderer`, `OtelMetricsRenderer` |
|
|
275
275
|
| `alert_routing.py` | `AlertRoutingRenderer` — async webhook fan-out |
|
|
276
|
+
| `colorful_errors_and_emojis.py` | `ConsoleRenderer`'s built-in color + `level_icons` emoji across log levels and a failure |
|
|
276
277
|
|
|
277
278
|
**Framework integrations and concurrency**
|
|
278
279
|
| Script | Demonstrates |
|
|
File without changes
|
|
File without changes
|
{runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/analyzers/anthropic.py
RENAMED
|
File without changes
|
|
File without changes
|
{runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/analyzers/deduplication.py
RENAMED
|
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
|
{runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/renderer/alert_renderer.py
RENAMED
|
File without changes
|
{runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/renderer/filter_renderer.py
RENAMED
|
File without changes
|
{runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/renderer/html_renderer.py
RENAMED
|
File without changes
|
{runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/renderer/json_renderer.py
RENAMED
|
File without changes
|
{runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/renderer/otel_log_renderer.py
RENAMED
|
File without changes
|
|
File without changes
|
{runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative/renderer/otel_renderer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
{runtime_narrative-1.2.0 → runtime_narrative-1.2.1}/runtime_narrative.egg-info/top_level.txt
RENAMED
|
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
|