tamar-file-hub-client 0.0.3__py3-none-any.whl → 0.0.4__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.
@@ -401,12 +401,12 @@ class AsyncBlobService(BaseFileService):
401
401
  # 参数验证:必须提供 file 或 url 之一
402
402
  if file is None and not url:
403
403
  raise ValidationError("必须提供 file 或 url 参数之一")
404
-
404
+
405
405
  # 如果提供了URL,先下载文件
406
406
  if url:
407
407
  # 下载文件到内存
408
408
  downloaded_content = await self.http_downloader.download(url)
409
-
409
+
410
410
  # 如果没有指定文件名,从URL中提取
411
411
  if not file_name:
412
412
  from urllib.parse import urlparse
@@ -414,22 +414,32 @@ class AsyncBlobService(BaseFileService):
414
414
  parsed_url = urlparse(url)
415
415
  url_path = PathLib(parsed_url.path)
416
416
  file_name = url_path.name if url_path.name else f"download_{hashlib.md5(url.encode()).hexdigest()[:8]}"
417
-
417
+
418
418
  # 使用下载的内容作为file参数
419
419
  file = downloaded_content
420
-
420
+
421
421
  # 提取文件信息(bytes会返回默认的MIME类型,我们稍后会基于文件名重新计算)
422
- extracted_file_name, content, file_size, _, _, file_hash = self._extract_file_info(file)
423
-
422
+ _, content, file_size, _, _, file_hash = self._extract_file_info(file)
423
+
424
424
  # file_name已经在上面设置了(要么是用户指定的,要么是从URL提取的)
425
425
  extracted_file_name = file_name
426
-
426
+
427
427
  # 基于文件名计算文件类型和MIME类型
428
- file_type = Path(extracted_file_name).suffix.lstrip('.').lower() if Path(extracted_file_name).suffix else 'dat'
428
+ file_type = Path(extracted_file_name).suffix.lstrip('.').lower() if Path(
429
+ extracted_file_name).suffix else 'dat'
429
430
  mime_type = get_file_mime_type(Path(extracted_file_name))
430
431
  else:
431
432
  # 解析文件参数,提取文件信息
432
- extracted_file_name, content, file_size, mime_type, file_type, file_hash = self._extract_file_info(file)
433
+ extracted_file_name, content, file_size, extract_mime_type, extract_file_type, file_hash = self._extract_file_info(
434
+ file)
435
+ if file_name:
436
+ extracted_file_name = file_name
437
+ mime_type = get_file_mime_type(file_name)
438
+ file_type = Path(extracted_file_name).suffix.lstrip('.').lower() if Path(
439
+ extracted_file_name).suffix else 'dat'
440
+ else:
441
+ mime_type = extract_mime_type
442
+ file_type = extract_file_type
433
443
 
434
444
  # 根据文件大小自动选择上传模式
435
445
  if mode == UploadMode.NORMAL:
@@ -387,24 +387,25 @@ class SyncBlobService(BaseFileService):
387
387
  expire_seconds: 过期秒数
388
388
  url: 要下载并上传的URL(可选)
389
389
  file_name: 当使用url参数时指定的文件名(可选)
390
+ mime_type: 文件mine-type,当传入的是二进制内容时必传
390
391
  request_id: 请求ID(可选,如果不提供则自动生成)
391
392
  **metadata: 额外的元数据
392
393
 
393
394
  Returns:
394
395
  文件信息
395
-
396
+
396
397
  Note:
397
398
  必须提供 file 或 url 参数之一
