rclone-api 1.4.14__tar.gz → 1.4.15__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 (106) hide show
  1. {rclone_api-1.4.14 → rclone_api-1.4.15}/PKG-INFO +1 -1
  2. {rclone_api-1.4.14 → rclone_api-1.4.15}/pyproject.toml +1 -1
  3. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/cmd/copy_large_s3_finish.py +11 -5
  4. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/s3/api.py +3 -3
  5. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/s3/create.py +31 -27
  6. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/s3/s3_multipart_uploader_by_copy.py +1 -1
  7. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api.egg-info/PKG-INFO +1 -1
  8. {rclone_api-1.4.14 → rclone_api-1.4.15}/.aiderignore +0 -0
  9. {rclone_api-1.4.14 → rclone_api-1.4.15}/.github/workflows/lint.yml +0 -0
  10. {rclone_api-1.4.14 → rclone_api-1.4.15}/.github/workflows/push_macos.yml +0 -0
  11. {rclone_api-1.4.14 → rclone_api-1.4.15}/.github/workflows/push_ubuntu.yml +0 -0
  12. {rclone_api-1.4.14 → rclone_api-1.4.15}/.github/workflows/push_win.yml +0 -0
  13. {rclone_api-1.4.14 → rclone_api-1.4.15}/.gitignore +0 -0
  14. {rclone_api-1.4.14 → rclone_api-1.4.15}/.pylintrc +0 -0
  15. {rclone_api-1.4.14 → rclone_api-1.4.15}/.vscode/launch.json +0 -0
  16. {rclone_api-1.4.14 → rclone_api-1.4.15}/.vscode/settings.json +0 -0
  17. {rclone_api-1.4.14 → rclone_api-1.4.15}/.vscode/tasks.json +0 -0
  18. {rclone_api-1.4.14 → rclone_api-1.4.15}/LICENSE +0 -0
  19. {rclone_api-1.4.14 → rclone_api-1.4.15}/MANIFEST.in +0 -0
  20. {rclone_api-1.4.14 → rclone_api-1.4.15}/README.md +0 -0
  21. {rclone_api-1.4.14 → rclone_api-1.4.15}/clean +0 -0
  22. {rclone_api-1.4.14 → rclone_api-1.4.15}/install +0 -0
  23. {rclone_api-1.4.14 → rclone_api-1.4.15}/lint +0 -0
  24. {rclone_api-1.4.14 → rclone_api-1.4.15}/requirements.testing.txt +0 -0
  25. {rclone_api-1.4.14 → rclone_api-1.4.15}/setup.cfg +0 -0
  26. {rclone_api-1.4.14 → rclone_api-1.4.15}/setup.py +0 -0
  27. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/__init__.py +0 -0
  28. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/assets/example.txt +0 -0
  29. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/cli.py +0 -0
  30. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/cmd/analyze.py +0 -0
  31. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/cmd/copy_large_s3.py +0 -0
  32. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/cmd/list_files.py +0 -0
  33. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/cmd/save_to_db.py +0 -0
  34. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/completed_process.py +0 -0
  35. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/config.py +0 -0
  36. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/convert.py +0 -0
  37. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/db/__init__.py +0 -0
  38. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/db/db.py +0 -0
  39. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/db/models.py +0 -0
  40. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/deprecated.py +0 -0
  41. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/detail/copy_file_parts.py +0 -0
  42. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/detail/walk.py +0 -0
  43. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/diff.py +0 -0
  44. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/dir.py +0 -0
  45. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/dir_listing.py +0 -0
  46. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/exec.py +0 -0
  47. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/experimental/flags.py +0 -0
  48. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/experimental/flags_base.py +0 -0
  49. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/file.py +0 -0
  50. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/file_item.py +0 -0
  51. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/file_part.py +0 -0
  52. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/file_stream.py +0 -0
  53. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/filelist.py +0 -0
  54. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/group_files.py +0 -0
  55. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/http_server.py +0 -0
  56. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/log.py +0 -0
  57. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/mount.py +0 -0
  58. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/process.py +0 -0
  59. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/rclone_impl.py +0 -0
  60. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/remote.py +0 -0
  61. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/rpath.py +0 -0
  62. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/s3/basic_ops.py +0 -0
  63. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/s3/chunk_task.py +0 -0
  64. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/s3/multipart/file_info.py +0 -0
  65. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/s3/multipart/finished_piece.py +0 -0
  66. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/s3/multipart/upload_info.py +0 -0
  67. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/s3/multipart/upload_state.py +0 -0
  68. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/s3/types.py +0 -0
  69. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/s3/upload_file_multipart.py +0 -0
  70. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/scan_missing_folders.py +0 -0
  71. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/types.py +0 -0
  72. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api/util.py +0 -0
  73. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api.egg-info/SOURCES.txt +0 -0
  74. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api.egg-info/dependency_links.txt +0 -0
  75. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api.egg-info/entry_points.txt +0 -0
  76. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api.egg-info/requires.txt +0 -0
  77. {rclone_api-1.4.14 → rclone_api-1.4.15}/src/rclone_api.egg-info/top_level.txt +0 -0
  78. {rclone_api-1.4.14 → rclone_api-1.4.15}/test +0 -0
  79. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/archive/test_paramiko.py.disabled +0 -0
  80. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_cmd_list_files.py +0 -0
  81. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_copy.py +0 -0
  82. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_copy_bytes.py +0 -0
  83. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_copy_file_resumable_s3.py +0 -0
  84. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_copy_files.py +0 -0
  85. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_db.py +0 -0
  86. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_diff.py +0 -0
  87. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_file_item.py +0 -0
  88. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_group_files.py +0 -0
  89. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_is_synced.py +0 -0
  90. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_ls.py +0 -0
  91. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_ls_stream_files.py +0 -0
  92. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_mount.py +0 -0
  93. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_mount_s3.py +0 -0
  94. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_obscure.py +0 -0
  95. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_rclone_config.py +0 -0
  96. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_read_write_text.py +0 -0
  97. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_remote_control.py +0 -0
  98. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_remotes.py +0 -0
  99. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_s3.py +0 -0
  100. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_scan_missing_folders.py +0 -0
  101. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_serve_http.py +0 -0
  102. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_size_files.py +0 -0
  103. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_size_suffix.py +0 -0
  104. {rclone_api-1.4.14 → rclone_api-1.4.15}/tests/test_walk.py +0 -0
  105. {rclone_api-1.4.14 → rclone_api-1.4.15}/tox.ini +0 -0
  106. {rclone_api-1.4.14 → rclone_api-1.4.15}/upload_package.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.4.14
