FileBackup 0.5.2__py3-none-any.whl → 0.5.12__py3-none-any.whl

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/Impl/Common.py CHANGED
@@ -291,7 +291,7 @@ def GetDestinationHelp() -> str:
291
291
  Writes content to a SFTP server.
292
292
 
293
293
  Format:
294
- ftp://<username>:<password or posix path to private key>@<host>[:<port>][/<working_dir>]
294
+ ftp://<username>:<password or posix path to private key>@<host>\\[:<port>]\\[/<working_dir>]
295
295
 
296
296
  Examples:
297
297
  ftp://my_username:my_password@my_server.com
@@ -304,7 +304,7 @@ def GetDestinationHelp() -> str:
304
304
  Write content using the Fast Glacier application (https://fastglacier.com/).
305
305
 
306
306
  Format:
307
- fast_glacier://<fast_glacier_account_name>@<aws_region>[/<glacier_dir>]
307
+ fast_glacier://<fast_glacier_account_name>@<aws_region>\\[/<glacier_dir>]
308
308
 
309
309
  Examples:
310
310
  fast_glacier://MyFastGlacierAccount@us-west-2
@@ -315,7 +315,7 @@ def GetDestinationHelp() -> str:
315
315
  Write content using the S3 Browser application (https://s3browser.com/).
316
316
 
317
317
  Format:
318
- s3_browser://<s3_browser_account_name>@<bucket_name>[/<working_dir>]
318
+ s3_browser://<s3_browser_account_name>@<bucket_name>\\[/<working_dir>]
319
319
 
320
320
  Examples:
321
321
  s3_browser://MyS3BrowserAccount@MyBucket
@@ -341,7 +341,7 @@ def YieldDataStore(
341
341
 
342
342
  private_key_filename = Path(private_key_or_password)
343
343
  if private_key_filename.is_file():
344
- private_key_or_password = private_key_filename.read_text()
344
+ private_key_or_password = private_key_filename
345
345
 
346
346
  working_dir = sftp_match.group("working_dir")
347
347
  if working_dir:
FileBackup/__init__.py CHANGED
@@ -1,8 +1,6 @@
1
1
  # noqa: D104
2
2
 
3
- # Wheel names will be generated according to this value. Do not manually modify this value; instead
4
- # update it according to committed changes by running this command from the root of the repository:
5
- #
6
- # uv run python -m AutoGitSemVer.scripts.UpdatePythonVersion ./src/FileBackup/__init__.py ./src
7
- #
8
- __version__ = "0.5.2"
3
+ from importlib.metadata import version
4
+
5
+
6
+ __version__ = version("FileBackup")
@@ -1,14 +1,11 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.3
2
2
  Name: FileBackup
3
- Version: 0.5.2
3
+ Version: 0.5.12
4
4
  Summary: Tool for creating and restoring file system backups.
5
- Project-URL: Homepage, https://github.com/davidbrownell/FileBackup
6
- Project-URL: Documentation, https://github.com/davidbrownell/FileBackup
7
- Project-URL: Repository, https://github.com/davidbrownell/FileBackup
8
- Author-email: David Brownell <github@DavidBrownell.com>
9
- License-Expression: MIT
10
- License-File: LICENSE
11
5
  Keywords: backup,mirror,offsite,restore
6
+ Author: David Brownell
7
+ Author-email: David Brownell <github@DavidBrownell.com>
8
+ License: MIT
12
9
  Classifier: Development Status :: 4 - Beta
13
10
  Classifier: Environment :: Console
14
11
  Classifier: Intended Audience :: Developers
@@ -27,73 +24,78 @@ Classifier: Topic :: System :: Archiving :: Backup
27
24
  Classifier: Topic :: System :: Archiving :: Mirroring
28
25
  Classifier: Topic :: System :: Systems Administration
29
26
  Classifier: Topic :: Utilities
30
- Requires-Python: >=3.10
31
27
  Requires-Dist: dbrownell-common>=0.15.0
32
28
  Requires-Dist: paramiko>=3.5.1
33
29
  Requires-Dist: typer>=0.15.3
30
+ Requires-Python: >=3.10
31
+ Project-URL: Homepage, https://github.com/davidbrownell/FileBackup
32
+ Project-URL: Documentation, https://github.com/davidbrownell/FileBackup
33
+ Project-URL: Repository, https://github.com/davidbrownell/FileBackup
34
34
  Description-Content-Type: text/markdown
35
35
 
36
- **Project:**
37
- [![License](https://img.shields.io/github/license/davidbrownell/FileBackup?color=dark-green)](https://github.com/davidbrownell/FileBackup/blob/master/LICENSE)
38
-
39
- **Package:**
40
- [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/FileBackup?color=dark-green)](https://pypi.org/project/FileBackup/)
41
- [![PyPI - Version](https://img.shields.io/pypi/v/FileBackup?color=dark-green)](https://pypi.org/project/FileBackup/)
42
- [![PyPI - Downloads](https://img.shields.io/pypi/dm/FileBackup)](https://pypistats.org/packages/FileBackup)
43
-
44
- **Development:**
45
- [![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
46
- [![CI](https://github.com/davidbrownell/FileBackup/actions/workflows/CICD.yml/badge.svg)](https://github.com/davidbrownell/FileBackup/actions/workflows/CICD.yml)
47
- [![Code Coverage](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/davidbrownell/f15146b1b8fdc0a5d45ac0eb786a84f7/raw/FileBackup_code_coverage.json)](https://github.com/davidbrownell/FileBackup/actions)
48
- [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/davidbrownell/FileBackup?color=dark-green)](https://github.com/davidbrownell/FileBackup/commits/main/)
49
-
50
- <!-- Content above this delimiter will be copied to the generated README.md file. DO NOT REMOVE THIS COMMENT, as it will cause regeneration to fail. -->
51
-
52
- ## Contents
53
- - [Overview](#overview)
54
- - [Installation](#installation)
55
- - [Development](#development)
56
- - [Additional Information](#additional-information)
57
- - [License](#license)
58
-
59
- ## Overview
60
- TODO: Complete this section
61
-
62
- ### How to use `FileBackup`
63
- TODO: Complete this section
64
-
65
- <!-- Content below this delimiter will be copied to the generated README.md file. DO NOT REMOVE THIS COMMENT, as it will cause regeneration to fail. -->
66
-
67
- ## Installation
68
-
69
- | Installation Method | Command |
70
- | --- | --- |
71
- | Via [uv](https://github.com/astral-sh/uv) | `uv add FileBackup` |
72
- | Via [pip](https://pip.pypa.io/en/stable/) | `pip install FileBackup` |
73
-
74
- ### Verifying Signed Artifacts
75
- Artifacts are signed and verified using [py-minisign](https://github.com/x13a/py-minisign) and the public key in the file `./minisign_key.pub`.
76
-
77
- To verify that an artifact is valid, visit [the latest release](https://github.com/davidbrownell/FileBackup/releases/latest) and download the `.minisign` signature file that corresponds to the artifact, then run the following command, replacing `<filename>` with the name of the artifact to be verified:
78
-
79
- ```shell
80
- uv run --with py-minisign python -c "import minisign; minisign.PublicKey.from_file('minisign_key.pub').verify_file('<filename>'); print('The file has been verified.')"
81
- ```
82
-
83
- ## Development
84
- Please visit [Contributing](https://github.com/davidbrownell/FileBackup/blob/main/CONTRIBUTING.md) and [Development](https://github.com/davidbrownell/FileBackup/blob/main/DEVELOPMENT.md) for information on contributing to this project.
85
-
86
- ## Additional Information
87
- Additional information can be found at these locations.
88
-
89
- | Title | Document | Description |
90
- | --- | --- | --- |
91
- | Code of Conduct | [CODE_OF_CONDUCT.md](https://github.com/davidbrownell/FileBackup/blob/main/CODE_OF_CONDUCT.md) | Information about the norms, rules, and responsibilities we adhere to when participating in this open source community. |
92
- | Contributing | [CONTRIBUTING.md](https://github.com/davidbrownell/FileBackup/blob/main/CONTRIBUTING.md) | Information about contributing to this project. |
93
- | Development | [DEVELOPMENT.md](https://github.com/davidbrownell/FileBackup/blob/main/DEVELOPMENT.md) | Information about development activities involved in making changes to this project. |
94
- | Governance | [GOVERNANCE.md](https://github.com/davidbrownell/FileBackup/blob/main/GOVERNANCE.md) | Information about how this project is governed. |
95
- | Maintainers | [MAINTAINERS.md](https://github.com/davidbrownell/FileBackup/blob/main/MAINTAINERS.md) | Information about individuals who maintain this project. |
96
- | Security | [SECURITY.md](https://github.com/davidbrownell/FileBackup/blob/main/SECURITY.md) | Information about how to privately report security issues associated with this project. |
97
-
98
- ## License
99
- `FileBackup` is licensed under the <a href="https://choosealicense.com/licenses/MIT/" target="_blank">MIT</a> license.
36
+ **Project:**
37
+ [![License](https://img.shields.io/github/license/davidbrownell/FileBackup?color=dark-green)](https://github.com/davidbrownell/FileBackup/blob/master/LICENSE)
38
+
39
+ **Package:**
40
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/FileBackup?color=dark-green)](https://pypi.org/project/FileBackup/)
41
+ [![PyPI - Version](https://img.shields.io/pypi/v/FileBackup?color=dark-green)](https://pypi.org/project/FileBackup/)
42
+ [![PyPI - Downloads](https://img.shields.io/pypi/dm/FileBackup)](https://pypistats.org/packages/filebackup)
43
+
44
+ **Development:**
45
+ [![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
46
+ [![ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
47
+ [![pytest](https://img.shields.io/badge/pytest-enabled-brightgreen)](https://docs.pytest.org/)
48
+ [![CI](https://github.com/davidbrownell/FileBackup/actions/workflows/CICD.yml/badge.svg)](https://github.com/davidbrownell/FileBackup/actions/workflows/CICD.yml)
49
+ [![Code Coverage](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/davidbrownell/f15146b1b8fdc0a5d45ac0eb786a84f7/raw/FileBackup_code_coverage.json)](https://github.com/davidbrownell/FileBackup/actions)
50
+ [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/davidbrownell/FileBackup?color=dark-green)](https://github.com/davidbrownell/FileBackup/commits/main/)
51
+
52
+ <!-- Content above this delimiter will be copied to the generated README.md file. DO NOT REMOVE THIS COMMENT, as it will cause regeneration to fail. -->
53
+
54
+ ## Contents
55
+ - [Overview](#overview)
56
+ - [Installation](#installation)
57
+ - [Development](#development)
58
+ - [Additional Information](#additional-information)
59
+ - [License](#license)
60
+
61
+ ## Overview
62
+ TODO: Complete this section
63
+
64
+ ### How to use `FileBackup`
65
+ TODO: Complete this section
66
+
67
+ <!-- Content below this delimiter will be copied to the generated README.md file. DO NOT REMOVE THIS COMMENT, as it will cause regeneration to fail. -->
68
+
69
+ ## Installation
70
+
71
+ | Installation Method | Command |
72
+ | --- | --- |
73
+ | Via [uv](https://github.com/astral-sh/uv) | `uv add FileBackup` |
74
+ | Via [pip](https://pip.pypa.io/en/stable/) | `pip install FileBackup` |
75
+
76
+ ### Verifying Signed Artifacts
77
+ Artifacts are signed and verified using [py-minisign](https://github.com/x13a/py-minisign) and the public key in the file `./minisign_key.pub`.
78
+
79
+ To verify that an artifact is valid, visit [the latest release](https://github.com/davidbrownell/FileBackup/releases/latest) and download the `.minisign` signature file that corresponds to the artifact, then run the following command, replacing `<filename>` with the name of the artifact to be verified:
80
+
81
+ ```shell
82
+ uv run --with py-minisign python -c "import minisign; minisign.PublicKey.from_file('minisign_key.pub').verify_file('<filename>'); print('The file has been verified.')"
83
+ ```
84
+
85
+ ## Development
86
+ Please visit [Contributing](https://github.com/davidbrownell/FileBackup/blob/main/CONTRIBUTING.md) and [Development](https://github.com/davidbrownell/FileBackup/blob/main/DEVELOPMENT.md) for information on contributing to this project.
87
+
88
+ ## Additional Information
89
+ Additional information can be found at these locations.
90
+
91
+ | Title | Document | Description |
92
+ | --- | --- | --- |
93
+ | Code of Conduct | [CODE_OF_CONDUCT.md](https://github.com/davidbrownell/FileBackup/blob/main/CODE_OF_CONDUCT.md) | Information about the norms, rules, and responsibilities we adhere to when participating in this open source community. |
94
+ | Contributing | [CONTRIBUTING.md](https://github.com/davidbrownell/FileBackup/blob/main/CONTRIBUTING.md) | Information about contributing to this project. |
95
+ | Development | [DEVELOPMENT.md](https://github.com/davidbrownell/FileBackup/blob/main/DEVELOPMENT.md) | Information about development activities involved in making changes to this project. |
96
+ | Governance | [GOVERNANCE.md](https://github.com/davidbrownell/FileBackup/blob/main/GOVERNANCE.md) | Information about how this project is governed. |
97
+ | Maintainers | [MAINTAINERS.md](https://github.com/davidbrownell/FileBackup/blob/main/MAINTAINERS.md) | Information about individuals who maintain this project. |
98
+ | Security | [SECURITY.md](https://github.com/davidbrownell/FileBackup/blob/main/SECURITY.md) | Information about how to privately report security issues associated with this project. |
99
+
100
+ ## License
101
+ `FileBackup` is licensed under the <a href="https://choosealicense.com/licenses/MIT/" target="_blank">MIT</a> license.
@@ -1,8 +1,3 @@
1
- FileBackup/Mirror.py,sha256=GDgTWVNUYn5O7vlH5YVi0LppwQN4R99J61g1UCBwlfI,23544
2
- FileBackup/Offsite.py,sha256=_QOywhHX8rmSJJ0TC3dKF4m-cFGx-l9Splng351crqw,65496
3
- FileBackup/Snapshot.py,sha256=Dj-XFjAFWkqNZIlMHqTOI1Ygdm1jB3orIwDxMQSrupQ,26970
4
- FileBackup/__init__.py,sha256=JPB9HoofnsZ24vqzjS1ervhu0GisXhZa8AXRUR3Hzvg,338
5
- FileBackup/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
1
  FileBackup/CommandLine/CommandLineArguments.py,sha256=7oLUf9tODd_OjBNzIjQiiyZ9ujy-KbW53Pg0dF0MQG8,2378
7
2
  FileBackup/CommandLine/EntryPoint.py,sha256=Fn62wtKV6uiTJ1dQpolNFUyWWeUOKKgetOFSXPgoe-w,1813
8
3
  FileBackup/CommandLine/MirrorEntryPoint.py,sha256=WlGIz_AZ7OdE-hVL19lQExUXbEjQ8_4bbIuITWxdWO4,6704
@@ -10,17 +5,21 @@ FileBackup/CommandLine/OffsiteEntryPoint.py,sha256=OscTJi57_-dYX2NsfzTONqWhxm-Nv
10
5
  FileBackup/CommandLine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
6
  FileBackup/DataStore/FastGlacierDataStore.py,sha256=5J4W9FqB92hnHoRoZLo-DfMQ6uyjaOAWWrnuc0pvnJo,3017
12
7
  FileBackup/DataStore/FileSystemDataStore.py,sha256=XUvIQe2Yl-W6OPfvsJlPzDPsGclDOkKlozO0GJ-05bo,6791
13
- FileBackup/DataStore/S3BrowserDataStore.py,sha256=3NHl-advSbyXuL1kDu1wswbcAZbhmAGDu8yzlOuY5Us,2954
14
- FileBackup/DataStore/SFTPDataStore.py,sha256=TKz-hwwHg4avxKHDFRRz7FlKx3d40wT15ug1gCpu6VU,11374
15
- FileBackup/DataStore/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
8
  FileBackup/DataStore/Interfaces/BulkStorageDataStore.py,sha256=qZo92nPDP_aVTxlohsc1ySnU9Skgxgo7Mj_tT0KxFZ8,1310
17
9
  FileBackup/DataStore/Interfaces/DataStore.py,sha256=FpQmxoqBS5indJYRxibkSXHTgk7U6HFyViI0BDqCcVw,1169
18
10
  FileBackup/DataStore/Interfaces/FileBasedDataStore.py,sha256=eMA_cQ-CED83z5uMDQZ18UFzBRvaXOwWz67kVu-2ftM,5307
19
11
  FileBackup/DataStore/Interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- FileBackup/Impl/Common.py,sha256=2WFMx5BdCnZmo-cuLYZlIx4Nr_ZBKmJWfMaFVUpsqKo,24935
12
+ FileBackup/DataStore/S3BrowserDataStore.py,sha256=3NHl-advSbyXuL1kDu1wswbcAZbhmAGDu8yzlOuY5Us,2954
13
+ FileBackup/DataStore/SFTPDataStore.py,sha256=TKz-hwwHg4avxKHDFRRz7FlKx3d40wT15ug1gCpu6VU,11374
14
+ FileBackup/DataStore/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ FileBackup/Impl/Common.py,sha256=qXl-QLFF3fW6pzYIj8_Bh2prsM7KQ0-o8iffcmx0PD4,24931
21
16
  FileBackup/Impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- filebackup-0.5.2.dist-info/METADATA,sha256=MMDJrdhkFCA7H8RHVVqGnLTJxCbHaR4JL4qId9_6mkE,5814
23
- filebackup-0.5.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
24
- filebackup-0.5.2.dist-info/entry_points.txt,sha256=2SUVO3jHsi06MYfUEdqxaVwVvTQVjxzIWlHexRKWRgQ,121
25
- filebackup-0.5.2.dist-info/licenses/LICENSE,sha256=2dPVskJuHRLwSF9fQiAfln1RVWya2DsKNPvgknRLTYw,1074
26
- filebackup-0.5.2.dist-info/RECORD,,
17
+ FileBackup/Mirror.py,sha256=GDgTWVNUYn5O7vlH5YVi0LppwQN4R99J61g1UCBwlfI,23544
18
+ FileBackup/Offsite.py,sha256=_QOywhHX8rmSJJ0TC3dKF4m-cFGx-l9Splng351crqw,65496
19
+ FileBackup/Snapshot.py,sha256=Dj-XFjAFWkqNZIlMHqTOI1Ygdm1jB3orIwDxMQSrupQ,26970
20
+ FileBackup/__init__.py,sha256=4lDISv28VK1GgVRBan1bmRO9b598jT21zflJ5GtB-PA,91
21
+ FileBackup/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ filebackup-0.5.12.dist-info/WHEEL,sha256=wXwAVsgVaOZ_pwDFqQm5Rd6PID-Fc74nkLc8X8gHiDo,81
23
+ filebackup-0.5.12.dist-info/entry_points.txt,sha256=XPN0-w-4RqeYmOxhvCPkHH6D691tae7_hwNcgh16U-c,122
24
+ filebackup-0.5.12.dist-info/METADATA,sha256=rbq36Nx2cl4FlkWWbO_ppqRaNDvY1UIRDkqGMP8FPCA,6123
25
+ filebackup-0.5.12.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.27.0
2
+ Generator: uv 0.11.19
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,3 +1,4 @@
1
1
  [console_scripts]
2
2
  FileBackup = FileBackup.CommandLine:EntryPoint.app
3
3
  file_backup = FileBackup.CommandLine:EntryPoint.app
4
+
@@ -1,21 +0,0 @@
1
- MIT LICENSE
2
-
3
- Copyright (c) 2024-25 David Brownell
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.