Coverage for src/extratools_core/strtools.py: 100%

12 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-07 08:10 -0700

1from collections.abc import Iterable 

2 

3from .iter import iter_to_grams 

4from .seq.subseq import common_subseq, enumerate_subseqs 

5 

6 

7def str_to_grams( 

8 s: str, 

9 *, 

10 n: int, 

11 pad: str = '', 

12) -> Iterable[str]: 

13 if n < 1 or len(pad) > 1: 

14 raise ValueError 

15 

16 for c in iter_to_grams(s, n=n, pad=pad or None): 

17 yield ''.join(c) 

18 

19 

20def common_substr(a: str, b: str) -> str: 

21 return ''.join(common_subseq(a, b)) 

22 

23 

24def enumerate_substrs(s: str) -> Iterable[str]: 

25 return map(str, enumerate_subseqs(s))