cuenca 0.15.10.dev0__tar.gz → 0.15.11__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 (107) hide show
  1. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/PKG-INFO +4 -1
  2. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/__init__.py +2 -0
  3. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/http/client.py +17 -28
  4. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/__init__.py +3 -0
  5. cuenca-0.15.11/cuenca/resources/questionnaires.py +43 -0
  6. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/version.py +1 -1
  7. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca.egg-info/PKG-INFO +4 -1
  8. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca.egg-info/SOURCES.txt +2 -0
  9. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/http/test_client.py +2 -13
  10. cuenca-0.15.11/tests/resources/test_questionnaires.py +16 -0
  11. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_user_lists_validation.py +1 -1
  12. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/LICENSE +0 -0
  13. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/README.md +0 -0
  14. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/exc.py +0 -0
  15. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/http/__init__.py +0 -0
  16. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/jwt.py +0 -0
  17. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/py.typed +0 -0
  18. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/accounts.py +0 -0
  19. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/api_keys.py +0 -0
  20. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/arpc.py +0 -0
  21. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/balance_entries.py +0 -0
  22. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/base.py +0 -0
  23. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/bill_payments.py +0 -0
  24. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/card_activations.py +0 -0
  25. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/card_transactions.py +0 -0
  26. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/card_validations.py +0 -0
  27. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/cards.py +0 -0
  28. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/cash_references.py +0 -0
  29. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/clabes.py +0 -0
  30. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/commissions.py +0 -0
  31. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/curp_validations.py +0 -0
  32. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/deposits.py +0 -0
  33. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/endpoints.py +0 -0
  34. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/file_batches.py +0 -0
  35. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/files.py +0 -0
  36. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/identities.py +0 -0
  37. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/identity_events.py +0 -0
  38. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/kyc_validations.py +0 -0
  39. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/kyc_verifications.py +0 -0
  40. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/limited_wallets.py +0 -0
  41. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/login_tokens.py +0 -0
  42. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/platforms.py +0 -0
  43. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/resources.py +0 -0
  44. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/savings.py +0 -0
  45. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/service_providers.py +0 -0
  46. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/sessions.py +0 -0
  47. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/statements.py +0 -0
  48. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/transfers.py +0 -0
  49. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/user_credentials.py +0 -0
  50. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/user_events.py +0 -0
  51. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/user_lists_validation.py +0 -0
  52. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/user_logins.py +0 -0
  53. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/users.py +0 -0
  54. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/verifications.py +0 -0
  55. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/wallet_transactions.py +0 -0
  56. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/webhooks.py +0 -0
  57. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca/resources/whatsapp_transfers.py +0 -0
  58. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca.egg-info/dependency_links.txt +0 -0
  59. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca.egg-info/requires.txt +0 -0
  60. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/cuenca.egg-info/top_level.txt +0 -0
  61. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/setup.cfg +0 -0
  62. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/setup.py +0 -0
  63. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/__init__.py +0 -0
  64. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/conftest.py +0 -0
  65. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/http/__init__.py +0 -0
  66. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/http/conftest.py +0 -0
  67. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/__init__.py +0 -0
  68. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_accounts.py +0 -0
  69. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_api_keys.py +0 -0
  70. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_arpc.py +0 -0
  71. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_balance_entries.py +0 -0
  72. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_bill_payments.py +0 -0
  73. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_card_activations.py +0 -0
  74. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_card_transactions.py +0 -0
  75. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_card_validations.py +0 -0
  76. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_cards.py +0 -0
  77. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_cash_references.py +0 -0
  78. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_clabes.py +0 -0
  79. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_commissions.py +0 -0
  80. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_curp_validations.py +0 -0
  81. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_deposits.py +0 -0
  82. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_endpoints.py +0 -0
  83. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_file_batches.py +0 -0
  84. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_files.py +0 -0
  85. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_identities.py +0 -0
  86. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_identity_events.py +0 -0
  87. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_kyc_validations.py +0 -0
  88. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_kyc_verifications.py +0 -0
  89. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_limited_wallets.py +0 -0
  90. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_login_tokens.py +0 -0
  91. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_platforms.py +0 -0
  92. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_resources.py +0 -0
  93. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_savings.py +0 -0
  94. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_service_providers.py +0 -0
  95. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_sessions.py +0 -0
  96. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_statements.py +0 -0
  97. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_transfers.py +0 -0
  98. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_user_credentials.py +0 -0
  99. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_user_events.py +0 -0
  100. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_user_logins.py +0 -0
  101. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_users.py +0 -0
  102. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_verifications.py +0 -0
  103. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_wallet_transactions.py +0 -0
  104. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_webhooks.py +0 -0
  105. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/resources/test_whatsapp_transfers.py +0 -0
  106. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/test_cuenca.py +0 -0
  107. {cuenca-0.15.10.dev0 → cuenca-0.15.11}/tests/test_jwt.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cuenca
3
- Version: 0.15.10.dev0
3
+ Version: 0.15.11
4
4
  Summary: Cuenca API Client
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-python
6
6
  Author: Cuenca
