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,63 @@
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.fields import IntField, ListField, RegexField, StrField
11
+
12
+ WORKER_EXECUTION_ID_PREFIX = StrField(default='wkex_', readonly=True)
13
+ WORKER_EXECUTION_ID_LENGTH = IntField(default=25, readonly=True)
14
+ WORKER_EXECUTION_ID_REGEX = RegexField(default=r'^wkex_[a-zA-Z0-9]{25}', readonly=True)
15
+
16
+ WORKER_ID_PREFIX = StrField(default='wrkr_', readonly=True)
17
+ WORKER_ID_LENGTH = IntField(default=25, readonly=True)
18
+ WORKER_ID_REGEX = RegexField(default=r'^wrkr_[a-zA-Z0-9]{25}', readonly=True)
19
+
20
+ WORKER_EXECUTION_UNFORKED_PARALLEL_INDEX = IntField(default=-1, readonly=True)
21
+ WORKER_EXECUTION_UNFORKED_PARALLEL_LENGTH = IntField(default=-1, readonly=True)
22
+
23
+ WORKER_EXECUTION_STATUS_COMPLETED = StrField(default='COMPLETED', readonly=True)
24
+ WORKER_EXECUTION_STATUS_FAILED = StrField(default='FAILED', readonly=True)
25
+ WORKER_EXECUTION_STATUS_PREPARING = StrField(default='PREPARING', readonly=True)
26
+ WORKER_EXECUTION_STATUS_RUNNING = StrField(default='RUNNING', readonly=True)
27
+ WORKER_EXECUTION_STATUS_TIMEOUT = StrField(default='TIMEOUT', readonly=True)
28
+ WORKER_EXECUTION_STATUS_LIST = ListField(default=['COMPLETED', 'FAILED', 'PREPARING', 'RUNNING', 'TIMEOUT'], readonly=True)
29
+
30
+ WORKER_EXECUTION_INTEGRATION_EVENT_TYPE = StrField(default='INTEGRATION_EVENT', readonly=True)
31
+ WORKER_EXECUTION_SCHEDULER_EVENT_TYPE = StrField(default='SCHEDULER_EVENT', readonly=True)
32
+ WORKER_EXECUTION_WORKER_FINISHED_EVENT_TYPE = StrField(default='WORKER_FINISHED_EVENT', readonly=True)
33
+ WORKER_EXECUTION_MANUAL_EVENT_TYPE = StrField(default='MANUAL', readonly=True)
34
+ WORKER_EXECUTION_API_EVENT_TYPE = StrField(default='API', readonly=True)
35
+ WORKER_EXECUTION_EVENT_TYPE_LIST = ListField(
36
+ default=['INTEGRATION_EVENT', 'SCHEDULER_EVENT', 'WORKER_FINISHED_EVENT', 'MANUAL', 'API'], readonly=True
37
+ )
38
+
39
+ WORKER_EXECUTION_TYPE_TIME_DRIVEN = StrField(default='TIME_DRIVEN', readonly=True)
40
+ WORKER_EXECUTION_TYPE_EVENT_DRIVEN = StrField(default='EVENT_DRIVEN', readonly=True)
41
+ WORKER_EXECUTION_TYPE_MANUAL = StrField(default='MANUAL', readonly=True)
42
+ WORKER_EXECUTION_TYPE_API = StrField(default='API', readonly=True)
43
+ WORKER_EXECUTION_TYPE_LIST = ListField(
44
+ default=['TIME_DRIVEN', 'EVENT_DRIVEN', 'SCHEDULER_EVENT', 'MANUAL', 'API'], readonly=True
45
+ )
46
+
47
+ RESULT_STATUS_OK = StrField(default='OK', readonly=True)
48
+ RESULT_STATUS_ERROR = StrField(default='ERROR', readonly=True)
49
+
50
+ WORKER_TEMPLATE_TYPES = ListField(
51
+ default=[
52
+ 'STARTER',
53
+ 'BASIC',
54
+ 'FORKER',
55
+ 'BARRIER',
56
+ 'CONDITIONAL',
57
+ 'TRY',
58
+ 'CATCH',
59
+ 'ENDER',
60
+ 'Retrieve',
61
+ ], # Retrieve is a legacy type.
62
+ readonly=True,
63
+ )
@@ -0,0 +1,113 @@
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.config import settings
11
+ from everysk.core.fields import StrField, DateTimeField, ListField, FloatField
12
+ from everysk.sdk.entities.base import BaseEntity
13
+ from everysk.sdk.entities.query import Query
14
+
15
+
16
+ ###############################################################################
17
+ # WorkflowExecution Class Implementation
18
+ ###############################################################################
19
+ class WorkflowExecution(BaseEntity):
20
+
21
+ id = StrField(regex=settings.WORKFLOW_EXECUTION_ID_REGEX, required_lazy=True, empty_is_none=True)
22
+
23
+ # This is a legacy status used in the old version of the API library.
24
+ status = StrField(default=settings.WORKFLOW_EXECUTION_STATUS_OK, choices=settings.WORKFLOW_EXECUTION_STATUS, required_lazy=True)
25
+ run_status = StrField(default=settings.WORKFLOW_EXECUTION_STATUS_PREPARING, choices=settings.WORKFLOW_EXECUTION_STATUS, required_lazy=True)
26
+
27
+ execution_type = StrField(default=Undefined, choices=settings.WORKER_EXECUTION_TYPE_LIST, required_lazy=True)
28
+ start_time = DateTimeField()
29
+ end_time = DateTimeField()
30
+ duration = FloatField()
31
+ real_execution_time = FloatField()
32
+ total_execution_time = FloatField()
33
+
34
+ workflow_id = StrField(regex=settings.WORKFLOW_ID_REGEX, required_lazy=True, empty_is_none=True)
35
+ workflow_name = StrField(required_lazy=True)
36
+ workspace = StrField(required_lazy=False, empty_is_none=True)
37
+
38
+ started_worker_id = StrField(regex=settings.WORKER_ID_REGEX, required_lazy=True, empty_is_none=True)
39
+ ender_worker_id = StrField(regex=settings.WORKER_ID_REGEX, empty_is_none=True)
40
+ ender_worker_execution_id = StrField(regex=settings.WORKER_EXECUTION_ID_REGEX, empty_is_none=True)
41
+
42
+ worker_ids = ListField()
43
+ resume = ListField()
44
+
45
+ @staticmethod
46
+ def get_id_prefix() -> str:
47
+ """
48
+ Returns the prefix of the Worker Execution id field value.
49
+
50
+ Returns:
51
+ str: The prefix of the Worker Execution id field value.
52
+
53
+ Usage:
54
+ >>> WorkflowExecution.get_id_prefix()
55
+ 'wfex_'
56
+
57
+ Notes:
58
+ The prefix is typically used to distinguish Worker Execution IDs from other types of IDs.
59
+ """
60
+ return settings.WORKFLOW_EXECUTION_ID_PREFIX
61
+
62
+ def to_dict(self, add_class_path: bool = False, recursion: bool = False) -> dict:
63
+ """
64
+ This method is used to convert the object to a dictionary.
65
+ """
66
+ dct: dict = super().to_dict(add_class_path=add_class_path, recursion=recursion)
67
+
68
+ if add_class_path is False:
69
+ dct['started'] = self.start_time.timestamp() if self.start_time else None
70
+ dct['trigger'] = self.execution_type
71
+
72
+ dct.pop('worker_ids')
73
+ dct.pop('execution_type')
74
+ dct.pop('start_time')
75
+ dct.pop('end_time')
76
+
77
+ return dct
78
+
79
+ def _check_entity_to_query(self) -> bool:
80
+ """
81
+ Check the entity object to query.
82
+
83
+ Returns:
84
+ bool: True if the entity object is valid.
85
+ """
86
+ return True
87
+
88
+ def _check_query(self, query: Query) -> bool:
89
+ """
90
+ Check the query object.
91
+
92
+ Args:
93
+ query (Query): The query object.
94
+
95
+ Returns:
96
+ bool: True if the query object is valid.
97
+ """
98
+ return True
99
+
100
+ def _mount_query(self, query: Query) -> Query:
101
+ """
102
+ Mount the query object.
103
+
104
+ Args:
105
+ query (Query): The query object.
106
+
107
+ Returns:
108
+ Query: The query object.
109
+ """
110
+ if self.workflow_id is not None:
111
+ query = query.where('workflow_id', self.workflow_id)
112
+
113
+ return query
@@ -0,0 +1,32 @@
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.fields import StrField, ListField, IntField, RegexField
11
+
12
+
13
+ WORKFLOW_EXECUTION_ID_PREFIX = StrField(default='wfex_', readonly=True)
14
+ WORKFLOW_EXECUTION_ID_LENGTH = IntField(default=25, readonly=True)
15
+ WORKFLOW_EXECUTION_ID_REGEX = RegexField(default=r'^wfex_[a-zA-Z0-9]{25}', readonly=True)
16
+
17
+ WORKFLOW_ID_PREFIX = StrField(default='wrkf_', readonly=True)
18
+ WORKFLOW_ID_LENGTH = IntField(default=25, readonly=True)
19
+ WORKFLOW_ID_REGEX = RegexField(default=r'^wrkf_[a-zA-Z0-9]{25}', readonly=True)
20
+
21
+ # legacy workflow execution status
22
+ WORKFLOW_EXECUTION_STATUS_COMPLETED = StrField(default='COMPLETED', readonly=True)
23
+ WORKFLOW_EXECUTION_STATUS_OK = StrField(default='OK', readonly=True)
24
+
25
+ # current workflow execution status
26
+ WORKFLOW_EXECUTION_STATUS_CANCELED = StrField(default='CANCELED', readonly=True)
27
+ WORKFLOW_EXECUTION_STATUS_FAILED = StrField(default='FAILED', readonly=True)
28
+ WORKFLOW_EXECUTION_STATUS_PREPARING = StrField(default='PREPARING', readonly=True)
29
+ WORKFLOW_EXECUTION_STATUS_RUNNING = StrField(default='RUNNING', readonly=True)
30
+ WORKFLOW_EXECUTION_STATUS_SUCCEEDED = StrField(default='SUCCEEDED', readonly=True)
31
+ WORKFLOW_EXECUTION_STATUS = ListField(default=['CANCELED', 'COMPLETED', 'FAILED', 'OK', 'PREPARING', 'RUNNING', 'SUCCEEDED'], readonly=True)
32
+ WORKFLOW_EXECUTION_STATUS_FINISHED = ListField(default=['CANCELED', 'COMPLETED', 'SUCCEEDED', 'FAILED'], readonly=True)
@@ -0,0 +1,99 @@
1
+ # -*- coding: utf_8 -*-
2
+ ###############################################################################
3
+ #
4
+ # (C) Copyright 2023 EVERYSK TECHNOLOGIES
5
+ #
6
+ # This is an unpublished work containing confidential and proprietary
7
+ # information of EVERYSK TECHNOLOGIES. Disclosure, use, or reproduction
8
+ # without authorization of EVERYSK TECHNOLOGIES is prohibited.
9
+ #
10
+ ###############################################################################
11
+
12
+ ###############################################################################
13
+ # Imports
14
+ ###############################################################################
15
+ from everysk.config import settings
16
+ from everysk.core.fields import StrField
17
+
18
+ from everysk.sdk.entities.base import BaseEntity
19
+ from everysk.sdk.entities.fields import EntityDescriptionField, EntityWorkspaceField
20
+
21
+ ###############################################################################
22
+ # Securities Field Implementation
23
+ ###############################################################################
24
+
25
+ ###############################################################################
26
+ # Portfolio Implementation
27
+ ###############################################################################
28
+ class Workspace(BaseEntity):
29
+
30
+ name = EntityWorkspaceField()
31
+ description = EntityDescriptionField(max_size=settings.WORKSPACE_DESCRIPTION_MAX_LENGTH)
32
+ group = StrField(default=None, max_size=settings.WORKSPACE_GROUP_MAX_LENGTH, min_size=settings.WORKSPACE_GROUP_MIN_LENGTH, empty_is_none=True)
33
+
34
+ @property
35
+ def id(self) -> str:
36
+ """
37
+ Returns the id of the workspace. The id is a alias for the name.
38
+
39
+ Returns:
40
+ str: The id of the workspace.
41
+
42
+ Example:
43
+ >>> workspace = Workspace(name='custom')
44
+ >>> workspace.id
45
+ 'custom'
46
+ """
47
+ return self.name
48
+
49
+ @id.setter
50
+ def id(self, value: str) -> None:
51
+ """
52
+ Sets the id of the workspace. The id is a alias for the name.
53
+
54
+ Args:
55
+ value (str): The id of the workspace.
56
+
57
+ Example:
58
+ >>> workspace = Workspace()
59
+ >>> workspace.id = 'custom'
60
+ >>> workspace.name
61
+ 'custom'
62
+ >>> workspace.id
63
+ 'custom'
64
+ """
65
+ self.name = value
66
+
67
+ @staticmethod
68
+ def get_id_prefix():
69
+ """
70
+ Returns the id prefix for the workspace.
71
+
72
+ Returns:
73
+ str: The id prefix for the workspace.
74
+ """
75
+ return settings.WORKSPACE_ID_PREFIX
76
+
77
+ def generate_id(self) -> str:
78
+ """
79
+ Generate a unique ID for an entity instance.
80
+
81
+ Returns:
82
+ str: The generated unique ID.
83
+
84
+ Example:
85
+ To generate a unique ID for an entity instance:
86
+ >>> unique_id = MyEntity().generate_id()
87
+ """
88
+ raise NotImplementedError
89
+
90
+ def to_dict(self, add_class_path = False, recursion = False) -> dict:
91
+ """
92
+ This method is used to convert the object to a dictionary.
93
+ """
94
+ dct: dict = super().to_dict(add_class_path, recursion)
95
+
96
+ if not self.description:
97
+ dct['description'] = ''
98
+
99
+ return dct
@@ -0,0 +1,27 @@
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
+
11
+ ###############################################################################
12
+ # Imports
13
+ ###############################################################################
14
+ from everysk.core.fields import IntField, RegexField, StrField
15
+
16
+ ###############################################################################
17
+ # Settings Implementation
18
+ ###############################################################################
19
+ ENTITY_WORKSPACE_MAX_LENGTH = IntField(default=50, readonly=True)
20
+ ENTITY_WORKSPACE_MIN_LENGTH = IntField(default=1, readonly=True)
21
+ ENTITY_WORKSPACE_REGEX = RegexField(default=r'^[a-zA-Z0-9_]*$', readonly=True)
22
+
23
+ WORKSPACE_GROUP_MAX_LENGTH = IntField(default=50, readonly=True)
24
+ WORKSPACE_GROUP_MIN_LENGTH = IntField(default=1, readonly=True)
25
+
26
+ WORKSPACE_ID_PREFIX = StrField(default='wksp_', readonly=True)
27
+ WORKSPACE_DESCRIPTION_MAX_LENGTH = IntField(default=100, readonly=True)
@@ -0,0 +1,67 @@
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.fields import BoolField, DictField, IntField, SetField, StrField
11
+
12
+ SIMPLE_UNIQUE_ID_LENGTH = IntField(default=8, readonly=True)
13
+
14
+ EVERYSK_API_SID = StrField()
15
+ EVERYSK_API_TOKEN = StrField()
16
+
17
+ EVERYSK_APP_URL_SCHEME = StrField(default='https')
18
+ EVERYSK_APP_URL_DOMAIN = StrField(default='app.everysk.com')
19
+ EVERYSK_APP_URL = StrField(default='{EVERYSK_APP_URL_SCHEME}://{EVERYSK_APP_URL_DOMAIN}')
20
+
21
+ EVERYSK_API_URL_SCHEME = StrField(default='https')
22
+ EVERYSK_API_URL_DOMAIN = StrField(default='api.everysk.com')
23
+ EVERYSK_API_URL = StrField(default='{EVERYSK_API_URL_SCHEME}://{EVERYSK_API_URL_DOMAIN}')
24
+ EVERYSK_SDK_URL = EVERYSK_API_URL
25
+
26
+ EVERYSK_API_VERSION = StrField(default='v2')
27
+ EVERYSK_API_VERIFY_SSL_CERTS = BoolField(default=True)
28
+
29
+ EVERYSK_SDK_VERSION = StrField(default='v1', readonly=True)
30
+ EVERYSK_SDK_ROUTE = StrField(default='sdk_function', readonly=True)
31
+
32
+ EVERYSK_SDK_HTTP_DEFAULT_TIMEOUT = IntField(default=3600, readonly=True)
33
+ EVERYSK_SDK_HTTP_RETRY_ERROR_CODES = SetField(default=(429, 500, 502, 503, 504), readonly=True)
34
+
35
+ EVERYSK_SDK_MODULES_PATH = DictField(default={'WorkerBase': 'everysk.sdk.worker_base.WorkerBase'}, readonly=True)
36
+
37
+ EVERYSK_SDK_ENTITIES_MODULES_PATH = DictField(
38
+ default={
39
+ 'CustomIndex': 'everysk.sdk.entities.custom_index.base.CustomIndex',
40
+ 'Datastore': 'everysk.sdk.entities.datastore.base.Datastore',
41
+ 'File': 'everysk.sdk.entities.file.base.File',
42
+ 'Portfolio': 'everysk.sdk.entities.portfolio.base.Portfolio',
43
+ 'PrivateSecurity': 'everysk.sdk.entities.private_security.base.PrivateSecurity',
44
+ 'Query': 'everysk.sdk.entities.query.Query',
45
+ 'Report': 'everysk.sdk.entities.report.base.Report',
46
+ 'Script': 'everysk.sdk.entities.script.Script',
47
+ 'Securities': 'everysk.sdk.entities.portfolio.securities.Securities',
48
+ 'Security': 'everysk.sdk.entities.portfolio.security.Security',
49
+ 'WorkerExecution': 'everysk.sdk.entities.worker_execution.base.WorkerExecution',
50
+ 'WorkflowExecution': 'everysk.sdk.entities.workflow_execution.base.WorkflowExecution',
51
+ 'Workspace': 'everysk.sdk.entities.workspace.base.Workspace',
52
+ 'Secrets': 'everysk.sdk.entities.secrets.base.Secrets',
53
+ 'SecretsScript': 'everysk.sdk.entities.secrets.base.SecretsScript',
54
+ },
55
+ readonly=True,
56
+ )
57
+
58
+ EVERYSK_SDK_ENGINES_MODULES_PATH = DictField(
59
+ default={
60
+ 'Expression': 'everysk.sdk.engines.expression.Expression',
61
+ 'Compliance': 'everysk.sdk.engines.compliance.Compliance',
62
+ 'UserCache': 'everysk.sdk.engines.cache.UserCache',
63
+ 'UserLock': 'everysk.sdk.engines.lock.UserLock',
64
+ 'MarketData': 'everysk.sdk.engines.market_data.MarketData',
65
+ },
66
+ readonly=True,
67
+ )
everysk/sdk/tests.py ADDED
@@ -0,0 +1,105 @@
1
+ # ruff: noqa: F401
2
+ ###############################################################################
3
+ #
4
+ # (C) Copyright 2023 EVERYSK TECHNOLOGIES
5
+ #
6
+ # This is an unpublished work containing confidential and proprietary
7
+ # information of EVERYSK TECHNOLOGIES. Disclosure, use, or reproduction
8
+ # without authorization of EVERYSK TECHNOLOGIES is prohibited.
9
+ #
10
+ ###############################################################################
11
+ # pylint: disable=unused-import
12
+
13
+ ## Remember to prefix all import with EveryskLib to avoid clash with other tests
14
+ try:
15
+ from everysk.sdk._tests.base import TestBaseSDK as EveryskLibTestBaseSDK
16
+ from everysk.sdk._tests.init import SDKInitTestCase as EveryskLibSDKInitTestCase
17
+ from everysk.sdk._tests.serialize import SerializeDumpsSDKTestCase as EveryskLibSerializeDumpsSDKTestCase
18
+ from everysk.sdk._tests.serialize import SerializeLoadsSDKTestCase as EveryskLibSerializeLoadsSDKTestCase
19
+ from everysk.sdk._tests.worker_base import WorkerBaseTestCase as EveryskLibWorkerBaseTestCase
20
+ from everysk.sdk.engines._tests.cache import CacheTestCase as EveryskLibCacheTestCase
21
+ from everysk.sdk.engines._tests.compliance import ComplianceTestCase as EveryskLibComplianceTestCase
22
+ from everysk.sdk.engines._tests.cryptography import TestCryptography as EveryskLibTestCryptography
23
+ from everysk.sdk.engines._tests.init import EnginesInitTestCase as EveryskLibEnginesInitTestCase
24
+ from everysk.sdk.engines._tests.lock import UserLockTestCase as EveryskLibUserLockTestCase
25
+ from everysk.sdk.engines._tests.market_data import MarketDataPublicTestCase as EveryskLibMarketDataPublicTestCase
26
+ from everysk.sdk.engines._tests.market_data import MarketDataTestCase as EveryskLibMarketDataTestCase
27
+ from everysk.sdk.engines.expression.functions.tests.base import (
28
+ FunctionsBaseTestCase as EveryskLibFunctionsBaseTestCaseNew,
29
+ )
30
+ from everysk.sdk.engines.expression.functions.tests.date import (
31
+ FunctionsDateTestCase as EveryskLibFunctionsDateTestCaseNew,
32
+ )
33
+ from everysk.sdk.engines.expression.functions.tests.list import (
34
+ FunctionsListTestCase as EveryskLibFunctionsListTestCaseNew,
35
+ )
36
+ from everysk.sdk.engines.expression.functions.tests.logic import (
37
+ FunctionsLogicTestCase as EveryskLibFunctionsLogicTestCaseNew,
38
+ )
39
+ from everysk.sdk.engines.expression.functions.tests.math import (
40
+ FunctionsMathTestCase as EveryskLibFunctionsMathTestCaseNew,
41
+ )
42
+ from everysk.sdk.engines.expression.functions.tests.miscellaneous import (
43
+ FunctionsMiscellaneousTestCase as EveryskLibFunctionsMiscellaneousTestCaseNew,
44
+ )
45
+ from everysk.sdk.engines.expression.functions.tests.string import (
46
+ FunctionsStringTestCase as EveryskLibFunctionsStringTestCaseNew,
47
+ )
48
+ from everysk.sdk.engines.expression.tests.base import (
49
+ ExpressionEngineTestCase as EveryskLibExpressionEngineTestCaseNew,
50
+ )
51
+ from everysk.sdk.engines.expression.tests.interpreter import InterpreterTestCase as EveryskLibInterpreterTestCaseNew
52
+ from everysk.sdk.engines.expression.tests.validator import ValidatorTestCase as EveryskLibValidatorTestCaseNew
53
+ from everysk.sdk.engines.helpers.tests.test_algorithms import NpSortTestCase as EveryskLibHelpersNpSortTestCase
54
+ from everysk.sdk.engines.helpers.tests.test_algorithms import NpUniqueTestCase as EveryskLibHelpersNpUniqueTestCase
55
+ from everysk.sdk.engines.helpers.tests.test_formater import FormaterTestCase as EveryskLibFormaterTestCase
56
+ from everysk.sdk.engines.helpers.tests.test_functions import FunctionsTestCase as EveryskLibFunctionsTestCase
57
+ from everysk.sdk.engines.helpers.tests.test_mathematical import (
58
+ MathematicalTestCase as EveryskLibMathematicalTestCase,
59
+ )
60
+ from everysk.sdk.engines.helpers.tests.test_mixin_lib import AttribMixinTestCase as EveryskLibAttribMixinTestCase
61
+ from everysk.sdk.engines.helpers.tests.test_mixin_lib import MappingMixinTestCase as EveryskLibMappingMixinTestCase
62
+ from everysk.sdk.engines.helpers.tests.test_mixin_lib import ReprMixinTestCase as EveryskLibReprMixinTestCase
63
+ from everysk.sdk.engines.helpers.tests.test_mixin_lib import ToDictMixinTestCase as EveryskLibToDictMixinTestCase
64
+ from everysk.sdk.engines.helpers.tests.test_python2 import NPUniqueTestCase as EveryskLibNPUniqueTestCase
65
+ from everysk.sdk.engines.helpers.tests.test_python2 import (
66
+ SortablePY2ObjectTestCase as EveryskLibSortablePY2ObjectTestCase,
67
+ )
68
+ from everysk.sdk.engines.helpers.tests.test_transform import TransformTestCase as EveryskLibTransformTestCase
69
+ from everysk.sdk.entities._tests.base import TestBaseEntity as EveryskLibTestBaseEntity
70
+ from everysk.sdk.entities._tests.base_list import TestEntityList as EveryskLibTestEntityList
71
+ from everysk.sdk.entities._tests.fields import TestBaseCurrencyField as EveryskLibTestBaseCurrencyField
72
+ from everysk.sdk.entities._tests.fields import TestEntityDateTimeField as EveryskLibTestEntityDateTimeField
73
+ from everysk.sdk.entities._tests.fields import TestEntityDescriptionField as EveryskLibTestEntityDescriptionField
74
+ from everysk.sdk.entities._tests.fields import TestEntityLinkUIDField as EveryskLibTestEntityLinkUIDField
75
+ from everysk.sdk.entities._tests.fields import TestEntityNameField as EveryskLibTestEntityNameField
76
+ from everysk.sdk.entities._tests.fields import TestEntityTagsField as EveryskLibTestEntityTagsField
77
+ from everysk.sdk.entities._tests.fields import TestEntityWorkspaceField as EveryskLibTestEntityWorkspaceField
78
+ from everysk.sdk.entities._tests.init import InitTestCase as EveryskLibInitTestCase
79
+ from everysk.sdk.entities._tests.query import QueryTestCase as EveryskLibQueryTestCase
80
+ from everysk.sdk.entities._tests.script import ScriptTestCase as EveryskLibScriptTestCase
81
+ from everysk.sdk.entities._tests.tags import TagsTestCase as EveryskLibTestTagsList
82
+ from everysk.sdk.entities.custom_index._tests.base import CustomIndexTestCase as EveryskLibCustomIndexTestCase
83
+ from everysk.sdk.entities.datastore.tests.base import DatastoreTestCase as EveryskLibDatastoreTestCase
84
+ from everysk.sdk.entities.file._tests.base import FileTestCase as EveryskLibFileTestCase
85
+ from everysk.sdk.entities.portfolio._tests.base import TestPortfolio as EveryskLibTestPortfolio
86
+ from everysk.sdk.entities.portfolio._tests.base import TestSecuritiesField as EveryskLibTestTestSecuritiesField
87
+ from everysk.sdk.entities.portfolio._tests.securities import TestSecurities as EveryskLibTestSecurities
88
+ from everysk.sdk.entities.portfolio._tests.security import TestSecurity as EveryskLibTestSecurity
89
+ from everysk.sdk.entities.private_security._tests.base import (
90
+ PrivateSecurityTestCase as EveryskLibPrivateSecurityTestCase,
91
+ )
92
+ from everysk.sdk.entities.report.tests.base import ReportTestCase as EveryskLibReportTestCase
93
+ from everysk.sdk.entities.secrets.tests.base import SecretsTestCase as EveryskLibSecretsTestCase
94
+ from everysk.sdk.entities.worker_execution.tests.base import (
95
+ WorkerExecutionTestCase as EveryskLibWorkerExecutionTestCase,
96
+ )
97
+ from everysk.sdk.entities.workflow_execution.tests.base import (
98
+ WorkflowExecutionTestCase as EveryskLibWorkflowExecutionTestCase,
99
+ )
100
+ from everysk.sdk.entities.workspace._tests.base import TestWorkspace as EveryskLibTestWorkspace
101
+
102
+ except ModuleNotFoundError as error:
103
+ # This will prevent running these tests if requests is not installed
104
+ if not error.args[0].startswith("No module named 'requests'"):
105
+ raise error
@@ -0,0 +1,47 @@
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.object import BaseDict
11
+
12
+
13
+ ###############################################################################
14
+ # WorkerBase Class Implementation
15
+ ###############################################################################
16
+ class WorkerBase(BaseDict):
17
+
18
+ workspace: str = None
19
+ script_inputs: BaseDict = None
20
+ inputs_info: BaseDict = None
21
+ worker_type: str = None
22
+ parallel_info: BaseDict = None
23
+ worker_id: str = None
24
+ workflow_id: str = None
25
+ workflow_execution_id: str = None
26
+
27
+ def __init__(self, args: BaseDict = Undefined, **kwargs):
28
+ if args is Undefined:
29
+ args = {}
30
+ kwargs.update(args)
31
+ super().__init__(**kwargs)
32
+
33
+ def handle_inputs(self) -> None:
34
+ if self.script_inputs:
35
+ for key, value in self.script_inputs.items():
36
+ setattr(self, key, value)
37
+
38
+ def handle_tasks(self) -> None:
39
+ raise NotImplementedError()
40
+
41
+ def handle_outputs(self) -> BaseDict:
42
+ raise NotImplementedError()
43
+
44
+ def run(self) -> BaseDict:
45
+ self.handle_inputs()
46
+ self.handle_tasks()
47
+ return self.handle_outputs()
@@ -0,0 +1,9 @@
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
+ ###############################################################################
@@ -0,0 +1,63 @@
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
+ __all__ = ['create_application']
11
+
12
+ from starlette.applications import Lifespan, Starlette
13
+
14
+ from everysk.config import settings
15
+ from everysk.server.middlewares import Middleware, update_with_default_middlewares
16
+ from everysk.server.routing import Route
17
+
18
+
19
+ ###############################################################################
20
+ # Public functions Implementation
21
+ ###############################################################################
22
+ def create_application(
23
+ *, # This disables positional arguments for the function
24
+ routes: list[Route],
25
+ debug: bool = settings.EVERYSK_SERVER_DEBUG,
26
+ middlewares: list[Middleware] | None = None,
27
+ exception_handlers: dict[int | Exception, callable] | None = None,
28
+ on_startup: list[callable] | None = None,
29
+ on_shutdown: list[callable] | None = None,
30
+ lifespan: Lifespan | None = None,
31
+ **kwargs,
32
+ ) -> Starlette:
33
+ """
34
+ Create a Starlette application with the given routes, middleware and exception handlers.
35
+ By default the first middleware is the GZipMiddleware and SecurityHeadersMiddleware is the last one,
36
+ so you don't need to add them in the list.
37
+ Routes could be normal Starlette routes or the RouteLazy class that will lazy load the endpoint class.
38
+
39
+ Args:
40
+ routes (list[Route]): A list of routes to serve incoming HTTP and WebSocket requests.
41
+ debug (bool, optional): Boolean indicating if debug tracebacks should be returned on errors. Defaults to False.
42
+ middlewares (list[Middleware], optional): A list of middleware to run for every request. Defaults to None.
43
+ exception_handlers (dict[int, callable], optional): A mapping of either integer status codes, or exception
44
+ class types onto callables which handle the exceptions. Defaults to None.
45
+ on_startup (list[callable], optional): A list of callables that will be run when the application starts up.
46
+ Defaults to None.
47
+ on_shutdown (list[callable], optional): A list of callables that run when the application is on shutdown.
48
+ Defaults to None.
49
+ lifespan (Lifespan, optional): An ASGI 3.0 Lifespan instance, or None to disable lifespan events.
50
+ Defaults to None.
51
+ """
52
+ middlewares = update_with_default_middlewares(middlewares)
53
+
54
+ return Starlette(
55
+ debug=debug,
56
+ routes=routes,
57
+ middleware=middlewares,
58
+ exception_handlers=exception_handlers,
59
+ on_shutdown=on_shutdown,
60
+ on_startup=on_startup,
61
+ lifespan=lifespan,
62
+ **kwargs,
63
+ )