rclone-api 1.1.53__tar.gz → 1.1.54__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.53 → rclone_api-1.1.54}/PKG-INFO +1 -1
  2. {rclone_api-1.1.53 → rclone_api-1.1.54}/pyproject.toml +1 -1
  3. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/profile/mount_copy_bytes.py +29 -30
  4. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api.egg-info/PKG-INFO +1 -1
  5. {rclone_api-1.1.53 → rclone_api-1.1.54}/.aiderignore +0 -0
  6. {rclone_api-1.1.53 → rclone_api-1.1.54}/.github/workflows/lint.yml +0 -0
  7. {rclone_api-1.1.53 → rclone_api-1.1.54}/.github/workflows/push_macos.yml +0 -0
  8. {rclone_api-1.1.53 → rclone_api-1.1.54}/.github/workflows/push_ubuntu.yml +0 -0
  9. {rclone_api-1.1.53 → rclone_api-1.1.54}/.github/workflows/push_win.yml +0 -0
  10. {rclone_api-1.1.53 → rclone_api-1.1.54}/.gitignore +0 -0
  11. {rclone_api-1.1.53 → rclone_api-1.1.54}/.pylintrc +0 -0
  12. {rclone_api-1.1.53 → rclone_api-1.1.54}/.vscode/launch.json +0 -0
  13. {rclone_api-1.1.53 → rclone_api-1.1.54}/.vscode/settings.json +0 -0
  14. {rclone_api-1.1.53 → rclone_api-1.1.54}/.vscode/tasks.json +0 -0
  15. {rclone_api-1.1.53 → rclone_api-1.1.54}/LICENSE +0 -0
  16. {rclone_api-1.1.53 → rclone_api-1.1.54}/MANIFEST.in +0 -0
  17. {rclone_api-1.1.53 → rclone_api-1.1.54}/README.md +0 -0
  18. {rclone_api-1.1.53 → rclone_api-1.1.54}/clean +0 -0
  19. {rclone_api-1.1.53 → rclone_api-1.1.54}/install +0 -0
  20. {rclone_api-1.1.53 → rclone_api-1.1.54}/lint +0 -0
  21. {rclone_api-1.1.53 → rclone_api-1.1.54}/requirements.testing.txt +0 -0
  22. {rclone_api-1.1.53 → rclone_api-1.1.54}/setup.cfg +0 -0
  23. {rclone_api-1.1.53 → rclone_api-1.1.54}/setup.py +0 -0
  24. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/__init__.py +0 -0
  25. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/assets/example.txt +0 -0
  26. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/cli.py +0 -0
  27. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/cmd/copy_large_s3.py +0 -0
  28. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/cmd/list_files.py +0 -0
  29. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/completed_process.py +0 -0
  30. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/config.py +0 -0
  31. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/convert.py +0 -0
  32. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/deprecated.py +0 -0
  33. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/diff.py +0 -0
  34. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/dir.py +0 -0
  35. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/dir_listing.py +0 -0
  36. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/exec.py +0 -0
  37. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/experimental/flags.py +0 -0
  38. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/experimental/flags_base.py +0 -0
  39. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/file.py +0 -0
  40. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/filelist.py +0 -0
  41. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/group_files.py +0 -0
  42. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/mount.py +0 -0
  43. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/process.py +0 -0
  44. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/rclone.py +0 -0
  45. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/remote.py +0 -0
  46. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/rpath.py +0 -0
  47. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/s3/api.py +0 -0
  48. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/s3/basic_ops.py +0 -0
  49. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/s3/chunk_file.py +0 -0
  50. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/s3/chunk_types.py +0 -0
  51. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/s3/create.py +0 -0
  52. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/s3/types.py +0 -0
  53. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/s3/upload_file_multipart.py +0 -0
  54. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/scan_missing_folders.py +0 -0
  55. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/types.py +0 -0
  56. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/util.py +0 -0
  57. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api/walk.py +0 -0
  58. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api.egg-info/SOURCES.txt +0 -0
  59. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api.egg-info/dependency_links.txt +0 -0
  60. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api.egg-info/entry_points.txt +0 -0
  61. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api.egg-info/requires.txt +0 -0
  62. {rclone_api-1.1.53 → rclone_api-1.1.54}/src/rclone_api.egg-info/top_level.txt +0 -0
  63. {rclone_api-1.1.53 → rclone_api-1.1.54}/test +0 -0
  64. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/archive/test_paramiko.py.disabled +0 -0
  65. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_cmd_list_files.py +0 -0
  66. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_copy.py +0 -0
  67. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_copy_bytes.py +0 -0
  68. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_copy_file_resumable_s3.py +0 -0
  69. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_copy_files.py +0 -0
  70. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_diff.py +0 -0
  71. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_group_files.py +0 -0
  72. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_is_synced.py +0 -0
  73. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_ls.py +0 -0
  74. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_mount.py +0 -0
  75. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_mount_s3.py +0 -0
  76. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_obscure.py +0 -0
  77. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_rclone_config.py +0 -0
  78. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_remote_control.py +0 -0
  79. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_remotes.py +0 -0
  80. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_s3.py +0 -0
  81. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_scan_missing_folders.py +0 -0
  82. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_size_files.py +0 -0
  83. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_size_suffix.py +0 -0
  84. {rclone_api-1.1.53 → rclone_api-1.1.54}/tests/test_walk.py +0 -0
  85. {rclone_api-1.1.53 → rclone_api-1.1.54}/tox.ini +0 -0
  86. {rclone_api-1.1.53 → rclone_api-1.1.54}/upload_package.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.1.53
