cuenca 2.0.0.dev2__py3-none-any.whl → 2.0.0.dev4__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.
cuenca/exc.py CHANGED
@@ -1,3 +1,5 @@
1
+ from dataclasses import dataclass
2
+
1
3
  from cuenca_validations.typing import DictStrAny
2
4
 
3
5
 
@@ -17,11 +19,10 @@ class MultipleResultsFound(CuencaException):
17
19
  """One result was expected but multiple were returned"""
18
20
 
19
21
 
22
+ @dataclass
20
23
  class CuencaResponseException(CuencaException):
21
- def __init__(self, json: DictStrAny, status_code: int) -> None:
22
- self.json = json
23
- self.status_code = status_code
24
- super().__init__()
24
+ json: DictStrAny
25
+ status_code: int
25
26
 
26
27
  def __str__(self) -> str:
27
28
  return repr(self)
@@ -75,5 +75,5 @@ class ApiKey(Creatable, Queryable, Retrievable, Updateable):
75
75
  req = ApiKeyUpdateRequest(
76
76
  metadata=metadata, user_id=user_id, platform_id=platform_id
77
77
  )
78
- resp = cls._update(api_key_id, **req.dict(), session=session)
78
+ resp = cls._update(api_key_id, **req.model_dump(), session=session)
79
79
  return cast('ApiKey', resp)
cuenca/resources/base.py CHANGED
@@ -2,7 +2,7 @@ import base64
2
2
  import datetime as dt
3
3
  import json
4
4
  from io import BytesIO
5
- from typing import Any, ClassVar, Dict, Generator, Optional
5
+ from typing import Any, ClassVar, Generator, Optional
6
6
  from urllib.parse import urlencode
7
7
 
8
8
  from cuenca_validations.types import (
@@ -24,7 +24,7 @@ class Resource(BaseModel):
24
24
  id: str
25
25
 
26
26
  @classmethod
27
- def _from_dict(cls, obj_dict: Dict[str, Any]) -> 'Resource':
27
+ def _from_dict(cls, obj_dict: dict[str, Any]) -> 'Resource':
28
28
  cls._filter_excess_fields(obj_dict)
29
29
  return cls(**obj_dict)
30
30
 
@@ -151,7 +151,7 @@ class Queryable(Resource):
151
151
  cls, *, session: Session = global_session, **query_params
152
152
  ) -> Resource:
153
153
  q = cls._query_params(limit=2, **query_params)
154
- resp = session.get(cls._resource, q.dict())
154
+ resp = session.get(cls._resource, q.model_dump())
155
155
  items = resp['items']
156
156
  len_items = len(items)
157
157
  if not len_items:
@@ -165,7 +165,7 @@ class Queryable(Resource):
165
165
  cls, *, session: Session = global_session, **query_params
166
166
  ) -> Optional[Resource]:
167
167
  q = cls._query_params(limit=1, **query_params)
168
- resp = session.get(cls._resource, q.dict())
168
+ resp = session.get(cls._resource, q.model_dump())
169
169
  try:
170
170
  item = resp['items'][0]
171
171
  except IndexError:
@@ -179,7 +179,7 @@ class Queryable(Resource):
179
179
  cls, *, session: Session = global_session, **query_params
180
180
  ) -> int:
181
181
  q = cls._query_params(count=True, **query_params)
182
- resp = session.get(cls._resource, q.dict())
182
+ resp = session.get(cls._resource, q.model_dump())
183
183
  return resp['count']
184
184
 
185
185
  @classmethod
@@ -188,7 +188,7 @@ class Queryable(Resource):
188
188
  ) -> Generator[Resource, None, None]:
189
189
  session = session or global_session
190
190
  q = cls._query_params(**query_params)
191
- next_page_uri = f'{cls._resource}?{urlencode(q.dict())}'
191
+ next_page_uri = f'{cls._resource}?{urlencode(q.model_dump())}'
192
192
  while next_page_uri:
193
193
  page = session.get(next_page_uri)
194
194
  yield from (cls._from_dict(item) for item in page['items'])
@@ -2,6 +2,7 @@ import datetime as dt
2
2
  from typing import ClassVar, Optional, cast
3
3
 
4
4
  from cuenca_validations.types.requests import CardActivationRequest
5
+ from pydantic_extra_types.payment import PaymentCardNumber
5
6
 
6
7
  from ..http import Session, session as global_session
7
8
  from .base import Creatable
@@ -21,7 +22,7 @@ class CardActivation(Creatable):
21
22
  @classmethod
