jit-utils-backend 0.0.1__py3-none-any.whl → 0.0.2__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.
- jit_utils/__init__.py +7 -135
- {jit_utils_backend-0.0.1.dist-info → jit_utils_backend-0.0.2.dist-info}/METADATA +18 -17
- {jit_utils_backend-0.0.1.dist-info → jit_utils_backend-0.0.2.dist-info}/RECORD +6 -6
- tests/test_package_imports.py +89 -98
- {jit_utils_backend-0.0.1.dist-info → jit_utils_backend-0.0.2.dist-info}/WHEEL +0 -0
- {jit_utils_backend-0.0.1.dist-info → jit_utils_backend-0.0.2.dist-info}/top_level.txt +0 -0
jit_utils/__init__.py
CHANGED
@@ -12,141 +12,13 @@ A comprehensive utility package for backend development with JIT.
|
|
12
12
|
- 网络工具
|
13
13
|
- 签名工具
|
14
14
|
等等...
|
15
|
+
|
16
|
+
使用方法:
|
17
|
+
from jit_utils.string import randomString
|
18
|
+
from jit_utils.time import now
|
19
|
+
from jit_utils.qrcode import Qrcode
|
20
|
+
...
|
15
21
|
"""
|
16
22
|
|
17
|
-
__version__ = '0.0.
|
23
|
+
__version__ = '0.0.2'
|
18
24
|
__author__ = 'zangtao'
|
19
|
-
|
20
|
-
# 导入主要的工具类和函数
|
21
|
-
try:
|
22
|
-
from .decorator import forward
|
23
|
-
except ImportError:
|
24
|
-
pass
|
25
|
-
|
26
|
-
# 时间工具
|
27
|
-
try:
|
28
|
-
from . import time as time_utils
|
29
|
-
# 导出一些常用的时间函数
|
30
|
-
from .time import (
|
31
|
-
now, today, get, dayShift,
|
32
|
-
monday, weekShift, monthStart, monthShift,
|
33
|
-
quarterStart, quarterShift, yearStart, yearShift,
|
34
|
-
getTimestamp, timeStampToDateTime, strToTimestamp,
|
35
|
-
formatNow, datetime2string, string2datetime
|
36
|
-
)
|
37
|
-
except ImportError:
|
38
|
-
pass
|
39
|
-
|
40
|
-
# 字符串工具
|
41
|
-
try:
|
42
|
-
from . import string as string_utils
|
43
|
-
from .string import (
|
44
|
-
randomString, randomNum, getUuidStr,
|
45
|
-
md5Bytes, md5Str, getFileMd5,
|
46
|
-
renderTemplateString
|
47
|
-
)
|
48
|
-
except ImportError:
|
49
|
-
pass
|
50
|
-
|
51
|
-
# 二维码工具
|
52
|
-
try:
|
53
|
-
from .qrcode import Qrcode
|
54
|
-
except ImportError:
|
55
|
-
Qrcode = None
|
56
|
-
|
57
|
-
# 条形码工具
|
58
|
-
try:
|
59
|
-
from .barcode import Barcode
|
60
|
-
except ImportError:
|
61
|
-
Barcode = None
|
62
|
-
|
63
|
-
# 验证工具
|
64
|
-
try:
|
65
|
-
from .validator import ParamsValidator
|
66
|
-
except ImportError:
|
67
|
-
ParamsValidator = None
|
68
|
-
|
69
|
-
# 网络工具
|
70
|
-
try:
|
71
|
-
from . import network
|
72
|
-
except ImportError:
|
73
|
-
pass
|
74
|
-
|
75
|
-
# 签名工具
|
76
|
-
try:
|
77
|
-
from . import signature
|
78
|
-
except ImportError:
|
79
|
-
pass
|
80
|
-
|
81
|
-
# 匹配工具
|
82
|
-
try:
|
83
|
-
from . import matchTool
|
84
|
-
except ImportError:
|
85
|
-
pass
|
86
|
-
|
87
|
-
# 类工具
|
88
|
-
try:
|
89
|
-
from . import clsTool
|
90
|
-
except ImportError:
|
91
|
-
pass
|
92
|
-
|
93
|
-
# 转换工具
|
94
|
-
try:
|
95
|
-
from .convert import Converter, MemoryCompiler
|
96
|
-
except ImportError:
|
97
|
-
# 如果导入失败,创建占位符避免 __all__ 报错
|
98
|
-
Converter = None
|
99
|
-
MemoryCompiler = None
|
100
|
-
|
101
|
-
# 异常处理
|
102
|
-
try:
|
103
|
-
from . import exceptions
|
104
|
-
except ImportError:
|
105
|
-
pass
|
106
|
-
|
107
|
-
# 工作日常量
|
108
|
-
try:
|
109
|
-
from . import workday_constants
|
110
|
-
except ImportError:
|
111
|
-
pass
|
112
|
-
|
113
|
-
# 配置相关
|
114
|
-
try:
|
115
|
-
from . import config
|
116
|
-
except ImportError:
|
117
|
-
pass
|
118
|
-
|
119
|
-
# 定义 __all__ 列表,控制 from jit_utils import * 的行为
|
120
|
-
__all__ = [
|
121
|
-
# 版本信息
|
122
|
-
'__version__',
|
123
|
-
'__author__',
|
124
|
-
|
125
|
-
# 装饰器
|
126
|
-
'forward',
|
127
|
-
|
128
|
-
# 时间工具
|
129
|
-
'time_utils',
|
130
|
-
'now', 'today', 'get', 'dayShift',
|
131
|
-
'monday', 'weekShift', 'monthStart', 'monthShift',
|
132
|
-
'quarterStart', 'quarterShift', 'yearStart', 'yearShift',
|
133
|
-
'getTimestamp', 'timeStampToDateTime', 'strToTimestamp',
|
134
|
-
'formatNow', 'datetime2string', 'string2datetime',
|
135
|
-
|
136
|
-
# 字符串工具
|
137
|
-
'string_utils',
|
138
|
-
'randomString', 'randomNum', 'getUuidStr',
|
139
|
-
'md5Bytes', 'md5Str', 'getFileMd5',
|
140
|
-
'renderTemplateString',
|
141
|
-
|
142
|
-
# 二维码和条形码
|
143
|
-
'Qrcode', 'Barcode',
|
144
|
-
|
145
|
-
# 验证工具
|
146
|
-
'ParamsValidator',
|
147
|
-
|
148
|
-
# 其他模块
|
149
|
-
'network', 'signature', 'matchTool',
|
150
|
-
'clsTool', 'exceptions', 'workday_constants',
|
151
|
-
'config', 'Converter', 'MemoryCompiler'
|
152
|
-
]
|
@@ -1,12 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: jit-utils-backend
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.2
|
4
4
|
Summary: 极态后端工具包
|
5
|
-
Author:
|
6
|
-
Author-email:
|
7
|
-
Project-URL: Documentation, https://github.com/zangtao/jit-utils-backend
|
8
|
-
Project-URL: Source, https://github.com/zangtao/jit-utils-backend
|
9
|
-
Project-URL: Tracker, https://github.com/zangtao/jit-utils-backend/issues
|
5
|
+
Author: JitAi
|
6
|
+
Author-email: develop@wanyunapp.com
|
10
7
|
Keywords: python,jit,sdk,apiAuth,utils,backend
|
11
8
|
Classifier: Development Status :: 3 - Alpha
|
12
9
|
Classifier: Intended Audience :: Developers
|
@@ -36,7 +33,7 @@ Requires-Dist: Pillow
|
|
36
33
|
## 安装
|
37
34
|
|
38
35
|
```bash
|
39
|
-
pip install
|
36
|
+
pip install jit_utils_backend
|
40
37
|
```
|
41
38
|
|
42
39
|
## 使用方法
|
@@ -47,11 +44,15 @@ pip install jit-utils-backend
|
|
47
44
|
# 导入整个包
|
48
45
|
import jit_utils
|
49
46
|
|
50
|
-
#
|
51
|
-
from jit_utils import now
|
47
|
+
# 导入特定功能(从具体的子模块)
|
48
|
+
from jit_utils.time import now
|
49
|
+
from jit_utils.string import randomString
|
50
|
+
from jit_utils.qrcode import Qrcode
|
51
|
+
from jit_utils.barcode import Barcode
|
52
52
|
|
53
53
|
# 导入特定模块
|
54
|
-
|
54
|
+
import jit_utils.time
|
55
|
+
import jit_utils.string
|
55
56
|
```
|
56
57
|
|
57
58
|
## 主要功能
|
@@ -59,7 +60,7 @@ from jit_utils import time_utils, string_utils
|
|
59
60
|
### 1. 时间处理工具
|
60
61
|
|
61
62
|
```python
|
62
|
-
from jit_utils import now, today, dayShift, formatNow
|
63
|
+
from jit_utils.time import now, today, dayShift, formatNow
|
63
64
|
|
64
65
|
# 获取当前时间
|
65
66
|
current_time = now()
|
@@ -77,7 +78,7 @@ formatted_time = formatNow("%Y-%m-%d %H:%M:%S")
|
|
77
78
|
### 2. 字符串处理工具
|
78
79
|
|
79
80
|
```python
|
80
|
-
from jit_utils import randomString, md5Str, getUuidStr
|
81
|
+
from jit_utils.string import randomString, md5Str, getUuidStr
|
81
82
|
|
82
83
|
# 生成随机字符串
|
83
84
|
random_str = randomString(8)
|
@@ -92,7 +93,7 @@ uuid_str = getUuidStr()
|
|
92
93
|
### 3. 二维码生成
|
93
94
|
|
94
95
|
```python
|
95
|
-
from jit_utils import Qrcode
|
96
|
+
from jit_utils.qrcode import Qrcode
|
96
97
|
|
97
98
|
# 创建二维码
|
98
99
|
qr = Qrcode("https://example.com")
|
@@ -107,7 +108,7 @@ qr_str = qr.toStr()
|
|
107
108
|
### 4. 条形码生成
|
108
109
|
|
109
110
|
```python
|
110
|
-
from jit_utils import Barcode
|
111
|
+
from jit_utils.barcode import Barcode
|
111
112
|
|
112
113
|
# 创建条形码
|
113
114
|
barcode = Barcode("123456789")
|
@@ -122,7 +123,7 @@ barcode_str = barcode.toStr()
|
|
122
123
|
### 5. 数据验证
|
123
124
|
|
124
125
|
```python
|
125
|
-
from jit_utils import ParamsValidator
|
126
|
+
from jit_utils.validator import ParamsValidator
|
126
127
|
from dataclasses import dataclass
|
127
128
|
|
128
129
|
@dataclass
|
@@ -138,7 +139,7 @@ params = UserParams("test_function", name="John", age=25)
|
|
138
139
|
### 6. 装饰器
|
139
140
|
|
140
141
|
```python
|
141
|
-
from jit_utils import forward
|
142
|
+
from jit_utils.decorator import forward
|
142
143
|
|
143
144
|
@forward("module.submodule")
|
144
145
|
def my_function():
|
@@ -179,4 +180,4 @@ zangtao (noguchisyou123456@gmail.com)
|
|
179
180
|
|
180
181
|
## 版本
|
181
182
|
|
182
|
-
0.0.
|
183
|
+
0.0.2
|
@@ -1,4 +1,4 @@
|
|
1
|
-
jit_utils/__init__.py,sha256=
|
1
|
+
jit_utils/__init__.py,sha256=jAB2jCgY7I9OSPIRBWmMIuxsWoVAqRFALnZxm73_EsY,473
|
2
2
|
jit_utils/apiAuthSign.py,sha256=TzYe3tDVQw0LYcE82IPcibtt_qyGTJ3XbWVjti5lGx0,2323
|
3
3
|
jit_utils/barcode.py,sha256=PuSHqxttr4rOGMAfojK7Ii72z4CoqxUQR_hmMOaElN8,1102
|
4
4
|
jit_utils/clsTool.py,sha256=tfMy3ITwfbfBLE6cjTrrRwMWB0aFh4fAYGJBZJ3vmCE,2316
|
@@ -22,11 +22,11 @@ jit_utils/config/exception.py,sha256=wrok-q14bTl8afClYgX649F2Qk0vrwl6LiWGgpkKDY0
|
|
22
22
|
jit_utils/config/field.py,sha256=5cq0M7zAtJrFkEHQ2H-1x95ypQxMyg07JjHnIAzSPQg,4759
|
23
23
|
tests/__init__.py,sha256=Feh5oxeLX-QAsWdK7XteVUZkQR1uZMfByvrB-Em0FEk,60
|
24
24
|
tests/run_tests.py,sha256=_0YG9MQCLkl18U-y-3BoI_KVbCZyGhMyPtLrOygAwVw,2959
|
25
|
-
tests/test_package_imports.py,sha256=
|
25
|
+
tests/test_package_imports.py,sha256=av8vhbx_VZUdWFMffWE5XKlu5glXE8LtzgmQvNsp0wo,6994
|
26
26
|
tests/test_qrcode_barcode.py,sha256=RD08MCLHap0tb8hiXyrlkkdnK6t1Ij0p6gdCrJWqCIg,6598
|
27
27
|
tests/test_string_utils.py,sha256=i1Q98PwMrPbjc4nkb1O3Z4pwvu0SMZrSOYbgDdeU4D4,5845
|
28
28
|
tests/test_time_utils.py,sha256=nl9k_g0HmILHYTANMMRQgOF_vO4qGkfMzs6XiEJEnYA,6944
|
29
|
-
jit_utils_backend-0.0.
|
30
|
-
jit_utils_backend-0.0.
|
31
|
-
jit_utils_backend-0.0.
|
32
|
-
jit_utils_backend-0.0.
|
29
|
+
jit_utils_backend-0.0.2.dist-info/METADATA,sha256=3m1frtfoG_EKKM0EaUcaIsRbbs6GFA8gjn1y61NY6Ow,3710
|
30
|
+
jit_utils_backend-0.0.2.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
31
|
+
jit_utils_backend-0.0.2.dist-info/top_level.txt,sha256=SvmeRMPwBF2UwUtkhHAzXWSPhwVATqN2FFmZp2pJHjA,16
|
32
|
+
jit_utils_backend-0.0.2.dist-info/RECORD,,
|
tests/test_package_imports.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*-coding:utf-8-*-
|
2
2
|
"""
|
3
|
-
|
3
|
+
测试包的子模块导入功能
|
4
4
|
"""
|
5
5
|
import unittest
|
6
6
|
|
@@ -14,15 +14,15 @@ class TestPackageImports(unittest.TestCase):
|
|
14
14
|
import jit_utils
|
15
15
|
self.assertTrue(hasattr(jit_utils, '__version__'))
|
16
16
|
self.assertTrue(hasattr(jit_utils, '__author__'))
|
17
|
-
self.assertEqual(jit_utils.__version__, '0.0.
|
17
|
+
self.assertEqual(jit_utils.__version__, '0.0.2')
|
18
18
|
self.assertEqual(jit_utils.__author__, 'zangtao')
|
19
19
|
except ImportError as e:
|
20
20
|
self.fail(f"主包导入失败: {e}")
|
21
21
|
|
22
|
-
def
|
23
|
-
"""
|
22
|
+
def test_string_module_import(self):
|
23
|
+
"""测试字符串模块导入"""
|
24
24
|
try:
|
25
|
-
from jit_utils import randomString, getUuidStr, md5Str
|
25
|
+
from jit_utils.string import randomString, getUuidStr, md5Str
|
26
26
|
|
27
27
|
# 测试函数是否可调用
|
28
28
|
self.assertTrue(callable(randomString))
|
@@ -40,159 +40,150 @@ class TestPackageImports(unittest.TestCase):
|
|
40
40
|
self.assertEqual(len(md5_hash), 32)
|
41
41
|
|
42
42
|
except ImportError as e:
|
43
|
-
self.
|
43
|
+
self.skipTest(f"字符串模块导入失败: {e}")
|
44
44
|
|
45
|
-
def
|
46
|
-
"""
|
45
|
+
def test_time_module_import(self):
|
46
|
+
"""测试时间模块导入"""
|
47
47
|
try:
|
48
|
-
from jit_utils import
|
48
|
+
from jit_utils.time import now, getTimestamp, formatNow
|
49
49
|
|
50
|
-
#
|
51
|
-
|
52
|
-
|
50
|
+
# 测试函数是否可调用
|
51
|
+
self.assertTrue(callable(now))
|
52
|
+
self.assertTrue(callable(getTimestamp))
|
53
|
+
self.assertTrue(callable(formatNow))
|
54
|
+
|
55
|
+
# 简单功能测试
|
56
|
+
current_time = now()
|
57
|
+
self.assertIsNotNone(current_time)
|
58
|
+
|
59
|
+
timestamp = getTimestamp()
|
60
|
+
self.assertIsInstance(timestamp, (int, float))
|
61
|
+
|
62
|
+
formatted_time = formatNow()
|
63
|
+
self.assertIsInstance(formatted_time, str)
|
64
|
+
|
65
|
+
except ImportError as e:
|
66
|
+
self.skipTest(f"时间模块导入失败(可能缺少依赖): {e}")
|
67
|
+
|
68
|
+
def test_qrcode_module_import(self):
|
69
|
+
"""测试二维码模块导入"""
|
70
|
+
try:
|
71
|
+
from jit_utils.qrcode import Qrcode
|
53
72
|
|
54
73
|
# 测试类是否可实例化
|
55
74
|
self.assertTrue(callable(Qrcode))
|
56
|
-
self.assertTrue(callable(Barcode))
|
57
75
|
|
58
76
|
# 创建实例
|
59
77
|
qr = Qrcode("test")
|
60
|
-
bc = Barcode("123456789")
|
61
|
-
|
62
78
|
self.assertEqual(qr.value, "test")
|
63
|
-
self.assertEqual(bc.value, "123456789")
|
64
79
|
|
65
80
|
except ImportError as e:
|
66
|
-
self.skipTest(f"
|
81
|
+
self.skipTest(f"二维码模块导入失败(可能缺少依赖): {e}")
|
67
82
|
|
68
|
-
def
|
69
|
-
"""
|
83
|
+
def test_barcode_module_import(self):
|
84
|
+
"""测试条形码模块导入"""
|
70
85
|
try:
|
71
|
-
from jit_utils import
|
72
|
-
|
73
|
-
|
86
|
+
from jit_utils.barcode import Barcode
|
87
|
+
|
88
|
+
# 测试类是否可实例化
|
89
|
+
self.assertTrue(callable(Barcode))
|
90
|
+
|
91
|
+
# 创建实例
|
92
|
+
bc = Barcode("123456789")
|
93
|
+
self.assertEqual(bc.value, "123456789")
|
94
|
+
|
74
95
|
except ImportError as e:
|
75
|
-
self.
|
76
|
-
|
77
|
-
|
96
|
+
self.skipTest(f"条形码模块导入失败(可能缺少依赖): {e}")
|
97
|
+
|
98
|
+
def test_validator_module_import(self):
|
99
|
+
"""测试验证器模块导入"""
|
78
100
|
try:
|
79
|
-
from jit_utils import
|
80
|
-
|
81
|
-
self.assertTrue(hasattr(time_utils, 'getTimestamp'))
|
101
|
+
from jit_utils.validator import ParamsValidator
|
102
|
+
self.assertTrue(callable(ParamsValidator))
|
82
103
|
except ImportError as e:
|
83
|
-
self.skipTest(f"
|
104
|
+
self.skipTest(f"验证器模块导入失败(可能缺少依赖): {e}")
|
84
105
|
|
85
106
|
def test_network_module_import(self):
|
86
107
|
"""测试网络模块导入"""
|
87
108
|
try:
|
88
|
-
|
109
|
+
import jit_utils.network
|
89
110
|
# 网络模块应该可以导入
|
90
|
-
self.assertIsNotNone(network)
|
111
|
+
self.assertIsNotNone(jit_utils.network)
|
91
112
|
except ImportError as e:
|
92
|
-
self.skipTest(f"
|
113
|
+
self.skipTest(f"网络模块导入失败: {e}")
|
93
114
|
|
94
115
|
def test_signature_module_import(self):
|
95
116
|
"""测试签名模块导入"""
|
96
117
|
try:
|
97
|
-
|
98
|
-
self.assertIsNotNone(signature)
|
99
|
-
except ImportError as e:
|
100
|
-
self.skipTest(f"signature 模块导入失败: {e}")
|
101
|
-
|
102
|
-
def test_validator_import(self):
|
103
|
-
"""测试验证器导入"""
|
104
|
-
try:
|
105
|
-
from jit_utils import ParamsValidator
|
106
|
-
if ParamsValidator is None:
|
107
|
-
self.skipTest("ParamsValidator 因依赖问题不可用")
|
108
|
-
self.assertTrue(callable(ParamsValidator))
|
118
|
+
import jit_utils.signature
|
119
|
+
self.assertIsNotNone(jit_utils.signature)
|
109
120
|
except ImportError as e:
|
110
|
-
self.skipTest(f"
|
121
|
+
self.skipTest(f"签名模块导入失败: {e}")
|
111
122
|
|
112
123
|
def test_exceptions_module_import(self):
|
113
124
|
"""测试异常模块导入"""
|
114
125
|
try:
|
115
|
-
|
116
|
-
self.assertIsNotNone(exceptions)
|
126
|
+
import jit_utils.exceptions
|
127
|
+
self.assertIsNotNone(jit_utils.exceptions)
|
117
128
|
except ImportError as e:
|
118
|
-
self.skipTest(f"
|
129
|
+
self.skipTest(f"异常模块导入失败(可能缺少依赖): {e}")
|
119
130
|
|
120
131
|
def test_config_module_import(self):
|
121
132
|
"""测试配置模块导入"""
|
122
133
|
try:
|
123
|
-
|
124
|
-
self.assertIsNotNone(config)
|
134
|
+
import jit_utils.config
|
135
|
+
self.assertIsNotNone(jit_utils.config)
|
125
136
|
except ImportError as e:
|
126
|
-
self.skipTest(f"
|
137
|
+
self.skipTest(f"配置模块导入失败(可能缺少依赖): {e}")
|
127
138
|
|
128
139
|
def test_workday_constants_import(self):
|
129
140
|
"""测试工作日常量导入"""
|
130
141
|
try:
|
131
|
-
|
132
|
-
self.assertIsNotNone(workday_constants)
|
142
|
+
import jit_utils.workday_constants
|
143
|
+
self.assertIsNotNone(jit_utils.workday_constants)
|
133
144
|
# 检查是否有工作日相关的常量
|
134
|
-
self.assertTrue(hasattr(workday_constants, 'holidayDict') or
|
135
|
-
hasattr(workday_constants, 'workdayDict'))
|
145
|
+
self.assertTrue(hasattr(jit_utils.workday_constants, 'holidayDict') or
|
146
|
+
hasattr(jit_utils.workday_constants, 'workdayDict'))
|
136
147
|
except ImportError as e:
|
137
|
-
self.skipTest(f"
|
148
|
+
self.skipTest(f"工作日常量模块导入失败: {e}")
|
138
149
|
|
139
150
|
def test_decorator_import(self):
|
140
151
|
"""测试装饰器导入"""
|
141
152
|
try:
|
142
|
-
from jit_utils import forward
|
153
|
+
from jit_utils.decorator import forward
|
143
154
|
self.assertTrue(callable(forward))
|
144
155
|
except ImportError as e:
|
145
|
-
self.skipTest(f"
|
156
|
+
self.skipTest(f"装饰器模块导入失败(可能缺少依赖): {e}")
|
146
157
|
|
147
|
-
def
|
148
|
-
"""
|
158
|
+
def test_convert_module_import(self):
|
159
|
+
"""测试转换器模块导入"""
|
149
160
|
try:
|
150
|
-
from jit_utils import Converter, MemoryCompiler
|
151
|
-
if Converter is None or MemoryCompiler is None:
|
152
|
-
self.skipTest("转换器类因依赖问题不可用")
|
161
|
+
from jit_utils.convert import Converter, MemoryCompiler
|
153
162
|
self.assertTrue(callable(Converter))
|
154
163
|
self.assertTrue(callable(MemoryCompiler))
|
155
164
|
except ImportError as e:
|
156
|
-
self.skipTest(f"
|
165
|
+
self.skipTest(f"转换器模块导入失败(可能缺少依赖): {e}")
|
157
166
|
|
158
|
-
def
|
159
|
-
"""
|
167
|
+
def test_package_structure(self):
|
168
|
+
"""测试包结构"""
|
160
169
|
import jit_utils
|
161
170
|
|
162
|
-
#
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
# 检查一些关键导出
|
169
|
-
expected_exports = [
|
170
|
-
'__version__', '__author__', 'randomString', 'md5Str',
|
171
|
-
'getUuidStr'
|
171
|
+
# 检查主要模块是否存在
|
172
|
+
modules_to_check = [
|
173
|
+
'string', 'time', 'qrcode', 'barcode', 'validator',
|
174
|
+
'network', 'signature', 'exceptions', 'config',
|
175
|
+
'workday_constants', 'decorator', 'convert'
|
172
176
|
]
|
173
177
|
|
174
|
-
for
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
self.assertTrue(hasattr(jit_utils, export), f"包中缺少可选导出: {export}")
|
184
|
-
|
185
|
-
def test_star_import(self):
|
186
|
-
"""测试 from jit_utils import * 是否正常工作"""
|
187
|
-
# 由于 * 导入会污染命名空间,我们在这里只测试是否会出错
|
188
|
-
try:
|
189
|
-
exec("from jit_utils import *")
|
190
|
-
# 如果执行到这里说明没有导入错误
|
191
|
-
self.assertTrue(True)
|
192
|
-
except ImportError as e:
|
193
|
-
self.skipTest(f"星号导入失败(可能缺少依赖): {e}")
|
194
|
-
except Exception as e:
|
195
|
-
self.fail(f"星号导入出现意外错误: {e}")
|
178
|
+
for module_name in modules_to_check:
|
179
|
+
try:
|
180
|
+
# 尝试导入模块
|
181
|
+
__import__(f'jit_utils.{module_name}')
|
182
|
+
# 如果导入成功,则通过测试
|
183
|
+
self.assertTrue(True, f"模块 {module_name} 可以导入")
|
184
|
+
except ImportError:
|
185
|
+
# 如果导入失败,跳过(可能是依赖问题)
|
186
|
+
self.skipTest(f"模块 {module_name} 导入失败(可能缺少依赖)")
|
196
187
|
|
197
188
|
|
198
189
|
if __name__ == '__main__':
|
File without changes
|
File without changes
|