cuenca-validations 2.1.38.dev1__tar.gz → 2.1.39__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.38.dev1 → cuenca_validations-2.1.39}/PKG-INFO +1 -1
  2. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/__init__.py +4 -2
  3. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/enums.py +2 -7
  4. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/queries.py +4 -0
  5. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/requests.py +23 -5
  6. cuenca_validations-2.1.39/cuenca_validations/version.py +1 -0
  7. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations.egg-info/PKG-INFO +1 -1
  8. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/tests/test_types.py +10 -60
  9. cuenca_validations-2.1.38.dev1/cuenca_validations/version.py +0 -1
  10. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/LICENSE +0 -0
  11. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/README.md +0 -0
  12. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/__init__.py +0 -0
  13. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/card_bins.py +0 -0
  14. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/errors.py +0 -0
  15. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/py.typed +0 -0
  16. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/card.py +0 -0
  17. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/files.py +0 -0
  18. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/general.py +0 -0
  19. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/helpers.py +0 -0
  20. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/identities.py +0 -0
  21. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/morals.py +0 -0
  22. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/typing.py +0 -0
  23. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/validators.py +0 -0
  24. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations.egg-info/SOURCES.txt +0 -0
  25. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations.egg-info/dependency_links.txt +0 -0
  26. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations.egg-info/requires.txt +0 -0
  27. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations.egg-info/top_level.txt +0 -0
  28. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/setup.cfg +0 -0
  29. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/setup.py +0 -0
  30. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/tests/__init__.py +0 -0
  31. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/tests/test_card.py +0 -0
  32. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/tests/test_errors.py +0 -0
  33. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/tests/test_helpers.py +0 -0
  34. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/tests/test_requests.py +0 -0
  35. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/tests/test_statement.py +0 -0
  36. {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/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.38.dev1
3
+ Version: 2.1.39
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -2,6 +2,8 @@ __all__ = [
2
2
  'AccountUseType',
3
3
  'AccountQuery',
4
4
  'Address',
5
+ 'AgentQuery',
6
+ 'AgentRequest',
5
7
  'ApiKeyQuery',
6
8
  'ApiKeyUpdateRequest',
7
9
  'AuthorizerTransaction',
@@ -45,7 +47,6 @@ __all__ = [
45
47
  'FileRequest',
46
48
  'FileUploadRequest',
47
49
  'FraudFundsTransferRequest',
48
- 'FraudFundsTransferTipoPago',
49
50
  'Gender',
50
51
  'IncomeType',
51
52
  'IssuerNetwork',
@@ -146,7 +147,6 @@ from .enums import (
146
147
  EventType,
147
148
  FileExtension,
148
149
  FileFormat,
149
- FraudFundsTransferTipoPago,
150
150
  Gender,
151
151
  IncomeType,
152
152
  IssuerNetwork,
@@ -202,6 +202,7 @@ from .identities import (
202
202
  )
203
203
  from .queries import (
204
204
  AccountQuery,
205
+ AgentQuery,
205
206
  ApiKeyQuery,
206
207
  BalanceEntryQuery,
207
208
  BankAccountValidationQuery,
@@ -225,6 +226,7 @@ from .queries import (
225
226
  WalletTransactionQuery,
226
227
  )
227
228
  from .requests import (
229
+ AgentRequest,
228
230
  ApiKeyUpdateRequest,
229
231
  BankAccountValidationRequest,
230
232
  BeneficiaryRequest,
@@ -1,4 +1,4 @@
1
- from enum import Enum, IntEnum
1
+ from enum import Enum
2
2
 
3
3
 
4
4
  class CardNetwork(str, Enum):
@@ -589,6 +589,7 @@ 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'
592
593
 
593
594
 
594
595
  class WebhookObject(str, Enum):
@@ -743,9 +744,3 @@ class RequiredAction(str, Enum):
743
744
  level_up_required = 'level_up_required'
744
745
  level_up_invitation = 'level_up_invitation'
745
746
  fix_documents = 'fix_documents'
746
-
747
-
748
- class FraudFundsTransferTipoPago(IntEnum):
749
- participante_participante = 7
750
- devolucion_especial_ordenes_aceptadas_acreditadas = 23
751
- devolucion_extemporanea_especial_ordenes_acreditadas = 24
@@ -193,6 +193,10 @@ class SessionQuery(QueryParams):
193
193
  type: SessionType
194
194
 
195
195
 
196
+ class AgentQuery(QueryParams):
197
+ active: Optional[bool] = None
198
+
199
+
196
200
  class FileQuery(QueryParams):
197
201
  type: Optional[KYCFileType] = None
198
202
  id: Optional[str] = None
@@ -1,7 +1,7 @@
1
1
  import datetime as dt
2
2
  from typing import Annotated, Any, Optional, Union
3
3
 
4
- from clabe import Clabe
4
+ from clabe import BANK_NAMES, Clabe
5
5
  from pydantic import (
6
6
  BaseModel,
7
7
  ConfigDict,
@@ -29,7 +29,6 @@ from ..types.enums import (
29
29
  Country,
30
30
  EcommerceIndicator,
31
31
  FileExtension,
32
- FraudFundsTransferTipoPago,
33
32
  Gender,
34
33
  IncomeType,
35
34
  IssuerNetwork,
@@ -329,16 +328,20 @@ class FraudFundsTransferRequest(BaseRequest):
329
328
  user_id: NonEmptyStr
330
329
  clabe: Optional[Clabe] = None
331
330
  bank_code: Optional[str] = None
332
- tipo_pago: Optional[FraudFundsTransferTipoPago] = None
333
331
  amount: Optional[StrictPositiveInt] = None
334
332
  concepto: Optional[NonEmptyStr] = None
335
333
 
334
+ @field_validator('bank_code')
335
+ @classmethod
336
+ def validate_bank_code(cls, bank_code: Optional[str]) -> Optional[str]:
337
+ if bank_code is not None and bank_code not in BANK_NAMES:
338
+ raise ValueError('Not a valid bank code')
339
+ return bank_code
340
+
336
341
  @model_validator(mode='after')
337
342
  def validate_destination(self) -> 'FraudFundsTransferRequest':
338
343
  if self.clabe is None and self.bank_code is None:
339
344
  raise ValueError('clabe or bank_code required')
340
- if self.bank_code is not None and self.tipo_pago is None:
341
- raise ValueError('tipo_pago required when using bank_code')
342
345
  return self
343
346
 
344
347
 
@@ -642,6 +645,21 @@ class SessionRequest(BaseRequest):
642
645
  )
643
646
 
644
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
+
645
663
  class EndpointRequest(BaseRequest):
646
664
  url: SerializableHttpUrl
647
665
  events: Optional[list[WebhookEvent]] = None
@@ -0,0 +1 @@
1
+ __version__ = '2.1.39'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.38.dev1
3
+ Version: 2.1.39
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -675,69 +675,19 @@ def test_bank_account_validation_clabe_request():
675
675
  assert BankAccountValidationRequest(account_number='646180157098510917')
676
676
 
677
677
 
678
- @pytest.mark.parametrize(
679
- 'data, expected_dump',
680
- [
681
- (
682
- dict(
683
- user_id='US123',
684
- clabe='646180157098510917',
685
- amount=10000,
686
- concepto=' Devolución fraude ',
687
- ),
688
- dict(
689
- user_id='US123',
690
- clabe='646180157098510917',
691
- amount=10000,
692
- concepto='Devolución fraude',
693
- ),
694
- ),
695
- (
696
- dict(user_id='US123', clabe='646180157098510917'),
697
- dict(user_id='US123', clabe='646180157098510917'),
698
- ),
699
- *[
700
- (
701
- dict(
702
- user_id='US123',
703
- bank_code='40012',
704
- tipo_pago=tipo_pago,
705
- amount=5000,
706
- ),
707
- dict(
708
- user_id='US123',
709
- bank_code='40012',
710
- tipo_pago=tipo_pago,
711
- amount=5000,
712
- ),
713
- )
714
- for tipo_pago in (7, 23, 24)
715
- ],
716
- ],
717
- )
718
- def test_fraud_funds_transfer_request(data, expected_dump):
719
- request = FraudFundsTransferRequest(**data)
720
- assert request.model_dump() == expected_dump
678
+ def test_fraud_funds_transfer_request():
679
+ assert FraudFundsTransferRequest(
680
+ user_id='US123',
681
+ bank_code='40012',
682
+ ).model_dump() == {'user_id': 'US123', 'bank_code': '40012'}
721
683
 
684
+ with pytest.raises(ValidationError) as exc:
685
+ FraudFundsTransferRequest(user_id='US123')
686
+ assert 'clabe or bank_code required' in str(exc.value)
722
687
 
723
- @pytest.mark.parametrize(
724
- 'data, expected_error',
725
- [
726
- (dict(user_id='US123'), 'clabe or bank_code required'),
727
- (
728
- dict(user_id='US123', bank_code='40012'),
729
- 'tipo_pago required when using bank_code',
730
- ),
731
- (
732
- dict(user_id='US123', bank_code='40012', tipo_pago=1),
733
- 'Input should be 7, 23 or 24',
734
- ),
735
- ],
736
- )
737
- def test_fraud_funds_transfer_request_invalid(data, expected_error):
738
688
  with pytest.raises(ValidationError) as exc:
739
- FraudFundsTransferRequest(**data)
740
- assert expected_error in str(exc.value)
689
+ FraudFundsTransferRequest(user_id='US123', bank_code='99999')
690
+ assert 'Not a valid bank code' in str(exc.value)
741
691
 
742
692
 
743
693
  @pytest.mark.parametrize(
@@ -1 +0,0 @@
1
- __version__ = '2.1.38.dev1'