3
+ Version: 1.4.15
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.4.14"
28
+ version = "1.4.15"
29
29
 
30
30
  [tool.setuptools]
31
31
  package-dir = {"" = "src"}
@@ -10,6 +10,9 @@ from rclone_api.s3.s3_multipart_uploader_by_copy import (
10
10
  )
11
11
  from rclone_api.types import SizeSuffix
12
12
 
13
+ _TIMEOUT_READ = 900
14
+ _TIMEOUT_CONNECTION = 900
15
+
13
16
 
14
17
  @dataclass
15
18
  class Args:
@@ -58,10 +61,14 @@ def do_finish_part(rclone: Rclone, info: InfoJson, dst: str) -> None:
58
61
  create_s3_client,
59
62
  )
60
63
 
61
- s3_creds: S3Credentials = rclone.impl.get_s3_credentials(remote=dst)
62
- s3_client: BaseClient = create_s3_client(
63
- s3_creds, S3Config(verbose=False, timeout_read=5 * 60)
64
+ s3_config = S3Config(
65
+ verbose=False,
66
+ timeout_read=_TIMEOUT_READ,
67
+ timeout_connection=_TIMEOUT_CONNECTION,
64
68
  )
69
+
70
+ s3_creds: S3Credentials = rclone.impl.get_s3_credentials(remote=dst)
71
+ s3_client: BaseClient = create_s3_client(s3_creds=s3_creds, s3_config=s3_config)
65
72
  s3_bucket = s3_creds.bucket_name
66
73
  is_done = info.fetch_is_done()
67
74
  assert is_done, f"Upload is not done: {info}"
@@ -115,8 +122,7 @@ def do_finish_part(rclone: Rclone, info: InfoJson, dst: str) -> None:
115
122
  destination_key=dst_key,
116
123
  chunk_size=chunksize.as_int(),
117
124
  final_size=size.as_int(),
118
- max_workers=50,
119
- retries=3,
125
+ max_workers=10,
120
126
  )
