Skip to content

Commit e1794fa

Browse files
authored
Merge pull request #88 from argyle-engineering/avoid-incomplete-street
Don't match incomplete street name
2 parents acf4fda + 10aaefb commit e1794fa

2 files changed

Lines changed: 15 additions & 10 deletions

File tree

pyap/source_US/data.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -827,17 +827,20 @@ def street_type_list_to_regex(street_type_list: list[str]) -> str:
827827

828828
street_types_leading_re = street_type_list_to_regex(street_type_leading_list)
829829

830-
street_type_extended = r"""
830+
831+
def street_type_extended(idx: str) -> str:
832+
return r"""
831833
(?:
832-
{street_type_a}
833-
(?P<route_id>
834+
{street_type}
835+
(?P<route_id_{idx}>
834836
{space_div}\(?[Rr][Oo][Uu][Tt][Ee]\ [A-Za-z0-9]+(?:\ ?\))?
835837
)?
836838
)
837-
""".format(
838-
street_type_a=rf"(?P<street_type_a>{street_types_with_interstate_re})",
839-
space_div=space_div,
840-
)
839+
""".format(
840+
street_type=rf"(?P<street_type_{idx}>{street_types_with_interstate_re})",
841+
idx=idx,
842+
space_div=space_div,
843+
)
841844

842845

843846
typed_street_name = r"""
@@ -852,7 +855,7 @@ def street_type_list_to_regex(street_type_list: list[str]) -> str:
852855
""".format(
853856
space_div=space_div,
854857
street_name_a=rf"(?P<street_name_a>{street_name_multi_word_re})",
855-
street_type_a=street_type_extended,
858+
street_type_a=street_type_extended("a"),
856859
street_type_b=rf"(?P<street_type_b>{street_types_leading_re})",
857860
street_name_b=rf"(?P<street_name_b>{street_name_one_word_re})",
858861
post_direction_re=post_direction_re,
@@ -1052,7 +1055,7 @@ def street_type_list_to_regex(street_type_list: list[str]) -> str:
10521055
|
10531056
(?:
10541057
{post_direction_re}\
1055-
\d{{,3}}[A-Za-z\-]{{1,31}}
1058+
\d{{,3}}[A-Za-z\-]{{1,31}}(?!\s+{street_type})
10561059
)
10571060
)
10581061
(?:{space_div}{post_direction})?
@@ -1080,6 +1083,7 @@ def street_type_list_to_regex(street_type_list: list[str]) -> str:
10801083
street_number=street_number,
10811084
typed_street_name=typed_street_name,
10821085
numbered_or_typeless_street_name=numbered_or_typeless_street_name,
1086+
street_type=street_type_extended("c"),
10831087
post_direction=post_direction,
10841088
post_direction_re=post_direction_re,
10851089
floor=floor,

tests/test_parser_us.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ def test_post_direction(input, expected):
245245
)
246246
def test_street_type(input, expected):
247247
"""tests string match for a street id"""
248-
execute_matching_test(input, expected, data_us.street_type_extended)
248+
execute_matching_test(input, expected, data_us.street_type_extended("a"))
249249

250250

251251
@pytest.mark.parametrize(
@@ -662,6 +662,7 @@ def test_full_street_positive(input, expected):
662662
("1234 Fowlstown Rd Lot#18 \nBainbridge, GA 39817", True),
663663
("1234 LONG LANE\nB2 \nUPPER DARBY PA 19082", True),
664664
# negative assertions
665+
("123 Nw Awesome Drive\n12345", False),
665666
("ONE HEALING CENTER LLC, 16444", False),
666667
("85 STEEL REGULAR SHAFT - NE", False),
667668
("3 STRUCTURE WITH PE", False),

0 commit comments

Comments
 (0)