everysk-lib 1.10.2__cp312-cp312-win_amd64.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.
Files changed (137) hide show
  1. everysk/__init__.py +30 -0
  2. everysk/_version.py +683 -0
  3. everysk/api/__init__.py +61 -0
  4. everysk/api/api_requestor.py +167 -0
  5. everysk/api/api_resources/__init__.py +23 -0
  6. everysk/api/api_resources/api_resource.py +371 -0
  7. everysk/api/api_resources/calculation.py +779 -0
  8. everysk/api/api_resources/custom_index.py +42 -0
  9. everysk/api/api_resources/datastore.py +81 -0
  10. everysk/api/api_resources/file.py +42 -0
  11. everysk/api/api_resources/market_data.py +223 -0
  12. everysk/api/api_resources/parser.py +66 -0
  13. everysk/api/api_resources/portfolio.py +43 -0
  14. everysk/api/api_resources/private_security.py +42 -0
  15. everysk/api/api_resources/report.py +65 -0
  16. everysk/api/api_resources/report_template.py +39 -0
  17. everysk/api/api_resources/tests.py +115 -0
  18. everysk/api/api_resources/worker_execution.py +64 -0
  19. everysk/api/api_resources/workflow.py +65 -0
  20. everysk/api/api_resources/workflow_execution.py +93 -0
  21. everysk/api/api_resources/workspace.py +42 -0
  22. everysk/api/http_client.py +63 -0
  23. everysk/api/tests.py +32 -0
  24. everysk/api/utils.py +262 -0
  25. everysk/config.py +451 -0
  26. everysk/core/_tests/serialize/test_json.py +336 -0
  27. everysk/core/_tests/serialize/test_orjson.py +295 -0
  28. everysk/core/_tests/serialize/test_pickle.py +48 -0
  29. everysk/core/cloud_function/main.py +78 -0
  30. everysk/core/cloud_function/tests.py +86 -0
  31. everysk/core/compress.py +245 -0
  32. everysk/core/datetime/__init__.py +12 -0
  33. everysk/core/datetime/calendar.py +144 -0
  34. everysk/core/datetime/date.py +424 -0
  35. everysk/core/datetime/date_expression.py +299 -0
  36. everysk/core/datetime/date_mixin.py +1475 -0
  37. everysk/core/datetime/date_settings.py +30 -0
  38. everysk/core/datetime/datetime.py +713 -0
  39. everysk/core/exceptions.py +435 -0
  40. everysk/core/fields.py +1176 -0
  41. everysk/core/firestore.py +555 -0
  42. everysk/core/fixtures/_settings.py +29 -0
  43. everysk/core/fixtures/other/_settings.py +18 -0
  44. everysk/core/fixtures/user_agents.json +88 -0
  45. everysk/core/http.py +691 -0
  46. everysk/core/lists.py +92 -0
  47. everysk/core/log.py +709 -0
  48. everysk/core/number.py +37 -0
  49. everysk/core/object.py +1469 -0
  50. everysk/core/redis.py +1021 -0
  51. everysk/core/retry.py +51 -0
  52. everysk/core/serialize.py +674 -0
  53. everysk/core/sftp.py +414 -0
  54. everysk/core/signing.py +53 -0
  55. everysk/core/slack.py +127 -0
  56. everysk/core/string.py +199 -0
  57. everysk/core/tests.py +240 -0
  58. everysk/core/threads.py +199 -0
  59. everysk/core/undefined.py +70 -0
  60. everysk/core/unittests.py +73 -0
  61. everysk/core/workers.py +241 -0
  62. everysk/sdk/__init__.py +23 -0
  63. everysk/sdk/base.py +98 -0
  64. everysk/sdk/brutils/cnpj.py +391 -0
  65. everysk/sdk/brutils/cnpj_pd.py +129 -0
  66. everysk/sdk/engines/__init__.py +26 -0
  67. everysk/sdk/engines/cache.py +185 -0
  68. everysk/sdk/engines/compliance.py +37 -0
  69. everysk/sdk/engines/cryptography.py +69 -0
  70. everysk/sdk/engines/expression.cp312-win_amd64.pyd +0 -0
  71. everysk/sdk/engines/expression.pyi +55 -0
  72. everysk/sdk/engines/helpers.cp312-win_amd64.pyd +0 -0
  73. everysk/sdk/engines/helpers.pyi +26 -0
  74. everysk/sdk/engines/lock.py +120 -0
  75. everysk/sdk/engines/market_data.py +244 -0
  76. everysk/sdk/engines/settings.py +19 -0
  77. everysk/sdk/entities/__init__.py +23 -0
  78. everysk/sdk/entities/base.py +784 -0
  79. everysk/sdk/entities/base_list.py +131 -0
  80. everysk/sdk/entities/custom_index/base.py +209 -0
  81. everysk/sdk/entities/custom_index/settings.py +29 -0
  82. everysk/sdk/entities/datastore/base.py +160 -0
  83. everysk/sdk/entities/datastore/settings.py +17 -0
  84. everysk/sdk/entities/fields.py +375 -0
  85. everysk/sdk/entities/file/base.py +215 -0
  86. everysk/sdk/entities/file/settings.py +63 -0
  87. everysk/sdk/entities/portfolio/base.py +248 -0
  88. everysk/sdk/entities/portfolio/securities.py +241 -0
  89. everysk/sdk/entities/portfolio/security.py +580 -0
  90. everysk/sdk/entities/portfolio/settings.py +97 -0
  91. everysk/sdk/entities/private_security/base.py +226 -0
  92. everysk/sdk/entities/private_security/settings.py +17 -0
  93. everysk/sdk/entities/query.py +603 -0
  94. everysk/sdk/entities/report/base.py +214 -0
  95. everysk/sdk/entities/report/settings.py +23 -0
  96. everysk/sdk/entities/script.py +310 -0
  97. everysk/sdk/entities/secrets/base.py +128 -0
  98. everysk/sdk/entities/secrets/script.py +119 -0
  99. everysk/sdk/entities/secrets/settings.py +17 -0
  100. everysk/sdk/entities/settings.py +48 -0
  101. everysk/sdk/entities/tags.py +174 -0
  102. everysk/sdk/entities/worker_execution/base.py +307 -0
  103. everysk/sdk/entities/worker_execution/settings.py +63 -0
  104. everysk/sdk/entities/workflow_execution/base.py +113 -0
  105. everysk/sdk/entities/workflow_execution/settings.py +32 -0
  106. everysk/sdk/entities/workspace/base.py +99 -0
  107. everysk/sdk/entities/workspace/settings.py +27 -0
  108. everysk/sdk/settings.py +67 -0
  109. everysk/sdk/tests.py +105 -0
  110. everysk/sdk/worker_base.py +47 -0
  111. everysk/server/__init__.py +9 -0
  112. everysk/server/applications.py +63 -0
  113. everysk/server/endpoints.py +516 -0
  114. everysk/server/example_api.py +69 -0
  115. everysk/server/middlewares.py +80 -0
  116. everysk/server/requests.py +62 -0
  117. everysk/server/responses.py +119 -0
  118. everysk/server/routing.py +64 -0
  119. everysk/server/settings.py +36 -0
  120. everysk/server/tests.py +36 -0
  121. everysk/settings.py +98 -0
  122. everysk/sql/__init__.py +9 -0
  123. everysk/sql/connection.py +232 -0
  124. everysk/sql/model.py +376 -0
  125. everysk/sql/query.py +417 -0
  126. everysk/sql/row_factory.py +63 -0
  127. everysk/sql/settings.py +49 -0
  128. everysk/sql/utils.py +129 -0
  129. everysk/tests.py +23 -0
  130. everysk/utils.py +81 -0
  131. everysk/version.py +15 -0
  132. everysk_lib-1.10.2.dist-info/.gitignore +5 -0
  133. everysk_lib-1.10.2.dist-info/METADATA +326 -0
  134. everysk_lib-1.10.2.dist-info/RECORD +137 -0
  135. everysk_lib-1.10.2.dist-info/WHEEL +5 -0
  136. everysk_lib-1.10.2.dist-info/licenses/LICENSE.txt +9 -0
  137. everysk_lib-1.10.2.dist-info/top_level.txt +2 -0
