Skip to content

Commit f9a7afb

Browse files
committed
Fix flake8
1 parent abdb16a commit f9a7afb

File tree

11 files changed

+78
-28
lines changed

11 files changed

+78
-28
lines changed

python/cucumber_expressions/argument.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,18 @@
88

99

1010
class Argument:
11-
def __init__(self, group: Group, parameter_type: ParameterType, name: Optional[str]):
11+
def __init__(
12+
self, group: Group, parameter_type: ParameterType, name: Optional[str]
13+
):
1214
self.group = group
1315
self.parameter_type = parameter_type
1416
self.name = name
1517

1618
@staticmethod
1719
def build(
18-
tree_regexp: TreeRegexp, text: str, parameter_types_and_names: list[tuple[ParameterType, Optional[str]]]
20+
tree_regexp: TreeRegexp,
21+
text: str,
22+
parameter_types_and_names: list[tuple[ParameterType, Optional[str]]],
1923
) -> Optional[list[Argument]]:
2024
# Check if all elements in parameter_types_and_names are tuples
2125
for item in parameter_types_and_names:
@@ -31,13 +35,16 @@ def build(
3135
arg_groups = match_group.children
3236

3337
if len(arg_groups) != len(parameter_types_and_names):
38+
param_count = len(parameter_types_and_names)
3439
raise CucumberExpressionError(
35-
f"Group has {len(arg_groups)} capture groups, but there were {len(parameter_types_and_names)} parameter types/names"
40+
f"Group has {len(arg_groups)} capture groups, but there were {param_count} parameter types/names"
3641
)
3742

3843
return [
3944
Argument(arg_group, parameter_type, parameter_name)
40-
for (parameter_type, parameter_name), arg_group in zip(parameter_types_and_names, arg_groups)
45+
for (parameter_type, parameter_name), arg_group in zip(
46+
parameter_types_and_names, arg_groups
47+
)
4148
]
4249

4350
@property

python/cucumber_expressions/expression.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
OptionalIsNotAllowedInOptional,
1212
OptionalMayNotBeEmpty,
1313
AlternativeMayNotBeEmpty,
14-
AlternativeMayNotExclusivelyContainOptionals, UndefinedParameterTypeError,
14+
AlternativeMayNotExclusivelyContainOptionals,
15+
UndefinedParameterTypeError,
1516
)
1617

1718
ESCAPE_PATTERN = rb"([\\^\[({$.|?*+})\]])"
@@ -59,9 +60,13 @@ def escape_regex(expression) -> str:
5960

6061
def rewrite_optional(self, node: Node) -> str:
6162
if self.get_possible_node_with_parameters(node):
62-
raise ParameterIsNotAllowedInOptional(self.get_possible_node_with_parameters(node), self.expression)
63+
raise ParameterIsNotAllowedInOptional(
64+
self.get_possible_node_with_parameters(node), self.expression
65+
)
6366
if self.get_possible_node_with_optionals(node):
64-
raise OptionalIsNotAllowedInOptional(self.get_possible_node_with_optionals(node), self.expression)
67+
raise OptionalIsNotAllowedInOptional(
68+
self.get_possible_node_with_optionals(node), self.expression
69+
)
6570
if self.are_nodes_empty(node):
6671
raise OptionalMayNotBeEmpty(node, self.expression)
6772
regex = "".join([self.rewrite_to_regex(_node) for _node in node.nodes])
@@ -95,11 +100,15 @@ def rewrite_parameter(self, node: Node) -> str:
95100
return rf"({regexps[0]})"
96101
return rf"((?:{')|(?:'.join(regexps)}))"
97102

98-
def parse_parameter_name(self, name: str) -> tuple[Optional[str], Optional[ParameterType]]:
103+
def parse_parameter_name(
104+
self, name: str
105+
) -> tuple[Optional[str], Optional[ParameterType]]:
99106
"""Helper function to parse the parameter name and return group_name and parameter_type."""
100107
if ":" in name:
101108
group_name, parameter_type_name = name.split(":")
102-
parameter_type = self.parameter_type_registry.lookup_by_type_name(parameter_type_name)
109+
parameter_type = self.parameter_type_registry.lookup_by_type_name(
110+
parameter_type_name
111+
)
103112
else:
104113
group_name = None
105114
parameter_type = self.parameter_type_registry.lookup_by_type_name(name)

python/cucumber_expressions/expression_factory.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99

1010

