ominfra 0.0.0.dev151__py3-none-any.whl → 0.0.0.dev153__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -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,,