Coverage for /usr/local/lib/python3.12/site-packages/prefect/logging/highlighters.py: 100%

17 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-12-05 13:38 +0000

1from rich.highlighter import RegexHighlighter 1a

2 

3from prefect.states import StateType 1a

4 

5 

6class LevelHighlighter(RegexHighlighter): 1a

7 """Apply style to log levels.""" 

8 

9 base_style = "level." 1a

10 highlights: list[str] = [ 1a

11 r"(?P<debug_level>DEBUG)", 

12 r"(?P<info_level>INFO)", 

13 r"(?P<warning_level>WARNING)", 

14 r"(?P<error_level>ERROR)", 

15 r"(?P<critical_level>CRITICAL)", 

16 ] 

17 

18 

19class UrlHighlighter(RegexHighlighter): 1a

20 """Apply style to urls.""" 

21 

22 base_style = "url." 1a

23 highlights: list[str] = [ 1a

24 r"(?P<web_url>(https|http|ws|wss):\/\/[0-9a-zA-Z\$\-\_\+\!`\(\)\,\.\?\/\;\:\&\=\%\#]*)", 

25 r"(?P<local_url>(file):\/\/[0-9a-zA-Z\$\-\_\+\!`\(\)\,\.\?\/\;\:\&\=\%\#]*)", 

26 ] 

27 

28 

29class NameHighlighter(RegexHighlighter): 1a

30 """Apply style to names.""" 

31 

32 base_style = "name." 1a

33 highlights: list[str] = [ 1a

34 # ?i means case insensitive 

35 # ?<= means find string right after the words: flow run 

36 r"(?i)(?P<flow_run_name>(?<=flow run) \'(.*?)\')", 

37 r"(?i)(?P<flow_name>(?<=flow) \'(.*?)\')", 

38 r"(?i)(?P<task_run_name>(?<=task run) \'(.*?)\')", 

39 r"(?i)(?P<task_name>(?<=task) \'(.*?)\')", 

40 ] 

41 

42 

43class StateHighlighter(RegexHighlighter): 1a

44 """Apply style to states.""" 

45 

46 base_style = "state." 1a

47 highlights: list[str] = [ 1a

48 rf"(?P<{state.lower()}_state>{state.title()})" for state in StateType 

49 ] + [ 

50 r"(?P<cached_state>Cached)(?=\(type=COMPLETED\))" # Highlight only "Cached" 

51 ] 

52 

53 

54class PrefectConsoleHighlighter(RegexHighlighter): 1a

55 """Applies style from multiple highlighters.""" 

56 

57 base_style = "log." 1a

58 highlights: list[str] = ( 1a

59 LevelHighlighter.highlights 

60 + UrlHighlighter.highlights 

61 + NameHighlighter.highlights 

62 + StateHighlighter.highlights 

63 )