rclone-api 1.1.40__tar.gz → 1.1.42__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.1.40 → rclone_api-1.1.42}/PKG-INFO +1 -1
  2. {rclone_api-1.1.40 → rclone_api-1.1.42}/pyproject.toml +1 -1
  3. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/profile/mount_copy_bytes.py +51 -46
  4. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api.egg-info/PKG-INFO +1 -1
  5. {rclone_api-1.1.40 → rclone_api-1.1.42}/.aiderignore +0 -0
  6. {rclone_api-1.1.40 → rclone_api-1.1.42}/.github/workflows/lint.yml +0 -0
  7. {rclone_api-1.1.40 → rclone_api-1.1.42}/.github/workflows/push_macos.yml +0 -0
  8. {rclone_api-1.1.40 → rclone_api-1.1.42}/.github/workflows/push_ubuntu.yml +0 -0
  9. {rclone_api-1.1.40 → rclone_api-1.1.42}/.github/workflows/push_win.yml +0 -0
  10. {rclone_api-1.1.40 → rclone_api-1.1.42}/.gitignore +0 -0
  11. {rclone_api-1.1.40 → rclone_api-1.1.42}/.pylintrc +0 -0
  12. {rclone_api-1.1.40 → rclone_api-1.1.42}/.vscode/launch.json +0 -0
  13. {rclone_api-1.1.40 → rclone_api-1.1.42}/.vscode/settings.json +0 -0
  14. {rclone_api-1.1.40 → rclone_api-1.1.42}/.vscode/tasks.json +0 -0
  15. {rclone_api-1.1.40 → rclone_api-1.1.42}/LICENSE +0 -0
  16. {rclone_api-1.1.40 → rclone_api-1.1.42}/MANIFEST.in +0 -0
  17. {rclone_api-1.1.40 → rclone_api-1.1.42}/README.md +0 -0
  18. {rclone_api-1.1.40 → rclone_api-1.1.42}/clean +0 -0
  19. {rclone_api-1.1.40 → rclone_api-1.1.42}/install +0 -0
  20. {rclone_api-1.1.40 → rclone_api-1.1.42}/lint +0 -0
  21. {rclone_api-1.1.40 → rclone_api-1.1.42}/requirements.testing.txt +0 -0
  22. {rclone_api-1.1.40 → rclone_api-1.1.42}/setup.cfg +0 -0
  23. {rclone_api-1.1.40 → rclone_api-1.1.42}/setup.py +0 -0
  24. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/__init__.py +0 -0
  25. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/assets/example.txt +0 -0
  26. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/cli.py +0 -0
  27. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/cmd/copy_large_s3.py +0 -0
  28. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/cmd/list_files.py +0 -0
  29. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/completed_process.py +0 -0
  30. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/config.py +0 -0
  31. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/convert.py +0 -0
  32. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/deprecated.py +0 -0
  33. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/diff.py +0 -0
  34. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/dir.py +0 -0
  35. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/dir_listing.py +0 -0
  36. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/exec.py +0 -0
  37. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/experimental/flags.py +0 -0
  38. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/experimental/flags_base.py +0 -0
  39. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/file.py +0 -0
  40. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/filelist.py +0 -0
  41. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/group_files.py +0 -0
  42. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/mount.py +0 -0
  43. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/process.py +0 -0
  44. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/rclone.py +0 -0
  45. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/remote.py +0 -0
  46. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/rpath.py +0 -0
  47. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/s3/api.py +0 -0
  48. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/s3/basic_ops.py +0 -0
  49. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/s3/chunk_file.py +0 -0
  50. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/s3/chunk_types.py +0 -0
  51. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/s3/create.py +0 -0
  52. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/s3/types.py +0 -0
  53. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/s3/upload_file_multipart.py +0 -0
  54. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/scan_missing_folders.py +0 -0
  55. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/types.py +0 -0
  56. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/util.py +0 -0
  57. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api/walk.py +0 -0
  58. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api.egg-info/SOURCES.txt +0 -0
  59. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api.egg-info/dependency_links.txt +0 -0
  60. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api.egg-info/entry_points.txt +0 -0
  61. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api.egg-info/requires.txt +0 -0
  62. {rclone_api-1.1.40 → rclone_api-1.1.42}/src/rclone_api.egg-info/top_level.txt +0 -0
  63. {rclone_api-1.1.40 → rclone_api-1.1.42}/test +0 -0
  64. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/archive/test_paramiko.py.disabled +0 -0
  65. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_cmd_list_files.py +0 -0
  66. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_copy.py +0 -0
  67. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_copy_bytes.py +0 -0
  68. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_copy_file_resumable_s3.py +0 -0
  69. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_copy_files.py +0 -0
  70. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_diff.py +0 -0
  71. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_group_files.py +0 -0
  72. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_is_synced.py +0 -0
  73. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_ls.py +0 -0
  74. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_mount.py +0 -0
  75. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_mount_s3.py +0 -0
  76. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_obscure.py +0 -0
  77. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_rclone_config.py +0 -0
  78. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_remote_control.py +0 -0
  79. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_remotes.py +0 -0
  80. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_s3.py +0 -0
  81. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_scan_missing_folders.py +0 -0
  82. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_size_files.py +0 -0
  83. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_size_suffix.py +0 -0
  84. {rclone_api-1.1.40 → rclone_api-1.1.42}/tests/test_walk.py +0 -0
  85. {rclone_api-1.1.40 → rclone_api-1.1.42}/tox.ini +0 -0
  86. {rclone_api-1.1.40 → rclone_api-1.1.42}/upload_package.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.1.40
3
+ Version: 1.1.42
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.1.40"
26
+ version = "1.1.42"
27
27
 