1111
class ExpressionFactory:
12-
def __init__(self, parameter_type_registry: ParameterTypeRegistry = ParameterTypeRegistry()):
12+
def __init__(
13+
self, parameter_type_registry: ParameterTypeRegistry = ParameterTypeRegistry()
14+
):
1315
self.parameter_type_registry = parameter_type_registry
1416

1517
@staticmethod
@@ -31,7 +33,6 @@ def is_cucumber_expression(self, expression_string: str):
3133
return False # Found a form of curly bracket
3234
return True # All curly brackets are valid
3335

34-
3536
def create_expression(self, expression_string: str):
3637
if self.is_cucumber_expression(expression_string):
3738
return CucumberExpression(expression_string, self.parameter_type_registry)

python/cucumber_expressions/group.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
class Group:
2-
def __init__(self, value: str, start: int, end: int, children: list["Group"], name: str | None = None):
2+
def __init__(
3+
self,
4+
value: str,
5+
start: int,
6+
end: int,
7+
children: list["Group"],
8+
name: str | None = None,
9+
):
310
self.children = children
411
self.name = name
512
self.value = value

python/cucumber_expressions/parameter_type.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@
88
ILLEGAL_PARAMETER_NAME_PATTERN = re.compile(r"([\[\]()$.|?*+])")
99

1010

11-
T = TypeVar('T')
11+
T = TypeVar("T")
1212

1313

1414
class ParameterType:
1515
"""Creates a new Parameter Type"""
16+
1617
def __init__(
1718
self,
1819
name: str | None,
@@ -90,7 +91,9 @@ def _get_regexp_source(regexp_pattern: Pattern) -> str:
9091
)
9192
return regexp_pattern.pattern
9293

