Skip to content

Commit 9d5b18f

Browse files
committed
Person.email deja de rechazar correos que el API si acepta
Person.email estaba tipado como EmailStr. Al leer una persona cuyo correo usa un dominio que email_validator considera reservado, por ejemplo un .local, la deserializacion lanzaba ValidationError y tumbaba la lectura completa: una sola persona hacia fallar toda la pagina de client.people.get_list(). El API es quien valida el formato del correo, asi que el modelo lo recibe como str. El valor que reciben los consumidores no cambia: EmailStr ya resolvia a str en tiempo de ejecucion, de modo que la firma publica queda igual. Con ese cambio el paquete deja de usar email_validator, que sale de install_requires y de requirements.txt junto con dnspython, que solo entraba como dependencia suya. Los unicos imports externos del paquete son ahora pydantic, requests, urllib3 y certifi, que es justo lo que declara setup.py. CLAUDE.md queda alineado con esa lista.
1 parent 1dd141f commit 9d5b18f

4 files changed

Lines changed: 4 additions & 6 deletions

File tree

‎CLAUDE.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,8 @@ There is no unit test suite: changes are verified by running these examples agai
141141
- Python >= 3.9 (CI/CD uses Python 3.9.13)
142142
- pydantic >= 2.0.0 (validation & serialization)
143143
- requests >= 2.0.0 (HTTP client)
144-
- email_validator >= 2.2.0
144+
- urllib3 >= 1.0.0
145+
- certifi >= 2023.0.0 (certificate store for non-local hosts)
145146

146147
## Development Setup
147148

‎fiscalapi/models/fiscalapi_models.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from decimal import Decimal
22
from enum import IntEnum
3-
from pydantic import BaseModel, ConfigDict, EmailStr, Field
3+
from pydantic import BaseModel, ConfigDict, Field
44
from fiscalapi.models.common_models import BaseDto, CatalogDto
55
from fiscalapi.models.carta_porte_models import CartaPorteComplement
66
from fiscalapi.models.comercio_exterior_models import ComercioExteriorComplement
@@ -52,7 +52,7 @@ class Person(BaseDto):
5252
"""Modelo persona en FiscalAPI."""
5353

5454
legal_name: Optional[str] = Field(default=None, alias="legalName", description="Razón social de la persona sin régimen de capital.")
55-
email: Optional[EmailStr] = Field(default=None, alias="email", description="Correo electrónico de la persona.")
55+
email: Optional[str] = Field(default=None, alias="email", description="Correo electrónico de la persona. El API valida el formato.")
5656
password: Optional[str] = Field(default=None, alias="password", description="Contraseña para acceder al dashboard.")
5757
capital_regime: Optional[str] = Field(default=None, alias="CapitalRegime", description="[Deprecado] El API no expone este campo; se conserva por compatibilidad y se ignora.")
5858
sat_tax_regime_id: Optional[Literal["601", "603", "605", "606", "607", "608", "610", "611", "612", "614", "615", "616", "620", "621", "622", "623", "624", "625", "626"]] = Field(default=None, alias="satTaxRegimeId", description="Código del régimen fiscal del emisor.")

‎requirements.txt‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ build==1.2.2.post1
33
certifi==2024.12.14
44
charset-normalizer==3.4.1
55
colorama==0.4.6
6-
dnspython==2.7.0
7-
email_validator==2.2.0
86
idna==3.10
97
packaging==24.2
108
pydantic==2.10.5

‎setup.py‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
"requests>=2.0.0",
4444
"urllib3>=1.0.0",
4545
"certifi>=2023.0.0",
46-
"email_validator>=2.2.0",
4746
],
4847

4948
classifiers=[

0 commit comments

Comments
 (0)