rclone-api 1.0.43__tar.gz → 1.0.45__tar.gz

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rclone-api might be problematic. Click here for more details.

Files changed (64) hide show
  1. {rclone_api-1.0.43 → rclone_api-1.0.45}/PKG-INFO +1 -1
  2. {rclone_api-1.0.43 → rclone_api-1.0.45}/pyproject.toml +1 -1
  3. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/__init__.py +2 -1
  4. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/group_files.py +19 -19
  5. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/rclone.py +14 -0
  6. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api.egg-info/PKG-INFO +1 -1
  7. {rclone_api-1.0.43 → rclone_api-1.0.45}/.aiderignore +0 -0
  8. {rclone_api-1.0.43 → rclone_api-1.0.45}/.github/workflows/lint.yml +0 -0
  9. {rclone_api-1.0.43 → rclone_api-1.0.45}/.github/workflows/push_macos.yml +0 -0
  10. {rclone_api-1.0.43 → rclone_api-1.0.45}/.github/workflows/push_ubuntu.yml +0 -0
  11. {rclone_api-1.0.43 → rclone_api-1.0.45}/.github/workflows/push_win.yml +0 -0
  12. {rclone_api-1.0.43 → rclone_api-1.0.45}/.gitignore +0 -0
  13. {rclone_api-1.0.43 → rclone_api-1.0.45}/.pylintrc +0 -0
  14. {rclone_api-1.0.43 → rclone_api-1.0.45}/.vscode/launch.json +0 -0
  15. {rclone_api-1.0.43 → rclone_api-1.0.45}/.vscode/settings.json +0 -0
  16. {rclone_api-1.0.43 → rclone_api-1.0.45}/.vscode/tasks.json +0 -0
  17. {rclone_api-1.0.43 → rclone_api-1.0.45}/LICENSE +0 -0
  18. {rclone_api-1.0.43 → rclone_api-1.0.45}/MANIFEST.in +0 -0
  19. {rclone_api-1.0.43 → rclone_api-1.0.45}/README.md +0 -0
  20. {rclone_api-1.0.43 → rclone_api-1.0.45}/clean +0 -0
  21. {rclone_api-1.0.43 → rclone_api-1.0.45}/install +0 -0
  22. {rclone_api-1.0.43 → rclone_api-1.0.45}/lint +0 -0
  23. {rclone_api-1.0.43 → rclone_api-1.0.45}/requirements.testing.txt +0 -0
  24. {rclone_api-1.0.43 → rclone_api-1.0.45}/setup.cfg +0 -0
  25. {rclone_api-1.0.43 → rclone_api-1.0.45}/setup.py +0 -0
  26. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/assets/example.txt +0 -0
  27. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/cli.py +0 -0
  28. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/cmd/list_files.py +0 -0
  29. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/completed_process.py +0 -0
  30. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/config.py +0 -0
  31. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/convert.py +0 -0
  32. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/deprecated.py +0 -0
  33. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/diff.py +0 -0
  34. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/dir.py +0 -0
  35. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/dir_listing.py +0 -0
  36. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/exec.py +0 -0
  37. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/file.py +0 -0
  38. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/filelist.py +0 -0
  39. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/process.py +0 -0
  40. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/remote.py +0 -0
  41. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/rpath.py +0 -0
  42. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/util.py +0 -0
  43. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api/walk.py +0 -0
  44. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api.egg-info/SOURCES.txt +0 -0
  45. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api.egg-info/dependency_links.txt +0 -0
  46. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api.egg-info/entry_points.txt +0 -0
  47. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api.egg-info/requires.txt +0 -0
  48. {rclone_api-1.0.43 → rclone_api-1.0.45}/src/rclone_api.egg-info/top_level.txt +0 -0
  49. {rclone_api-1.0.43 → rclone_api-1.0.45}/test +0 -0
  50. {rclone_api-1.0.43 → rclone_api-1.0.45}/tests/test_cmd_list_files.py +0 -0
  51. {rclone_api-1.0.43 → rclone_api-1.0.45}/tests/test_copy.py +0 -0
  52. {rclone_api-1.0.43 → rclone_api-1.0.45}/tests/test_diff.py +0 -0
  53. {rclone_api-1.0.43 → rclone_api-1.0.45}/tests/test_group_files.py +0 -0
  54. {rclone_api-1.0.43 → rclone_api-1.0.45}/tests/test_is_synced.py +0 -0
  55. {rclone_api-1.0.43 → rclone_api-1.0.45}/tests/test_ls.py +0 -0
  56. {rclone_api-1.0.43 → rclone_api-1.0.45}/tests/test_mount.py +0 -0
  57. {rclone_api-1.0.43 → rclone_api-1.0.45}/tests/test_mount_s3.py +0 -0
  58. {rclone_api-1.0.43 → rclone_api-1.0.45}/tests/test_mount_webdav.py +0 -0
  59. {rclone_api-1.0.43 → rclone_api-1.0.45}/tests/test_obscure.py +0 -0
  60. {rclone_api-1.0.43 → rclone_api-1.0.45}/tests/test_remotes.py +0 -0
  61. {rclone_api-1.0.43 → rclone_api-1.0.45}/tests/test_serve_webdav.py +0 -0
  62. {rclone_api-1.0.43 → rclone_api-1.0.45}/tests/test_walk.py +0 -0
  63. {rclone_api-1.0.43 → rclone_api-1.0.45}/tox.ini +0 -0
  64. {rclone_api-1.0.43 → rclone_api-1.0.45}/upload_package.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.0.43
