lazysdk 0.1.119__tar.gz → 0.1.121__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.

Potentially problematic release.


This version of lazysdk might be problematic. Click here for more details.

Files changed (49) hide show
  1. {lazysdk-0.1.119 → lazysdk-0.1.121}/PKG-INFO +1 -1
  2. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyexcel.py +7 -1
  3. lazysdk-0.1.121/lazysdk/lazyhash.py +60 -0
  4. lazysdk-0.1.121/lazysdk/lazyjson.py +54 -0
  5. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazytime.py +80 -0
  6. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk.egg-info/PKG-INFO +1 -1
  7. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk.egg-info/SOURCES.txt +1 -0
  8. {lazysdk-0.1.119 → lazysdk-0.1.121}/setup.py +1 -1
  9. lazysdk-0.1.119/lazysdk/lazyjson.py +0 -33
  10. {lazysdk-0.1.119 → lazysdk-0.1.121}/LICENSE +0 -0
  11. {lazysdk-0.1.119 → lazysdk-0.1.121}/README.md +0 -0
  12. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/__init__.py +0 -0
  13. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyCrypto.py +0 -0
  14. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazy_header.py +0 -0
  15. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazy_id_card.py +0 -0
  16. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazy_input.py +0 -0
  17. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazybase64.py +0 -0
  18. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazycache.py +0 -0
  19. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazychromedriver.py +0 -0
  20. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazydecode.py +0 -0
  21. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazydict.py +0 -0
  22. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyenv.py +0 -0
  23. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyfile.py +0 -0
  24. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyflask.py +0 -0
  25. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyhtml.py +0 -0
  26. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyid.py +0 -0
  27. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyinfo.py +0 -0
  28. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyip.py +0 -0
  29. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazylist.py +0 -0
  30. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazym3u8.py +0 -0
  31. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazymd5.py +0 -0
  32. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazypath.py +0 -0
  33. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyprocess.py +0 -0
  34. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyproxies.py +0 -0
  35. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyrandom.py +0 -0
  36. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyre.py +0 -0
  37. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyredis.py +0 -0
  38. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyrequests.py +0 -0
  39. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazytext.py +0 -0
  40. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyua.py +0 -0
  41. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyurl.py +0 -0
  42. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazywebhook.py +0 -0
  43. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazywifi.py +0 -0
  44. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/lazyxml.py +0 -0
  45. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk/showdata.py +0 -0
  46. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk.egg-info/dependency_links.txt +0 -0
  47. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk.egg-info/requires.txt +0 -0
  48. {lazysdk-0.1.119 → lazysdk-0.1.121}/lazysdk.egg-info/top_level.txt +0 -0
  49. {lazysdk-0.1.119 → lazysdk-0.1.121}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lazysdk
3
- Version: 0.1.119
3
+ Version: 0.1.121
4
4
  Summary: 基于Python的懒人包
5
5
  Home-page: https://gitee.com/ZeroSeeker/lazysdk
6
6
  Author: ZeroSeeker
