xtr-http-kernel 5.2.0__tar.gz → 6.0.0__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 (84) hide show
  1. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/PKG-INFO +8 -8
  2. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/pyproject.toml +12 -12
  3. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/pyproject.toml.orig +12 -12
  4. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bridge/http_message_factory.py +1 -1
  5. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/LICENSE +0 -0
  6. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/README.md +0 -0
  7. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/.agents/skills/xtr-http-kernel/SKILL.md +0 -0
  8. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/.agents/skills/xtr-http-kernel/references/configure.md +0 -0
  9. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/.agents/skills/xtr-http-kernel/references/listeners.md +0 -0
  10. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/.agents/skills/xtr-http-kernel/references/rate-limits.md +0 -0
  11. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/.agents/skills/xtr-http-kernel/references/routing.md +0 -0
  12. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/__init__.py +0 -0
  13. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/_kernel_middleware.py +0 -0
  14. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/_route_contexts.py +0 -0
  15. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/_staging.py +0 -0
  16. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/_state.py +0 -0
  17. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bridge/__init__.py +0 -0
  18. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bridge/_headers.py +0 -0
  19. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bridge/_media_types.py +0 -0
  20. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bridge/_scope_uri.py +0 -0
  21. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bridge/_server_params.py +0 -0
  22. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bridge/http_message_factory_interface.py +0 -0
  23. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bridge/response.py +0 -0
  24. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bridge/response_factory.py +0 -0
  25. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bridge/served_connection.py +0 -0
  26. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bridge/starlette_http_factory.py +0 -0
  27. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bridge/starlette_http_factory_interface.py +0 -0
  28. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bundle/__init__.py +0 -0
  29. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bundle/_messages.py +0 -0
  30. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bundle/http_kernel_bundle.py +0 -0
  31. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bundle/http_kernel_config.py +0 -0
  32. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bundle/request_lifecycle_middleware_factory.py +0 -0
  33. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/bundle/route_registry_pass.py +0 -0
  34. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/command/__init__.py +0 -0
  35. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/command/debug_router_command.py +0 -0
  36. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/command/route_description.py +0 -0
  37. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/command/router_command.py +0 -0
  38. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/command/router_match_command.py +0 -0
  39. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/event/__init__.py +0 -0
  40. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/event/exception_event.py +0 -0
  41. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/event/finish_request_event.py +0 -0
  42. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/event/request_event.py +0 -0
  43. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/event/response_event.py +0 -0
  44. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/event/terminate_event.py +0 -0
  45. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/event_listener/__init__.py +0 -0
  46. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/event_listener/disallow_robots_indexing_listener.py +0 -0
  47. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/event_listener/error_logging_listener.py +0 -0
  48. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/event_listener/log_unit_listener.py +0 -0
  49. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/event_listener/rate_limit_headers_listener.py +0 -0
  50. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/event_listener/request_id_listener.py +0 -0
  51. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/exception/__init__.py +0 -0
  52. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/exception/http_kernel_error.py +0 -0
  53. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/exception/invalid_argument_error.py +0 -0
  54. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/exception/invalid_cookie_error.py +0 -0
  55. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/exception/invalid_middleware_priority_error.py +0 -0
  56. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/exception/invalid_rate_limit_error.py +0 -0
  57. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/exception/ranged_response_body_error.py +0 -0
  58. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/exception/response_already_a_message_error.py +0 -0
  59. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/exception/streamed_response_body_error.py +0 -0
  60. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/exception/too_many_requests_error.py +0 -0
  61. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/exception/unknown_rate_limiter_error.py +0 -0
  62. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/exception/unsupported_connection_error.py +0 -0
  63. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/kernel_events.py +0 -0
  64. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/middleware_stack.py +0 -0
  65. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/middleware_tag.py +0 -0
  66. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/py.typed +0 -0
  67. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/rate_limiter/__init__.py +0 -0
  68. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/rate_limiter/_applied_rate_limit.py +0 -0
  69. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/rate_limiter/rate_limited.py +0 -0
  70. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/recipe/__init__.py +0 -0
  71. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/recipe/files/config/http_kernel.py.tmpl +0 -0
  72. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/recipe/manifest.toml +0 -0
  73. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/request_lifecycle_middleware.py +0 -0
  74. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/routing/__init__.py +0 -0
  75. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/routing/decorator/__init__.py +0 -0
  76. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/routing/decorator/as_route_resource.py +0 -0
  77. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/routing/decorator/as_routes.py +0 -0
  78. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/routing/exception/__init__.py +0 -0
  79. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/routing/exception/invalid_argument_error.py +0 -0
  80. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/routing/exception/route_conflict_error.py +0 -0
  81. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/routing/exception/routing_error.py +0 -0
  82. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/routing/route_registry.py +0 -0
  83. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/setup.py +0 -0
  84. {xtr_http_kernel-5.2.0 → xtr_http_kernel-6.0.0}/src/xtr_http_kernel/testing.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xtr-http-kernel
