log-foundry 0.10.2.dev86__tar.gz → 0.10.2.dev87__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.
Files changed (59) hide show
  1. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/PKG-INFO +18 -9
  2. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/README.md +17 -8
  3. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/pyproject.toml +8 -1
  4. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/LICENSE +0 -0
  5. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/__init__.py +0 -0
  6. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/_diag.py +0 -0
  7. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/_fork.py +0 -0
  8. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/_lifecycle.py +0 -0
  9. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/api.py +0 -0
  10. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/config.py +0 -0
  11. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/console.py +0 -0
  12. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/context.py +0 -0
  13. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/decorator.py +0 -0
  14. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/ids.py +0 -0
  15. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/model.py +0 -0
  16. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/py.typed +0 -0
  17. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/results.py +0 -0
  18. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sanitize.py +0 -0
  19. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/__init__.py +0 -0
  20. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/_batch.py +0 -0
  21. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/_chunk.py +0 -0
  22. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/_retry.py +0 -0
  23. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/_socket.py +0 -0
  24. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/_time.py +0 -0
  25. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/base.py +0 -0
  26. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/callback.py +0 -0
  27. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/clickhouse.py +0 -0
  28. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/datadog.py +0 -0
  29. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/elasticsearch.py +0 -0
  30. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/eventhubs.py +0 -0
  31. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/file.py +0 -0
  32. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/filtering.py +0 -0
  33. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/firehose.py +0 -0
  34. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/honeycomb.py +0 -0
  35. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/http.py +0 -0
  36. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/kafka.py +0 -0
  37. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/kinesis.py +0 -0
  38. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/logging_sink.py +0 -0
  39. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/logstash.py +0 -0
  40. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/loki.py +0 -0
  41. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/memory.py +0 -0
  42. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/mongodb.py +0 -0
  43. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/multi.py +0 -0
  44. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/nats.py +0 -0
  45. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/newrelic.py +0 -0
  46. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/null.py +0 -0
  47. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/postgres.py +0 -0
  48. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/pubsub.py +0 -0
  49. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/rabbitmq.py +0 -0
  50. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/redis.py +0 -0
  51. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/sentry.py +0 -0
  52. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/sns.py +0 -0
  53. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/splunk.py +0 -0
  54. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/sqlite.py +0 -0
  55. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/sqs.py +0 -0
  56. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/stdout.py +0 -0
  57. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/syslog.py +0 -0
  58. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/sinks/transform.py +0 -0
  59. {log_foundry-0.10.2.dev86 → log_foundry-0.10.2.dev87}/src/log_foundry/worker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: log-foundry