22
23
  def create(
23
24
  cls,
24
- number: str,
25
+ number: PaymentCardNumber,
25
26
  exp_month: int,
26
27
  exp_year: int,
27
28
  cvv2: str,
@@ -1,4 +1,4 @@
1
- from typing import ClassVar, List, Optional, cast
1
+ from typing import ClassVar, Optional, cast
2
2
 
3
3
  from cuenca_validations.types import (
4
4
  CardErrorType,
@@ -14,15 +14,13 @@ from .resources import retrieve_uri, retrieve_uris
14
14
 
15
15
 
16
16
  class CardTransaction(Transaction):
17
- def __init__(self, *args, **kwargs):
18
- super(CardTransaction, self).__init__(*args, **kwargs)
19
17
 
20
18
  _resource: ClassVar = 'card_transactions'
21
19
  _query_params: ClassVar = CardTransactionQuery
22
20
 
23
21
  type: CardTransactionType
24
22
  network: CardNetwork
25
- related_card_transaction_uris: List[str]
23
+ related_card_transaction_uris: list[str]
26
24
  card_uri: str
27
25
  card_last4: str
28
26
  card_type: CardType
@@ -30,11 +28,11 @@ class CardTransaction(Transaction):
30
28
  error_type: Optional[CardErrorType] = None
31
29
 
32
30
  @property # type: ignore
33
- def related_card_transactions(self) -> Optional[List['CardTransaction']]:
31
+ def related_card_transactions(self) -> Optional[list['CardTransaction']]:
34
32
  if not self.related_card_transaction_uris:
35
33
  return []
36
34
  return cast(
37
- List['CardTransaction'],
35
+ list['CardTransaction'],
38
36
  retrieve_uris(self.related_card_transaction_uris),
39
37
  )
40
38
 
cuenca/resources/cards.py CHANGED
@@ -81,7 +81,7 @@ class Card(Retrievable, Queryable, Creatable, Updateable):
81
81
  card_holder_user_id=card_holder_user_id,
82
82
  is_dynamic_cvv=is_dynamic_cvv,
83
83
  )
84
- return cast('Card', cls._create(session=session, **req.dict()))
84
+ return cast('Card', cls._create(session=session, **req.model_dump()))
85
85
 
86
86
  @classmethod
87
87
  def update(
@@ -106,7 +106,7 @@ class Card(Retrievable, Queryable, Creatable, Updateable):
106
106
  req = CardUpdateRequest(
107
107
  status=status, pin_block=pin_block, is_dynamic_cvv=is_dynamic_cvv
108
108
  )
109
- resp = cls._update(card_id, session=session, **req.dict())
109
+ resp = cls._update(card_id, session=session, **req.model_dump())
110
110
  return cast('Card', resp)
111
111
 
112
112
  @classmethod
@@ -1,5 +1,6 @@
1
- from typing import ClassVar, List, Optional, cast
1
+ from typing import ClassVar, Optional, cast
2
2
 
3
+ from cuenca_validations.types import HttpUrlString
3
4
  from cuenca_validations.types.enums import WebhookEvent
4
5
  from cuenca_validations.types.requests import (
5
6
  EndpointRequest,
@@ -14,7 +15,7 @@ from .base import Creatable, Deactivable, Queryable, Retrievable, Updateable
14
15
  class Endpoint(Creatable, Deactivable, Retrievable, Queryable, Updateable):
15
16
  _resource: ClassVar = 'endpoints'
16
17
 
17
- url: HttpUrl = Field(..., description='HTTPS url to send webhooks')
18
+ url: HttpUrlString = Field(..., description='HTTPS url to send webhooks')
18
19
  secret: str = Field(
19
20
  ...,
20
21
  description='token to verify the webhook is sent by Cuenca '
@@ -25,7 +26,7 @@ class Endpoint(Creatable, Deactivable, Retrievable, Queryable, Updateable):
25
26
  description='Allows user to turn-off the endpoint without the '
26
27
  'need of deleting it',
27
28
  )
28
- events: List[WebhookEvent] = Field(
29
+ events: list[WebhookEvent] = Field(
29
30
  ...,
30
31
  description='list of enabled events. If None, all events will '
31
32
  'be enabled for this Endpoint',
@@ -55,7 +56,7 @@ class Endpoint(Creatable, Deactivable, Retrievable, Queryable, Updateable):
55
56
  def create(
56
57
  cls,
57
58
  url: HttpUrl,
58
- events: Optional[List[WebhookEvent]] = None,
59
+ events: Optional[list[WebhookEvent]] = None,
59
60
  *,
60
61
  session: Session = global_session,
61
62
  ) -> 'Endpoint':
@@ -69,14 +70,16 @@ class Endpoint(Creatable, Deactivable, Retrievable, Queryable, Updateable):
69
70
  :return: New active endpoint
70
71
  """
71
72
  req = EndpointRequest(url=url, events=events)
72
- return cast('Endpoint', cls._create(session=session, **req.dict()))
73
+ return cast(
74
+ 'Endpoint', cls._create(session=session, **req.model_dump())
75
+ )
73
76
 
74
77
  @classmethod
75
78
  def update(
76
79
  cls,
77
80
  endpoint_id: str,
78
81
  url: Optional[HttpUrl] = None,
79
- events: Optional[List[WebhookEvent]] = None,
82
+ events: Optional[list[WebhookEvent]] = None,
80
83
  is_enable: Optional[bool] = None,
81
84
  *,
82
85
  session: Session = global_session,
@@ -93,5 +96,5 @@ class Endpoint(Creatable, Deactivable, Retrievable, Queryable, Updateable):
93
96
  req = EndpointUpdateRequest(
94
97
  url=url, is_enable=is_enable, events=events
95
98
  )
96
- resp = cls._update(endpoint_id, session=session, **req.dict())
99
+ resp = cls._update(endpoint_id, session=session, **req.model_dump())
97
100
  return cast('Endpoint', resp)
@@ -1,4 +1,4 @@
1
- from typing import ClassVar, Dict, List, cast
1
+ from typing import ClassVar, cast
2
2
 
3
3
  from cuenca_validations.types import (
4
4
  BatchFileMetadata,
@@ -13,20 +13,20 @@ from .base import Creatable, Queryable
13
13
  class FileBatch(Creatable, Queryable):
14
14
  _resource: ClassVar = 'file_batches'
15
15
 
16
- received_files: List[BatchFileMetadata]
17
- uploaded_files: List[BatchFileMetadata]
16
+ received_files: list[BatchFileMetadata]
17
+ uploaded_files: list[BatchFileMetadata]
18
18
  user_id: str
19
19
 
20
20
  @classmethod
21
21
  def create(
22
22
  cls,
23
- files: List[Dict],
23
+ files: list[dict],
24
24
  user_id: str,
25
25
  *,
26
26
  session: Session = global_session,
27
27
  ) -> 'FileBatch':
28
28
  req = FileBatchUploadRequest(
29
- files=cast(List[FileRequest], files), user_id=user_id
29
+ files=cast(list[FileRequest], files), user_id=user_id
30
30
  )
31
31
  return cast(
32
32
  'FileBatch', cls._create(session=session, **req.model_dump())
cuenca/resources/files.py CHANGED
@@ -53,7 +53,7 @@ class File(Downloadable, Queryable, Uploadable):
53
53
  'File',
54
54
  cls._upload(
55
55
  session=session,
56
- **req.dict(),
56
+ **req.model_dump(),
57
57
  ),
58
58
  )
59
59
 
@@ -1,4 +1,4 @@
1
- from typing import ClassVar, List, Optional, cast
1
+ from typing import ClassVar, Optional, cast
2
2
 
3
3
  from cuenca_validations.types import KYCFile, KYCValidationRequest
4
4
  from pydantic import ConfigDict
@@ -12,7 +12,7 @@ class KYCValidation(Creatable, Retrievable, Queryable):
12
12
  platform_id: str
13
13
  attemps: Optional[int] = None
14
14
  verification_id: Optional[str] = None
15
- files_uri: Optional[List[str]] = None
15
+ files_uri: Optional[list[str]] = None
16
16
  model_config = ConfigDict(
17
17
  json_schema_extra={
18
18
  'example': {
@@ -31,7 +31,7 @@ class KYCValidation(Creatable, Retrievable, Queryable):
31
31
  cls,
32
32
  user_id: str,
33
33
  force: bool = False,
34
- documents: List[KYCFile] = [],
34
+ documents: list[KYCFile] = [],
35
35
  session: Session = global_session,
36
36
  ) -> 'KYCValidation':
37
37
  req = KYCValidationRequest(
@@ -40,5 +40,5 @@ class KYCValidation(Creatable, Retrievable, Queryable):
40
40
  documents=documents,
41
41
  )
42
42
  return cast(
43
- 'KYCValidation', cls._create(**req.dict(), session=session)
43
+ 'KYCValidation', cls._create(**req.model_dump(), session=session)
44
44
  )
@@ -49,4 +49,6 @@ class KYCVerification(Creatable, Retrievable, Updateable):
49
49
  curp: CurpField,
50
50
  ) -> 'KYCVerification':
51
51
  req = KYCVerificationUpdateRequest(curp=curp)
52
- return cast('KYCVerification', cls._update(id=kyc_id, **req.dict()))
52
+ return cast(
53
+ 'KYCVerification', cls._update(id=kyc_id, **req.model_dump())
54
+ )
@@ -37,4 +37,4 @@ class LimitedWallet(Wallet):
37
37
  allowed_curp=allowed_curp,
38
38
  allowed_rfc=allowed_rfc,
39
39
  )
40
- return cast('LimitedWallet', cls._create(**request.dict()))
40
+ return cast('LimitedWallet', cls._create(**request.model_dump()))
@@ -1,11 +1,10 @@
1
1
  import re
2
- from concurrent.futures import ThreadPoolExecutor
3
- from typing import Dict, List, cast
2
+ from typing import cast
4
3
 
5
4
  from .base import Retrievable
6
5
 
7
6
  ENDPOINT_RE = re.compile(r'.*/(?P<resource>[a-z_]+)/(?P<id>.+)$')
8
- RESOURCES: Dict[str, Retrievable] = {} # set in ./__init__.py after imports
7
+ RESOURCES: dict[str, Retrievable] = {} # set in ./__init__.py after imports
9
8
 
10
9
 
11
10
  def retrieve_uri(uri: str) -> Retrievable:
@@ -16,6 +15,12 @@ def retrieve_uri(uri: str) -> Retrievable:
16
15
  return cast(Retrievable, RESOURCES[resource].retrieve(id_))
17
16
 
18
17
 
19
- def retrieve_uris(uris: List[str]) -> List[Retrievable]:
20
- with ThreadPoolExecutor(max_workers=len(uris)) as executor:
21
- return [obj for obj in executor.map(retrieve_uri, uris)]
18
+ def retrieve_uris(uris: list[str]) -> list[Retrievable]:
19
+ # Changed the implementation to use a simple for loop instead of
20
+ # ThreadPoolExecutor. The list of URIs is small, so the performance
21
+ # difference is negligible. Additionally, using ThreadPoolExecutor
22
+ # caused issues with VCR tests, as the recordings were not retrieved
23
+ # in the correct order, leading to unexpected HTTP calls instead of
24
+ # using the mocked recordings.
25
+
26
+ return [retrieve_uri(uri) for uri in uris]
@@ -34,7 +34,7 @@ class Saving(Wallet, Updateable):
34
34
  goal_amount=goal_amount,
35
35
  goal_date=goal_date,
36
36
  )
37
- return cast('Saving', cls._create(**request.dict()))
37
+ return cast('Saving', cls._create(**request.model_dump()))
38
38
 
39
39
  @classmethod
40
40
  def update(
@@ -51,4 +51,6 @@ class Saving(Wallet, Updateable):
51
51
  goal_amount=goal_amount,
52
52
  goal_date=goal_date,
53
53
  )
54
- return cast('Saving', cls._update(id=saving_id, **request.dict()))
54
+ return cast(
55
+ 'Saving', cls._update(id=saving_id, **request.model_dump())
56
+ )
@@ -1,4 +1,4 @@
1
- from typing import ClassVar, List
1
+ from typing import ClassVar
2
2
 
3
3
  from cuenca_validations.types import ServiceProviderCategory
4
4
 
@@ -10,4 +10,4 @@ class ServiceProvider(Retrievable, Queryable):
10
10
 
11
11
  name: str
12
12
  provider_key: str
13
- categories: List[ServiceProviderCategory]
13
+ categories: list[ServiceProviderCategory]
@@ -1,8 +1,8 @@
1
1
  import datetime as dt
2
2
  from typing import ClassVar, Optional, cast
3
3
 
4
- from cuenca_validations.types import SessionRequest, SessionType
5
- from pydantic import AnyUrl, ConfigDict
4
+ from cuenca_validations.types import AnyUrlString, SessionRequest, SessionType
5
+ from pydantic import ConfigDict
6
6
 
7
7
  from .. import http
8
8
  from .base import Creatable, Queryable, Retrievable
@@ -16,8 +16,8 @@ class Session(Creatable, Retrievable, Queryable):
16
16
  user_id: str
17
17
  platform_id: str
18
18
  expires_at: dt.datetime
19
- success_url: Optional[AnyUrl] = None
20
- failure_url: Optional[AnyUrl] = None
19
+ success_url: Optional[AnyUrlString] = None
20
+ failure_url: Optional[AnyUrlString] = None
21
21
  type: Optional[SessionType] = None
22
22
  model_config = ConfigDict(
23
23
  json_schema_extra={
@@ -39,15 +39,17 @@ class Session(Creatable, Retrievable, Queryable):
39
39
  cls,
40
40
  user_id: str,
41
41
  type: SessionType,
42
- success_url=cast(Optional[AnyUrl], success_url),
43
- failure_url=cast(Optional[AnyUrl], failure_url),
42
+ success_url: Optional[str] = None,
43
+ failure_url: Optional[str] = None,
44
44
  *,
45
45
  session: http.Session = http.session,
46
46
  ) -> 'Session':
47
47
  req = SessionRequest(
48
48
  user_id=user_id,
49
49
  type=type,
50
- success_url=success_url,
51
- failure_url=failure_url,
50
+ success_url=success_url, # type: ignore
51
+ failure_url=failure_url, # type: ignore
52
+ )
53
+ return cast(
54
+ 'Session', cls._create(session=session, **req.model_dump())
52
55
  )
53
- return cast('Session', cls._create(session=session, **req.dict()))
@@ -1,5 +1,5 @@
1
1
  import datetime as dt
2
- from typing import ClassVar, List, Optional, cast
2
+ from typing import ClassVar, Optional, cast
3
3
 
4
4
  from clabe import Clabe
5
5
  from cuenca_validations.types import (
@@ -70,14 +70,14 @@ class Transfer(Transaction, Creatable):
70
70
  idempotency_key=idempotency_key,
71
71
  user_id=user_id,
72
72
  )
73
- return cast('Transfer', cls._create(**req.dict()))
73
+ return cast('Transfer', cls._create(**req.model_dump()))
74
74
 
75
75
  @classmethod
76
- def create_many(cls, requests: List[TransferRequest]) -> DictStrAny:
76
+ def create_many(cls, requests: list[TransferRequest]) -> DictStrAny:
77
77
  transfers: DictStrAny = dict(submitted=[], errors=[])
78
78
  for req in requests:
79
79
  try:
80
- transfer = cls._create(**req.dict())
80
+ transfer = cls._create(**req.model_dump())
81
81
  except (CuencaException, HTTPError) as e:
82
82
  transfers['errors'].append(dict(request=req, error=e))
83
83
  else:
@@ -26,7 +26,7 @@ class UserCredential(Creatable, Updateable):
26
26
  ) -> 'UserCredential':
27
27
  req = UserCredentialRequest(password=password, user_id=user_id)
28
28
  return cast(
29
- 'UserCredential', cls._create(**req.dict(), session=session)
29
+ 'UserCredential', cls._create(**req.model_dump(), session=session)
30
30
  )
31
31
 
32
32
  @classmethod
@@ -44,5 +44,5 @@ class UserCredential(Creatable, Updateable):
44
44
  )
45
45
  return cast(
46
46
  'UserCredential',
47
- cls._update(id=user_id, **req.dict(), session=session),
47
+ cls._update(id=user_id, **req.model_dump(), session=session),
48
48
  )
@@ -32,7 +32,9 @@ class UserLogin(Creatable):
32
32
  session: Session = global_session,
33
33
  ) -> 'UserLogin':
34
34
  req = UserLoginRequest(password=password, user_id=user_id)
35
- login = cast('UserLogin', cls._create(session=session, **req.dict()))
35
+ login = cast(
36
+ 'UserLogin', cls._create(session=session, **req.model_dump())
37
+ )
36
38
  if login.success:
37
39
  session.headers['X-Cuenca-LoginId'] = login.id
38
40
  return login
cuenca/resources/users.py CHANGED
@@ -1,5 +1,5 @@
1
1
  import datetime as dt
2
- from typing import ClassVar, List, Optional, cast
2
+ from typing import ClassVar, Optional, cast
3
3
 
4
4
  from clabe import Clabe
5
5
  from cuenca_validations.types import (
@@ -52,7 +52,7 @@ class User(Creatable, Retrievable, Updateable, Queryable):
52
52
  proof_of_life: Optional[KYCFile] = Field(
53
53
  None, description='Detail of selfie video validation'
54
54
  )
55
- beneficiaries: Optional[List[Beneficiary]] = Field(
55
+ beneficiaries: Optional[list[Beneficiary]] = Field(
56
56
  None, description='Beneficiaries of account in case of death'
57
57
  )
58
58
  platform_id: Optional[str] = None
@@ -140,7 +140,7 @@ class User(Creatable, Retrievable, Updateable, Queryable):
140
140
  email_address: Optional[str] = None,
141
141
  profession: Optional[str] = None,
142
142
  address: Optional[Address] = None,
143
- beneficiaries: Optional[List[Beneficiary]] = None,
143
+ beneficiaries: Optional[list[Beneficiary]] = None,
144
144
  govt_id: Optional[KYCFile] = None,
145
145
  proof_of_address: Optional[KYCFile] = None,
146
146
  proof_of_life: Optional[KYCFile] = None,
@@ -35,4 +35,4 @@ class WalletTransaction(Transaction, Creatable):
35
35
  transaction_type=transaction_type,
36
36
  amount=amount,
37
37
  )
38
- return cast('WalletTransaction', cls._create(**request.dict()))
38
+ return cast('WalletTransaction', cls._create(**request.model_dump()))
@@ -1,4 +1,4 @@
1
- from typing import Any, ClassVar, Dict
1
+ from typing import Any, ClassVar
2
2
 
3
3
  from cuenca_validations.types.enums import WebhookEvent
4
4
  from pydantic import Field
@@ -9,7 +9,7 @@ from .base import Queryable, Retrievable
9
9
  class Webhook(Retrievable, Queryable):
10
10
  _resource: ClassVar = 'webhooks'
11
11
 
12
- payload: Dict[str, Any] = Field(
12
+ payload: dict[str, Any] = Field(
13
13
  ..., description='object sent by the webhook'
14
14
  )
15
15
  event: WebhookEvent = Field(
cuenca/version.py CHANGED
@@ -1,3 +1,3 @@
1
- __version__ = '2.0.0.dev2'
1
+ __version__ = '2.0.0.dev4'
2
2
  CLIENT_VERSION = __version__
3
3
  API_VERSION = '2020-03-19'
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: cuenca
3
- Version: 2.0.0.dev2
3
+ Version: 2.0.0.dev4
4
4
  Summary: Cuenca API Client
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-python
6
6
  Author: Cuenca
@@ -16,8 +16,17 @@ Requires-Python: >=3.9
16
16
  Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
18
  Requires-Dist: requests>=2.32.3
19
- Requires-Dist: cuenca-validations==2.0.0.dev8
19
+ Requires-Dist: cuenca-validations==2.0.0.dev12
20
20
  Requires-Dist: pydantic-extra-types>=2.10.1
21
+ Dynamic: author
22
+ Dynamic: author-email
23
+ Dynamic: classifier
24
+ Dynamic: description
25
+ Dynamic: description-content-type
26
+ Dynamic: home-page
27
+ Dynamic: requires-dist
28
+ Dynamic: requires-python
29
+ Dynamic: summary
21
30
 
22
31
  # Cuenca – Python client library
23
32
 
@@ -1,55 +1,55 @@
1
1
  cuenca/__init__.py,sha256=vFLEaVgT93FvqGtuoGyMFd_mQLABRm6T7zIcTZSMKjc,1807
2
- cuenca/exc.py,sha256=_sghDbHx-9JKAF2d4GClEfqv8MfoWb9oQjK5uzIds_w,672
2
+ cuenca/exc.py,sha256=r_lL03-JS0AsXw71wuNbiwNYLHNDagM56tRxpYyK6Lw,601
3
3
  cuenca/jwt.py,sha256=plB2ttHPZnL0xq3gqubw_Jjtj1QYG2E5bk99N3cn5zg,1502
4
4
  cuenca/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- cuenca/version.py,sha256=PmFciMFo2CJhrcLb1zKLk-kG_OWkfckvys8ioLXCKNA,83
5
+ cuenca/version.py,sha256=dxKiyRP0ZG6SF9uTP9FWumTJBCMbMgPX3ZsElq2JC-A,83
6
6
  cuenca/http/__init__.py,sha256=V5TG6Ro9d3VY7umzcbtanmvHlGkv-k71H0tqrdMyH-s,49
7
7
  cuenca/http/client.py,sha256=psXJiSgd3SUSJ5jwvhdBWsVMNadenG353BNVXdh7HMY,4168
8
8
  cuenca/resources/__init__.py,sha256=pySyBur3jnWA5yfHFuVZfdnk6nROj3BsLRy7vVWXFoc,3019
9
9
  cuenca/resources/accounts.py,sha256=5yfNxAHpxWFosoR4WrPrDGpBCRkaQk98V-w0wCPPXqU,345
10
- cuenca/resources/api_keys.py,sha256=uLF6xVoXkG2JSYZtDKaqBo8-dmS9XEGnM51E5DkiCyE,2621
10
+ cuenca/resources/api_keys.py,sha256=N4Ci2XWvlWn9jyaGulPuDdZtFR5bMsz7fczlaqW6y0Y,2627
11
11
  cuenca/resources/arpc.py,sha256=VymgjCNvsKWcozwQ1an4OHMmuRslBoSdxYqjvw2VAi4,1791
12
12
  cuenca/resources/balance_entries.py,sha256=c2p9nXrKpMJ2xlQkTLP_ttycb1RitA979mP46mbZnEc,1073
13
- cuenca/resources/base.py,sha256=IdX5PpT6FpARE6hkcyca5rviVbvQTwF3T-uppg3cCeI,5785
13
+ cuenca/resources/base.py,sha256=P8papD4TscAf-v6sFnnzTMf-ZJLe7xIakgvqCvmN2Pk,5803
14
14
  cuenca/resources/bill_payments.py,sha256=spZSVCkLoJTOJIvfYim3R1JEUCvCKdRqLmr98M9y8oo,529
15
- cuenca/resources/card_activations.py,sha256=HUknScnIQLi0zqUHIPKppCg65QPFywHAHTiUQuimtb0,1336
16
- cuenca/resources/card_transactions.py,sha256=Fs1x5kq4WSlRj6lt2enUkWW8trN7VgwW_KE2tybj30o,1195
15
+ cuenca/resources/card_activations.py,sha256=rMfs9RPnxQbu79p82houpBLbChKCVKLQRT15C9238P4,1409
16
+ cuenca/resources/card_transactions.py,sha256=iCsAqLU9jnZmV5JM-wMzQlMVJo7HdBat6iQw9g7rFlg,1085
17
17
  cuenca/resources/card_validations.py,sha256=LyVpIkNVkAnfOUBJf7e39qCYu5tblB6F1FdYjCPy1MI,1956
18
- cuenca/resources/cards.py,sha256=HTqfuz8KN_nxkIG9zPkActh4P0U0-Pug_yAo8gnZPWo,3461
18
+ cuenca/resources/cards.py,sha256=nudY78QsNGJKqXgS4QOVFsu_uXxyQMOujgCArIQN3g8,3473
19
19
  cuenca/resources/cash_references.py,sha256=ZVN4ed8pRV3u0BshE3OPJB76FMfLKWHm1rwnk2KvbLc,195
20
20
  cuenca/resources/clabes.py,sha256=S6ExYCAULtzNWyvzK1FP-zcXQq-7D4DMNEVVdAJ9Pic,391
21
21
  cuenca/resources/commissions.py,sha256=Fz5kHq7FPJl8Z0qiu5_z-Ws2jEPqGi1x2OOwXCCM-Yw,513
22
22
  cuenca/resources/curp_validations.py,sha256=gGP0bCRGr7dxlQ-vGVb-dJILKanetfjF8dg-upWS96A,3634
23
23
  cuenca/resources/deposits.py,sha256=8FINQJ3c0Zg8FAq7e1JZu9i8G40fX-Kmawhl7Ouxpx4,566
24
- cuenca/resources/endpoints.py,sha256=rUd3E3yYyt3-dNZxsO725eVoLaqV_zhYgL7VPPI_fXo,3178
25
- cuenca/resources/file_batches.py,sha256=FsX87tdLCu83zSRhLuMBC8XzodHZQKvz-WbKg459aYs,829
26
- cuenca/resources/files.py,sha256=WLrEZcgrlm02mpxyBrhEKcThbubVGYM5kS0CQe3xODk,1942
24
+ cuenca/resources/endpoints.py,sha256=SNlVL_41Mb3O4bkkgRpiTyn5bABdKUx1ydV9dfA9Yjo,3263
25
+ cuenca/resources/file_batches.py,sha256=-lTG1zfLMEZBaL75COlW-yL6zVvK2LMp6KzBuKApY7U,817
26
+ cuenca/resources/files.py,sha256=SLPFVaqbQn3bF2p05FU3yDojyagxCCX6CvqHumeoorI,1948
27
27
  cuenca/resources/identities.py,sha256=wW8jbOQyWipmTwPgJ2ZEQVdOvNv3Y6dcuLHbMyyqjRg,1102
28
28
  cuenca/resources/identity_events.py,sha256=K1G6IEGlw6n482nZhBo_CJNBdpKFCO6duMQr5y9k4x8,374
29
- cuenca/resources/kyc_validations.py,sha256=9lnaabCL8qgwGIH2c_c7LYgzg7ihRw1XTaJHz3cDhew,1372
30
- cuenca/resources/kyc_verifications.py,sha256=B5bnk2g6iNm88QvXS4HP4IYEq5TH4CXfD8KUw-yD7s0,1610
31
- cuenca/resources/limited_wallets.py,sha256=Spc9dYgHDxNQe_t0Z0Vqf4VPJ2tlkL2F3ZPp3kiWZ00,1070
29
+ cuenca/resources/kyc_validations.py,sha256=HxafdK3atx8YOXkVaX_mAVwveoaJ5J0iTrIe6TMgpfI,1372
30
+ cuenca/resources/kyc_verifications.py,sha256=vy8kB5hEAlOJeecb8NSlf0eS-v905tJauaAKI2yzDto,1638
31
+ cuenca/resources/limited_wallets.py,sha256=m4uFRY4y_CetCbk1R49Rq2lAx1BvDqakAkFMWTS7AYs,1076
32
32
  cuenca/resources/login_tokens.py,sha256=aWGoiM80NIvMYdEhHvX0JqFzqhfWXMfQJZFGNbugluk,693
33
33
  cuenca/resources/otps.py,sha256=buqQp5l6rW23vmUdhmP-ntwYKK-uSR7bw3WVaYUhn4E,636
34
34
  cuenca/resources/platforms.py,sha256=w-pOGZm4gTLf-exoF2kAOVidUy1Fgf_ZT-8WuP3T7Fs,2616
35
35
  cuenca/resources/questionnaires.py,sha256=csrVXIuWMmL140EyG5Xlukgangf7tytXEB3JepeE0LA,1094
36
- cuenca/resources/resources.py,sha256=g6ssYfGTALzP-ZDBTDedJw1GeAnSTiWi78w9Hg_zeAg,706
37
- cuenca/resources/savings.py,sha256=r1UimpZvlDQRxfwNuvNrsr8h5cNGoEmgXLPny5ixYlM,1447
38
- cuenca/resources/service_providers.py,sha256=aOulwTAvCLyzojBlhO7EQaPtlM9YPRYAAUXLjuGZwAk,316
39
- cuenca/resources/sessions.py,sha256=bmiMh2GF8UNj-Ezu4Cq6T1zNxHg0ax3ZNPBF5ukrPjc,1646
36
+ cuenca/resources/resources.py,sha256=nlsqp6a2DrhBCzgi7_flAvrfZScKfClHqEYKbV1FdHg,955
37
+ cuenca/resources/savings.py,sha256=iGREHJ58Ak0O49P9Clw_jCPUbJc3TUW9P8E2JB_Gg3c,1481
38
+ cuenca/resources/service_providers.py,sha256=x-FNcyiUkdUsNCGudyLGYDbRkD2jPj8-T8U3IumxTVQ,310
39
+ cuenca/resources/sessions.py,sha256=TTkikbplO8H__sHDgCZEah5q_tkn76tjh3Sfyny5j_8,1696
40
40
  cuenca/resources/statements.py,sha256=PqMvhoE9cvBneXjaS7w4JnTzYdDakkCkbdNYrd7b8LI,282
41
- cuenca/resources/transfers.py,sha256=nfSte0YzA1vxh6oAH8wUnjGnzc-iSTT66BJv8RA1IOQ,3270
42
- cuenca/resources/user_credentials.py,sha256=Z0ppaWzxArMl7T5_FejaEPKgXhpsHUVc8EC2gMwtEbY,1264
41
+ cuenca/resources/transfers.py,sha256=bl2GWb9mkrCARe8-WIm00pZafcrVqbf3_C0cPlVU89Q,3276
42
+ cuenca/resources/user_credentials.py,sha256=wnAGaB98h5nGdyMFHJYvxAQer6sleO2YPyYC--dE9V8,1276
43
43
  cuenca/resources/user_events.py,sha256=CGhTTtWL9YvI2y77jk2KZaJ8cUQREhGrNG1fyAVrAPk,727
44
44
  cuenca/resources/user_lists_validation.py,sha256=Flvyyono3TZibrlPHqa_43d1HHH2U_i_jOW-a8pf1W0,1397
45
- cuenca/resources/user_logins.py,sha256=kwEtls5QYRf3GNTPgYQFkrZ-xjeFX9DgkiLW1VmIu0g,1429
46
- cuenca/resources/users.py,sha256=wEYibaC56KpvUB8RJsMzv8tXiyEXPkzNr-7EATE4kWY,6418
45
+ cuenca/resources/user_logins.py,sha256=lbcAIVO26X26B4RSvjrUrO5KGPwGmx9B8oBj5zKZFq4,1457
46
+ cuenca/resources/users.py,sha256=LJvRD7dLE2S1ZBqV_ti6nW4MSDCNfuio9UbmI4sYE6k,6412
47
47
  cuenca/resources/verifications.py,sha256=OJ8g1Q0tpdc8IFPyMSCnQAEaoSSRuGCFdATss-w0wrM,1793
48
- cuenca/resources/wallet_transactions.py,sha256=hzGg1NZjxv6PiFN-GF2Z2eai07TQHtkoomMgHt5D1tw,1028
49
- cuenca/resources/webhooks.py,sha256=mYld4rIWMjG2ezmjLxT1rky4eG1dtjm21LcmBmJnBwQ,436
48
+ cuenca/resources/wallet_transactions.py,sha256=BGlCWXjF3DmP8VWVDVpYfaJ1FJ3YNbXDd9tVyw7wuhw,1034
49
+ cuenca/resources/webhooks.py,sha256=7IBFi8Gw4tlTCTDKOBX6R-3WCmaZ--sGAHUGkj0fBhA,430
50
50
  cuenca/resources/whatsapp_transfers.py,sha256=YSL606FBOMGKjhyKK5TiF0di96zdDKoiVtjiz_Zl_ZI,902
51
51
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
- tests/conftest.py,sha256=CASYYH0rKWkLLdO9SQS4A0H62oNRKqH29KgvUl62Gmg,1793
52
+ tests/conftest.py,sha256=xrQtFNkqWG4KG35HorTD5N3-QUL98CAXqmLxu93haKI,1769
53
53
  tests/test_cuenca.py,sha256=aeha_utz9YiHQg6eJK2PB7g66pVUYFi9U6pYMGXDKvk,1628
54
54
  tests/test_jwt.py,sha256=dY5m4LigM-inqePyYOmdIHoOBmGx0WcfxlKnJEdsF70,1205
55
55
  tests/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -61,16 +61,16 @@ tests/resources/test_api_keys.py,sha256=Cui7nmJAqFL6yScuObj5Fpjt_ecGnpb29JIdPhbd
61
61
  tests/resources/test_arpc.py,sha256=4lRd8fO5vf8rvoh1V8Rw9qjw__fdZCeIh4IEYlU0k5o,489
62
62
  tests/resources/test_balance_entries.py,sha256=myoHpr3XSef_smUijS60EXW7YHcmr6m9b6B_BVW-JtY,643
63
63
  tests/resources/test_bill_payments.py,sha256=TnvrTPtCPOvKPGC5G1zI0fng3HXyTdKegCOvoYDHc9s,340
64
- tests/resources/test_card_activations.py,sha256=MbIIx42DYYOeCUuUBbnpijZMOQvcvDtp_snkgd0B46w,1036
64
+ tests/resources/test_card_activations.py,sha256=_gUgKBo-I8qwUlu-Pme1t7_cLBL6wnPHKOFVBGco51U,1072
65
65
  tests/resources/test_card_transactions.py,sha256=ZngQkCJyn3KNk7raA91N9n58WiPRQ6HNnNwWW7h4WyQ,1161
66
66
  tests/resources/test_card_validations.py,sha256=xc6II9fUnISFbchAq-4gjxzM6giMZ4hEIPBuKqpc2hs,838
67
67
  tests/resources/test_cards.py,sha256=yoQmT7rf8J6CykQ4HPLabiSQOIfWcYFBXjmTQVbmymk,3298
68
68
  tests/resources/test_cash_references.py,sha256=mp5BXY5SWH0eJDMGDubLt4yVCBoiq9hU5LLHgMFPrwc,391
69
69
  tests/resources/test_clabes.py,sha256=iUO09_qdQA5B6DU7235qniC8TEdhWAMYXjkTFwRhSNI,458
70
- tests/resources/test_commissions.py,sha256=_dnSJhojBwPdK4K344IFiBulJyyhtKaVVKKx02R3OUs,1027
70
+ tests/resources/test_commissions.py,sha256=cdRP9LHPUlX-OB_AMDrYux9G_2xYKIUfKqirGVxeygM,1035
71
71
  tests/resources/test_curp_validations.py,sha256=5GvPrgQGfzD8JCtCdQDz4023Q2caonLbirn7_gZMXow,530
72
72
  tests/resources/test_deposits.py,sha256=LQxg3PYQsyl2f8naPUAKvXnAanZszFlGFsa4WDRvouc,262
73
- tests/resources/test_endpoints.py,sha256=0rIGeHTiM55HtHVOBG82x5w3Xqj4N7TxFQ2DS70C_KA,1497
73
+ tests/resources/test_endpoints.py,sha256=JMX7wBSMw9gZmldxIbZMATQLZtwO1d0wIiBBc3YB9ZQ,1492
74
74
  tests/resources/test_file_batches.py,sha256=xcVeWZns4j3_RPZEv8W1Ws4-bcaxOXTQzFyUpKGVmxM,981
75
75
  tests/resources/test_files.py,sha256=2VSlvYnGHrw--mYNvA6hlpEw-olbW_Hlq2d4vdn8v7M,961
76
76
  tests/resources/test_identities.py,sha256=0osumiLrzKkGG4XLlL4nIdSp_nGutHaPf55w_IVREps,454
@@ -79,13 +79,13 @@ tests/resources/test_kyc_validations.py,sha256=TEyS6encW-InRpcAR4nDCfmkqqnn8yMC9
79
79
  tests/resources/test_kyc_verifications.py,sha256=Y-ZU61o18I_3NFqMN2w4WGZTzwsIhULAtESqIXiizUY,634
80
80
  tests/resources/test_limited_wallets.py,sha256=c0zDDOip3lJk8chbcGr_nWCdkO9yuL_HbD1IikR5jH4,527
81
81
  tests/resources/test_login_tokens.py,sha256=kn0gXFOanIXjgKjbeOzfNyKsGAUkc2iKnuVmzIRaMD8,572
82
- tests/resources/test_otps.py,sha256=kr-NCK8V8EwI8iku06hEDW1y0BVSW-Q3FRfnn9u1-Jo,612
82
+ tests/resources/test_otps.py,sha256=IpCczDNRL_WaWwc1rYbSRmtWMR7GMa-Pfbq2TZcZQDw,616
83
83
  tests/resources/test_platforms.py,sha256=5b6-XC3uAz8GARFkFoanH62jxE1uJIMXcdpeUhmI8Kg,211
84
84
  tests/resources/test_questionnaires.py,sha256=Sl8YHXgL42xiijUncycOUzGu5MtI3jEnhADS8Nol6N8,321
85
85
  tests/resources/test_resources.py,sha256=rTcfjZOxujOJXjfqvOV6TPpYl8lae4bgbZj4jTAWm_o,170
86
86
  tests/resources/test_savings.py,sha256=2qlGo9Qy_bqwYfMmjf9OsPIPVWRb6zlkzaMgg5RWElk,1127
87
87
  tests/resources/test_service_providers.py,sha256=yhjTvRdVaTpwEHLVtvX8OD6bMef2W9wUI8MRwLY-i64,563
88
- tests/resources/test_sessions.py,sha256=Ve7tfjPVrUIZvja4UPiC7f-aKKFF870MhsYt8544fzM,1412
88
+ tests/resources/test_sessions.py,sha256=kLmDQKNqQ-sStQsc3L8OIcvPZMAODdWKkjK_mndYRpc,1377
89
89
  tests/resources/test_statements.py,sha256=e9S_yn5kD6M8IpfpRmIOJ0Y6aggBkYWQxynY6P7Q7nI,370
90
90
  tests/resources/test_transfers.py,sha256=bW3igYOdYPDiZtLr8WVIYwfP-dV4sdJ9pbaXFps2ac8,4161
91
91
  tests/resources/test_user_credentials.py,sha256=WbK20aprlT3P_IEOwplvhIYnLfTgGhK3Q3Tu6Tf129c,809
@@ -97,8 +97,8 @@ tests/resources/test_verifications.py,sha256=yyL-bdryQU3MvqnmAgnnzGG9t7UTxWwPiVu
97
97
  tests/resources/test_wallet_transactions.py,sha256=_L2hjPHT4FwwhxksUoaoVHwFFYOGWfF4ScCbk0kb7Hw,3945
98
98
  tests/resources/test_webhooks.py,sha256=nYCqAnlNJcMJKRHhgoHOWTQnFLWQHHvFyY8GVCxGTD8,328
99
99
  tests/resources/test_whatsapp_transfers.py,sha256=4Dmrsbytx7LRrLQo9M8TAL7cGKJufPStkp51UdRCnYU,1030
100
- cuenca-2.0.0.dev2.dist-info/LICENSE,sha256=aWv5PmUiAcNENEAdghcVQSeU56pXJHWexJYgklK9XLg,1063
101
- cuenca-2.0.0.dev2.dist-info/METADATA,sha256=kb1WPqKZ6d29XHKsTjTaIJtiBeK2kcc8MyAHgwKfULE,4774
102
- cuenca-2.0.0.dev2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
103
- cuenca-2.0.0.dev2.dist-info/top_level.txt,sha256=5h3K7XJTmJniDloPq4sIJHni_xLw-Uoc6ZJ5mcw_lZY,13
104
- cuenca-2.0.0.dev2.dist-info/RECORD,,
100
+ cuenca-2.0.0.dev4.dist-info/LICENSE,sha256=aWv5PmUiAcNENEAdghcVQSeU56pXJHWexJYgklK9XLg,1063
101
+ cuenca-2.0.0.dev4.dist-info/METADATA,sha256=IThOyUkBWHEQdmxuWJrmOQ5wnCgPDUdyqEDSpZ1-e1c,4972
102
+ cuenca-2.0.0.dev4.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
103
+ cuenca-2.0.0.dev4.dist-info/top_level.txt,sha256=5h3K7XJTmJniDloPq4sIJHni_xLw-Uoc6ZJ5mcw_lZY,13
104
+ cuenca-2.0.0.dev4.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
tests/conftest.py CHANGED
@@ -1,6 +1,5 @@
1
1
  import datetime as dt
2
2
  from io import BytesIO
3
- from typing import Dict
4
3
 
5
4
  import pytest
6
5
  from cuenca_validations.types import Country, Gender, State
@@ -31,7 +30,7 @@ def transfer():
31
30
 
32
31
 
33
32
  @pytest.fixture
34
- def curp_validation_request() -> Dict:
33
+ def curp_validation_request() -> dict:
35
34
  curp_validation = dict(
36
35
  names='José',
37
36
  first_surname='López',
@@ -45,7 +44,7 @@ def curp_validation_request() -> Dict:
45
44
 
46
45
 
47
46
  @pytest.fixture
48
- def user_request() -> Dict:
47
+ def user_request() -> dict:
49
48
  user_dict = dict(
50
49
  curp='LOHJ660606HDFPRS02',
51
50
  phone_number='+525511223344',
@@ -64,7 +63,7 @@ def user_request() -> Dict:
64
63
 
65
64
 
66
65
  @pytest.fixture
67
- def user_lists_request() -> Dict:
66
+ def user_lists_request() -> dict:
68
67
  user_dict = dict(
69
68
  curp='LOHJ660606HDFPRS02',
70
69
  names='Alejandro',
@@ -8,17 +8,17 @@ from cuenca.resources import CardActivation
8
8
  @pytest.mark.vcr
9
9
  def test_card_activation():
10
10
  values = dict(
11
- number='4122943400023502',
11
+ number='5448750001621241',
12
12
  exp_month=11,
13
13
  exp_year=24,
14
- cvv2='123',
14
+ cvv2='111',
15
15
  )
16
16
  card_activation = CardActivation.create(**values)
17
17
  assert card_activation.success
18
- assert card_activation.user_id == 'US1237'
18
+ assert card_activation.user_id == 'US1w9BJ0DZ9kSdac39ur14Nf'
19
19
  card = card_activation.card
20
20
  assert all(getattr(card, key) == value for key, value in values.items())
21
- assert card.user_id == 'US1237'
21
+ assert card.user_id == 'US1w9BJ0DZ9kSdac39ur14Nf'
22
22
  assert card.status is CardStatus.active
23
23
 
24
24
 
@@ -17,7 +17,7 @@ def test_commission_retrieve_with_cash_deposit():
17
17
  assert commission.id == id_commission
18
18
  related_transaction = commission.related_transaction
19
19
  assert related_transaction
20
- assert type(related_transaction) == Deposit
20
+ assert isinstance(related_transaction, Deposit)
21
21
  assert related_transaction.network == 'cash'
22
22
 
23
23
 
@@ -28,5 +28,5 @@ def test_commission_retrieve_with_cash_transfer():
28
28
  assert commission.id == id_commission
29
29
  related_transaction = commission.related_transaction
30
30
  assert related_transaction
31
- assert type(related_transaction) == Transfer
31
+ assert isinstance(related_transaction, Transfer)
32
32
  assert related_transaction.network == 'spei'
@@ -43,7 +43,7 @@ def test_endpoint_update():
43
43
  )
44
44
  assert endpoint.id == id_endpoint
45
45
  assert len(endpoint.events) == 2
46
- assert str(endpoint.url) == 'https://url.io/'
46
+ assert endpoint.url == 'https://url.io/'
47
47
  assert not endpoint.is_enable
48
48
  assert endpoint.is_active
49
49
 
@@ -25,4 +25,4 @@ def test_otps(session):
25
25
  session.configure(login_token=login_token.id)
26
26
  otp = Otp.create()
27
27
  assert otp
28
- assert type(otp.secret) == str
28
+ assert isinstance(otp.secret, str)
@@ -1,5 +1,3 @@
1
- from typing import Dict
2
-
3
1
  import pytest
4
2
  from cuenca_validations.types import SessionType
5
3
  from pydantic import ValidationError
@@ -9,7 +7,7 @@ from cuenca.resources import CurpValidation, Session, User
9
7
 
10
8
 
11
9
  @pytest.mark.vcr
12
- def test_session_create(curp_validation_request: Dict, user_request: Dict):
10
+ def test_session_create(curp_validation_request: dict, user_request: dict):
13
11
  curp_valdation = CurpValidation.create(**curp_validation_request)
14
12
  user_request['curp'] = curp_valdation.validated_curp
15
13
  user = User.create(**user_request)
@@ -34,8 +32,8 @@ def test_session_create(curp_validation_request: Dict, user_request: Dict):
34
32
 
35
33
  assert user_session.user_id == user.id
36
34
  assert user_session.type == SessionType.registration
37
- assert str(user_session.success_url) == success_url
38
- assert str(user_session.failure_url) == failure_url
35
+ assert user_session.success_url == success_url
36
+ assert user_session.failure_url == failure_url
39
37
 
40
38
  ephimeral_cuenca_session = cuenca.http.Session()
41
39
  ephimeral_cuenca_session.configure(session_token=user_session.id)