Skip to content

Commit d5a4ca5

Browse files
committed
✨ feat(is&to): useIs & useTo
1 parent b1a54a9 commit d5a4ca5

File tree

5 files changed

+94
-17
lines changed

5 files changed

+94
-17
lines changed

src/usepy/__init__.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
useRunInThread,
1212
useCatchError,
1313
useExceptDebug,
14-
useListify
14+
useListify,
15+
useCachedProperty,
1516
)
1617
from .utils import (
1718
useTimer,
@@ -24,6 +25,8 @@
2425
useCookieToDict,
2526
useHeadersToDict
2627
)
28+
from .utils import useIs, useTo
29+
2730
from ._datetime import useDateTime
2831

2932
from ._path import usePath
@@ -43,6 +46,8 @@
4346
'useExceptDebug',
4447
'useListify',
4548
# utils
49+
'useIs',
50+
'useTo',
4651
'useTimer',
4752
'useTimerManager',
4853
'useUserAgent',

src/usepy/utils/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
from . import useragent as useUserAgent
22
from .timer import Timer as useTimer, TimerManager as useTimerManager
33
from .import_object import import_object as useImport, LazyImport as useLazyImport
4-
from .to_dict import (
4+
from ._to import (
55
cookie_to_dict as useCookieToDict,
66
headers_to_dict as useHeadersToDict,
77
data_to_dict as useDataToDict,
88
)
99
from .utils import (
1010
gen_unique_id as useUniqueId,
1111
)
12+
from . import _to as useTo
13+
from . import _is as useIs

src/usepy/utils/_is.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
"""
2+
@Author: MicLon
3+
@Date: 2023/02/19
4+
@Description: 用于检查数据类型的工具函数
5+
"""
6+
import re
7+
8+
9+
def is_token(value) -> bool:
10+
"""
11+
检查`value`是否符合token规范
12+
:param value: 要检查的值
13+
:return:
14+
"""
15+
return bool(re.match('^[A-Za-z0-9]{3,32}$', value))
16+
17+
18+
def is_string(value) -> bool:
19+
"""
20+
检查`value`是否是字符串
21+
:param value: 要检查的值
22+
:return: bool
23+
"""
24+
return isinstance(value, (str, bytes))
25+
26+
27+
def is_regexp(value) -> bool:
28+
"""
29+
检查`value`是否是正则表达式
30+
:param value: 要检查的值
31+
:return:
32+
"""
33+
return isinstance(value, type(re.compile("regex_test")))

src/usepy/utils/_to.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
"""
2+
@Author: MicLon
3+
@Date: 2023/02/19
4+
@Description: 用于转换数据类型的工具函数
5+
"""
6+
7+
from typing import Any
8+
9+
10+
def cookie_to_dict(cookies: str) -> dict:
11+
"""
12+
将字符串cookie转换为字典
13+
:param cookies: cookie字符串
14+
:return: dict
15+
"""
16+
return {cookie.split('=')[0]: cookie.split('=')[-1] for cookie in cookies.split('; ')}
17+
18+
19+
def headers_to_dict(headers: str) -> dict:
20+
"""
21+
将字符串headers转换为字典
22+
:param headers: headers字符串
23+
:return: dict
24+
"""
25+
header_dict = {}
26+
for line in headers.split('\n'):
27+
if ':' in line:
28+
key, value = line.split(':', 1)
29+
header_dict[key.strip()] = value.strip()
30+
return header_dict
31+
32+
33+
def data_to_dict(data: str) -> dict:
34+
"""
35+
将字符串data转换为字典
36+
:param data: data字符串。格式为`key1=value1&key2=value2`
37+
:return: dict
38+
"""
39+
return {item.split('=')[0]: item.split('=')[-1] for item in data.split('&')}
40+
41+
42+
def to_string(data: Any) -> str:
43+
"""
44+
将任意数据转换为字符串
45+
:param data: data
46+
:return: string
47+
"""
48+
if isinstance(data, str):
49+
return data
50+
if isinstance(data, bytes):
51+
return data.decode()
52+
return str(data)

src/usepy/utils/to_dict.py

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)