omserv 0.0.0.dev279__py3-none-any.whl → 0.0.0.dev281__py3-none-any.whl

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.
omserv/apps/inject.py CHANGED
@@ -2,17 +2,15 @@ import typing as ta
2
2
 
3
3
  from omlish import inject as inj
4
4
  from omlish.http import sessions
5
- from omlish.http.asgi import AsgiApp
6
5
  from omlish.http.asgi import AsgiScope
7
6
 
8
7
  from .base import SCOPE
9
8
  from .markers import AppMarker
10
9
  from .markers import AppMarkerProcessor
11
10
  from .markers import NopAppMarkerProcessor
12
- from .markers import get_app_markers
13
- from .routes import Handler_
14
- from .routes import Route
11
+ from .routes import RouteHandler_
15
12
  from .routes import _HandlesAppMarker
13
+ from .routes import build_route_handler_map
16
14
  from .sessions import SESSION
17
15
  from .sessions import _WithSessionAppMarker
18
16
  from .sessions import _WithSessionAppMarkerProcessor
@@ -20,10 +18,10 @@ from .templates import JinjaNamespace
20
18
  from .templates import JinjaTemplates
21
19
 
22
20
 
23
- def bind_handler(hc: type[Handler_]) -> inj.Elemental:
21
+ def bind_handler(hc: type[RouteHandler_]) -> inj.Elemental:
24
22
  return inj.as_elements(
25
23
  inj.bind(hc, singleton=True),
26
- inj.set_binder[Handler_]().bind(hc),
24
+ inj.set_binder[RouteHandler_]().bind(hc),
27
25
  )
28
26
 
29
27
 
@@ -34,26 +32,9 @@ def bind_app_marker_processor(mc: type[AppMarker], pc: type[AppMarkerProcessor])
34
32
  )
35
33
 
36
34
 
37
- def _build_route_handler_map(
38
- handlers: ta.AbstractSet[Handler_],
39
- processors: ta.Mapping[type[AppMarker], AppMarkerProcessor],
40
- ) -> ta.Mapping[Route, AsgiApp]:
41
- route_handlers: dict[Route, AsgiApp] = {}
42
- for h in handlers:
43
- for rh in h.get_route_handlers():
44
- app = rh.handler
45
- markers = get_app_markers(rh.handler)
46
- for m in markers:
47
- mp = processors[type(m)]
48
- if mp is not None:
49
- app = mp(app)
50
- route_handlers[rh.route] = app
51
- return route_handlers
52
-
53
-
54
35
  def bind_route_handler_map() -> inj.Elemental:
55
36
  return inj.as_elements(
56
- inj.bind(_build_route_handler_map, singleton=True),
37
+ inj.bind(build_route_handler_map, singleton=True),
57
38
  inj.map_binder[type[AppMarker], AppMarkerProcessor](),
58
39
  )
59
40
 
@@ -72,7 +53,7 @@ def bind() -> inj.Elemental:
72
53
 
73
54
  ##
74
55
 
75
- inj.set_binder[Handler_](),
56
+ inj.set_binder[RouteHandler_](),
76
57
  )
77
58
 
78
59
 
omserv/apps/markers.py CHANGED
@@ -42,3 +42,9 @@ class AppMarkerProcessor(lang.Abstract):
42
42
  class NopAppMarkerProcessor(AppMarkerProcessor, lang.Final):
43
43
  def __call__(self, app: AsgiApp) -> AsgiApp:
44
44
  return app
45
+
46
+
47
+ ##
48
+
49
+
50
+ AppMarkerProcessorMap: ta.TypeAlias = ta.Mapping[type[AppMarker], AppMarkerProcessor]
omserv/apps/routes.py CHANGED
@@ -17,6 +17,9 @@ from .base import BASE_SERVER_URL
17
17
  from .base import SCOPE
18
18
  from .base import BaseServerUrl
19
19
  from .markers import AppMarker
20
+ from .markers import AppMarkerProcessor
21
+ from .markers import AppMarkerProcessorMap
22
+ from .markers import NopAppMarkerProcessor
20
23
  from .markers import append_app_marker
21
24
  from .markers import get_app_markers
22
25
 
@@ -67,15 +70,20 @@ def handles(*routes: Route):
67
70
  return inner
68
71
 
69
72
 
73
+ HANDLES_APP_MARKER_PROCESSORS: AppMarkerProcessorMap = {
74
+ _HandlesAppMarker: NopAppMarkerProcessor(),
75
+ }
76
+
77
+
70
78
  ##
71
79
 
72
80
 
73
- class Handler_(lang.Abstract): # noqa
81
+ class RouteHandler_(lang.Abstract): # noqa
74
82
  def get_route_handlers(self) -> ta.Iterable[RouteHandler]:
75
83
  return get_marked_route_handlers(self)
76
84
 
77
85
 
