cuenca-validations 2.1.48.dev1__tar.gz → 2.1.48.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.48.dev1 → cuenca_validations-2.1.48.dev2}/PKG-INFO +1 -1
  2. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations/types/requests.py +12 -42
  3. cuenca_validations-2.1.48.dev2/cuenca_validations/version.py +1 -0
  4. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations.egg-info/PKG-INFO +1 -1
  5. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/tests/test_requests.py +8 -16
  6. cuenca_validations-2.1.48.dev1/cuenca_validations/version.py +0 -1
  7. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/LICENSE +0 -0
  8. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/README.md +0 -0
  9. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations/__init__.py +0 -0
  10. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations/card_bins.py +0 -0
  11. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations/errors.py +0 -0
  12. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations/py.typed +0 -0
  13. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations/types/__init__.py +0 -0
  14. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations/types/card.py +0 -0
  15. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations/types/enums.py +0 -0
  16. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations/types/files.py +0 -0
  17. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations/types/general.py +0 -0
  18. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations/types/helpers.py +0 -0
  19. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations/types/identities.py +0 -0
  20. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations/types/morals.py +0 -0
  21. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations/types/queries.py +0 -0
  22. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations/typing.py +0 -0
  23. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations/validators.py +0 -0
  24. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations.egg-info/SOURCES.txt +0 -0
  25. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations.egg-info/dependency_links.txt +0 -0
  26. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations.egg-info/requires.txt +0 -0
  27. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/cuenca_validations.egg-info/top_level.txt +0 -0
  28. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/setup.cfg +0 -0
  29. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/setup.py +0 -0
  30. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/tests/__init__.py +0 -0
  31. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/tests/test_card.py +0 -0
  32. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/tests/test_errors.py +0 -0
  33. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/tests/test_helpers.py +0 -0
  34. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/tests/test_statement.py +0 -0
  35. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.dev2}/tests/test_types.py +0 -0
  36. {cuenca_validations-2.1.48.dev1 → cuenca_validations-2.1.48.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.48.dev1
3
+ Version: 2.1.48.dev2
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -1021,10 +1021,6 @@ class PhoneVerificationAssociationRequest(BaseRequest):
1021
1021
  verification_id: str
1022
1022
 
1023
1023
 
1024
- MAX_TRANSFER_ORDER_BATCH_LINES = 5000
1025
- MAX_TRANSFER_ORDER_EXPIRATION_HOURS = 24 * 7
1026
-
1027
-
1028
1024
  class TransferOrderLineRequest(BaseRequest):
1029
1025
  account_number: str
1030
1026
  recipient_name: str
@@ -1044,57 +1040,31 @@ class TransferOrderLineRequest(BaseRequest):
1044
1040
 
1045
1041
 
1046
1042
  class TransferOrderRequest(BaseRequest):
1047
- account_number: Optional[str] = None
1048
- recipient_name: Optional[str] = None
1049
- amount: Optional[int] = None
1050
- descriptor: Optional[str] = None
1051
1043
  idempotency_key: str
1052
1044
  legal_person_id: Optional[str] = None
1053
- items: Optional[list[TransferOrderLineRequest]] = None
1054
- expires_in_hours: Optional[int] = Field(
1055
- default=None,
1056
- gt=0,
1057
- le=MAX_TRANSFER_ORDER_EXPIRATION_HOURS,
1058
- )
1045
+ items: list[TransferOrderLineRequest]
1059
1046
 
1060
1047
  model_config = ConfigDict(
1061
1048
  json_schema_extra={
1062
1049
  'example': {
1063
- 'account_number': '646180157034181180',
1064
- 'recipient_name': 'Doroteo Arango',
1065
- 'amount': 100_00,
1066
- 'descriptor': 'Mezcal, pulque y tequila',
1067
1050
  'idempotency_key': 'UNIQUE-KEY-003',
1068
1051
  'legal_person_id': 'USWqY5cvkISJOxHyEKjAKf8w',
1052
+ 'items': [
1053
+ {
1054
+ 'account_number': '646180157034181180',
1055
+ 'recipient_name': 'Doroteo Arango',
1056
+ 'amount': 100_00,
1057
+ 'descriptor': 'Mezcal, pulque y tequila',
1058
+ }
1059
+ ],
1069
1060
  }
1070
1061
  },
1071
1062
  )
1072
1063
 
1073
1064
  @model_validator(mode='after')
1074
- def require_unitario_or_batch(self) -> 'TransferOrderRequest':
1075
- has_items = bool(self.items)
1076
- has_flat = all(
1077
- (
1078
- self.account_number is not None,
1079
- self.recipient_name is not None,
1080
- self.amount is not None,
1081
- self.descriptor is not None,
1082
- )
1083
- )
1084
- if has_items == has_flat:
1085
- raise ValueError(
1086
- 'Provide either a single transfer (account_number, '
1087
- 'recipient_name, amount, descriptor) or items[] for a batch, '
1088
- 'not both'
1089
- )
1090
- if self.items is not None:
1091
- if len(self.items) > MAX_TRANSFER_ORDER_BATCH_LINES:
1092
- raise ValueError(
1093
- 'Batch exceeds maximum of '
1094
- f'{MAX_TRANSFER_ORDER_BATCH_LINES} lines'
1095
- )
1096
- if len(self.items) == 0:
1097
- raise ValueError('items must not be empty')
1065
+ def validate_items(self) -> 'TransferOrderRequest':
1066
+ if len(self.items) == 0:
1067
+ raise ValueError('items must not be empty')
1098
1068
  return self
1099
1069
 
1100
1070
 
@@ -0,0 +1 @@
1
+ __version__ = '2.1.48.dev2'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.48.dev1
3
+ Version: 2.1.48.dev2
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -9,7 +9,6 @@ from cuenca_validations.types.enums import (
9
9
  )
10
10
  from cuenca_validations.types.queries import OperatorQuery
11
11
  from cuenca_validations.types.requests import (
12
- MAX_TRANSFER_ORDER_BATCH_LINES,
13
12
  OperatorLoginRequest,
14
13
  OperatorLoginUpdateRequest,
15
14
  OperatorRequest,
@@ -244,26 +243,19 @@ def test_transfer_order_request_shape() -> None:
244
243
  'descriptor': 'Mezcal',
245
244
  }
246
245
  single = TransferOrderRequest.model_validate(
247
- {**line, 'idempotency_key': 'single'}
246
+ {'idempotency_key': 'single', 'items': [line]}
248
247
  )
249
- assert single.items is None
248
+ assert single.items is not None
249
+ assert len(single.items) == 1
250
250
  batch = TransferOrderRequest.model_validate(
251
- {'idempotency_key': 'batch', 'items': [line]}
251
+ {'idempotency_key': 'batch', 'items': [line, line]}
252
252
  )
253
253
  assert batch.items is not None
254
+ assert len(batch.items) == 2
254
255
 
255
- with pytest.raises(ValidationError, match='not both'):
256
- TransferOrderRequest.model_validate(
257
- {**line, 'idempotency_key': 'both', 'items': [line]}
258
- )
259
256
  with pytest.raises(ValidationError, match='items must not be empty'):
260
257
  TransferOrderRequest.model_validate(
261
- {**line, 'idempotency_key': 'empty', 'items': []}
262
- )
263
- with pytest.raises(ValidationError, match='Batch exceeds maximum'):
264
- TransferOrderRequest.model_validate(
265
- {
266
- 'idempotency_key': 'too-many',
267
- 'items': [line] * (MAX_TRANSFER_ORDER_BATCH_LINES + 1),
268
- }
258
+ {'idempotency_key': 'empty', 'items': []}
269
259
  )
260
+ with pytest.raises(ValidationError):
261
+ TransferOrderRequest.model_validate({'idempotency_key': 'missing'})
@@ -1 +0,0 @@
1
- __version__ = '2.1.48.dev1'