@@ -14,6 +14,9 @@ Classifier: Operating System :: OS Independent
14
14
  Requires-Python: >=3.6
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
+ Requires-Dist: requests<28,>=2.24
18
+ Requires-Dist: dataclasses>=0.7; python_version < "3.7"
19
+ Requires-Dist: cuenca-validations<0.12.0,>=0.11.3
17
20
 
18
21
  # Cuenca – Python client library
19
22
 
@@ -24,6 +24,7 @@ __all__ = [
24
24
  'LimitedWallet',
25
25
  'LoginToken',
26
26
  'Platform',
27
+ 'Questionnaires',
27
28
  'Saving',
28
29
  'ServiceProvider',
29
30
  'Session',
@@ -70,6 +71,7 @@ from .resources import (
70
71
  LimitedWallet,
71
72
  LoginToken,
72
73
  Platform,
74
+ Questionnaires,
73
75
  Saving,
74
76
  ServiceProvider,
75
77
  Session,
@@ -12,7 +12,6 @@ from cuenca_validations.typing import (
12
12
  OptionalDict,
13
13
  )
14
14
  from requests import Response
15
- from requests.adapters import HTTPAdapter, Retry
16
15
 
17
16
  from ..exc import CuencaResponseException
18
17
  from ..jwt import Jwt
@@ -28,29 +27,17 @@ class Session:
28
27
  headers: DictStrAny = {}
29
28
  basic_auth: Tuple[str, str]
30
29
  jwt_token: Optional[Jwt] = None
31
- session: requests.Session
32
- timeout: int = 30
33
- retries: int = 3
34
- backoff_factor: float = 0.4
35
30
 
36
31
  def __init__(self):
37
- self.session = requests.Session()
38
32
  self.headers = {
39
33
  'X-Cuenca-Api-Version': API_VERSION,
40
34
  'User-Agent': f'cuenca-python/{CLIENT_VERSION}',
41
35
  }
36
+
42
37
  # basic auth
43
38
  api_key = os.getenv('CUENCA_API_KEY', '')
44
39
  api_secret = os.getenv('CUENCA_API_SECRET', '')
45
40
  self.basic_auth = (api_key, api_secret)
46
- retry = Retry(
47
- total=self.retries,
48
- backoff_factor=self.backoff_factor,
49
- read=self.retries,
50
- )
51
- adapter = HTTPAdapter(max_retries=retry)
52
- self.session.mount("https://", adapter)
53
- print('Retry adapter mounted')
54
41
 
55
42
  @property
56
43
  def auth(self) -> Optional[Tuple[str, str]]:
@@ -115,20 +102,22 @@ class Session:
115
102
  data: OptionalDict = None,
116
103
  **kwargs,
117
104
  ) -> bytes:
118
- if self.jwt_token:
119
- if self.jwt_token.is_expired:
120
- self.jwt_token = Jwt.create(self)
121
- self.session.headers['X-Cuenca-Token'] = self.jwt_token.token
122
-
123
- resp = self.session.request(
124
- method=method,
125
- url='https://' + self.host + urljoin('/', endpoint),
126
- auth=self.auth,
127
- json=json.loads(JSONEncoder().encode(data)),
128
- params=params,
129
- timeout=self.timeout,
130
- **kwargs,
131
- )
105
+ resp = None
106
+ with requests.Session() as session:
107
+ session.headers = self.headers # type: ignore
108
+ if self.jwt_token:
109
+ if self.jwt_token.is_expired:
110
+ self.jwt_token = Jwt.create(self)
111
+ self.headers['X-Cuenca-Token'] = self.jwt_token.token
112
+ session.headers = self.headers # type: ignore
113
+ resp = session.request( # type: ignore
114
+ method=method,
115
+ url='https://' + self.host + urljoin('/', endpoint),
116
+ auth=self.auth,
117
+ json=json.loads(JSONEncoder().encode(data)),
118
+ params=params,
119
+ **kwargs,
120
+ )
132
121
  self._check_response(resp)
133
122
  return resp.content
134
123
 
@@ -23,6 +23,7 @@ __all__ = [
23
23
  'LimitedWallet',
24
24
  'LoginToken',
25
25
  'Platform',
26
+ 'Questionnaires',
26
27
  'Saving',
27
28
  'ServiceProvider',
28
29
  'Session',
@@ -62,6 +63,7 @@ from .kyc_verifications import KYCVerification
62
63
  from .limited_wallets import LimitedWallet
63
64
  from .login_tokens import LoginToken
64
65
  from .platforms import Platform
66
+ from .questionnaires import Questionnaires
65
67
  from .resources import RESOURCES
66
68
  from .savings import Saving
67
69
  from .service_providers import ServiceProvider
@@ -103,6 +105,7 @@ resource_classes = [
103
105
  KYCVerification,
104
106
  LimitedWallet,
105
107
  LoginToken,
108
+ Questionnaires,
106
109
  Saving,
107
110
  Session,
108
111
  ServiceProvider,
@@ -0,0 +1,43 @@
1
+ import datetime as dt
2
+ from typing import ClassVar, cast
3
+
4
+ from cuenca_validations.types import QuestionnairesRequest
5
+
6
+ from ..http import Session, session as global_session
7
+ from .base import Creatable, Retrievable
8
+
9
+
10
+ class Questionnaires(Creatable, Retrievable):
11
+ _resource: ClassVar = 'questionnaires'
12
+
13
+ created_at: dt.datetime
14
+ token: str
15
+ form_id: str
16
+ user_id: str
17
+
18
+ class Config:
19
+ schema_extra = {
20
+ 'example': {
21
+ 'user_id': 'US234i23jh23h4h23',
22
+ 'token': '3223j23ij23ij3',
23
+ 'alert_id': 'ALewifjwiejf',
24
+ }
25
+ }
26
+
27
+ @classmethod
28
+ def create(
29
+ cls,
30
+ user_id: str,
31
+ token: str,
32
+ form_id: str,
33
+ *,
34
+ session: Session = global_session,
35
+ ) -> 'Questionnaires':
36
+ req = QuestionnairesRequest(
37
+ user_id=user_id,
38
+ token=token,
39
+ form_id=form_id,
40
+ )
41
+ return cast(
42
+ 'Questionnaires', cls._create(session=session, **req.dict())
43
+ )
@@ -1,3 +1,3 @@
1
- __version__ = '0.15.10.dev0'
1
+ __version__ = '0.15.11'
2
2
  CLIENT_VERSION = __version__
3
3
  API_VERSION = '2020-03-19'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cuenca
3
- Version: 0.15.10.dev0
3
+ Version: 0.15.11
4
4
  Summary: Cuenca API Client
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-python
6
6
  Author: Cuenca
@@ -14,6 +14,9 @@ Classifier: Operating System :: OS Independent
14
14
  Requires-Python: >=3.6
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
+ Requires-Dist: requests<28,>=2.24
18
+ Requires-Dist: dataclasses>=0.7; python_version < "3.7"
19
+ Requires-Dist: cuenca-validations<0.12.0,>=0.11.3
17
20
 
18
21
  # Cuenca – Python client library
19
22
 
@@ -40,6 +40,7 @@ cuenca/resources/kyc_verifications.py
40
40
  cuenca/resources/limited_wallets.py
41
41
  cuenca/resources/login_tokens.py
42
42
  cuenca/resources/platforms.py
43
+ cuenca/resources/questionnaires.py
43
44
  cuenca/resources/resources.py
44
45
  cuenca/resources/savings.py
45
46
  cuenca/resources/service_providers.py
@@ -87,6 +88,7 @@ tests/resources/test_kyc_verifications.py
87
88
  tests/resources/test_limited_wallets.py
88
89
  tests/resources/test_login_tokens.py
89
90
  tests/resources/test_platforms.py
91
+ tests/resources/test_questionnaires.py
90
92
  tests/resources/test_resources.py
91
93
  tests/resources/test_savings.py
92
94
  tests/resources/test_service_providers.py
@@ -1,6 +1,6 @@
1
1
  import datetime as dt
2
- from unittest.mock import patch, Mock
3
- from requests.exceptions import Timeout
2
+ from unittest.mock import patch
3
+
4
4
  import pytest
5
5
  from cuenca_validations.errors import (
6
6
  NoPasswordFoundError,
@@ -90,14 +90,3 @@ def test_no_password():
90
90
  def test_no_session():
91
91
  with pytest.raises(UserNotLoggedInError):
92
92
  Transfer.count()
93
-
94
-
95
- def test_timeout_raises():
96
- session = Session()
97
- session.configure(
98
- api_key='USER_API_KEY', api_secret='USER_SECRET', sandbox=True
99
- )
100
- with patch('requests.Session.request', side_effect=Timeout()) as mock_timeout:
101
- with pytest.raises(Timeout):
102
- Card.first(user_id='USER_ID', session=session)
103
- assert mock_timeout.call_count == 3
@@ -0,0 +1,16 @@
1
+ import pytest
2
+
3
+ from cuenca import Questionnaires
4
+
5
+
6
+ @pytest.mark.vcr
7
+ def test_create_questionnaire():
8
+ qn = Questionnaires.create(
9
+ user_id='US2aaB809x842cq8PxhhdgyC',
10
+ token='some_token',
11
+ form_id='some_form',
12
+ )
13
+ assert qn.id
14
+ assert qn.user_id
15
+ assert qn.form_id
16
+ assert qn.token
@@ -15,6 +15,6 @@ def test_create_user_validation(user_lists_request):
15
15
  @pytest.mark.vcr
16
16
  def test_create_user_validation_invalid_inputs():
17
17
  with pytest.raises(CuencaResponseException) as exc:
18
- UserListsValidation.create(**dict())
18
+ UserListsValidation.create(**dict(curp='MAVM112222HWIERN02'))
19
19
  assert exc.status_code == 403
20
20
  assert exc.json['error'] == 'There is an error with the inputs'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes