ominfra 0.0.0.dev151__py3-none-any.whl → 0.0.0.dev153__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.
@@ -4682,163 +4682,6 @@ class Injection:
4682
4682
  inj = Injection
4683
4683
 
4684
4684
 
4685
- ########################################
4686
- # ../../../omlish/lite/journald.py
4687
-
4688
-
4689
- ##
4690
-
4691
-
4692
- class sd_iovec(ct.Structure): # noqa
4693
- pass
4694
-
4695
-
4696
- sd_iovec._fields_ = [
4697
- ('iov_base', ct.c_void_p), # Pointer to data.
4698
- ('iov_len', ct.c_size_t), # Length of data.
4699
- ]
4700
-
4701
-
4702
- ##
4703
-
4704
-
4705
- @cached_nullary
4706
- def sd_libsystemd() -> ta.Any:
4707
- lib = ct.CDLL('libsystemd.so.0')
4708
-
4709
- lib.sd_journal_sendv.restype = ct.c_int
4710
- lib.sd_journal_sendv.argtypes = [ct.POINTER(sd_iovec), ct.c_int]
4711
-
4712
- return lib
4713
-
4714
-
4715
- @cached_nullary
4716
- def sd_try_libsystemd() -> ta.Optional[ta.Any]:
4717
- try:
4718
- return sd_libsystemd()
4719
- except OSError: # noqa
4720
- return None
4721
-
4722
-
4723
- ##
4724
-
4725
-
4726
- def sd_journald_send(**fields: str) -> int:
4727
- lib = sd_libsystemd()
4728
-
4729
- msgs = [
4730
- f'{k.upper()}={v}\0'.encode('utf-8')
4731
- for k, v in fields.items()
4732
- ]
4733
-
4734
- vec = (sd_iovec * len(msgs))()
4735
- cl = (ct.c_char_p * len(msgs))() # noqa
4736
- for i in range(len(msgs)):
4737
- vec[i].iov_base = ct.cast(ct.c_char_p(msgs[i]), ct.c_void_p)
4738
- vec[i].iov_len = len(msgs[i]) - 1
4739
-
4740
- return lib.sd_journal_sendv(vec, len(msgs))
4741
-
4742
-
4743
- ##
4744
-
4745
-
4746
- SD_LOG_LEVEL_MAP: ta.Mapping[int, int] = {
4747
- logging.FATAL: syslog.LOG_EMERG, # system is unusable
4748
- # LOG_ALERT ? # action must be taken immediately
4749
- logging.CRITICAL: syslog.LOG_CRIT,
4750
- logging.ERROR: syslog.LOG_ERR,
4751
- logging.WARNING: syslog.LOG_WARNING,
4752
- # LOG_NOTICE ? # normal but significant condition
4753
- logging.INFO: syslog.LOG_INFO,
4754
- logging.DEBUG: syslog.LOG_DEBUG,
4755
- }
4756
-
4757
-
4758
- class JournaldLogHandler(logging.Handler):
4759
- """
4760
- TODO:
4761
- - fallback handler for when this barfs
4762
- """
4763
-
4764
- def __init__(
4765
- self,
4766
- *,
4767
- use_formatter_output: bool = False,
4768
- ) -> None:
4769
- super().__init__()
4770
-
4771
- sd_libsystemd()
4772
-
4773
- self._use_formatter_output = use_formatter_output
4774
-
4775
- #
4776
-
4777
- EXTRA_RECORD_ATTRS_BY_JOURNALD_FIELD: ta.ClassVar[ta.Mapping[str, str]] = {
4778
- 'name': 'name',
4779
- 'module': 'module',
4780
- 'exception': 'exc_text',
4781
- 'thread_name': 'threadName',
4782
- 'task_name': 'taskName',
4783
- }
4784
-
4785
- def make_fields(self, record: logging.LogRecord) -> ta.Mapping[str, str]:
4786
- formatter_message = self.format(record)
4787
- if self._use_formatter_output:
4788
- message = formatter_message
4789
- else:
4790
- message = record.message
4791
-
4792
- fields: dict[str, str] = {
4793
- 'message': message,
4794
- 'priority': str(SD_LOG_LEVEL_MAP[record.levelno]),
4795
- 'tid': str(threading.get_ident()),
4796
- }
4797
-
4798
- if (pathname := record.pathname) is not None:
4799
- fields['code_file'] = pathname
4800
- if (lineno := record.lineno) is not None:
4801
- fields['code_lineno'] = str(lineno)
4802
- if (func_name := record.funcName) is not None:
4803
- fields['code_func'] = func_name
4804
-
4805
- for f, a in self.EXTRA_RECORD_ATTRS_BY_JOURNALD_FIELD.items():
4806
- if (v := getattr(record, a, None)) is not None:
4807
- fields[f] = str(v)
4808
-
4809
- return fields
4810
-
4811
- #
4812
-
4813
- def emit(self, record: logging.LogRecord) -> None:
4814
- try:
4815
- fields = self.make_fields(record)
4816
-
4817
- if rc := sd_journald_send(**fields):
4818
- raise RuntimeError(f'{self.__class__.__name__}.emit failed: {rc=}') # noqa
4819
-
4820
- except RecursionError: # See issue 36272
4821
- raise
4822
-
4823
- except Exception: # noqa
4824
- self.handleError(record)
4825
-
4826
-
4827
- def journald_log_handler_factory(
4828
- *,
4829
- no_tty_check: bool = False,
4830
- no_fallback: bool = False,
4831
- ) -> logging.Handler:
4832
- if (
4833
- sys.platform == 'linux' and
4834
- (no_tty_check or not sys.stderr.isatty()) and
4835
- (no_fallback or sd_try_libsystemd() is not None)
4836
- ):
4837
- return JournaldLogHandler()
4838
-
4839
- return logging.StreamHandler()
4840
-
4841
-
4842
4685
  ########################################
