From 5001eb5e1b4833824e1cba88be87e24bf2fcf633 Mon Sep 17 00:00:00 2001 From: Aldo Garcia Mendiburu Date: Tue, 3 Mar 2026 23:21:47 -0700 Subject: [PATCH 1/2] Fix Pydantic v2 warning in BankConfigRequest --- clabe/validations.py | 12 +++++++++--- tests/test_clabe.py | 4 +++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/clabe/validations.py b/clabe/validations.py index 1a112e5..c8fbdd4 100644 --- a/clabe/validations.py +++ b/clabe/validations.py @@ -1,7 +1,7 @@ import random -from typing import List, Union +from typing import Any, List, Union -from pydantic import BaseModel, Field +from pydantic import BaseModel, Field, field_validator from .banks import BANK_NAMES, BANKS @@ -76,7 +76,6 @@ class BankConfigRequest(BaseModel): bank_name: str = Field( min_length=1, - strip_whitespace=True, description="Bank name must have at least 1 character.", ) @@ -85,6 +84,13 @@ class BankConfigRequest(BaseModel): description="Banxico code must be a 5-digit string.", ) + @field_validator('bank_name', mode='before') + @classmethod + def strip_bank_name(cls, value: Any) -> Any: + if isinstance(value, str): + return value.strip() + return value + @property def bank_code_abm(self): return self.bank_code_banxico[-3:] diff --git a/tests/test_clabe.py b/tests/test_clabe.py index 140991e..b649dc8 100644 --- a/tests/test_clabe.py +++ b/tests/test_clabe.py @@ -48,11 +48,12 @@ def test_generate_new_clabes(): ('713', '90713', 'Cuenca DMZ'), ('714', '90714', 'Cuenca Gem DMZ'), ('715', '90715', 'Cuenca Gem Beta'), + ('717', '90717', ' Cuenca Spaces '), ], ) def test_add_bank_success(abm_code, banxico_code, name): add_bank(banxico_code, name) - assert get_bank_name(abm_code) == name + assert get_bank_name(abm_code) == name.strip() @pytest.mark.parametrize( @@ -61,6 +62,7 @@ def test_add_bank_success(abm_code, banxico_code, name): ('1234', 'Test Bank'), # invalid Banxico code 4 digits ('123456', 'Test Bank'), # invalid Banxico code 6 digits ('12345', ''), # Valid code, empty name + ('12345', ' '), # Valid code, whitespace-only name ('123AT', 'Test Bank'), # Non-numeric codes ], ) From 157d1b16ff0fcd83ee0de1690ddea264ae12f121 Mon Sep 17 00:00:00 2001 From: Aldo Garcia Mendiburu Date: Tue, 3 Mar 2026 23:30:55 -0700 Subject: [PATCH 2/2] Use StringConstraints for bank_name trimming --- clabe/validations.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/clabe/validations.py b/clabe/validations.py index c8fbdd4..f5cd498 100644 --- a/clabe/validations.py +++ b/clabe/validations.py @@ -1,7 +1,8 @@ import random -from typing import Any, List, Union +from typing import List, Union -from pydantic import BaseModel, Field, field_validator +from pydantic import BaseModel, Field, StringConstraints +from typing_extensions import Annotated from .banks import BANK_NAMES, BANKS @@ -74,8 +75,13 @@ class BankConfigRequest(BaseModel): - Banxico codes are exactly 5 digits """ - bank_name: str = Field( - min_length=1, + bank_name: Annotated[ + str, + StringConstraints( + strip_whitespace=True, + min_length=1, + ), + ] = Field( description="Bank name must have at least 1 character.", ) @@ -84,13 +90,6 @@ class BankConfigRequest(BaseModel): description="Banxico code must be a 5-digit string.", ) - @field_validator('bank_name', mode='before') - @classmethod - def strip_bank_name(cls, value: Any) -> Any: - if isinstance(value, str): - return value.strip() - return value - @property def bank_code_abm(self): return self.bank_code_banxico[-3:]