3
- Version: 0.10.2.dev86
3
+ Version: 0.10.2.dev87
4
4
  Summary: Generate logs for your console and JSON events for downstream consumption.
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -1308,15 +1308,24 @@ Deeper design docs live in [`docs/`](docs/) — start with [`docs/architecture.m
1308
1308
 
1309
1309
  ### Continuous integration
1310
1310
 
1311
- Every pull request and every push to `main` runs the same set of checks:
1311
+ Every pull request runs the checks below. A check whose verdict cannot change on the tree in
1312
+ front of it is path-filtered rather than run to the same answer twice, so the *When* column is
1313
+ part of the contract:
1312
1314
 
1313
- | Check | Does | Fails the build |
1314
- |---|---|---|
1315
- | [`ci.yml`](.github/workflows/ci.yml) | ruff → mypy → pytest, on 3.12 **and** 3.13 | yes |
1316
- | [`spec-lint.yml`](.github/workflows/spec-lint.yml) | lints the design specs under `docs/specs/` | yes |
1317
- | [`dependency-review.yml`](.github/workflows/dependency-review.yml) | fails a PR that *introduces* a dependency with a known advisory (`moderate`+) | yes |
1318
- | [`zizmor.yml`](.github/workflows/zizmor.yml) | static analysis of the workflow files themselves | no — reports to code scanning |
1319
- | CodeQL | `python` + `actions`, `extended` query suite; also weekly | no — reports to code scanning |
1315
+ | Check | Does | When | Fails the build |
1316
+ |---|---|---|---|
1317
+ | [`ci.yml`](.github/workflows/ci.yml) | ruff → mypy → pytest, on 3.12 **and** 3.13 | every PR | yes |
1318
+ | [`spec-lint.yml`](.github/workflows/spec-lint.yml) | lints the design specs under `docs/specs/` | specs touched | yes |
1319
+ | [`dependency-review.yml`](.github/workflows/dependency-review.yml) | fails a PR that *introduces* a dependency with a known advisory (`moderate`+) | every PR | yes |
1320
+ | [`zizmor.yml`](.github/workflows/zizmor.yml) | static analysis of the workflow files themselves | workflow, action, dependabot or zizmor config touched; also weekly | no — reports to code scanning |
1321
+ | CodeQL | `python` + `actions`, `extended` query suite; also weekly | every PR | no — reports to code scanning |
1322
+
1323
+ On a push to `main` the full `ci.yml` matrix still runs, but as the first job of
1324
+ [`release.yml`](.github/workflows/release.yml), which `uses:` this same workflow before it is
1325
+ allowed to publish — so on main the checks are listed under the *Release* workflow, named
1326
+ `test / test (py3.12)` and `test / test (py3.13)`. `ci.yml` deliberately carries no `push`
1327
+ trigger of its own; it had one, and the result was that every merge ran the identical matrix
1328
+ twice. A `v*` tag is gated the same way, by that same reusable call.
1320
1329
 
1321
1330
  CodeQL runs as GitHub's **default setup** — a repository setting, not a workflow file, which is
1322
1331
  why there is no `codeql.yml` here (adding one would disable the default setup and silently stop
@@ -1272,15 +1272,24 @@ Deeper design docs live in [`docs/`](docs/) — start with [`docs/architecture.m
1272
1272
 
1273
1273
  ### Continuous integration
1274
1274
 
1275
- Every pull request and every push to `main` runs the same set of checks:
1275
+ Every pull request runs the checks below. A check whose verdict cannot change on the tree in
1276
+ front of it is path-filtered rather than run to the same answer twice, so the *When* column is
1277
+ part of the contract:
1276
1278
 
1277
- | Check | Does | Fails the build |
1278
- |---|---|---|
1279
- | [`ci.yml`](.github/workflows/ci.yml) | ruff → mypy → pytest, on 3.12 **and** 3.13 | yes |
1280
- | [`spec-lint.yml`](.github/workflows/spec-lint.yml) | lints the design specs under `docs/specs/` | yes |
1281
- | [`dependency-review.yml`](.github/workflows/dependency-review.yml) | fails a PR that *introduces* a dependency with a known advisory (`moderate`+) | yes |
1282
- | [`zizmor.yml`](.github/workflows/zizmor.yml) | static analysis of the workflow files themselves | no — reports to code scanning |
1283
- | CodeQL | `python` + `actions`, `extended` query suite; also weekly | no — reports to code scanning |
1279
+ | Check | Does | When | Fails the build |
1280
+ |---|---|---|---|
1281
+ | [`ci.yml`](.github/workflows/ci.yml) | ruff → mypy → pytest, on 3.12 **and** 3.13 | every PR | yes |
1282
+ | [`spec-lint.yml`](.github/workflows/spec-lint.yml) | lints the design specs under `docs/specs/` | specs touched | yes |
1283
+ | [`dependency-review.yml`](.github/workflows/dependency-review.yml) | fails a PR that *introduces* a dependency with a known advisory (`moderate`+) | every PR | yes |
1284
+ | [`zizmor.yml`](.github/workflows/zizmor.yml) | static analysis of the workflow files themselves | workflow, action, dependabot or zizmor config touched; also weekly | no — reports to code scanning |
1285
+ | CodeQL | `python` + `actions`, `extended` query suite; also weekly | every PR | no — reports to code scanning |
1286
+
1287
+ On a push to `main` the full `ci.yml` matrix still runs, but as the first job of
1288
+ [`release.yml`](.github/workflows/release.yml), which `uses:` this same workflow before it is
1289
+ allowed to publish — so on main the checks are listed under the *Release* workflow, named
1290
+ `test / test (py3.12)` and `test / test (py3.13)`. `ci.yml` deliberately carries no `push`
1291
+ trigger of its own; it had one, and the result was that every merge ran the identical matrix
1292
+ twice. A `v*` tag is gated the same way, by that same reusable call.
1284
1293
 
1285
1294
  CodeQL runs as GitHub's **default setup** — a repository setting, not a workflow file, which is
1286
1295
  why there is no `codeql.yml` here (adding one would disable the default setup and silently stop
@@ -20,7 +20,7 @@ dependencies = [
20
20
  ]
21
21
 
22
22
  # Optional features. Install with: pip install log-foundry[aws]
23
- version = "0.10.2.dev86"
23
+ version = "0.10.2.dev87"
24
24
 
25
25
  [project.optional-dependencies]
26
26
  aws = ["boto3>=1.43.61"] # SQSSink, SNSSink, KinesisSink, FirehoseSink
@@ -63,6 +63,13 @@ exclude = [
63
63
  pytest = "^9.0"
64
64
  pytest-asyncio = "^1.4.0" # for testing async @trace (guide Phase 8)
65
65
  pytest-cov = "^7.1.0"
66
+ # The suite is sleep-bound, not CPU-bound: 1,871 tests spend ~116 s of wall clock at 7%
67
+ # CPU, because the bounds this library promises (a 30 s shutdown budget, a backoff, a
68
+ # wedged drain) are proved by waiting for them. Two tests block 30 s each. Distributing
69
+ # across processes therefore buys almost the whole wall clock back — measured 125.9 s ->
70
+ # 40.8 s at `-n 8 --dist load` — where caching the dependency install could only ever
71
+ # save the 18 s that install takes.
72
+ pytest-xdist = "^3.8"
66
73
  # Bounded to a minor, not left open. Ruff's DEFAULT rule set is not stable across minors —
67
74
  # 0.16.0 widened it from 59 rules to 413 — so an open constraint lets a release change what
68
75
  # CI enforces. `[tool.ruff.lint] select` below is the other half: the bound makes the change