28
28
  [tool.setuptools]
29
29
  package-dir = {"" = "src"}
@@ -103,6 +103,55 @@ def _init() -> None:
103
103
  os.environ["RCLONE_API_VERBOSE"] = "1"
104
104
 
105
105
 
106
+ def _run_profile(rclone: Rclone, src_file: str, transfers: int, size: int) -> None:
107
+ mount_log = (
108
+ Path("logs") / "mount" / f"mount_{SizeSuffix(size)}_threads_{transfers}.log"
109
+ )
110
+ print("\n\n")
111
+ print("#" * 80)
112
+ print(f"# Started test download of {SizeSuffix(size)} with {transfers} transfers")
113
+ print("#" * 80)
114
+ net_io_start = psutil.net_io_counters()
115
+ start = time.time()
116
+ bytes_or_err: bytes | Exception = rclone.copy_bytes(
117
+ src=src_file,
118
+ offset=0,
119
+ length=size,
120
+ direct_io=True,
121
+ transfers=transfers,
122
+ mount_log=mount_log,
123
+ )
124
+ diff = time.time() - start
125
+ net_io_end = psutil.net_io_counters()
126
+ if isinstance(bytes_or_err, Exception):
127
+ print(bytes_or_err)
128
+ stack_trace = bytes_or_err.__traceback__
129
+ assert False, f"Error: {bytes_or_err}\nStack trace:\n{stack_trace}"
130
+ assert isinstance(bytes_or_err, bytes)
131
+ # self.assertEqual(len(bytes_or_err), size)
132
+ assert len(bytes_or_err) == size, f"Length: {len(bytes_or_err)} != {size}"
133
+
134
+ # print io stats
135
+ bytes_sent = net_io_end.bytes_sent - net_io_start.bytes_sent
136
+ bytes_recv = net_io_end.bytes_recv - net_io_start.bytes_recv
137
+ packets_sent = net_io_end.packets_sent - net_io_start.packets_sent
138
+ efficiency = size / (bytes_recv)
139
+ efficiency_100 = efficiency * 100
140
+ efficiency_str = f"{efficiency_100:.2f}"
141
+
142
+ bytes_send_suffix = SizeSuffix(bytes_sent)
143
+ bytes_recv_suffix = SizeSuffix(bytes_recv)
144
+ range_size = SizeSuffix(size)
145
+
146
+ print(f"\nFinished downloading {range_size} with {transfers} transfers")
147
+ print("Net IO stats:")
148
+ print(f"Bytes sent: {bytes_send_suffix}")
149
+ print(f"Bytes received: {bytes_recv_suffix}")
150
+ print(f"Packets sent: {packets_sent}")
151
+ print(f"Efficiency: {efficiency_str}%")
152
+ print(f"Time: {diff:.1f} seconds")
153
+
154
+
106
155
  def test_profile_copy_bytes() -> None:
107
156
  print("Running test_profile_copy_bytes")
108
157
  config, creds = _generate_rclone_config()
@@ -130,53 +179,9 @@ def test_profile_copy_bytes() -> None:
130
179
 
131
180
  for size in sizes:
132
181
  for transfers in transfer_list:
133
- mount_log = Path("logs") / "mount" / f"mount_{size}_{transfers}.log"
134
- print("\n\n")
135
- print("#" * 80)
136
- print(
137
- f"# Started test download of {SizeSuffix(size)} with {transfers} transfers"
138
- )
139
- print("#" * 80)
140
- net_io_start = psutil.net_io_counters()
141
- start = time.time()
142
- bytes_or_err: bytes | Exception = rclone.copy_bytes(
143
- src=src_file,
144
- offset=0,
145
- length=size,
146
- direct_io=True,
147
- transfers=transfers,
148
- mount_log=mount_log,
182
+ _run_profile(
183
+ rclone=rclone, src_file=src_file, transfers=transfers, size=size
149
184
  )
150
- diff = time.time() - start
151
- net_io_end = psutil.net_io_counters()
152
- if isinstance(bytes_or_err, Exception):
153
- print(bytes_or_err)
154
- stack_trace = bytes_or_err.__traceback__
155
- assert False, f"Error: {bytes_or_err}\nStack trace:\n{stack_trace}"
156
- assert isinstance(bytes_or_err, bytes)
157
- # self.assertEqual(len(bytes_or_err), size)
158
- assert len(bytes_or_err) == size, f"Length: {len(bytes_or_err)} != {size}"
159
-
160
- # print io stats
161
- bytes_sent = net_io_end.bytes_sent - net_io_start.bytes_sent
162
- bytes_recv = net_io_end.bytes_recv - net_io_start.bytes_recv
163
- packets_sent = net_io_end.packets_sent - net_io_start.packets_sent
164
- efficiency = size / (bytes_recv)
165
- efficiency_100 = efficiency * 100
166
- efficiency_str = f"{efficiency_100:.2f}"
167
-
168
- bytes_send_suffix = SizeSuffix(bytes_sent)
169
- bytes_recv_suffix = SizeSuffix(bytes_recv)
170
- range_size = SizeSuffix(size)
171
-
172
- print(f"\nFinished downloading {range_size} with {transfers} transfers")
173
- print("Net IO stats:")
174
- print(f"Bytes sent: {bytes_send_suffix}")
175
- print(f"Bytes received: {bytes_recv_suffix}")
176
- print(f"Packets sent: {packets_sent}")
177
- print(f"Efficiency: {efficiency_str}%")
178
- print(f"Time: {diff:.1f} seconds")
179
-
180
185
  print("done")
181
186
 
182
187
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.1.40
3
+ Version: 1.1.42
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