121
127
 
122
128
  # now check if the dst now exists, if so, delete the parts folder.
@@ -20,11 +20,11 @@ _MIN_THRESHOLD_FOR_CHUNKING = 5 * 1024 * 1024
20
20
 
21
21
 
22
22
  class S3Client:
23
- def __init__(self, credentials: S3Credentials, verbose: bool = False) -> None:
23
+ def __init__(self, s3_creds: S3Credentials, verbose: bool = False) -> None:
24
24
  self.verbose = verbose
25
- self.credentials: S3Credentials = credentials
25
+ self.credentials: S3Credentials = s3_creds
26
26
  self.client: BaseClient = create_s3_client(
27
- credentials, config=S3Config(verbose=verbose)
27
+ s3_creds=s3_creds, s3_config=S3Config(verbose=verbose)
28
28
  )
29
29
 
30
30
  def list_bucket_contents(self, bucket_name: str) -> None:
@@ -8,7 +8,7 @@ from botocore.config import Config
8
8
  from rclone_api.s3.types import S3Credentials, S3Provider
9
9
 
10
10
  _DEFAULT_BACKBLAZE_ENDPOINT = "https://s3.us-west-002.backblazeb2.com"
11
- _MAX_CONNECTIONS = 50
11
+ _MAX_CONNECTIONS = 10
12
12
  _TIMEOUT_READ = 120
13
13
  _TIMEOUT_CONNECT = 60
14
14
 
@@ -30,14 +30,16 @@ class S3Config:
30
30
  # Create a Boto3 session and S3 client, this is back blaze specific.
31
31
  # Add a function if you want to use a different S3 provider.
32
32
  # If AWS support is added in a fork then please merge it back here.
33
- def _create_backblaze_s3_client(creds: S3Credentials, config: S3Config) -> BaseClient:
33
+ def _create_backblaze_s3_client(
34
+ s3_creds: S3Credentials, s3_config: S3Config
35
+ ) -> BaseClient:
34
36
  """Create and return an S3 client."""
35
- region_name = creds.region_name
36
- access_key = creds.access_key_id
37
- secret_key = creds.secret_access_key
38
- endpoint_url = creds.endpoint_url
37
+ region_name = s3_creds.region_name
38
+ access_key = s3_creds.access_key_id
39
+ secret_key = s3_creds.secret_access_key
40
+ endpoint_url = s3_creds.endpoint_url
39
41
  endpoint_url = endpoint_url or _DEFAULT_BACKBLAZE_ENDPOINT
40
- config.resolve_defaults()
42
+ s3_config.resolve_defaults()
41
43
  session = boto3.session.Session() # type: ignore