3
- Version: 5.2.0
3
+ Version: 6.0.0
4
4
  Summary: Requests turned into responses through events: a request lifecycle for FastAPI applications on the xtr kernel.
5
5
  Keywords: http,kernel,request,lifecycle,events,middleware,fastapi
6
6
  Author: Xterr
@@ -16,13 +16,13 @@ Classifier: Programming Language :: Python :: 3.14
16
16
  Classifier: Typing :: Typed
17
17
  Requires-Dist: fastapi>=0.121.3
18
18
  Requires-Dist: starlette>=0.40
19
- Requires-Dist: xtr-dependency-injection>=5.0,<6
20
- Requires-Dist: xtr-event-dispatcher>=5.0,<6
21
- Requires-Dist: xtr-event-dispatcher-contracts>=5.0,<6
22
- Requires-Dist: xtr-http-message>=5.0,<6
23
- Requires-Dist: xtr-http-message-contracts>=5.0,<6
24
- Requires-Dist: xtr-logging-contracts>=5.0,<6
25
- Requires-Dist: xtr-service-contracts>=5.0,<6
19
+ Requires-Dist: xtr-dependency-injection>=6.0,<7
20
+ Requires-Dist: xtr-event-dispatcher>=6.0,<7
21
+ Requires-Dist: xtr-event-dispatcher-contracts>=6.0,<7
22
+ Requires-Dist: xtr-http-message>=6.0,<7
23
+ Requires-Dist: xtr-http-message-contracts>=6.0,<7
24
+ Requires-Dist: xtr-logging-contracts>=6.0,<7
25
+ Requires-Dist: xtr-service-contracts>=6.0,<7
26
26
  Requires-Dist: typing-extensions>=4.4
27
27
  Requires-Dist: python-multipart>=0.0.18
