skyflow-flowvault-python 1.0.0__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.
Files changed (202) hide show
  1. common/.coveragerc +4 -0
  2. common/__init__.py +3 -0
  3. common/client/__init__.py +0 -0
  4. common/client/base_skyflow.py +345 -0
  5. common/client/utils/__init__.py +1 -0
  6. common/client/utils/_utils.py +127 -0
  7. common/errors/__init__.py +1 -0
  8. common/errors/_skyflow_error.py +17 -0
  9. common/generated/__init__.py +0 -0
  10. common/generated/rest/__init__.py +24 -0
  11. common/generated/rest/authentication/__init__.py +4 -0
  12. common/generated/rest/authentication/client.py +181 -0
  13. common/generated/rest/authentication/raw_client.py +241 -0
  14. common/generated/rest/client.py +153 -0
  15. common/generated/rest/core/__init__.py +52 -0
  16. common/generated/rest/core/api_error.py +23 -0
  17. common/generated/rest/core/client_wrapper.py +86 -0
  18. common/generated/rest/core/datetime_utils.py +28 -0
  19. common/generated/rest/core/file.py +67 -0
  20. common/generated/rest/core/force_multipart.py +16 -0
  21. common/generated/rest/core/http_client.py +543 -0
  22. common/generated/rest/core/http_response.py +55 -0
  23. common/generated/rest/core/jsonable_encoder.py +100 -0
  24. common/generated/rest/core/pydantic_utilities.py +255 -0
  25. common/generated/rest/core/query_encoder.py +58 -0
  26. common/generated/rest/core/remove_none_from_dict.py +11 -0
  27. common/generated/rest/core/request_options.py +35 -0
  28. common/generated/rest/core/serialization.py +276 -0
  29. common/generated/rest/environment.py +8 -0
  30. common/generated/rest/errors/__init__.py +9 -0
  31. common/generated/rest/errors/bad_request_error.py +14 -0
  32. common/generated/rest/errors/not_found_error.py +14 -0
  33. common/generated/rest/errors/unauthorized_error.py +14 -0
  34. common/generated/rest/py.typed +0 -0
  35. common/generated/rest/types/__init__.py +9 -0
  36. common/generated/rest/types/googlerpc_status.py +22 -0
  37. common/generated/rest/types/protobuf_any.py +21 -0
  38. common/generated/rest/types/v_1_get_auth_token_response.py +33 -0
  39. common/generated/rest/version.py +6 -0
  40. common/service_account/__init__.py +1 -0
  41. common/service_account/_utils.py +248 -0
  42. common/service_account/client/__init__.py +0 -0
  43. common/service_account/client/auth_client.py +13 -0
  44. common/utils/__init__.py +4 -0
  45. common/utils/_helpers.py +18 -0
  46. common/utils/_skyflow_messages.py +445 -0
  47. common/utils/_utils.py +50 -0
  48. common/utils/constants.py +291 -0
  49. common/utils/enums/__init__.py +12 -0
  50. common/utils/enums/content_types.py +9 -0
  51. common/utils/enums/detect_entities.py +73 -0
  52. common/utils/enums/detect_output_transcriptions.py +8 -0
  53. common/utils/enums/env.py +13 -0
  54. common/utils/enums/log_level.py +8 -0
  55. common/utils/enums/masking_method.py +5 -0
  56. common/utils/enums/redaction_type.py +7 -0
  57. common/utils/enums/request_method.py +8 -0
  58. common/utils/enums/token_mode.py +6 -0
  59. common/utils/enums/token_type.py +6 -0
  60. common/utils/logger/__init__.py +2 -0
  61. common/utils/logger/_log_helpers.py +47 -0
  62. common/utils/logger/_logger.py +50 -0
  63. common/utils/validations/__init__.py +11 -0
  64. common/utils/validations/_validations.py +267 -0
  65. common/vault/base_vault_client.py +122 -0
  66. common/vault/base_vault_controller.py +58 -0
  67. common/vault/data/__init__.py +2 -0
  68. common/vault/data/_base_insert_request.py +7 -0
  69. common/vault/data/_base_insert_response.py +11 -0
  70. skyflow/__init__.py +2 -0
  71. skyflow/client/__init__.py +1 -0
  72. skyflow/client/_http_config_builder.py +45 -0
  73. skyflow/client/skyflow.py +15 -0
  74. skyflow/error/__init__.py +3 -0
  75. skyflow/generated/__init__.py +0 -0
  76. skyflow/generated/rest/__init__.py +164 -0
  77. skyflow/generated/rest/_default_clients.py +32 -0
  78. skyflow/generated/rest/client.py +385 -0
  79. skyflow/generated/rest/core/__init__.py +127 -0
  80. skyflow/generated/rest/core/api_error.py +23 -0
  81. skyflow/generated/rest/core/client_wrapper.py +148 -0
  82. skyflow/generated/rest/core/datetime_utils.py +70 -0
  83. skyflow/generated/rest/core/file.py +67 -0
  84. skyflow/generated/rest/core/force_multipart.py +18 -0
  85. skyflow/generated/rest/core/http_client.py +940 -0
  86. skyflow/generated/rest/core/http_response.py +63 -0
  87. skyflow/generated/rest/core/http_sse/__init__.py +42 -0
  88. skyflow/generated/rest/core/http_sse/_api.py +455 -0
  89. skyflow/generated/rest/core/http_sse/_decoders.py +74 -0
  90. skyflow/generated/rest/core/http_sse/_exceptions.py +7 -0
  91. skyflow/generated/rest/core/http_sse/_models.py +17 -0
  92. skyflow/generated/rest/core/jsonable_encoder.py +133 -0
  93. skyflow/generated/rest/core/logging.py +107 -0
  94. skyflow/generated/rest/core/parse_error.py +36 -0
  95. skyflow/generated/rest/core/pydantic_utilities.py +486 -0
  96. skyflow/generated/rest/core/query_encoder.py +58 -0
  97. skyflow/generated/rest/core/remove_none_from_dict.py +11 -0
  98. skyflow/generated/rest/core/request_options.py +40 -0
  99. skyflow/generated/rest/core/serialization.py +347 -0
  100. skyflow/generated/rest/environment.py +8 -0
  101. skyflow/generated/rest/errors/__init__.py +53 -0
  102. skyflow/generated/rest/errors/bad_request_error.py +11 -0
  103. skyflow/generated/rest/errors/forbidden_error.py +11 -0
  104. skyflow/generated/rest/errors/internal_server_error.py +11 -0
  105. skyflow/generated/rest/errors/not_found_error.py +11 -0
  106. skyflow/generated/rest/errors/too_many_requests_error.py +11 -0
  107. skyflow/generated/rest/errors/unauthorized_error.py +11 -0
  108. skyflow/generated/rest/py.typed +0 -0
  109. skyflow/generated/rest/query/__init__.py +4 -0
  110. skyflow/generated/rest/query/client.py +139 -0
  111. skyflow/generated/rest/query/raw_client.py +239 -0
  112. skyflow/generated/rest/raw_client.py +86 -0
  113. skyflow/generated/rest/records/__init__.py +34 -0
  114. skyflow/generated/rest/records/client.py +685 -0
  115. skyflow/generated/rest/records/raw_client.py +988 -0
  116. skyflow/generated/rest/records/types/__init__.py +34 -0
  117. skyflow/generated/rest/records/types/update_request_update_type.py +5 -0
  118. skyflow/generated/rest/tokens/__init__.py +4 -0
  119. skyflow/generated/rest/tokens/client.py +246 -0
  120. skyflow/generated/rest/tokens/raw_client.py +507 -0
  121. skyflow/generated/rest/types/__init__.py +116 -0
  122. skyflow/generated/rest/types/column_redactions.py +33 -0
  123. skyflow/generated/rest/types/delete_response.py +23 -0
  124. skyflow/generated/rest/types/delete_response_object.py +42 -0
  125. skyflow/generated/rest/types/detokenize_response.py +23 -0
  126. skyflow/generated/rest/types/detokenize_response_object.py +54 -0
  127. skyflow/generated/rest/types/error_response.py +20 -0
  128. skyflow/generated/rest/types/error_response_error.py +28 -0
  129. skyflow/generated/rest/types/execute_query_record_response.py +22 -0
  130. skyflow/generated/rest/types/execute_query_response.py +26 -0
  131. skyflow/generated/rest/types/execute_query_response_metadata.py +26 -0
  132. skyflow/generated/rest/types/get_request_data.py +60 -0
  133. skyflow/generated/rest/types/get_response.py +23 -0
  134. skyflow/generated/rest/types/get_tokens_from_values_request_object.py +30 -0
  135. skyflow/generated/rest/types/get_tokens_from_values_response.py +23 -0
  136. skyflow/generated/rest/types/google_protobuf_value.py +8 -0
  137. skyflow/generated/rest/types/http_code.py +6 -0
  138. skyflow/generated/rest/types/insert_record_data.py +36 -0
  139. skyflow/generated/rest/types/insert_response.py +23 -0
  140. skyflow/generated/rest/types/record_response_object.py +70 -0
  141. skyflow/generated/rest/types/token_group_redactions.py +33 -0
  142. skyflow/generated/rest/types/tokenize_response_object.py +49 -0
  143. skyflow/generated/rest/types/unique_value.py +22 -0
  144. skyflow/generated/rest/types/update_record_data.py +52 -0
  145. skyflow/generated/rest/types/update_record_data_update_type.py +5 -0
  146. skyflow/generated/rest/types/update_response.py +23 -0
  147. skyflow/generated/rest/types/upsert.py +45 -0
  148. skyflow/generated/rest/types/upsert_update_type.py +5 -0
  149. skyflow/generated/rest/version.py +6 -0
  150. skyflow/service_account/__init__.py +15 -0
  151. skyflow/utils/__init__.py +9 -0
  152. skyflow/utils/_http_config.py +36 -0
  153. skyflow/utils/_response_parsing.py +66 -0
  154. skyflow/utils/_retry.py +97 -0
  155. skyflow/utils/_skyflow_messages.py +114 -0
  156. skyflow/utils/_utils.py +54 -0
  157. skyflow/utils/_version.py +1 -0
  158. skyflow/utils/enums/__init__.py +3 -0
  159. skyflow/utils/enums/_custom_header_key.py +10 -0
  160. skyflow/utils/enums/_env_urls.py +9 -0
  161. skyflow/utils/enums/_upsert_type.py +7 -0
  162. skyflow/utils/validations/__init__.py +9 -0
  163. skyflow/utils/validations/_validations.py +195 -0
  164. skyflow/vault/__init__.py +0 -0
  165. skyflow/vault/client/__init__.py +0 -0
  166. skyflow/vault/client/client.py +102 -0
  167. skyflow/vault/controller/__init__.py +1 -0
  168. skyflow/vault/controller/_vault.py +475 -0
  169. skyflow/vault/data/__init__.py +30 -0
  170. skyflow/vault/data/_column_redactions.py +4 -0
  171. skyflow/vault/data/_delete_options.py +8 -0
  172. skyflow/vault/data/_delete_request.py +5 -0
  173. skyflow/vault/data/_delete_response.py +9 -0
  174. skyflow/vault/data/_delete_response_record.py +9 -0
  175. skyflow/vault/data/_detokenize_options.py +8 -0
  176. skyflow/vault/data/_detokenize_request.py +9 -0
  177. skyflow/vault/data/_detokenize_response.py +9 -0
  178. skyflow/vault/data/_detokenize_response_record.py +16 -0
  179. skyflow/vault/data/_detokenize_response_record_metadata.py +10 -0
  180. skyflow/vault/data/_get_options.py +8 -0
  181. skyflow/vault/data/_get_request.py +17 -0
  182. skyflow/vault/data/_get_request_record.py +13 -0
  183. skyflow/vault/data/_get_response.py +9 -0
  184. skyflow/vault/data/_get_response_record.py +17 -0
  185. skyflow/vault/data/_insert_options.py +8 -0
  186. skyflow/vault/data/_insert_request.py +11 -0
  187. skyflow/vault/data/_insert_request_record.py +9 -0
  188. skyflow/vault/data/_insert_response.py +9 -0
  189. skyflow/vault/data/_insert_response_record.py +17 -0
  190. skyflow/vault/data/_request_context.py +16 -0
  191. skyflow/vault/data/_token.py +8 -0
  192. skyflow/vault/data/_token_group_redactions.py +4 -0
  193. skyflow/vault/data/_update_options.py +8 -0
  194. skyflow/vault/data/_update_request.py +11 -0
  195. skyflow/vault/data/_update_request_record.py +6 -0
  196. skyflow/vault/data/_update_response.py +9 -0
  197. skyflow/vault/data/_update_response_record.py +17 -0
  198. skyflow/vault/data/_upsert_options.py +7 -0
  199. skyflow_flowvault_python-1.0.0.dist-info/METADATA +896 -0
  200. skyflow_flowvault_python-1.0.0.dist-info/RECORD +202 -0
  201. skyflow_flowvault_python-1.0.0.dist-info/WHEEL +5 -0
  202. skyflow_flowvault_python-1.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,291 @@