3
+ Version: 1.1.54
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.53"
26
+ version = "1.1.54"
27
27
 
28
28
  [tool.setuptools]
29
29
  package-dir = {"" = "src"}
@@ -6,6 +6,7 @@ import argparse
6
6
  import os
7
7
  import shutil
8
8
  import time
9
+ from concurrent.futures import ThreadPoolExecutor
9
10
  from dataclasses import dataclass
10
11
  from pathlib import Path
11
12
 
@@ -14,6 +15,8 @@ from dotenv import load_dotenv
14
15
 
15
16
  from rclone_api import Config, Rclone, SizeSuffix
16
17
 
18
+ os.environ["RCLONE_API_VERBOSE"] = "1"
19
+
17
20
 
18
21
  @dataclass
19
22
  class Args:
@@ -96,25 +99,12 @@ pass = {SRC_SFTP_PASS}
96
99
  return Config(config_text), creds
97
100
 
98
101
 
99
- def _init() -> None:
100
- """Check if all required environment variables are set before running tests."""
101
- required_vars = [
102
- "BUCKET_NAME",
103
- "BUCKET_KEY_SECRET",
104
- "BUCKET_KEY_PUBLIC",
105
- "BUCKET_URL",
106
- ]
107
- missing = [var for var in required_vars if not os.getenv(var)]
108
- if missing:
109
- print(f"Missing required environment variables: {', '.join(missing)}")
110
- os.environ["RCLONE_API_VERBOSE"] = "1"
111
-
112
-
113
102
  def _run_profile(
114
103
  rclone: Rclone,
115
104
  src_file: str,
116
105
  transfers: int,
117
- size: int,
106
+ offset: SizeSuffix,
107
+ size: SizeSuffix,
118
108
  log_dir: Path,
119
109
  direct_io: bool = True,
120
110
  ) -> None:
@@ -128,8 +118,8 @@ def _run_profile(
128
118
  start = time.time()
129
119
  bytes_or_err: bytes | Exception = rclone.copy_bytes(
130
120
  src=src_file,
131
- offset=0,
132
- length=size,
121
+ offset=offset.as_int(),
122
+ length=size.as_int(),
133
123
  direct_io=direct_io,
134
124
  transfers=transfers,
135
125
  mount_log=mount_log,
@@ -142,14 +132,14 @@ def _run_profile(
142
132
  assert False, f"Error: {bytes_or_err}\nStack trace:\n{stack_trace}"
143
133
  assert isinstance(bytes_or_err, bytes)
144
134
  # self.assertEqual(len(bytes_or_err), size)
145
- assert len(bytes_or_err) == size, f"Length: {len(bytes_or_err)} != {size}"
135
+ assert len(bytes_or_err) == size.as_int(), f"Length: {len(bytes_or_err)} != {size}"
146
136
 
147
137
  # print io stats
148
138
  bytes_sent = net_io_end.bytes_sent - net_io_start.bytes_sent
149
139
  bytes_recv = net_io_end.bytes_recv - net_io_start.bytes_recv
150
140
  packets_sent = net_io_end.packets_sent - net_io_start.packets_sent
151
141
  efficiency = size / (bytes_recv)
152
- efficiency_100 = efficiency * 100
142
+ efficiency_100 = efficiency.as_int() * 100
153
143
  efficiency_str = f"{efficiency_100:.2f}"
154
144
 
155
145
  bytes_send_suffix = SizeSuffix(bytes_sent)
@@ -165,14 +155,7 @@ def _run_profile(
165
155
  print(f"Time: {diff:.1f} seconds")
166
156
 
167
157
 
168
- def test_profile_copy_bytes(args: Args) -> None:
169
- print("Running test_profile_copy_bytes")
170
- config, creds = _generate_rclone_config()
171
- print("Config:")
172
- print(config)
173
- print("Credentials:")
174
- print(creds)
175
- rclone = Rclone(config)
158
+ def test_profile_copy_bytes(args: Args, rclone: Rclone, offset: SizeSuffix) -> None:
176
159
 
177
160
  sizes = [
178
161
  1024 * 1024 * 1,
@@ -202,7 +185,8 @@ def test_profile_copy_bytes(args: Args) -> None:
202
185
  rclone=rclone,
203
186
  src_file=src_file,
204
187
  transfers=transfers,
205
- size=size,
188
+ offset=offset,
189
+ size=SizeSuffix(size),
206
190
  direct_io=args.direct_io,
207
191
  log_dir=mount_root_path,
208
192
  )
@@ -218,9 +202,24 @@ def _parse_args() -> Args:
218
202
 
219
203
  def main() -> None:
220
204
  """Main entry point."""
221
- _init()
205
+ print("Running test_profile_copy_bytes")
206
+ config, creds = _generate_rclone_config()
207
+ print("Config:")
208
+ print(config)
209
+ print("Credentials:")
210
+ print(creds)
211
+ rclone = Rclone(config)
212
+
222
213
  args = _parse_args()
223
- test_profile_copy_bytes(args)
214
+
215
+ with ThreadPoolExecutor() as executor:
216
+
217
+ def task(offset: SizeSuffix, args=args, rclone=rclone):
218
+ return test_profile_copy_bytes(args, rclone, offset)
219
+
220
+ executor.submit(task, SizeSuffix(0))
221
+ executor.submit(task, SizeSuffix("1G"))
222
+ executor.submit(task, SizeSuffix("2G"))
224
223
 
225
224
 
226
225
  if __name__ == "__main__":
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.1.53
3
+ Version: 1.1.54
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