42
44
  return session.client(
43
45
  service_name="s3",
@@ -48,9 +50,9 @@ def _create_backblaze_s3_client(creds: S3Credentials, config: S3Config) -> BaseC
48
50
  config=Config(
49
51
  signature_version="s3v4",
50
52
  region_name=region_name,
51
- max_pool_connections=config.max_pool_connections,
52
- read_timeout=config.timeout_read,
53
- connect_timeout=config.timeout_connection,
53
+ max_pool_connections=s3_config.max_pool_connections,
54
+ read_timeout=s3_config.timeout_read,
55
+ connect_timeout=s3_config.timeout_connection,
54
56
  # Note that BackBlase has a boko3 bug where it doesn't support the new
55
57
  # checksum header, the following line was an attempt of fix it on the newest
56
58
  # version of boto3, but it didn't work.
@@ -59,18 +61,20 @@ def _create_backblaze_s3_client(creds: S3Credentials, config: S3Config) -> BaseC
59
61
  )
60
62
 
61
63
 
62
- def _create_unknown_s3_client(creds: S3Credentials, config: S3Config) -> BaseClient:
64
+ def _create_unknown_s3_client(
65
+ s3_creds: S3Credentials, s3_config: S3Config
66
+ ) -> BaseClient:
63
67
  """Create and return an S3 client."""
64
- access_key = creds.access_key_id
65
- secret_key = creds.secret_access_key
66
- endpoint_url = creds.endpoint_url
68
+ access_key = s3_creds.access_key_id
69
+ secret_key = s3_creds.secret_access_key
70
+ endpoint_url = s3_creds.endpoint_url
67
71
  if (endpoint_url is not None) and not (endpoint_url.startswith("http")):
68
- if config.verbose:
72
+ if s3_config.verbose:
69
73
  warnings.warn(
70
74
  f"Endpoint URL is schema naive: {endpoint_url}, assuming HTTPS"
71
75
  )
72
76
  endpoint_url = f"https://{endpoint_url}"
73
- config.resolve_defaults()
77
+ s3_config.resolve_defaults()
74
78
  session = boto3.session.Session() # type: ignore
75
79
  return session.client(
76
80
  service_name="s3",
@@ -79,25 +83,25 @@ def _create_unknown_s3_client(creds: S3Credentials, config: S3Config) -> BaseCli
79
83
  endpoint_url=endpoint_url,
80
84
  config=Config(
81
85
  signature_version="s3v4",
82
- region_name=creds.region_name,
83
- max_pool_connections=config.max_pool_connections,
84
- read_timeout=config.timeout_read,
85
- connect_timeout=config.timeout_connection,
86
+ region_name=s3_creds.region_name,
87
+ max_pool_connections=s3_config.max_pool_connections,
88
+ read_timeout=s3_config.timeout_read,
89
+ connect_timeout=s3_config.timeout_connection,
86
90
  ),
87
91
  )
88
92
 
89
93
 
90
94
  def create_s3_client(
91
- credentials: S3Credentials, config: S3Config | None = None
95
+ s3_creds: S3Credentials, s3_config: S3Config | None = None
92
96
  ) -> BaseClient:
93
97
  """Create and return an S3 client."""
94
- config = config or S3Config()
95
- provider = credentials.provider
98
+ s3_config = s3_config or S3Config()
99
+ provider = s3_creds.provider
96
100
  if provider == S3Provider.BACKBLAZE:
97
- if config.verbose:
101
+ if s3_config.verbose:
98
102
  print("Creating BackBlaze S3 client")
99
- return _create_backblaze_s3_client(creds=credentials, config=config)
103
+ return _create_backblaze_s3_client(s3_creds=s3_creds, s3_config=s3_config)
100
104
  else:
101
- if config.verbose:
105
+ if s3_config.verbose:
102
106
  print("Creating generic/unknown S3 client")
103
- return _create_unknown_s3_client(creds=credentials, config=config)
107
+ return _create_unknown_s3_client(s3_creds=s3_creds, s3_config=s3_config)
@@ -240,7 +240,7 @@ class S3MultiPartUploader:
240
240
  destination_key: str,
241
241
  chunk_size: int,
242
242
  final_size: int,
243
- retries: int = 3,
243
+ retries: int = 100,
244
244
  ) -> str:
245
245
  """
246
246
  Finish a multipart upload by copying parts from existing S3 objects.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.4.14
3
+ Version: 1.4.15
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