rclone-api 1.2.7__tar.gz → 1.2.8__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 (86) hide show
  1. {rclone_api-1.2.7 → rclone_api-1.2.8}/PKG-INFO +1 -1
  2. {rclone_api-1.2.7 → rclone_api-1.2.8}/pyproject.toml +1 -1
  3. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/mount.py +35 -29
  4. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api.egg-info/PKG-INFO +1 -1
  5. {rclone_api-1.2.7 → rclone_api-1.2.8}/.aiderignore +0 -0
  6. {rclone_api-1.2.7 → rclone_api-1.2.8}/.github/workflows/lint.yml +0 -0
  7. {rclone_api-1.2.7 → rclone_api-1.2.8}/.github/workflows/push_macos.yml +0 -0
  8. {rclone_api-1.2.7 → rclone_api-1.2.8}/.github/workflows/push_ubuntu.yml +0 -0
  9. {rclone_api-1.2.7 → rclone_api-1.2.8}/.github/workflows/push_win.yml +0 -0
  10. {rclone_api-1.2.7 → rclone_api-1.2.8}/.gitignore +0 -0
  11. {rclone_api-1.2.7 → rclone_api-1.2.8}/.pylintrc +0 -0
  12. {rclone_api-1.2.7 → rclone_api-1.2.8}/.vscode/launch.json +0 -0
  13. {rclone_api-1.2.7 → rclone_api-1.2.8}/.vscode/settings.json +0 -0
  14. {rclone_api-1.2.7 → rclone_api-1.2.8}/.vscode/tasks.json +0 -0
  15. {rclone_api-1.2.7 → rclone_api-1.2.8}/LICENSE +0 -0
  16. {rclone_api-1.2.7 → rclone_api-1.2.8}/MANIFEST.in +0 -0
  17. {rclone_api-1.2.7 → rclone_api-1.2.8}/README.md +0 -0
  18. {rclone_api-1.2.7 → rclone_api-1.2.8}/clean +0 -0
  19. {rclone_api-1.2.7 → rclone_api-1.2.8}/install +0 -0
  20. {rclone_api-1.2.7 → rclone_api-1.2.8}/lint +0 -0
  21. {rclone_api-1.2.7 → rclone_api-1.2.8}/requirements.testing.txt +0 -0
  22. {rclone_api-1.2.7 → rclone_api-1.2.8}/setup.cfg +0 -0
  23. {rclone_api-1.2.7 → rclone_api-1.2.8}/setup.py +0 -0
  24. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/__init__.py +0 -0
  25. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/assets/example.txt +0 -0
  26. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/cli.py +0 -0
  27. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/cmd/copy_large_s3.py +0 -0
  28. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/cmd/list_files.py +0 -0
  29. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/completed_process.py +0 -0
  30. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/config.py +0 -0
  31. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/convert.py +0 -0
  32. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/deprecated.py +0 -0
  33. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/diff.py +0 -0
  34. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/dir.py +0 -0
  35. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/dir_listing.py +0 -0
  36. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/exec.py +0 -0
  37. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/experimental/flags.py +0 -0
  38. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/experimental/flags_base.py +0 -0
  39. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/file.py +0 -0
  40. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/filelist.py +0 -0
  41. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/group_files.py +0 -0
  42. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/process.py +0 -0
  43. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/profile/mount_copy_bytes.py +0 -0
  44. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/rclone.py +0 -0
  45. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/remote.py +0 -0
  46. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/rpath.py +0 -0
  47. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/s3/api.py +0 -0
  48. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/s3/basic_ops.py +0 -0
  49. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/s3/chunk_file.py +0 -0
  50. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/s3/chunk_types.py +0 -0
  51. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/s3/create.py +0 -0
  52. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/s3/types.py +0 -0
  53. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/s3/upload_file_multipart.py +0 -0
  54. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/scan_missing_folders.py +0 -0
  55. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/types.py +0 -0
  56. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/util.py +0 -0
  57. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api/walk.py +0 -0
  58. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api.egg-info/SOURCES.txt +0 -0
  59. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api.egg-info/dependency_links.txt +0 -0
  60. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api.egg-info/entry_points.txt +0 -0
  61. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api.egg-info/requires.txt +0 -0
  62. {rclone_api-1.2.7 → rclone_api-1.2.8}/src/rclone_api.egg-info/top_level.txt +0 -0
  63. {rclone_api-1.2.7 → rclone_api-1.2.8}/test +0 -0
  64. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/archive/test_paramiko.py.disabled +0 -0
  65. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_cmd_list_files.py +0 -0
  66. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_copy.py +0 -0
  67. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_copy_bytes.py +0 -0
  68. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_copy_file_resumable_s3.py +0 -0
  69. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_copy_files.py +0 -0
  70. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_diff.py +0 -0
  71. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_group_files.py +0 -0
  72. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_is_synced.py +0 -0
  73. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_ls.py +0 -0
  74. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_mount.py +0 -0
  75. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_mount_s3.py +0 -0
  76. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_obscure.py +0 -0
  77. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_rclone_config.py +0 -0
  78. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_remote_control.py +0 -0
  79. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_remotes.py +0 -0
  80. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_s3.py +0 -0
  81. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_scan_missing_folders.py +0 -0
  82. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_size_files.py +0 -0
  83. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_size_suffix.py +0 -0
  84. {rclone_api-1.2.7 → rclone_api-1.2.8}/tests/test_walk.py +0 -0
  85. {rclone_api-1.2.7 → rclone_api-1.2.8}/tox.ini +0 -0
  86. {rclone_api-1.2.7 → rclone_api-1.2.8}/upload_package.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.2.7
