ominfra 0.0.0.dev23__py3-none-any.whl → 0.0.0.dev24__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.
@@ -320,13 +320,134 @@ class StandardLogFormatter(logging.Formatter):
320
320
  ##
321
321
 
322
322
 
323
+ class ProxyLogFilterer(logging.Filterer):
324
+ def __init__(self, underlying: logging.Filterer) -> None: # noqa
325
+ self._underlying = underlying
326
+
327
+ @property
328
+ def underlying(self) -> logging.Filterer:
329
+ return self._underlying
330
+
331
+ @property
332
+ def filters(self):
333
+ return self._underlying.filters
334
+
335
+ @filters.setter
336
+ def filters(self, filters):
337
+ self._underlying.filters = filters
338
+
339
+ def addFilter(self, filter): # noqa
340
+ self._underlying.addFilter(filter)
341
+
342
+ def removeFilter(self, filter): # noqa
343
+ self._underlying.removeFilter(filter)
344
+
345
+ def filter(self, record):
346
+ return self._underlying.filter(record)
347
+
348
+
349
+ class ProxyLogHandler(ProxyLogFilterer, logging.Handler):
350
+ def __init__(self, underlying: logging.Handler) -> None: # noqa
351
+ ProxyLogFilterer.__init__(self, underlying)
352
+
353
+ _underlying: logging.Handler
354
+
355
+ @property
356
+ def underlying(self) -> logging.Handler:
357
+ return self._underlying
358
+
359
+ def get_name(self):
360
+ return self._underlying.get_name()
361
+
362
+ def set_name(self, name):
363
+ self._underlying.set_name(name)
364
+
365
+ @property
366
+ def name(self):
367
+ return self._underlying.name
368
+
369
+ @property
370
+ def level(self):
371
+ return self._underlying.level
372
+
373
+ @level.setter
374
+ def level(self, level):
375
+ self._underlying.level = level
376
+
377
+ @property
378
+ def formatter(self):
379
+ return self._underlying.formatter
380
+
381
+ @formatter.setter
382
+ def formatter(self, formatter):
383
+ self._underlying.formatter = formatter
384
+
385
+ def createLock(self):
386
+ self._underlying.createLock()
387
+
388
+ def acquire(self):
389
+ self._underlying.acquire()
390
+
391
+ def release(self):
392
+ self._underlying.release()
393
+
394
+ def setLevel(self, level):
395
+ self._underlying.setLevel(level)
396
+
397
+ def format(self, record):
398
+ return self._underlying.format(record)
399
+
400
+ def emit(self, record):
401
+ self._underlying.emit(record)
402
+
403
+ def handle(self, record):
404
+ return self._underlying.handle(record)
405
+
406
+ def setFormatter(self, fmt):
407
+ self._underlying.setFormatter(fmt)
408
+
409
+ def flush(self):
410
+ self._underlying.flush()
411
+
412
+ def close(self):
413
+ self._underlying.close()
414
+
415
+ def handleError(self, record):
416
+ self._underlying.handleError(record)
417
+
418
+
419
+ ##
420
+
421
+
422
+ class StandardLogHandler(ProxyLogHandler):
423
+ pass
424
+
425
+
426
+ ##
427
+
428
+
323
429
  def configure_standard_logging(
324
430
  level: ta.Union[int, str] = logging.INFO,
325
431
  *,
326
432
  json: bool = False,
327
- ) -> logging.Handler:
433
+ target: ta.Optional[logging.Logger] = None,
434
+ no_check: bool = False,
435
+ ) -> ta.Optional[StandardLogHandler]:
436
+ if target is None:
437
+ target = logging.root
438
+
439
+ #
440
+
441
+ if not no_check:
442
+ if any(isinstance(h, StandardLogHandler) for h in list(target.handlers)):
443
+ return None
444
+
445
+ #
446
+
328
447
  handler = logging.StreamHandler()
329
448
 
449
+ #
450
+
330
451
  formatter: logging.Formatter