everysk/api/utils.py ADDED
@@ -0,0 +1,262 @@
1
+ ###############################################################################
2
+ #
3
+ # (C) Copyright 2025 EVERYSK TECHNOLOGIES
4
+ #
5
+ # This is an unpublished work containing confidential and proprietary
6
+ # information of EVERYSK TECHNOLOGIES. Disclosure, use, or reproduction
7
+ # without authorization of EVERYSK TECHNOLOGIES is prohibited.
8
+ #
9
+ ###############################################################################
10
+ import json
11
+ import time
12
+
13
+ from everysk.api import api_requestor, get_api_config
14
+
15
+
16
+ ###############################################################################
17
+ # Private Functions Implementation
18
+ ###############################################################################
19
+ def dumps_json(obj):
20
+ """
21
+ Serializes a Python object into a JSON-formatted string with sorted keys and pretty-printing.
22
+
23
+ Args:
24
+ obj:
25
+ The Python object to serialize
26
+
27
+ Returns:
28
+ str: A JSON-formatted string representing the serialized output. The keys will be sorted with an level 2 of indentation
29
+
30
+ Example:
31
+ >>> from everysk.api.utils import dumps_json
32
+ >>> data = {
33
+ ... 2: 'apple',
34
+ ... 1: 'banana',
35
+ ... 3: 'cherry'
36
+ ... }
37
+ >>> json_str = dumps_json(data)
38
+ >>> print(json_str)
39
+ {
40
+ "1": "banana",
41
+ "2": "apple",
42
+ "3": "cherry"
43
+ }
44
+ """
45
+ return json.dumps(obj, sort_keys=True, indent=2)
46
+
47
+
48
+ ###############################################################################
49
+ # Everysk Object Implementation
50
+ ###############################################################################
51
+ class EveryskObject(dict):
52
+ def __init__(self, retrieve_params, params) -> None: # pylint: disable=unused-argument
53
+ super().__init__()
54
+ self.__unsaved_values = set()
55
+ self.update(params)
56
+ self.clear_unsaved_values()
57
+
58
+ def get_unsaved_values(self):
59
+ return {k:self[k] for k in self.__unsaved_values}
60
+
61
+ def clear_unsaved_values(self):
62
+ self.__unsaved_values = set()
63
+
64
+ def __str__(self):
65
+ return dumps_json(self)
66
+
67
+ def __repr__(self):
68
+ ident_parts = [type(self).__name__]
69
+ ident_parts.append(f"id={self.get('id')}")
70
+ unicode_repr = f"<{' '.join(ident_parts)} at {hex(id(self))}> JSON: {str(self)}"
71
+ return unicode_repr
72
+
73
+ def update(self, dict_) -> None:
74
+ for k, v in dict_.items():
75
+ self.__setattr__(k, v)
76
+
77
+ def __setattr__(self, k, v):
78
+ if k.startswith('_') or k in self.__dict__:
79
+ return super().__setattr__(k, v)
80
+
81
+ self[k] = v
82
+ return None
83
+
84
+ def __getattr__(self, k):
85
+ if k.startswith('_'):
86
+ raise AttributeError(k)
87
+
88
+ try:
89
+ return self[k]
90
+ except KeyError as err:
91
+ raise AttributeError(*err.args) # pylint: disable=raise-missing-from
92
+
93
+ def __delattr__(self, k):
94
+ if k.startswith('_') or k in self.__dict__:
95
+ return super().__delattr__(k)
96
+ else:
97
+ del self[k]
98
+
99
+ def __setitem__(self, k, v) -> None:
100
+ self.__unsaved_values.add(k)
101
+ super().__setitem__(k, v)
102
+
103
+ def __getitem__(self, k):
104
+ return super().__getitem__(k)
105
+
106
+ def __delitem__(self, k) -> None:
107
+ super().__delitem__(k)
108
+ self.__unsaved_values.remove(k)
109
+
110
+ # # Allows for unpickling in Python 3.x
111
+ # if hasattr(self, '_unsaved_values'):
112
+ # self._unsaved_values.remove(k)
113
+
114
+
115
+ ###############################################################################
116
+ # Everysk List Implementation
117
+ ###############################################################################
118
+ class EveryskList(list):
119
+ def __init__(self, retrieve_params, response, key, cls) -> None:
120
+ """
121
+ Initializes the EveryskList object.
122
+
123
+ Args:
124
+ retrieve_params (dict): The parameters used for retrieving data.
125
+ response (dict): The response containing the data.
126
+ key (str): The key in the response dictionary that contains the data.
127
+ cls (class): The class used to create objects from the data.
128
+ """
129
+ super().__init__()
130
+ self.__page_size = retrieve_params.get('page_size', 10)
131
+ self.__next_page_token = response.get('next_page_token', None)
132
+ self.extend([cls({}, params) for params in response[key]])
133
+
134
+ def page_size(self):
135
+ """
136
+ Returns the page size used for pagination.
137
+
138
+ Returns:
139
+ int: The page size used for pagination.
140
+ """
141
+ return self.__page_size
142
+
143
+ def next_page_token(self):
144
+ """
145
+ Retrieves the next page token.
146
+
147
+ Returns:
148
+ The next page token.
149
+ """
150
+ return self.__next_page_token
151
+
152
+
153
+ ###############################################################################
154
+ # Private Functions Implementation
155
+ ###############################################################################
156
+ def create_api_requestor(params=None):
157
+ """
158
+ Creates an APIRequestor object configured with API settings extracted or derived from the provided parameters.
159
+ It initializes an APIRequestor with configuration settings such as API token, API session ID, API entry point, and SSL certificates status.
160
+
161
+ Args:
162
+ params (dict, optional):
163
+ A dictionary of parameters containing API configuration settings. Defaults to an empty dictionary.
164
+
165
+ Returns:
166
+ APIRequestor: An instance of APIRequestor, configured with the API settings
167
+
168
+ Example:
169
+ >>> api_config_params = {
170
+ >>> ... 'api_entry': 'https://api.example.com',
171
+ >>> ... 'api_version': 'v1',
172
+ >>> ... 'api_sid': 'session123',
173
+ >>> ... 'api_token': 'token456',
174
+ >>> ... 'verify_ssl_certs': False
175
+ >>> }
176
+ >>> api_requestor = create_api_requestor(api_config_params)
177
+ >>> print(api_requestor.base_url) # This will output the base URL configured for the API requestor.
178
+ """
179
+ params = params or {}
180
+ return api_requestor.APIRequestor(
181
+ *get_api_config(params)
182
+ )
183
+
184
+ def to_object(cls, retrieve_params, response, extra_keys=None):
185
+ """
186
+ Converts a response dictionary into an instance of the specified class.
187
+
188
+ Args:
189
+ cls (type): The class to instantiate. It must implement a constructor
190
+ that accepts (retrieve_params, response_body), and a `class_name()` method.
191
+ retrieve_params (dict): Parameters originally used to retrieve the data.
192
+ response (dict): The response dictionary received from an API call.
193
+ extra_keys (list[str], optional): List of keys to extract from the top-level
194
+ of the response and merge into the response body. Defaults to None.
195
+
196
+ Returns:
197
+ object or None: An instance of `cls` populated with the response data,
198
+ or None if the response is invalid or missing the expected key.
199
+
200
+ Example:
201
+ >>> from everysk.api.utils import to_object
202
+ >>> from everysk.api.api_resources import Calculation
203
+
204
+ >>> response = {'calculation': {'some': 'data'}, 'metadata': {'id': 123}}
205
+ >>> retrieve_params = {'param1': 'value1'}
206
+
207
+ >>> calculation_object = to_object(Calculation, retrieve_params, response, extra_keys=['metadata'])
208
+ # Creates a Calculation instance with data: {'some': 'data', 'metadata': {'id': 123}}
209
+ """
210
+ key = cls.class_name()
211
+ result = None
212
+ if response and key in response and isinstance(response[key], dict):
213
+ response_body = response[key]
214
+
215
+ if extra_keys and isinstance(extra_keys, list):
216
+ for key in extra_keys:
217
+ if key in response:
218
+ response_body[key] = response[key]
219
+
220
+ result = cls(retrieve_params, response_body)
221
+ return result
222
+
223
+ def to_list(cls, retrieve_params, response):
224
+ """
225
+ Convert a response dictionary into a list of objects of the given class.
226
+
227
+ Args:
228
+ cls (class): The class of the objects to be created.
229
+ retrieve_params (dict): The retrieve parameters used to fetch the response.
230
+ response (dict): The response dictionary.
231
+
232
+ Returns:
233
+ list: A list of objects of the given class, created from the response dictionary.
234
+ If the response is empty, the key is missing, or the value is not a list,
235
+ None is returned.
236
+
237
+ Example:
238
+ >>> from unittest.mock import MagicMock
239
+ >>> from everysk.api.utils import to_list
240
+ >>> mock_class = MagicMock()
241
+
242
+ >>> mock_class.class_name_list.return_value = 'valid_key'
243
+
244
+ >>> response = {'valid_key': [{'some': 'data'}, {'more': 'data'}]}
245
+ >>> retrieve_params = {'param1': 'value1'}
246
+
247
+ >>> result = to_list(mock_class, retrieve_params, response)
248
+ """
249
+ key = cls.class_name_list()
250
+ result = None
251
+ if response and key in response and isinstance(response[key], list):
252
+ result = EveryskList(retrieve_params, response, key, cls)
253
+ return result
254
+
255
+ def sleep(t) -> None:
256
+ """
257
+ Sleeps for the specified number of seconds.
258
+
259
+ Args:
260
+ t (float): The number of seconds to sleep.
261
+ """
262
+ time.sleep(t)