cuenca-validations 2.1.10.dev4__py3-none-any.whl → 2.1.11.dev1__py3-none-any.whl

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.
@@ -176,7 +176,6 @@ class SessionQuery(QueryParams):
176
176
  class FileQuery(QueryParams):
177
177
  type: Optional[KYCFileType] = None
178
178
  id: Optional[str] = None
179
- user_id: Optional[str] = None
180
179
 
181
180
 
182
181
  class BankAccountValidationQuery(QueryParams):
@@ -1,5 +1,5 @@
1
1
  import datetime as dt
2
- from typing import Annotated, Optional, Union
2
+ from typing import Annotated, Any, Optional, Union
3
3
 
4
4
  from clabe import Clabe
5
5
  from pydantic import (
@@ -7,11 +7,13 @@ from pydantic import (
7
7
  ConfigDict,
8
8
  EmailStr,
9
9
  Field,
10
+ GetCoreSchemaHandler,
10
11
  StrictStr,
11
12
  StringConstraints,
12
13
  field_validator,
13
14
  model_validator,
14
15
  )
16
+ from pydantic_core import core_schema
15
17
  from pydantic_extra_types.coordinate import Coordinate
16
18
 
17
19
  from ..types.enums import (
@@ -82,6 +84,10 @@ from .morals import (
82
84
  VulnerableActivityDetails,
83
85
  )
84
86
 
87
+ CUENCA_FILE_URL = (
88
+ r'^https:\/\/(?:stage|sandbox|api)\.cuenca\.com\/files\/([a-zA-Z0-9\-]+)$'
89
+ )
90
+
85
91
 
86
92
  class BaseRequest(BaseModel):
87
93
  model_config = ConfigDict(extra="forbid")
@@ -403,10 +409,25 @@ class TOSRequest(BaseModel):
403
409
  ip: Optional[SerializableIPvAnyAddress] = None
404
410
 
405
411
 
412
+ class FileCuencaUrl(str):
413
+
414
+ @property
415
+ def file_id(self) -> str:
416
+ return self.split('/')[-1]
417
+
418
+ @classmethod
419
+ def __get_pydantic_core_schema__(
420
+ cls, _source_type: Any, _handler: GetCoreSchemaHandler
421
+ ) -> core_schema.CoreSchema:
422
+ return core_schema.no_info_after_validator_function(
423
+ cls, core_schema.str_schema(pattern=CUENCA_FILE_URL)
424
+ )
425
+
426
+
406
427
  class UserTOSAgreementRequest(BaseModel):
407
428
  tos_id: str
408
429
  location: Coordinate
409
- signature_image_url: Optional[SerializableHttpUrl] = None
430
+ signature_image_url: Optional[FileCuencaUrl] = None
410
431
 
411
432
 
412
433
  class UserRequest(BaseModel):
@@ -1 +1 @@
1
- __version__ = '2.1.10.dev4'
1
+ __version__ = '2.1.11.dev1'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.10.dev4
3
+ Version: 2.1.11.dev1
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -4,7 +4,7 @@ cuenca_validations/errors.py,sha256=OtM8EgiKqYdz9Hn66AbBO96orL1or7efkyt0vh0Zxbs,
4
4
  cuenca_validations/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  cuenca_validations/typing.py,sha256=1QCu81IbVZZpyInjyeAuO-nF36gpT5Gi4o6V9PozuOU,204
6
6
  cuenca_validations/validators.py,sha256=wzwLnJ4wHggZvqp3mearbFkzvDERGeTNvJkuofQnuMc,1484
7
- cuenca_validations/version.py,sha256=lI2m3sc8mhn2ftf9dkiJonv7H667Op9dEwU7EwPuIY8,28
7
+ cuenca_validations/version.py,sha256=Dk6SNSWxI7IldWfI4gIkWQ5PZQEcZv3hOd2C4vHchZI,28
8
8
  cuenca_validations/types/__init__.py,sha256=fPmHzU6mY6l3qK2R8cOhjcrICTOnoHS6VQteX663FRE,4843
9
9
  cuenca_validations/types/card.py,sha256=UGzz8NTFAverUmdUKAK1oGHnOnjSNTpIRUm93vKSSGY,1295
10
10
  cuenca_validations/types/enums.py,sha256=533fUCip5CXMD7m4Ww8VAcB5Yr4A0EmT5GBRt2mF4b0,19510
@@ -13,16 +13,17 @@ cuenca_validations/types/general.py,sha256=vJmQBD_Iv_hsxD8x3_Bip-NlYAiE2rmXSPQKj
13
13
  cuenca_validations/types/helpers.py,sha256=6rHUhwoQ7jJZtGcW3LX-W5ZDl42PWE1RoBpGme7KCkk,610
14
14
  cuenca_validations/types/identities.py,sha256=1wkutHzL9Gpd9oAZdyiikNxWKe5iBVAQT3TabR6YG1o,5451
15
15
  cuenca_validations/types/morals.py,sha256=davabh5hAnFVQyM7-yCyDaT5ewXnm0cr1BtqDIwzkX8,1833
16
- cuenca_validations/types/queries.py,sha256=bQO9cgcz38ghog3nmC0_TD8nAABFdq4C8fQpLec1p4I,5026
17
- cuenca_validations/types/requests.py,sha256=gAenndrOFczTM5-7d87IQaqmsuyThW9OJVBg4bZQVRE,20394
18
- cuenca_validations-2.1.10.dev4.dist-info/licenses/LICENSE,sha256=wR76FmxBbfnQpwELkkE5iMF8sFIafEMgXLTE4N4WPTc,1063
16
+ cuenca_validations/types/queries.py,sha256=3KWQfIawcXpyfD2SxBlUJpJVkc3CXL5rNMpHU-9GZXY,4992
17
+ cuenca_validations/types/requests.py,sha256=fvIZZjGADNc7J_CFFY4f45Y45YV2JGnUp2VSFTx5OFM,20955
18
+ cuenca_validations-2.1.11.dev1.dist-info/licenses/LICENSE,sha256=wR76FmxBbfnQpwELkkE5iMF8sFIafEMgXLTE4N4WPTc,1063
19
19
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  tests/test_card.py,sha256=QAfRz7e11gWICPnFJZ2tiYgUsFV3C9TwzJXrDnDNXFw,1202
21
21
  tests/test_errors.py,sha256=ixiIgEuBuzfsL5p4uCFdF32XqFRtTPF6EVhGJ0keOrI,930
22
22
  tests/test_helpers.py,sha256=ubzpi1UXCryLQdgsT_Zm2IX-XE_4L0dnHnhLwH06xK8,748
23
+ tests/test_requests.py,sha256=DGYWLhmJ0ryy9j1oEsFnZ9FssiClUrvZqczQGKiVVyU,1095
23
24
  tests/test_statement.py,sha256=IOE0rRRBgBZSJv_FLaETEyn5NzzXKMNTqgjv99GX-68,1436
24
25
  tests/test_types.py,sha256=agu5f7cbKv2SPuX8CE3Xp7K_s-MW-oLQjj86BWKcXbw,18811
25
- cuenca_validations-2.1.10.dev4.dist-info/METADATA,sha256=fMRyhr3QPVnKcotJcdYiaa93EHo8wrfDmaKGWkmr-G8,1600
26
- cuenca_validations-2.1.10.dev4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
27
- cuenca_validations-2.1.10.dev4.dist-info/top_level.txt,sha256=4233xdOs2HtuT-GFRjcDcwK0IwdwvWdczOtk0fPB6Gw,25
28
- cuenca_validations-2.1.10.dev4.dist-info/RECORD,,
26
+ cuenca_validations-2.1.11.dev1.dist-info/METADATA,sha256=JhFdCAKz9oeU0nDhtNMJo8yY6WwHEBnF7U0I5hlto10,1600
27
+ cuenca_validations-2.1.11.dev1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
28
+ cuenca_validations-2.1.11.dev1.dist-info/top_level.txt,sha256=4233xdOs2HtuT-GFRjcDcwK0IwdwvWdczOtk0fPB6Gw,25
29
+ cuenca_validations-2.1.11.dev1.dist-info/RECORD,,
tests/test_requests.py ADDED
@@ -0,0 +1,31 @@
1
+ import pytest
2
+ from pydantic import ValidationError
3
+
4
+ from cuenca_validations.types.requests import UserTOSAgreementRequest
5
+ from cuenca_validations.typing import DictStrAny
6
+
7
+
8
+ @pytest.mark.parametrize('environment', ['stage', 'sandbox', 'api'])
9
+ def test_file_cuenca_url(environment: str) -> None:
10
+ request_data: DictStrAny = dict(
11
+ tos_id='TS67dcae8e74e81bba5a77bf47',
12
+ location=(19.432607, -99.133209),
13
+ signature_image_url=(
14
+ f'https://{environment}.cuenca.com/files/EFQL87ohvoRp-PkOTYgvQYFA'
15
+ ),
16
+ )
17
+ utos = UserTOSAgreementRequest(**request_data)
18
+ assert utos.signature_image_url is not None
19
+ assert utos.signature_image_url.file_id == 'EFQL87ohvoRp-PkOTYgvQYFA'
20
+
21
+
22
+ def test_file_cuenca_url_invalid() -> None:
23
+ request_data: DictStrAny = dict(
24
+ tos_id='TS67dcae8e74e81bba5a77bf47',
25
+ location=(19.432607, -99.133209),
26
+ signature_image_url=(
27
+ 'https://cuenca.com/files/EFQL87ohvoRp-PkOTYgvQYFA/invalid'
28
+ ),
29
+ )
30
+ with pytest.raises(ValidationError):
31
+ UserTOSAgreementRequest(**request_data)