FileBackup 0.4.1__tar.gz → 0.4.3__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.
- {filebackup-0.4.1 → filebackup-0.4.3}/.github/actions/release_impl/action.yml +6 -2
- {filebackup-0.4.1 → filebackup-0.4.3}/.github/workflows/CICD_impl.yml +83 -1
- {filebackup-0.4.1 → filebackup-0.4.3}/.gitignore +1 -0
- filebackup-0.4.3/BuildBinary.py +120 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/PKG-INFO +2 -3
- {filebackup-0.4.1 → filebackup-0.4.3}/pyproject.toml +4 -4
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/Offsite.py +3 -3
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/__init__.py +1 -1
- {filebackup-0.4.1 → filebackup-0.4.3}/tests/Offsite_UnitTest.py +44 -1
- {filebackup-0.4.1 → filebackup-0.4.3}/uv.lock +190 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/.copier-answers.yml +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/.github/CODEOWNERS +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/.github/ISSUE_TEMPLATE/custom.md +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/.github/pull_request_template.md +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/.github/release_sources.yaml +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/.github/workflows/CICD.yml +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/.github/workflows/codeql.yml +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/.pre-commit-config.yaml +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/.python-version +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/CODE_OF_CONDUCT.md +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/CONTRIBUTING.md +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/DEVELOPMENT.md +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/GOVERNANCE.md +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/LICENSE +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/MAINTAINERS.md +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/README.md +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/SECURITY.md +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/minisign_key.pub +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/AutoGitSemVer.yaml +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/CommandLine/CommandLineArguments.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/CommandLine/EntryPoint.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/CommandLine/MirrorEntryPoint.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/CommandLine/OffsiteEntryPoint.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/CommandLine/__init__.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/DataStore/FastGlacierDataStore.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/DataStore/FileSystemDataStore.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/DataStore/Interfaces/BulkStorageDataStore.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/DataStore/Interfaces/DataStore.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/DataStore/Interfaces/FileBasedDataStore.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/DataStore/Interfaces/__init__.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/DataStore/S3BrowserDataStore.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/DataStore/SFTPDataStore.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/DataStore/__init__.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/Impl/Common.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/Impl/__init__.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/Mirror.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/Snapshot.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/py.typed +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/tests/CommandLine/EntryPoint_UnitTest.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/tests/Mirror_UnitTest.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/tests/Snapshot_UnitTest.py +0 -0
- {filebackup-0.4.1 → filebackup-0.4.3}/tests/TestHelpers.py +0 -0
|
@@ -36,11 +36,15 @@ runs:
|
|
|
36
36
|
with:
|
|
37
37
|
enable-cache: false # No uv.lock or requirements.txt files, so nothing to cache on
|
|
38
38
|
|
|
39
|
-
- name: Download
|
|
39
|
+
- name: Download Artifacts
|
|
40
40
|
uses: actions/download-artifact@v4
|
|
41
41
|
with:
|
|
42
|
-
name: Python package
|
|
43
42
|
path: dist
|
|
43
|
+
merge-multiple: true
|
|
44
|
+
|
|
45
|
+
- name: Remove Coverage Files Artifacts
|
|
46
|
+
shell: bash
|
|
47
|
+
run: rm dist/.coverage*
|
|
44
48
|
|
|
45
49
|
# Create repository tag
|
|
46
50
|
- name: Create Repository Tag
|
|
@@ -222,9 +222,91 @@ jobs:
|
|
|
222
222
|
- name: Validate Python Package
|
|
223
223
|
run: uv run python -c "import FileBackup as package; assert package.__version__ == '${{ env.PACKAGE_VERSION }}', package.__version__"
|
|
224
224
|
|
|
225
|
+
# ----------------------------------------------------------------------
|
|
226
|
+
build_binary:
|
|
227
|
+
needs: python_package
|
|
228
|
+
|
|
229
|
+
strategy:
|
|
230
|
+
fail-fast: false
|
|
231
|
+
|
|
232
|
+
matrix:
|
|
233
|
+
os: ${{ fromJson(inputs.operating_system_json_string) }}
|
|
234
|
+
|
|
235
|
+
name: Build Stand Alone Binary
|
|
236
|
+
runs-on: ${{ matrix.os }}
|
|
237
|
+
|
|
238
|
+
env:
|
|
239
|
+
PACKAGE_VERSION: ${{ needs.python_package.outputs.package_version }}
|
|
240
|
+
|
|
241
|
+
permissions:
|
|
242
|
+
contents: read
|
|
243
|
+
|
|
244
|
+
steps:
|
|
245
|
+
- uses: actions/checkout@v4
|
|
246
|
+
|
|
247
|
+
- name: Install uv and python
|
|
248
|
+
uses: astral-sh/setup-uv@v5
|
|
249
|
+
with:
|
|
250
|
+
python-version: ${{ inputs.python_package_version }}
|
|
251
|
+
enable-cache: true
|
|
252
|
+
|
|
253
|
+
- name: Build Binary
|
|
254
|
+
run: uv run python BuildBinary.py Build --verbose
|
|
255
|
+
|
|
256
|
+
- name: Bundle Binary
|
|
257
|
+
run: uv run python BuildBinary.py Bundle --custom-filename-suffix "-${{ env.PACKAGE_VERSION }}.${{ matrix.os }}" --verbose
|
|
258
|
+
|
|
259
|
+
- name: Upload Bundle
|
|
260
|
+
uses: actions/upload-artifact@v4
|
|
261
|
+
with:
|
|
262
|
+
name: Binary.${{ matrix.os }}
|
|
263
|
+
path: FileBackup-${{ env.PACKAGE_VERSION }}.*
|
|
264
|
+
validate_binary:
|
|
265
|
+
needs: [python_package, build_binary]
|
|
266
|
+
|
|
267
|
+
strategy:
|
|
268
|
+
fail-fast: false
|
|
269
|
+
|
|
270
|
+
matrix:
|
|
271
|
+
os: ${{ fromJson(inputs.operating_system_json_string) }}
|
|
272
|
+
|
|
273
|
+
name: Validate Stand Alone Binary
|
|
274
|
+
runs-on: ${{ matrix.os }}
|
|
275
|
+
|
|
276
|
+
env:
|
|
277
|
+
PACKAGE_VERSION: ${{ needs.python_package.outputs.package_version }}
|
|
278
|
+
|
|
279
|
+
permissions: {}
|
|
280
|
+
|
|
281
|
+
steps:
|
|
282
|
+
- name: Download Binary
|
|
283
|
+
uses: actions/download-artifact@v4
|
|
284
|
+
with:
|
|
285
|
+
name: Binary.${{ matrix.os }}
|
|
286
|
+
path: binary
|
|
287
|
+
|
|
288
|
+
- name: Unzip Archive (Windows)
|
|
289
|
+
if: ${{ startsWith(matrix.os, 'windows') }}
|
|
290
|
+
run: |-
|
|
291
|
+
cd binary
|
|
292
|
+
tar -xf FileBackup-${{ env.PACKAGE_VERSION }}.windows.zip
|
|
293
|
+
|
|
294
|
+
- name: Unzip Archive (Not Windows)
|
|
295
|
+
if: ${{ !startsWith(matrix.os, 'windows') }}
|
|
296
|
+
run: |-
|
|
297
|
+
cd binary
|
|
298
|
+
|
|
299
|
+
for file in ./*
|
|
300
|
+
do
|
|
301
|
+
tar -xvzf "$file"
|
|
302
|
+
done
|
|
303
|
+
|
|
304
|
+
- name: Validate Binary
|
|
305
|
+
run: binary/FileBackup version
|
|
306
|
+
|
|
225
307
|
# ----------------------------------------------------------------------
|
|
226
308
|
release:
|
|
227
|
-
needs: [package_coverage, python_package, validate_python_package]
|
|
309
|
+
needs: [package_coverage, python_package, validate_python_package, validate_binary]
|
|
228
310
|
|
|
229
311
|
name: Release
|
|
230
312
|
runs-on: ubuntu-latest
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import shutil
|
|
3
|
+
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
from typing import Annotated, Optional
|
|
6
|
+
|
|
7
|
+
import typer
|
|
8
|
+
|
|
9
|
+
from dbrownell_Common import SubprocessEx
|
|
10
|
+
from dbrownell_Common.Streams.DoneManager import DoneManager, Flags as DoneManagerFlags
|
|
11
|
+
from typer.core import TyperGroup
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# ----------------------------------------------------------------------
|
|
15
|
+
class NaturalOrderGrouper(TyperGroup):
|
|
16
|
+
# pylint: disable=missing-class-docstring
|
|
17
|
+
# ----------------------------------------------------------------------
|
|
18
|
+
def list_commands(self, *args, **kwargs): # pylint: disable=unused-argument
|
|
19
|
+
return self.commands.keys()
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# ----------------------------------------------------------------------
|
|
23
|
+
app = typer.Typer(
|
|
24
|
+
cls=NaturalOrderGrouper,
|
|
25
|
+
help=__doc__,
|
|
26
|
+
no_args_is_help=True,
|
|
27
|
+
pretty_exceptions_show_locals=False,
|
|
28
|
+
pretty_exceptions_enable=False,
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# ----------------------------------------------------------------------
|
|
33
|
+
@app.command("Build", no_args_is_help=False)
|
|
34
|
+
def Build(
|
|
35
|
+
verbose: Annotated[
|
|
36
|
+
bool,
|
|
37
|
+
typer.Option("--verbose", help="Write verbose information to the terminal."),
|
|
38
|
+
] = False,
|
|
39
|
+
debug: Annotated[
|
|
40
|
+
bool,
|
|
41
|
+
typer.Option("--debug", help="Write debug information to the terminal."),
|
|
42
|
+
] = False,
|
|
43
|
+
) -> None:
|
|
44
|
+
"""Build a standalone binary for the application."""
|
|
45
|
+
|
|
46
|
+
with DoneManager.CreateCommandLine(
|
|
47
|
+
flags=DoneManagerFlags.Create(verbose=verbose, debug=debug),
|
|
48
|
+
) as dm:
|
|
49
|
+
command_line = "cxfreeze --script src/FileBackup/CommandLine/EntryPoint.py --target-name=FileBackup"
|
|
50
|
+
|
|
51
|
+
dm.WriteVerbose(f"Command line: {command_line}\n\n")
|
|
52
|
+
|
|
53
|
+
with dm.YieldStream() as stream:
|
|
54
|
+
dm.result = SubprocessEx.Stream(command_line, stream)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
# ----------------------------------------------------------------------
|
|
58
|
+
@app.command("Bundle", no_args_is_help=False)
|
|
59
|
+
def Bundle(
|
|
60
|
+
custom_filename_suffix: Annotated[
|
|
61
|
+
Optional[str],
|
|
62
|
+
typer.Option("--custom-filename-suffix", help="Custom suffix for the output filename."),
|
|
63
|
+
] = None,
|
|
64
|
+
verbose: Annotated[
|
|
65
|
+
bool,
|
|
66
|
+
typer.Option("--verbose", help="Write verbose information to the terminal."),
|
|
67
|
+
] = False,
|
|
68
|
+
debug: Annotated[
|
|
69
|
+
bool,
|
|
70
|
+
typer.Option("--debug", help="Write debug information to the terminal."),
|
|
71
|
+
] = False,
|
|
72
|
+
) -> None:
|
|
73
|
+
"""Bundle a previously built standalone binary."""
|
|
74
|
+
|
|
75
|
+
custom_filename_suffix = (custom_filename_suffix or "").removesuffix("-latest")
|
|
76
|
+
|
|
77
|
+
with DoneManager.CreateCommandLine(
|
|
78
|
+
flags=DoneManagerFlags.Create(verbose=verbose, debug=debug),
|
|
79
|
+
) as dm:
|
|
80
|
+
build_dir = Path(__file__).parent / "build"
|
|
81
|
+
|
|
82
|
+
if not build_dir.is_dir():
|
|
83
|
+
dm.WriteError(
|
|
84
|
+
f"The build directory '{build_dir}' does not exist. Please run the 'Build' command first.\n"
|
|
85
|
+
)
|
|
86
|
+
return
|
|
87
|
+
|
|
88
|
+
subdirs = list(build_dir.iterdir())
|
|
89
|
+
if len(subdirs) != 1 or not subdirs[0].is_dir():
|
|
90
|
+
dm.WriteError(
|
|
91
|
+
f"The build directory '{build_dir}' should contain exactly one subdirectory with the built binary and its dependencies.\n"
|
|
92
|
+
)
|
|
93
|
+
return
|
|
94
|
+
|
|
95
|
+
build_dir /= subdirs[0]
|
|
96
|
+
|
|
97
|
+
output_name = f"FileBackup{custom_filename_suffix or ''}"
|
|
98
|
+
|
|
99
|
+
if os.name == "nt":
|
|
100
|
+
output_filename = Path(f"{output_name}.zip")
|
|
101
|
+
format = "zip"
|
|
102
|
+
else:
|
|
103
|
+
output_filename = Path(f"{output_name}.tar.gz")
|
|
104
|
+
format = "gztar"
|
|
105
|
+
|
|
106
|
+
with dm.Nested(f"Creating '{output_filename.name}'..."):
|
|
107
|
+
output_filename.unlink(missing_ok=True)
|
|
108
|
+
|
|
109
|
+
shutil.make_archive(
|
|
110
|
+
output_name,
|
|
111
|
+
format,
|
|
112
|
+
root_dir=build_dir,
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
# ----------------------------------------------------------------------
|
|
117
|
+
# ----------------------------------------------------------------------
|
|
118
|
+
# ----------------------------------------------------------------------
|
|
119
|
+
if __name__ == "__main__":
|
|
120
|
+
app()
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: FileBackup
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.3
|
|
4
4
|
Summary: Tool for creating and restoring file system backups.
|
|
5
5
|
Project-URL: Homepage, https://github.com/davidbrownell/FileBackup
|
|
6
6
|
Project-URL: Documentation, https://github.com/davidbrownell/FileBackup
|
|
7
7
|
Project-URL: Repository, https://github.com/davidbrownell/FileBackup
|
|
8
8
|
Author-email: David Brownell <github@DavidBrownell.com>
|
|
9
|
-
License: MIT
|
|
9
|
+
License-Expression: MIT
|
|
10
10
|
License-File: LICENSE
|
|
11
11
|
Keywords: backup,mirror,offsite,restore
|
|
12
12
|
Classifier: Development Status :: 4 - Beta
|
|
@@ -14,7 +14,6 @@ Classifier: Environment :: Console
|
|
|
14
14
|
Classifier: Intended Audience :: Developers
|
|
15
15
|
Classifier: Intended Audience :: End Users/Desktop
|
|
16
16
|
Classifier: Intended Audience :: System Administrators
|
|
17
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
18
17
|
Classifier: Natural Language :: English
|
|
19
18
|
Classifier: Operating System :: MacOS
|
|
20
19
|
Classifier: Operating System :: Microsoft :: Windows
|
|
@@ -20,13 +20,14 @@ keywords = [
|
|
|
20
20
|
"restore",
|
|
21
21
|
]
|
|
22
22
|
|
|
23
|
+
license = "MIT"
|
|
24
|
+
|
|
23
25
|
classifiers = [
|
|
24
26
|
"Development Status :: 4 - Beta", # TODO
|
|
25
27
|
"Environment :: Console",
|
|
26
28
|
"Intended Audience :: Developers",
|
|
27
29
|
"Intended Audience :: End Users/Desktop",
|
|
28
30
|
"Intended Audience :: System Administrators",
|
|
29
|
-
"License :: OSI Approved :: MIT License",
|
|
30
31
|
"Natural Language :: English",
|
|
31
32
|
"Operating System :: MacOS",
|
|
32
33
|
"Operating System :: Microsoft :: Windows",
|
|
@@ -42,9 +43,6 @@ classifiers = [
|
|
|
42
43
|
"Topic :: Utilities",
|
|
43
44
|
]
|
|
44
45
|
|
|
45
|
-
[project.license]
|
|
46
|
-
text = "MIT"
|
|
47
|
-
|
|
48
46
|
[project.urls]
|
|
49
47
|
Homepage = "https://github.com/davidbrownell/FileBackup"
|
|
50
48
|
Documentation = "https://github.com/davidbrownell/FileBackup"
|
|
@@ -61,6 +59,8 @@ build-backend = "hatchling.build"
|
|
|
61
59
|
[dependency-groups]
|
|
62
60
|
dev = [
|
|
63
61
|
"autogitsemver>=0.8.0",
|
|
62
|
+
"cx-freeze>=8.3.0",
|
|
63
|
+
"dbrownell-commitemojis>=0.1.3",
|
|
64
64
|
"pre-commit>=4.2.0",
|
|
65
65
|
"pytest>=8.3.5",
|
|
66
66
|
"pytest-cov>=6.1.1",
|
|
@@ -864,9 +864,9 @@ def Restore(
|
|
|
864
864
|
directory_working_dir
|
|
865
865
|
)
|
|
866
866
|
|
|
867
|
-
dest_filename.
|
|
868
|
-
|
|
869
|
-
|
|
867
|
+
if not dest_filename.is_file():
|
|
868
|
+
dest_filename.parent.mkdir(parents=True, exist_ok=True)
|
|
869
|
+
os.symlink(fullpath, dest_filename)
|
|
870
870
|
|
|
871
871
|
# Read the instructions
|
|
872
872
|
with (directory_working_dir / INDEX_FILENAME).open() as f:
|
|
@@ -9,4 +9,4 @@
|
|
|
9
9
|
# Note that this value will be overwritten by calls to `python ../../Build.py update_version` based
|
|
10
10
|
# on changes observed in the git repository. The default value below will be used until the value
|
|
11
11
|
# here is explicitly updated by the Continuous Integration system as part of a commit.
|
|
12
|
-
__version__ = "0.4.
|
|
12
|
+
__version__ = "0.4.3"
|
|
@@ -1111,6 +1111,49 @@ class TestRestore(object):
|
|
|
1111
1111
|
sep=os.path.sep,
|
|
1112
1112
|
)
|
|
1113
1113
|
|
|
1114
|
+
# ----------------------------------------------------------------------
|
|
1115
|
+
@pytest.mark.parametrize("is_local_filesystem", [True, False])
|
|
1116
|
+
@pytest.mark.parametrize("encryption_password", [None, str(uuid.uuid4())])
|
|
1117
|
+
@pytest.mark.parametrize("compress", [False, True])
|
|
1118
|
+
def test_RestoreMultipleBackupsSameFile(
|
|
1119
|
+
self, _working_dir, tmp_path_factory, compress, encryption_password, is_local_filesystem
|
|
1120
|
+
):
|
|
1121
|
+
with _YieldInitializedBackupHelper(
|
|
1122
|
+
tmp_path_factory, _working_dir, compress, encryption_password
|
|
1123
|
+
) as backup_helper:
|
|
1124
|
+
restore_helper = _RestoreHelper.Create(
|
|
1125
|
+
_working_dir,
|
|
1126
|
+
tmp_path_factory,
|
|
1127
|
+
encryption_password,
|
|
1128
|
+
is_local_filesystem,
|
|
1129
|
+
backup_helper.backup_name,
|
|
1130
|
+
backup_helper.output_dir,
|
|
1131
|
+
)
|
|
1132
|
+
|
|
1133
|
+
# Read the contents of a file. We will remove this file, create a backup, and then
|
|
1134
|
+
# restore the same file.
|
|
1135
|
+
file_under_test = _working_dir / "one" / "A"
|
|
1136
|
+
assert file_under_test.is_file(), file_under_test
|
|
1137
|
+
|
|
1138
|
+
file_under_test_contents = file_under_test.read_text(encoding="utf-8")
|
|
1139
|
+
|
|
1140
|
+
backup_file_under_test = restore_helper.backup_dir / "one" / "A"
|
|
1141
|
+
|
|
1142
|
+
# Remove the file
|
|
1143
|
+
file_under_test.unlink()
|
|
1144
|
+
|
|
1145
|
+
backup_helper.ExecuteBackup(_working_dir, compress, encryption_password)
|
|
1146
|
+
|
|
1147
|
+
# Write the file
|
|
1148
|
+
file_under_test.write_text(file_under_test_contents, encoding="utf-8")
|
|
1149
|
+
|
|
1150
|
+
backup_helper.ExecuteBackup(_working_dir, compress, encryption_password)
|
|
1151
|
+
|
|
1152
|
+
# Restore the backup
|
|
1153
|
+
restore_helper.ExecuteRestore(10)
|
|
1154
|
+
|
|
1155
|
+
assert Path(restore_helper.output_dir / "one" / "A").is_file()
|
|
1156
|
+
|
|
1114
1157
|
|
|
1115
1158
|
# ----------------------------------------------------------------------
|
|
1116
1159
|
class TestRestoreErrors:
|
|
@@ -1487,7 +1530,7 @@ class _RestoreHelper(object):
|
|
|
1487
1530
|
|
|
1488
1531
|
output = cast(str, next(dm_and_content))
|
|
1489
1532
|
|
|
1490
|
-
assert dm.result == expected_result
|
|
1533
|
+
assert dm.result == expected_result, output
|
|
1491
1534
|
|
|
1492
1535
|
if expected_num_files is not None:
|
|
1493
1536
|
TestHelpers.CompareFileSystemSourceAndDestination(
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
version = 1
|
|
2
2
|
revision = 2
|
|
3
3
|
requires-python = ">=3.10"
|
|
4
|
+
resolution-markers = [
|
|
5
|
+
"(platform_machine != 'aarch64' and platform_machine != 'armv7l' and platform_machine != 'i686' and platform_machine != 'ppc64le' and platform_machine != 's390x' and platform_machine != 'x86_64') or sys_platform != 'linux'",
|
|
6
|
+
"platform_machine == 'x86_64' and sys_platform == 'linux'",
|
|
7
|
+
"platform_machine == 'i686' and sys_platform == 'linux'",
|
|
8
|
+
"platform_machine == 'aarch64' and sys_platform == 'linux'",
|
|
9
|
+
"platform_machine == 'armv7l' and sys_platform == 'linux'",
|
|
10
|
+
"platform_machine == 'ppc64le' and sys_platform == 'linux'",
|
|
11
|
+
"platform_machine == 's390x' and sys_platform == 'linux'",
|
|
12
|
+
]
|
|
4
13
|
|
|
5
14
|
[[package]]
|
|
6
15
|
name = "attrs"
|
|
@@ -84,6 +93,15 @@ wheels = [
|
|
|
84
93
|
{ url = "https://files.pythonhosted.org/packages/63/13/47bba97924ebe86a62ef83dc75b7c8a881d53c535f83e2c54c4bd701e05c/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:57967b7a28d855313a963aaea51bf6df89f833db4320da458e5b3c5ab6d4c938", size = 280110, upload-time = "2025-02-28T01:24:05.896Z" },
|
|
85
94
|
]
|
|
86
95
|
|
|
96
|
+
[[package]]
|
|
97
|
+
name = "cabarchive"
|
|
98
|
+
version = "0.2.4"
|
|
99
|
+
source = { registry = "https://pypi.org/simple" }
|
|
100
|
+
sdist = { url = "https://files.pythonhosted.org/packages/28/d3/a544aed878edc269ce4427bc937310b73624e1d595de7f4e5bcab413a639/cabarchive-0.2.4.tar.gz", hash = "sha256:04f60089473114cf26eab2b7e1d09611c5bfaf8edd3202dacef66bb5c71e48cf", size = 21064, upload-time = "2022-02-23T09:28:10.911Z" }
|
|
101
|
+
wheels = [
|
|
102
|
+
{ url = "https://files.pythonhosted.org/packages/0f/fb/713421f46c68f4bf9cd26f05bda0c233446108997b6b4d83d7ef07f20009/cabarchive-0.2.4-py3-none-any.whl", hash = "sha256:4afabd224eb2e40af8e907379fb8eec6b0adfb71c2aef4457ec3a4d77383c059", size = 25729, upload-time = "2022-02-23T09:28:09.571Z" },
|
|
103
|
+
]
|
|
104
|
+
|
|
87
105
|
[[package]]
|
|
88
106
|
name = "cffi"
|
|
89
107
|
version = "1.17.1"
|
|
@@ -283,6 +301,90 @@ wheels = [
|
|
|
283
301
|
{ url = "https://files.pythonhosted.org/packages/87/62/d69eb4a8ee231f4bf733a92caf9da13f1c81a44e874b1d4080c25ecbb723/cryptography-44.0.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:5d20cc348cca3a8aa7312f42ab953a56e15323800ca3ab0706b8cd452a3a056c", size = 3134369, upload-time = "2025-05-02T19:35:58.907Z" },
|
|
284
302
|
]
|
|
285
303
|
|
|
304
|
+
[[package]]
|
|
305
|
+
name = "cx-freeze"
|
|
306
|
+
version = "8.3.0"
|
|
307
|
+
source = { registry = "https://pypi.org/simple" }
|
|
308
|
+
dependencies = [
|
|
309
|
+
{ name = "cabarchive", marker = "sys_platform == 'win32'" },
|
|
310
|
+
{ name = "cx-logging", marker = "platform_machine != 'ARM64' and sys_platform == 'win32'" },
|
|
311
|
+
{ name = "dmgbuild", marker = "sys_platform == 'darwin'" },
|
|
312
|
+
{ name = "filelock" },
|
|
313
|
+
{ name = "lief", marker = "platform_machine != 'ARM64' and sys_platform == 'win32'" },
|
|
314
|
+
{ name = "packaging" },
|
|
315
|
+
{ name = "patchelf", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'armv7l' and sys_platform == 'linux') or (platform_machine == 'i686' and sys_platform == 'linux') or (platform_machine == 'ppc64le' and sys_platform == 'linux') or (platform_machine == 's390x' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" },
|
|
316
|
+
{ name = "setuptools" },
|
|
317
|
+
{ name = "striprtf", marker = "sys_platform == 'win32'" },
|
|
318
|
+
{ name = "tomli", marker = "python_full_version < '3.11'" },
|
|
319
|
+
]
|
|
320
|
+
sdist = { url = "https://files.pythonhosted.org/packages/92/fa/835edcb0bbfffc09bea4a723c26779e3691513c6bfd41dc92498289218be/cx_freeze-8.3.0.tar.gz", hash = "sha256:491998d513f04841ec7967e2a3792db198597bde8a0c9333706b1f96060bdb35", size = 3180070, upload-time = "2025-05-12T00:18:41.067Z" }
|
|
321
|
+
wheels = [
|
|
322
|
+
{ url = "https://files.pythonhosted.org/packages/1a/62/c70bcc537051e03a71f99450f51bfe7bcfd240829639d7c05a53221acd42/cx_freeze-8.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b9f967d10ebd8993e03c26b7fe25a1b9e34b523540f92a504583abe81a891ee7", size = 19140451, upload-time = "2025-05-12T00:17:06.623Z" },
|
|
323
|
+
{ url = "https://files.pythonhosted.org/packages/e2/07/aae1ecd6da92eba3c8d5bb71dc3e7a2aa51232c228afe3e32e43c87ff530/cx_freeze-8.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1dfed39871d1623436d726bf239ac361c0f744c073b60bdcad9278465bae70f8", size = 13232549, upload-time = "2025-05-12T00:17:10.276Z" },
|
|
324
|
+
{ url = "https://files.pythonhosted.org/packages/36/20/00621712b7b5087f5e32d8ce63ba7ce4013ea971d51e1d0e70cce5b340c0/cx_freeze-8.3.0-cp310-cp310-win32.whl", hash = "sha256:848611568876236fbedb21c9307afad24df239f3ecd378f6f161fe5a80192db0", size = 2225763, upload-time = "2025-05-12T00:17:13.068Z" },
|
|
325
|
+
{ url = "https://files.pythonhosted.org/packages/cb/88/364c89d2a439c33c204112931088dc8da7161d2013103b77170fca699b5b/cx_freeze-8.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:5e1ee15d2abfb238c1f19a764608dfc8ee7f755f77a5d53de996cd1579e420d1", size = 2230495, upload-time = "2025-05-12T00:17:16.873Z" },
|
|
326
|
+
{ url = "https://files.pythonhosted.org/packages/04/f6/ae15b89dd00a6dddebdcc25599915ee94d612d9fe502df0b46ba213d30fe/cx_freeze-8.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:197746f5df28bf136554cecf1d45504784734343f05ac34889ffef2265ed895f", size = 21647628, upload-time = "2025-05-12T00:17:18.81Z" },
|
|
327
|
+
{ url = "https://files.pythonhosted.org/packages/77/ba/004331711db1913bc27a844d6cb89b48b0dabea0fadc0adf57dd2e090b80/cx_freeze-8.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:942cec33e2f5c31b97b43a2040fdd8e3f43e783233fb6f695989242078417f47", size = 13795087, upload-time = "2025-05-12T00:17:21.336Z" },
|
|
328
|
+
{ url = "https://files.pythonhosted.org/packages/6c/5f/9d66343f42c5fdfaa0e4afb3def357b54159a034f0990adbf27ba5c08620/cx_freeze-8.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:af62ea35cf5b1d13c6c42dca240388d6ed880e503e2e28c3346a8666be04655c", size = 15270022, upload-time = "2025-05-12T00:17:24.34Z" },
|
|
329
|
+
{ url = "https://files.pythonhosted.org/packages/94/d1/c073a99d2633a1c231921d5a9ba9f1f94485da7a75d0139101f4e157c1c5/cx_freeze-8.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:349fd483db63f3552305d62d10e645dd0e68a023c8c96d1105e7bbad9bf881d1", size = 13920961, upload-time = "2025-05-12T00:17:27.081Z" },
|
|
330
|
+
{ url = "https://files.pythonhosted.org/packages/57/2d/ef8ca36b173444a47ffc94086f3fb03c0ca2f4465f7db14a8c82d06e3ed7/cx_freeze-8.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:497696c4b476bc948e7cb17b28d19712bf3920ad54751f734bb887c54d567c86", size = 14959332, upload-time = "2025-05-12T00:17:29.938Z" },
|
|
331
|
+
{ url = "https://files.pythonhosted.org/packages/bb/a9/96281c51edde509e73fe16cd3cd997cb4982ec907818a4b9a25289838baf/cx_freeze-8.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a3792b7bfced6cf5636ee82918c007da1b3465884b5a26a0044f05f83cd68964", size = 14697811, upload-time = "2025-05-12T00:17:32.816Z" },
|
|
332
|
+
{ url = "https://files.pythonhosted.org/packages/28/a3/d6d7bcec621e133a2d7fd6fbc2581fd6294ffa0b9adf5f9ac2454779d79b/cx_freeze-8.3.0-cp311-cp311-win32.whl", hash = "sha256:f6f9cafef1338b6eb7d377d380e5f5ccadbb1e7112712c861e53db4d68988943", size = 2357100, upload-time = "2025-05-12T00:17:35.024Z" },
|
|
333
|
+
{ url = "https://files.pythonhosted.org/packages/7b/71/6e3f0412887395bf5d8e4ceffbeef8995a3c4b7b207fe40850df63e02dc6/cx_freeze-8.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:6aacb4801bed46700261cb4b75abfa45e95504756e6c5b95545350b3e6c77f39", size = 2361817, upload-time = "2025-05-12T00:17:37.063Z" },
|
|
334
|
+
{ url = "https://files.pythonhosted.org/packages/bd/34/997343c959b0bba8df70e7ac55171f962f4e4e4bf957c82e2470b3125e2c/cx_freeze-8.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:a02c33c1e973d0f3eff83aec30312ee0e211b3990f3f62b27d9ee971a122982c", size = 2349532, upload-time = "2025-05-12T00:17:38.638Z" },
|
|
335
|
+
{ url = "https://files.pythonhosted.org/packages/b1/d6/4c66e670768cdc8219bbd5e3efd96a25506f16e83b599004ffae0828e6b0/cx_freeze-8.3.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3d6f158ad36170caad12a4aae5b65ed4fdf8d772c60c2dad8bf9341a1fc8b4c6", size = 21986587, upload-time = "2025-05-12T00:17:41.085Z" },
|
|
336
|
+
{ url = "https://files.pythonhosted.org/packages/de/97/ddd0daa6de5da6d142a77095d66c8466442f0f8721c6eaa52b63bdbbb29a/cx_freeze-8.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abdba6a199dbd3a2ac661ec25160aceffcb94f3508757dd13639dca1fc82572", size = 14439323, upload-time = "2025-05-12T00:17:43.607Z" },
|
|
337
|
+
{ url = "https://files.pythonhosted.org/packages/b5/0b/b4cf3e7dffd1a4fa6aa80b26af6b21d0b6dafff56495003639eebdc9a9ba/cx_freeze-8.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdd7da34aeb55332d7ed9a5dd75a6a5b8a007a28458d79d0acad2611c5162e55", size = 15943470, upload-time = "2025-05-12T00:17:46.032Z" },
|
|
338
|
+
{ url = "https://files.pythonhosted.org/packages/e8/b5/21dfa6fd4580bed578e22f4be2f42d585d1e064f1b58fc2321477030414e/cx_freeze-8.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95d0460511a295f65f25e537cd1e716013868f5cab944a20fc77f5e9c3425ec6", size = 14576320, upload-time = "2025-05-12T00:17:49.082Z" },
|
|
339
|
+
{ url = "https://files.pythonhosted.org/packages/9b/08/76270e82bff702edd584e252239c1ab92e1807cf5ca2efafd0c69a948775/cx_freeze-8.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c661650119ceb4c2c779134d4a34823b63c8bea5c5686c33a013cd374f3763c3", size = 15600098, upload-time = "2025-05-12T00:17:51.974Z" },
|
|
340
|
+
{ url = "https://files.pythonhosted.org/packages/98/8c/4da11732f32ed51f2b734caa3fe87559734f68f508ce54b56196ae1c4410/cx_freeze-8.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:56e52892393562a00792635bb8ab6d5720290b7b86ae21b6eb002a610fac5713", size = 15382203, upload-time = "2025-05-12T00:17:54.445Z" },
|
|
341
|
+
{ url = "https://files.pythonhosted.org/packages/f6/1a/64c825770df0b9cb69e5f15c2647e708bf8e13f55da1011749658bc83c37/cx_freeze-8.3.0-cp312-cp312-win32.whl", hash = "sha256:3bad93b5e44c9faee254b0b27a1698c053b569122e73a32858b8e80e340aa8f2", size = 2336981, upload-time = "2025-05-12T00:17:57.116Z" },
|
|
342
|
+
{ url = "https://files.pythonhosted.org/packages/bf/68/09458532149bcb26bbc078ed232c2f970476d6381045ce76de32ef6014c2/cx_freeze-8.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:82887045c831e5c03f4a33f8baab826b785c6400493a077c482cc45c15fd531c", size = 2341781, upload-time = "2025-05-12T00:17:59.198Z" },
|
|
343
|
+
{ url = "https://files.pythonhosted.org/packages/82/fe/ebe723ade801df8f1030d90b9b676efd43bbf12ca833bb4b82108101ed8e/cx_freeze-8.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:72b9d7e3e98bbc175096b66e67208aea5b2e283f07e3d826c40f89f60a821ae1", size = 2329301, upload-time = "2025-05-12T00:18:00.734Z" },
|
|
344
|
+
{ url = "https://files.pythonhosted.org/packages/f5/ba/a98447964bde34e93774ff500c2efcd0dce150754e835c32bbf11754ee92/cx_freeze-8.3.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5ab5f97a3719282b9105b4d5eacd9b669f79d8e0129e20a55137746663d288ad", size = 21407613, upload-time = "2025-05-12T00:18:02.684Z" },
|
|
345
|
+
{ url = "https://files.pythonhosted.org/packages/45/df/ba05eba858fa33bfcdde589d4b22333ff1444f42ff66e88ad98133105126/cx_freeze-8.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a27d8af666b7ef4a8fa612591b5555c57d564f4f17861bdd11e0bd050a33b592", size = 12443001, upload-time = "2025-05-12T00:18:05.108Z" },
|
|
346
|
+
{ url = "https://files.pythonhosted.org/packages/da/da/a97fbb2ee9fb958aca527a9a018a98e8127f0b43c4fb09323d2cdbc4ec94/cx_freeze-8.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35ee2d0de99dea99156507a63722a5eefacbc492d2bf582978a6dbb3fecc972b", size = 12559468, upload-time = "2025-05-12T00:18:08.016Z" },
|
|
347
|
+
{ url = "https://files.pythonhosted.org/packages/36/22/5e1c967e4c8bd129f0fe5d94b0f653bf7709fde251c2dc77f6c5da097163/cx_freeze-8.3.0-cp313-cp313-win32.whl", hash = "sha256:c19b092980e3430a963d328432763742baf852d3ff5fef096b2f32e130cfc0ed", size = 2333521, upload-time = "2025-05-12T00:18:10.584Z" },
|
|
348
|
+
{ url = "https://files.pythonhosted.org/packages/b2/61/18c51dfb8bfcd36619c9314d36168c5254d0ce6d40f70fe1ace55edd1991/cx_freeze-8.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:007fb9507b5265c0922aaea10173651a2138b3d75ee9a67156fea4c9fb2b2582", size = 2337819, upload-time = "2025-05-12T00:18:12.154Z" },
|
|
349
|
+
{ url = "https://files.pythonhosted.org/packages/2d/4b/53a5c7d44e482edadba39f7c62e8cafbc22a699f79230aa7bcb23257c12c/cx_freeze-8.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:bab3634e91c09f235a40b998a9b23327625c9032014c2a9365aa3e8c5f6b5a05", size = 2326957, upload-time = "2025-05-12T00:18:13.92Z" },
|
|
350
|
+
{ url = "https://files.pythonhosted.org/packages/5a/dd/dce38e545203c7ef14bf9c9c2beb1d05093f7b1d7c95ca03ff716c920413/cx_freeze-8.3.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:061c81fcff963d0735ff3a85abb9ca9d29d3663ce8eeef6b663bd93ecafb93bb", size = 21209751, upload-time = "2025-05-12T00:18:15.822Z" },
|
|
351
|
+
{ url = "https://files.pythonhosted.org/packages/c8/fc/82153be6a3e7e6ad9d2baa1453f5e6c6e744f711f12284d50daa95c63e30/cx_freeze-8.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0db71e7c540b0b95396e4c1c18af2748d96c2c2e44142a0e65bb8925f736cc6", size = 12657585, upload-time = "2025-05-12T00:18:19.703Z" },
|
|
352
|
+
{ url = "https://files.pythonhosted.org/packages/82/a3/9d72b12ab11a89ef84e3c03d5290b3b58dd5c3427e6d6f5597c776e01ab8/cx_freeze-8.3.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ca2eb036fffd7fc07e793989db4424557d9b00c7b82e33f575dbc40d72f52f7b", size = 13887006, upload-time = "2025-05-12T00:18:22.209Z" },
|
|
353
|
+
{ url = "https://files.pythonhosted.org/packages/10/ab/08a5aa1744a708de8ff4bc9c6edd6addc5effdb6c31a85ff425284e4563f/cx_freeze-8.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a58582c34ccfc94e9e19acc784511396e95c324bb54c5454b7eafec5a205c677", size = 12738066, upload-time = "2025-05-12T00:18:25.027Z" },
|
|
354
|
+
{ url = "https://files.pythonhosted.org/packages/ef/59/86beaf28c76921f338a2799295ab50766737064920d5182d238eff8578c7/cx_freeze-8.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c41676ebf3e5ca7dd086dedf3a9d5b5627f3c98ffccf64db0aeebd5102199b05", size = 13642689, upload-time = "2025-05-12T00:18:27.561Z" },
|
|
355
|
+
{ url = "https://files.pythonhosted.org/packages/51/bb/0b6992fb528dca772f83ab5534ce00e43f978d7ac393bab5d3e2553fb7a9/cx_freeze-8.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ae0cfb83bc82671c4701a36954c5e8c5cf9440777365b78e9ceba51522becd40", size = 13322215, upload-time = "2025-05-12T00:18:30.425Z" },
|
|
356
|
+
]
|
|
357
|
+
|
|
358
|
+
[[package]]
|
|
359
|
+
name = "cx-logging"
|
|
360
|
+
version = "3.2.1"
|
|
361
|
+
source = { registry = "https://pypi.org/simple" }
|
|
362
|
+
sdist = { url = "https://files.pythonhosted.org/packages/9d/69/50b0c38e26658072b0221f1ea243c47dd56a9f3f50e5754aa5a39189145c/cx_logging-3.2.1.tar.gz", hash = "sha256:812665ae5012680a6fe47095c3772bce638e47cf05b2c3483db3bdbe6b06da44", size = 26966, upload-time = "2024-10-13T03:13:10.561Z" }
|
|
363
|
+
wheels = [
|
|
364
|
+
{ url = "https://files.pythonhosted.org/packages/65/94/1cf7a9265a11d9a272be881d4a16d2ce974558f1a4b5339d0b81e3935039/cx_Logging-3.2.1-cp310-cp310-win32.whl", hash = "sha256:4fb0d7c6dc9a8c403e4c62a3be87301946102d036fbe7bd66c6851225ac05a2e", size = 22792, upload-time = "2024-10-13T03:13:18.418Z" },
|
|
365
|
+
{ url = "https://files.pythonhosted.org/packages/59/df/93bdca669af28c4fe0ada18ef5313dece70b5611ee46d90bd2fd156401e3/cx_Logging-3.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:42f48fae8254b6de27710b6bfd34467fde88072d5961f67e88914d7e2bb6c13e", size = 26748, upload-time = "2024-10-13T03:13:19.936Z" },
|
|
366
|
+
{ url = "https://files.pythonhosted.org/packages/97/5f/0307bd16b05c332611e020d0864c1f7e820a671399a125b08b3762069b3a/cx_Logging-3.2.1-cp311-cp311-win32.whl", hash = "sha256:ef526f0ddeba8611942ee76f2117cebb6319a2413b4077c2c1bf0947a61b9148", size = 22715, upload-time = "2024-10-13T03:13:23.291Z" },
|
|
367
|
+
{ url = "https://files.pythonhosted.org/packages/64/7b/e2208fa901b3375ed0dada2d03fd8ff78399f3e14dd4b6933d896becb2fd/cx_Logging-3.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:4f6366871aa70439c4e3c25c3bb3dd70e8ee98bc190fd30862d7b199948b26f8", size = 26887, upload-time = "2024-10-13T03:13:24.548Z" },
|
|
368
|
+
{ url = "https://files.pythonhosted.org/packages/b1/9b/d8babcfafa7233b862b310a6fe630fc5e6ced02453ca4e60b0c819afbaff/cx_Logging-3.2.1-cp312-cp312-win32.whl", hash = "sha256:3f3de06cf09d5986b39e930c213567c340b3237dfce03d8d3bf6099475eaa02e", size = 22869, upload-time = "2024-10-13T03:13:28.258Z" },
|
|
369
|
+
{ url = "https://files.pythonhosted.org/packages/5c/52/b6bd4f4d51eb4f3523da182cdf5969a560e35f4ef178f34841ba6795addc/cx_Logging-3.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:3452add0544db6ff29116b72a4c48761aaffa9b638728330433853c0c4ad2ea1", size = 26911, upload-time = "2024-10-13T03:13:29.521Z" },
|
|
370
|
+
{ url = "https://files.pythonhosted.org/packages/e1/78/0ce28b89aedf369b02bb5cb763324e799844144386fba75c03128ea9e2ff/cx_Logging-3.2.1-cp313-cp313-win32.whl", hash = "sha256:330a29030bdca8795c99b678b4f6d87a75fb606eed1da206fdd9fa579a33dc21", size = 22874, upload-time = "2024-10-13T03:13:32.99Z" },
|
|
371
|
+
{ url = "https://files.pythonhosted.org/packages/cb/23/dab5f561888951ec02843f087f34a59c791e8ac6423c25a412eb49300633/cx_Logging-3.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:e14748b031522a95aa2db4adfc5f2be5f96f4d0fe687da591114f73a09e66926", size = 26916, upload-time = "2024-10-13T03:13:34.085Z" },
|
|
372
|
+
]
|
|
373
|
+
|
|
374
|
+
[[package]]
|
|
375
|
+
name = "dbrownell-commitemojis"
|
|
376
|
+
version = "0.1.3"
|
|
377
|
+
source = { registry = "https://pypi.org/simple" }
|
|
378
|
+
dependencies = [
|
|
379
|
+
{ name = "dbrownell-common" },
|
|
380
|
+
{ name = "rich" },
|
|
381
|
+
{ name = "typer" },
|
|
382
|
+
]
|
|
383
|
+
sdist = { url = "https://files.pythonhosted.org/packages/4e/95/85ff558602bf696cfe9689a84ba16459b097c3c20814dcd1962f4d89b08c/dbrownell_commitemojis-0.1.3.tar.gz", hash = "sha256:63a789a89f24f55d387b1c52f605f0b8d07caebf5d64479b94bbd7a7faf48139", size = 220282, upload-time = "2025-05-14T18:15:48.832Z" }
|
|
384
|
+
wheels = [
|
|
385
|
+
{ url = "https://files.pythonhosted.org/packages/7e/45/ec235180106fe487846728852dcf2e50644f3d6944ed07ffb1f8b83b5b7b/dbrownell_commitemojis-0.1.3-py3-none-any.whl", hash = "sha256:44ec15af79ff3d5ac9279e17dba0e9e7c06a0aa762ad698581a364d14dce7235", size = 13101, upload-time = "2025-05-14T18:15:47.485Z" },
|
|
386
|
+
]
|
|
387
|
+
|
|
286
388
|
[[package]]
|
|
287
389
|
name = "dbrownell-common"
|
|
288
390
|
version = "0.14.6"
|
|
@@ -306,6 +408,31 @@ wheels = [
|
|
|
306
408
|
{ url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload-time = "2024-10-09T18:35:44.272Z" },
|
|
307
409
|
]
|
|
308
410
|
|
|
411
|
+
[[package]]
|
|
412
|
+
name = "dmgbuild"
|
|
413
|
+
version = "1.6.5"
|
|
414
|
+
source = { registry = "https://pypi.org/simple" }
|
|
415
|
+
dependencies = [
|
|
416
|
+
{ name = "ds-store", marker = "(platform_machine != 'aarch64' and platform_machine != 'armv7l' and platform_machine != 'i686' and platform_machine != 'ppc64le' and platform_machine != 's390x' and platform_machine != 'x86_64') or sys_platform != 'linux'" },
|
|
417
|
+
{ name = "mac-alias", marker = "(platform_machine != 'aarch64' and platform_machine != 'armv7l' and platform_machine != 'i686' and platform_machine != 'ppc64le' and platform_machine != 's390x' and platform_machine != 'x86_64') or sys_platform != 'linux'" },
|
|
418
|
+
]
|
|
419
|
+
sdist = { url = "https://files.pythonhosted.org/packages/16/93/b9702c68d5dedfd6b91c76268a89091ff681b8e3b9a026e7919b6ab730a4/dmgbuild-1.6.5.tar.gz", hash = "sha256:c5cbeec574bad84a324348aa7c36d4aada04568c99fb104dec18d22ba3259f45", size = 36848, upload-time = "2025-03-21T01:04:10.093Z" }
|
|
420
|
+
wheels = [
|
|
421
|
+
{ url = "https://files.pythonhosted.org/packages/48/4a/b16f1081f69592c6dba92baa4d3ca7a5685091a0f840f4b5e01be41aaf84/dmgbuild-1.6.5-py3-none-any.whl", hash = "sha256:e19ab8c5e8238e6455d9ccb9175817be7fd62b9cdd1eef20f63dd88e0ec469ab", size = 34906, upload-time = "2025-03-21T01:04:08.044Z" },
|
|
422
|
+
]
|
|
423
|
+
|
|
424
|
+
[[package]]
|
|
425
|
+
name = "ds-store"
|
|
426
|
+
version = "1.3.1"
|
|
427
|
+
source = { registry = "https://pypi.org/simple" }
|
|
428
|
+
dependencies = [
|
|
429
|
+
{ name = "mac-alias", marker = "(platform_machine != 'aarch64' and platform_machine != 'armv7l' and platform_machine != 'i686' and platform_machine != 'ppc64le' and platform_machine != 's390x' and platform_machine != 'x86_64') or sys_platform != 'linux'" },
|
|
430
|
+
]
|
|
431
|
+
sdist = { url = "https://files.pythonhosted.org/packages/7c/36/902259bf7ddb142dd91cf7a9794aa15e1a8ab985974f90375e5d3463b441/ds_store-1.3.1.tar.gz", hash = "sha256:c27d413caf13c19acb85d75da4752673f1f38267f9eb6ba81b3b5aa99c2d207c", size = 27052, upload-time = "2022-11-24T06:13:34.376Z" }
|
|
432
|
+
wheels = [
|
|
433
|
+
{ url = "https://files.pythonhosted.org/packages/47/bf/b1c10362a0d670ee8ae086d92c3ab795fca2a927e4ff25e7cd15224d3863/ds_store-1.3.1-py3-none-any.whl", hash = "sha256:fbacbb0bd5193ab3e66e5a47fff63619f15e374ffbec8ae29744251a6c8f05b5", size = 16268, upload-time = "2022-11-24T06:13:30.797Z" },
|
|
434
|
+
]
|
|
435
|
+
|
|
309
436
|
[[package]]
|
|
310
437
|
name = "exceptiongroup"
|
|
311
438
|
version = "1.2.2"
|
|
@@ -327,6 +454,8 @@ dependencies = [
|
|
|
327
454
|
[package.dev-dependencies]
|
|
328
455
|
dev = [
|
|
329
456
|
{ name = "autogitsemver" },
|
|
457
|
+
{ name = "cx-freeze" },
|
|
458
|
+
{ name = "dbrownell-commitemojis" },
|
|
330
459
|
{ name = "pre-commit" },
|
|
331
460
|
{ name = "pytest" },
|
|
332
461
|
{ name = "pytest-cov" },
|
|
@@ -343,6 +472,8 @@ requires-dist = [
|
|
|
343
472
|
[package.metadata.requires-dev]
|
|
344
473
|
dev = [
|
|
345
474
|
{ name = "autogitsemver", specifier = ">=0.8.0" },
|
|
475
|
+
{ name = "cx-freeze", specifier = ">=8.3.0" },
|
|
476
|
+
{ name = "dbrownell-commitemojis", specifier = ">=0.1.3" },
|
|
346
477
|
{ name = "pre-commit", specifier = ">=4.2.0" },
|
|
347
478
|
{ name = "pytest", specifier = ">=8.3.5" },
|
|
348
479
|
{ name = "pytest-cov", specifier = ">=6.1.1" },
|
|
@@ -436,6 +567,33 @@ wheels = [
|
|
|
436
567
|
{ url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload-time = "2025-04-23T12:34:05.422Z" },
|
|
437
568
|
]
|
|
438
569
|
|
|
570
|
+
[[package]]
|
|
571
|
+
name = "lief"
|
|
572
|
+
version = "0.16.5"
|
|
573
|
+
source = { registry = "https://pypi.org/simple" }
|
|
574
|
+
wheels = [
|
|
575
|
+
{ url = "https://files.pythonhosted.org/packages/3e/9f/d396d28ad1d0e32926849e2a4fdf2946f65c3d30059d0248f5c2f85e9720/lief-0.16.5-cp310-cp310-win32.whl", hash = "sha256:28e2f91f0e10658898e1875a446c70563eba18f2f0ebb311e0c65192f59d5e6a", size = 3042782, upload-time = "2025-04-19T16:51:08.341Z" },
|
|
576
|
+
{ url = "https://files.pythonhosted.org/packages/74/47/78731ce36ceeafa69d3a26ccf5d5771cc9929ee666e7b7aab6eaa6852c7b/lief-0.16.5-cp310-cp310-win_amd64.whl", hash = "sha256:8060485581c1cb5dc4a74001be0cbad68c6ec03e2951d1980fe03f93c749ea65", size = 3168233, upload-time = "2025-04-19T16:51:11.165Z" },
|
|
577
|
+
{ url = "https://files.pythonhosted.org/packages/ff/6e/fa423661155afe709f49ae3ccd8b6d55d83a7ac2b9a4a38f69280e9c1f46/lief-0.16.5-cp311-cp311-win32.whl", hash = "sha256:d23d2ca7f6ec1d65a68cd3fcda4e3620b9b72e7afdea535ff28f4d52e0b86173", size = 3043058, upload-time = "2025-04-19T16:51:30.285Z" },
|
|
578
|
+
{ url = "https://files.pythonhosted.org/packages/64/b4/bc6048149c305c38001f2a9891d84d8f84f5c970c7495eabe4459a9a738c/lief-0.16.5-cp311-cp311-win_amd64.whl", hash = "sha256:3325194fa0bc4ca9b643423fd9177e613b461cccedecc194e55686334b1f8de2", size = 3168670, upload-time = "2025-04-19T16:51:32.886Z" },
|
|
579
|
+
{ url = "https://files.pythonhosted.org/packages/17/f8/4cd814800254fc2e4e63c30f46535d8fab0361a9e63e3d73acff835deeba/lief-0.16.5-cp311-cp311-win_arm64.whl", hash = "sha256:8bfab65187693fe44a9438e03a2ba13d7a4c724f22c9b345099cd8abd4c76514", size = 3064539, upload-time = "2025-04-19T16:51:35.46Z" },
|
|
580
|
+
{ url = "https://files.pythonhosted.org/packages/20/68/c7df68afe1c37be667f1adb74544b06316fd1338dd577fd0c1289817d2d1/lief-0.16.5-cp312-cp312-win32.whl", hash = "sha256:768f91db886432c4b257fb88365a2c6842f26190b73964cf9274c276bc17b490", size = 3049882, upload-time = "2025-04-19T16:51:53.584Z" },
|
|
581
|
+
{ url = "https://files.pythonhosted.org/packages/08/8b/0fdc6b420e24df7c8cc02be595c425e821f2d4eb1be98eb16a7cf4e87fd0/lief-0.16.5-cp312-cp312-win_amd64.whl", hash = "sha256:587225fd6e1ec424a1a776928beb67095894254c51148b78903844d62faa1a2d", size = 3178830, upload-time = "2025-04-19T16:51:55.254Z" },
|
|
582
|
+
{ url = "https://files.pythonhosted.org/packages/e5/a6/f751d12b88527b591f26a7c4a2b896806c065d9bdfb49eaabec9e6aead41/lief-0.16.5-cp312-cp312-win_arm64.whl", hash = "sha256:ef043c1796d221f128597dc32819fa6bb31da26d2a9b911a32d4a5cdfb566f85", size = 3066592, upload-time = "2025-04-19T16:51:57.86Z" },
|
|
583
|
+
{ url = "https://files.pythonhosted.org/packages/d8/97/72fe8e8bfbfea9d76350635965f668e855490c6f2779c08bf1b9ab3a505d/lief-0.16.5-cp313-cp313-win32.whl", hash = "sha256:6fc879c1c90bf31f7720ece90bd919cbfeeb3bdbc9327f6a16d4dc1af273aef9", size = 3049849, upload-time = "2025-04-19T16:52:11.327Z" },
|
|
584
|
+
{ url = "https://files.pythonhosted.org/packages/66/fc/6faf93a5b44f9e7df193e9fc95b93a7f34b2155b1b470ef61f2f25704a84/lief-0.16.5-cp313-cp313-win_amd64.whl", hash = "sha256:2f208359d10ade57ace7f7625e2f5e4ca214b4b67f9ade24ca07dafb08e37b0c", size = 3178645, upload-time = "2025-04-19T16:52:13.112Z" },
|
|
585
|
+
{ url = "https://files.pythonhosted.org/packages/6d/47/d0a47b6856d832a2ab0896faa773b4506b41e39131684892017351e8ff28/lief-0.16.5-cp313-cp313-win_arm64.whl", hash = "sha256:afb7d946aa2b62c95831d3be45f2516324418335b077f5337012b779e8dcc97b", size = 3066502, upload-time = "2025-04-19T16:52:14.787Z" },
|
|
586
|
+
]
|
|
587
|
+
|
|
588
|
+
[[package]]
|
|
589
|
+
name = "mac-alias"
|
|
590
|
+
version = "2.2.2"
|
|
591
|
+
source = { registry = "https://pypi.org/simple" }
|
|
592
|
+
sdist = { url = "https://files.pythonhosted.org/packages/ea/a3/83b50f620d318a98363dc7e701fb94856eaaecc472e23a89ac625697b3ea/mac_alias-2.2.2.tar.gz", hash = "sha256:c99c728eb512e955c11f1a6203a0ffa8883b26549e8afe68804031aa5da856b7", size = 34073, upload-time = "2022-12-06T00:37:47.779Z" }
|
|
593
|
+
wheels = [
|
|
594
|
+
{ url = "https://files.pythonhosted.org/packages/39/a1/4136777ed6a56df83e7c748ad28892f0672cbbcdc3b3d15a57df6ba72443/mac_alias-2.2.2-py3-none-any.whl", hash = "sha256:504ab8ac546f35bbd75ad014d6ad977c426660aa721f2cd3acf3dc2f664141bd", size = 21220, upload-time = "2022-12-06T00:37:46.025Z" },
|
|
595
|
+
]
|
|
596
|
+
|
|
439
597
|
[[package]]
|
|
440
598
|
name = "markdown-it-py"
|
|
441
599
|
version = "3.0.0"
|
|
@@ -489,6 +647,20 @@ wheels = [
|
|
|
489
647
|
{ url = "https://files.pythonhosted.org/packages/15/f8/c7bd0ef12954a81a1d3cea60a13946bd9a49a0036a5927770c461eade7ae/paramiko-3.5.1-py3-none-any.whl", hash = "sha256:43b9a0501fc2b5e70680388d9346cf252cfb7d00b0667c39e80eb43a408b8f61", size = 227298, upload-time = "2025-02-04T02:37:57.672Z" },
|
|
490
648
|
]
|
|
491
649
|
|
|
650
|
+
[[package]]
|
|
651
|
+
name = "patchelf"
|
|
652
|
+
version = "0.17.2.2"
|
|
653
|
+
source = { registry = "https://pypi.org/simple" }
|
|
654
|
+
sdist = { url = "https://files.pythonhosted.org/packages/0d/41/dc3ee5838db2d90be935adb53ae7745135d9c719d070b1989b246f983c7f/patchelf-0.17.2.2.tar.gz", hash = "sha256:080b2ac3074fd4ab257700088e82470425e56609aa0dd07abe548f04b7b3b007", size = 149517, upload-time = "2025-03-16T08:30:21.909Z" }
|
|
655
|
+
wheels = [
|
|
656
|
+
{ url = "https://files.pythonhosted.org/packages/8d/15/25b5d10d971f509fe6bc8951b855f0f05be4c24e0dd1616c14a6e1a9116a/patchelf-0.17.2.2-py3-none-manylinux1_i686.manylinux_2_5_i686.musllinux_1_1_i686.whl", hash = "sha256:3b8a4d7cccac04d8231dec321245611bf147b199cbf4da305d1a364ff689fb58", size = 524182, upload-time = "2025-03-16T08:30:11.93Z" },
|
|
657
|
+
{ url = "https://files.pythonhosted.org/packages/f2/f9/e070956e350ccdfdf059251836f757ad91ac0c01b0ba3e033ea7188d8d42/patchelf-0.17.2.2-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.musllinux_1_1_x86_64.whl", hash = "sha256:e334ebb1c5aa9fc740fd95ebe449271899fe1e45a3eb0941300b304f7e3d1299", size = 466519, upload-time = "2025-03-16T08:30:13.383Z" },
|
|
658
|
+
{ url = "https://files.pythonhosted.org/packages/56/0d/dc3ac6c6e9e9d0d3e40bee1abe95a07034f83627319e60a7dc9abdbfafee/patchelf-0.17.2.2-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:3d32cd69442a229724f7f071b61cef1f87ccd80cf755af0b1ecefd553fa9ae3f", size = 462123, upload-time = "2025-03-16T08:30:15.57Z" },
|
|
659
|
+
{ url = "https://files.pythonhosted.org/packages/1e/f6/b842b19c2b72df1c524ab3793c3ec9cf3926c7c841e0b64b34f95d7fb806/patchelf-0.17.2.2-py3-none-manylinux2014_armv7l.manylinux_2_17_armv7l.musllinux_1_1_armv7l.whl", hash = "sha256:05f6bbdbe484439cb025e20c60abd37e432e6798dfa3f39a072e6b7499072a8c", size = 412347, upload-time = "2025-03-16T08:30:17.332Z" },
|
|
660
|
+
{ url = "https://files.pythonhosted.org/packages/a8/0b/33eb3087703d903dd01cf6b0d64e067bf3718a5e8b1239bc6fc2c4b1fdb2/patchelf-0.17.2.2-py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.musllinux_1_1_ppc64le.whl", hash = "sha256:b54e79ceb444ec6a536a5dc2e8fc9c771ec6a1fa7d5f4dbb3dc0e5b8e5ff82e1", size = 522827, upload-time = "2025-03-16T08:30:18.774Z" },
|
|
661
|
+
{ url = "https://files.pythonhosted.org/packages/4f/25/6379dc26714b5a40f51b3c7927d668b00a51517e857da7f3cb09d1d0bcb6/patchelf-0.17.2.2-py3-none-manylinux2014_s390x.manylinux_2_17_s390x.musllinux_1_1_s390x.whl", hash = "sha256:24374cdbd9a072230339024fb6922577cb3231396640610b069f678bc483f21e", size = 565961, upload-time = "2025-03-16T08:30:20.524Z" },
|
|
662
|
+
]
|
|
663
|
+
|
|
492
664
|
[[package]]
|
|
493
665
|
name = "platformdirs"
|
|
494
666
|
version = "4.3.8"
|
|
@@ -805,6 +977,15 @@ wheels = [
|
|
|
805
977
|
{ url = "https://files.pythonhosted.org/packages/6a/23/8146aad7d88f4fcb3a6218f41a60f6c2d4e3a72de72da1825dc7c8f7877c/semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177", size = 15552, upload-time = "2022-05-26T13:35:21.206Z" },
|
|
806
978
|
]
|
|
807
979
|
|
|
980
|
+
[[package]]
|
|
981
|
+
name = "setuptools"
|
|
982
|
+
version = "80.4.0"
|
|
983
|
+
source = { registry = "https://pypi.org/simple" }
|
|
984
|
+
sdist = { url = "https://files.pythonhosted.org/packages/95/32/0cc40fe41fd2adb80a2f388987f4f8db3c866c69e33e0b4c8b093fdf700e/setuptools-80.4.0.tar.gz", hash = "sha256:5a78f61820bc088c8e4add52932ae6b8cf423da2aff268c23f813cfbb13b4006", size = 1315008, upload-time = "2025-05-09T20:42:27.972Z" }
|
|
985
|
+
wheels = [
|
|
986
|
+
{ url = "https://files.pythonhosted.org/packages/b1/93/dba5ed08c2e31ec7cdc2ce75705a484ef0be1a2fecac8a58272489349de8/setuptools-80.4.0-py3-none-any.whl", hash = "sha256:6cdc8cb9a7d590b237dbe4493614a9b75d0559b888047c1f67d49ba50fc3edb2", size = 1200812, upload-time = "2025-05-09T20:42:25.325Z" },
|
|
987
|
+
]
|
|
988
|
+
|
|
808
989
|
[[package]]
|
|
809
990
|
name = "shellingham"
|
|
810
991
|
version = "1.5.4"
|
|
@@ -823,6 +1004,15 @@ wheels = [
|
|
|
823
1004
|
{ url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303, upload-time = "2025-01-02T07:14:38.724Z" },
|
|
824
1005
|
]
|
|
825
1006
|
|
|
1007
|
+
[[package]]
|
|
1008
|
+
name = "striprtf"
|
|
1009
|
+
version = "0.0.29"
|
|
1010
|
+
source = { registry = "https://pypi.org/simple" }
|
|
1011
|
+
sdist = { url = "https://files.pythonhosted.org/packages/f3/86/7154b7c625a3ff704581dab70c05389e1de90233b7a751f79f712c2ca0e9/striprtf-0.0.29.tar.gz", hash = "sha256:5a822d075e17417934ed3add6fc79b5fc8fb544fe4370b2f894cdd28f0ddd78e", size = 7533, upload-time = "2025-03-27T22:55:56.874Z" }
|
|
1012
|
+
wheels = [
|
|
1013
|
+
{ url = "https://files.pythonhosted.org/packages/08/3e/1418afacc4aae04690cff282078f22620c89a99490499878ececc3021654/striprtf-0.0.29-py3-none-any.whl", hash = "sha256:0fc6a41999d015358d19627776b616424dd501ad698105c81d76734d1e14d91b", size = 7879, upload-time = "2025-03-27T22:55:55.977Z" },
|
|
1014
|
+
]
|
|
1015
|
+
|
|
826
1016
|
[[package]]
|
|
827
1017
|
name = "tomli"
|
|
828
1018
|
version = "2.2.1"
|
|
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
|
|
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
|
{filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/DataStore/Interfaces/BulkStorageDataStore.py
RENAMED
|
File without changes
|
|
File without changes
|
{filebackup-0.4.1 → filebackup-0.4.3}/src/FileBackup/DataStore/Interfaces/FileBasedDataStore.py
RENAMED
|
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
|