omserv 0.0.0.dev362__py3-none-any.whl → 0.0.0.dev364__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/.manifests.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "module": ".nginx.logs",
4
4
  "attr": "_CLI_MODULE",
5
5
  "file": "omserv/nginx/logs.py",
6
- "line": 65,
6
+ "line": 68,
7
7
  "value": {
8
8
  "$omdev.cli.types.CliModule": {
9
9
  "cmd_name": "nginxlogs",
omserv/apps/inject.py CHANGED
@@ -19,6 +19,9 @@ from .templates import JinjaNamespace
19
19
  from .templates import JinjaTemplates
20
20
 
21
21
 
22
+ ##
23
+
24
+
22
25
  def bind_route_handler_class(hc: type[RouteHandlerHolder]) -> inj.Elemental:
23
26
  return inj.as_elements(
24
27
  inj.bind(hc, singleton=True),
omserv/nginx/build.py CHANGED
@@ -14,6 +14,9 @@ from omlish import check
14
14
  from omlish import lang
15
15
 
16
16
 
17
+ ##
18
+
19
+
17
20
  NGINX_VERSION = '1.28.0'
18
21
  NGINX_SRC_URL = f'https://nginx.org/download/nginx-{NGINX_VERSION}.tar.gz'
19
22
 
omserv/nginx/logs.py CHANGED
@@ -27,6 +27,9 @@ import re
27
27
  import typing as ta
28
28
 
29
29
 
30
+ ##
31
+
32
+
30
33
  NGINX_LOG_PAT = re.compile(r'(\[[^\]]*\])|("[^"]*")|([^ ]+)')
31
34
 
32
35
  NGINX_LOG_COLUMNS: ta.Sequence[str] = [
@@ -4,6 +4,9 @@ import textwrap
4
4
  import typing as ta
5
5
 
6
6
 
7
+ ##
8
+
9
+
7
10
  @dc.dataclass(frozen=True, kw_only=True)
8
11
  class StubStatus:
9
12
  active: int
omserv/server/config.py CHANGED
@@ -2,6 +2,9 @@ import dataclasses as dc
2
2
  import typing as ta
3
3
 
4
4
 
5
+ ##
6
+
7
+
5
8
  BYTES = 1
6
9
  OCTETS = 1
7
10
  SECONDS = 1.0
omserv/server/debug.py CHANGED
@@ -7,6 +7,9 @@ from omlish.diag import pydevd as pdu
7
7
  log = logging.getLogger(__name__)
8
8
 
9
9
 
10
+ ##
11
+
12
+
10
13
  def handle_error_debug(e: BaseException) -> None:
11
14
  exc_info = sys.exc_info()
12
15
  log.warning('Launching debugger')
omserv/server/default.py CHANGED
@@ -13,6 +13,9 @@ from .types import AsgiFramework
13
13
  from .types import wrap_app
14
14
 
15
15
 
16
+ ##
17
+
18
+
16
19
  async def serve(
17
20
  app: AsgiFramework | AppWrapper,
18
21
  config: Config,
omserv/server/headers.py CHANGED
@@ -4,6 +4,9 @@ import wsgiref.handlers
4
4
  from .config import Config
5
5
 
6
6
 
7
+ ##
8
+
9
+
7
10
  def _now() -> float:
8
11
  return time.time()
9
12
 
omserv/server/inject.py CHANGED
@@ -7,6 +7,9 @@ from .server import Server
7
7
  from .server import ServerFactory
8
8
 
9
9
 
10
+ ##
11
+
12
+
10
13
  def _provide_server_factory(config: Config) -> ServerFactory:
11
14
  return ServerFactory(functools.partial(Server, config=config))
12
15
 
@@ -18,6 +18,9 @@ from .types import UnexpectedMessageError
18
18
  log = logging.getLogger(__name__)
19
19
 
20
20
 
21
+ ##
22
+
23
+
21
24
  class LifespanTimeoutError(Exception):
22
25
  def __init__(self, stage: str) -> None:
23
26
  super().__init__(
omserv/server/listener.py CHANGED
@@ -25,6 +25,9 @@ from .workercontext import WorkerContext
25
25
  log = logging.getLogger(__name__)
26
26
 
27
27
 
28
+ ##
29
+
30
+
28
31
  async def raise_shutdown(shutdown_event: ta.Callable[..., ta.Awaitable]) -> None:
29
32
  await shutdown_event()
30
33
  raise ShutdownError
@@ -19,6 +19,9 @@ from .types import AsgiFramework
19
19
  from .types import wrap_app
20
20
 
21
21
 
22
+ ##
23
+
24
+
22
25
  async def check_multiprocess_shutdown_event(
23
26
  shutdown_event: mp.synchronize.Event,
24
27
  sleep: ta.Callable[[float], ta.Awaitable[ta.Any]],
@@ -26,6 +26,9 @@ from ..workercontext import WorkerContext
26
26
  from .types import Protocol
27
27
 
28
28
 
29
+ ##
30
+
31
+
29
32
  H11SendableEvent: ta.TypeAlias = ta.Union[ # noqa
30
33
  h11.Data,
31
34
  h11.EndOfMessage,
@@ -36,6 +36,9 @@ from ..workercontext import WorkerContext
36
36
  from .types import Protocol
37
37
 
38
38
 
39
+ ##
40
+
41
+
39
42
  BUFFER_HIGH_WATER = 2 * 2**14 # Twice the default max frame size (two frames worth)
40
43
  BUFFER_LOW_WATER = BUFFER_HIGH_WATER / 2
41
44
 
@@ -13,6 +13,9 @@ from .h11 import H11Protocol
13
13
  from .types import Protocol
14
14
 
15
15
 
16
+ ##
17
+
18
+
16
19
  class ProtocolWrapper:
17
20
  def __init__(
18
21
  self,
@@ -4,6 +4,9 @@ from ..events import ProtocolEvent
4
4
  from ..events import ServerEvent
5
5
 
6
6
 
7
+ ##
8
+
9
+
7
10
  class Protocol(abc.ABC):
8
11
  @abc.abstractmethod
9
12
  async def initiate(self) -> None:
omserv/server/server.py CHANGED
@@ -23,6 +23,9 @@ from .workercontext import WorkerContext
23
23
  log = logging.getLogger(__name__)
24
24
 
25
25
 
26
+ ##
27
+
28
+
26
29
  MAX_RECV = 2 ** 16
27
30
 
28
31
 
omserv/server/sockets.py CHANGED
@@ -8,6 +8,9 @@ import typing as ta
8
8
  from .config import Config
9
9
 
10
10
 
11
+ ##
12
+
13
+
11
14
  @dc.dataclass()
12
15
  class Sockets:
13
16
  insecure_sockets: list[socket.socket]
omserv/server/ssl.py CHANGED
@@ -5,6 +5,9 @@ import typing as ta
5
5
  from .config import SECONDS
6
6
 
7
7
 
8
+ ##
9
+
10
+
8
11
  @dc.dataclass(frozen=True, kw_only=True)
9
12
  class SslConfig:
10
13
  ca_certs: str | None = None
@@ -28,6 +28,9 @@ from .utils import valid_server_name
28
28
  log = logging.getLogger(__name__)
29
29
 
30
30
 
31
+ ##
32
+
33
+
31
34
  PUSH_VERSIONS = {'2', '3'}
32
35
  EARLY_HINTS_VERSIONS = {'2', '3'}
33
36
 
@@ -9,6 +9,9 @@ from ..types import Scope
9
9
  log = logging.getLogger(__name__)
10
10
 
11
11
 
12
+ ##
13
+
14
+
12
15
  def valid_server_name(config: Config, request: Request) -> bool:
13
16
  if not config.server_names:
14
17
  return True
@@ -40,6 +40,9 @@ from .utils import valid_server_name
40
40
  log = logging.getLogger(__name__)
41
41
 
42
42
 
43
+ ##
44
+
45
+
43
46
  class AsgiWebsocketState(enum.Enum):
44
47
  # Hypercorn supports the Asgi websocket HTTP response extension, which allows HTTP responses rather than acceptance.
45
48
  HANDSHAKE = enum.auto()
@@ -21,6 +21,9 @@ from .types import Scope
21
21
  log = logging.getLogger(__name__)
22
22
 
23
23
 
24
+ ##
25
+
26
+
24
27
  async def _handle(
25
28
  app: AppWrapper,
26
29
  config: Config,
@@ -3,6 +3,9 @@ import anyio
3
3
  from .types import WaitableEvent
4
4
 
5
5
 
6
+ ##
7
+
8
+
6
9
  class WaitableEventWrapper:
7
10
  def __init__(self) -> None:
8
11
  super().__init__()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omserv
3
- Version: 0.0.0.dev362
3
+ Version: 0.0.0.dev364
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.13
14
14
  License-File: LICENSE
15
- Requires-Dist: omlish==0.0.0.dev362
15
+ Requires-Dist: omlish==0.0.0.dev364
16
16
  Provides-Extra: all
17
17
  Requires-Dist: h11~=0.16; extra == "all"
18
18
  Requires-Dist: h2~=4.2; extra == "all"
@@ -0,0 +1,54 @@
1
+ omserv/.manifests.json,sha256=RBLs2PVnTQe8AVX5onzBcVn_3S-HzGLbjAgFI9kNu50,260
2
+ omserv/__about__.py,sha256=uf--5HCe4fnc_IJQyQO03TUR2jiyuzOGu3s9UnbidhM,765
3
+ omserv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ omserv/apps/__init__.py,sha256=buRI0lsNdbR08TjRKLhGsFHWETS2Br_mb6mm-8u9FII,617
5
+ omserv/apps/base.py,sha256=HYsWbDot7zOnsdSL8dF_ANrNXEYgWIGzlnBdCU7n8v8,376
6
+ omserv/apps/inject.py,sha256=oY4rEylPSdArIWhEAz2btido0OgtGwS52dzwz4L_710,2421
7
+ omserv/apps/markers.py,sha256=JE_px0vsJqoDIDRFu9xtXsKjtxYAshUsFB0aRsoeIcg,965
8
+ omserv/apps/routes.py,sha256=dYhLtfN8jWJNWDz4t3cOJd0DDAQuTFG3FTmFP8QEUw0,7412
9
+ omserv/apps/sessions.py,sha256=4HFHra43S0TaM2OcWUZ06eQwAqEaXuhjK5X5jlI0_44,1423
10
+ omserv/apps/templates.py,sha256=PBRZHIF9UbnFnq-4EC6RmPeRkeH8lCBbpJkSdseHs6A,2125
11
+ omserv/nginx/__init__.py,sha256=2d63LCGFA2qS7gdl2nCvNPmQWXNICu19wZIihQJPHCs,48
12
+ omserv/nginx/build.py,sha256=YHrZCscy4jL_wmOwyv_8AXXZvj4_Mn-M_BgyABHHeJM,3208
13
+ omserv/nginx/logs.py,sha256=Q3Ihj3hsVlJCwmjje6Op1ycVZCa5wNTFudmH_57G7VA,1845
14
+ omserv/nginx/stubstatus.py,sha256=eZpR8BFUWbpRfYy1qCmHYw7s2c4BaY4dgyUfYUHFMv4,1862
15
+ omserv/nginx/patches/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
+ omserv/nginx/patches/nginx-1.28.0_http_status.patch,sha256=bEDSczpBLcdjcBp_X1m73oxvt8KPeons7v_sUxqBSXM,4335
17
+ omserv/nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
+ omserv/nodes/models.py,sha256=EOaq-aW1rbGOzHTmTULhbVwV5j_burL07qh2QO9smdM,1273
19
+ omserv/nodes/registry.py,sha256=y67VMowll9IuLiTVgauAcbP8-evFJNqpwocwwt7kZL4,3478
20
+ omserv/nodes/sql.py,sha256=vy7RP50JiH3jQHMVa7Hxk0pFJK3QcbGeTvyNppB1W4I,2826
21
+ omserv/server/LICENSE,sha256=VKPNmbyrS9wcwcx20hBlVtLP01brb2dByHrWHeNLPag,1050
22
+ omserv/server/__init__.py,sha256=YnPjrvhQAAqyNSv_hMJOID7JaP1CXXE7c7rSrsBEJtU,440
23
+ omserv/server/config.py,sha256=lqYmklPOZfXOVWp3FxQshdxXCCjCBky1I7pmil7OlNc,1194
24
+ omserv/server/debug.py,sha256=nql14uIq3ZbyRJid3o43s02qCmIViOMj-nzR-iKmKIg,304
25
+ omserv/server/default.py,sha256=BvvxkqkSOmxD5LIAU2SMggabuPNnKGX6AZv-lDCt11U,975
26
+ omserv/server/events.py,sha256=VMr_rArsVjJYnyH9SqLWtOLUg18vSu1O0ep9gNBGR_c,1369
27
+ omserv/server/headers.py,sha256=VoLEGqhe4BK38THAbD9GzAqBAEj1S2-XUP8cml8g3yo,1193
28
+ omserv/server/inject.py,sha256=geONd8dS-5EyzFQcas8PRPo0BaFqsx6fIUR-COEnf_E,459
29
+ omserv/server/lifespans.py,sha256=1t5AbgO_bVhHVH8Pf-ncwQmPPAY32k7jLt45FRJr0xo,4612
30
+ omserv/server/listener.py,sha256=aH_Qg442xsnkUeDgqdST9m1dFvhGe09U6WdrYBw-rXE,7035
31
+ omserv/server/multiprocess.py,sha256=1IDdSv9S0O7jOtroSnEaAAyeHTx_J_ixZJgT_1VvlBI,4242
32
+ omserv/server/server.py,sha256=10E1QIDhaHkiC1_mmu_mvbXvJp5xyRbeuCO7qOiBOEk,5216
33
+ omserv/server/sockets.py,sha256=76tFEpfD5aXAosNibkt-SQBOpvXnzTJsgcP0dAI_kxY,3394
34
+ omserv/server/ssl.py,sha256=7ehegXxyW2jG2PvZHmJ4xBrv2ZSp1njWfSrZgE1Ez-k,1488
35
+ omserv/server/taskspawner.py,sha256=4tMgRBG0AR9HkJZZty3ntcULvOOi5yvW1TxSN6TkSkg,3013
36
+ omserv/server/types.py,sha256=02GcS_zDxBzkleaptwr7kT7viefNh7fhFJixPdDpL_M,2059
37
+ omserv/server/workercontext.py,sha256=neuP6Ku0DcKMp8q5X9RdpcJ4GmNVc1zmcFfyp45duN0,1205
38
+ omserv/server/protocols/__init__.py,sha256=Ryu2PDZ1TUI6F2l-HBEYgyzZ7wHqE6VmjqnS0tIvmQI,47
39
+ omserv/server/protocols/h11.py,sha256=OUdUR2LQL3Lkw2RcPnHgua8oOkscF5iEz6pZNfTH8dw,11965
40
+ omserv/server/protocols/h2.py,sha256=cCTkKom0MuVv8u5hbifl-Yc5vpRtRBwz74MYPIX3VgY,16032
41
+ omserv/server/protocols/protocols.py,sha256=TQrLPWj_5QjAd5qZdrNwS9P-8q2SOSypKOZRbJQIS4I,2795
42
+ omserv/server/protocols/types.py,sha256=jAZ8kz-07WbbjPGnF7ioWPNkJaTQfGY0tnn2HCpqnpg,445
43
+ omserv/server/resources/__init__.py,sha256=KppZbvZBKX1TdyaQZYY92oEKpdB3nuUXxharAgrbAIA,193
44
+ omserv/server/resources/favicon.ico,sha256=48hwhc03Fp6Rbj0fEQEB95woJMhCDsM2nMZJfeKAU0g,38078
45
+ omserv/server/streams/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
+ omserv/server/streams/httpstream.py,sha256=S0yHfy-whW_kRemBepjVpngeSQIEWKLlUAoDzRGl5Ko,8020
47
+ omserv/server/streams/utils.py,sha256=wgYrZGG3c1MkNVeEfDmYX2uUKYSbmGQsjeakc1xV_YQ,1532
48
+ omserv/server/streams/wsstream.py,sha256=EmVnWINOPn8cvqyiIXP74RJtLn459Z9ey0TX7PuF5-Y,15487
49
+ omserv-0.0.0.dev364.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
50
+ omserv-0.0.0.dev364.dist-info/METADATA,sha256=PzMkMkVKaWTGo6U7b5GwGB1LUrUuPaG0-phSAFUkjFA,1005
51
+ omserv-0.0.0.dev364.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
52
+ omserv-0.0.0.dev364.dist-info/entry_points.txt,sha256=ivSrdA_ahEbI-eVMu-XZS-z4VrnQISvpecIkOqC9zFM,35
53
+ omserv-0.0.0.dev364.dist-info/top_level.txt,sha256=HXehpnxeKscKNULzKNzZ27oNawBrsh1PaNAirbX-XNA,7
54
+ omserv-0.0.0.dev364.dist-info/RECORD,,
@@ -1,54 +0,0 @@
1
- omserv/.manifests.json,sha256=qn9Vc6VXiVo9RzpJdLzQi_x2DPZIP3cq4S2bkqvJqjY,260
2
- omserv/__about__.py,sha256=uf--5HCe4fnc_IJQyQO03TUR2jiyuzOGu3s9UnbidhM,765
3
- omserv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- omserv/apps/__init__.py,sha256=buRI0lsNdbR08TjRKLhGsFHWETS2Br_mb6mm-8u9FII,617
5
- omserv/apps/base.py,sha256=HYsWbDot7zOnsdSL8dF_ANrNXEYgWIGzlnBdCU7n8v8,376
6
- omserv/apps/inject.py,sha256=GxM-TT3Ln8YrYBedJF__wY-zs4G3ow7RlxT2afr0FDs,2416
7
- omserv/apps/markers.py,sha256=JE_px0vsJqoDIDRFu9xtXsKjtxYAshUsFB0aRsoeIcg,965
8
- omserv/apps/routes.py,sha256=dYhLtfN8jWJNWDz4t3cOJd0DDAQuTFG3FTmFP8QEUw0,7412
9
- omserv/apps/sessions.py,sha256=4HFHra43S0TaM2OcWUZ06eQwAqEaXuhjK5X5jlI0_44,1423
10
- omserv/apps/templates.py,sha256=PBRZHIF9UbnFnq-4EC6RmPeRkeH8lCBbpJkSdseHs6A,2125
11
- omserv/nginx/__init__.py,sha256=2d63LCGFA2qS7gdl2nCvNPmQWXNICu19wZIihQJPHCs,48
12
- omserv/nginx/build.py,sha256=3Y1HVScEoCvDZpDG3Rqpd8h83Z-CzS4yZ9y_OGD4bVY,3203
13
- omserv/nginx/logs.py,sha256=cODPsG1j3EQiXbb9SR20NpB9MjGdWN0ArFZ-TA9xf-c,1840
14
- omserv/nginx/stubstatus.py,sha256=_VnXZdXxSA7jIelYSwJLf9mOnt_UOvpWghAPWtlWSLw,1857
15
- omserv/nginx/patches/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- omserv/nginx/patches/nginx-1.28.0_http_status.patch,sha256=bEDSczpBLcdjcBp_X1m73oxvt8KPeons7v_sUxqBSXM,4335
17
- omserv/nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- omserv/nodes/models.py,sha256=EOaq-aW1rbGOzHTmTULhbVwV5j_burL07qh2QO9smdM,1273
19
- omserv/nodes/registry.py,sha256=y67VMowll9IuLiTVgauAcbP8-evFJNqpwocwwt7kZL4,3478
20
- omserv/nodes/sql.py,sha256=vy7RP50JiH3jQHMVa7Hxk0pFJK3QcbGeTvyNppB1W4I,2826
21
- omserv/server/LICENSE,sha256=VKPNmbyrS9wcwcx20hBlVtLP01brb2dByHrWHeNLPag,1050
22
- omserv/server/__init__.py,sha256=YnPjrvhQAAqyNSv_hMJOID7JaP1CXXE7c7rSrsBEJtU,440
23
- omserv/server/config.py,sha256=oGWL1kuk45bJ6sVr8n3ow5Q-1nz9EqByjoykU2iOHIY,1189
24
- omserv/server/debug.py,sha256=N7RI0Jj-ttmys3DJD0RREmGG5XZpTCp6y9Yu0x98Agg,299
25
- omserv/server/default.py,sha256=hmfy--Q35QFMU8oTf4uHwVM2qBFG8mQDR9Wik2f1yZk,970
26
- omserv/server/events.py,sha256=VMr_rArsVjJYnyH9SqLWtOLUg18vSu1O0ep9gNBGR_c,1369
27
- omserv/server/headers.py,sha256=3H-NxMMQg5WuF5wF4AWFUEqkToh4NqNqHouavzbOQok,1188
28
- omserv/server/inject.py,sha256=mD3MIDd44_nr1mIiDfjzgJ4DCBeD3JILN6STTDNReGc,454
29
- omserv/server/lifespans.py,sha256=kRVxDQM18jCBzRUpafyb69q_bGSCyxxjAtrkxjqcZdE,4607
30
- omserv/server/listener.py,sha256=q8IFLZrgTTs_8Qx0V_gPp8lmXCgoIrgoDWBk5G8Dakg,7030
31
- omserv/server/multiprocess.py,sha256=aOGMVc6XJfHH1YnEEEsusILD8QV5Iqbe8ECXjOThRb8,4237
32
- omserv/server/server.py,sha256=4GBW9kZKuKZHaaf8-Qxt3hg0blsKDemJf0JCBrhoI6Q,5211
33
- omserv/server/sockets.py,sha256=lwqNP7URlp605ibsjHzp0pc-lyjcyTu-hD-uyojLUYk,3389
34
- omserv/server/ssl.py,sha256=gmB5ecM8Mck-YtGYF8pb2dwFdjABVGzERFCDzM9lBck,1483
35
- omserv/server/taskspawner.py,sha256=ljzF26UPtnp7GLAY_BvjzuwCoCO9aL7TKLwRNTmUy1M,3008
36
- omserv/server/types.py,sha256=02GcS_zDxBzkleaptwr7kT7viefNh7fhFJixPdDpL_M,2059
37
- omserv/server/workercontext.py,sha256=4rcLuGsyiU7URO7T_eHylOBPPNUS9C23QfEUVyJUtIY,1200
38
- omserv/server/protocols/__init__.py,sha256=Ryu2PDZ1TUI6F2l-HBEYgyzZ7wHqE6VmjqnS0tIvmQI,47
39
- omserv/server/protocols/h11.py,sha256=AmBQd-SMCuxckrzgr-uSXmw9Zv-Fiuu9a-uthZRwiG4,11960
40
- omserv/server/protocols/h2.py,sha256=9kbfVl21tvcUjuspu1lK1mGVcapDmWBODkEnW0R55P8,16027
41
- omserv/server/protocols/protocols.py,sha256=1ky8PGYIIR8wco6fcw-41RmHW-Kz_cNcZZoOqi7btNk,2790
42
- omserv/server/protocols/types.py,sha256=OXt5U3LsBToDxT7ipfFGiIHJU0WVvlfT6QQacF-_Plc,440
43
- omserv/server/resources/__init__.py,sha256=KppZbvZBKX1TdyaQZYY92oEKpdB3nuUXxharAgrbAIA,193
44
- omserv/server/resources/favicon.ico,sha256=48hwhc03Fp6Rbj0fEQEB95woJMhCDsM2nMZJfeKAU0g,38078
45
- omserv/server/streams/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
- omserv/server/streams/httpstream.py,sha256=0DeiAPLGbEGNa0fHTs8lUpi_CFZs4M5_QB-TiS8mobQ,8015
47
- omserv/server/streams/utils.py,sha256=aMOrqWIg_Hht5W4kLg3y7oR5AEkVvMrZhyjzo6U5owE,1527
48
- omserv/server/streams/wsstream.py,sha256=3Vyzox7dCE1tDSXjb6xBubWo41ZF9d38Hrsrlj6h1J8,15482
49
- omserv-0.0.0.dev362.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
50
- omserv-0.0.0.dev362.dist-info/METADATA,sha256=KIca4fEEFhCTIjoX7TpMMFCfwBFg7Ziq3VQ8Ck9XKxs,1005
51
- omserv-0.0.0.dev362.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
52
- omserv-0.0.0.dev362.dist-info/entry_points.txt,sha256=ivSrdA_ahEbI-eVMu-XZS-z4VrnQISvpecIkOqC9zFM,35
53
- omserv-0.0.0.dev362.dist-info/top_level.txt,sha256=HXehpnxeKscKNULzKNzZ27oNawBrsh1PaNAirbX-XNA,7
54
- omserv-0.0.0.dev362.dist-info/RECORD,,