cuenca-validations 2.1.10.dev4__py3-none-any.whl → 2.1.10.dev5__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.
@@ -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
+ PATZCUARO_PATTERN = (
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,31 @@ 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.with_info_after_validator_function(
423
+ cls._validate, core_schema.str_schema(pattern=PATZCUARO_PATTERN)
424
+ )
425
+
426
+ @classmethod
427
+ def _validate(
428
+ cls, value: str, _info: core_schema.ValidationInfo
429
+ ) -> 'FileCuencaUrl':
430
+ return cls(value)
431
+
432
+
406
433
  class UserTOSAgreementRequest(BaseModel):
407
434
  tos_id: str
408
435
  location: Coordinate
409
- signature_image_url: Optional[SerializableHttpUrl] = None
436
+ signature_image_url: Optional[FileCuencaUrl] = None
410
437
 
411
438
 
412
439
  class UserRequest(BaseModel):
@@ -1 +1 @@
1
- __version__ = '2.1.10.dev4'
1
+ __version__ = '2.1.10.dev5'
@@ -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.10.dev5
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=ayYG-Xp6YtEm2bjM4nDgIXIVSrUA1q6VBnVDC4-9cOY,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
@@ -14,15 +14,16 @@ cuenca_validations/types/helpers.py,sha256=6rHUhwoQ7jJZtGcW3LX-W5ZDl42PWE1RoBpGm
14
14
  cuenca_validations/types/identities.py,sha256=1wkutHzL9Gpd9oAZdyiikNxWKe5iBVAQT3TabR6YG1o,5451
15
15
  cuenca_validations/types/morals.py,sha256=davabh5hAnFVQyM7-yCyDaT5ewXnm0cr1BtqDIwzkX8,1833
16
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
17
+ cuenca_validations/types/requests.py,sha256=zOmu8avdHi2mInrYaUVwDtaSB74mlxvUo8fKIL4OgVc,21119
18
+ cuenca_validations-2.1.10.dev5.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=Pbkfe4Rm4eG3CFQfhg2ez4QPakNgp_bc2zmWkgrVPrY,623
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.10.dev5.dist-info/METADATA,sha256=clKY_dRj2VbD85f6jQLs0DkYu2aNlKon3IXe1lXWMIU,1600
27
+ cuenca_validations-2.1.10.dev5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
28
+ cuenca_validations-2.1.10.dev5.dist-info/top_level.txt,sha256=4233xdOs2HtuT-GFRjcDcwK0IwdwvWdczOtk0fPB6Gw,25
29
+ cuenca_validations-2.1.10.dev5.dist-info/RECORD,,
tests/test_requests.py ADDED
@@ -0,0 +1,18 @@
1
+ from pydantic_extra_types.coordinate import Coordinate, Latitude, Longitude
2
+
3
+ from cuenca_validations.types.requests import (
4
+ FileCuencaUrl,
5
+ UserTOSAgreementRequest,
6
+ )
7
+
8
+
9
+ def test_file_cuenca_url() -> None:
10
+ utos = UserTOSAgreementRequest(
11
+ tos_id='TS67dcae8e74e81bba5a77bf47',
12
+ location=Coordinate(Latitude('19.432607'), Longitude('-99.133209')),
13
+ signature_image_url=FileCuencaUrl(
14
+ 'https://stage.cuenca.com/files/EFQL87ohvoRp-PkOTYgvQYFA'
15
+ ),
16
+ )
17
+ assert utos.signature_image_url is not None
18
+ assert utos.signature_image_url.file_id == 'EFQL87ohvoRp-PkOTYgvQYFA'