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 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
- dict_cls: None | type[dict] = None,
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
- if simple:
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 type := CLASS_TO_TYPE.get(attr.get("class", "")):
724
- attr["type"] = type
725
- elif type := SUFFIX_TO_TYPE.get(splitext(attr["name"])[1].lower()):
726
- attr["type"] = 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
- dict_cls: None | type[dict] = None,
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
- if simple:
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 type := SUFFIX_TO_TYPE.get(splitext(attr["name"])[1].lower()):
839
- attr["type"] = 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
- dict_cls: None | type[dict] = None,
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
- if simple:
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 type := SUFFIX_TO_TYPE.get(splitext(attr["name"])[1].lower()):
974
- attr["type"] = 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
- dict_cls: None | type[dict] = None,
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
- return normalize_attr(info, simple=True, keep_raw=keep_raw)
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
@@ -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:
@@ -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)):
@@ -214,7 +214,7 @@ def iter_history_list(
214
214
  )) as get_next:
215
215
  sub_first_loop = True
216
216
  while True:
217
- event = yield get_next
217
+ event = yield get_next()
218
218
  if sub_first_loop:
219
219
  from_id = int(event["id"])
220
220
  from_time = int(event["update_time"])
@@ -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 get_next_info:
4538
+ )) as get_next:
4539
4539
  while True:
4540
- info = yield get_next_info
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
@@ -348,7 +348,7 @@ def iter_115_to_115_resume(
348
348
  **request_kwargs,
349
349
  )) as get_next:
350
350
  while True:
351
- attr = yield get_next
351
+ attr = yield get_next()
352
352
  if attr["name"] == name:
353
353
  to_cid = attr["id"]
354
354
  break
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: p115client
3
- Version: 0.0.5.11
3
+ Version: 0.0.5.11.1
4
4
  Summary: Python 115 webdisk client.
5
5
  Home-page: https://github.com/ChenyangGao/p115client
6
6
  License: MIT
@@ -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=eOBCQCiRApZucMglBLFGD8n6LKW1Q36Ua00G-x4lHQA,30758
4
- p115client/client.py,sha256=EyWRveHMzhPFnndMTTDCEwWnelG4mNv1RSHNAnqVEvU,768952
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=5P6Zvy8bO3DNj08Wrn7n0Ckhqj_f9gSVjfMAUhl9BPI,61646
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=arLsge0C2tEIX3zx7zbgbsj8cplx6uFvg1GL1QKD080,24595
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=NhEx_Zc92rz8ois2OQ4b7lmGkjrACd4Of_nqQlZhEaM,7488
15
- p115client/tool/iterdir.py,sha256=myqQea5l033fJxuoMWqNxP84qALWI2ZXfSlYDNf4dW8,200172
16
- p115client/tool/life.py,sha256=bK2xZsgDfxTp1hWbxXZ6pWrnC1HmaWZv1c5q2s3CbaI,17387
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=dbvYTD8TD_3iEGChUdchOXqnV0VLHX7TJlb2zBHduNM,15932
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=9HPewST9HgcH9KvyLMa7lDSh-8YJE8KsVcDUeTt-sBo,8236
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,,