rclone-api 1.3.25__tar.gz → 1.3.27__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.
Files changed (99) hide show
  1. {rclone_api-1.3.25 → rclone_api-1.3.27}/PKG-INFO +1 -1
  2. {rclone_api-1.3.25 → rclone_api-1.3.27}/pyproject.toml +1 -1
  3. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/types.py +35 -18
  4. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api.egg-info/PKG-INFO +1 -1
  5. {rclone_api-1.3.25 → rclone_api-1.3.27}/.aiderignore +0 -0
  6. {rclone_api-1.3.25 → rclone_api-1.3.27}/.github/workflows/lint.yml +0 -0
  7. {rclone_api-1.3.25 → rclone_api-1.3.27}/.github/workflows/push_macos.yml +0 -0
  8. {rclone_api-1.3.25 → rclone_api-1.3.27}/.github/workflows/push_ubuntu.yml +0 -0
  9. {rclone_api-1.3.25 → rclone_api-1.3.27}/.github/workflows/push_win.yml +0 -0
  10. {rclone_api-1.3.25 → rclone_api-1.3.27}/.gitignore +0 -0
  11. {rclone_api-1.3.25 → rclone_api-1.3.27}/.pylintrc +0 -0
  12. {rclone_api-1.3.25 → rclone_api-1.3.27}/.vscode/launch.json +0 -0
  13. {rclone_api-1.3.25 → rclone_api-1.3.27}/.vscode/settings.json +0 -0
  14. {rclone_api-1.3.25 → rclone_api-1.3.27}/.vscode/tasks.json +0 -0
  15. {rclone_api-1.3.25 → rclone_api-1.3.27}/LICENSE +0 -0
  16. {rclone_api-1.3.25 → rclone_api-1.3.27}/MANIFEST.in +0 -0
  17. {rclone_api-1.3.25 → rclone_api-1.3.27}/README.md +0 -0
  18. {rclone_api-1.3.25 → rclone_api-1.3.27}/clean +0 -0
  19. {rclone_api-1.3.25 → rclone_api-1.3.27}/install +0 -0
  20. {rclone_api-1.3.25 → rclone_api-1.3.27}/lint +0 -0
  21. {rclone_api-1.3.25 → rclone_api-1.3.27}/requirements.testing.txt +0 -0
  22. {rclone_api-1.3.25 → rclone_api-1.3.27}/setup.cfg +0 -0
  23. {rclone_api-1.3.25 → rclone_api-1.3.27}/setup.py +0 -0
  24. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/__init__.py +0 -0
  25. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/assets/example.txt +0 -0
  26. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/cli.py +0 -0
  27. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/cmd/analyze.py +0 -0
  28. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/cmd/copy_large_s3.py +0 -0
  29. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/cmd/list_files.py +0 -0
  30. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/cmd/save_to_db.py +0 -0
  31. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/completed_process.py +0 -0
  32. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/config.py +0 -0
  33. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/convert.py +0 -0
  34. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/db/__init__.py +0 -0
  35. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/db/db.py +0 -0
  36. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/db/models.py +0 -0
  37. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/deprecated.py +0 -0
  38. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/diff.py +0 -0
  39. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/dir.py +0 -0
  40. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/dir_listing.py +0 -0
  41. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/exec.py +0 -0
  42. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/experimental/flags.py +0 -0
  43. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/experimental/flags_base.py +0 -0
  44. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/file.py +0 -0
  45. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/file_item.py +0 -0
  46. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/filelist.py +0 -0
  47. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/group_files.py +0 -0
  48. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/http_server.py +0 -0
  49. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/log.py +0 -0
  50. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/mount.py +0 -0
  51. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/mount_read_chunker.py +0 -0
  52. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/process.py +0 -0
  53. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/profile/mount_copy_bytes.py +0 -0
  54. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/rclone.py +0 -0
  55. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/remote.py +0 -0
  56. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/rpath.py +0 -0
  57. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/s3/api.py +0 -0
  58. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/s3/basic_ops.py +0 -0
  59. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/s3/chunk_task.py +0 -0
  60. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/s3/chunk_types.py +0 -0
  61. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/s3/create.py +0 -0
  62. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/s3/types.py +0 -0
  63. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/s3/upload_file_multipart.py +0 -0
  64. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/scan_missing_folders.py +0 -0
  65. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/util.py +0 -0
  66. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api/walk.py +0 -0
  67. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api.egg-info/SOURCES.txt +0 -0
  68. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api.egg-info/dependency_links.txt +0 -0
  69. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api.egg-info/entry_points.txt +0 -0
  70. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api.egg-info/requires.txt +0 -0
  71. {rclone_api-1.3.25 → rclone_api-1.3.27}/src/rclone_api.egg-info/top_level.txt +0 -0
  72. {rclone_api-1.3.25 → rclone_api-1.3.27}/test +0 -0
  73. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/archive/test_paramiko.py.disabled +0 -0
  74. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_cmd_list_files.py +0 -0
  75. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_copy.py +0 -0
  76. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_copy_bytes.py +0 -0
  77. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_copy_file_resumable_s3.py +0 -0
  78. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_copy_files.py +0 -0
  79. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_db.py +0 -0
  80. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_diff.py +0 -0
  81. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_file_item.py +0 -0
  82. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_group_files.py +0 -0
  83. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_is_synced.py +0 -0
  84. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_ls.py +0 -0
  85. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_ls_stream_files.py +0 -0
  86. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_mount.py +0 -0
  87. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_mount_s3.py +0 -0
  88. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_obscure.py +0 -0
  89. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_rclone_config.py +0 -0
  90. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_remote_control.py +0 -0
  91. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_remotes.py +0 -0
  92. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_s3.py +0 -0
  93. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_scan_missing_folders.py +0 -0
  94. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_serve_http.py +0 -0
  95. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_size_files.py +0 -0
  96. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_size_suffix.py +0 -0
  97. {rclone_api-1.3.25 → rclone_api-1.3.27}/tests/test_walk.py +0 -0
  98. {rclone_api-1.3.25 → rclone_api-1.3.27}/tox.ini +0 -0
  99. {rclone_api-1.3.25 → rclone_api-1.3.27}/upload_package.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.3.25