3
+ Version: 1.0.45
4
4
  Summary: rclone api in python
5
5
  Home-page: https://github.com/zackees/rclone-api
6
6
  Maintainer: Zachary Vorhies
@@ -15,7 +15,7 @@ dependencies = [
15
15
  "python-dotenv>=1.0.0",
16
16
  ]
17
17
  # Change this with the version number bump.
18
- version = "1.0.43"
18
+ version = "1.0.45"
19
19
 
20
20
  [tool.setuptools]
21
21
  package-dir = {"" = "src"}
@@ -5,7 +5,7 @@ from .dir_listing import DirListing
5
5
  from .file import File
6
6
  from .filelist import FileList
7
7
  from .process import Process
8
- from .rclone import Rclone
8
+ from .rclone import Rclone, rclone_verbose
9
9
  from .remote import Remote
10
10
  from .rpath import RPath
11
11
 
@@ -21,4 +21,5 @@ __all__ = [
21
21
  "Process",
22
22
  "DiffItem",
23
23
  "DiffType",
24
+ "rclone_verbose",
24
25
  ]
@@ -39,10 +39,10 @@ class TreeNode:
39
39
  self.count = 0
40
40
  self.parent = parent
41
41
 
42
- def add_count(self):
42
+ def add_count_bubble_up(self):
43
43
  self.count += 1
44
44
  if self.parent:
45
- self.parent.add_count()
45
+ self.parent.add_count_bubble_up()
46
46
 
47
47
  def get_path(self) -> str:
48
48
  paths_reversed: list[str] = [self.name]
@@ -85,9 +85,6 @@ def _merge(node: TreeNode, parent_path: str, out: dict[str, list[str]]) -> None:
85
85
  if node.files:
86
86
  # we saw files, to don't try to go any deeper.
87
87
  filelist = out.setdefault(parent_path, [])
88
- # for file in node.files:
89
- # filelist.append(file)
90
- # out[parent_path] = filelist
91
88
  paths = node.get_child_subpaths()
92
89
  for path in paths:
93
90
  filelist.append(path)
@@ -96,18 +93,12 @@ def _merge(node: TreeNode, parent_path: str, out: dict[str, list[str]]) -> None:
96
93
 
97
94
  n_child_nodes = len(node.child_nodes)
98
95
 
