Skip to content

Commit a0088ca

Browse files
committed
re.Pattern is also correct mask rule
* drop asynctest test requirement: never supported python 3.8+, unittest from python3.8 can mock async
1 parent eaed0fb commit a0088ca

File tree

11 files changed

+56
-62
lines changed

11 files changed

+56
-62
lines changed

CI_REQUIREMENTS.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ PyYAML>=3.12
44
ruamel.yaml
55
defusedxml # PSF
66
logwrap>=7.0.0 # Apache 2
7+
setuptools_scm

doc/source/Subprocess.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ API: Subprocess
1313
ExecHelper global API.
1414

1515
:param log_mask_re: regex lookup rule to mask command for logger. all MATCHED groups will be replaced by '<*masked*>'
16-
:type log_mask_re: str | None
16+
:type log_mask_re: str | re.Pattern[str] | None
1717

1818
.. versionchanged:: 1.2.0 log_mask_re regex rule for masking cmd
1919
.. versionchanged:: 3.1.0 Not singleton anymore. Only lock is shared between all instances.

exec_helpers/_helpers.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ def string_bytes_bytearray_as_bytes(src: str | bytes | bytearray) -> bytes:
3030
raise TypeError(f"{src!r} has unexpected type: not conform to Union[str, bytes, bytearray]") # pragma: no cover
3131

3232

33-
def _mask_command(text: str, rules: str) -> str:
33+
def _mask_command(text: str, rules: str | re.Pattern[str]) -> str:
3434
"""Mask part of text using rules.
3535
3636
:param text: source text
3737
:type text: str
3838
:param rules: regex rules to mask.
39-
:type rules: str
39+
:type rules: str | re.Pattern
4040
:return: source with all MATCHED groups replaced by '<*masked*>'
4141
:rtype: str
4242
"""
@@ -55,13 +55,13 @@ def _mask_command(text: str, rules: str) -> str:
5555
return "".join(masked)
5656

5757

58-
def mask_command(text: str, *rules: str | None) -> str:
58+
def mask_command(text: str, *rules: str | re.Pattern[str] | None) -> str:
5959
"""Apply all rules to command.
6060
6161
:param text: source text
6262
:type text: str
6363
:param rules: regex rules to mask.
64-
:type rules: str | None
64+
:type rules: str | re.Pattern[str] | None
6565
:return: source with all MATCHED groups replaced by '<*masked*>'
6666
:rtype: str
6767
"""

