cuenca-validations 2.1.39.dev0__tar.gz → 2.1.39.dev2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/PKG-INFO +1 -1
  2. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations/types/__init__.py +6 -2
  3. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations/types/enums.py +6 -0
  4. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations/types/queries.py +5 -0
  5. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations/types/requests.py +20 -19
  6. cuenca_validations-2.1.39.dev2/cuenca_validations/version.py +1 -0
  7. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations.egg-info/PKG-INFO +1 -1
  8. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/tests/test_requests.py +7 -22
  9. cuenca_validations-2.1.39.dev0/cuenca_validations/version.py +0 -1
  10. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/LICENSE +0 -0
  11. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/README.md +0 -0
  12. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations/__init__.py +0 -0
  13. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations/card_bins.py +0 -0
  14. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations/errors.py +0 -0
  15. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations/py.typed +0 -0
  16. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations/types/card.py +0 -0
  17. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations/types/files.py +0 -0
  18. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations/types/general.py +0 -0
  19. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations/types/helpers.py +0 -0
  20. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations/types/identities.py +0 -0
  21. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations/types/morals.py +0 -0
  22. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations/typing.py +0 -0
  23. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations/validators.py +0 -0
  24. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations.egg-info/SOURCES.txt +0 -0
  25. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations.egg-info/dependency_links.txt +0 -0
  26. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations.egg-info/requires.txt +0 -0
  27. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/cuenca_validations.egg-info/top_level.txt +0 -0
  28. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/setup.cfg +0 -0
  29. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/setup.py +0 -0
  30. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/tests/__init__.py +0 -0
  31. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/tests/test_card.py +0 -0
  32. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/tests/test_errors.py +0 -0
  33. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/tests/test_helpers.py +0 -0
  34. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/tests/test_statement.py +0 -0
  35. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/tests/test_types.py +0 -0
  36. {cuenca_validations-2.1.39.dev0 → cuenca_validations-2.1.39.dev2}/tests/test_validators.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.39.dev0
