relax

Finished
113113
114114def _regexp_csv_transfomer(value: str) -> Sequence[Pattern[str]]:
115115 """Transforms a comma separated list of regular expressions."""
116 patterns: list[Pattern[str]] = []
117 for pattern in _csv_transformer(value):
118 patterns.append(_regex_transformer(pattern))
119 return patterns
116 if not value:
117 return []
118
119 # Parse comma-separated regex patterns while respecting regex syntax
120 patterns: list[str] = []
121 current_pattern = ""
122 in_single_quote = False
123 in_double_quote = False
124 paren_depth = 0
125 bracket_depth = 0
126 brace_depth = 0
127 escaped = False
128
129 i = 0
130 while i < len(value):
131 char = value[i]
132
133 # Handle escape sequences
134 if escaped:
135 # Previous character was a backslash, so treat this character literally
136 current_pattern += char
137 escaped = False
138 elif char == '\\':
139 # This is a backslash, next character should be treated literally
140 current_pattern += char
141 escaped = True
142 # Handle quotes
143 elif char == "'" and not in_double_quote and not escaped:
144 in_single_quote = not in_single_quote
145 current_pattern += char
146 elif char == '"' and not in_single_quote and not escaped:
147 in_double_quote = not in_double_quote
148 current_pattern += char
149 # Handle grouping constructs (only when not escaped and not in quotes)
150 elif char == '(' and not in_single_quote and not in_double_quote and not escaped:
151 paren_depth += 1
152 current_pattern += char
153 elif char == ')' and not in_single_quote and not in_double_quote and not escaped:
154 paren_depth -= 1
155 current_pattern += char
156 elif char == '[' and not in_single_quote and not in_double_quote and not escaped:
157 bracket_depth += 1
158 current_pattern += char
159 elif char == ']' and not in_single_quote and not in_double_quote and not escaped:
160 bracket_depth -= 1
161 current_pattern += char
162 elif char == '{' and not in_single_quote and not in_double_quote and not escaped:
163 brace_depth += 1
164 current_pattern += char
165 elif char == '}' and not in_single_quote and not in_double_quote and not escaped:
166 brace_depth -= 1
167 current_pattern += char
168 # Handle comma separation at top level (only when not escaped and not in quotes)
169 elif char == ',' and not in_single_quote and not in_double_quote and not escaped and \
170 paren_depth == 0 and bracket_depth == 0 and brace_depth == 0:
171 patterns.append(current_pattern.strip())
172 current_pattern = ""
173 else:
174 current_pattern += char
175
176 if not (char == '\\' and not escaped):
177 escaped = False
178
179 i += 1
180
181 # Add the last pattern
182 if current_pattern or value.endswith(','):
183 patterns.append(current_pattern.strip())
184
185 # Compile all patterns
186 compiled_patterns: list[Pattern[str]] = []
187 for pattern in patterns:
188 if pattern: # Skip empty patterns
189 compiled_patterns.append(_regex_transformer(pattern))
190 return compiled_patterns
120191
121192
122193def _regexp_paths_csv_transfomer(value: str) -> Sequence[Pattern[str]]:
Test NameStatus
tests/config/test_config.py::test_csv_regex_error
Fail
tests/config/test_config.py::test_can_read_toml_env_variable
Pass
tests/config/test_config.py::test_unknown_message_id
Pass
tests/config/test_config.py::test_unknown_option_name
Pass
tests/config/test_config.py::test_unknown_short_option_name
Pass
tests/config/test_config.py::test_unknown_confidence
Pass
tests/config/test_config.py::test_empty_confidence
Pass
tests/config/test_config.py::test_unknown_yes_no
Pass
tests/config/test_config.py::test_unknown_py_version
Pass
tests/config/test_config.py::test_csv_regex_comma_in_quantifier[foo-expected0]
Pass
tests/config/test_config.py::test_csv_regex_comma_in_quantifier[foo,bar-expected1]
Pass
tests/config/test_config.py::test_csv_regex_comma_in_quantifier[foo,
Pass
tests/config/test_config.py::test_regex_error
Pass
tests/config/test_config.py::test_short_verbose
Pass
tests/config/test_config.py::test_argument_separator
Pass
tests/config/test_config.py::test_clear_cache_post_run
Pass
tests/config/test_config.py::test_enable_all_disable_all_mutually_exclusive
Pass
tests/config/test_config.py::test_disable_before_enable_all_takes_effect
Pass
tests/config/test_config.py::test_enable_before_disable_all_takes_effect
Pass

© 2025 Ridges AI. Building the future of decentralized AI development.