Skip to content

Commit 1f2ff74

Browse files
committed
Merge branch 'himanshu-2496' into aadarsh-st/SK-2521-Fix-python-issue
2 parents f06761e + 5eb3da9 commit 1f2ff74

File tree

8 files changed

+425
-289
lines changed

8 files changed

+425
-289
lines changed

ruff.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@ exclude = [
88
"venv",
99
"build",
1010
"dist",
11-
"tests"
11+
"tests",
12+
"samples"
1213
]
1314

1415
line-length = 120
1516

1617
[lint]
17-
select = ["N"]
18+
select = ["N", "PLR2004"]
1819

1920
[lint.pep8-naming]

skyflow/utils/_skyflow_messages.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,7 @@ class ErrorLogs(Enum):
389389
SAVING_DEIDENTIFY_FILE_FAILED = f"{ERROR}: [{error_prefix}] Error while saving deidentified file to output directory."
390390
REIDENTIFY_TEXT_REQUEST_REJECTED = f"{ERROR}: [{error_prefix}] Reidentify text resulted in failure."
391391
DETECT_FILE_REQUEST_REJECTED = f"{ERROR}: [{error_prefix}] Deidentify file resulted in failure."
392+
EMPTY_FILE_COLUMN_NAME = f"{ERROR}: [{error_prefix}] Empty column name in FILE_UPLOAD"
392393

393394
class Interface(Enum):
394395
INSERT = "INSERT"

skyflow/utils/_utils.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
from skyflow.vault.detect import EntityInfo, TextIndex
2222
from . import SkyflowMessages, SDK_VERSION
2323
from .constants import (PROTOCOL, HttpHeader, ApiKey, ContentType as ContentTypeConstants,
24-
EncodingType, BooleanString, ResponseField, CredentialField)
24+
EncodingType, BooleanString, ResponseField, CredentialField, SdkPrefix,
25+
SdkMetricsKey, ErrorDefaults, HttpStatusCode)
2526
from .enums import Env, ContentType, EnvUrls
2627
from skyflow.vault.data import InsertResponse, UpdateResponse, DeleteResponse, QueryResponse, GetResponse
2728
from .validations import validate_invoke_connection_params
@@ -129,7 +130,7 @@ def construct_invoke_connection_request(request, connection_url, logger) -> Prep
129130

130131
validate_invoke_connection_params(logger, request.query_params, request.path_params)
131132

132-
if not hasattr(request.method, 'value'):
133+
if not hasattr(request.method, ResponseField.VALUE):
133134
raise SkyflowError(SkyflowMessages.Error.INVALID_REQUEST_METHOD.value, invalid_input_error_code)
134135

135136
try:
@@ -187,7 +188,7 @@ def get_data_from_content_type(data, content_type):
187188

188189

189190
def get_metrics():
190-
sdk_name_version = "skyflow-python@" + SDK_VERSION
191+
sdk_name_version = SdkPrefix.SKYFLOW_PYTHON + SDK_VERSION
191192

192193
try:
193194
sdk_client_device_model = platform.node()
@@ -205,10 +206,10 @@ def get_metrics():
205206
sdk_runtime_details = ""
206207

207208
details_dic = {
208-
'sdk_name_version': sdk_name_version,
209-
'sdk_client_device_model': sdk_client_device_model,
210-
'sdk_client_os_details': sdk_client_os_details,
211-
'sdk_runtime_details': "Python " + sdk_runtime_details,
209+
SdkMetricsKey.SDK_NAME_VERSION: sdk_name_version,
210+
SdkMetricsKey.SDK_CLIENT_DEVICE_MODEL: sdk_client_device_model,
211+
SdkMetricsKey.SDK_CLIENT_OS_DETAILS: sdk_client_os_details,
212+
SdkMetricsKey.SDK_RUNTIME_DETAILS: SdkPrefix.PYTHON_RUNTIME + sdk_runtime_details,
212213
}
213214
return details_dic
214215