3
+ Version: 1.2.8
4
4
  Summary: rclone api in python
5
5
  Home-page: https://github.com/zackees/rclone-api
6
6
  License: BSD 3-Clause License
@@ -23,7 +23,7 @@ dependencies = [
23
23
  ]
24
24
 
25
25
  # Change this with the version number bump.
26
- version = "1.2.7"
26
+ version = "1.2.8"
27
27
 
28
28
  [tool.setuptools]
29
29
  package-dir = {"" = "src"}
@@ -288,6 +288,32 @@ def _cache_dir_delete_on_exit(cache_dir: Path) -> None:
288
288
  warnings.warn(f"Error removing cache directory {cache_dir}: {e}")
289
289
 
290
290
 
291
+ def _read_from_mount_task(
292
+ offset: int, size: int, path: Path, verbose: bool
293
+ ) -> bytes | Exception:
294
+ if verbose or True:
295
+ print(f"Fetching chunk: offset={offset}, size={size}, path={path}")
296
+ try:
297
+ with path.open("rb") as f:
298
+ f.seek(offset)
299
+ sz = f.read(size)
300
+ assert len(sz) == size, f"Invalid read size: {len(sz)}"
301
+ return sz
302
+ except KeyboardInterrupt as e:
303
+ import _thread
304
+
305
+ warnings.warn(f"Error fetching file chunk: {e}")
306
+
307
+ _thread.interrupt_main()
308
+ return Exception(e)
309
+ except Exception as e:
310
+ stack_trace = traceback.format_exc()
311
+ warnings.warn(
312
+ f"Error fetching file chunk at offset {offset} + {size}: {e}\n{stack_trace}"
313
+ )
314
+ return e
315
+
316
+
291
317
  class MultiMountFileChunker:
292
318
  def __init__(
293
319
  self,
@@ -335,36 +361,16 @@ class MultiMountFileChunker:
335
361
  path = mount.mount_path / self.filename
336
362
 
337
363
  def task(
338
- offset=offset, size=size, path=path, mount=mount
364
+ offset=offset, size=size, path=path, mount=mount, verbose=self.verbose
339
365
  ) -> bytes | Exception:
340
- if self.verbose or True:
341
- print(f"Fetching chunk: offset={offset}, size={size}, path={path}")
342
- try:
343
- if offset + size > self.filesize:
344
- raise ValueError(f"Invalid offset + size: {offset + size}")
345
- with path.open("rb") as f:
346
- f.seek(offset)
347
- sz = f.read(size)
348
- assert len(sz) == size, f"Invalid read size: {len(sz)}"
349
- return sz
350
- except KeyboardInterrupt as e:
351
- import _thread
352
-
353
- warnings.warn(f"Error fetching file chunk: {e}")
354
-
355
- _thread.interrupt_main()
356
- return Exception(e)
357
- except Exception as e:
358
- stack_trace = traceback.format_exc()
359
- warnings.warn(
360
- f"Error fetching file chunk at offset {offset} + {size}: {e}\n{stack_trace}"
361
- )
362
- return e
363
- finally:
364
- with self.lock:
365
- self.mounts_processing.remove(mount)
366
- self.mounts_availabe.append(mount)
367
- self.semaphore.release()
366
+ out = _read_from_mount_task(
367
+ offset=offset, size=size, path=path, verbose=verbose
368
+ )
369
+ with self.lock:
370
+ self.mounts_processing.remove(mount)
371
+ self.mounts_availabe.append(mount)
372
+ self.semaphore.release()
373
+ return out
368
374
 
369
375
  fut = self.executor.submit(task)
370
376
  return fut
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.2.7
3
+ Version: 1.2.8
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
File without changes
File without changes
File without changes