1
+ OPTIONAL_TOKEN='token'
2
+ PROTOCOL='https'
3
+ SKY_META_DATA_HEADER='sky-metadata'
4
+ CTX_KEY_REGEX=r'^[a-zA-Z0-9_]+$'
5
+
6
+ class SKYFLOW:
7
+ SKYFLOW_ID = 'skyflowId'
8
+ X_SKYFLOW_AUTHORIZATION = 'x-skyflow-authorization'
9
+
10
+
11
+ class HttpHeader:
12
+ CONTENT_TYPE = 'Content-Type'
13
+ CONTENT_TYPE_LOWERCASE = 'content-type'
14
+ X_REQUEST_ID = 'x-request-id'
15
+ ERROR_FROM_CLIENT = 'error-from-client'
16
+ AUTHORIZATION = 'Authorization'
17
+ X_SKYFLOW_AUTHORIZATION_HEADER = 'X-Skyflow-Authorization'
18
+
19
+
20
+ class HttpStatusCode:
21
+ OK = 200
22
+ BAD_REQUEST = 400
23
+ UNAUTHORIZED = 401
24
+ INTERNAL_SERVER_ERROR = 500
25
+
26
+
27
+ class ContentType:
28
+ APPLICATION_JSON = 'application/json'
29
+ APPLICATION_X_WWW_FORM_URLENCODED = 'application/x-www-form-urlencoded'
30
+ TEXT_PLAIN = 'text/plain'
31
+
32
+
33
+ class DetectStatus:
34
+ IN_PROGRESS = 'IN_PROGRESS'
35
+ SUCCESS = 'SUCCESS'
36
+ FAILED = 'FAILED'
37
+ UNKNOWN = 'UNKNOWN'
38
+
39
+ class Detect:
40
+ WAIT_TIME = 64
41
+
42
+ class FileExtension:
43
+ JSON = 'json'
44
+ MP3 = 'mp3'
45
+ WAV = 'wav'
46
+ PDF = 'pdf'
47
+ TXT = 'txt'
48
+ DOC = 'doc'
49
+ DOCX = 'docx'
50
+ JPG = 'jpg'
51
+ JPEG = 'jpeg'
52
+ PNG = 'png'
53
+ BMP = 'bmp'
54
+ TIF = 'tif'
55
+ TIFF = 'tiff'
56
+ PPT = 'ppt'
57
+ PPTX = 'pptx'
58
+ CSV = 'csv'
59
+ XLS = 'xls'
60
+ XLSX = 'xlsx'
61
+ XML = 'xml'
62
+
63
+
64
+ class FileProcessing:
65
+ PROCESSED_PREFIX = 'processed-'
66
+ DEIDENTIFIED_PREFIX = 'deidentified.'
67
+ ENTITIES = 'entities'
68
+
69
+
70
+ class EncodingType:
71
+ UTF8 = 'utf8'
72
+ UTF_8 = 'utf-8'
73
+ BASE64 = 'base64'
74
+ BINARY = 'binary'
75
+
76
+
77
+ class JWT:
78
+ ALGORITHM_RS256 = 'RS256'
79
+ GRANT_TYPE_JWT_BEARER = 'urn:ietf:params:oauth:grant-type:jwt-bearer'
80
+ ISSUER_SDK = 'sdk'
81
+ SIGNED_TOKEN_PREFIX = 'signed_token_'
82
+ ROLE_PREFIX = 'role:'
83
+
84
+
85
+ class ApiKey:
86
+ SKY_PREFIX = 'sky-'
87
+ LENGTH = 42
88
+
89
+
90
+ class UrlProtocol:
91
+ HTTPS = 'https'
92
+ HTTP = 'http'
93
+
94
+
95
+ class BooleanString:
96
+ TRUE = 'true'
97
+ FALSE = 'false'
98
+
99
+
100
+ class ResponseField:
101
+ STATUS = 'Status'
102
+ BODY = 'Body'
103
+ RECORDS = 'records'
104
+ TOKENS = 'tokens'
105
+ ERROR = 'error'
106
+ SKYFLOW_ID = 'skyflow_id'
107
+ REQUEST_INDEX = 'request_index'
108
+ REQUEST_ID = 'request_id'
109
+ HTTP_CODE = 'http_code'
110
+ HTTP_STATUS = 'http_status'
111
+ GRPC_CODE = 'grpc_code'
112
+ DETAILS = 'details'
113
+ MESSAGE = 'message'
114
+ ERROR_FROM_CLIENT = 'error_from_client'
115
+ TOKEN = 'token'
116
+ VALUE = 'value'
117
+ TYPE = 'type'
118
+ TOKENIZED_DATA = 'tokenized_data'
119
+ SIGNED_TOKEN = 'signed_token'
120
+ RESPONSES = 'responses'
121
+
122
+
123
+ class CredentialField:
124
+ PRIVATE_KEY = 'privateKey'
125
+ CLIENT_ID = 'clientID'
126
+ KEY_ID = 'keyID'
127
+ TOKEN_URI = 'tokenURI'
128
+ TOKEN_URI_OPTION = 'token_uri'
129
+ CLIENT_NAME = 'clientName'
130
+ CREDENTIALS_STRING = 'credentials_string'
131
+ API_KEY = 'api_key'
132
+ TOKEN = 'token'
133
+ PATH = 'path'
134
+ CONTEXT = 'context'
135
+ ROLES = 'roles'
136
+
137
+
138
+ class JwtField:
139
+ ISS = 'iss'
140
+ KEY = 'key'
141
+ AUD = 'aud'
142
+ SUB = 'sub'
143
+ EXP = 'exp'
144
+ CTX = 'ctx'
145
+ TOK = 'tok'
146
+ IAT = 'iat'
147
+
148
+
149
+ class OptionField:
150
+ ROLE_IDS = 'role_ids'
151
+ DATA_TOKENS = 'data_tokens'
152
+ TIME_TO_LIVE = 'time_to_live'
153
+ ROLES = 'roles'
154
+ CTX = 'ctx'
155
+ VAULT_ID = 'vault_id'
156
+ CONNECTION_ID = 'connection_id'
157
+ CONNECTION_URL = 'connection_url'
158
+ VAULT_CLIENT = 'vault_client'
159
+ VAULT_CONTROLLER = 'vault_controller'
160
+ DETECT_CONTROLLER = 'detect_controller'
161
+ CONTROLLER = 'controller'
162
+ VERIFY_SIGNATURE = 'verify_signature'
163
+ VERIFY_AUD = 'verify_aud'
164
+
165
+
166
+ class ConfigField:
167
+ CREDENTIALS = 'credentials'
168
+ CLUSTER_ID = 'cluster_id'
169
+ ENV = 'env'
170
+ VAULT_ID = 'vault_id'
171
+
172
+
173
+ class RequestParameter:
174
+ VALUE = 'value'
175
+ COLUMN_GROUP = 'column_group'
176
+ REDACTION = 'redaction'
177
+ REDACTION_TYPE = 'redaction_type'
178
+
179
+
180
+ class FileUploadField:
181
+ TABLE = 'table'
182
+ SKYFLOW_ID = 'skyflow_id'
183
+ COLUMN_NAME = 'column_name'
184
+ FILE_PATH = 'file_path'
185
+ BASE64 = 'base64'
186
+ FILE_OBJECT = 'file_object'
187
+ FILE_NAME = 'file_name'
188
+ FILE = 'file'
189
+ NAME = 'name'
190
+
191
+
192
+ class DeidentifyFileRequestField:
193
+ ENTITIES = 'entities'
194
+ ALLOW_REGEX_LIST = 'allow_regex_list'
195
+ RESTRICT_REGEX_LIST = 'restrict_regex_list'
196
+ OUTPUT_PROCESSED_IMAGE = 'output_processed_image'
197
+ OUTPUT_OCR_TEXT = 'output_ocr_text'
198
+ MASKING_METHOD = 'masking_method'
199
+ PIXEL_DENSITY = 'pixel_density'
200
+ DENSITY = 'density'
201
+ MAX_RESOLUTION = 'max_resolution'
202
+ OUTPUT_PROCESSED_AUDIO = 'output_processed_audio'
203
+ OUTPUT_TRANSCRIPTION = 'output_transcription'
204
+ BLEEP = 'bleep'
205
+ OUTPUT_DIRECTORY = 'output_directory'
206
+ WAIT_TIME = 'wait_time'
207
+
208
+
209
+ class DeidentifyField:
210
+ TEXT = 'text'
211
+ ENTITY_TYPES = 'entity_types'
212
+ TOKEN_TYPE = 'token_type'
213
+ ALLOW_REGEX = 'allow_regex'
214
+ RESTRICT_REGEX = 'restrict_regex'
215
+ TRANSFORMATIONS = 'transformations'
216
+ FORMAT = 'format'
217
+ OUTPUT = 'output'
218
+ STATUS = 'status'
219
+ RUN_ID = 'run_id'
220
+ WORD_CHARACTER_COUNT = 'word_character_count'
221
+ WORD_COUNT = 'word_count'
222
+ CHARACTER_COUNT = 'character_count'
223
+ SIZE = 'size'
224
+ DURATION = 'duration'
225
+ PAGES = 'pages'
226
+ SLIDES = 'slides'
227
+ PROCESSED_FILE = 'processed_file'
228
+ PROCESSED_FILE_TYPE = 'processed_file_type'
229
+ PROCESSED_FILE_EXTENSION = 'processed_file_extension'
230
+ REDACTED_FILE = 'redacted_file'
231
+ SHIFT_DATES = 'shift_dates'
232
+ DEFAULT = 'default'
233
+ ENTITY_UNQ_COUNTER = 'entity_unq_counter'
234
+ ENTITY_UNIQUE_COUNTER = 'entity_unique_counter'
235
+ ENTITY_ONLY = 'entity_only'
236
+ VAULT_TOKEN = 'vault_token'
237
+ ENTITIES = 'entities'
238
+ MAX_DAYS = 'max_days'
239
+ MIN_DAYS = 'min_days'
240
+ MAX = 'max'
241
+ MIN = 'min'
242
+ FILE = 'file'
243
+ TYPE = 'type'
244
+ EXTENSION = 'extension'
245
+ IN_PROGRESS = 'IN_PROGRESS'
246
+ REQUEST_OPTIONS = 'request_options'
247
+ BLEEP_GAIN = 'bleep_gain'
248
+ BLEEP_FREQUENCY = 'bleep_frequency'
249
+ BLEEP_START_PADDING = 'bleep_start_padding'
250
+ BLEEP_STOP_PADDING = 'bleep_stop_padding'
251
+ DENSITY = 'density'
252
+ TOKEN_FORMAT = 'token_format'
253
+ PROCESSED_FILE_RESPONSE_KEY = 'processedFile'
254
+ PROCESSED_FILE_TYPE_RESPONSE_KEY = 'processedFileType'
255
+ PROCESSED_FILE_EXTENSION_RESPONSE_KEY = 'processedFileExtension'
256
+
257
+
258
+ class RequestOperation:
259
+ INSERT = 'INSERT'
260
+ DELETE = 'DELETE'
261
+ GET = 'GET'
262
+ UPDATE = 'UPDATE'
263
+ QUERY = 'QUERY'
264
+ TOKENIZE = 'TOKENIZE'
265
+ DETOKENIZE = 'DETOKENIZE'
266
+ FILE_UPLOAD = 'FILE_UPLOAD'
267
+
268
+
269
+ class ConfigType:
270
+ VAULT = 'vault'
271
+ CONNECTION = 'connection'
272
+
273
+
274
+ class SqlCommand:
275
+ SELECT = 'SELECT'
276
+
277
+
278
+ class SdkPrefix:
279
+ SKYFLOW_PYTHON = 'skyflow-python@'
280
+ PYTHON_RUNTIME = 'Python '
281
+
282
+
283
+ class SdkMetricsKey:
284
+ SDK_NAME_VERSION = 'sdk_name_version'
285
+ SDK_CLIENT_DEVICE_MODEL = 'sdk_client_device_model'
286
+ SDK_CLIENT_OS_DETAILS = 'sdk_client_os_details'
287
+ SDK_RUNTIME_DETAILS = 'sdk_runtime_details'
288
+
289
+
290
+ class ErrorDefaults:
291
+ UNKNOWN_REQUEST_ID = 'unknown-request-id'
@@ -0,0 +1,12 @@
1
+ from .env import Env, EnvUrls
2
+ from .log_level import LogLevel
3
+ from .content_types import ContentType
4
+ from .detect_entities import DetectEntities
5
+ from .token_mode import TokenMode
6
+ from .token_type import TokenType
7
+ from .request_method import RequestMethod
8
+ from .redaction_type import RedactionType
9
+ from .detect_entities import DetectEntities
10
+ from .detect_output_transcriptions import DetectOutputTranscriptions
11
+ from .masking_method import MaskingMethod
12
+ from .token_type import TokenType
@@ -0,0 +1,9 @@
1
+ from enum import Enum
2
+
3
+ class ContentType(Enum):
4
+ JSON = 'application/json'
5
+ PLAINTEXT = 'text/plain'
6
+ XML = 'text/xml'
7
+ URLENCODED = 'application/x-www-form-urlencoded'
8
+ FORMDATA = 'multipart/form-data'
9
+ HTML = 'text/html'
@@ -0,0 +1,73 @@
1
+ from enum import Enum
2
+
3
+ class DetectEntities(Enum):
4
+ ACCOUNT_NUMBER = "account_number"
5
+ AGE = "age"
6
+ ALL = "all"
7
+ BANK_ACCOUNT = "bank_account"
8
+ BLOOD_TYPE = "blood_type"
9
+ CONDITION = "condition"
10
+ CORPORATE_ACTION = "corporate_action"
11
+ CREDIT_CARD = "credit_card"
12
+ CREDIT_CARD_EXPIRATION = "credit_card_expiration"
13
+ CVV = "cvv"
14
+ DATE = "date"
15
+ DAY = "day"
16
+ DATE_INTERVAL = "date_interval"
17
+ DOB = "dob"
18
+ DOSE = "dose"
19
+ DRIVER_LICENSE = "driver_license"
20
+ DRUG = "drug"
21
+ DURATION = "duration"
22
+ EFFECT = "effect"
23
+ EMAIL_ADDRESS = "email_address"
24
+ EVENT = "event"
25
+ FILENAME = "filename"
26
+ FINANCIAL_METRIC = "financial_metric"
27
+ GENDER = "gender"
28
+ HEALTHCARE_NUMBER = "healthcare_number"
29
+ INJURY = "injury"
30
+ IP_ADDRESS = "ip_address"
31
+ LANGUAGE = "language"
32
+ LOCATION = "location"
33
+ LOCATION_ADDRESS = "location_address"
34
+ LOCATION_ADDRESS_STREET = "location_address_street"
35
+ LOCATION_CITY = "location_city"
36
+ LOCATION_COORDINATE = "location_coordinate"
37
+ LOCATION_COUNTRY = "location_country"
38
+ LOCATION_STATE = "location_state"
39
+ LOCATION_ZIP = "location_zip"
40
+ MARITAL_STATUS = "marital_status"
41
+ MEDICAL_CODE = "medical_code"
42
+ MEDICAL_PROCESS = "medical_process"
43
+ MONEY = "money"
44
+ MONTH = "month"
45
+ NAME = "name"
46
+ NAME_FAMILY = "name_family"
47
+ NAME_GIVEN = "name_given"
48
+ NAME_MEDICAL_PROFESSIONAL = "name_medical_professional"
49
+ NUMERICAL_PII = "numerical_pii"
50
+ OCCUPATION = "occupation"
51
+ ORGANIZATION = "organization"
52
+ ORGANIZATION_ID = "organization_id"
53
+ ORGANIZATION_MEDICAL_FACILITY = "organization_medical_facility"
54
+ ORIGIN = "origin"
55
+ PASSPORT_NUMBER = "passport_number"
56
+ PASSWORD = "password"
57
+ PHONE_NUMBER = "phone_number"
58
+ PROJECT = "project"
59
+ PHYSICAL_ATTRIBUTE = "physical_attribute"
60
+ POLITICAL_AFFILIATION = "political_affiliation"
61
+ PRODUCT = "product"
62
+ RELIGION = "religion"
63
+ ROUTING_NUMBER = "routing_number"
64
+ SEXUALITY = "sexuality"
65
+ SSN = "ssn"
66
+ STATISTICS = "statistics"
67
+ TIME = "time"
68
+ TREND = "trend"
69
+ URL = "url"
70
+ USERNAME = "username"
71
+ VEHICLE_ID = "vehicle_id"
72
+ YEAR = "year"
73
+ ZODIAC_SIGN = "zodiac_sign"
@@ -0,0 +1,8 @@
1
+ from enum import Enum
2
+
3
+ class DetectOutputTranscriptions(Enum):
4
+ DIARIZED_TRANSCRIPTION = "diarized_transcription"
5
+ MEDICAL_DIARIZED_TRANSCRIPTION = "medical_diarized_transcription"
6
+ MEDICAL_TRANSCRIPTION = "medical_transcription"
7
+ TRANSCRIPTION = "transcription"
8
+ PLAINTEXT_TRANSCRIPTION = "plaintext_transcription"
@@ -0,0 +1,13 @@
1
+ from enum import Enum
2
+
3
+ class Env(Enum):
4
+ DEV = 'DEV'
5
+ SANDBOX = 'SANDBOX'
6
+ PROD = 'PROD'
7
+ STAGE = 'STAGE'
8
+
9
+ class EnvUrls(Enum):
10
+ PROD = "vault.skyflowapis.com"
11
+ SANDBOX = "vault.skyflowapis-preview.com"
12
+ DEV = "vault.skyflowapis.dev"
13
+ STAGE = "vault.skyflowapis.tech"
@@ -0,0 +1,8 @@
1
+ from enum import Enum
2
+
3
+ class LogLevel(Enum):
4
+ DEBUG = 1
5
+ INFO = 2
6
+ WARN = 3
7
+ ERROR = 4
8
+ OFF = 5
@@ -0,0 +1,5 @@
1
+ from enum import Enum
2
+
3
+ class MaskingMethod(Enum):
4
+ BLACKBOX= "blackbox"
5
+ BLUR= "blur"
@@ -0,0 +1,7 @@
1
+ from enum import Enum
2
+
3
+ class RedactionType(Enum):
4
+ PLAIN_TEXT = 'PLAIN_TEXT'
5
+ MASKED = 'MASKED'
6
+ DEFAULT = 'DEFAULT'
7
+ REDACTED = 'REDACTED'
@@ -0,0 +1,8 @@
1
+ from enum import Enum
2
+
3
+ class RequestMethod(Enum):
4
+ GET = "GET"
5
+ POST = "POST"
6
+ PUT = "PUT"
7
+ DELETE = "DELETE"
8
+ NONE = "NONE"
@@ -0,0 +1,6 @@
1
+ from enum import Enum
2
+
3
+ class TokenMode(Enum):
4
+ DISABLE = "DISABLE"
5
+ ENABLE = "ENABLE"
6
+ ENABLE_STRICT = "ENABLE_STRICT"
@@ -0,0 +1,6 @@
1
+ from enum import Enum
2
+
3
+ class TokenType(Enum):
4
+ VAULT_TOKEN = "vault_token"
5
+ ENTITY_UNIQUE_COUNTER = "entity_unq_counter"
6
+ ENTITY_ONLY = "entity_only"
@@ -0,0 +1,2 @@
1
+ from ._logger import Logger
2
+ from ._log_helpers import log_error, log_info, log_warn, log_error_log, set_active_log_level
@@ -0,0 +1,47 @@
1
+ from ..enums import LogLevel
2
+ from . import Logger
3
+ from ..constants import ResponseField
4
+
5
+ _active_log_level = LogLevel.ERROR
6
+
7
+
8
+ def set_active_log_level(level):
9
+ global _active_log_level
10
+ _active_log_level = level
11
+
12
+
13
+ def log_info(message, logger = None):
14
+ if not logger:
15
+ logger = Logger(LogLevel.INFO)
16
+
17
+ logger.info(message)
18
+
19
+ def log_warn(message, logger=None):
20
+ if not logger:
21
+ logger = Logger(_active_log_level)
22
+ logger.warn(message)
23
+
24
+ def log_error_log(message, logger=None):
25
+ if not logger:
26
+ logger = Logger(LogLevel.ERROR)
27
+ logger.error(message)
28
+
29
+ def log_error(message, http_code, request_id=None, grpc_code=None, http_status=None, details=None, logger=None):
30
+ if not logger:
31
+ logger = Logger(LogLevel.ERROR)
32
+
33
+ log_data = {
34
+ ResponseField.HTTP_CODE: http_code,
35
+ ResponseField.MESSAGE: message
36
+ }
37
+
38
+ if grpc_code is not None:
39
+ log_data[ResponseField.GRPC_CODE] = grpc_code
40
+ if http_status is not None:
41
+ log_data[ResponseField.HTTP_STATUS] = http_status
42
+ if request_id is not None:
43
+ log_data[ResponseField.REQUEST_ID] = request_id
44
+ if details is not None:
45
+ log_data[ResponseField.DETAILS] = details
46
+
47
+ logger.error(log_data)
@@ -0,0 +1,50 @@
1
+ import logging
2
+ from ..enums.log_level import LogLevel
3
+
4
+
5
+ class Logger:
6
+ def __init__(self, level=LogLevel.ERROR):
7
+ self.current_level = level
8
+ self.logger = logging.getLogger('skyflow-python')
9
+ self.logger.propagate = False # Prevent logs from being handled by parent loggers
10
+
11
+ # Remove any existing handlers to avoid duplicates or inherited handlers
12
+ if self.logger.hasHandlers():
13
+ self.logger.handlers.clear()
14
+
15
+ self.set_log_level(level)
16
+
17
+ handler = logging.StreamHandler()
18
+
19
+ # Create a formatter that only includes the message without any prefixes
20
+ formatter = logging.Formatter('%(message)s')
21
+ handler.setFormatter(formatter)
22
+
23
+ self.logger.addHandler(handler)
24
+
25
+ def set_log_level(self, level):
26
+ self.current_level = level
27
+ log_level_mapping = {
28
+ LogLevel.DEBUG: logging.DEBUG,
29
+ LogLevel.INFO: logging.INFO,
30
+ LogLevel.WARN: logging.WARNING,
31
+ LogLevel.ERROR: logging.ERROR,
32
+ LogLevel.OFF: logging.CRITICAL + 1
33
+ }
34
+ self.logger.setLevel(log_level_mapping[level])
35
+
36
+ def debug(self, message):
37
+ if self.current_level.value <= LogLevel.DEBUG.value:
38
+ self.logger.debug(message)
39
+
40
+ def info(self, message):
41
+ if self.current_level.value <= LogLevel.INFO.value:
42
+ self.logger.info(message)
43
+
44
+ def warn(self, message):
45
+ if self.current_level.value <= LogLevel.WARN.value:
46
+ self.logger.warning(message)
47
+
48
+ def error(self, message):
49
+ if self.current_level.value <= LogLevel.ERROR.value:
50
+ self.logger.error(message)
@@ -0,0 +1,11 @@
1
+ from ._validations import (
2
+ validate_required_field,
3
+ validate_api_key,
4
+ validate_credentials,
5
+ validate_token_options,
6
+ validate_log_level,
7
+ validate_keys,
8
+ validate_non_empty_string_list,
9
+ validate_vault_config,
10
+ validate_update_vault_config,
11
+ )