exec_helpers/_ssh_base.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,7 +1066,7 @@ def _exec_command( # type: ignore[override]
10661066
:type verbose: bool
10671067
:param log_mask_re: regex lookup rule to mask command for logger.
10681068
all MATCHED groups will be replaced by '<*masked*>'
1069-
:type log_mask_re: str | None
1069+
:type log_mask_re: str | re.Pattern[str] | None
10701070
:param stdin: pass STDIN text to the process
10711071
:type stdin: bytes | str | bytearray | None
10721072
:param log_stdout: log STDOUT during read
@@ -1212,7 +1212,7 @@ def execute(
12121212
:type timeout: int | float | None
12131213
:param log_mask_re: regex lookup rule to mask command for logger.
12141214
all MATCHED groups will be replaced by '<*masked*>'
1215-
:type log_mask_re: str | None
1215+
:type log_mask_re: str | re.Pattern[str] | None
12161216
:param stdin: pass STDIN text to the process
12171217
:type stdin: bytes | str | bytearray | None
12181218
:param open_stdout: open STDOUT stream for read
@@ -1287,7 +1287,7 @@ def __call__(
12871287
:type timeout: int | float | None
12881288
:param log_mask_re: regex lookup rule to mask command for logger.
12891289
all MATCHED groups will be replaced by '<*masked*>'
1290-
:type log_mask_re: str | None
1290+
:type log_mask_re: str | re.Pattern[str] | None
12911291
:param stdin: pass STDIN text to the process
12921292
:type stdin: bytes | str | bytearray | None
12931293
:param open_stdout: open STDOUT stream for read
@@ -1368,7 +1368,7 @@ def check_call(
13681368
:type raise_on_err: bool
13691369
:param log_mask_re: regex lookup rule to mask command for logger.
13701370
all MATCHED groups will be replaced by '<*masked*>'
1371-
:type log_mask_re: str | None
1371+
:type log_mask_re: str | re.Pattern[str] | None
13721372
:param stdin: pass STDIN text to the process
13731373
:type stdin: bytes | str | bytearray | None
13741374
:param open_stdout: open STDOUT stream for read
@@ -1455,7 +1455,7 @@ def check_stderr(
14551455
:type expected: Iterable[int | proc_enums.ExitCodes]
14561456
:param log_mask_re: regex lookup rule to mask command for logger.
14571457
all MATCHED groups will be replaced by '<*masked*>'
1458-
:type log_mask_re: str | None
1458+
:type log_mask_re: str | re.Pattern[str] | None
14591459
:param stdin: pass STDIN text to the process
14601460
:type stdin: bytes | str | bytearray | None
14611461
:param open_stdout: open STDOUT stream for read
@@ -1644,7 +1644,7 @@ def execute_through_host(
16441644
:type log_stderr: bool
16451645
:param log_mask_re: regex lookup rule to mask command for logger.
16461646
all MATCHED groups will be replaced by '<*masked*>'
1647-
:type log_mask_re: str | None
1647+
:type log_mask_re: str | re.Pattern[str] | None
16481648
:param get_pty: open PTY on target machine
16491649
:type get_pty: bool
16501650
:param width: PTY width
@@ -1731,7 +1731,7 @@ def execute_together(
17311731
:type verbose: bool
17321732
:param log_mask_re: regex lookup rule to mask command for logger.
17331733
all MATCHED groups will be replaced by '<*masked*>'
1734-
:type log_mask_re: str | None
1734+
:type log_mask_re: str | re.Pattern[str] | None
17351735
:param exception_class: Exception to raise on error. Mandatory subclass of exceptions.ParallelCallProcessError
17361736
:type exception_class: type[exceptions.ParallelCallProcessError]
17371737
:param kwargs: additional parameters for execute_async call.

exec_helpers/api.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
)
5959

6060
CommandT = typing.Union[str, typing.Iterable[str]]
61-
LogMaskReT = typing.Optional[str]
61+
LogMaskReT = typing.Union[str, typing.Pattern[str], None]
6262
ErrorInfoT = typing.Optional[str]
6363
ChRootPathSetT = typing.Optional[typing.Union[str, pathlib.Path]]
6464
ExpectedExitCodesT = typing.Iterable[ExitCodeT]
@@ -221,7 +221,7 @@ class ExecHelper(
221221
:type logger: logging.Logger
222222
:param log_mask_re: regex lookup rule to mask command for logger.
223223
all MATCHED groups will be replaced by '<*masked*>'
224-
:type log_mask_re: str | None
224+
:type log_mask_re: str | re.Pattern[str] | None
225225
226226
.. versionchanged:: 1.2.0 log_mask_re regex rule for masking cmd
227227
.. versionchanged:: 1.3.5 make API public to use as interface
@@ -327,7 +327,7 @@ def _mask_command(self, cmd: str, log_mask_re: LogMaskReT = None) -> str:
327327
:type cmd: str
328328
:param log_mask_re: regex lookup rule to mask command for logger.
329329
all MATCHED groups will be replaced by '<*masked*>'
330-
:type log_mask_re: str | None
330+
:type log_mask_re: str | re.Pattern[str] | None
331331
:return: masked command
332332
:rtype: str
333333
@@ -418,7 +418,7 @@ def _exec_command(
418418
:type verbose: bool
419419
:param log_mask_re: regex lookup rule to mask command for logger.
420420
all MATCHED groups will be replaced by '<*masked*>'
421-
:type log_mask_re: str | None
421+
:type log_mask_re: str | re.Pattern[str] | None
422422
:param stdin: pass STDIN text to the process
423423
:type stdin: bytes | str | bytearray | None
424424
:param log_stdout: log STDOUT during read
@@ -438,7 +438,7 @@ def _exec_command(
438438
def _log_command_execute(
439439
self,
440440
command: str,
441-
log_mask_re: str | None,
441+
log_mask_re: LogMaskReT,
442442
log_level: int,
443443
chroot_path: str | None = None,
444444
**_: typing.Any,
@@ -504,7 +504,7 @@ def execute(
504504
:type timeout: int | float | None
505505
:param log_mask_re: regex lookup rule to mask command for logger.
506506
all MATCHED groups will be replaced by '<*masked*>'
507-
:type log_mask_re: str | None
507+
:type log_mask_re: str | re.Pattern[str] | None
508508
:param stdin: pass STDIN text to the process
509509
:type stdin: bytes | str | bytearray | None
510510
:param open_stdout: open STDOUT stream for read
@@ -584,7 +584,7 @@ def __call__( # pylint: disable=arguments-differ
584584
:type timeout: int | float | None
585585
:param log_mask_re: regex lookup rule to mask command for logger.
586586
all MATCHED groups will be replaced by '<*masked*>'
587-
:type log_mask_re: str | None
587+
:type log_mask_re: str | re.Pattern[str] | None
588588
:param stdin: pass STDIN text to the process
589589
:type stdin: bytes | str | bytearray | None
590590
:param open_stdout: open STDOUT stream for read
@@ -653,7 +653,7 @@ def check_call(
653653
:type raise_on_err: bool
654654
:param log_mask_re: regex lookup rule to mask command for logger.
655655
all MATCHED groups will be replaced by '<*masked*>'
656-
:type log_mask_re: str | None
656+
:type log_mask_re: str | re.Pattern[str] | None
657657
:param stdin: pass STDIN text to the process
658658
:type stdin: bytes | str | bytearray | None
659659
:param open_stdout: open STDOUT stream for read
@@ -768,7 +768,7 @@ def check_stderr(
768768
:type expected: Iterable[int | proc_enums.ExitCodes]
769769
:param log_mask_re: regex lookup rule to mask command for logger.
770770
all MATCHED groups will be replaced by '<*masked*>'
771-
:type log_mask_re: str | None
771+
:type log_mask_re: str | re.Pattern[str] | None
772772
:param stdin: pass STDIN text to the process
773773
:type stdin: bytes | str | bytearray | None
774774
:param open_stdout: open STDOUT stream for read

exec_helpers/async_api/api.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ class ExecHelper(
206206
:type logger: logging.Logger
207207
:param log_mask_re: regex lookup rule to mask command for logger.
208208
all MATCHED groups will be replaced by '<*masked*>'
209-
:type log_mask_re: str | None
209+
:type log_mask_re: str | re.Pattern[str] | None
210210
"""
211211

212212
__slots__ = ("__alock", "__logger", "log_mask_re", "__chroot_path")
@@ -301,7 +301,7 @@ def _mask_command(self, cmd: str, log_mask_re: LogMaskReT = None) -> str:
301301
:type cmd: str
302302
:param log_mask_re: regex lookup rule to mask command for logger.
303303
all MATCHED groups will be replaced by '<*masked*>'
304-
:type log_mask_re: str | None
304+
:type log_mask_re: str | re.Pattern[str] | None
305305
:return: masked command
306306
:rtype: str
307307
@@ -386,7 +386,7 @@ async def _exec_command(
386386
:type verbose: bool
387387
:param log_mask_re: regex lookup rule to mask command for logger.
388388
all MATCHED groups will be replaced by '<*masked*>'
389-
:type log_mask_re: str | None
389+
:type log_mask_re: str | re.Pattern[str] | None
390390
:param stdin: pass STDIN text to the process
391391
:type stdin: bytes | str | bytearray | None
392392
:param log_stdout: log STDOUT during read
@@ -404,7 +404,7 @@ async def _exec_command(
404404
def _log_command_execute(
405405
self,
406406
command: str,
407-
log_mask_re: str | None,
407+
log_mask_re: LogMaskReT,
408408
log_level: int,
409409
chroot_path: str | None = None,
410410
**_: typing.Any,
@@ -469,7 +469,7 @@ async def execute(
469469
:type timeout: int | float | None
470470
:param log_mask_re: regex lookup rule to mask command for logger.
471471
all MATCHED groups will be replaced by '<*masked*>'
472-
:type log_mask_re: str | None
472+
:type log_mask_re: str | re.Pattern[str] | None
473473
:param stdin: pass STDIN text to the process
474474
:type stdin: bytes | str | bytearray | None
475475
:param open_stdout: open STDOUT stream for read
@@ -547,7 +547,7 @@ async def __call__( # pylint: disable=invalid-overridden-method,arguments-diffe
547547
:type timeout: int | float | None
548548
:param log_mask_re: regex lookup rule to mask command for logger.
549549
all MATCHED groups will be replaced by '<*masked*>'
550-
:type log_mask_re: str | None
550+
:type log_mask_re: str | re.Pattern[str] | None
551551
:param stdin: pass STDIN text to the process
552552
:type stdin: bytes | str | bytearray | None
553553
:param open_stdout: open STDOUT stream for read
@@ -616,7 +616,7 @@ async def check_call(
616616
:type raise_on_err: bool
617617
:param log_mask_re: regex lookup rule to mask command for logger.
618618
all MATCHED groups will be replaced by '<*masked*>'
619-
:type log_mask_re: str | None
619+
:type log_mask_re: str | re.Pattern[str] | None
620620
:param stdin: pass STDIN text to the process
621621
:type stdin: bytes | str | bytearray | None
622622
:param open_stdout: open STDOUT stream for read
@@ -729,7 +729,7 @@ async def check_stderr(
729729
:type expected: Iterable[int | proc_enums.ExitCodes]
730730
:param log_mask_re: regex lookup rule to mask command for logger.
731731
all MATCHED groups will be replaced by '<*masked*>'
732-
:type log_mask_re: str | None
732+
:type log_mask_re: str | re.Pattern[str] | None
733733
:param stdin: pass STDIN text to the process
734734
:type stdin: bytes | str | bytearray | None
735735
:param open_stdout: open STDOUT stream for read

exec_helpers/async_api/subprocess.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ class Subprocess(api.ExecHelper):
246246
247247
:param log_mask_re: regex lookup rule to mask command for logger.
248248
all MATCHED groups will be replaced by '<*masked*>'
249-
:type log_mask_re: str | None
249+
:type log_mask_re: str | re.Pattern[str] | None
250250
:param logger: logger instance to use
251251
:type logger: logging.Logger
252252
@@ -310,7 +310,7 @@ async def _exec_command( # type: ignore[override]
310310
:type verbose: bool
311311
:param log_mask_re: regex lookup rule to mask command for logger.
312312
all MATCHED groups will be replaced by '<*masked*>'
313-
:type log_mask_re: str | None
313+
:type log_mask_re: str | re.Pattern[str] | None
314314
:param stdin: pass STDIN text to the process
315315
:type stdin: bytes | str | bytearray | None
316316
:param log_stdout: log STDOUT during read
@@ -555,7 +555,7 @@ async def execute(
555555
:type timeout: int | float | None
556556
:param log_mask_re: regex lookup rule to mask command for logger.
557557
all MATCHED groups will be replaced by '<*masked*>'
558-
:type log_mask_re: str | None
558+
:type log_mask_re: str | re.Pattern[str] | None
559559
:param stdin: pass STDIN text to the process
560560
:type stdin: bytes | str | bytearray | None
561561
:param open_stdout: open STDOUT stream for read
@@ -630,7 +630,7 @@ async def __call__(
630630
:type timeout: int | float | None
631631
:param log_mask_re: regex lookup rule to mask command for logger.
632632
all MATCHED groups will be replaced by '<*masked*>'
633-
:type log_mask_re: str | None
633+
:type log_mask_re: str | re.Pattern[str] | None
634634
:param stdin: pass STDIN text to the process
635635
:type stdin: bytes | str | bytearray | None
636636
:param open_stdout: open STDOUT stream for read
@@ -712,7 +712,7 @@ async def check_call(
712712
:type raise_on_err: bool
713713
:param log_mask_re: regex lookup rule to mask command for logger.
714714
all MATCHED groups will be replaced by '<*masked*>'
715-
:type log_mask_re: str | None
715+
:type log_mask_re: str | re.Pattern[str] | None
716716
:param stdin: pass STDIN text to the process
717717
:type stdin: bytes | str | bytearray | None
718718
:param open_stdout: open STDOUT stream for read
@@ -799,7 +799,7 @@ async def check_stderr(
799799
:type expected: Iterable[int | proc_enums.ExitCodes]
800800
:param log_mask_re: regex lookup rule to mask command for logger.
801801
all MATCHED groups will be replaced by '<*masked*>'
802-
:type log_mask_re: str | None
802+
:type log_mask_re: str | re.Pattern[str] | None
803803
:param stdin: pass STDIN text to the process
804804
:type stdin: bytes | str | bytearray | None
805805
:param open_stdout: open STDOUT stream for read

exec_helpers/subprocess.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ class Subprocess(api.ExecHelper):
250250
251251
:param log_mask_re: regex lookup rule to mask command for logger.
252252
all MATCHED groups will be replaced by '<*masked*>'
253-
:type log_mask_re: str | None
253+
:type log_mask_re: str | re.Pattern[str] | None
254254
255255
.. versionchanged:: 1.2.0 log_mask_re regex rule for masking cmd
256256
.. versionchanged:: 3.1.0 Not singleton anymore. Only lock is shared between all instances.
@@ -304,7 +304,7 @@ def _exec_command( # type: ignore[override]
304304
:type verbose: bool
305305
:param log_mask_re: regex lookup rule to mask command for logger.
306306
all MATCHED groups will be replaced by '<*masked*>'
307-
:type log_mask_re: str | None
307+
:type log_mask_re: str | re.Pattern[str] | None
308308
:param stdin: pass STDIN text to the process
309309
:type stdin: bytes | str | bytearray | None
310310
:param log_stdout: log STDOUT during read
@@ -571,7 +571,7 @@ def execute(
571571
:type timeout: int | float | None
572572
:param log_mask_re: regex lookup rule to mask command for logger.
573573
all MATCHED groups will be replaced by '<*masked*>'
574-
:type log_mask_re: str | None
574+
:type log_mask_re: str | re.Pattern[str] | None
575575
:param stdin: pass STDIN text to the process
576576
:type stdin: bytes | str | bytearray | None
577577
:param open_stdout: open STDOUT stream for read
@@ -646,7 +646,7 @@ def __call__(
646646
:type timeout: int | float | None
647647
:param log_mask_re: regex lookup rule to mask command for logger.
648648
all MATCHED groups will be replaced by '<*masked*>'
649-
:type log_mask_re: str | None
649+
:type log_mask_re: str | re.Pattern[str] | None
650650
:param stdin: pass STDIN text to the process
651651
:type stdin: bytes | str | bytearray | None
652652
:param open_stdout: open STDOUT stream for read
@@ -728,7 +728,7 @@ def check_call(
728728
:type raise_on_err: bool
729729
:param log_mask_re: regex lookup rule to mask command for logger.
730730
all MATCHED groups will be replaced by '<*masked*>'
731-
:type log_mask_re: str | None
731+
:type log_mask_re: str | re.Pattern[str] | None
732732
:param stdin: pass STDIN text to the process
733733
:type stdin: bytes | str | bytearray | None
734734
:param open_stdout: open STDOUT stream for read
@@ -815,7 +815,7 @@ def check_stderr(
815815
:type expected: Iterable[int | proc_enums.ExitCodes]
816816
:param log_mask_re: regex lookup rule to mask command for logger.
817817
all MATCHED groups will be replaced by '<*masked*>'
818-
:type log_mask_re: str | None
818+
:type log_mask_re: str | re.Pattern[str] | None
819819
:param stdin: pass STDIN text to the process
820820
:type stdin: bytes | str | bytearray | None
821821
:param open_stdout: open STDOUT stream for read

pytest_requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
asynctest
21
pytest >= 6.0
32
pytest-cov
43
pytest-mock

0 commit comments

Comments
 (0)