3
+ Version: 1.3.27
4
4
  Summary: rclone api in python
5
5
  Home-page: https://github.com/zackees/rclone-api
6
6
  License: BSD 3-Clause License
@@ -25,7 +25,7 @@ dependencies = [
25
25
  ]
26
26
 
27
27
  # Change this with the version number bump.
28
- version = "1.3.25"
28
+ version = "1.3.27"
29
29
 
30
30
  [tool.setuptools]
31
31
  package-dir = {"" = "src"}
@@ -1,12 +1,13 @@
1
1
  import atexit
2
2
  import os
3
3
  import re
4
+ import threading
4
5
  import time
5
6
  import warnings
6
7
  from dataclasses import dataclass
7
8
  from enum import Enum
8
9
  from pathlib import Path
9
- from threading import Lock, Thread
10
+ from threading import Lock
10
11
  from typing import Any
11
12
 
12
13
 
@@ -290,24 +291,33 @@ atexit.register(_on_exit_cleanup)
290
291
 
291
292
  _FILEPARTS: list["FilePart"] = []
292
293
 
294
+ _FILEPARTS_LOCK = Lock()
293
295
 
294
- class ListFileParts(Thread):
295
- def __init__(self):
296
- super().__init__(daemon=True)
297
- self.start()
298
296
 
299
- def run(self):
300
- while True:
301
- print("File parts:")
302
- for part in _FILEPARTS:
303
- print(part)
304
- print(part.stacktrace)
305
- print("\n")
306
- print("\n\n")
307
- time.sleep(5)
297
+ def _add_filepart(part: "FilePart") -> None:
298
+ with _FILEPARTS_LOCK:
299
+ if part not in _FILEPARTS:
300
+ _FILEPARTS.append(part)
308
301
 
309
302
 
310
- dbg_thread = ListFileParts()
303
+ def _remove_filepart(part: "FilePart") -> None:
304
+ with _FILEPARTS_LOCK:
305
+ if part in _FILEPARTS:
306
+ _FILEPARTS.remove(part)
307
+
308
+
309
+ def run_debug_parts():
310
+ while True:
311
+ print("\nAlive file parts:")
312
+ for part in list(_FILEPARTS):
313
+ print(part)
314
+ # print(part.stacktrace)
315
+ print("\n\n")
316
+ time.sleep(60)
317
+
318
+
319
+ dbg_thread = threading.Thread(target=run_debug_parts)
320
+ dbg_thread.start()
311
321
 
312
322
 
313
323
  class FilePart:
@@ -317,8 +327,10 @@ class FilePart:
317
327
  from rclone_api.util import random_str
318
328
 
319
329
  stacktrace = traceback.format_stack()
320
- self.stacktrace = stacktrace
321
- _FILEPARTS.append(self)
330
+ stacktrace_str = "".join(stacktrace)
331
+ self.stacktrace = stacktrace_str
332
+ # _FILEPARTS.append(self)
333
+ _add_filepart(self)
322
334
 
323
335
  self.extra = extra
324
336
  self._lock = Lock()
@@ -375,7 +387,8 @@ class FilePart:
375
387
  return isinstance(self.payload, Exception)
376
388
 
377
389
  def dispose(self) -> None:
378
- _FILEPARTS.remove(self)
390
+ # _FILEPARTS.remove(self)
391
+ _remove_filepart(self)
379
392
  print("Disposing file part")
380
393
  with self._lock:
381
394
  if isinstance(self.payload, Exception):
@@ -399,3 +412,7 @@ class FilePart:
399
412
 
400
413
  def __del__(self):
401
414
  self.dispose()
415
+
416
+ def __repr__(self):
417
+ payload_str = "err" if self.is_error() else f"{SizeSuffix(self.n_bytes())}"
418
+ return f"FilePart(payload={payload_str}, extra={self.extra})"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.3.25
3
+ Version: 1.3.27
4
4
  Summary: rclone api in python
5
5
  Home-page: https://github.com/zackees/rclone-api
6
6
  License: BSD 3-Clause License
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