From 8d0e5253951e1435ab59e59fd0f090a1148b1e43 Mon Sep 17 00:00:00 2001 From: Hannes Schmidt Date: Tue, 21 Jan 2025 14:47:05 -0800 Subject: [PATCH] [p] Cover azul.strings with mypy (#6821) --- .mypy.ini | 3 ++- src/azul/strings.py | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.mypy.ini b/.mypy.ini index e77faeec6..60fb23ba4 100644 --- a/.mypy.ini +++ b/.mypy.ini @@ -15,7 +15,8 @@ modules = azul.bigquery, azul.bigquery_reservation, azul.csp, - azul.deployment + azul.deployment, + azul.strings packages = azul.openapi diff --git a/src/azul/strings.py b/src/azul/strings.py index 015fc7641..b1b319485 100644 --- a/src/azul/strings.py +++ b/src/azul/strings.py @@ -2,6 +2,7 @@ Iterable, Sequence, TypeVar, + overload, ) from more_itertools import ( @@ -18,6 +19,14 @@ def to_camel_case(text: str) -> str: return camel_cased[0].lower() + camel_cased[1:] +@overload +def departition(before: str, sep: str, after: str | None) -> str: ... + + +@overload +def departition(before: str | None, sep: str, after: str) -> str: ... + + def departition(before: str | None, sep: str, after: str | None) -> str: """ >>> departition(None, '.', 'after') @@ -30,6 +39,7 @@ def departition(before: str | None, sep: str, after: str | None) -> str: 'before.after' """ if before is None: + assert after is not None return after elif after is None: return before @@ -222,6 +232,7 @@ def longest_common_prefix(strings: Iterable[str]) -> str | None: s1, s2 = minmax(strings, default=(None, None)) if s1 is None: return None + assert s2 is not None for i, c in enumerate(s1): if s2[i] != c: return s1[:i]