4843
4686
  # ../../../omlish/lite/logs.py
4844
4687
  """
@@ -5565,6 +5408,163 @@ def check_runtime_version() -> None:
5565
5408
  raise OSError(f'Requires python {REQUIRED_PYTHON_VERSION}, got {sys.version_info} from {sys.executable}') # noqa
5566
5409
 
5567
5410
 
5411
+ ########################################
5412
+ # ../../../omlish/os/journald.py
5413
+
5414
+
5415
+ ##
5416
+
5417
+
5418
+ class sd_iovec(ct.Structure): # noqa
5419
+ pass
5420
+
5421
+
5422
+ sd_iovec._fields_ = [
5423
+ ('iov_base', ct.c_void_p), # Pointer to data.
5424
+ ('iov_len', ct.c_size_t), # Length of data.
5425
+ ]
5426
+
5427
+
5428
+ ##
5429
+
5430
+
5431
+ @cached_nullary
5432
+ def sd_libsystemd() -> ta.Any:
5433
+ lib = ct.CDLL('libsystemd.so.0')
5434
+
5435
+ lib.sd_journal_sendv.restype = ct.c_int
5436
+ lib.sd_journal_sendv.argtypes = [ct.POINTER(sd_iovec), ct.c_int]
5437
+
5438
+ return lib
5439
+
5440
+
5441
+ @cached_nullary
5442
+ def sd_try_libsystemd() -> ta.Optional[ta.Any]:
5443
+ try:
5444
+ return sd_libsystemd()
5445
+ except OSError: # noqa
5446
+ return None
5447
+
5448
+
5449
+ ##
5450
+
5451
+
5452
+ def sd_journald_send(**fields: str) -> int:
5453
+ lib = sd_libsystemd()
5454
+
5455
+ msgs = [
5456
+ f'{k.upper()}={v}\0'.encode('utf-8')
5457
+ for k, v in fields.items()
5458
+ ]
5459
+
5460
+ vec = (sd_iovec * len(msgs))()
5461
+ cl = (ct.c_char_p * len(msgs))() # noqa
5462
+ for i in range(len(msgs)):
5463
+ vec[i].iov_base = ct.cast(ct.c_char_p(msgs[i]), ct.c_void_p)
5464
+ vec[i].iov_len = len(msgs[i]) - 1
5465
+
5466
+ return lib.sd_journal_sendv(vec, len(msgs))
5467
+
5468
+
5469
+ ##
5470
+
5471
+
5472
+ SD_LOG_LEVEL_MAP: ta.Mapping[int, int] = {
5473
+ logging.FATAL: syslog.LOG_EMERG, # system is unusable
5474
+ # LOG_ALERT ? # action must be taken immediately
5475
+ logging.CRITICAL: syslog.LOG_CRIT,
5476
+ logging.ERROR: syslog.LOG_ERR,
5477
+ logging.WARNING: syslog.LOG_WARNING,
5478
+ # LOG_NOTICE ? # normal but significant condition
5479
+ logging.INFO: syslog.LOG_INFO,
5480
+ logging.DEBUG: syslog.LOG_DEBUG,
5481
+ }
5482
+
5483
+
5484
+ class JournaldLogHandler(logging.Handler):
5485
+ """
5486
+ TODO:
5487
+ - fallback handler for when this barfs
5488
+ """
5489
+
5490
+ def __init__(
5491
+ self,
5492
+ *,
5493
+ use_formatter_output: bool = False,
5494
+ ) -> None:
5495
+ super().__init__()
5496
+
5497
+ sd_libsystemd()
5498
+
5499
+ self._use_formatter_output = use_formatter_output
5500
+
5501
+ #
5502
+
5503
+ EXTRA_RECORD_ATTRS_BY_JOURNALD_FIELD: ta.ClassVar[ta.Mapping[str, str]] = {
5504
+ 'name': 'name',
5505
+ 'module': 'module',
5506
+ 'exception': 'exc_text',
5507
+ 'thread_name': 'threadName',
5508
+ 'task_name': 'taskName',
5509
+ }
5510
+
5511
+ def make_fields(self, record: logging.LogRecord) -> ta.Mapping[str, str]:
5512
+ formatter_message = self.format(record)
5513
+ if self._use_formatter_output:
5514
+ message = formatter_message
5515
+ else:
5516
+ message = record.message
5517
+
5518
+ fields: dict[str, str] = {
5519
+ 'message': message,
5520
+ 'priority': str(SD_LOG_LEVEL_MAP[record.levelno]),
5521
+ 'tid': str(threading.get_ident()),
5522
+ }
5523
+
5524
+ if (pathname := record.pathname) is not None:
5525
+ fields['code_file'] = pathname
5526
+ if (lineno := record.lineno) is not None:
5527
+ fields['code_lineno'] = str(lineno)
5528
+ if (func_name := record.funcName) is not None:
5529
+ fields['code_func'] = func_name
5530
+
5531
+ for f, a in self.EXTRA_RECORD_ATTRS_BY_JOURNALD_FIELD.items():
5532
+ if (v := getattr(record, a, None)) is not None:
5533
+ fields[f] = str(v)
5534
+
5535
+ return fields
5536
+
5537
+ #
5538
+
5539
+ def emit(self, record: logging.LogRecord) -> None:
5540
+ try:
5541
+ fields = self.make_fields(record)
5542
+
5543
+ if rc := sd_journald_send(**fields):
5544
+ raise RuntimeError(f'{self.__class__.__name__}.emit failed: {rc=}') # noqa
5545
+
5546
+ except RecursionError: # See issue 36272
5547
+ raise
5548
+
5549
+ except Exception: # noqa
5550
+ self.handleError(record)
5551
+
5552
+
5553
+ def journald_log_handler_factory(
5554
+ *,
5555
+ no_tty_check: bool = False,
5556
+ no_fallback: bool = False,
5557
+ ) -> logging.Handler:
5558
+ if (
5559
+ sys.platform == 'linux' and
5560
+ (no_tty_check or not sys.stderr.isatty()) and
5561
+ (no_fallback or sd_try_libsystemd() is not None)
5562
+ ):
5563
+ return JournaldLogHandler()
5564
+
5565
+ return logging.StreamHandler()
5566
+
5567
+
5568
5568
  ########################################
5569
5569
  # ../../configs.py
5570
5570
 
@@ -36,9 +36,9 @@ import typing as ta
36
36
 
37
37
  from omlish.http.coroserver import CoroHttpServer
38
38
  from omlish.lite.inject import inj
39
- from omlish.lite.journald import journald_log_handler_factory
40
39
  from omlish.lite.logs import configure_standard_logging
41
40
  from omlish.lite.runtime import is_debugger_attached
41
+ from omlish.os.journald import journald_log_handler_factory
42
42
 
43
43
  from ..configs import read_config_file
44
44
  from .configs import ServerConfig
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ominfra
3
- Version: 0.0.0.dev151
3
+ Version: 0.0.0.dev153
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.dev151
16
- Requires-Dist: omlish==0.0.0.dev151
15
+ Requires-Dist: omdev==0.0.0.dev153
16
+ Requires-Dist: omlish==0.0.0.dev153
17
17
  Provides-Extra: all
18
18
  Requires-Dist: paramiko~=3.5; extra == "all"
19
19
  Requires-Dist: asyncssh~=2.18; extra == "all"
@@ -17,7 +17,7 @@ ominfra/clouds/aws/metadata.py,sha256=XR1BuMdQheyeFjjA3MN8GCNWVAp5ahoPdbWXEmViut
17
17
  ominfra/clouds/aws/journald2aws/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
18
18
  ominfra/clouds/aws/journald2aws/__main__.py,sha256=d23loR_cKfTYZwYiqpt_CmKI7dd5WcYFgIYzqMep75E,68
19
19
  ominfra/clouds/aws/journald2aws/cursor.py,sha256=tQ7O6BHlEdaalbiI_Rqagj0aHfdtTQ_ZJwdOSRUjNvQ,1173
20
- ominfra/clouds/aws/journald2aws/driver.py,sha256=xSK8rCgBNtSnuApBYWtVLdRrcKAtef87hgNqBcn8gGw,6113
20
+ ominfra/clouds/aws/journald2aws/driver.py,sha256=b3XfSlIBWAWJLImmyh1ZK9FpdNAYNZ2YZeCv_Q9GckM,6111
21
21
  ominfra/clouds/aws/journald2aws/main.py,sha256=RQJhk4aPtnp4EHzC-ST1Rs9BN6D7bqQQVjCRxGU7JuQ,2147
22
22
  ominfra/clouds/aws/journald2aws/poster.py,sha256=hz1XuctW8GtLmfjhRvCFY6py52D4BzXHYny5XKFpHSA,2833
23
23
  ominfra/clouds/gcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -29,36 +29,42 @@ ominfra/journald/messages.py,sha256=zhAQswhpSBybaBPWONCt0quenYK91HMHRkuOz38mq1E,
29
29
  ominfra/journald/tailer.py,sha256=gBVtuc8dm-H13eOYC-F5fCrJLuiC3fAC3TyVdrKhnqQ,33516
30
30
  ominfra/manage/__init__.py,sha256=aykrEASTHEtJ-o97jUHRIv8oea41tO7RDHB56cQfmis,265
31
31
  ominfra/manage/__main__.py,sha256=5IeIERm-371fSI5ZvPv8eldAJBwgKwpR0R49pTsILNM,76
32
- ominfra/manage/bootstrap.py,sha256=puGpmK6b6ZCAX5E_HI9ucUuWlXB4U_4Xwc2x8GAKSVo,240
33
- ominfra/manage/bootstrap_.py,sha256=WVry3P5ViPpdEC_-EFBouZTECMxs4CwRbek4Oz_iRbc,517
32
+ ominfra/manage/bootstrap.py,sha256=sEWjTk6PDZOH4R5pQ9QJ_fkK7r5n8j-IRVZ4JAHD-W4,330
33
+ ominfra/manage/bootstrap_.py,sha256=EGp5pK6td-Hj8i7PKdj024K8WY7rZw1voI8Wy0cYKB4,557
34
34
  ominfra/manage/config.py,sha256=1y2N_8nXHBZc6YbW6BaRZoDDCTBmiHuWtTOQ7zdr5VE,184
35
- ominfra/manage/inject.py,sha256=jGjGqlecpxzpJR3-RqQhEBOmpsix5UwSsvrz5DbayC4,1395
36
- ominfra/manage/main.py,sha256=wXeMx_lo6KQLSxRWACgdmrVlWGLUbs4qPJIyPWhzIH4,3898
35
+ ominfra/manage/inject.py,sha256=8OSQRHAZClIrg14AtrElBlmBFFuEK64a1BZ8yYUNtG0,1585
36
+ ominfra/manage/main.py,sha256=ccMRt6tp7s9k9Ov36vhAQskhy4WcODimSiUOtLk6oCg,3914
37
37
  ominfra/manage/marshal.py,sha256=WKj7IU9bo4fBMSSzT6ZMm_WFalXIJZ-V7j8oi92fNhk,305
38
38
  ominfra/manage/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
39
  ominfra/manage/commands/base.py,sha256=LtaI0AgnplttQK7gNncNItq8yuTZQimJTaprVpZktI8,3993
40
40
  ominfra/manage/commands/execution.py,sha256=BJyAIOJx7dG8x4T75vIMpE_hEJCPPnfIkebXpQulSNE,618
41
41
  ominfra/manage/commands/inject.py,sha256=yyIR0qQaXw_BXEnl8vZZiVkfilZNyyHHbJ44AHTMUi4,3553
42
- ominfra/manage/commands/interp.py,sha256=C8pStt9GjDEr2u7BgDUQQ9ikHsf8A7aI3_F5AgbsYEc,1034
42
+ ominfra/manage/commands/interp.py,sha256=OKkenH8YKEW_mEDR6X7_ZLxK9a1Ox6KHSwFPTHT6OzA,1029
43
43
  ominfra/manage/commands/marshal.py,sha256=4DSCMPzRiRhufIB_9DPL6LrZkRZOle5ruOWU4MVlcXM,694
44
- ominfra/manage/commands/subprocess.py,sha256=7iqg16kZJlHSbkhwOEFf8jiN_yAT0DC7ijEqBmm9R1o,2534
44
+ ominfra/manage/commands/subprocess.py,sha256=J0w7WbcTNcyz6IepslkYu_UARUHFGqE-hSW2rpTaEgM,2529
45
45
  ominfra/manage/deploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
- ominfra/manage/deploy/command.py,sha256=CBzsw31u86wxkY9Ms-Es70ijD_3naZLAcj3Gb6OfGeQ,565
47
- ominfra/manage/deploy/inject.py,sha256=j5LYK5y_nZgdaNLde8sV2w_---GvmibgO_ZBT8qzeFM,499
46
+ ominfra/manage/deploy/commands.py,sha256=YZGdpiaqj_-iMp2SMdz4hB6bTKk3UQxnHeTblGyxuuk,560
47
+ ominfra/manage/deploy/inject.py,sha256=5Mi3HmNdLSc2NsTJsa0z0fHzQ9W1eTUVzRD3-t9Sd_8,501
48
48
  ominfra/manage/deploy/paths.py,sha256=Ad7OGERMqGUWO-0os1PXSO3sh9uGqrxxlEyT_3fYkac,3703
49
49
  ominfra/manage/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
- ominfra/manage/remote/_main.py,sha256=xxCKOu52b_a5BoH1mkHlof-PLn01QwKu928SKvlT9G0,4358
50
+ ominfra/manage/remote/_main.py,sha256=4BAMcbDaNBwhGO3Y5iDgvWk7xMnFooALsF-EbIXO0MI,4360
51
51
  ominfra/manage/remote/channel.py,sha256=36xR9Ti9ZA8TUBtxmY0u7_3Lv7E6wzQTxlZl7gLR5GE,2224
52
- ominfra/manage/remote/config.py,sha256=zRIC7Yhh3FMfoIgyqlbDTwpL_jS23lhQXjGB2_YG4Eg,473
53
- ominfra/manage/remote/connection.py,sha256=5h-JrMK07Ulqgol3ZXmcTpSUr6iMu1oZd-wCjnRqe_Y,2821
54
- ominfra/manage/remote/execution.py,sha256=0h22FVKSKHiOvtMERxFzn0-WZkDtT3bJTwIiKwUXwIs,9374
55
- ominfra/manage/remote/inject.py,sha256=euI9YmLTmNw7tdkQq_5PtFg6n9pYz3mGukOOApdYwfg,1076
52
+ ominfra/manage/remote/config.py,sha256=uazjAYAXyiYOu-i0bxFwQT_hfZPluHHTXbQ5bUYDfvY,523
53
+ ominfra/manage/remote/connection.py,sha256=yIx5eAwX-9dHHTCCVH5uaZiUeJHKVJlJ98_AhJMfgV0,4193
54
+ ominfra/manage/remote/execution.py,sha256=5A12u02LIAs2FitaYGPrNDaVmbwaGCKH-aq3SVBaLHE,11730
55
+ ominfra/manage/remote/inject.py,sha256=A-TwAIbMzs270_zCpngNU1JRsJc42OdbnP55azD4Nvs,1450
56
56
  ominfra/manage/remote/payload.py,sha256=Rn-Yo26POpHEOOfUHX3jWkqcQVEAvkJ_5Bu13jwoob4,944
57
57
  ominfra/manage/remote/spawning.py,sha256=bL87ted_lLwLW6DhrYPaXLRaIq7f6VYg_u2LJoMEpoE,3205
58
+ ominfra/manage/system/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
+ ominfra/manage/system/commands.py,sha256=1jzpDdQFiOQ7iXY8c6ooBxG3xT3ZjRmOLlvFIereeqc,670
60
+ ominfra/manage/system/config.py,sha256=sxjJ5dV_x1Ax2tyHvL7KaJYPaDFt9MTORFKdVXb7Y_I,158
61
+ ominfra/manage/system/inject.py,sha256=Q28oFEf6wAGkm-iU521NXp9dvD_0vE5YTQjNBa-AK5I,1412
62
+ ominfra/manage/system/packages.py,sha256=SjAtPBXxtYhS38YTenEOdzuSHEt_sK_zG0FCEYgpNbI,3654
63
+ ominfra/manage/system/types.py,sha256=wLe-HgJ6pHZyueA0gbFNlHVzk5A5T02-O5zD65A65iQ,99
58
64
  ominfra/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
- ominfra/scripts/journald2aws.py,sha256=2pklA2U6IGkH5uceLYpCTv2MooDOSNcUuPm59Fbn9ro,149439
60
- ominfra/scripts/manage.py,sha256=Zb1P-6ocGEKoIG0tNPOVbdWZzoZy7GEEG4S-ZvixYaE,194839
61
- ominfra/scripts/supervisor.py,sha256=J_RMGNjyC2e9KMeikgKaPlQ8T76-sNBch37Nd2B88p0,262208
65
+ ominfra/scripts/journald2aws.py,sha256=jLXI4iuMN1uRtRgCeyyczjwRl1pxKEgfbz1q8CJoUjc,149453
66
+ ominfra/scripts/manage.py,sha256=2v-2iIZqSVixsAvj7569_kmhwG14xVVu-9BVur1soh8,206140
67
+ ominfra/scripts/supervisor.py,sha256=uPzXIfstv1J-LhDCKLx70RMUBQVA0zMkd7h4X18SAzQ,262206
62
68
  ominfra/supervisor/LICENSE.txt,sha256=yvqaMNsDhWxziHa9ien6qCW1SkZv-DQlAg96XjfSee8,1746
63
69
  ominfra/supervisor/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
64
70
  ominfra/supervisor/__main__.py,sha256=I0yFw-C08OOiZ3BF6lF1Oiv789EQXu-_j6whDhQUTEA,66
@@ -72,7 +78,7 @@ ominfra/supervisor/groupsimpl.py,sha256=PCDyc_Wc-pnvIj56_aEyiA5exCpK6n9iErqnJzO2
72
78
  ominfra/supervisor/http.py,sha256=hysC2uFm5wWqi_MmOs1NrQ_UdwiXOawKEV-B37fwA-A,3445
73
79
  ominfra/supervisor/inject.py,sha256=6nBEnpE8VLjtYK12z5DGRP7WzgbwLAz5yf__1KnJl6g,4693
74
80
  ominfra/supervisor/io.py,sha256=moaGNaPuYXEAUzLg8Qjo05DEIcOUNYUj8SSr8eT0d24,3198
75
- ominfra/supervisor/main.py,sha256=BhAZJX_8KrH311URzz33i-XN4cChoqhKSbDgCcr4WSw,4248
81
+ ominfra/supervisor/main.py,sha256=Pad43J0c6jvWGJqn3BAtIubD6MYuj261z-AgTuchvAs,4246
76
82
  ominfra/supervisor/pipes.py,sha256=2ZihNTnRNjnIPOtPbm3_pyqO15f7BNs7WnNtO5V8ahM,2231
77
83
  ominfra/supervisor/privileges.py,sha256=kaRTHI7XjqzxEWCeHp3_0J0Vc4gSPugRbXEwxuw6MYE,2054
78
84
  ominfra/supervisor/process.py,sha256=UaubVxsxVqDnbuWVpTH0DTGbJGLO0vGJ9mNcvy2kCXM,217
@@ -100,9 +106,9 @@ ominfra/tailscale/api.py,sha256=C5-t_b6jZXUWcy5k8bXm7CFnk73pSdrlMOgGDeGVrpw,1370
100
106
  ominfra/tailscale/cli.py,sha256=h6akQJMl0KuWLHS7Ur6WcBZ2JwF0DJQhsPTnFBdGyNk,3571
101
107
  ominfra/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
108
  ominfra/tools/listresources.py,sha256=4qVg5txsb10EHhvqXXeM6gJ2jx9LbroEnPydDv1uXs0,6176
103
- ominfra-0.0.0.dev151.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
104
- ominfra-0.0.0.dev151.dist-info/METADATA,sha256=fUCW-5TLndT49lZ0Kd-Dk-WE-GE0CMiZOvzYbCcIRh4,731
105
- ominfra-0.0.0.dev151.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
106
- ominfra-0.0.0.dev151.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
107
- ominfra-0.0.0.dev151.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
108
- ominfra-0.0.0.dev151.dist-info/RECORD,,
109
+ ominfra-0.0.0.dev153.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
110
+ ominfra-0.0.0.dev153.dist-info/METADATA,sha256=-qesY8Ito2ym0-ReRfbusxWegRC7rJmqT4oHlJrWlzg,731
111
+ ominfra-0.0.0.dev153.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
112
+ ominfra-0.0.0.dev153.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
113
+ ominfra-0.0.0.dev153.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
114
+ ominfra-0.0.0.dev153.dist-info/RECORD,,