78
- def get_marked_route_handlers(h: Handler_) -> ta.Sequence[RouteHandler]:
86
+ def get_marked_route_handlers(h: RouteHandler_) -> ta.Sequence[RouteHandler]:
79
87
  ret: list[RouteHandler] = []
80
88
 
81
89
  cdct: dict[str, ta.Any] = {}
@@ -96,6 +104,23 @@ def get_marked_route_handlers(h: Handler_) -> ta.Sequence[RouteHandler]:
96
104
  return ret
97
105
 
98
106
 
107
+ def build_route_handler_map(
108
+ handlers: ta.AbstractSet[RouteHandler_],
109
+ processors: ta.Mapping[type[AppMarker], AppMarkerProcessor],
110
+ ) -> ta.Mapping[Route, AsgiApp]:
111
+ route_handlers: dict[Route, AsgiApp] = {}
112
+ for h in handlers:
113
+ for rh in h.get_route_handlers():
114
+ app = rh.handler
115
+ markers = get_app_markers(rh.handler)
116
+ for m in markers:
117
+ mp = processors[type(m)]
118
+ if mp is not None:
119
+ app = mp(app)
120
+ route_handlers[rh.route] = app
121
+ return route_handlers
122
+
123
+
99
124
  ##
100
125
 
101
126
 
omserv/server/types.py CHANGED
@@ -4,13 +4,13 @@ import typing as ta
4
4
  ##
5
5
 
6
6
 
7
- AsgiReceiveEvent: ta.TypeAlias = dict[str, ta.Any]
8
- AsgiSendEvent: ta.TypeAlias = dict[str, ta.Any]
7
+ AsgiReceiveEvent: ta.TypeAlias = ta.Mapping[str, ta.Any]
8
+ AsgiSendEvent: ta.TypeAlias = ta.Mapping[str, ta.Any]
9
9
 
10
10
  AsgiReceiveCallable: ta.TypeAlias = ta.Callable[[], ta.Awaitable[AsgiReceiveEvent]]
11
11
  AsgiSendCallable: ta.TypeAlias = ta.Callable[[AsgiSendEvent], ta.Awaitable[None]]
12
12
 