398
399
  """
399
400
  # 参数验证:必须提供 file 或 url 之一
400
401
  if file is None and not url:
401
402
  raise ValidationError("必须提供 file 或 url 参数之一")
402
-
403
+
403
404
  # 如果提供了URL,先下载文件
404
405
  if url:
405
406
  # 下载文件到内存
406
407
  downloaded_content = self.http_downloader.download(url)
407
-
408
+
408
409
  # 如果没有指定文件名,从URL中提取
409
410
  if not file_name:
410
411
  from urllib.parse import urlparse
@@ -412,24 +413,32 @@ class SyncBlobService(BaseFileService):
412
413
  parsed_url = urlparse(url)
413
414
  url_path = PathLib(parsed_url.path)
414
415
  file_name = url_path.name if url_path.name else f"download_{hashlib.md5(url.encode()).hexdigest()[:8]}"
415
-
416
+
416
417
  # 使用下载的内容作为file参数
417
418
  file = downloaded_content
418
-
419
+
419
420
  # 提取文件信息(bytes会返回默认的MIME类型,我们稍后会基于文件名重新计算)
420
- extracted_file_name, content, file_size, _, _, file_hash = self._extract_file_info(file)
421
-
421
+ _, content, file_size, _, _, file_hash = self._extract_file_info(file)
422
+
422
423
  # file_name已经在上面设置了(要么是用户指定的,要么是从URL提取的)
423
424
  extracted_file_name = file_name
424
-
425
+
425
426
  # 基于文件名计算文件类型和MIME类型
426
- file_type = Path(extracted_file_name).suffix.lstrip('.').lower() if Path(extracted_file_name).suffix else 'dat'
427
+ file_type = Path(extracted_file_name).suffix.lstrip('.').lower() if Path(
428
+ extracted_file_name).suffix else 'dat'
427
429
  mime_type = get_file_mime_type(Path(extracted_file_name))
428
430
  else:
429
431
  # 解析文件参数,提取文件信息
430
- extracted_file_name, content, file_size, mime_type, file_type, file_hash = self._extract_file_info(file)
431
- if not file_name:
432
- mime_type = get_file_mime_type(extracted_file_name)
432
+ extracted_file_name, content, file_size, extract_mime_type, extract_file_type, file_hash = self._extract_file_info(
433
+ file)
434
+ if file_name:
435
+ extracted_file_name = file_name
436
+ mime_type = get_file_mime_type(file_name)
437
+ file_type = Path(extracted_file_name).suffix.lstrip('.').lower() if Path(
438
+ extracted_file_name).suffix else 'dat'
439
+ else:
440
+ mime_type = extract_mime_type
441
+ file_type = extract_file_type
433
442
 
434
443
  # 根据文件大小自动选择上传模式
435
444
  if mode == UploadMode.NORMAL:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tamar-file-hub-client
3
- Version: 0.0.3
3
+ Version: 0.0.4
4
4
  Summary: A Python SDK for gRPC-based file management system
5
5
  Home-page: https://github.com/Tamar-Edge-AI/file-hub-client
6
6
  Author: Oscar Ou
@@ -29,10 +29,10 @@ file_hub_client/schemas/folder.py,sha256=D7UFsLCou-7CCXCQvuRObaBQEGmETsm1cgGOG1c
29
29
  file_hub_client/schemas/taple.py,sha256=qoH458xMAdYg8_jKdYqHJy5-gZ1ZFzOAkSPFROQuhQI,18172
30
30
  file_hub_client/services/__init__.py,sha256=yh5mir0dKB_LtJMk2hTpQI9WSlguaxtVD2KomMnzxdM,514
31
31
  file_hub_client/services/file/__init__.py,sha256=aJygo_AzYk5NN-ezp-a9YlugJ82wVIP9e5e54fl0UsI,342
32
- file_hub_client/services/file/async_blob_service.py,sha256=jcuQm6mBTZI82PxGNxYDf0q-K1GgiPnncnP0TQrK0lM,20129
32
+ file_hub_client/services/file/async_blob_service.py,sha256=x4Xmxc5FqeiYZ7yKb5_fDjJhgxpq79g7dJuGbHIWMow,20484
33
33
  file_hub_client/services/file/async_file_service.py,sha256=QxVfwPoJe_oj8t7EOLHMQF3PQf4E1-HctQR7yvY9D3g,8585
34
34
  file_hub_client/services/file/base_file_service.py,sha256=wTxplrTk9klfwIHOPfTL0TQd6gX4nEmkYtIhpiZ3GVo,4791
35
- file_hub_client/services/file/sync_blob_service.py,sha256=mN3YAjaOx7zliU6Nf2jMpHXiTOiDlAHHUKtZ7WgCKww,19970
35
+ file_hub_client/services/file/sync_blob_service.py,sha256=ZHNEwoB97G3mQrGOCJ491xxrPS7XMa2kSPDpKU18WKE,20296
36
36
  file_hub_client/services/file/sync_file_service.py,sha256=i1pLCcGNWMlWQfAW4dlhLsEiV3oc1jXKmKax35k0CGw,8439
37
37
  file_hub_client/services/folder/__init__.py,sha256=vGbMOlNiEBdnWZB1xE74RJtoroI28hKHCWfQV1GqKQc,210
38
38
  file_hub_client/services/folder/async_folder_service.py,sha256=uFEmtW8EXYvaKYT2JCitWbdTGR1EtHlx_eBN5P3JUZg,7293
@@ -51,7 +51,7 @@ file_hub_client/utils/logging.py,sha256=W32_goFF7_tVN_hCfe85smPu2lHW0jPs_AGlSIYS
51
51
  file_hub_client/utils/retry.py,sha256=PybdlGEdYdjeCPBg5JfKoKHsRxAIy24v5oyIeYQAg9U,12693
52
52
  file_hub_client/utils/smart_retry.py,sha256=RjBhyG6SNDfMXxNxKU_qayWDD6Ihp7ow6_BPjhgflM0,16465
53
53
  file_hub_client/utils/upload_helper.py,sha256=gEtn9OXVJiGUpVev_fqrDnRQ6AFiiP9goLzFrVpqXmU,22569
54
- tamar_file_hub_client-0.0.3.dist-info/METADATA,sha256=lin3JH7pNTue4fenGtEu9NjJav5zacn8h1_bohhuOQI,64873
55
- tamar_file_hub_client-0.0.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
56
- tamar_file_hub_client-0.0.3.dist-info/top_level.txt,sha256=9wcR7hyAJQdJg_kuH6WR3nmpJ8O-j8aJNK8f_kcFy6U,16
57
- tamar_file_hub_client-0.0.3.dist-info/RECORD,,
54
+ tamar_file_hub_client-0.0.4.dist-info/METADATA,sha256=Xonh4NRJcoFB5vbw7bK64RpZSC2OZRbB2p-_lyQtIa8,64873
55
+ tamar_file_hub_client-0.0.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
56
+ tamar_file_hub_client-0.0.4.dist-info/top_level.txt,sha256=9wcR7hyAJQdJg_kuH6WR3nmpJ8O-j8aJNK8f_kcFy6U,16
57
+ tamar_file_hub_client-0.0.4.dist-info/RECORD,,