93-
def to_array(self, regexps: Union[list[str], str, list[Pattern], Pattern]) -> list[str]:
94+
def to_array(
95+
self, regexps: Union[list[str], str, list[Pattern], Pattern]
96+
) -> list[str]:
9497
"""Make a list of regexps if not already"""
9598
array: list = regexps if isinstance(regexps, list) else [regexps]
9699
return [

python/cucumber_expressions/parameter_type_registry.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,12 @@ def parameter_types(self) -> list:
8383
def lookup_by_type_name(self, name: str) -> Optional[ParameterType]:
8484
return self.parameter_type_by_name.get(name)
8585

86-
def lookup_by_regexp(self, parameter_type_regexp: str, expression_regexp: Union[str, re.Pattern], text: str):
86+
def lookup_by_regexp(
87+
self,
88+
parameter_type_regexp: str,
89+
expression_regexp: Union[str, re.Pattern],
90+
text: str,
91+
):
8792
"""
8893
Lookup and match the text using parameter types, then transform the results.
8994
Supports both named and unnamed capture groups.
@@ -92,8 +97,13 @@ def lookup_by_regexp(self, parameter_type_regexp: str, expression_regexp: Union[
9297
if not parameter_types:
9398
return None
9499
if len(parameter_types) > 1 and not parameter_types[0].prefer_for_regexp_match:
95-
from cucumber_expressions.expression_generator import CucumberExpressionGenerator
96-
generated_expressions = CucumberExpressionGenerator(self).generate_expressions(text)
100+
from cucumber_expressions.expression_generator import (
101+
CucumberExpressionGenerator,
102+
)
103+
104+
generated_expressions = CucumberExpressionGenerator(
105+
self
106+
).generate_expressions(text)
97107
raise AmbiguousParameterTypeError(
98108
parameter_type_regexp,
99109
expression_regexp,

python/cucumber_expressions/regular_expression.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ class RegularExpression:
1616
dynamically typed languages."""
1717

1818
def __init__(
19-
self, expression_regexp: Union[re.Pattern, str], parameter_type_registry: ParameterTypeRegistry
19+
self,
20+
expression_regexp: Union[re.Pattern, str],
21+
parameter_type_registry: ParameterTypeRegistry,
2022
):
2123
"""Creates a new instance. Use this when the transform types are not known in advance,
2224
and should be determined by the regular expression's capture groups. Use this with
@@ -63,13 +65,17 @@ def _process_capture_group(self, group_source: str):
6365
# No named group, just return the original pattern
6466
return None, group_source
6567

66-
def generate_parameter_types(self, text) -> Generator[tuple[ParameterType, Optional[str]]]:
68+
def generate_parameter_types(
69+
self, text
70+
) -> Generator[tuple[ParameterType, Optional[str]]]:
6771
for group_builder in self.tree_regexp.group_builder.children:
6872
# Extract the raw source for the group
6973
parameter_type_regexp = group_builder.source
7074

7175
# Process the capture group (check if it's named and clean the pattern)
72-
capture_name, cleaned_pattern = self._process_capture_group(parameter_type_regexp)
76+
capture_name, cleaned_pattern = self._process_capture_group(
77+
parameter_type_regexp
78+
)
7379

7480
# Lookup the parameter type using the stripped capture group
7581
possible_regexp = self.parameter_type_registry.lookup_by_regexp(

python/cucumber_expressions/tree_regexp.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def create_group_builder(self, regexp):
4949
group_start = group_start_stack.pop()
5050
group_start = group_start or 0
5151
if group_builder.capturing:
52-
group_builder.source = source[(group_start + 1): index]
52+
group_builder.source = source[(group_start + 1) : index]
5353
stack[-1].add(group_builder)
5454
else:
5555
group_builder.move_children_to(stack[-1])
@@ -61,7 +61,7 @@ def is_named_group(source: str, index: int) -> bool:
6161
"""
6262
Check if the group at the given index is a named capturing group, e.g. (?P<name>...).
6363
"""
64-
return source[index + 1: index + 3] == "P<" and source[index + 3] != "?"
64+
return source[index + 1 : index + 3] == "P<" and source[index + 3] != "?"
6565

6666
@staticmethod
6767
def extract_named_group_name(source: str, index: int) -> str:

python/tests/test_expression.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ def transform_value(value):
3333

3434
return matches and [(transform_value(arg.value), arg.name) for arg in matches]
3535

36+
3637
class TestCucumberExpression:
3738
@pytest.mark.parametrize("load_test_yamls", get_expectation_yamls(), indirect=True)
3839
def test_cucumber_expression_matches(self, load_test_yamls: dict):
@@ -115,5 +116,11 @@ def test_unmatched_optional_groups_have_undefined_values(self):
115116
)
116117
)
117118

118-
assert match("{textAndOrNumber}", "TLA", parameter_type_registry)[0] == (["TLA", None], None)
119-
assert match("{textAndOrNumber}", "123", parameter_type_registry)[0] == ([None, "123"], None)
119+
assert match("{textAndOrNumber}", "TLA", parameter_type_registry)[0] == (
120+
["TLA", None],
121+
None,
122+
)
123+
assert match("{textAndOrNumber}", "123", parameter_type_registry)[0] == (
124+
[None, "123"],
125+
None,
126+
)

python/tests/test_expression_factory.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ def test_expression_factory_regex():
77
input_str = r"I have (?P<cuke_count>\d+) cukes? in my (?P<word>\w+) now"
88
expression = ExpressionFactory().create_expression(input_str)
99
assert isinstance(expression, RegularExpression)
10-
matches = expression.match('I have 4 cukes in my belly now')
10+
matches = expression.match("I have 4 cukes in my belly now")
1111
assert matches[0].value == 4
1212
assert matches[0].name == "cuke_count"
1313
assert matches[1].value == "belly"
@@ -18,14 +18,14 @@ def test_expression_factory_cucumber_expression():
1818
input_str = "I have {name:int} cukes in my {string} now"
1919
expression = ExpressionFactory().create_expression(input_str)
2020
assert isinstance(expression, CucumberExpression)
21-
matches = expression.match("I have 4 cukes in my \"belly\" now")
21+
matches = expression.match('I have 4 cukes in my "belly" now')
2222
assert matches[0].value == 4
2323
assert matches[0].name == "name"
2424
assert matches[1].value == "belly"
2525
assert matches[1].name is None
2626

2727

2828
def test_expression_factory_invalid():
29-
input_str = "^(?:(\d{2,4})-)?(\d{1,3})\s*([A-Za-z]{3})\s*(?:\{(\d+,\d+|\d+)\})?(\d{1,2})(?:\{[A-Za-z0-9]+\})?$"
29+
input_str = r"^(?:(\d{2,4})-)?(\d{1,3})\s*([A-Za-z]{3})\s*(?:\{(\d+,\d+|\d+)\})?(\d{1,2})(?:\{[A-Za-z0-9]+\})?$"
3030
expression = ExpressionFactory().create_expression(input_str)
3131
assert isinstance(expression, RegularExpression)

0 commit comments

Comments
 (0)