p115client 0.0.5.11__py3-none-any.whl → 0.0.5.11.1__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.
- p115client/_upload.py +2 -2
- p115client/client.py +120 -27
- p115client/tool/download.py +10 -10
- p115client/tool/export_dir.py +4 -4
- p115client/tool/history.py +1 -1
- p115client/tool/iterdir.py +15 -15
- p115client/tool/life.py +2 -2
- p115client/tool/upload.py +1 -1
- {p115client-0.0.5.11.dist-info → p115client-0.0.5.11.1.dist-info}/METADATA +1 -1
- {p115client-0.0.5.11.dist-info → p115client-0.0.5.11.1.dist-info}/RECORD +12 -12
- {p115client-0.0.5.11.dist-info → p115client-0.0.5.11.1.dist-info}/LICENSE +0 -0
- {p115client-0.0.5.11.dist-info → p115client-0.0.5.11.1.dist-info}/WHEEL +0 -0
p115client/_upload.py
CHANGED
@@ -846,7 +846,7 @@ def oss_multipart_upload(
|
|
846
846
|
if part["Size"] != partsize:
|
847
847
|
break
|
848
848
|
add_part(part)
|
849
|
-
yield async_request
|
849
|
+
yield async_request()
|
850
850
|
else:
|
851
851
|
for part in oss_multipart_part_iter(
|
852
852
|
request,
|
@@ -926,7 +926,7 @@ def oss_multipart_upload(
|
|
926
926
|
raise MultipartUploadAbort(resume_data) from e
|
927
927
|
finally:
|
928
928
|
if close_reporthook is not None:
|
929
|
-
yield close_reporthook
|
929
|
+
yield close_reporthook()
|
930
930
|
return run_gen_step(gen_step, simple=True, async_=async_)
|
931
931
|
|
932
932
|
|
p115client/client.py
CHANGED
@@ -596,13 +596,34 @@ def check_response(resp: dict | Awaitable[dict], /) -> dict | Coroutine[Any, Any
|
|
596
596
|
raise P115OSError(errno.EIO, resp)
|
597
597
|
|
598
598
|
|
599
|
+
@overload
|
599
600
|
def normalize_attr_web(
|
600
601
|
info: Mapping,
|
601
602
|
/,
|
602
603
|
simple: bool = False,
|
603
604
|
keep_raw: bool = False,
|
604
|
-
|
605
|
+
*,
|
606
|
+
dict_cls: None = None,
|
605
607
|
) -> dict[str, Any]:
|
608
|
+
...
|
609
|
+
@overload
|
610
|
+
def normalize_attr_web[D: dict[str, Any]](
|
611
|
+
info: Mapping,
|
612
|
+
/,
|
613
|
+
simple: bool = False,
|
614
|
+
keep_raw: bool = False,
|
615
|
+
*,
|
616
|
+
dict_cls: type[D],
|
617
|
+
) -> D:
|
618
|
+
...
|
619
|
+
def normalize_attr_web[D: dict[str, Any]](
|
620
|
+
info: Mapping,
|
621
|
+
/,
|
622
|
+
simple: bool = False,
|
623
|
+
keep_raw: bool = False,
|
624
|
+
*,
|
625
|
+
dict_cls: None | type[D] = None,
|
626
|
+
) -> dict[str, Any] | D:
|
606
627
|
"""翻译 `P115Client.fs_files`、`P115Client.fs_search`、`P115Client.share_snap` 等接口响应的文件信息数据,使之便于阅读
|
607
628
|
|
608
629
|
:param info: 原始数据
|
@@ -613,10 +634,7 @@ def normalize_attr_web(
|
|
613
634
|
:return: 翻译后的 dict 类型数据
|
614
635
|
"""
|
615
636
|
if dict_cls is None:
|
616
|
-
|
617
|
-
dict_cls = dict
|
618
|
-
else:
|
619
|
-
dict_cls = AttrDict
|
637
|
+
dict_cls = cast(type[D], dict)
|
620
638
|
attr: dict[str, Any] = dict_cls()
|
621
639
|
is_directory = attr["is_dir"] = "fid" not in info
|
622
640
|
if not simple:
|
@@ -720,10 +738,10 @@ def normalize_attr_web(
|
|
720
738
|
attr["type"] = 0
|
721
739
|
elif info.get("iv") or "vdi" in info:
|
722
740
|
attr["type"] = 4
|
723
|
-
elif
|
724
|
-
attr["type"] =
|
725
|
-
elif
|
726
|
-
attr["type"] =
|
741
|
+
elif type_ := CLASS_TO_TYPE.get(attr.get("class", "")):
|
742
|
+
attr["type"] = type_
|
743
|
+
elif type_ := SUFFIX_TO_TYPE.get(splitext(attr["name"])[1].lower()):
|
744
|
+
attr["type"] = type_
|
727
745
|
else:
|
728
746
|
attr["type"] = 99
|
729
747
|
if keep_raw:
|
@@ -731,13 +749,33 @@ def normalize_attr_web(
|
|
731
749
|
return attr
|
732
750
|
|
733
751
|
|
752
|
+
@overload
|
734
753
|
def normalize_attr_app(
|
735
754
|
info: Mapping,
|
736
755
|
/,
|
737
756
|
simple: bool = False,
|
738
757
|
keep_raw: bool = False,
|
739
|
-
|
758
|
+
*,
|
759
|
+
dict_cls: None = None,
|
740
760
|
) -> dict[str, Any]:
|
761
|
+
...
|
762
|
+
@overload
|
763
|
+
def normalize_attr_app[D: dict[str, Any]](
|
764
|
+
info: Mapping,
|
765
|
+
/,
|
766
|
+
simple: bool = False,
|
767
|
+
keep_raw: bool = False,
|
768
|
+
*,
|
769
|
+
dict_cls: None | type[D] = None,
|
770
|
+
) -> D:
|
771
|
+
...
|
772
|
+
def normalize_attr_app[D: dict[str, Any]](
|
773
|
+
info: Mapping,
|
774
|
+
/,
|
775
|
+
simple: bool = False,
|
776
|
+
keep_raw: bool = False,
|
777
|
+
dict_cls: None | type[D] = None,
|
778
|
+
) -> dict[str, Any] | D:
|
741
779
|
"""翻译 `P115Client.fs_files_app` 接口响应的文件信息数据,使之便于阅读
|
742
780
|
|
743
781
|
:param info: 原始数据
|
@@ -748,10 +786,7 @@ def normalize_attr_app(
|
|
748
786
|
:return: 翻译后的 dict 类型数据
|
749
787
|
"""
|
750
788
|
if dict_cls is None:
|
751
|
-
|
752
|
-
dict_cls = dict
|
753
|
-
else:
|
754
|
-
dict_cls = AttrDict
|
789
|
+
dict_cls = cast(type[D], dict)
|
755
790
|
attr: dict[str, Any] = dict_cls()
|
756
791
|
is_directory = attr["is_dir"] = info["fc"] == "0" # fc => file_category
|
757
792
|
if not simple:
|
@@ -835,8 +870,8 @@ def normalize_attr_app(
|
|
835
870
|
attr["type"] = 3
|
836
871
|
elif info.get("isv") or "def" in info or "def2" in info or "v_img" in info:
|
837
872
|
attr["type"] = 4
|
838
|
-
elif
|
839
|
-
attr["type"] =
|
873
|
+
elif type_ := SUFFIX_TO_TYPE.get(splitext(attr["name"])[1].lower()):
|
874
|
+
attr["type"] = type_
|
840
875
|
else:
|
841
876
|
attr["type"] = 99
|
842
877
|
if keep_raw:
|
@@ -844,13 +879,33 @@ def normalize_attr_app(
|
|
844
879
|
return attr
|
845
880
|
|
846
881
|
|
882
|
+
@overload
|
847
883
|
def normalize_attr_app2(
|
848
884
|
info: Mapping,
|
849
885
|
/,
|
850
886
|
simple: bool = False,
|
851
887
|
keep_raw: bool = False,
|
852
|
-
|
888
|
+
*,
|
889
|
+
dict_cls: None = None,
|
853
890
|
) -> dict[str, Any]:
|
891
|
+
...
|
892
|
+
@overload
|
893
|
+
def normalize_attr_app2[D: dict[str, Any]](
|
894
|
+
info: Mapping,
|
895
|
+
/,
|
896
|
+
simple: bool = False,
|
897
|
+
keep_raw: bool = False,
|
898
|
+
*,
|
899
|
+
dict_cls: None | type[D] = None,
|
900
|
+
) -> D:
|
901
|
+
...
|
902
|
+
def normalize_attr_app2[D: dict[str, Any]](
|
903
|
+
info: Mapping,
|
904
|
+
/,
|
905
|
+
simple: bool = False,
|
906
|
+
keep_raw: bool = False,
|
907
|
+
dict_cls: None | type[D] = None,
|
908
|
+
) -> dict[str, Any] | D:
|
854
909
|
"""翻译 `P115Client.fs_files_app2` 接口响应的文件信息数据,使之便于阅读
|
855
910
|
|
856
911
|
:param info: 原始数据
|
@@ -861,10 +916,7 @@ def normalize_attr_app2(
|
|
861
916
|
:return: 翻译后的 dict 类型数据
|
862
917
|
"""
|
863
918
|
if dict_cls is None:
|
864
|
-
|
865
|
-
dict_cls = dict
|
866
|
-
else:
|
867
|
-
dict_cls = AttrDict
|
919
|
+
dict_cls = cast(type[D], dict)
|
868
920
|
attr: dict[str, Any] = dict_cls()
|
869
921
|
if "file_id" in info and "parent_id" in info:
|
870
922
|
if "file_category" in info:
|
@@ -970,8 +1022,8 @@ def normalize_attr_app2(
|
|
970
1022
|
attr["type"] = 3
|
971
1023
|
elif info.get("is_video") or "definition" in info or "definition2" in info or "video_img_url" in info:
|
972
1024
|
attr["type"] = 4
|
973
|
-
elif
|
974
|
-
attr["type"] =
|
1025
|
+
elif type_ := SUFFIX_TO_TYPE.get(splitext(attr["name"])[1].lower()):
|
1026
|
+
attr["type"] = type_
|
975
1027
|
else:
|
976
1028
|
attr["type"] = 99
|
977
1029
|
if keep_raw:
|
@@ -979,13 +1031,34 @@ def normalize_attr_app2(
|
|
979
1031
|
return attr
|
980
1032
|
|
981
1033
|
|
1034
|
+
@overload
|
982
1035
|
def normalize_attr(
|
983
1036
|
info: Mapping,
|
984
1037
|
/,
|
985
1038
|
simple: bool = False,
|
986
1039
|
keep_raw: bool = False,
|
987
|
-
|
1040
|
+
*,
|
1041
|
+
dict_cls: None,
|
988
1042
|
) -> dict[str, Any]:
|
1043
|
+
...
|
1044
|
+
@overload
|
1045
|
+
def normalize_attr[D: dict[str, Any]](
|
1046
|
+
info: Mapping,
|
1047
|
+
/,
|
1048
|
+
simple: bool = False,
|
1049
|
+
keep_raw: bool = False,
|
1050
|
+
*,
|
1051
|
+
dict_cls: type[D] = AttrDict, # type: ignore
|
1052
|
+
) -> D:
|
1053
|
+
...
|
1054
|
+
def normalize_attr[D: dict[str, Any]](
|
1055
|
+
info: Mapping,
|
1056
|
+
/,
|
1057
|
+
simple: bool = False,
|
1058
|
+
keep_raw: bool = False,
|
1059
|
+
*,
|
1060
|
+
dict_cls: None | type[D] = AttrDict, # type: ignore
|
1061
|
+
) -> dict[str, Any] | D:
|
989
1062
|
"""翻译获取自罗列目录、搜索、获取文件信息等接口的数据,使之便于阅读
|
990
1063
|
|
991
1064
|
:param info: 原始数据
|
@@ -1003,12 +1076,32 @@ def normalize_attr(
|
|
1003
1076
|
return normalize_attr_web(info, simple=simple, keep_raw=keep_raw, dict_cls=dict_cls)
|
1004
1077
|
|
1005
1078
|
|
1079
|
+
@overload
|
1006
1080
|
def normalize_attr_simple(
|
1007
1081
|
info: Mapping,
|
1008
1082
|
/,
|
1009
1083
|
keep_raw: bool = False,
|
1084
|
+
*,
|
1085
|
+
dict_cls: None = None,
|
1010
1086
|
) -> dict[str, Any]:
|
1011
|
-
|
1087
|
+
...
|
1088
|
+
@overload
|
1089
|
+
def normalize_attr_simple[D: dict[str, Any]](
|
1090
|
+
info: Mapping,
|
1091
|
+
/,
|
1092
|
+
keep_raw: bool = False,
|
1093
|
+
*,
|
1094
|
+
dict_cls: type[D],
|
1095
|
+
) -> D:
|
1096
|
+
...
|
1097
|
+
def normalize_attr_simple[D: dict[str, Any]](
|
1098
|
+
info: Mapping,
|
1099
|
+
/,
|
1100
|
+
keep_raw: bool = False,
|
1101
|
+
*,
|
1102
|
+
dict_cls: None | type[D] = None,
|
1103
|
+
) -> dict[str, Any] | D:
|
1104
|
+
return normalize_attr(info, simple=True, keep_raw=keep_raw, dict_cls=dict_cls)
|
1012
1105
|
|
1013
1106
|
|
1014
1107
|
class IgnoreCaseDict[V](dict[str, V]):
|
@@ -6389,7 +6482,7 @@ class P115Client(P115OpenClient):
|
|
6389
6482
|
def gen_step():
|
6390
6483
|
cert_headers: None | Mapping = None
|
6391
6484
|
if need_fetch_cert_first:
|
6392
|
-
cert_headers = yield fetch_cert_headers
|
6485
|
+
cert_headers = yield cast(Callable, fetch_cert_headers)()
|
6393
6486
|
headers.update(cert_headers)
|
6394
6487
|
if async_:
|
6395
6488
|
lock: Lock | AsyncLock = self.request_alock
|
@@ -6433,7 +6526,7 @@ class P115Client(P115OpenClient):
|
|
6433
6526
|
if not res if isinstance(res, bool) else res != 405:
|
6434
6527
|
raise
|
6435
6528
|
if fetch_cert_headers is not None:
|
6436
|
-
cert_headers = yield fetch_cert_headers
|
6529
|
+
cert_headers = yield fetch_cert_headers()
|
6437
6530
|
headers.update(cert_headers)
|
6438
6531
|
elif is_open_api:
|
6439
6532
|
yield lock.acquire
|
p115client/tool/download.py
CHANGED
@@ -386,7 +386,7 @@ def iter_files_with_url(
|
|
386
386
|
request_kwargs["headers"] = {"user-agent": user_agent}
|
387
387
|
with with_iter_next(it) as get_next:
|
388
388
|
while True:
|
389
|
-
attr = yield get_next
|
389
|
+
attr = yield get_next()
|
390
390
|
if attr.get("violated", False):
|
391
391
|
if attr["size"] < 1024 * 1024 * 115:
|
392
392
|
attr["url"] = yield get_url(
|
@@ -542,7 +542,7 @@ def iter_images_with_url(
|
|
542
542
|
return
|
543
543
|
with with_iter_next(it) as get_next:
|
544
544
|
while True:
|
545
|
-
attr = yield get_next
|
545
|
+
attr = yield get_next()
|
546
546
|
try:
|
547
547
|
attr["url"] = reduce_image_url_layers(attr["thumb"])
|
548
548
|
except KeyError:
|
@@ -689,7 +689,7 @@ def iter_subtitles_with_url(
|
|
689
689
|
do_next = anext if async_ else next
|
690
690
|
with with_iter_next(it) as get_next:
|
691
691
|
while True:
|
692
|
-
items: tuple[dict] = yield get_next
|
692
|
+
items: tuple[dict] = yield get_next()
|
693
693
|
resp = yield client.fs_mkdir(
|
694
694
|
f"subtitle-{uuid4()}",
|
695
695
|
async_=async_,
|
@@ -1259,14 +1259,14 @@ def iter_download_nodes(
|
|
1259
1259
|
for i in range(n):
|
1260
1260
|
submit(run_gen_step, request(pickcode), async_=async_).add_done_callback(countdown)
|
1261
1261
|
while True:
|
1262
|
-
ls = yield get
|
1262
|
+
ls = yield get()
|
1263
1263
|
if ls is sentinel:
|
1264
1264
|
break
|
1265
1265
|
elif isinstance(ls, BaseException):
|
1266
1266
|
raise ls
|
1267
1267
|
yield YieldFrom(ls, may_await=False)
|
1268
1268
|
finally:
|
1269
|
-
yield shutdown
|
1269
|
+
yield shutdown()
|
1270
1270
|
if pickcode:
|
1271
1271
|
return run_gen_step_iter(gen_step(pickcode), simple=True, async_=async_)
|
1272
1272
|
else:
|
@@ -1281,7 +1281,7 @@ def iter_download_nodes(
|
|
1281
1281
|
**request_kwargs,
|
1282
1282
|
)) as get_next:
|
1283
1283
|
while True:
|
1284
|
-
attr = yield get_next
|
1284
|
+
attr = yield get_next()
|
1285
1285
|
if not files:
|
1286
1286
|
yield Yield(
|
1287
1287
|
{"fid": str(attr["id"]), "pid": "0", "fn": attr["name"]},
|
@@ -1427,7 +1427,7 @@ def iter_download_files(
|
|
1427
1427
|
**request_kwargs,
|
1428
1428
|
)) as get_next:
|
1429
1429
|
while True:
|
1430
|
-
attr = yield get_next
|
1430
|
+
attr = yield get_next()
|
1431
1431
|
if attr["is_dir"]:
|
1432
1432
|
pickcodes.append(attr["pickcode"])
|
1433
1433
|
else:
|
@@ -1473,7 +1473,7 @@ def iter_download_files(
|
|
1473
1473
|
**request_kwargs,
|
1474
1474
|
)) as get_next:
|
1475
1475
|
while True:
|
1476
|
-
info = yield get_next
|
1476
|
+
info = yield get_next()
|
1477
1477
|
id_to_dirnode[int(info["fid"])] = DirNode(info["fn"], int(info["pid"]))
|
1478
1478
|
finally:
|
1479
1479
|
ancestors_loaded = True
|
@@ -1493,7 +1493,7 @@ def iter_download_files(
|
|
1493
1493
|
**request_kwargs,
|
1494
1494
|
)) as get_next:
|
1495
1495
|
while True:
|
1496
|
-
info = yield get_next
|
1496
|
+
info = yield get_next()
|
1497
1497
|
if ancestors_loaded is None:
|
1498
1498
|
yield Yield(norm_attr(info), may_await=False)
|
1499
1499
|
elif ancestors_loaded:
|
@@ -1571,7 +1571,7 @@ def get_remaining_open_count(
|
|
1571
1571
|
**request_kwargs,
|
1572
1572
|
)) as get_next:
|
1573
1573
|
while True:
|
1574
|
-
info = yield get_next
|
1574
|
+
info = yield get_next()
|
1575
1575
|
if int(info["fs"]) <= 1024 * 1024 * 200:
|
1576
1576
|
continue
|
1577
1577
|
try:
|
p115client/tool/export_dir.py
CHANGED
@@ -115,7 +115,7 @@ def parse_export_dir_as_dict_iter(
|
|
115
115
|
if close_file:
|
116
116
|
if async_:
|
117
117
|
if callable(aclose := getattr(file, "aclose", None)):
|
118
|
-
yield aclose
|
118
|
+
yield aclose()
|
119
119
|
elif callable(close := getattr(file, "close", None)):
|
120
120
|
yield ensure_async(close, threaded=True)
|
121
121
|
elif callable(close := getattr(file, "close", None)):
|
@@ -225,7 +225,7 @@ def parse_export_dir_as_path_iter(
|
|
225
225
|
if close_file:
|
226
226
|
if async_:
|
227
227
|
if callable(aclose := getattr(file, "aclose", None)):
|
228
|
-
yield aclose
|
228
|
+
yield aclose()
|
229
229
|
elif callable(close := getattr(file, "close", None)):
|
230
230
|
yield ensure_async(close, threaded=True)
|
231
231
|
elif callable(close := getattr(file, "close", None)):
|
@@ -312,7 +312,7 @@ def parse_export_dir_as_patht_iter(
|
|
312
312
|
if close_file:
|
313
313
|
if async_:
|
314
314
|
if callable(aclose := getattr(file, "aclose", None)):
|
315
|
-
yield aclose
|
315
|
+
yield aclose()
|
316
316
|
elif callable(close := getattr(file, "close", None)):
|
317
317
|
yield ensure_async(close, threaded=True)
|
318
318
|
elif callable(close := getattr(file, "close", None)):
|
@@ -633,7 +633,7 @@ def export_dir_parse_iter(
|
|
633
633
|
finally:
|
634
634
|
if async_:
|
635
635
|
if callable(aclose := getattr(file, "aclose", None)):
|
636
|
-
yield aclose
|
636
|
+
yield aclose()
|
637
637
|
elif callable(close := getattr(file, "close", None)):
|
638
638
|
yield ensure_async(close, threaded=True)
|
639
639
|
elif callable(close := getattr(file, "close", None)):
|
p115client/tool/history.py
CHANGED
p115client/tool/iterdir.py
CHANGED
@@ -865,7 +865,7 @@ def get_id_to_path(
|
|
865
865
|
)) as get_next:
|
866
866
|
found = False
|
867
867
|
while not found:
|
868
|
-
attr = yield get_next
|
868
|
+
attr = yield get_next()
|
869
869
|
found = (attr["name"].replace("/", "|") if is_posixpath else attr["name"]) == name
|
870
870
|
parent_id = attr["id"]
|
871
871
|
if not found:
|
@@ -882,7 +882,7 @@ def get_id_to_path(
|
|
882
882
|
**request_kwargs,
|
883
883
|
)) as get_next:
|
884
884
|
while True:
|
885
|
-
attr = yield get_next
|
885
|
+
attr = yield get_next()
|
886
886
|
if (attr["name"].replace("/", "|") if is_posixpath else attr["name"]) == name:
|
887
887
|
if ensure_file is None or ensure_file ^ attr["is_dir"]:
|
888
888
|
return P115ID(attr["id"], attr, about="path")
|
@@ -2159,7 +2159,7 @@ def iterdir_limited(
|
|
2159
2159
|
for info in resp["path"][1:]
|
2160
2160
|
]
|
2161
2161
|
return resp
|
2162
|
-
def iter_attrs(resp):
|
2162
|
+
def iter_attrs(resp, /):
|
2163
2163
|
if with_path:
|
2164
2164
|
names: Iterator[str] = (info["name"] for info in ancestors)
|
2165
2165
|
if escape is not None:
|
@@ -2804,7 +2804,7 @@ def traverse_files(
|
|
2804
2804
|
async_=async_,
|
2805
2805
|
**request_kwargs,
|
2806
2806
|
)) as get_next:
|
2807
|
-
attr = yield get_next
|
2807
|
+
attr = yield get_next()
|
2808
2808
|
if attr.get("is_dir") or attr.get("is_directory"):
|
2809
2809
|
send(attr["id"])
|
2810
2810
|
elif (
|
@@ -2906,7 +2906,7 @@ def iter_dirs(
|
|
2906
2906
|
max_workers=max_workers,
|
2907
2907
|
)) as get_next:
|
2908
2908
|
while True:
|
2909
|
-
batch = yield get_next
|
2909
|
+
batch = yield get_next()
|
2910
2910
|
yield YieldFrom(batch, may_await=False)
|
2911
2911
|
it = run_gen_step_iter(gen_step(it), simple=True, async_=async_)
|
2912
2912
|
return it
|
@@ -3523,7 +3523,7 @@ def share_get_id_to_path(
|
|
3523
3523
|
)) as get_next:
|
3524
3524
|
found = False
|
3525
3525
|
while not found:
|
3526
|
-
attr = yield get_next
|
3526
|
+
attr = yield get_next()
|
3527
3527
|
found = attr["is_dir"] and (attr["name"].replace("/", "|") if is_posixpath else attr["name"]) == name
|
3528
3528
|
parent_id = attr["id"]
|
3529
3529
|
if not found:
|
@@ -3541,7 +3541,7 @@ def share_get_id_to_path(
|
|
3541
3541
|
**request_kwargs,
|
3542
3542
|
)) as get_next:
|
3543
3543
|
while True:
|
3544
|
-
attr = yield get_next
|
3544
|
+
attr = yield get_next()
|
3545
3545
|
if (attr["name"].replace("/", "|") if is_posixpath else attr["name"]) == name:
|
3546
3546
|
if ensure_file is None or ensure_file ^ attr["is_dir"]:
|
3547
3547
|
return P115ID(attr["id"], attr, about="path")
|
@@ -4346,7 +4346,7 @@ def iter_files_with_dirname(
|
|
4346
4346
|
get_next = it.__anext__ if async_ else it.__next__
|
4347
4347
|
try:
|
4348
4348
|
while True:
|
4349
|
-
resp = yield get_next
|
4349
|
+
resp = yield get_next()
|
4350
4350
|
for attr in resp["data"]:
|
4351
4351
|
attr.update(pid_to_info[attr["parent_id"]])
|
4352
4352
|
yield Yield(attr, may_await=False)
|
@@ -4369,7 +4369,7 @@ def iter_files_with_dirname(
|
|
4369
4369
|
if async_:
|
4370
4370
|
async def collect():
|
4371
4371
|
return {k: v async for k, v in cast(AsyncIterator, it)}
|
4372
|
-
id_to_parents: dict[int, tuple[str, str, str]] = yield collect
|
4372
|
+
id_to_parents: dict[int, tuple[str, str, str]] = yield collect()
|
4373
4373
|
else:
|
4374
4374
|
id_to_parents = dict(it) # type: ignore
|
4375
4375
|
id_to_parents[0] = ("", "", "")
|
@@ -4535,9 +4535,9 @@ def iter_files_with_path(
|
|
4535
4535
|
max_workers=None,
|
4536
4536
|
async_=async_,
|
4537
4537
|
**request_kwargs,
|
4538
|
-
)) as
|
4538
|
+
)) as get_next:
|
4539
4539
|
while True:
|
4540
|
-
info = yield
|
4540
|
+
info = yield get_next()
|
4541
4541
|
id_to_dirnode[int(info["fid"])] = DirNode(info["fn"], int(info["pid"]))
|
4542
4542
|
else:
|
4543
4543
|
with with_iter_next(iterdir(
|
@@ -4549,7 +4549,7 @@ def iter_files_with_path(
|
|
4549
4549
|
**request_kwargs,
|
4550
4550
|
)) as get_next:
|
4551
4551
|
while True:
|
4552
|
-
attr = yield get_next
|
4552
|
+
attr = yield get_next()
|
4553
4553
|
yield run_gen_step(fetch_dirs(attr["pickcode"]), simple=True, async_=async_)
|
4554
4554
|
if with_ancestors:
|
4555
4555
|
id_to_ancestors: dict[int, list[dict]] = {}
|
@@ -4620,7 +4620,7 @@ def iter_files_with_path(
|
|
4620
4620
|
**request_kwargs,
|
4621
4621
|
)) as get_next:
|
4622
4622
|
while True:
|
4623
|
-
attr = yield get_next
|
4623
|
+
attr = yield get_next()
|
4624
4624
|
if _path_already is None:
|
4625
4625
|
yield Yield(update_path(attr), may_await=False)
|
4626
4626
|
elif _path_already:
|
@@ -5061,7 +5061,7 @@ def iter_dir_nodes(
|
|
5061
5061
|
**request_kwargs,
|
5062
5062
|
)) as get_next_info:
|
5063
5063
|
while True:
|
5064
|
-
info = yield get_next_info
|
5064
|
+
info = yield get_next_info()
|
5065
5065
|
id = int(info["fid"])
|
5066
5066
|
parent_id = int(info["pid"])
|
5067
5067
|
name = info["fn"]
|
@@ -5081,7 +5081,7 @@ def iter_dir_nodes(
|
|
5081
5081
|
**request_kwargs,
|
5082
5082
|
)) as get_next:
|
5083
5083
|
while True:
|
5084
|
-
attr = yield get_next
|
5084
|
+
attr = yield get_next()
|
5085
5085
|
yield Yield(
|
5086
5086
|
{
|
5087
5087
|
"id": attr["id"],
|
p115client/tool/life.py
CHANGED
@@ -369,7 +369,7 @@ def iter_life_behavior(
|
|
369
369
|
)) as get_next:
|
370
370
|
sub_first_loop = True
|
371
371
|
while True:
|
372
|
-
event = yield get_next
|
372
|
+
event = yield get_next()
|
373
373
|
if sub_first_loop:
|
374
374
|
from_id = int(event["id"])
|
375
375
|
from_time = int(event["update_time"])
|
@@ -460,7 +460,7 @@ def iter_life_behavior_list(
|
|
460
460
|
)) as get_next:
|
461
461
|
first_loop = True
|
462
462
|
while True:
|
463
|
-
event = yield get_next
|
463
|
+
event = yield get_next()
|
464
464
|
if first_loop:
|
465
465
|
from_id = int(event["id"])
|
466
466
|
from_time = int(event["update_time"])
|
p115client/tool/upload.py
CHANGED
@@ -1,26 +1,26 @@
|
|
1
1
|
LICENSE,sha256=o5242_N2TgDsWwFhPn7yr8YJNF7XsJM5NxUMtcT97bc,1100
|
2
2
|
p115client/__init__.py,sha256=1mx7njuAlqcuEWONTjSiiGnXyyNyqOcJyNX1FMHqQ-4,214
|
3
|
-
p115client/_upload.py,sha256=
|
4
|
-
p115client/client.py,sha256=
|
3
|
+
p115client/_upload.py,sha256=mcg6BAJi49Mq_jE5ql3FUdUbIokLqT8WFgSnkQtQdxw,30762
|
4
|
+
p115client/client.py,sha256=Imc9m8Al9hj-Lq0AzO8bFzcn20ubnguqyCi4e9F_qFs,770852
|
5
5
|
p115client/const.py,sha256=Ks8eYjHYApxlkelVCbSJlpmlCYtbk8fX80jETV72BTY,7754
|
6
6
|
p115client/exception.py,sha256=O4SlfjbtI9GPjzbzJrFaFUZENJFz2qA3VDEKZfdhHbc,3590
|
7
7
|
p115client/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
8
8
|
p115client/tool/__init__.py,sha256=NjT9rroMhLwKI7UlpSCksSsnB3GexXzxvhfunNWzjY0,386
|
9
9
|
p115client/tool/attr.py,sha256=MoLSDaa53nlvkDQOgX1Nq7CaCeO3I4tTkR9oq62dBGI,2896
|
10
|
-
p115client/tool/download.py,sha256=
|
10
|
+
p115client/tool/download.py,sha256=7pJIkRx5M8GSeqiZFpvay0_MwZRsFizkU4nee9aLIBI,61666
|
11
11
|
p115client/tool/edit.py,sha256=F8FhtyBjXRQ7TroNTM8SMG3s9TmCRoDsHId2fGalxW4,17756
|
12
|
-
p115client/tool/export_dir.py,sha256=
|
12
|
+
p115client/tool/export_dir.py,sha256=om2b6At1jnaBD0Qw5TeEfD7wJlSL5PC2JGtJDN4Vh9U,24603
|
13
13
|
p115client/tool/fs_files.py,sha256=uo_2x8Nq1KTagNl2YdM8jRzp97pg513OVo280BK74xU,15645
|
14
|
-
p115client/tool/history.py,sha256=
|
15
|
-
p115client/tool/iterdir.py,sha256=
|
16
|
-
p115client/tool/life.py,sha256=
|
14
|
+
p115client/tool/history.py,sha256=2i6k5Wvo7IVaUO0GDT5nHNV5qQFk_Q_1qY2ZF2MxLsE,7490
|
15
|
+
p115client/tool/iterdir.py,sha256=idSTl7lKbCewhfgMQMyMRE5sx3Pxn_Y2V5_95yoS6JE,200191
|
16
|
+
p115client/tool/life.py,sha256=C2n4nvf5xUc8KGl2R0yatWc-5CmwgkONOX1pxUP5ZSQ,17391
|
17
17
|
p115client/tool/pool.py,sha256=EO_dmtcGBWCnbWqgoaGMsJGhIaCUQ-rdc5qC-oaseq8,14018
|
18
18
|
p115client/tool/request.py,sha256=rjXuQwRganE5Z-4rfgnyPFjE4jzdQSLdIs9s0cIDshU,7043
|
19
|
-
p115client/tool/upload.py,sha256=
|
19
|
+
p115client/tool/upload.py,sha256=qzXgMXf8MfeZIQbylVeh77o_ItKI7kMaIgwuppprfeM,15934
|
20
20
|
p115client/tool/util.py,sha256=0o9TrXdoPcljgxDDRdxRon41bq1OjuUYCWsR0XLfmPo,3357
|
21
21
|
p115client/tool/xys.py,sha256=NVwXXB1ZvFKQKcar1kQdDzlUN7xilGheO_eEeoMxjMw,10325
|
22
22
|
p115client/type.py,sha256=7kOp98uLaYqcTTCgCrb3DRcl8ukMpn7ibsnVvtw2nG8,6250
|
23
|
-
p115client-0.0.5.11.dist-info/LICENSE,sha256=o5242_N2TgDsWwFhPn7yr8YJNF7XsJM5NxUMtcT97bc,1100
|
24
|
-
p115client-0.0.5.11.dist-info/METADATA,sha256=
|
25
|
-
p115client-0.0.5.11.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
26
|
-
p115client-0.0.5.11.dist-info/RECORD,,
|
23
|
+
p115client-0.0.5.11.1.dist-info/LICENSE,sha256=o5242_N2TgDsWwFhPn7yr8YJNF7XsJM5NxUMtcT97bc,1100
|
24
|
+
p115client-0.0.5.11.1.dist-info/METADATA,sha256=kfxL11eFcfcyYXqowRiAtQGFbzoPTWYW_Ecx6_hd7Bg,8238
|
25
|
+
p115client-0.0.5.11.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
26
|
+
p115client-0.0.5.11.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|