331
452
  if json:
332
453
  formatter = JsonLogFormatter()
@@ -334,14 +455,22 @@ def configure_standard_logging(
334
455
  formatter = StandardLogFormatter(StandardLogFormatter.build_log_format(STANDARD_LOG_FORMAT_PARTS))
335
456
  handler.setFormatter(formatter)
336
457
 
458
+ #
459
+
337
460
  handler.addFilter(TidLogFilter())
338
461
 
339
- logging.root.addHandler(handler)
462
+ #
463
+
464
+ target.addHandler(handler)
465
+
466
+ #
340
467
 
341
468
  if level is not None:
342
- logging.root.setLevel(level)
469
+ target.setLevel(level)
470
+
471
+ #
343
472
 
344
- return handler
473
+ return StandardLogHandler(handler)
345
474
 
346
475
 
347
476
  ########################################
@@ -383,13 +383,134 @@ class StandardLogFormatter(logging.Formatter):
383
383
  ##
384
384
 
385
385
 
386
+ class ProxyLogFilterer(logging.Filterer):
387
+ def __init__(self, underlying: logging.Filterer) -> None: # noqa
388
+ self._underlying = underlying
389
+
390
+ @property
391
+ def underlying(self) -> logging.Filterer:
392
+ return self._underlying
393
+
394
+ @property
395
+ def filters(self):
396
+ return self._underlying.filters
397
+
398
+ @filters.setter
399
+ def filters(self, filters):
400
+ self._underlying.filters = filters
401
+
402
+ def addFilter(self, filter): # noqa
403
+ self._underlying.addFilter(filter)
404
+
405
+ def removeFilter(self, filter): # noqa
406
+ self._underlying.removeFilter(filter)
407
+
408
+ def filter(self, record):
409
+ return self._underlying.filter(record)
410
+
411
+
412
+ class ProxyLogHandler(ProxyLogFilterer, logging.Handler):
413
+ def __init__(self, underlying: logging.Handler) -> None: # noqa
414
+ ProxyLogFilterer.__init__(self, underlying)
415
+
416
+ _underlying: logging.Handler
417
+
418
+ @property
419
+ def underlying(self) -> logging.Handler:
420
+ return self._underlying
421
+
422
+ def get_name(self):
423
+ return self._underlying.get_name()
424
+
425
+ def set_name(self, name):
426
+ self._underlying.set_name(name)
427
+
428
+ @property
429
+ def name(self):
430
+ return self._underlying.name
431
+
432
+ @property
433
+ def level(self):
434
+ return self._underlying.level
435
+
436
+ @level.setter
437
+ def level(self, level):
438
+ self._underlying.level = level
439
+
440
+ @property
441
+ def formatter(self):
442
+ return self._underlying.formatter
443
+
444
+ @formatter.setter
445
+ def formatter(self, formatter):
446
+ self._underlying.formatter = formatter
447
+
448
+ def createLock(self):
449
+ self._underlying.createLock()
450
+
451
+ def acquire(self):
452
+ self._underlying.acquire()
453
+
454
+ def release(self):
455
+ self._underlying.release()
456
+
457
+ def setLevel(self, level):
458
+ self._underlying.setLevel(level)
459
+
460
+ def format(self, record):
461
+ return self._underlying.format(record)
462
+
463
+ def emit(self, record):
464
+ self._underlying.emit(record)
465
+
466
+ def handle(self, record):
467
+ return self._underlying.handle(record)
468
+
469
+ def setFormatter(self, fmt):
470
+ self._underlying.setFormatter(fmt)
471
+
472
+ def flush(self):
473
+ self._underlying.flush()
474
+
475
+ def close(self):
476
+ self._underlying.close()
477
+
478
+ def handleError(self, record):
479
+ self._underlying.handleError(record)
480
+
481
+
482
+ ##
483
+
484
+
485
+ class StandardLogHandler(ProxyLogHandler):
486
+ pass
487
+
488
+
489
+ ##
490
+
491
+
386
492
  def configure_standard_logging(
387
493
  level: ta.Union[int, str] = logging.INFO,
388
494
  *,
389
495
  json: bool = False,
390
- ) -> logging.Handler:
496
+ target: ta.Optional[logging.Logger] = None,
497
+ no_check: bool = False,
498
+ ) -> ta.Optional[StandardLogHandler]:
499
+ if target is None:
500
+ target = logging.root
501
+
502
+ #
503
+
504
+ if not no_check:
505
+ if any(isinstance(h, StandardLogHandler) for h in list(target.handlers)):
506
+ return None
507
+
508
+ #
509
+
391
510
  handler = logging.StreamHandler()
392
511
 
512
+ #
513
+
393
514
  formatter: logging.Formatter
394
515
  if json:
395
516
  formatter = JsonLogFormatter()
@@ -397,14 +518,22 @@ def configure_standard_logging(
397
518
  formatter = StandardLogFormatter(StandardLogFormatter.build_log_format(STANDARD_LOG_FORMAT_PARTS))
398
519
  handler.setFormatter(formatter)
399
520
 
521
+ #
522
+
400
523
  handler.addFilter(TidLogFilter())
401
524
 
402
- logging.root.addHandler(handler)
525
+ #
526
+
527
+ target.addHandler(handler)
528
+
529
+ #
403
530
 
404
531
  if level is not None:
405
- logging.root.setLevel(level)
532
+ target.setLevel(level)
533
+
534
+ #
406
535
 
407
- return handler
536
+ return StandardLogHandler(handler)
408
537
 
409
538
 
410
539
  ########################################
@@ -403,13 +403,134 @@ class StandardLogFormatter(logging.Formatter):
403
403
  ##
404
404
 
405
405
 
406
+ class ProxyLogFilterer(logging.Filterer):
407
+ def __init__(self, underlying: logging.Filterer) -> None: # noqa
408
+ self._underlying = underlying
409
+
410
+ @property
411
+ def underlying(self) -> logging.Filterer:
412
+ return self._underlying
413
+
414
+ @property
415
+ def filters(self):
416
+ return self._underlying.filters
417
+
418
+ @filters.setter
419
+ def filters(self, filters):
420
+ self._underlying.filters = filters
421
+
422
+ def addFilter(self, filter): # noqa
423
+ self._underlying.addFilter(filter)
424
+
425
+ def removeFilter(self, filter): # noqa
426
+ self._underlying.removeFilter(filter)
427
+
428
+ def filter(self, record):
429
+ return self._underlying.filter(record)
430
+
431
+
432
+ class ProxyLogHandler(ProxyLogFilterer, logging.Handler):
433
+ def __init__(self, underlying: logging.Handler) -> None: # noqa
434
+ ProxyLogFilterer.__init__(self, underlying)
435
+
436
+ _underlying: logging.Handler
437
+
438
+ @property
439
+ def underlying(self) -> logging.Handler:
440
+ return self._underlying
441
+
442
+ def get_name(self):
443
+ return self._underlying.get_name()
444
+
445
+ def set_name(self, name):
446
+ self._underlying.set_name(name)
447
+
448
+ @property
449
+ def name(self):
450
+ return self._underlying.name
451
+
452
+ @property
453
+ def level(self):
454
+ return self._underlying.level
455
+
456
+ @level.setter
457
+ def level(self, level):
458
+ self._underlying.level = level
459
+
460
+ @property
461
+ def formatter(self):
462
+ return self._underlying.formatter
463
+
464
+ @formatter.setter
465
+ def formatter(self, formatter):
466
+ self._underlying.formatter = formatter
467
+
468
+ def createLock(self):
469
+ self._underlying.createLock()
470
+
471
+ def acquire(self):
472
+ self._underlying.acquire()
473
+
474
+ def release(self):
475
+ self._underlying.release()
476
+
477
+ def setLevel(self, level):
478
+ self._underlying.setLevel(level)
479
+
480
+ def format(self, record):
481
+ return self._underlying.format(record)
482
+
483
+ def emit(self, record):
484
+ self._underlying.emit(record)
485
+
486
+ def handle(self, record):
487
+ return self._underlying.handle(record)
488
+
489
+ def setFormatter(self, fmt):
490
+ self._underlying.setFormatter(fmt)
491
+
492
+ def flush(self):
493
+ self._underlying.flush()
494
+
495
+ def close(self):
496
+ self._underlying.close()
497
+
498
+ def handleError(self, record):
499
+ self._underlying.handleError(record)
500
+
501
+
502
+ ##
503
+
504
+
505
+ class StandardLogHandler(ProxyLogHandler):
506
+ pass
507
+
508
+
509
+ ##
510
+
511
+
406
512
  def configure_standard_logging(
407
513
  level: ta.Union[int, str] = logging.INFO,
408
514
  *,
409
515
  json: bool = False,
410
- ) -> logging.Handler:
516
+ target: ta.Optional[logging.Logger] = None,
517
+ no_check: bool = False,
518
+ ) -> ta.Optional[StandardLogHandler]:
519
+ if target is None:
520
+ target = logging.root
521
+
522
+ #
523
+
524
+ if not no_check:
525
+ if any(isinstance(h, StandardLogHandler) for h in list(target.handlers)):
526
+ return None
527
+
528
+ #
529
+
411
530
  handler = logging.StreamHandler()