3
+ Version: 2.1.39.dev2
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -2,6 +2,9 @@ __all__ = [
2
2
  'AccountUseType',
3
3
  'AccountQuery',
4
4
  'Address',
5
+ 'AgentQuery',
6
+ 'AgentRequest',
7
+ 'AgentStatus',
5
8
  'ApiKeyQuery',
6
9
  'ApiKeyUpdateRequest',
7
10
  'AuthorizerTransaction',
@@ -27,7 +30,6 @@ __all__ = [
27
30
  'CardTransactionType',
28
31
  'CardType',
29
32
  'Country',
30
- 'CodiNotificationRequest',
31
33
  'Curp',
32
34
  'CurpValidationRequest',
33
35
  'CommissionType',
@@ -128,6 +130,7 @@ __all__ = [
128
130
  from .card import StrictPaymentCardNumber
129
131
  from .enums import (
130
132
  AccountUseType,
133
+ AgentStatus,
131
134
  AuthorizerTransaction,
132
135
  BankAccountStatus,
133
136
  CardErrorType,
@@ -201,6 +204,7 @@ from .identities import (
201
204
  )
202
205
  from .queries import (
203
206
  AccountQuery,
207
+ AgentQuery,
204
208
  ApiKeyQuery,
205
209
  BalanceEntryQuery,
206
210
  BankAccountValidationQuery,
@@ -224,10 +228,10 @@ from .queries import (
224
228
  WalletTransactionQuery,
225
229
  )
226
230
  from .requests import (
231
+ AgentRequest,
227
232
  ApiKeyUpdateRequest,
228
233
  BankAccountValidationRequest,
229
234
  BeneficiaryRequest,
230
- CodiNotificationRequest,
231
235
  CurpValidationRequest,
232
236
  EndpointRequest,
233
237
  EndpointUpdateRequest,
@@ -589,6 +589,12 @@ class SessionType(str, Enum):
589
589
  account_entries = 'session.account_entries'
590
590
  download_file = 'session.download_file'
591
591
  upload_file = 'session.upload_file'
592
+ agent = 'session.agent'
593
+
594
+
595
+ class AgentStatus(str, Enum):
596
+ active = 'active'
597
+ cancelled = 'cancelled'
592
598
 
593
599
 
594
600
  class WebhookObject(str, Enum):
@@ -15,6 +15,7 @@ from pydantic import (
15
15
  from ..typing import DictStrAny
16
16
  from ..validators import sanitize_dict
17
17
  from .enums import (
18
+ AgentStatus,
18
19
  BankAccountStatus,
19
20
  CardFundingType,
20
21
  CardIssuer,
@@ -193,6 +194,10 @@ class SessionQuery(QueryParams):
193
194
  type: SessionType
194
195
 
195
196
 
197
+ class AgentQuery(QueryParams):
198
+ status: Optional[AgentStatus] = None
199
+
200
+
196
201
  class FileQuery(QueryParams):
197
202
  type: Optional[KYCFileType] = None
198
203
  id: Optional[str] = None
@@ -462,25 +462,6 @@ class CurpValidationRequest(BaseRequest):
462
462
  return values
463
463
 
464
464
 
465
- class CodiNotificationRequest(BaseRequest):
466
- clave_rastreo: str
467
- status: str
468
- payment_type: Optional[str] = None
469
- monto: Optional[int] = None
470
- concepto: Optional[str] = None
471
- cuenta_ordenante: Optional[str] = None
472
- cuenta_beneficiario: Optional[str] = None
473
- nombre_ordenante: Optional[str] = None
474
- nombre_beneficiario: Optional[str] = None
475
- referencia_numerica: Optional[str] = None
476
- alias_celular_ordenante: Optional[str] = None
477
- digito_verificador_ordenante: Optional[str] = None
478
- alias_celular_beneficiario: Optional[str] = None
479
- digito_verificador_beneficiario: Optional[str] = None
480
- folio_esquema: str
481
- estampa_tiempo_cobro: Optional[int] = None
482
-
483
-
484
465
  class TOSRequest(BaseModel):
485
466
  type: TermsOfService
486
467
  version: str
@@ -664,6 +645,26 @@ class SessionRequest(BaseRequest):
664
645
  )
665
646
 
666
647
 
648
+ class AgentRequest(BaseRequest):
649
+ pairing_code: str
650
+ phone_number: PhoneNumber
651
+ device_info: DictStrAny = Field(default_factory=dict)
652
+ model_config = ConfigDict(
653
+ json_schema_extra={
654
+ 'example': {
655
+ 'pairing_code': 'secret_code',
656
+ 'phone_number': '+525512345678',
657
+ 'device_info': {'client': 'cursor', 'os': 'macOS'},
658
+ }
659
+ }
660
+ )
661
+
662
+ @field_validator('phone_number', mode='before')
663
+ @classmethod
664
+ def normalize_phone(cls, v: PhoneNumber) -> str:
665
+ return normalize_phone_number(str(v))
666
+
667
+
667
668
  class EndpointRequest(BaseRequest):
668
669
  url: SerializableHttpUrl
669
670
  events: Optional[list[WebhookEvent]] = None
@@ -0,0 +1 @@
1
+ __version__ = '2.1.39.dev2'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.39.dev0
3
+ Version: 2.1.39.dev2
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -2,9 +2,9 @@ import pytest
2
2
  from pydantic import ValidationError
3
3
  from pydantic_extra_types.phone_numbers import PhoneNumber
4
4
 
5
+ from cuenca_validations.types import AgentRequest
5
6
  from cuenca_validations.types.enums import VerificationType
6
7
  from cuenca_validations.types.requests import (
7
- CodiNotificationRequest,
8
8
  PasswordResetRequest,
9
9
  UpdateTransferRequest,
10
10
  UserTOSAgreementRequest,
@@ -126,24 +126,9 @@ def test_update_transfer_request_forbids_extra() -> None:
126
126
  assert 'Extra inputs are not permitted' in str(ex.value)
127
127
 
128
128
 
129
- def test_codi_notification_request_serializes() -> None:
130
- payload: DictStrAny = {
131
- 'clave_rastreo': 'LT123456789',
132
- 'status': 'succeeded',
133
- 'payment_type': '19',
134
- 'monto': 10000,
135
- 'concepto': 'Pago CoDi test',
136
- 'cuenta_ordenante': '646180157000000001',
137
- 'cuenta_beneficiario': '646180157000000002',
138
- 'nombre_ordenante': 'Juan Perez',
139
- 'nombre_beneficiario': 'Maria Lopez',
140
- 'folio_esquema': '25535dd9e425535dd9ee',
141
- 'estampa_tiempo_cobro': 1704067200000,
142
- 'referencia_numerica': '1234567',
143
- 'alias_celular_ordenante': '2700754676',
144
- 'digito_verificador_ordenante': '34',
145
- 'alias_celular_beneficiario': '0754676270',
146
- 'digito_verificador_beneficiario': '27',
147
- }
148
- req = CodiNotificationRequest.model_validate(payload)
149
- assert req.model_dump() == payload
129
+ def test_agent_request_normalizes_phone() -> None:
130
+ request = AgentRequest(
131
+ pairing_code='A1B2C3',
132
+ phone_number='+52 55 1234 5678',
133
+ )
134
+ assert request.phone_number == '+525512345678'
@@ -1 +0,0 @@
1
- __version__ = '2.1.39.dev0'