ominfra 0.0.0.dev429__tar.gz → 0.0.0.dev430__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.dev429/ominfra.egg-info → ominfra-0.0.0.dev430}/PKG-INFO +3 -3
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/scripts/journald2aws.py +80 -40
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/scripts/manage.py +81 -40
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/scripts/supervisor.py +81 -40
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430/ominfra.egg-info}/PKG-INFO +3 -3
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra.egg-info/requires.txt +2 -2
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/pyproject.toml +3 -3
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/LICENSE +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/MANIFEST.in +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/README.md +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/.omlish-manifests.json +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/__about__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/__main__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/auth.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/cli.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/dataclasses.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/instancetypes/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/instancetypes/__main__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/instancetypes/cache.json.gz +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/instancetypes/cache.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/instancetypes/cli.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/journald2aws/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/journald2aws/__main__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/journald2aws/cursor.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/journald2aws/driver.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/journald2aws/main.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/journald2aws/poster.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/logs.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/metadata.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/models/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/models/base.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/models/gen/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/models/gen/__main__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/models/gen/cli.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/models/gen/gen.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/models/services/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/models/services/ec2.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/models/services/lambda_.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/models/services/rds.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/models/services/s3.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/aws/models/services/services.toml +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/gcp/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/gcp/api.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/clouds/gcp/auth.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/commands/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/commands/runners.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/commands/ssh.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/journald/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/journald/fields.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/journald/genmessages.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/journald/messages.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/journald/tailer.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/__main__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/bootstrap.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/bootstrap_.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/commands/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/commands/base.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/commands/inject.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/commands/injection.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/commands/local.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/commands/marshal.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/commands/ping.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/commands/subprocess.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/commands/types.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/config.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/apps.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/commands.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/conf/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/conf/inject.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/conf/manager.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/conf/specs.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/config.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/deploy.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/git.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/inject.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/injection.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/interp.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/nginx.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/paths/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/paths/inject.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/paths/manager.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/paths/owners.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/paths/paths.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/paths/specs.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/paths/types.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/specs.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/systemd.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/tags.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/tmp.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/types.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/deploy/venvs.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/inject.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/main.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/marshal.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/remote/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/remote/_main.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/remote/channel.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/remote/config.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/remote/connection.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/remote/execution.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/remote/inject.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/remote/payload.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/remote/spawning.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/system/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/system/commands.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/system/config.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/system/inject.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/system/packages.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/system/platforms.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/targets/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/targets/bestpython.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/targets/bestpython.sh +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/targets/connection.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/targets/inject.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/manage/targets/targets.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/pyremote.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/scripts/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/LICENSE.txt +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/__main__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/configs.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/dispatchers.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/dispatchersimpl.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/errors.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/events.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/groups.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/groupsimpl.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/http.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/inject.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/io.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/main.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/pipes.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/privileges.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/process.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/processimpl.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/setup.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/setupimpl.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/signals.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/spawning.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/spawningimpl.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/states.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/supervisor.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/types.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/utils/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/utils/collections.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/utils/diag.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/utils/fds.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/utils/fs.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/utils/os.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/utils/ostypes.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/utils/signals.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/utils/strings.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/supervisor/utils/users.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/systemd.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/tailscale/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/tailscale/api.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/tailscale/cli.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/threadworkers.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/tools/__init__.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra/tools/listresources.py +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra.egg-info/SOURCES.txt +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra.egg-info/dependency_links.txt +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra.egg-info/entry_points.txt +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/ominfra.egg-info/top_level.txt +0 -0
- {ominfra-0.0.0.dev429 → ominfra-0.0.0.dev430}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ominfra
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev430
|
4
4
|
Summary: ominfra
|
5
5
|
Author: wrmsr
|
6
6
|
License-Expression: BSD-3-Clause
|
@@ -14,8 +14,8 @@ Classifier: Programming Language :: Python :: 3.13
|
|
14
14
|
Requires-Python: >=3.13
|
15
15
|
Description-Content-Type: text/markdown
|
16
16
|
License-File: LICENSE
|
17
|
-
Requires-Dist: omdev==0.0.0.
|
18
|
-
Requires-Dist: omlish==0.0.0.
|
17
|
+
Requires-Dist: omdev==0.0.0.dev430
|
18
|
+
Requires-Dist: omlish==0.0.0.dev430
|
19
19
|
Provides-Extra: all
|
20
20
|
Requires-Dist: paramiko~=4.0; extra == "all"
|
21
21
|
Requires-Dist: asyncssh~=2.21; extra == "all"
|
@@ -1600,8 +1600,6 @@ class AttrOps(ta.Generic[T]):
|
|
1600
1600
|
self._eq = _eq
|
1601
1601
|
return _eq
|
1602
1602
|
|
1603
|
-
#
|
1604
|
-
|
1605
1603
|
@property
|
1606
1604
|
def hash_eq(self) -> ta.Tuple[
|
1607
1605
|
ta.Callable[[T], int],
|
@@ -1609,6 +1607,8 @@ class AttrOps(ta.Generic[T]):
|
|
1609
1607
|
]:
|
1610
1608
|
return (self.hash, self.eq)
|
1611
1609
|
|
1610
|
+
#
|
1611
|
+
|
1612
1612
|
@property
|
1613
1613
|
def repr_hash_eq(self) -> ta.Tuple[
|
1614
1614
|
ta.Callable[[T], str],
|
@@ -1619,20 +1619,25 @@ class AttrOps(ta.Generic[T]):
|
|
1619
1619
|
|
1620
1620
|
#
|
1621
1621
|
|
1622
|
+
class NOT_SET: # noqa
|
1623
|
+
def __new__(cls, *args, **kwargs): # noqa
|
1624
|
+
raise TypeError
|
1625
|
+
|
1622
1626
|
def install(
|
1623
1627
|
self,
|
1624
1628
|
locals_dct: ta.MutableMapping[str, ta.Any],
|
1625
1629
|
*,
|
1626
|
-
|
1627
|
-
|
1628
|
-
|
1629
|
-
eq: bool = False,
|
1630
|
+
repr: ta.Union[bool, ta.Type[NOT_SET]] = NOT_SET, # noqa
|
1631
|
+
hash: ta.Union[bool, ta.Type[NOT_SET]] = NOT_SET, # noqa
|
1632
|
+
eq: ta.Union[bool, ta.Type[NOT_SET]] = NOT_SET,
|
1630
1633
|
) -> 'AttrOps[T]':
|
1631
|
-
if repr
|
1634
|
+
if all(a is self.NOT_SET for a in (repr, hash, eq)):
|
1635
|
+
repr = hash = eq = True # noqa
|
1636
|
+
if repr:
|
1632
1637
|
locals_dct.update(__repr__=self.repr)
|
1633
|
-
if hash
|
1638
|
+
if hash:
|
1634
1639
|
locals_dct.update(__hash__=self.hash)
|
1635
|
-
if eq
|
1640
|
+
if eq:
|
1636
1641
|
locals_dct.update(__eq__=self.eq)
|
1637
1642
|
return self
|
1638
1643
|
|
@@ -2717,8 +2722,8 @@ class LoggingSourceFileInfo(ta.NamedTuple):
|
|
2717
2722
|
return None
|
2718
2723
|
|
2719
2724
|
return cls(
|
2720
|
-
file_name,
|
2721
|
-
module,
|
2725
|
+
file_name=file_name,
|
2726
|
+
module=module,
|
2722
2727
|
)
|
2723
2728
|
|
2724
2729
|
|
@@ -2735,9 +2740,9 @@ class LoggingThreadInfo(ta.NamedTuple):
|
|
2735
2740
|
@classmethod
|
2736
2741
|
def build(cls) -> 'LoggingThreadInfo':
|
2737
2742
|
return cls(
|
2738
|
-
threading.get_ident(),
|
2739
|
-
threading.get_native_id() if hasattr(threading, 'get_native_id') else None,
|
2740
|
-
threading.current_thread().name,
|
2743
|
+
ident=threading.get_ident(),
|
2744
|
+
native_id=threading.get_native_id() if hasattr(threading, 'get_native_id') else None,
|
2745
|
+
name=threading.current_thread().name,
|
2741
2746
|
)
|
2742
2747
|
|
2743
2748
|
|
@@ -2752,7 +2757,7 @@ class LoggingProcessInfo(ta.NamedTuple):
|
|
2752
2757
|
@classmethod
|
2753
2758
|
def build(cls) -> 'LoggingProcessInfo':
|
2754
2759
|
return cls(
|
2755
|
-
os.getpid(),
|
2760
|
+
pid=os.getpid(),
|
2756
2761
|
)
|
2757
2762
|
|
2758
2763
|
|
@@ -2771,7 +2776,7 @@ class LoggingMultiprocessingInfo(ta.NamedTuple):
|
|
2771
2776
|
return None
|
2772
2777
|
|
2773
2778
|
return cls(
|
2774
|
-
mp.current_process().name,
|
2779
|
+
process_name=mp.current_process().name,
|
2775
2780
|
)
|
2776
2781
|
|
2777
2782
|
|
@@ -2798,7 +2803,7 @@ class LoggingAsyncioTaskInfo(ta.NamedTuple):
|
|
2798
2803
|
return None
|
2799
2804
|
|
2800
2805
|
return cls(
|
2801
|
-
task.get_name(), # Always non-None
|
2806
|
+
name=task.get_name(), # Always non-None
|
2802
2807
|
)
|
2803
2808
|
|
2804
2809
|
|
@@ -2821,36 +2826,66 @@ class NamedLogLevel(int):
|
|
2821
2826
|
|
2822
2827
|
#
|
2823
2828
|
|
2824
|
-
|
2825
|
-
|
2826
|
-
|
2829
|
+
_CACHE: ta.ClassVar[ta.MutableMapping[int, 'NamedLogLevel']] = {}
|
2830
|
+
|
2831
|
+
@ta.overload
|
2832
|
+
def __new__(cls, name: str, offset: int = 0, /) -> 'NamedLogLevel':
|
2833
|
+
...
|
2834
|
+
|
2835
|
+
@ta.overload
|
2836
|
+
def __new__(cls, i: int, /) -> 'NamedLogLevel':
|
2837
|
+
...
|
2838
|
+
|
2839
|
+
def __new__(cls, x, offset=0, /):
|
2840
|
+
if isinstance(x, str):
|
2841
|
+
return cls(cls._INTS_BY_NAME[x.upper()] + offset)
|
2842
|
+
elif not offset and (c := cls._CACHE.get(x)) is not None:
|
2843
|
+
return c
|
2844
|
+
else:
|
2845
|
+
return super().__new__(cls, x + offset)
|
2827
2846
|
|
2828
|
-
|
2847
|
+
#
|
2848
|
+
|
2849
|
+
_name_and_offset: ta.Tuple[str, int]
|
2829
2850
|
|
2830
2851
|
@property
|
2831
|
-
def
|
2852
|
+
def name_and_offset(self) -> ta.Tuple[str, int]:
|
2832
2853
|
try:
|
2833
|
-
return self.
|
2854
|
+
return self._name_and_offset
|
2834
2855
|
except AttributeError:
|
2835
2856
|
pass
|
2836
2857
|
|
2837
|
-
if (n := self.
|
2858
|
+
if (n := self._NAMES_BY_INT.get(self)) is not None:
|
2859
|
+
t = (n, 0)
|
2860
|
+
else:
|
2838
2861
|
for n, i in self._NAME_INT_PAIRS: # noqa
|
2839
2862
|
if self >= i:
|
2863
|
+
t = (n, (self - i))
|
2840
2864
|
break
|
2841
2865
|
else:
|
2842
|
-
|
2866
|
+
t = ('NOTSET', int(self))
|
2867
|
+
|
2868
|
+
self._name_and_offset = t
|
2869
|
+
return t
|
2843
2870
|
|
2844
|
-
|
2871
|
+
@property
|
2872
|
+
def exact_name(self) -> ta.Optional[str]:
|
2873
|
+
n, o = self.name_and_offset
|
2874
|
+
return n if not o else None
|
2875
|
+
|
2876
|
+
@property
|
2877
|
+
def effective_name(self) -> str:
|
2878
|
+
n, _ = self.name_and_offset
|
2845
2879
|
return n
|
2846
2880
|
|
2847
2881
|
#
|
2848
2882
|
|
2849
|
-
def __repr__(self) -> str:
|
2850
|
-
return f'{self.__class__.__name__}({int(self)})'
|
2851
|
-
|
2852
2883
|
def __str__(self) -> str:
|
2853
|
-
return self.exact_name or f'{self.effective_name
|
2884
|
+
return self.exact_name or f'{self.effective_name}{int(self):+}'
|
2885
|
+
|
2886
|
+
def __repr__(self) -> str:
|
2887
|
+
n, o = self.name_and_offset
|
2888
|
+
return f'{self.__class__.__name__}({n!r}{f", {int(o)}" if o else ""})'
|
2854
2889
|
|
2855
2890
|
#
|
2856
2891
|
|
@@ -2870,6 +2905,9 @@ NamedLogLevel.DEBUG = NamedLogLevel(logging.DEBUG)
|
|
2870
2905
|
NamedLogLevel.NOTSET = NamedLogLevel(logging.NOTSET)
|
2871
2906
|
|
2872
2907
|
|
2908
|
+
NamedLogLevel._CACHE.update({i: NamedLogLevel(i) for i in NamedLogLevel._NAMES_BY_INT}) # noqa
|
2909
|
+
|
2910
|
+
|
2873
2911
|
########################################
|
2874
2912
|
# ../../../../../omlish/logs/std/filters.py
|
2875
2913
|
|
@@ -4968,10 +5006,10 @@ class LoggingCaller(ta.NamedTuple):
|
|
4968
5006
|
sinfo = sinfo[:-1]
|
4969
5007
|
|
4970
5008
|
return cls(
|
4971
|
-
f.f_code.co_filename,
|
4972
|
-
f.f_lineno or 0,
|
4973
|
-
f.f_code.co_name,
|
4974
|
-
sinfo,
|
5009
|
+
file_path=f.f_code.co_filename,
|
5010
|
+
line_no=f.f_lineno or 0,
|
5011
|
+
name=f.f_code.co_name,
|
5012
|
+
stack_info=sinfo,
|
4975
5013
|
)
|
4976
5014
|
|
4977
5015
|
|
@@ -5089,9 +5127,9 @@ class LoggingTimeFields(ta.NamedTuple):
|
|
5089
5127
|
relative_created = (time_ns - start_time_ns) / 1e6
|
5090
5128
|
|
5091
5129
|
return cls(
|
5092
|
-
created,
|
5093
|
-
msecs,
|
5094
|
-
relative_created,
|
5130
|
+
created=created,
|
5131
|
+
msecs=msecs,
|
5132
|
+
relative_created=relative_created,
|
5095
5133
|
)
|
5096
5134
|
|
5097
5135
|
|
@@ -5734,7 +5772,6 @@ def subprocess_maybe_shell_wrap_exec(*cmd: str) -> ta.Tuple[str, ...]:
|
|
5734
5772
|
|
5735
5773
|
|
5736
5774
|
class AnyLogger(Abstract, ta.Generic[T]):
|
5737
|
-
@ta.final
|
5738
5775
|
def is_enabled_for(self, level: LogLevel) -> bool:
|
5739
5776
|
return level >= self.get_effective_level()
|
5740
5777
|
|
@@ -5933,7 +5970,7 @@ class AsyncLogger(AnyLogger[ta.Awaitable[None]], Abstract):
|
|
5933
5970
|
class AnyNopLogger(AnyLogger[T], Abstract):
|
5934
5971
|
@ta.final
|
5935
5972
|
def get_effective_level(self) -> LogLevel:
|
5936
|
-
return 999
|
5973
|
+
return -999
|
5937
5974
|
|
5938
5975
|
|
5939
5976
|
@ta.final
|
@@ -6243,7 +6280,7 @@ class LoggingContextLogRecord(logging.LogRecord):
|
|
6243
6280
|
|
6244
6281
|
|
6245
6282
|
########################################
|
6246
|
-
# ../../../../../omlish/logs/std/
|
6283
|
+
# ../../../../../omlish/logs/std/loggers.py
|
6247
6284
|
|
6248
6285
|
|
6249
6286
|
##
|
@@ -6259,6 +6296,9 @@ class StdLogger(Logger):
|
|
6259
6296
|
def std(self) -> logging.Logger:
|
6260
6297
|
return self._std
|
6261
6298
|
|
6299
|
+
def is_enabled_for(self, level: LogLevel) -> bool:
|
6300
|
+
return self._std.isEnabledFor(level)
|
6301
|
+
|
6262
6302
|
def get_effective_level(self) -> LogLevel:
|
6263
6303
|
return self._std.getEffectiveLevel()
|
6264
6304
|
|
@@ -2779,8 +2779,6 @@ class AttrOps(ta.Generic[T]):
|
|
2779
2779
|
self._eq = _eq
|
2780
2780
|
return _eq
|
2781
2781
|
|
2782
|
-
#
|
2783
|
-
|
2784
2782
|
@property
|
2785
2783
|
def hash_eq(self) -> ta.Tuple[
|
2786
2784
|
ta.Callable[[T], int],
|
@@ -2788,6 +2786,8 @@ class AttrOps(ta.Generic[T]):
|
|
2788
2786
|
]:
|
2789
2787
|
return (self.hash, self.eq)
|
2790
2788
|
|
2789
|
+
#
|
2790
|
+
|
2791
2791
|
@property
|
2792
2792
|
def repr_hash_eq(self) -> ta.Tuple[
|
2793
2793
|
ta.Callable[[T], str],
|
@@ -2798,20 +2798,25 @@ class AttrOps(ta.Generic[T]):
|
|
2798
2798
|
|
2799
2799
|
#
|
2800
2800
|
|
2801
|
+
class NOT_SET: # noqa
|
2802
|
+
def __new__(cls, *args, **kwargs): # noqa
|
2803
|
+
raise TypeError
|
2804
|
+
|
2801
2805
|
def install(
|
2802
2806
|
self,
|
2803
2807
|
locals_dct: ta.MutableMapping[str, ta.Any],
|
2804
2808
|
*,
|
2805
|
-
|
2806
|
-
|
2807
|
-
|
2808
|
-
eq: bool = False,
|
2809
|
+
repr: ta.Union[bool, ta.Type[NOT_SET]] = NOT_SET, # noqa
|
2810
|
+
hash: ta.Union[bool, ta.Type[NOT_SET]] = NOT_SET, # noqa
|
2811
|
+
eq: ta.Union[bool, ta.Type[NOT_SET]] = NOT_SET,
|
2809
2812
|
) -> 'AttrOps[T]':
|
2810
|
-
if repr
|
2813
|
+
if all(a is self.NOT_SET for a in (repr, hash, eq)):
|
2814
|
+
repr = hash = eq = True # noqa
|
2815
|
+
if repr:
|
2811
2816
|
locals_dct.update(__repr__=self.repr)
|
2812
|
-
if hash
|
2817
|
+
if hash:
|
2813
2818
|
locals_dct.update(__hash__=self.hash)
|
2814
|
-
if eq
|
2819
|
+
if eq:
|
2815
2820
|
locals_dct.update(__eq__=self.eq)
|
2816
2821
|
return self
|
2817
2822
|
|
@@ -4019,8 +4024,8 @@ class LoggingSourceFileInfo(ta.NamedTuple):
|
|
4019
4024
|
return None
|
4020
4025
|
|
4021
4026
|
return cls(
|
4022
|
-
file_name,
|
4023
|
-
module,
|
4027
|
+
file_name=file_name,
|
4028
|
+
module=module,
|
4024
4029
|
)
|
4025
4030
|
|
4026
4031
|
|
@@ -4037,9 +4042,9 @@ class LoggingThreadInfo(ta.NamedTuple):
|
|
4037
4042
|
@classmethod
|
4038
4043
|
def build(cls) -> 'LoggingThreadInfo':
|
4039
4044
|
return cls(
|
4040
|
-
threading.get_ident(),
|
4041
|
-
threading.get_native_id() if hasattr(threading, 'get_native_id') else None,
|
4042
|
-
threading.current_thread().name,
|
4045
|
+
ident=threading.get_ident(),
|
4046
|
+
native_id=threading.get_native_id() if hasattr(threading, 'get_native_id') else None,
|
4047
|
+
name=threading.current_thread().name,
|
4043
4048
|
)
|
4044
4049
|
|
4045
4050
|
|
@@ -4054,7 +4059,7 @@ class LoggingProcessInfo(ta.NamedTuple):
|
|
4054
4059
|
@classmethod
|
4055
4060
|
def build(cls) -> 'LoggingProcessInfo':
|
4056
4061
|
return cls(
|
4057
|
-
os.getpid(),
|
4062
|
+
pid=os.getpid(),
|
4058
4063
|
)
|
4059
4064
|
|
4060
4065
|
|
@@ -4073,7 +4078,7 @@ class LoggingMultiprocessingInfo(ta.NamedTuple):
|
|
4073
4078
|
return None
|
4074
4079
|
|
4075
4080
|
return cls(
|
4076
|
-
mp.current_process().name,
|
4081
|
+
process_name=mp.current_process().name,
|
4077
4082
|
)
|
4078
4083
|
|
4079
4084
|
|
@@ -4100,7 +4105,7 @@ class LoggingAsyncioTaskInfo(ta.NamedTuple):
|
|
4100
4105
|
return None
|
4101
4106
|
|
4102
4107
|
return cls(
|
4103
|
-
task.get_name(), # Always non-None
|
4108
|
+
name=task.get_name(), # Always non-None
|
4104
4109
|
)
|
4105
4110
|
|
4106
4111
|
|
@@ -4123,36 +4128,66 @@ class NamedLogLevel(int):
|
|
4123
4128
|
|
4124
4129
|
#
|
4125
4130
|
|
4126
|
-
|
4127
|
-
|
4128
|
-
|
4131
|
+
_CACHE: ta.ClassVar[ta.MutableMapping[int, 'NamedLogLevel']] = {}
|
4132
|
+
|
4133
|
+
@ta.overload
|
4134
|
+
def __new__(cls, name: str, offset: int = 0, /) -> 'NamedLogLevel':
|
4135
|
+
...
|
4136
|
+
|
4137
|
+
@ta.overload
|
4138
|
+
def __new__(cls, i: int, /) -> 'NamedLogLevel':
|
4139
|
+
...
|
4140
|
+
|
4141
|
+
def __new__(cls, x, offset=0, /):
|
4142
|
+
if isinstance(x, str):
|
4143
|
+
return cls(cls._INTS_BY_NAME[x.upper()] + offset)
|
4144
|
+
elif not offset and (c := cls._CACHE.get(x)) is not None:
|
4145
|
+
return c
|
4146
|
+
else:
|
4147
|
+
return super().__new__(cls, x + offset)
|
4148
|
+
|
4149
|
+
#
|
4129
4150
|
|
4130
|
-
|
4151
|
+
_name_and_offset: ta.Tuple[str, int]
|
4131
4152
|
|
4132
4153
|
@property
|
4133
|
-
def
|
4154
|
+
def name_and_offset(self) -> ta.Tuple[str, int]:
|
4134
4155
|
try:
|
4135
|
-
return self.
|
4156
|
+
return self._name_and_offset
|
4136
4157
|
except AttributeError:
|
4137
4158
|
pass
|
4138
4159
|
|
4139
|
-
if (n := self.
|
4160
|
+
if (n := self._NAMES_BY_INT.get(self)) is not None:
|
4161
|
+
t = (n, 0)
|
4162
|
+
else:
|
4140
4163
|
for n, i in self._NAME_INT_PAIRS: # noqa
|
4141
4164
|
if self >= i:
|
4165
|
+
t = (n, (self - i))
|
4142
4166
|
break
|
4143
4167
|
else:
|
4144
|
-
|
4168
|
+
t = ('NOTSET', int(self))
|
4169
|
+
|
4170
|
+
self._name_and_offset = t
|
4171
|
+
return t
|
4145
4172
|
|
4146
|
-
|
4173
|
+
@property
|
4174
|
+
def exact_name(self) -> ta.Optional[str]:
|
4175
|
+
n, o = self.name_and_offset
|
4176
|
+
return n if not o else None
|
4177
|
+
|
4178
|
+
@property
|
4179
|
+
def effective_name(self) -> str:
|
4180
|
+
n, _ = self.name_and_offset
|
4147
4181
|
return n
|
4148
4182
|
|
4149
4183
|
#
|
4150
4184
|
|
4151
|
-
def __repr__(self) -> str:
|
4152
|
-
return f'{self.__class__.__name__}({int(self)})'
|
4153
|
-
|
4154
4185
|
def __str__(self) -> str:
|
4155
|
-
return self.exact_name or f'{self.effective_name
|
4186
|
+
return self.exact_name or f'{self.effective_name}{int(self):+}'
|
4187
|
+
|
4188
|
+
def __repr__(self) -> str:
|
4189
|
+
n, o = self.name_and_offset
|
4190
|
+
return f'{self.__class__.__name__}({n!r}{f", {int(o)}" if o else ""})'
|
4156
4191
|
|
4157
4192
|
#
|
4158
4193
|
|
@@ -4172,6 +4207,9 @@ NamedLogLevel.DEBUG = NamedLogLevel(logging.DEBUG)
|
|
4172
4207
|
NamedLogLevel.NOTSET = NamedLogLevel(logging.NOTSET)
|
4173
4208
|
|
4174
4209
|
|
4210
|
+
NamedLogLevel._CACHE.update({i: NamedLogLevel(i) for i in NamedLogLevel._NAMES_BY_INT}) # noqa
|
4211
|
+
|
4212
|
+
|
4175
4213
|
########################################
|
4176
4214
|
# ../../../omlish/logs/std/filters.py
|
4177
4215
|
|
@@ -7646,10 +7684,10 @@ class LoggingCaller(ta.NamedTuple):
|
|
7646
7684
|
sinfo = sinfo[:-1]
|
7647
7685
|
|
7648
7686
|
return cls(
|
7649
|
-
f.f_code.co_filename,
|
7650
|
-
f.f_lineno or 0,
|
7651
|
-
f.f_code.co_name,
|
7652
|
-
sinfo,
|
7687
|
+
file_path=f.f_code.co_filename,
|
7688
|
+
line_no=f.f_lineno or 0,
|
7689
|
+
name=f.f_code.co_name,
|
7690
|
+
stack_info=sinfo,
|
7653
7691
|
)
|
7654
7692
|
|
7655
7693
|
|
@@ -7660,6 +7698,7 @@ class LoggingCaller(ta.NamedTuple):
|
|
7660
7698
|
##
|
7661
7699
|
|
7662
7700
|
|
7701
|
+
@ta.runtime_checkable
|
7663
7702
|
class LoggerLike(ta.Protocol):
|
7664
7703
|
"""Satisfied by both our Logger and stdlib logging.Logger."""
|
7665
7704
|
|
@@ -7798,9 +7837,9 @@ class LoggingTimeFields(ta.NamedTuple):
|
|
7798
7837
|
relative_created = (time_ns - start_time_ns) / 1e6
|
7799
7838
|
|
7800
7839
|
return cls(
|
7801
|
-
created,
|
7802
|
-
msecs,
|
7803
|
-
relative_created,
|
7840
|
+
created=created,
|
7841
|
+
msecs=msecs,
|
7842
|
+
relative_created=relative_created,
|
7804
7843
|
)
|
7805
7844
|
|
7806
7845
|
|
@@ -10970,7 +11009,6 @@ class DeploySpec(DeploySpecKeyed[DeployKey]):
|
|
10970
11009
|
|
10971
11010
|
|
10972
11011
|
class AnyLogger(Abstract, ta.Generic[T]):
|
10973
|
-
@ta.final
|
10974
11012
|
def is_enabled_for(self, level: LogLevel) -> bool:
|
10975
11013
|
return level >= self.get_effective_level()
|
10976
11014
|
|
@@ -11169,7 +11207,7 @@ class AsyncLogger(AnyLogger[ta.Awaitable[None]], Abstract):
|
|
11169
11207
|
class AnyNopLogger(AnyLogger[T], Abstract):
|
11170
11208
|
@ta.final
|
11171
11209
|
def get_effective_level(self) -> LogLevel:
|
11172
|
-
return 999
|
11210
|
+
return -999
|
11173
11211
|
|
11174
11212
|
|
11175
11213
|
@ta.final
|
@@ -12091,7 +12129,7 @@ class SingleDirDeployPathOwner(DeployPathOwner, Abstract):
|
|
12091
12129
|
|
12092
12130
|
|
12093
12131
|
########################################
|
12094
|
-
# ../../../omlish/logs/std/
|
12132
|
+
# ../../../omlish/logs/std/loggers.py
|
12095
12133
|
|
12096
12134
|
|
12097
12135
|
##
|
@@ -12107,6 +12145,9 @@ class StdLogger(Logger):
|
|
12107
12145
|
def std(self) -> logging.Logger:
|
12108
12146
|
return self._std
|
12109
12147
|
|
12148
|
+
def is_enabled_for(self, level: LogLevel) -> bool:
|
12149
|
+
return self._std.isEnabledFor(level)
|
12150
|
+
|
12110
12151
|
def get_effective_level(self) -> LogLevel:
|
12111
12152
|
return self._std.getEffectiveLevel()
|
12112
12153
|
|