@@ -252,12 +252,18 @@ def save_xlsx(
252
252
  :param rank_asc: 排序列是否正序排序,True为按正序排序,False为按倒序排序
253
253
  将输出保存后的文件绝对路径
254
254
  """
255
+ # 自动检查添加后缀
256
+ if file.endswith(".xlsx"):
257
+ pass
258
+ else:
259
+ file += ".xlsx"
260
+
255
261
  if os.path.isabs(file): # 判断是否为绝对路径
256
262
  pass
257
263
  else:
258
264
  file = os.getcwd() + path_separator + file
259
265
  if value is None:
260
- return
266
+ return file
261
267
  else:
262
268
  wb = openpyxl.Workbook()
263
269
  sheet_index = 0 # sheet序号
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env python3
2
+ # coding = utf8
3
+ """
4
+ @ Author : ZeroSeeker
5
+ @ e-mail : zeroseeker@foxmail.com
6
+ @ GitHub : https://github.com/ZeroSeeker
7
+ @ Gitee : https://gitee.com/ZeroSeeker
8
+ """
9
+ import requests
10
+ import hashlib
11
+
12
+
13
+ def md5_file(
14
+ file_path: str = None,
15
+ file_url: str = None
16
+ ):
17
+ """
18
+ 计算文件的md5
19
+ :param file_path: 本地文件路径
20
+ :param file_url: 网络文件地址
21
+ """
22
+ # 文件名不影响md5
23
+ d5 = hashlib.md5()
24
+ if file_path:
25
+ with open(r'%s' % file_path, 'rb') as f:
26
+ while True:
27
+ data = f.read(2048)
28
+ if not data:
29
+ break
30
+ d5.update(data) # update添加时会进行计算
31
+ return d5.hexdigest()
32
+ elif file_url:
33
+ resp = requests.get(file_url)
34
+ d5.update(resp.content) # update添加时会进行计算
35
+ return d5.hexdigest()
36
+ else:
37
+ return
38
+
39
+
40
+ def md5_str(
41
+ content,
42
+ encoding='UTF-8'
43
+ ):
44
+ d5 = hashlib.md5()
45
+ d5.update(content.encode(encoding=encoding)) # update添加时会进行计算
46
+ return d5.hexdigest()
47
+
48
+
49
+ def calculate_sha256(
50
+ content,
51
+ encoding: str='UTF-8'
52
+ ):
53
+ """
54
+ 计算文档的SHA-256哈希值
55
+ :param content:
56
+ :param encoding:
57
+ :return: SHA-256哈希字符串
58
+ """
59
+ # 使用BSON的JSON工具确保一致的序列化
60
+ return hashlib.sha256(content.encode(encoding)).hexdigest()
@@ -0,0 +1,54 @@
1
+ import json
2
+ import decimal
3
+ import datetime
4
+ import base64
5
+
6
+
7
+ class LazyEncoder(json.JSONEncoder):
8
+ def default(self, obj):
9
+ if isinstance(obj, decimal.Decimal):
10
+ return float(obj)
11
+ elif isinstance(obj, datetime.datetime):
12
+ # # 将datetime对象转换为ISO格式字符串
13
+ return obj.isoformat()
14
+ elif isinstance(obj, datetime.date):
15
+ return obj.isoformat()
16
+ elif isinstance(obj, bytes):
17
+ # 将bytes转换为base64编码的字符串
18
+ try:
19
+ # 尝试将bytes解码为UTF-8字符串
20
+ return obj.decode('utf-8')
21
+ except UnicodeDecodeError:
22
+ # 如果UTF-8解码失败,回退到Base64编码
23
+ return base64.b64encode(obj).decode('utf-8')
24
+ # elif isinstance(obj, bson.timestamp.Timestamp):
25
+ # # # 将BSON时间戳转换为其时间表示的ISO格式字符串
26
+ # return obj.as_datetime().isoformat()
27
+ # elif isinstance(obj, bson.objectid.ObjectId):
28
+ # # # 将ObjectId转换为字符串
29
+ # return str(obj)
30
+ return super(LazyEncoder, self).default(obj)
31
+
32
+
33
+ def json2str(
34
+ data: json,
35
+ ensure_ascii: bool = False
36
+ ):
37
+ """
38
+ 在将json数据反序列化为str时,会遇到一些格式无法转换
39
+ 这里使用识别类型转换转为str
40
+ 目前支持类型:
41
+
42
+ 对于mongodb返回数据的处理:
43
+ from bson import json_util
44
+ default=json_util.default
45
+
46
+ decimal --> str
47
+ datetime.datetime --> str(%Y-%m-%d %H:%M:%S)
48
+ datetime.date --> str(%Y-%m-%d)
49
+ """
50
+ return json.dumps(
51
+ data,
52
+ cls=LazyEncoder,
53
+ ensure_ascii=ensure_ascii
54
+ )
@@ -1024,3 +1024,83 @@ def network_timestamp():
1024
1024
  res = requests.get(url=url)
1025
1025
  net_t = res.json()['data']['t'] # 精确到毫秒的时间戳
1026
1026
  return int(net_t)
1027
+
1028
+
1029
+ def str2datetime(
1030
+ input_str,
1031
+ input_str_format: str = 'YYYYmmdd',
1032
+ output_str_format: str = '%Y-%m-%d %H:%M:%S.%f',
1033
+ ):
1034
+ """
1035
+ 将输入的字符串按照既定格式格式化后输出
1036
+ :param input_str: 输入的字符串
1037
+ :param input_str_format: 输入的字符串格式,例如:YYmmdd
1038
+ :param output_str_format: 输出的字符串格式,例如:%Y-%m-%d %H:%M:%S.%f
1039
+ """
1040
+ year_str = ""
1041
+ month_str = ""
1042
+ day_str = ""
1043
+ hour_str = ""
1044
+ minute_str = ""
1045
+ second_str = ""
1046
+
1047
+ for index in range(len(input_str_format)):
1048
+ index_str = input_str_format[index]
1049
+ if index_str == 'Y':
1050
+ year_str += input_str[index]
1051
+ elif index_str == 'm':
1052
+ month_str += input_str[index]
1053
+ elif index_str == 'd':
1054
+ day_str += input_str[index]
1055
+ elif index_str == 'H':
1056
+ hour_str += input_str[index]
1057
+ elif index_str == 'M':
1058
+ minute_str += input_str[index]
1059
+ elif index_str == 'S':
1060
+ second_str += input_str[index]
1061
+ else:
1062
+ continue
1063
+
1064
+ if year_str:
1065
+ year_int = int(year_str)
1066
+ else:
1067
+ year_int = None
1068
+
1069
+ if month_str:
1070
+ month_int = int(month_str)
1071
+ else:
1072
+ month_int = None
1073
+
1074
+ if day_str:
1075
+ day_int = int(day_str)
1076
+ else:
1077
+ day_int = None
1078
+
1079
+ if hour_str:
1080
+ hour_int = int(hour_str)
1081
+ else:
1082
+ hour_int = 0
1083
+
1084
+ if minute_str:
1085
+ minute_int = int(minute_str)
1086
+ else:
1087
+ minute_int = 0
1088
+
1089
+ if second_str:
1090
+ second_int = int(second_str)
1091
+ else:
1092
+ second_int = 0
1093
+
1094
+ return datetime.datetime(
1095
+ year=year_int,
1096
+ month=month_int,
1097
+ day=day_int,
1098
+ hour=hour_int,
1099
+ minute=minute_int,
1100
+ second=second_int
1101
+ ).strftime(output_str_format)
1102
+
1103
+
1104
+ if __name__ == '__main__':
1105
+ res = str2datetime(input_str="20250101123456", input_str_format="YYYYmmdd")
1106
+ print(res)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lazysdk
3
- Version: 0.1.119
3
+ Version: 0.1.121
4
4
  Summary: 基于Python的懒人包
5
5
  Home-page: https://gitee.com/ZeroSeeker/lazysdk
6
6
  Author: ZeroSeeker
@@ -15,6 +15,7 @@ lazysdk/lazyenv.py
15
15
  lazysdk/lazyexcel.py
16
16
  lazysdk/lazyfile.py
17
17
  lazysdk/lazyflask.py
18
+ lazysdk/lazyhash.py
18
19
  lazysdk/lazyhtml.py
19
20
  lazysdk/lazyid.py
20
21
  lazysdk/lazyinfo.py
@@ -13,7 +13,7 @@ with open("README.md", "r", encoding='utf-8') as fh:
13
13
 
14
14
  setuptools.setup(
15
15
  name="lazysdk",
16
- version="0.1.119",
16
+ version="0.1.121",
17
17
  description="基于Python的懒人包",
18
18
  long_description=long_description,
19
19
  long_description_content_type="text/markdown",
@@ -1,33 +0,0 @@
1
- import json
2
- import decimal
3
- import datetime
4
-
5
-
6
- class LazyEncoder(json.JSONEncoder):
7
- def default(self, obj):
8
- if isinstance(obj, decimal.Decimal):
9
- return float(obj)
10
- elif isinstance(obj, datetime.datetime):
11
- return obj.strftime('%Y-%m-%d %H:%M:%S')
12
- elif isinstance(obj, datetime.date):
13
- return obj.strftime('%Y-%m-%d')
14
- super(LazyEncoder, self).default(obj)
15
-
16
-
17
- def json2str(
18
- data: json,
19
- ensure_ascii: bool = False
20
- ):
21
- """
22
- 在将json数据反序列化为str时,会遇到一些格式无法转换
23
- 这里使用识别类型转换转为str
24
- 目前支持类型:
25
- decimal --> str
26
- datetime.datetime --> str(%Y-%m-%d %H:%M:%S)
27
- datetime.date --> str(%Y-%m-%d)
28
- """
29
- return json.dumps(
30
- data,
31
- cls=LazyEncoder,
32
- ensure_ascii=ensure_ascii
33
- )
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes