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
@@ -0,0 +1,244 @@
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
+ from functools import lru_cache
11
+ from typing import Any
12
+
13
+ from everysk.config import settings
14
+ from everysk.core.fields import DateField, ListField, StrField, BoolField, ChoiceField
15
+ from everysk.core.datetime import Date
16
+ from everysk.core.http import HttpGETConnection
17
+ from everysk.sdk.base import BaseSDK
18
+
19
+
20
+ ###############################################################################
21
+ # MarketData Class Implementation
22
+ ###############################################################################
23
+ class MarketData(BaseSDK):
24
+
25
+ date = DateField(default=Undefined)
26
+ start_date = DateField(default=None)
27
+ end_date = DateField(default=None)
28
+ ticker_list = ListField(default=None)
29
+ ticker_type = ChoiceField(default=None, choices=settings.ENGINES_MARKET_DATA_TICKER_TYPES)
30
+ projection = StrField(default=None)
31
+ nearest = BoolField(default=False)
32
+ real_time = BoolField(default=False)
33
+
34
+ def get_security(
35
+ self,
36
+ date: Date = Undefined,
37
+ ticker_list: list[str] = Undefined,
38
+ ticker_type: list[str] = Undefined,
39
+ projection: str = Undefined,
40
+ nearest: bool = Undefined
41
+ ) -> dict:
42
+ """
43
+ Get security data.
44
+
45
+ Args:
46
+ date (Date): The date.
47
+ ticker_list (list[str]): The ticker list.
48
+ ticker_type (list[str]): The ticker type.
49
+ projection (str): The projection.
50
+ nearest (bool): The nearest flag.
51
+
52
+ Returns:
53
+ dict: The security data.
54
+ """
55
+ return self.get_response(self_obj=self, params={'date': date, 'ticker_list': ticker_list, 'ticker_type': ticker_type, 'projection': projection, 'nearest': nearest})
56
+
57
+ def get_historical(
58
+ self,
59
+ date: Date = Undefined,
60
+ start_date: Date = Undefined,
61
+ end_date: Date = Undefined,
62
+ ticker_list: list[str] = Undefined,
63
+ ticker_type: str = Undefined,
64
+ projection: str = Undefined,
65
+ nearest: bool = Undefined,
66
+ real_time: bool = Undefined
67
+ ) -> dict:
68
+ """
69
+ Get historical data.
70
+
71
+ Args:
72
+ date (Date): The date.
73
+ start_date (Date): The start date.
74
+ end_date (Date): The end date.
75
+ ticker_list (list[str]): The ticker list.
76
+ ticker_type (str): The ticker type.
77
+ projection (str): The projection.
78
+
79
+ Returns:
80
+ dict: The historical data.
81
+ """
82
+ return self.get_response(self_obj=self, params={'date': date, 'start_date': start_date, 'end_date': end_date, 'ticker_list': ticker_list, 'ticker_type': ticker_type, 'projection': projection, 'nearest': nearest, 'real_time': real_time})
83
+
84
+ def search(
85
+ self,
86
+ conditions: list[list[str, str, Any]],
87
+ fields: list[str] | None = None,
88
+ order_by: str | None = None,
89
+ limit: int | None = Undefined,
90
+ date: str | Date = Undefined,
91
+ path: str = ''
92
+ ) -> list[dict]:
93
+ """
94
+ Search assets via Market Data Beta with dynamic filters.
95
+
96
+ Args:
97
+ *conditions: Each condition is a list or tuple with (field, operator, value). Example: ('cnpj_fundo', '=', '56903183000100')
98
+ fields (list[str]): List of fields to include in the response.
99
+ order_by (str): Field to order the results by. Prefix with '-' for descending order (e.g., '-columnA').
100
+ limit (int): Limit the number of results.
101
+ date (str | Date): The date to search for.
102
+ path (str): The path to search for.
103
+
104
+ Returns:
105
+ list[dict]: The search results.
106
+
107
+ """
108
+ return self.get_response(self_obj=self, params={'conditions': conditions, 'fields': fields, 'order_by': order_by, 'limit': limit, 'date': date, 'path': path})
109
+
110
+ def get_currencies(self) -> dict:
111
+ """
112
+ Get the currencies information from the Market Data engine.
113
+
114
+ Returns:
115
+ dict: A dictionary with the currencies information.
116
+
117
+ Example:
118
+ >>> from everysk.sdk.engines import MarketData
119
+
120
+ >>> market_data = MarketData()
121
+ >>> currencies = market_data.currencies()
122
+ >>> currencies
123
+ {
124
+ 'base_currencies': [
125
+ ["AED", "Uae Dirham/Us Dollar Fx Spot Rate"],
126
+ ["USD", "Us Dollar/Us Dollar Fx Spot Rate"],
127
+ ...
128
+ ],
129
+ 'crypto_currencies': [
130
+ ["BTC", "Bitcoin"],
131
+ ["ETH", "Ethereum"],
132
+ ...
133
+ ],
134
+ }
135
+
136
+ """
137
+ return self.get_response(self_obj=self)
138
+
139
+
140
+ class MarketDataPublic:
141
+ ## Public attributes
142
+ cache_timeout: int = 60 * 60 * 24 # Timeout for cache 24 hours
143
+ http_timeout: int = 30 # Timeout for HTTP requests 30 seconds
144
+
145
+ ## Private methods
146
+ def _get_server_url(self) -> str:
147
+ """ Get the public URL for the Market Data engine. """
148
+ return settings.MARKET_DATA_PUBLIC_URL
149
+
150
+ def _get_response(self, url: str, params: dict) -> dict:
151
+ """
152
+ Get the response from the Market Data engine.
153
+
154
+ Args:
155
+ url (str): The URL to send the request to.
156
+ params (dict): The parameters to include in the request.
157
+ """
158
+ with HttpGETConnection(url=url, timeout=self.http_timeout, params=params) as conn:
159
+ response = conn.get_response()
160
+
161
+ return response.json()
162
+
163
+ # To use lru_cache, don't use unhashable types like dict or list as params.
164
+ @lru_cache(maxsize=128)
165
+ def _get_response_cache(self, endpoint: str, **params: dict) -> list[dict[str, str]]:
166
+ """
167
+ Get the cached response from the Market Data engine or fetch a new one.
168
+
169
+ Args:
170
+ endpoint (str): The API endpoint to call.
171
+ params (dict): The parameters to include in the request.
172
+ """
173
+ if 'limit' not in params:
174
+ params['limit'] = '*'
175
+
176
+ url = f'{self._get_server_url()}/{endpoint}'
177
+ return self._get_response(url=url, params=params)
178
+
179
+ ## Public methods
180
+ def get_countries(self, **params) -> list[dict[str, str]]:
181
+ """
182
+ Get all countries information from the Market Data.
183
+ Fields: code, created_at, currency, name, region, updated_at
184
+
185
+ Args:
186
+ fields (list[str]): The fields to include in the response.
187
+ order_by (str): The field to order the results by.
188
+ limit (int): The maximum number of results to return.
189
+ """
190
+ params['order_by'] = params.get('order_by', 'code__asc')
191
+ return self._get_response_cache(endpoint='countries', **params)
192
+
193
+ def get_cryptos(self, **params) -> list[dict[str, str]]:
194
+ """
195
+ Get all crypto information from the Market Data.
196
+ Fields: code, created_at, mkt_cap, name, status, updated_at, vendor_symbol, volume
197
+
198
+ Args:
199
+ fields (list[str]): The fields to include in the response.
200
+ order_by (str): The field to order the results by.
201
+ limit (int): The maximum number of results to return.
202
+ """
203
+ params['order_by'] = params.get('order_by', 'code__asc')
204
+ return self._get_response_cache(endpoint='cryptos', **params)
205
+
206
+ def get_currencies(self, **params) -> list[dict[str, str]]:
207
+ """
208
+ Get all currency information from the Market Data.
209
+ Fields: code, created_at, name, status, updated_at
210
+
211
+ Args:
212
+ fields (list[str]): The fields to include in the response.
213
+ order_by (str): The field to order the results by.
214
+ limit (int): The maximum number of results to return.
215
+ """
216
+ params['order_by'] = params.get('order_by', 'code__asc')
217
+ return self._get_response_cache(endpoint='currencies', **params)
218
+
219
+ def get_exchanges(self, **params) -> list[dict[str, str]]:
220
+ """
221
+ Get all exchange information from the Market Data.
222
+ Fields: country, created_at, description, exchange_type, mic, updated_at
223
+
224
+ Args:
225
+ fields (list[str]): The fields to include in the response.
226
+ order_by (str): The field to order the results by.
227
+ limit (int): The maximum number of results to return.
228
+ """
229
+ params['order_by'] = params.get('order_by', 'mic__asc')
230
+ return self._get_response_cache(endpoint='exchanges', **params)
231
+
232
+ def get_holidays(self, **params) -> list[dict[str, str]]:
233
+ """
234
+ Get all holiday information from the Market Data.
235
+ Fields: calendar, created_at, date, description, updated_at, year
236
+ If some range is needed you can use year__gt=2024, year__lt=2026.
237
+
238
+ Args:
239
+ fields (list[str]): The fields to include in the response.
240
+ order_by (str): The field to order the results by.
241
+ limit (int): The maximum number of results to return.
242
+ """
243
+ params['order_by'] = params.get('order_by', 'date__asc')
244
+ return self._get_response_cache(endpoint='holidays', **params)
@@ -0,0 +1,19 @@
1
+ ###############################################################################
2
+ #
3
+ # (C) Copyright 2023 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
+ from everysk.core.fields import FloatField, IntField, ListField, StrField, TupleField
11
+
12
+ ENGINES_EXPRESSION_DEFAULT_DATA_TYPES = TupleField(default=('cpp_var', 'str_var'), readonly=True)
13
+ ENGINES_CACHE_EXECUTION_EXPIRATION_TIME = IntField(default=14400, readonly=True)
14
+ ENGINES_MARKET_DATA_TICKER_TYPES = ListField(default=('everysk_symbol', 'everysk_id', None), readonly=True)
15
+
16
+ MARKET_DATA_PUBLIC_URL = StrField(default='https://public-market-data-1088321674060.us-central1.run.app', readonly=True)
17
+ USER_CACHE_LOCK_EXPIRATION_TIME = FloatField(default=10.0, readonly=True)
18
+ USER_CACHE_LOCK_MIN_EXPIRATION_TIME = FloatField(default=0.01, readonly=True)
19
+ USER_CACHE_LOCK_MAX_EXPIRATION_TIME = FloatField(default=60.0, readonly=True)
@@ -0,0 +1,23 @@
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
+ from everysk.core.string import import_from_string
11
+
12
+
13
+ ###############################################################################
14
+ # Private Functions Implementation
15
+ ###############################################################################
16
+ def __getattr__(_name: str):
17
+ from everysk.config import settings # pylint: disable=import-outside-toplevel
18
+ modules = settings.EVERYSK_SDK_ENTITIES_MODULES_PATH
19
+
20
+ if _name in modules:
21
+ return import_from_string(modules[_name])
22
+
23
+ raise AttributeError(f"cannot import name '{_name}' from everysk.sdk")