tamar-file-hub-client 0.0.5__tar.gz → 0.0.6__tar.gz
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.
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/PKG-INFO +1 -1
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/client.py +33 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/setup.py +1 -1
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/tamar_file_hub_client.egg-info/PKG-INFO +1 -1
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/tamar_file_hub_client.egg-info/SOURCES.txt +0 -1
- tamar_file_hub_client-0.0.5/file_hub_client/rpc/generate_grpc.py +0 -76
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/MANIFEST.in +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/README.md +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/__init__.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/enums/__init__.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/enums/export_format.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/enums/role.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/enums/upload_mode.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/errors/__init__.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/errors/exceptions.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/py.typed +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/__init__.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/async_client.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/gen/__init__.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/gen/file_service_pb2.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/gen/file_service_pb2_grpc.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/gen/folder_service_pb2.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/gen/folder_service_pb2_grpc.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/gen/taple_service_pb2.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/gen/taple_service_pb2_grpc.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/interceptors.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/protos/file_service.proto +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/protos/folder_service.proto +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/protos/taple_service.proto +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/sync_client.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/schemas/__init__.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/schemas/context.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/schemas/file.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/schemas/folder.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/schemas/taple.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/services/__init__.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/services/file/__init__.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/services/file/async_blob_service.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/services/file/async_file_service.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/services/file/base_file_service.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/services/file/sync_blob_service.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/services/file/sync_file_service.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/services/folder/__init__.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/services/folder/async_folder_service.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/services/folder/sync_folder_service.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/services/taple/__init__.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/services/taple/async_taple_service.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/services/taple/base_taple_service.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/services/taple/idempotent_taple_mixin.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/services/taple/sync_taple_service.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/utils/__init__.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/utils/converter.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/utils/download_helper.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/utils/file_utils.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/utils/idempotency.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/utils/logging.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/utils/retry.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/utils/smart_retry.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/utils/upload_helper.py +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/setup.cfg +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/tamar_file_hub_client.egg-info/dependency_links.txt +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/tamar_file_hub_client.egg-info/requires.txt +0 -0
- {tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/tamar_file_hub_client.egg-info/top_level.txt +0 -0
@@ -23,6 +23,8 @@ from .services import (
|
|
23
23
|
)
|
24
24
|
from .schemas.context import UserContext, RequestContext
|
25
25
|
|
26
|
+
MAX_MESSAGE_LENGTH = 2 ** 31 - 1 # 对于32位系统
|
27
|
+
|
26
28
|
|
27
29
|
class AsyncTamarFileHubClient:
|
28
30
|
"""异步文件管理系统客户端"""
|
@@ -41,6 +43,7 @@ class AsyncTamarFileHubClient:
|
|
41
43
|
request_context: Optional[RequestContext] = None,
|
42
44
|
enable_logging: bool = True,
|
43
45
|
log_level: str = "INFO",
|
46
|
+
options: Optional[list] = None,
|
44
47
|
):
|
45
48
|
"""
|
46
49
|
初始化客户端
|
@@ -56,6 +59,13 @@ class AsyncTamarFileHubClient:
|
|
56
59
|
default_metadata: 默认的元数据(如 org_id, user_id 等)
|
57
60
|
user_context: 用户上下文
|
58
61
|
request_context: 请求上下文
|
62
|
+
enable_logging: 是否启用日志
|
63
|
+
log_level: 日志级别
|
64
|
+
options: gRPC 通道选项列表,例如:
|
65
|
+
[
|
66
|
+
('grpc.max_send_message_length', MAX_MESSAGE_LENGTH),
|
67
|
+
('grpc.max_receive_message_length', MAX_MESSAGE_LENGTH),
|
68
|
+
]
|
59
69
|
|
60
70
|
环境变量:
|
61
71
|
FILE_HUB_HOST: gRPC 服务器地址
|
@@ -86,11 +96,19 @@ class AsyncTamarFileHubClient:
|
|
86
96
|
if default_metadata is None:
|
87
97
|
default_metadata = {}
|
88
98
|
|
99
|
+
# 设置默认的 gRPC 选项(增加消息大小限制)
|
100
|
+
if options is None:
|
101
|
+
options = [
|
102
|
+
('grpc.max_send_message_length', MAX_MESSAGE_LENGTH),
|
103
|
+
('grpc.max_receive_message_length', MAX_MESSAGE_LENGTH),
|
104
|
+
]
|
105
|
+
|
89
106
|
self._client = AsyncGrpcClient(
|
90
107
|
self._host,
|
91
108
|
self._port,
|
92
109
|
self._secure,
|
93
110
|
credentials,
|
111
|
+
options=options,
|
94
112
|
retry_count=self._retry_count,
|
95
113
|
retry_delay=self._retry_delay,
|
96
114
|
default_metadata=default_metadata,
|
@@ -243,6 +261,13 @@ class TamarFileHubClient:
|
|
243
261
|
default_metadata: 默认的元数据(如 org_id, user_id 等)
|
244
262
|
user_context: 用户上下文
|
245
263
|
request_context: 请求上下文
|
264
|
+
enable_logging: 是否启用日志
|
265
|
+
log_level: 日志级别
|
266
|
+
options: gRPC 通道选项列表,例如:
|
267
|
+
[
|
268
|
+
('grpc.max_send_message_length', 100 * 1024 * 1024), # 100MB
|
269
|
+
('grpc.max_receive_message_length', 100 * 1024 * 1024), # 100MB
|
270
|
+
]
|
246
271
|
|
247
272
|
环境变量:
|
248
273
|
FILE_HUB_HOST: gRPC 服务器地址
|
@@ -273,11 +298,19 @@ class TamarFileHubClient:
|
|
273
298
|
if default_metadata is None:
|
274
299
|
default_metadata = {}
|
275
300
|
|
301
|
+
# 设置默认的 gRPC 选项(增加消息大小限制)
|
302
|
+
if options is None:
|
303
|
+
options = [
|
304
|
+
('grpc.max_send_message_length', 100 * 1024 * 1024), # 100MB
|
305
|
+
('grpc.max_receive_message_length', 100 * 1024 * 1024), # 100MB
|
306
|
+
]
|
307
|
+
|
276
308
|
self._client = SyncGrpcClient(
|
277
309
|
self._host,
|
278
310
|
self._port,
|
279
311
|
self._secure,
|
280
312
|
credentials,
|
313
|
+
options=options,
|
281
314
|
retry_count=self._retry_count,
|
282
315
|
retry_delay=self._retry_delay,
|
283
316
|
default_metadata=default_metadata,
|
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|
2
2
|
|
3
3
|
setup(
|
4
4
|
name="tamar-file-hub-client",
|
5
|
-
version="0.0.
|
5
|
+
version="0.0.6",
|
6
6
|
description="A Python SDK for gRPC-based file management system",
|
7
7
|
long_description=open("README.md", encoding="utf-8").read(),
|
8
8
|
long_description_content_type="text/markdown",
|
@@ -12,7 +12,6 @@ file_hub_client/errors/__init__.py
|
|
12
12
|
file_hub_client/errors/exceptions.py
|
13
13
|
file_hub_client/rpc/__init__.py
|
14
14
|
file_hub_client/rpc/async_client.py
|
15
|
-
file_hub_client/rpc/generate_grpc.py
|
16
15
|
file_hub_client/rpc/interceptors.py
|
17
16
|
file_hub_client/rpc/sync_client.py
|
18
17
|
file_hub_client/rpc/gen/__init__.py
|
@@ -1,76 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
生成gRPC Python代码的脚本
|
3
|
-
"""
|
4
|
-
import os
|
5
|
-
import subprocess
|
6
|
-
from pathlib import Path
|
7
|
-
|
8
|
-
|
9
|
-
def generate_grpc_code():
|
10
|
-
"""生成gRPC Python代码"""
|
11
|
-
# 获取当前脚本所在目录
|
12
|
-
current_dir = Path(__file__).parent
|
13
|
-
proto_dir = current_dir / "protos"
|
14
|
-
gen_dir = current_dir / "gen"
|
15
|
-
|
16
|
-
# 创建生成目录
|
17
|
-
gen_dir.mkdir(exist_ok=True)
|
18
|
-
|
19
|
-
# 创建__init__.py文件
|
20
|
-
(gen_dir / "__init__.py").touch()
|
21
|
-
|
22
|
-
# 获取所有proto文件
|
23
|
-
proto_files = list(proto_dir.glob("*.proto"))
|
24
|
-
|
25
|
-
for proto_file in proto_files:
|
26
|
-
print(f"生成 {proto_file.name} 的Python代码...")
|
27
|
-
|
28
|
-
# 生成gRPC代码
|
29
|
-
cmd = [
|
30
|
-
"python3", "-m", "grpc_tools.protoc",
|
31
|
-
f"-I{proto_dir}",
|
32
|
-
f"--python_out={gen_dir}",
|
33
|
-
f"--grpc_python_out={gen_dir}",
|
34
|
-
str(proto_file)
|
35
|
-
]
|
36
|
-
|
37
|
-
result = subprocess.run(cmd, capture_output=True, text=True)
|
38
|
-
|
39
|
-
if result.returncode != 0:
|
40
|
-
print(f"错误: {result.stderr}")
|
41
|
-
raise RuntimeError(f"生成gRPC代码失败: {result.stderr}")
|
42
|
-
else:
|
43
|
-
print(f"成功生成 {proto_file.name}")
|
44
|
-
|
45
|
-
# 修复导入路径
|
46
|
-
fix_imports(gen_dir)
|
47
|
-
|
48
|
-
print("所有gRPC代码生成完成!")
|
49
|
-
|
50
|
-
|
51
|
-
def fix_imports(gen_dir):
|
52
|
-
"""修复生成的Python文件中的导入路径"""
|
53
|
-
for py_file in gen_dir.glob("*_pb2*.py"):
|
54
|
-
with open(py_file, "r", encoding="utf-8") as f:
|
55
|
-
content = f.read()
|
56
|
-
|
57
|
-
# 修复导入路径 - 现在有多个proto文件
|
58
|
-
for proto_name in ["file_service", "folder_service", "taple_service"]:
|
59
|
-
content = content.replace(f"import {proto_name}_pb2", f"from . import {proto_name}_pb2")
|
60
|
-
|
61
|
-
with open(py_file, "w", encoding="utf-8") as f:
|
62
|
-
f.write(content)
|
63
|
-
|
64
|
-
|
65
|
-
def main():
|
66
|
-
"""命令行入口点"""
|
67
|
-
try:
|
68
|
-
generate_grpc_code()
|
69
|
-
except Exception as e:
|
70
|
-
print(f"生成失败: {e}")
|
71
|
-
return 1
|
72
|
-
return 0
|
73
|
-
|
74
|
-
|
75
|
-
if __name__ == "__main__":
|
76
|
-
generate_grpc_code()
|
File without changes
|
File without changes
|
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/enums/__init__.py
RENAMED
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/enums/export_format.py
RENAMED
File without changes
|
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/enums/upload_mode.py
RENAMED
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/errors/__init__.py
RENAMED
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/errors/exceptions.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/async_client.py
RENAMED
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/gen/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/interceptors.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/rpc/sync_client.py
RENAMED
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/schemas/__init__.py
RENAMED
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/schemas/context.py
RENAMED
File without changes
|
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/schemas/folder.py
RENAMED
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/schemas/taple.py
RENAMED
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/services/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/utils/__init__.py
RENAMED
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/utils/converter.py
RENAMED
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/utils/download_helper.py
RENAMED
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/utils/file_utils.py
RENAMED
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/utils/idempotency.py
RENAMED
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/utils/logging.py
RENAMED
File without changes
|
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/utils/smart_retry.py
RENAMED
File without changes
|
{tamar_file_hub_client-0.0.5 → tamar_file_hub_client-0.0.6}/file_hub_client/utils/upload_helper.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|