99
- if n_child_nodes < 4:
100
- # child = list(node.child_nodes.values())[0]
101
- # _merge(child, parent_path, out)
102
- # return
96
+ if n_child_nodes <= 2:
103
97
  for child in node.child_nodes.values():
104
98
  _merge(child, parent_path, out)
105
99
  return
106
100
 
107
101
  filelist = out.setdefault(parent_path, [])
108
- # for file in node.files:
109
- # filelist.append(file)
110
- # out[parent_path] = filelist
111
102
  paths = node.get_child_subpaths()
112
103
  for path in paths:
113
104
  filelist.append(path)
@@ -126,16 +117,12 @@ def _make_tree(files: list[str]) -> dict[str, TreeNode]:
126
117
  node = node.child_nodes.setdefault(parent, TreeNode(parent, parent=node))
127
118
  if is_last:
128
119
  node.files.append(parts.name)
129
- node.add_count()
120
+ node.add_count_bubble_up()
130
121
  return tree
131
122
 
132
123
 
133
- def group_files(files: list[str]) -> dict[str, list[str]]:
134
- """split between filename and parent directory path"""
135
- tree: dict[str, TreeNode] = _make_tree(files)
136
- outpaths: dict[str, list[str]] = {}
137
- for _, node in tree.items():
138
- _merge(node, "", outpaths)
124
+ #
125
+ def _fixup_rclone_paths(outpaths: dict[str, list[str]]) -> dict[str, list[str]]:
139
126
  out: dict[str, list[str]] = {}
140
127
  for path, files in outpaths.items():
141
128
  # fixup path
@@ -145,3 +132,16 @@ def group_files(files: list[str]) -> dict[str, list[str]]:
145
132
  path = path.replace("/", ":", 1)
146
133
  out[path] = files
147
134
  return out
135
+
136
+
137
+ def group_files(files: list[str]) -> dict[str, list[str]]:
138
+ """split between filename and parent directory path"""
139
+ tree: dict[str, TreeNode] = _make_tree(files)
140
+ outpaths: dict[str, list[str]] = {}
141
+ for _, node in tree.items():
142
+ _merge(node, "", outpaths)
143
+ out: dict[str, list[str]] = _fixup_rclone_paths(outpaths=outpaths)
144
+ return out
145
+
146
+
147
+ __all__ = ["group_files"]
@@ -2,6 +2,7 @@
2
2
  Unit test file.
3
3
  """
4
4
 
5
+ import os
5
6
  import subprocess
6
7
  import time
7
8
  import warnings
@@ -36,6 +37,12 @@ from rclone_api.walk import walk
36
37
  EXECUTOR = ThreadPoolExecutor(16)
37
38
 
38
39
 
40
+ def rclone_verbose(verbose: bool | None) -> bool:
41
+ if verbose is not None:
42
+ os.environ["RCLONE_API_VERBOSE"] = "1" if verbose else "0"
43
+ return bool(int(os.getenv("RCLONE_API_VERBOSE", "0")))
44
+
45
+
39
46
  class ModTimeStrategy(Enum):
40
47
  USE_SERVER_MODTIME = "use-server-modtime"
41
48
  NO_MODTIME = "no-modtime"
@@ -178,6 +185,13 @@ class Rclone:
178
185
 
179
186
  yield from walk(dir_obj, max_depth=max_depth, breadth_first=breadth_first)
180
187
 
188
+ def cleanup(self, path: str) -> CompletedProcess:
189
+ """Cleanup any resources used by the Rclone instance."""
190
+ # rclone cleanup remote:path [flags]
191
+ cmd = ["cleanup", path]
192
+ out = self._run(cmd)
193
+ return CompletedProcess.from_subprocess(out)
194
+
181
195
  def copyfile(self, src: File | str, dst: File | str) -> None:
182
196
  """Copy a single file from source to destination.
183
197
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rclone_api
3
- Version: 1.0.43
3
+ Version: 1.0.45
4
4
  Summary: rclone api in python
5
5
  Home-page: https://github.com/zackees/rclone-api
6
6
  Maintainer: Zachary Vorhies
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