@@ -223,7 +224,7 @@ def parse_insert_response(api_response, continue_on_error):
223224
insert_response = InsertResponse()
224225
if continue_on_error:
225226
for idx, response in enumerate(api_response_data.responses):
226-
if response[ResponseField.STATUS] == 200:
227+
if response[ResponseField.STATUS] == HttpStatusCode.OK:
227228
body = response[ResponseField.BODY]
228229
if ResponseField.RECORDS in body:
229230
for record in body[ResponseField.RECORDS]:
@@ -235,7 +236,7 @@ def parse_insert_response(api_response, continue_on_error):
235236
if ResponseField.TOKENS in record:
236237
inserted_field.update(record[ResponseField.TOKENS])
237238
inserted_fields.append(inserted_field)
238-
elif response[ResponseField.STATUS] == 400:
239+
elif response[ResponseField.STATUS] == HttpStatusCode.BAD_REQUEST:
239240
error = {
240241
ResponseField.REQUEST_INDEX: idx,
241242
ResponseField.REQUEST_ID: request_id,
@@ -352,7 +353,7 @@ def parse_invoke_connection_response(api_response: requests.Response):
352353
data = json.loads(content)
353354
metadata = {}
354355
if HttpHeader.X_REQUEST_ID in api_response.headers:
355-
metadata['request_id'] = api_response.headers[HttpHeader.X_REQUEST_ID]
356+
metadata[ResponseField.REQUEST_ID] = api_response.headers[HttpHeader.X_REQUEST_ID]
356357

357358
return InvokeConnectionResponse(data=data, metadata=metadata, errors=None)
358359
except Exception as e:
@@ -400,7 +401,7 @@ def handle_exception(error, logger):
400401
if (isinstance(error, httpx.ConnectError)):
401402
handle_generic_error(error, None, SkyflowMessages.ErrorCodes.INVALID_INPUT.value, logger)
402403

403-
request_id = error.headers.get(HttpHeader.X_REQUEST_ID, 'unknown-request-id')
404+
request_id = error.headers.get(HttpHeader.X_REQUEST_ID, ErrorDefaults.UNKNOWN_REQUEST_ID)
404405
content_type = error.headers.get(HttpHeader.CONTENT_TYPE_LOWERCASE)
405406
data = error.body
406407

skyflow/utils/constants.py

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@ class HttpHeader:
1313
X_REQUEST_ID = 'x-request-id'
1414
ERROR_FROM_CLIENT = 'error-from-client'
1515
AUTHORIZATION = 'Authorization'
16+
X_SKYFLOW_AUTHORIZATION_HEADER = 'X-Skyflow-Authorization'
1617

1718

1819
class HttpStatusCode:
1920
OK = 200
2021
BAD_REQUEST = 400
22+
UNAUTHORIZED = 401
2123
INTERNAL_SERVER_ERROR = 500
2224

2325

@@ -123,6 +125,8 @@ class CredentialField:
123125
API_KEY = 'api_key'
124126
TOKEN = 'token'
125127
PATH = 'path'
128+
CONTEXT = 'context'
129+
ROLES = 'roles'
126130

127131

128132
class JwtField:
@@ -165,3 +169,114 @@ class RequestParameter:
165169
COLUMN_GROUP = 'column_group'
166170
REDACTION = 'redaction'
167171

172+
173+
class FileUploadField:
174+
TABLE = 'table'
175+
SKYFLOW_ID = 'skyflow_id'
176+
COLUMN_NAME = 'column_name'
177+
FILE_PATH = 'file_path'
178+
BASE64 = 'base64'
179+
FILE_OBJECT = 'file_object'
180+
FILE_NAME = 'file_name'
181+
FILE = 'file'
182+
NAME = 'name'
183+
184+
185+
class DeidentifyFileRequestField:
186+
ENTITIES = 'entities'
187+
ALLOW_REGEX_LIST = 'allow_regex_list'
188+
RESTRICT_REGEX_LIST = 'restrict_regex_list'
189+
OUTPUT_PROCESSED_IMAGE = 'output_processed_image'
190+
OUTPUT_OCR_TEXT = 'output_ocr_text'
191+
MASKING_METHOD = 'masking_method'
192+
PIXEL_DENSITY = 'pixel_density'
193+
MAX_RESOLUTION = 'max_resolution'
194+
OUTPUT_PROCESSED_AUDIO = 'output_processed_audio'
195+
OUTPUT_TRANSCRIPTION = 'output_transcription'
196+
BLEEP = 'bleep'
197+
OUTPUT_DIRECTORY = 'output_directory'
198+
WAIT_TIME = 'wait_time'
199+
200+
201+
class DeidentifyField:
202+
TEXT = 'text'
203+
ENTITY_TYPES = 'entity_types'
204+
TOKEN_TYPE = 'token_type'
205+
ALLOW_REGEX = 'allow_regex'
206+
RESTRICT_REGEX = 'restrict_regex'
207+
TRANSFORMATIONS = 'transformations'
208+
FORMAT = 'format'
209+
OUTPUT = 'output'
210+
STATUS = 'status'
211+
RUN_ID = 'run_id'
212+
WORD_CHARACTER_COUNT = 'word_character_count'
213+
WORD_COUNT = 'word_count'
214+
CHARACTER_COUNT = 'character_count'
215+
SIZE = 'size'
216+
DURATION = 'duration'
217+
PAGES = 'pages'
218+
SLIDES = 'slides'
219+
PROCESSED_FILE = 'processed_file'
220+
PROCESSED_FILE_TYPE = 'processed_file_type'
221+
PROCESSED_FILE_EXTENSION = 'processed_file_extension'
222+
REDACTED_FILE = 'redacted_file'
223+
SHIFT_DATES = 'shift_dates'
224+
DEFAULT = 'default'
225+
ENTITY_UNQ_COUNTER = 'entity_unq_counter'
226+
ENTITY_UNIQUE_COUNTER = 'entity_unique_counter'
227+
ENTITY_ONLY = 'entity_only'
228+
ENTITIES = 'entities'
229+
MAX_DAYS = 'max_days'
230+
MIN_DAYS = 'min_days'
231+
MAX = 'max'
232+
MIN = 'min'
233+
FILE = 'file'
234+
TYPE = 'type'
235+
EXTENSION = 'extension'
236+
IN_PROGRESS = 'IN_PROGRESS'
237+
REQUEST_OPTIONS = 'request_options'
238+
BLEEP_GAIN = 'bleep_gain'
239+
BLEEP_FREQUENCY = 'bleep_frequency'
240+
BLEEP_START_PADDING = 'bleep_start_padding'
241+
BLEEP_STOP_PADDING = 'bleep_stop_padding'
242+
DENSITY = 'density'
243+
TOKEN_FORMAT = 'token_format'
244+
PROCESSED_FILE_RESPONSE_KEY = 'processedFile'
245+
PROCESSED_FILE_TYPE_RESPONSE_KEY = 'processedFileType'
246+
PROCESSED_FILE_EXTENSION_RESPONSE_KEY = 'processedFileExtension'
247+
248+
249+
class RequestOperation:
250+
INSERT = 'INSERT'
251+
DELETE = 'DELETE'
252+
GET = 'GET'
253+
UPDATE = 'UPDATE'
254+
QUERY = 'QUERY'
255+
TOKENIZE = 'TOKENIZE'
256+
DETOKENIZE = 'DETOKENIZE'
257+
FILE_UPLOAD = 'FILE_UPLOAD'
258+
259+
260+
class ConfigType:
261+
VAULT = 'vault'
262+
CONNECTION = 'connection'
263+
264+
265+
class SqlCommand:
266+
SELECT = 'SELECT'
267+
268+
269+
class SdkPrefix:
270+
SKYFLOW_PYTHON = 'skyflow-python@'
271+
PYTHON_RUNTIME = 'Python '
272+
273+
274+
class SdkMetricsKey:
275+
SDK_NAME_VERSION = 'sdk_name_version'
276+
SDK_CLIENT_DEVICE_MODEL = 'sdk_client_device_model'
277+
SDK_CLIENT_OS_DETAILS = 'sdk_client_os_details'
278+
SDK_RUNTIME_DETAILS = 'sdk_runtime_details'
279+
280+
281+
class ErrorDefaults:
282+
UNKNOWN_REQUEST_ID = 'unknown-request-id'

0 commit comments

Comments
 (0)