ominfra 0.0.0.dev222__tar.gz → 0.0.0.dev223__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.
- {ominfra-0.0.0.dev222/ominfra.egg-info → ominfra-0.0.0.dev223}/PKG-INFO +3 -3
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/scripts/journald2aws.py +109 -6
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/scripts/manage.py +122 -28
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/scripts/supervisor.py +56 -14
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/http.py +3 -2
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/inject.py +1 -1
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/utils/strings.py +1 -1
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223/ominfra.egg-info}/PKG-INFO +3 -3
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra.egg-info/requires.txt +2 -2
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/pyproject.toml +3 -3
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/LICENSE +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/MANIFEST.in +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/README.rst +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/.manifests.json +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/__about__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/__main__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/auth.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/cli.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/dataclasses.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/instancetypes/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/instancetypes/__main__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/instancetypes/cache.json.gz +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/instancetypes/cache.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/instancetypes/cli.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/journald2aws/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/journald2aws/__main__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/journald2aws/cursor.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/journald2aws/driver.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/journald2aws/main.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/journald2aws/poster.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/logs.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/metadata.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/models/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/models/base.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/models/gen/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/models/gen/__main__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/models/gen/cli.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/models/gen/gen.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/models/services/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/models/services/ec2.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/models/services/lambda_.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/models/services/rds.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/models/services/s3.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/models/services/services.toml +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/gcp/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/gcp/api.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/gcp/auth.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/commands/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/commands/runners.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/commands/ssh.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/journald/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/journald/fields.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/journald/genmessages.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/journald/messages.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/journald/tailer.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/__main__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/bootstrap.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/bootstrap_.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/commands/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/commands/base.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/commands/inject.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/commands/injection.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/commands/local.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/commands/marshal.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/commands/ping.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/commands/subprocess.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/commands/types.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/config.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/apps.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/commands.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/conf/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/conf/inject.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/conf/manager.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/conf/specs.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/config.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/deploy.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/git.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/inject.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/injection.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/interp.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/nginx.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/paths/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/paths/inject.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/paths/manager.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/paths/owners.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/paths/paths.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/paths/specs.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/paths/types.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/specs.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/systemd.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/tags.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/tmp.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/types.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/deploy/venvs.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/inject.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/main.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/marshal.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/remote/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/remote/_main.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/remote/channel.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/remote/config.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/remote/connection.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/remote/execution.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/remote/inject.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/remote/payload.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/remote/spawning.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/system/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/system/commands.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/system/config.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/system/inject.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/system/packages.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/system/platforms.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/targets/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/targets/bestpython.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/targets/bestpython.sh +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/targets/connection.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/targets/inject.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/manage/targets/targets.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/pyremote.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/scripts/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/LICENSE.txt +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/__main__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/configs.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/dispatchers.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/dispatchersimpl.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/events.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/exceptions.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/groups.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/groupsimpl.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/io.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/main.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/pipes.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/privileges.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/process.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/processimpl.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/setup.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/setupimpl.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/signals.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/spawning.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/spawningimpl.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/states.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/supervisor.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/types.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/utils/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/utils/collections.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/utils/diag.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/utils/fds.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/utils/fs.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/utils/os.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/utils/ostypes.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/utils/signals.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/supervisor/utils/users.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/systemd.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/tailscale/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/tailscale/api.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/tailscale/cli.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/threadworkers.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/tools/__init__.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/tools/listresources.py +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra.egg-info/SOURCES.txt +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra.egg-info/dependency_links.txt +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra.egg-info/entry_points.txt +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra.egg-info/top_level.txt +0 -0
- {ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: ominfra
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev223
|
4
4
|
Summary: ominfra
|
5
5
|
Author: wrmsr
|
6
6
|
License: BSD-3-Clause
|
@@ -12,8 +12,8 @@ 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: omdev==0.0.0.
|
16
|
-
Requires-Dist: omlish==0.0.0.
|
15
|
+
Requires-Dist: omdev==0.0.0.dev223
|
16
|
+
Requires-Dist: omlish==0.0.0.dev223
|
17
17
|
Provides-Extra: all
|
18
18
|
Requires-Dist: paramiko~=3.5; extra == "all"
|
19
19
|
Requires-Dist: asyncssh~=2.18; extra == "all"
|
@@ -3388,18 +3388,34 @@ class ObjMarshalerManager:
|
|
3388
3388
|
return reg
|
3389
3389
|
|
3390
3390
|
if abc.ABC in ty.__bases__:
|
3391
|
-
|
3392
|
-
|
3393
|
-
|
3394
|
-
|
3395
|
-
|
3391
|
+
tn = ty.__name__
|
3392
|
+
impls: ta.List[ta.Tuple[type, str]] = [ # type: ignore[var-annotated]
|
3393
|
+
(ity, ity.__name__)
|
3394
|
+
for ity in deep_subclasses(ty)
|
3395
|
+
if abc.ABC not in ity.__bases__
|
3396
|
+
]
|
3397
|
+
|
3398
|
+
if all(itn.endswith(tn) for _, itn in impls):
|
3399
|
+
impls = [
|
3400
|
+
(ity, snake_case(itn[:-len(tn)]))
|
3401
|
+
for ity, itn in impls
|
3402
|
+
]
|
3403
|
+
|
3404
|
+
dupe_tns = sorted(
|
3405
|
+
dn
|
3406
|
+
for dn, dc in collections.Counter(itn for _, itn in impls).items()
|
3407
|
+
if dc > 1
|
3408
|
+
)
|
3409
|
+
if dupe_tns:
|
3410
|
+
raise KeyError(f'Duplicate impl names for {ty}: {dupe_tns}')
|
3411
|
+
|
3396
3412
|
return PolymorphicObjMarshaler.of([
|
3397
3413
|
PolymorphicObjMarshaler.Impl(
|
3398
3414
|
ity,
|
3399
3415
|
itn,
|
3400
3416
|
rec(ity),
|
3401
3417
|
)
|
3402
|
-
for ity, itn in
|
3418
|
+
for ity, itn in impls
|
3403
3419
|
])
|
3404
3420
|
|
3405
3421
|
if issubclass(ty, enum.Enum):
|
@@ -4470,7 +4486,51 @@ class BaseSubprocesses(abc.ABC): # noqa
|
|
4470
4486
|
##
|
4471
4487
|
|
4472
4488
|
|
4489
|
+
@dc.dataclass(frozen=True)
|
4490
|
+
class SubprocessRun:
|
4491
|
+
cmd: ta.Sequence[str]
|
4492
|
+
input: ta.Any = None
|
4493
|
+
timeout: ta.Optional[float] = None
|
4494
|
+
check: bool = False
|
4495
|
+
capture_output: ta.Optional[bool] = None
|
4496
|
+
kwargs: ta.Optional[ta.Mapping[str, ta.Any]] = None
|
4497
|
+
|
4498
|
+
|
4499
|
+
@dc.dataclass(frozen=True)
|
4500
|
+
class SubprocessRunOutput(ta.Generic[T]):
|
4501
|
+
proc: T
|
4502
|
+
|
4503
|
+
returncode: int # noqa
|
4504
|
+
|
4505
|
+
stdout: ta.Optional[bytes] = None
|
4506
|
+
stderr: ta.Optional[bytes] = None
|
4507
|
+
|
4508
|
+
|
4473
4509
|
class AbstractSubprocesses(BaseSubprocesses, abc.ABC):
|
4510
|
+
@abc.abstractmethod
|
4511
|
+
def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
|
4512
|
+
raise NotImplementedError
|
4513
|
+
|
4514
|
+
def run(
|
4515
|
+
self,
|
4516
|
+
*cmd: str,
|
4517
|
+
input: ta.Any = None, # noqa
|
4518
|
+
timeout: ta.Optional[float] = None,
|
4519
|
+
check: bool = False,
|
4520
|
+
capture_output: ta.Optional[bool] = None,
|
4521
|
+
**kwargs: ta.Any,
|
4522
|
+
) -> SubprocessRunOutput:
|
4523
|
+
return self.run_(SubprocessRun(
|
4524
|
+
cmd=cmd,
|
4525
|
+
input=input,
|
4526
|
+
timeout=timeout,
|
4527
|
+
check=check,
|
4528
|
+
capture_output=capture_output,
|
4529
|
+
kwargs=kwargs,
|
4530
|
+
))
|
4531
|
+
|
4532
|
+
#
|
4533
|
+
|
4474
4534
|
@abc.abstractmethod
|
4475
4535
|
def check_call(
|
4476
4536
|
self,
|
@@ -4534,6 +4594,25 @@ class AbstractSubprocesses(BaseSubprocesses, abc.ABC):
|
|
4534
4594
|
|
4535
4595
|
|
4536
4596
|
class Subprocesses(AbstractSubprocesses):
|
4597
|
+
def run_(self, run: SubprocessRun) -> SubprocessRunOutput[subprocess.CompletedProcess]:
|
4598
|
+
proc = subprocess.run(
|
4599
|
+
run.cmd,
|
4600
|
+
input=run.input,
|
4601
|
+
timeout=run.timeout,
|
4602
|
+
check=run.check,
|
4603
|
+
capture_output=run.capture_output or False,
|
4604
|
+
**(run.kwargs or {}),
|
4605
|
+
)
|
4606
|
+
|
4607
|
+
return SubprocessRunOutput(
|
4608
|
+
proc=proc,
|
4609
|
+
|
4610
|
+
returncode=proc.returncode,
|
4611
|
+
|
4612
|
+
stdout=proc.stdout, # noqa
|
4613
|
+
stderr=proc.stderr, # noqa
|
4614
|
+
)
|
4615
|
+
|
4537
4616
|
def check_call(
|
4538
4617
|
self,
|
4539
4618
|
*cmd: str,
|
@@ -4559,6 +4638,30 @@ subprocesses = Subprocesses()
|
|
4559
4638
|
|
4560
4639
|
|
4561
4640
|
class AbstractAsyncSubprocesses(BaseSubprocesses):
|
4641
|
+
@abc.abstractmethod
|
4642
|
+
async def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
|
4643
|
+
raise NotImplementedError
|
4644
|
+
|
4645
|
+
def run(
|
4646
|
+
self,
|
4647
|
+
*cmd: str,
|
4648
|
+
input: ta.Any = None, # noqa
|
4649
|
+
timeout: ta.Optional[float] = None,
|
4650
|
+
check: bool = False,
|
4651
|
+
capture_output: ta.Optional[bool] = None,
|
4652
|
+
**kwargs: ta.Any,
|
4653
|
+
) -> ta.Awaitable[SubprocessRunOutput]:
|
4654
|
+
return self.run_(SubprocessRun(
|
4655
|
+
cmd=cmd,
|
4656
|
+
input=input,
|
4657
|
+
timeout=timeout,
|
4658
|
+
check=check,
|
4659
|
+
capture_output=capture_output,
|
4660
|
+
kwargs=kwargs,
|
4661
|
+
))
|
4662
|
+
|
4663
|
+
#
|
4664
|
+
|
4562
4665
|
@abc.abstractmethod
|
4563
4666
|
async def check_call(
|
4564
4667
|
self,
|
@@ -6826,18 +6826,34 @@ class ObjMarshalerManager:
|
|
6826
6826
|
return reg
|
6827
6827
|
|
6828
6828
|
if abc.ABC in ty.__bases__:
|
6829
|
-
|
6830
|
-
|
6831
|
-
|
6832
|
-
|
6833
|
-
|
6829
|
+
tn = ty.__name__
|
6830
|
+
impls: ta.List[ta.Tuple[type, str]] = [ # type: ignore[var-annotated]
|
6831
|
+
(ity, ity.__name__)
|
6832
|
+
for ity in deep_subclasses(ty)
|
6833
|
+
if abc.ABC not in ity.__bases__
|
6834
|
+
]
|
6835
|
+
|
6836
|
+
if all(itn.endswith(tn) for _, itn in impls):
|
6837
|
+
impls = [
|
6838
|
+
(ity, snake_case(itn[:-len(tn)]))
|
6839
|
+
for ity, itn in impls
|
6840
|
+
]
|
6841
|
+
|
6842
|
+
dupe_tns = sorted(
|
6843
|
+
dn
|
6844
|
+
for dn, dc in collections.Counter(itn for _, itn in impls).items()
|
6845
|
+
if dc > 1
|
6846
|
+
)
|
6847
|
+
if dupe_tns:
|
6848
|
+
raise KeyError(f'Duplicate impl names for {ty}: {dupe_tns}')
|
6849
|
+
|
6834
6850
|
return PolymorphicObjMarshaler.of([
|
6835
6851
|
PolymorphicObjMarshaler.Impl(
|
6836
6852
|
ity,
|
6837
6853
|
itn,
|
6838
6854
|
rec(ity),
|
6839
6855
|
)
|
6840
|
-
for ity, itn in
|
6856
|
+
for ity, itn in impls
|
6841
6857
|
])
|
6842
6858
|
|
6843
6859
|
if issubclass(ty, enum.Enum):
|
@@ -8407,7 +8423,51 @@ class BaseSubprocesses(abc.ABC): # noqa
|
|
8407
8423
|
##
|
8408
8424
|
|
8409
8425
|
|
8426
|
+
@dc.dataclass(frozen=True)
|
8427
|
+
class SubprocessRun:
|
8428
|
+
cmd: ta.Sequence[str]
|
8429
|
+
input: ta.Any = None
|
8430
|
+
timeout: ta.Optional[float] = None
|
8431
|
+
check: bool = False
|
8432
|
+
capture_output: ta.Optional[bool] = None
|
8433
|
+
kwargs: ta.Optional[ta.Mapping[str, ta.Any]] = None
|
8434
|
+
|
8435
|
+
|
8436
|
+
@dc.dataclass(frozen=True)
|
8437
|
+
class SubprocessRunOutput(ta.Generic[T]):
|
8438
|
+
proc: T
|
8439
|
+
|
8440
|
+
returncode: int # noqa
|
8441
|
+
|
8442
|
+
stdout: ta.Optional[bytes] = None
|
8443
|
+
stderr: ta.Optional[bytes] = None
|
8444
|
+
|
8445
|
+
|
8410
8446
|
class AbstractSubprocesses(BaseSubprocesses, abc.ABC):
|
8447
|
+
@abc.abstractmethod
|
8448
|
+
def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
|
8449
|
+
raise NotImplementedError
|
8450
|
+
|
8451
|
+
def run(
|
8452
|
+
self,
|
8453
|
+
*cmd: str,
|
8454
|
+
input: ta.Any = None, # noqa
|
8455
|
+
timeout: ta.Optional[float] = None,
|
8456
|
+
check: bool = False,
|
8457
|
+
capture_output: ta.Optional[bool] = None,
|
8458
|
+
**kwargs: ta.Any,
|
8459
|
+
) -> SubprocessRunOutput:
|
8460
|
+
return self.run_(SubprocessRun(
|
8461
|
+
cmd=cmd,
|
8462
|
+
input=input,
|
8463
|
+
timeout=timeout,
|
8464
|
+
check=check,
|
8465
|
+
capture_output=capture_output,
|
8466
|
+
kwargs=kwargs,
|
8467
|
+
))
|
8468
|
+
|
8469
|
+
#
|
8470
|
+
|
8411
8471
|
@abc.abstractmethod
|
8412
8472
|
def check_call(
|
8413
8473
|
self,
|
@@ -8471,6 +8531,25 @@ class AbstractSubprocesses(BaseSubprocesses, abc.ABC):
|
|
8471
8531
|
|
8472
8532
|
|
8473
8533
|
class Subprocesses(AbstractSubprocesses):
|
8534
|
+
def run_(self, run: SubprocessRun) -> SubprocessRunOutput[subprocess.CompletedProcess]:
|
8535
|
+
proc = subprocess.run(
|
8536
|
+
run.cmd,
|
8537
|
+
input=run.input,
|
8538
|
+
timeout=run.timeout,
|
8539
|
+
check=run.check,
|
8540
|
+
capture_output=run.capture_output or False,
|
8541
|
+
**(run.kwargs or {}),
|
8542
|
+
)
|
8543
|
+
|
8544
|
+
return SubprocessRunOutput(
|
8545
|
+
proc=proc,
|
8546
|
+
|
8547
|
+
returncode=proc.returncode,
|
8548
|
+
|
8549
|
+
stdout=proc.stdout, # noqa
|
8550
|
+
stderr=proc.stderr, # noqa
|
8551
|
+
)
|
8552
|
+
|
8474
8553
|
def check_call(
|
8475
8554
|
self,
|
8476
8555
|
*cmd: str,
|
@@ -8496,6 +8575,30 @@ subprocesses = Subprocesses()
|
|
8496
8575
|
|
8497
8576
|
|
8498
8577
|
class AbstractAsyncSubprocesses(BaseSubprocesses):
|
8578
|
+
@abc.abstractmethod
|
8579
|
+
async def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
|
8580
|
+
raise NotImplementedError
|
8581
|
+
|
8582
|
+
def run(
|
8583
|
+
self,
|
8584
|
+
*cmd: str,
|
8585
|
+
input: ta.Any = None, # noqa
|
8586
|
+
timeout: ta.Optional[float] = None,
|
8587
|
+
check: bool = False,
|
8588
|
+
capture_output: ta.Optional[bool] = None,
|
8589
|
+
**kwargs: ta.Any,
|
8590
|
+
) -> ta.Awaitable[SubprocessRunOutput]:
|
8591
|
+
return self.run_(SubprocessRun(
|
8592
|
+
cmd=cmd,
|
8593
|
+
input=input,
|
8594
|
+
timeout=timeout,
|
8595
|
+
check=check,
|
8596
|
+
capture_output=capture_output,
|
8597
|
+
kwargs=kwargs,
|
8598
|
+
))
|
8599
|
+
|
8600
|
+
#
|
8601
|
+
|
8499
8602
|
@abc.abstractmethod
|
8500
8603
|
async def check_call(
|
8501
8604
|
self,
|
@@ -9617,41 +9720,32 @@ class AsyncioSubprocesses(AbstractAsyncSubprocesses):
|
|
9617
9720
|
|
9618
9721
|
#
|
9619
9722
|
|
9620
|
-
|
9621
|
-
|
9622
|
-
proc: asyncio.subprocess.Process
|
9623
|
-
stdout: ta.Optional[bytes]
|
9624
|
-
stderr: ta.Optional[bytes]
|
9723
|
+
async def run_(self, run: SubprocessRun) -> SubprocessRunOutput[asyncio.subprocess.Process]:
|
9724
|
+
kwargs = dict(run.kwargs or {})
|
9625
9725
|
|
9626
|
-
|
9627
|
-
self,
|
9628
|
-
*cmd: str,
|
9629
|
-
input: ta.Any = None, # noqa
|
9630
|
-
timeout: ta.Optional[float] = None,
|
9631
|
-
check: bool = False, # noqa
|
9632
|
-
capture_output: ta.Optional[bool] = None,
|
9633
|
-
**kwargs: ta.Any,
|
9634
|
-
) -> RunOutput:
|
9635
|
-
if capture_output:
|
9726
|
+
if run.capture_output:
|
9636
9727
|
kwargs.setdefault('stdout', subprocess.PIPE)
|
9637
9728
|
kwargs.setdefault('stderr', subprocess.PIPE)
|
9638
9729
|
|
9639
9730
|
proc: asyncio.subprocess.Process
|
9640
|
-
async with self.popen(*cmd, **kwargs) as proc:
|
9641
|
-
stdout, stderr = await self.communicate(proc, input, timeout)
|
9731
|
+
async with self.popen(*run.cmd, **kwargs) as proc:
|
9732
|
+
stdout, stderr = await self.communicate(proc, run.input, run.timeout)
|
9642
9733
|
|
9643
9734
|
if check and proc.returncode:
|
9644
9735
|
raise subprocess.CalledProcessError(
|
9645
9736
|
proc.returncode,
|
9646
|
-
cmd,
|
9737
|
+
run.cmd,
|
9647
9738
|
output=stdout,
|
9648
9739
|
stderr=stderr,
|
9649
9740
|
)
|
9650
9741
|
|
9651
|
-
return
|
9652
|
-
proc,
|
9653
|
-
|
9654
|
-
|
9742
|
+
return SubprocessRunOutput(
|
9743
|
+
proc=proc,
|
9744
|
+
|
9745
|
+
returncode=check.isinstance(proc.returncode, int),
|
9746
|
+
|
9747
|
+
stdout=stdout,
|
9748
|
+
stderr=stderr,
|
9655
9749
|
)
|
9656
9750
|
|
9657
9751
|
#
|
@@ -599,7 +599,7 @@ class SuffixMultiplier:
|
|
599
599
|
for k in d:
|
600
600
|
if self._keysz is None:
|
601
601
|
self._keysz = len(k)
|
602
|
-
elif self._keysz != len(k):
|
602
|
+
elif self._keysz != len(k):
|
603
603
|
raise ValueError(k)
|
604
604
|
|
605
605
|
def __call__(self, v: ta.Union[str, int]) -> int:
|
@@ -3929,6 +3929,8 @@ class HttpRequestParser:
|
|
3929
3929
|
|
3930
3930
|
#
|
3931
3931
|
|
3932
|
+
_TLS_HANDSHAKE_PREFIX = b'\x16'
|
3933
|
+
|
3932
3934
|
def coro_parse(self) -> ta.Generator[int, bytes, ParseHttpRequestResult]:
|
3933
3935
|
raw_request_line = yield self._max_line + 1
|
3934
3936
|
|
@@ -3967,6 +3969,17 @@ class HttpRequestParser:
|
|
3967
3969
|
if not raw_request_line:
|
3968
3970
|
return EmptyParsedHttpResult(**result_kwargs())
|
3969
3971
|
|
3972
|
+
# Detect TLS
|
3973
|
+
|
3974
|
+
if raw_request_line.startswith(self._TLS_HANDSHAKE_PREFIX):
|
3975
|
+
return ParseHttpRequestError(
|
3976
|
+
code=http.HTTPStatus.BAD_REQUEST,
|
3977
|
+
message='Bad request version (probable TLS handshake)',
|
3978
|
+
**result_kwargs(),
|
3979
|
+
)
|
3980
|
+
|
3981
|
+
# Decode line
|
3982
|
+
|
3970
3983
|
request_line = raw_request_line.decode('iso-8859-1').rstrip('\r\n')
|
3971
3984
|
|
3972
3985
|
# Split words
|
@@ -5984,18 +5997,34 @@ class ObjMarshalerManager:
|
|
5984
5997
|
return reg
|
5985
5998
|
|
5986
5999
|
if abc.ABC in ty.__bases__:
|
5987
|
-
|
5988
|
-
|
5989
|
-
|
5990
|
-
|
5991
|
-
|
6000
|
+
tn = ty.__name__
|
6001
|
+
impls: ta.List[ta.Tuple[type, str]] = [ # type: ignore[var-annotated]
|
6002
|
+
(ity, ity.__name__)
|
6003
|
+
for ity in deep_subclasses(ty)
|
6004
|
+
if abc.ABC not in ity.__bases__
|
6005
|
+
]
|
6006
|
+
|
6007
|
+
if all(itn.endswith(tn) for _, itn in impls):
|
6008
|
+
impls = [
|
6009
|
+
(ity, snake_case(itn[:-len(tn)]))
|
6010
|
+
for ity, itn in impls
|
6011
|
+
]
|
6012
|
+
|
6013
|
+
dupe_tns = sorted(
|
6014
|
+
dn
|
6015
|
+
for dn, dc in collections.Counter(itn for _, itn in impls).items()
|
6016
|
+
if dc > 1
|
6017
|
+
)
|
6018
|
+
if dupe_tns:
|
6019
|
+
raise KeyError(f'Duplicate impl names for {ty}: {dupe_tns}')
|
6020
|
+
|
5992
6021
|
return PolymorphicObjMarshaler.of([
|
5993
6022
|
PolymorphicObjMarshaler.Impl(
|
5994
6023
|
ity,
|
5995
6024
|
itn,
|
5996
6025
|
rec(ity),
|
5997
6026
|
)
|
5998
|
-
for ity, itn in
|
6027
|
+
for ity, itn in impls
|
5999
6028
|
])
|
6000
6029
|
|
6001
6030
|
if issubclass(ty, enum.Enum):
|
@@ -6879,6 +6908,19 @@ class HttpHandler_(abc.ABC): # noqa
|
|
6879
6908
|
raise NotImplementedError
|
6880
6909
|
|
6881
6910
|
|
6911
|
+
@dc.dataclass(frozen=True)
|
6912
|
+
class LoggingHttpHandler(HttpHandler_):
|
6913
|
+
handler: HttpHandler
|
6914
|
+
log: logging.Logger
|
6915
|
+
level: int = logging.INFO
|
6916
|
+
|
6917
|
+
def __call__(self, req: HttpHandlerRequest) -> HttpHandlerResponse:
|
6918
|
+
self.log.log(self.level, '%r', req)
|
6919
|
+
resp = self.handler(req)
|
6920
|
+
self.log.log(self.level, '%r', resp)
|
6921
|
+
return resp
|
6922
|
+
|
6923
|
+
|
6882
6924
|
########################################
|
6883
6925
|
# ../../../omlish/lite/configs.py
|
6884
6926
|
|
@@ -7682,7 +7724,7 @@ class CoroHttpServer:
|
|
7682
7724
|
if isinstance(parsed, ParseHttpRequestError):
|
7683
7725
|
err = self._build_error(
|
7684
7726
|
parsed.code,
|
7685
|
-
*parsed.message,
|
7727
|
+
*([parsed.message] if isinstance(parsed.message, str) else parsed.message),
|
7686
7728
|
version=parsed.version,
|
7687
7729
|
)
|
7688
7730
|
yield self.ErrorLogIo(err)
|
@@ -8544,7 +8586,7 @@ class CoroHttpServerConnectionFdioHandler(SocketFdioHandler):
|
|
8544
8586
|
self._log_handler = log_handler
|
8545
8587
|
|
8546
8588
|
self._read_buf = ReadableListBuffer()
|
8547
|
-
self._write_buf: IncrementalWriteBuffer
|
8589
|
+
self._write_buf: ta.Optional[IncrementalWriteBuffer] = None
|
8548
8590
|
|
8549
8591
|
self._coro_srv = CoroHttpServer(
|
8550
8592
|
addr,
|
@@ -8552,7 +8594,7 @@ class CoroHttpServerConnectionFdioHandler(SocketFdioHandler):
|
|
8552
8594
|
)
|
8553
8595
|
self._srv_coro: ta.Optional[ta.Generator[CoroHttpServer.Io, ta.Optional[bytes], None]] = self._coro_srv.coro_handle() # noqa
|
8554
8596
|
|
8555
|
-
self._cur_io: CoroHttpServer.Io
|
8597
|
+
self._cur_io: ta.Optional[CoroHttpServer.Io] = None
|
8556
8598
|
self._next_io()
|
8557
8599
|
|
8558
8600
|
#
|
@@ -8560,7 +8602,7 @@ class CoroHttpServerConnectionFdioHandler(SocketFdioHandler):
|
|
8560
8602
|
def _next_io(self) -> None: # noqa
|
8561
8603
|
coro = check.not_none(self._srv_coro)
|
8562
8604
|
|
8563
|
-
d: bytes
|
8605
|
+
d: ta.Optional[bytes] = None
|
8564
8606
|
o = self._cur_io
|
8565
8607
|
while True:
|
8566
8608
|
if o is None:
|
@@ -8937,7 +8979,7 @@ class HttpServer(HasDispatchers):
|
|
8937
8979
|
##
|
8938
8980
|
|
8939
8981
|
|
8940
|
-
class SupervisorHttpHandler:
|
8982
|
+
class SupervisorHttpHandler(HttpHandler_):
|
8941
8983
|
def __init__(
|
8942
8984
|
self,
|
8943
8985
|
*,
|
@@ -8947,7 +8989,7 @@ class SupervisorHttpHandler:
|
|
8947
8989
|
|
8948
8990
|
self._groups = groups
|
8949
8991
|
|
8950
|
-
def
|
8992
|
+
def __call__(self, req: HttpHandlerRequest) -> HttpHandlerResponse:
|
8951
8993
|
dct = {
|
8952
8994
|
'method': req.method,
|
8953
8995
|
'path': req.path,
|
@@ -10163,7 +10205,7 @@ def bind_server(
|
|
10163
10205
|
|
10164
10206
|
if config.http_port is not None:
|
10165
10207
|
def _provide_http_handler(s: SupervisorHttpHandler) -> HttpServer.Handler:
|
10166
|
-
return HttpServer.Handler(s
|
10208
|
+
return HttpServer.Handler(s)
|
10167
10209
|
|
10168
10210
|
lst.extend([
|
10169
10211
|
inj.bind(HttpServer, singleton=True, eager=True),
|
@@ -6,6 +6,7 @@ import typing as ta
|
|
6
6
|
|
7
7
|
from omlish.http.coro.fdio import CoroHttpServerConnectionFdioHandler
|
8
8
|
from omlish.http.handlers import HttpHandler
|
9
|
+
from omlish.http.handlers import HttpHandler_
|
9
10
|
from omlish.http.handlers import HttpHandlerRequest
|
10
11
|
from omlish.http.handlers import HttpHandlerResponse
|
11
12
|
from omlish.io.fdio.handlers import SocketFdioHandler
|
@@ -98,7 +99,7 @@ class HttpServer(HasDispatchers):
|
|
98
99
|
##
|
99
100
|
|
100
101
|
|
101
|
-
class SupervisorHttpHandler:
|
102
|
+
class SupervisorHttpHandler(HttpHandler_):
|
102
103
|
def __init__(
|
103
104
|
self,
|
104
105
|
*,
|
@@ -108,7 +109,7 @@ class SupervisorHttpHandler:
|
|
108
109
|
|
109
110
|
self._groups = groups
|
110
111
|
|
111
|
-
def
|
112
|
+
def __call__(self, req: HttpHandlerRequest) -> HttpHandlerResponse:
|
112
113
|
dct = {
|
113
114
|
'method': req.method,
|
114
115
|
'path': req.path,
|
@@ -133,7 +133,7 @@ def bind_server(
|
|
133
133
|
|
134
134
|
if config.http_port is not None:
|
135
135
|
def _provide_http_handler(s: SupervisorHttpHandler) -> HttpServer.Handler:
|
136
|
-
return HttpServer.Handler(s
|
136
|
+
return HttpServer.Handler(s)
|
137
137
|
|
138
138
|
lst.extend([
|
139
139
|
inj.bind(HttpServer, singleton=True, eager=True),
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: ominfra
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev223
|
4
4
|
Summary: ominfra
|
5
5
|
Author: wrmsr
|
6
6
|
License: BSD-3-Clause
|
@@ -12,8 +12,8 @@ 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: omdev==0.0.0.
|
16
|
-
Requires-Dist: omlish==0.0.0.
|
15
|
+
Requires-Dist: omdev==0.0.0.dev223
|
16
|
+
Requires-Dist: omlish==0.0.0.dev223
|
17
17
|
Provides-Extra: all
|
18
18
|
Requires-Dist: paramiko~=3.5; extra == "all"
|
19
19
|
Requires-Dist: asyncssh~=2.18; extra == "all"
|
@@ -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.12'
|
15
|
-
version = '0.0.0.
|
15
|
+
version = '0.0.0.dev223'
|
16
16
|
classifiers = [
|
17
17
|
'License :: OSI Approved :: BSD License',
|
18
18
|
'Development Status :: 2 - Pre-Alpha',
|
@@ -22,8 +22,8 @@ classifiers = [
|
|
22
22
|
]
|
23
23
|
description = 'ominfra'
|
24
24
|
dependencies = [
|
25
|
-
'omdev == 0.0.0.
|
26
|
-
'omlish == 0.0.0.
|
25
|
+
'omdev == 0.0.0.dev223',
|
26
|
+
'omlish == 0.0.0.dev223',
|
27
27
|
]
|
28
28
|
|
29
29
|
[project.optional-dependencies]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ominfra-0.0.0.dev222 → ominfra-0.0.0.dev223}/ominfra/clouds/aws/instancetypes/cache.json.gz
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|