412
531
 
532
+ #
533
+
413
534
  formatter: logging.Formatter
414
535
  if json:
415
536
  formatter = JsonLogFormatter()
@@ -417,14 +538,22 @@ def configure_standard_logging(
417
538
  formatter = StandardLogFormatter(StandardLogFormatter.build_log_format(STANDARD_LOG_FORMAT_PARTS))
418
539
  handler.setFormatter(formatter)
419
540
 
541
+ #
542
+
420
543
  handler.addFilter(TidLogFilter())
421
544
 
422
- logging.root.addHandler(handler)
545
+ #
546
+
547
+ target.addHandler(handler)
548
+
549
+ #
423
550
 
424
551
  if level is not None:
425
- logging.root.setLevel(level)
552
+ target.setLevel(level)
553
+
554
+ #
426
555
 
427
- return handler
556
+ return StandardLogHandler(handler)
428
557
 
429
558
 
430
559
  ########################################
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ominfra
3
- Version: 0.0.0.dev23
3
+ Version: 0.0.0.dev24
4
4
  Summary: ominfra
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,7 +12,7 @@ Classifier: Operating System :: OS Independent
12
12
  Classifier: Operating System :: POSIX
13
13
  Requires-Python: ~=3.12
14
14
  License-File: LICENSE
15
- Requires-Dist: omlish ==0.0.0.dev23
15
+ Requires-Dist: omlish ==0.0.0.dev24
16
16
  Provides-Extra: all
17
17
  Requires-Dist: paramiko ~=3.4 ; extra == 'all'
18
18
  Requires-Dist: asyncssh ~=2.17 ; (python_version < "3.13") and extra == 'all'
@@ -6,7 +6,7 @@ ominfra/clouds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  ominfra/clouds/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  ominfra/clouds/aws/auth.py,sha256=eV6ayidQDKrhsgoRSg4_1tSvTMa1TzFvzxS7D_gjlCc,5499
8
8
  ominfra/deploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- ominfra/deploy/_executor.py,sha256=Gh6yNy9SeiXzF3IvDES3GlDWwUTY1ElyCvPMuMySPPQ,28830
9
+ ominfra/deploy/_executor.py,sha256=txU0eH3rVc_8a8PLac9WXCD0EsdK8NDPf2PdE7TKIGc,31519
10
10
  ominfra/deploy/configs.py,sha256=qi0kwT7G2NH7dXLOQic-u6R3yeadup_QtvrjwWIggbM,435
11
11
  ominfra/deploy/remote.py,sha256=LJSe3AJlpvNgb_5QtUiK2JIkKC2OgMvjSD1701_y2uI,2147
12
12
  ominfra/deploy/executor/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
@@ -21,7 +21,7 @@ ominfra/deploy/executor/concerns/systemd.py,sha256=MtsSEToEa1HNouern_JukcYTnypw_
21
21
  ominfra/deploy/executor/concerns/user.py,sha256=j5LDfQXquIp-eEM7t6aShsrYoQrM_ILXZycTmTcRVxA,686
22
22
  ominfra/deploy/executor/concerns/venv.py,sha256=jbRriqJHO4r9Zyo5Hfl_qVmcU6Qm6UgrouBroKcPn2g,775
23
23
  ominfra/deploy/poly/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
24
- ominfra/deploy/poly/_main.py,sha256=oqGwNPxcvLIaYR7vr75tmEzYXY0JPfufbz9dSFUn3J8,20062
24
+ ominfra/deploy/poly/_main.py,sha256=PtFGmt5MA87KTgni9goPaz0r4HuzD2HgpmsCtjFQ_v8,22751
25
25
  ominfra/deploy/poly/base.py,sha256=Bd-CzUTaDvTRbdXKiTxMxs77WCEXItwNoBYCRnTk1u4,4167
26
26
  ominfra/deploy/poly/configs.py,sha256=9bzWdbxhOk_Q4KokDjmRz254KHnUU71Vl1frLlhQyU4,584
27
27
  ominfra/deploy/poly/deploy.py,sha256=tMYKslXLjstcv86siRt5j37USsS0Wd6lsfeGRE26zio,544
@@ -35,13 +35,13 @@ ominfra/deploy/poly/venv.py,sha256=BoipDEa4NTeodjf3L57KJfq9eGKLagFNKwD8pS4yrzA,1
35
35
  ominfra/manage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  ominfra/manage/manage.py,sha256=gS2FvvdZTmNqD2dEXWTCFgCXNCepFSHVojBZ5WG6mqk,65
37
37
  ominfra/pyremote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
- ominfra/pyremote/_runcommands.py,sha256=w1Rgx-2Vqh5_Fs24cCBTR0iuHn9abXX35vZs5K52fK0,22650
38
+ ominfra/pyremote/_runcommands.py,sha256=Lo138TWUkFWhpIzNAllnUuTz5QgpqpnzdGNA2J3Nfj4,25339
39
39
  ominfra/pyremote/bootstrap.py,sha256=ybXxNitrNKuPAIl0SrU55Ktn-4R-bDveAm_ZURrmfF0,3368
40
40
  ominfra/pyremote/runcommands.py,sha256=hXXP41rvgL46Oe_HOcLSp2Y84ZMQfEZqqV_jNd1x7Ak,1570
41
41
  ominfra/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
42
  ominfra/tools/listresources.py,sha256=vgLgohPwRog8e5pEljI2hOGg-Li5fcwjj-nXj2j8IQo,5918
43
- ominfra-0.0.0.dev23.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
44
- ominfra-0.0.0.dev23.dist-info/METADATA,sha256=2gSiFi6YxmTIHIndpY-i3Ths3F1ml7DdpQg7LjOjXfg,764
45
- ominfra-0.0.0.dev23.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
46
- ominfra-0.0.0.dev23.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
47
- ominfra-0.0.0.dev23.dist-info/RECORD,,
43
+ ominfra-0.0.0.dev24.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
44
+ ominfra-0.0.0.dev24.dist-info/METADATA,sha256=kpbIpcroublflte8heBWUXxAgKYZwOkfOnSvTqQnZr0,764
45
+ ominfra-0.0.0.dev24.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
46
+ ominfra-0.0.0.dev24.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
47
+ ominfra-0.0.0.dev24.dist-info/RECORD,,