28
28
  Requires-Python: >=3.11
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "xtr-http-kernel"
3
- version = "5.2.0"
3
+ version = "6.0.0"
4
4
  description = "Requests turned into responses through events: a request lifecycle for FastAPI applications on the xtr kernel."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -27,13 +27,13 @@ classifiers = [
27
27
  dependencies = [
28
28
  "fastapi>=0.121.3",
29
29
  "starlette>=0.40",
30
- "xtr-dependency-injection>=5.0,<6",
31
- "xtr-event-dispatcher>=5.0,<6",
32
- "xtr-event-dispatcher-contracts>=5.0,<6",
33
- "xtr-http-message>=5.0,<6",
34
- "xtr-http-message-contracts>=5.0,<6",
35
- "xtr-logging-contracts>=5.0,<6",
36
- "xtr-service-contracts>=5.0,<6",
30
+ "xtr-dependency-injection>=6.0,<7",
31
+ "xtr-event-dispatcher>=6.0,<7",
32
+ "xtr-event-dispatcher-contracts>=6.0,<7",
33
+ "xtr-http-message>=6.0,<7",
34
+ "xtr-http-message-contracts>=6.0,<7",
35
+ "xtr-logging-contracts>=6.0,<7",
36
+ "xtr-service-contracts>=6.0,<7",
37
37
  "typing-extensions>=4.4",
38
38
  "python-multipart>=0.0.18",
39
39
  ]
@@ -56,10 +56,10 @@ dev = [
56
56
  "pytest-cov>=5",
57
57
  "anyio>=4.0",
58
58
  "ty>=0.0.83",
59
- "xtr-logging>=5.0,<6",
60
- "xtr-console>=5.0,<6",
61
- "xtr-clock>=5.0,<6",
62
- "xtr-rate-limiter>=5.0,<6",
59
+ "xtr-logging>=6.0,<7",
60
+ "xtr-console>=6.0,<7",
61
+ "xtr-clock>=6.0,<7",
62
+ "xtr-rate-limiter>=6.0,<7",
63
63
  "httpx>=0.27",
64
64
  ]
65
65
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "xtr-http-kernel"
3
- version = "5.2.0"
3
+ version = "6.0.0"
4
4
  description = "Requests turned into responses through events: a request lifecycle for FastAPI applications on the xtr kernel."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -26,16 +26,16 @@ dependencies = [
26
26
  "fastapi>=0.121.3",
27
27
  # Imported directly — requests, responses, middleware — not only through fastapi.
28
28
  "starlette>=0.40",
29
- "xtr-dependency-injection>=5.0,<6",
30
- "xtr-event-dispatcher>=5.0,<6",
31
- "xtr-event-dispatcher-contracts>=5.0,<6",
29
+ "xtr-dependency-injection>=6.0,<7",
30
+ "xtr-event-dispatcher>=6.0,<7",
31
+ "xtr-event-dispatcher-contracts>=6.0,<7",
32
32
  # The bridge builds messages and is the one place a message meets a route,
33
33
  # so both the contract and the implementation of it are required: the
34
34
  # bundle registers the implementation's factories under the contract.
35
- "xtr-http-message>=5.0,<6",
36
- "xtr-http-message-contracts>=5.0,<6",
37
- "xtr-logging-contracts>=5.0,<6",
38
- "xtr-service-contracts>=5.0,<6",
35
+ "xtr-http-message>=6.0,<7",
36
+ "xtr-http-message-contracts>=6.0,<7",
37
+ "xtr-logging-contracts>=6.0,<7",
38
+ "xtr-service-contracts>=6.0,<7",
39
39
  "typing-extensions>=4.4",
40
40
  # A submitted form with files in it: the bridge asks the web framework for
41
41
  # the form behind every multipart body, and the framework refuses outright
@@ -61,10 +61,10 @@ dev = [
61
61
  "pytest-cov>=5",
62
62
  "anyio>=4.0",
63
63
  "ty>=0.0.83",
64
- "xtr-logging>=5.0,<6",
65
- "xtr-console>=5.0,<6",
66
- "xtr-clock>=5.0,<6",
67
- "xtr-rate-limiter>=5.0,<6",
64
+ "xtr-logging>=6.0,<7",
65
+ "xtr-console>=6.0,<7",
66
+ "xtr-clock>=6.0,<7",
67
+ "xtr-rate-limiter>=6.0,<7",
68
68
  # Requests are driven straight at the application through an ASGI
69
69
  # transport, so the suite never binds a socket.
70
70
  "httpx>=0.27",
@@ -303,7 +303,7 @@ class HttpMessageFactory(HttpMessageFactoryInterface):
303
303
 
304
304
  try:
305
305
  parsed = cast("object", await request.json())
306
- except ValueError:
306
+ except (ValueError, RecursionError): # nested too deep to parse is not JSON either
307
307
  return None
308
308
 
309
309
  return cast("Mapping[str, object]", parsed) if isinstance(parsed, dict) else None
File without changes