13
- Scope: ta.TypeAlias = dict[str, ta.Any]
13
+ Scope: ta.TypeAlias = ta.Mapping[str, ta.Any]
14
14
  AsgiFramework: ta.TypeAlias = ta.Callable[
15
15
  [
16
16
  Scope,
@@ -22,13 +22,13 @@ AsgiFramework: ta.TypeAlias = ta.Callable[
22
22
 
23
23
  LifespanScope: ta.TypeAlias = Scope
24
24
 
25
- HttpResponseStartEvent: ta.TypeAlias = dict[str, ta.Any]
25
+ HttpResponseStartEvent: ta.TypeAlias = ta.Mapping[str, ta.Any]
26
26
  HttpScope: ta.TypeAlias = Scope
27
27
  WebsocketScope: ta.TypeAlias = Scope
28
28
 
29
- WebsocketAcceptEvent: ta.TypeAlias = dict[str, ta.Any]
30
- WebsocketResponseBodyEvent: ta.TypeAlias = dict[str, ta.Any]
31
- WebsocketResponseStartEvent: ta.TypeAlias = dict[str, ta.Any]
29
+ WebsocketAcceptEvent: ta.TypeAlias = ta.Mapping[str, ta.Any]
30
+ WebsocketResponseBodyEvent: ta.TypeAlias = ta.Mapping[str, ta.Any]
31
+ WebsocketResponseStartEvent: ta.TypeAlias = ta.Mapping[str, ta.Any]
32
32
 
33
33
 
34
34
  ##
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omserv
3
- Version: 0.0.0.dev279
3
+ Version: 0.0.0.dev281
4
4
  Summary: omserv
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,7 +12,7 @@ Classifier: Operating System :: OS Independent
12
12
  Classifier: Operating System :: POSIX
13
13
  Requires-Python: >=3.12
14
14
  License-File: LICENSE
15
- Requires-Dist: omlish==0.0.0.dev279
15
+ Requires-Dist: omlish==0.0.0.dev281
16
16
  Provides-Extra: all
17
17
  Requires-Dist: h11~=0.14; extra == "all"
18
18
  Requires-Dist: h2~=4.2; extra == "all"
@@ -3,9 +3,9 @@ omserv/__about__.py,sha256=w4jEBHhEVT7VZlwqMAh-4SecngU8xM6rehzWqi5ULZM,765
3
3
  omserv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  omserv/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  omserv/apps/base.py,sha256=KSwxbC0_fY87_DucvpEOHG6gZ2wL78D-N3We8RTEU4Q,385
6
- omserv/apps/inject.py,sha256=xtcn-C3A4yCdHfnAaejxrC_UGMVBYmWtSxeESIkorP0,2697
7
- omserv/apps/markers.py,sha256=JyVEXIaZC01bYObZ08TCwmQgiqZSvPfwNFJwpt9PU-c,870
8
- omserv/apps/routes.py,sha256=xWVgMwMeRr1QJiCCB_LCtxsb41ajdTmbDua4X71Djo0,3778
6
+ omserv/apps/inject.py,sha256=ora2yPGl8vz1vdLNKQYa_NuUHyMUo9JRHkMNbvN6joA,2083
7
+ omserv/apps/markers.py,sha256=sLTd6d2HYH_lc37nDtDQK_ej10G9qeg4m_TC_v0IW6k,963
8
+ omserv/apps/routes.py,sha256=n7LBAzkclUlWfhk2e2cv0GR5EkMDUpjqhyXWMWwTeVY,4604
9
9
  omserv/apps/sessions.py,sha256=glruQSbOSbCYLPp6nDRNSHCyp5hj4oiOPhh3R0F9BTM,1537
10
10
  omserv/apps/templates.py,sha256=PBRZHIF9UbnFnq-4EC6RmPeRkeH8lCBbpJkSdseHs6A,2125
11
11
  omserv/nginx/__init__.py,sha256=2d63LCGFA2qS7gdl2nCvNPmQWXNICu19wZIihQJPHCs,48
@@ -33,7 +33,7 @@ omserv/server/server.py,sha256=hgUTfZAUwF7V-HdsdV98KbYmE1IRKmEO3B1LlKTiPWc,5223
33
33
  omserv/server/sockets.py,sha256=lwqNP7URlp605ibsjHzp0pc-lyjcyTu-hD-uyojLUYk,3389
34
34
  omserv/server/ssl.py,sha256=gmB5ecM8Mck-YtGYF8pb2dwFdjABVGzERFCDzM9lBck,1483
35
35
  omserv/server/taskspawner.py,sha256=ljzF26UPtnp7GLAY_BvjzuwCoCO9aL7TKLwRNTmUy1M,3008
36
- omserv/server/types.py,sha256=XXY5py8RYlEeD4FZrWNqSyX7DD-ffSlcG-T2s9BY9eI,2017
36
+ omserv/server/types.py,sha256=02GcS_zDxBzkleaptwr7kT7viefNh7fhFJixPdDpL_M,2059
37
37
  omserv/server/workercontext.py,sha256=4rcLuGsyiU7URO7T_eHylOBPPNUS9C23QfEUVyJUtIY,1200
38
38
  omserv/server/protocols/__init__.py,sha256=Ryu2PDZ1TUI6F2l-HBEYgyzZ7wHqE6VmjqnS0tIvmQI,47
39
39
  omserv/server/protocols/h11.py,sha256=_q_paD-ff0AWJEPaNK-6MUsQVtYRiALnWGwFyM3D0KU,11976
@@ -46,9 +46,9 @@ omserv/server/streams/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
46
46
  omserv/server/streams/httpstream.py,sha256=0DeiAPLGbEGNa0fHTs8lUpi_CFZs4M5_QB-TiS8mobQ,8015
47
47
  omserv/server/streams/utils.py,sha256=aMOrqWIg_Hht5W4kLg3y7oR5AEkVvMrZhyjzo6U5owE,1527
48
48
  omserv/server/streams/wsstream.py,sha256=3Vyzox7dCE1tDSXjb6xBubWo41ZF9d38Hrsrlj6h1J8,15482
49
- omserv-0.0.0.dev279.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
50
- omserv-0.0.0.dev279.dist-info/METADATA,sha256=-xJj0EWMpjrCPAKsyKHGqUPdrI8HzPg7yT874yqwNeo,1005
51
- omserv-0.0.0.dev279.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
52
- omserv-0.0.0.dev279.dist-info/entry_points.txt,sha256=ivSrdA_ahEbI-eVMu-XZS-z4VrnQISvpecIkOqC9zFM,35
53
- omserv-0.0.0.dev279.dist-info/top_level.txt,sha256=HXehpnxeKscKNULzKNzZ27oNawBrsh1PaNAirbX-XNA,7
54
- omserv-0.0.0.dev279.dist-info/RECORD,,
49
+ omserv-0.0.0.dev281.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
50
+ omserv-0.0.0.dev281.dist-info/METADATA,sha256=6kaceg5VdEC213N0KXR4OlC9d5GxYFXD56bg3bB74yk,1005
51
+ omserv-0.0.0.dev281.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
52
+ omserv-0.0.0.dev281.dist-info/entry_points.txt,sha256=ivSrdA_ahEbI-eVMu-XZS-z4VrnQISvpecIkOqC9zFM,35
53
+ omserv-0.0.0.dev281.dist-info/top_level.txt,sha256=HXehpnxeKscKNULzKNzZ27oNawBrsh1PaNAirbX-XNA,7
54
+ omserv-0.0.0.dev281.dist-info/RECORD,,