omserv 0.0.0.dev361__tar.gz → 0.0.0.dev363__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 (60) hide show
  1. {omserv-0.0.0.dev361/omserv.egg-info → omserv-0.0.0.dev363}/PKG-INFO +2 -2
  2. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/.manifests.json +1 -1
  3. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/apps/inject.py +3 -0
  4. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/nginx/build.py +3 -0
  5. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/nginx/logs.py +3 -0
  6. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/nginx/stubstatus.py +3 -0
  7. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/config.py +3 -0
  8. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/debug.py +3 -0
  9. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/default.py +3 -0
  10. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/headers.py +3 -0
  11. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/inject.py +3 -0
  12. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/lifespans.py +3 -0
  13. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/listener.py +3 -0
  14. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/multiprocess.py +3 -0
  15. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/protocols/h11.py +3 -0
  16. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/protocols/h2.py +3 -0
  17. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/protocols/protocols.py +3 -0
  18. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/protocols/types.py +3 -0
  19. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/server.py +3 -0
  20. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/sockets.py +3 -0
  21. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/ssl.py +3 -0
  22. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/streams/httpstream.py +3 -0
  23. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/streams/utils.py +3 -0
  24. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/streams/wsstream.py +3 -0
  25. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/taskspawner.py +3 -0
  26. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/workercontext.py +3 -0
  27. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363/omserv.egg-info}/PKG-INFO +2 -2
  28. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv.egg-info/requires.txt +1 -1
  29. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/pyproject.toml +2 -2
  30. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/LICENSE +0 -0
  31. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/MANIFEST.in +0 -0
  32. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/README.md +0 -0
  33. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/__about__.py +0 -0
  34. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/__init__.py +0 -0
  35. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/apps/__init__.py +0 -0
  36. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/apps/base.py +0 -0
  37. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/apps/markers.py +0 -0
  38. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/apps/routes.py +0 -0
  39. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/apps/sessions.py +0 -0
  40. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/apps/templates.py +0 -0
  41. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/nginx/__init__.py +0 -0
  42. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/nginx/patches/__init__.py +0 -0
  43. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/nginx/patches/nginx-1.28.0_http_status.patch +0 -0
  44. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/nodes/__init__.py +0 -0
  45. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/nodes/models.py +0 -0
  46. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/nodes/registry.py +0 -0
  47. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/nodes/sql.py +0 -0
  48. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/LICENSE +0 -0
  49. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/__init__.py +0 -0
  50. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/events.py +0 -0
  51. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/protocols/__init__.py +0 -0
  52. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/resources/__init__.py +0 -0
  53. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/resources/favicon.ico +0 -0
  54. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/streams/__init__.py +0 -0
  55. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv/server/types.py +0 -0
  56. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv.egg-info/SOURCES.txt +0 -0
  57. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv.egg-info/dependency_links.txt +0 -0
  58. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv.egg-info/entry_points.txt +0 -0
  59. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/omserv.egg-info/top_level.txt +0 -0
  60. {omserv-0.0.0.dev361 → omserv-0.0.0.dev363}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omserv
3
- Version: 0.0.0.dev361
3
+ Version: 0.0.0.dev363
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.dev361
15
+ Requires-Dist: omlish==0.0.0.dev363
16
16
  Provides-Extra: all
17
17
  Requires-Dist: h11~=0.16; extra == "all"
18
18
  Requires-Dist: h2~=4.2; extra == "all"
@@ -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",
@@ -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),
@@ -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
 
@@ -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
@@ -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
@@ -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')
@@ -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,
@@ -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
 
@@ -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__(
@@ -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:
@@ -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
 
@@ -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]
@@ -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.dev361
3
+ Version: 0.0.0.dev363
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.dev361
15
+ Requires-Dist: omlish==0.0.0.dev363
16
16
  Provides-Extra: all
17
17
  Requires-Dist: h11~=0.16; extra == "all"
18
18
  Requires-Dist: h2~=4.2; extra == "all"
@@ -1,4 +1,4 @@
1
- omlish==0.0.0.dev361
1
+ omlish==0.0.0.dev363
2
2
 
3
3
  [all]
4
4
  h11~=0.16
@@ -12,7 +12,7 @@ authors = [
12
12
  urls = {source = 'https://github.com/wrmsr/omlish'}
13
13
  license = {text = 'BSD-3-Clause'}
14
14
  requires-python = '>=3.13'
15
- version = '0.0.0.dev361'
15
+ version = '0.0.0.dev363'
16
16
  classifiers = [
17
17
  'License :: OSI Approved :: BSD License',
18
18
  'Development Status :: 2 - Pre-Alpha',
@@ -22,7 +22,7 @@ classifiers = [
22
22
  ]
23
23
  description = 'omserv'
24
24
  dependencies = [
25
- 'omlish == 0.0.0.dev361',
25
+ 'omlish == 0.0.0.dev363',
26
26
  ]
27
27
 
28
28
  [project.optional-dependencies]
File without changes
File without changes
File without changes
File without changes