borgbackup 2.0.0b23__tar.gz → 2.0.0b25__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 (893) hide show
  1. borgbackup-2.0.0b25/.claude/CLAUDE.md +190 -0
  2. borgbackup-2.0.0b25/FAME.md +398 -0
  3. borgbackup-2.0.0b25/FAME.svg +81 -0
  4. borgbackup-2.0.0b25/PKG-INFO +268 -0
  5. borgbackup-2.0.0b25/README.rst +239 -0
  6. borgbackup-2.0.0b25/docs/binaries/00_README.txt +139 -0
  7. borgbackup-2.0.0b25/docs/changes.rst +2161 -0
  8. borgbackup-2.0.0b25/docs/changes_1.x.rst +4880 -0
  9. borgbackup-2.0.0b25/docs/deployment/age.rst +221 -0
  10. borgbackup-2.0.0b25/docs/deployment/automated-local.rst +230 -0
  11. borgbackup-2.0.0b25/docs/deployment/central-backup-server.rst +227 -0
  12. borgbackup-2.0.0b25/docs/deployment/hosting-repositories.rst +89 -0
  13. borgbackup-2.0.0b25/docs/deployment/image-backup.rst +163 -0
  14. borgbackup-2.0.0b25/docs/deployment/pull-backup.rst +530 -0
  15. borgbackup-2.0.0b25/docs/deployment/yubikey.rst +117 -0
  16. borgbackup-2.0.0b25/docs/deployment.rst +19 -0
  17. borgbackup-2.0.0b25/docs/development.rst +535 -0
  18. borgbackup-2.0.0b25/docs/faq.rst +1369 -0
  19. borgbackup-2.0.0b25/docs/global.rst.inc +30 -0
  20. borgbackup-2.0.0b25/docs/installation.rst +532 -0
  21. borgbackup-2.0.0b25/docs/internals/chunker.rst +258 -0
  22. borgbackup-2.0.0b25/docs/internals/data-structures.rst +1393 -0
  23. borgbackup-2.0.0b25/docs/internals/frontends.rst +1065 -0
  24. borgbackup-2.0.0b25/docs/internals/packs.rst +383 -0
  25. borgbackup-2.0.0b25/docs/internals/security.rst +641 -0
  26. borgbackup-2.0.0b25/docs/internals.rst +52 -0
  27. borgbackup-2.0.0b25/docs/man/borg-analyze.1 +170 -0
  28. borgbackup-2.0.0b25/docs/man/borg-benchmark-cpu.1 +111 -0
  29. borgbackup-2.0.0b25/docs/man/borg-benchmark-crud.1 +107 -0
  30. borgbackup-2.0.0b25/docs/man/borg-benchmark.1 +48 -0
  31. borgbackup-2.0.0b25/docs/man/borg-break-lock.1 +53 -0
  32. borgbackup-2.0.0b25/docs/man/borg-check.1 +272 -0
  33. borgbackup-2.0.0b25/docs/man/borg-common.1 +84 -0
  34. borgbackup-2.0.0b25/docs/man/borg-compact.1 +133 -0
  35. borgbackup-2.0.0b25/docs/man/borg-completion.1 +82 -0
  36. borgbackup-2.0.0b25/docs/man/borg-compression.1 +189 -0
  37. borgbackup-2.0.0b25/docs/man/borg-copy.1 +103 -0
  38. borgbackup-2.0.0b25/docs/man/borg-create.1 +683 -0
  39. borgbackup-2.0.0b25/docs/man/borg-delete.1 +130 -0
  40. borgbackup-2.0.0b25/docs/man/borg-diff.1 +331 -0
  41. borgbackup-2.0.0b25/docs/man/borg-environment.1 +720 -0
  42. borgbackup-2.0.0b25/docs/man/borg-export-tar.1 +183 -0
  43. borgbackup-2.0.0b25/docs/man/borg-extract.1 +217 -0
  44. borgbackup-2.0.0b25/docs/man/borg-find.1 +268 -0
  45. borgbackup-2.0.0b25/docs/man/borg-import-tar.1 +239 -0
  46. borgbackup-2.0.0b25/docs/man/borg-info.1 +118 -0
  47. borgbackup-2.0.0b25/docs/man/borg-key-add.1 +66 -0
  48. borgbackup-2.0.0b25/docs/man/borg-key-change-location.1 +71 -0
  49. borgbackup-2.0.0b25/docs/man/borg-key-change-passphrase.1 +124 -0
  50. borgbackup-2.0.0b25/docs/man/borg-key-export.1 +116 -0
  51. borgbackup-2.0.0b25/docs/man/borg-key-import.1 +84 -0
  52. borgbackup-2.0.0b25/docs/man/borg-key-list.1 +50 -0
  53. borgbackup-2.0.0b25/docs/man/borg-key-remove.1 +67 -0
  54. borgbackup-2.0.0b25/docs/man/borg-key.1 +50 -0
  55. borgbackup-2.0.0b25/docs/man/borg-list.1 +290 -0
  56. borgbackup-2.0.0b25/docs/man/borg-match-archives.1 +162 -0
  57. borgbackup-2.0.0b25/docs/man/borg-mount.1 +247 -0
  58. borgbackup-2.0.0b25/docs/man/borg-patterns.1 +405 -0
  59. borgbackup-2.0.0b25/docs/man/borg-placeholders.1 +121 -0
  60. borgbackup-2.0.0b25/docs/man/borg-prune.1 +346 -0
  61. borgbackup-2.0.0b25/docs/man/borg-recreate.1 +217 -0
  62. borgbackup-2.0.0b25/docs/man/borg-rename.1 +75 -0
  63. borgbackup-2.0.0b25/docs/man/borg-repo-compress.1 +105 -0
  64. borgbackup-2.0.0b25/docs/man/borg-repo-create.1 +275 -0
  65. borgbackup-2.0.0b25/docs/man/borg-repo-delete.1 +95 -0
  66. borgbackup-2.0.0b25/docs/man/borg-repo-info.1 +72 -0
  67. borgbackup-2.0.0b25/docs/man/borg-repo-list.1 +214 -0
  68. borgbackup-2.0.0b25/docs/man/borg-repo-space.1 +91 -0
  69. borgbackup-2.0.0b25/docs/man/borg-serve.1 +225 -0
  70. borgbackup-2.0.0b25/docs/man/borg-tag.1 +144 -0
  71. borgbackup-2.0.0b25/docs/man/borg-transfer.1 +342 -0
  72. borgbackup-2.0.0b25/docs/man/borg-umount.1 +120 -0
  73. borgbackup-2.0.0b25/docs/man/borg-undelete.1 +102 -0
  74. borgbackup-2.0.0b25/docs/man/borg-version.1 +84 -0
  75. borgbackup-2.0.0b25/docs/man/borg-webdav.1 +232 -0
  76. borgbackup-2.0.0b25/docs/man/borg-with-lock.1 +80 -0
  77. borgbackup-2.0.0b25/docs/man/borg.1 +1605 -0
  78. borgbackup-2.0.0b25/docs/man/borgfs.1 +120 -0
  79. borgbackup-2.0.0b25/docs/misc/asciinema/demo.tcl +209 -0
  80. borgbackup-2.0.0b25/docs/misc/benchmark-crud.txt +68 -0
  81. borgbackup-2.0.0b25/docs/misc/create_chunker-params.txt +126 -0
  82. borgbackup-2.0.0b25/docs/quickstart.rst +601 -0
  83. borgbackup-2.0.0b25/docs/quickstart_example.rst.inc +76 -0
  84. borgbackup-2.0.0b25/docs/usage/analyze.rst.inc +158 -0
  85. borgbackup-2.0.0b25/docs/usage/benchmark_cpu.rst.inc +101 -0
  86. borgbackup-2.0.0b25/docs/usage/benchmark_crud.rst.inc +92 -0
  87. borgbackup-2.0.0b25/docs/usage/break-lock.rst.inc +44 -0
  88. borgbackup-2.0.0b25/docs/usage/check.rst.inc +262 -0
  89. borgbackup-2.0.0b25/docs/usage/compact.rst +9 -0
  90. borgbackup-2.0.0b25/docs/usage/compact.rst.inc +108 -0
  91. borgbackup-2.0.0b25/docs/usage/copy.rst +21 -0
  92. borgbackup-2.0.0b25/docs/usage/copy.rst.inc +72 -0
  93. borgbackup-2.0.0b25/docs/usage/create.rst.inc +539 -0
  94. borgbackup-2.0.0b25/docs/usage/debug.rst +36 -0
  95. borgbackup-2.0.0b25/docs/usage/delete.rst.inc +98 -0
  96. borgbackup-2.0.0b25/docs/usage/diff.rst +36 -0
  97. borgbackup-2.0.0b25/docs/usage/diff.rst.inc +237 -0
  98. borgbackup-2.0.0b25/docs/usage/extract.rst +30 -0
  99. borgbackup-2.0.0b25/docs/usage/extract.rst.inc +176 -0
  100. borgbackup-2.0.0b25/docs/usage/find.rst +21 -0
  101. borgbackup-2.0.0b25/docs/usage/find.rst.inc +195 -0
  102. borgbackup-2.0.0b25/docs/usage/general/config.rst.inc +71 -0
  103. borgbackup-2.0.0b25/docs/usage/general/environment.rst.inc +531 -0
  104. borgbackup-2.0.0b25/docs/usage/general/file-systems.rst.inc +40 -0
  105. borgbackup-2.0.0b25/docs/usage/general/positional-arguments.rst.inc +15 -0
  106. borgbackup-2.0.0b25/docs/usage/general/repository-urls.rst.inc +82 -0
  107. borgbackup-2.0.0b25/docs/usage/general/resources.rst.inc +81 -0
  108. borgbackup-2.0.0b25/docs/usage/general/units.rst.inc +11 -0
  109. borgbackup-2.0.0b25/docs/usage/general.rst +44 -0
  110. borgbackup-2.0.0b25/docs/usage/help.rst.inc +608 -0
  111. borgbackup-2.0.0b25/docs/usage/import-tar.rst.inc +146 -0
  112. borgbackup-2.0.0b25/docs/usage/info.rst +22 -0
  113. borgbackup-2.0.0b25/docs/usage/info.rst.inc +90 -0
  114. borgbackup-2.0.0b25/docs/usage/key.rst +84 -0
  115. borgbackup-2.0.0b25/docs/usage/key_import.rst.inc +74 -0
  116. borgbackup-2.0.0b25/docs/usage/list.rst +47 -0
  117. borgbackup-2.0.0b25/docs/usage/list.rst.inc +192 -0
  118. borgbackup-2.0.0b25/docs/usage/mount.rst +60 -0
  119. borgbackup-2.0.0b25/docs/usage/mount.rst.inc +231 -0
  120. borgbackup-2.0.0b25/docs/usage/notes.rst +254 -0
  121. borgbackup-2.0.0b25/docs/usage/prune.rst.inc +261 -0
  122. borgbackup-2.0.0b25/docs/usage/recreate.rst +37 -0
  123. borgbackup-2.0.0b25/docs/usage/recreate.rst.inc +176 -0
  124. borgbackup-2.0.0b25/docs/usage/rename.rst +15 -0
  125. borgbackup-2.0.0b25/docs/usage/repo-compress.rst.inc +85 -0
  126. borgbackup-2.0.0b25/docs/usage/repo-create.rst +34 -0
  127. borgbackup-2.0.0b25/docs/usage/repo-create.rst.inc +222 -0
  128. borgbackup-2.0.0b25/docs/usage/repo-delete.rst +15 -0
  129. borgbackup-2.0.0b25/docs/usage/repo-delete.rst.inc +72 -0
  130. borgbackup-2.0.0b25/docs/usage/repo-info.rst +17 -0
  131. borgbackup-2.0.0b25/docs/usage/repo-list.rst +15 -0
  132. borgbackup-2.0.0b25/docs/usage/repo-list.rst.inc +170 -0
  133. borgbackup-2.0.0b25/docs/usage/serve.rst +100 -0
  134. borgbackup-2.0.0b25/docs/usage/serve.rst.inc +90 -0
  135. borgbackup-2.0.0b25/docs/usage/tag.rst.inc +133 -0
  136. borgbackup-2.0.0b25/docs/usage/tar.rst +63 -0
  137. borgbackup-2.0.0b25/docs/usage/transfer.rst +115 -0
  138. borgbackup-2.0.0b25/docs/usage/transfer.rst.inc +177 -0
  139. borgbackup-2.0.0b25/docs/usage/undelete.rst.inc +97 -0
  140. borgbackup-2.0.0b25/docs/usage/version.rst.inc +71 -0
  141. borgbackup-2.0.0b25/docs/usage.rst +76 -0
  142. borgbackup-2.0.0b25/docs/usage_general.rst.inc +31 -0
  143. borgbackup-2.0.0b25/pyproject.toml +322 -0
  144. borgbackup-2.0.0b25/requirements.d/development.lock.txt +12 -0
  145. borgbackup-2.0.0b25/requirements.d/pyinstaller.txt +1 -0
  146. borgbackup-2.0.0b25/requirements.d/s3-test-server.txt +6 -0
  147. borgbackup-2.0.0b25/scripts/bench_chunker_kernels.py +323 -0
  148. borgbackup-2.0.0b25/scripts/borg.exe.spec +116 -0
  149. borgbackup-2.0.0b25/scripts/build-borg-using-nuitka.sh +27 -0
  150. borgbackup-2.0.0b25/scripts/endian_interop_test.py +261 -0
  151. borgbackup-2.0.0b25/scripts/glibc_check.py +65 -0
  152. borgbackup-2.0.0b25/scripts/make.py +659 -0
  153. borgbackup-2.0.0b25/scripts/msys2-install-deps +7 -0
  154. borgbackup-2.0.0b25/scripts/rest_perf_test.sh +222 -0
  155. borgbackup-2.0.0b25/setup.py +314 -0
  156. borgbackup-2.0.0b25/src/borg/_version.py +1 -0
  157. borgbackup-2.0.0b25/src/borg/archive.py +3183 -0
  158. borgbackup-2.0.0b25/src/borg/archiver/__init__.py +716 -0
  159. borgbackup-2.0.0b25/src/borg/archiver/_common.py +638 -0
  160. borgbackup-2.0.0b25/src/borg/archiver/analyze_cmd.py +553 -0
  161. borgbackup-2.0.0b25/src/borg/archiver/benchmark_cmd.py +661 -0
  162. borgbackup-2.0.0b25/src/borg/archiver/check_cmd.py +367 -0
  163. borgbackup-2.0.0b25/src/borg/archiver/compact_cmd.py +567 -0
  164. borgbackup-2.0.0b25/src/borg/archiver/completion_cmd.py +1138 -0
  165. borgbackup-2.0.0b25/src/borg/archiver/copy_cmd.py +58 -0
  166. borgbackup-2.0.0b25/src/borg/archiver/create_cmd.py +1368 -0
  167. borgbackup-2.0.0b25/src/borg/archiver/debug_cmd.py +531 -0
  168. borgbackup-2.0.0b25/src/borg/archiver/delete_cmd.py +98 -0
  169. borgbackup-2.0.0b25/src/borg/archiver/diff_cmd.py +404 -0
  170. borgbackup-2.0.0b25/src/borg/archiver/extract_cmd.py +257 -0
  171. borgbackup-2.0.0b25/src/borg/archiver/find_cmd.py +133 -0
  172. borgbackup-2.0.0b25/src/borg/archiver/help_cmd.py +1167 -0
  173. borgbackup-2.0.0b25/src/borg/archiver/info_cmd.py +85 -0
  174. borgbackup-2.0.0b25/src/borg/archiver/key_cmds.py +349 -0
  175. borgbackup-2.0.0b25/src/borg/archiver/list_cmd.py +203 -0
  176. borgbackup-2.0.0b25/src/borg/archiver/lock_cmds.py +83 -0
  177. borgbackup-2.0.0b25/src/borg/archiver/mount_cmds.py +266 -0
  178. borgbackup-2.0.0b25/src/borg/archiver/prune_cmd.py +670 -0
  179. borgbackup-2.0.0b25/src/borg/archiver/recreate_cmd.py +188 -0
  180. borgbackup-2.0.0b25/src/borg/archiver/rename_cmd.py +35 -0
  181. borgbackup-2.0.0b25/src/borg/archiver/repo_compress_cmd.py +278 -0
  182. borgbackup-2.0.0b25/src/borg/archiver/repo_create_cmd.py +326 -0
  183. borgbackup-2.0.0b25/src/borg/archiver/repo_delete_cmd.py +160 -0
  184. borgbackup-2.0.0b25/src/borg/archiver/repo_info_cmd.py +93 -0
  185. borgbackup-2.0.0b25/src/borg/archiver/repo_list_cmd.py +159 -0
  186. borgbackup-2.0.0b25/src/borg/archiver/serve_cmd.py +142 -0
  187. borgbackup-2.0.0b25/src/borg/archiver/tag_cmd.py +153 -0
  188. borgbackup-2.0.0b25/src/borg/archiver/tar_cmds.py +891 -0
  189. borgbackup-2.0.0b25/src/borg/archiver/transfer_cmd.py +445 -0
  190. borgbackup-2.0.0b25/src/borg/archiver/undelete_cmd.py +92 -0
  191. borgbackup-2.0.0b25/src/borg/archiver/version_cmd.py +65 -0
  192. borgbackup-2.0.0b25/src/borg/archiver/webdav_cmd.py +151 -0
  193. borgbackup-2.0.0b25/src/borg/cache.py +1382 -0
  194. borgbackup-2.0.0b25/src/borg/chunkers/__init__.py +92 -0
  195. borgbackup-2.0.0b25/src/borg/chunkers/buzhash64_impl.c +497 -0
  196. borgbackup-2.0.0b25/src/borg/chunkers/fastcdc_impl.c +481 -0
  197. borgbackup-2.0.0b25/src/borg/chunkers/fastcdc_impl.h +61 -0
  198. borgbackup-2.0.0b25/src/borg/chunkers/goldilocks_aes_impl.c +190 -0
  199. borgbackup-2.0.0b25/src/borg/chunkers/phte_chunker.c +12390 -0
  200. borgbackup-2.0.0b25/src/borg/chunkers/phte_chunker.pyx +54 -0
  201. borgbackup-2.0.0b25/src/borg/chunkers/phte_core.h +305 -0
  202. borgbackup-2.0.0b25/src/borg/chunkers/phte_scan.h +505 -0
  203. borgbackup-2.0.0b25/src/borg/compress.c +57781 -0
  204. borgbackup-2.0.0b25/src/borg/compress.pyi +63 -0
  205. borgbackup-2.0.0b25/src/borg/compress.pyx +838 -0
  206. borgbackup-2.0.0b25/src/borg/conftest.py +234 -0
  207. borgbackup-2.0.0b25/src/borg/constants.py +299 -0
  208. borgbackup-2.0.0b25/src/borg/crypto/key.py +1544 -0
  209. borgbackup-2.0.0b25/src/borg/crypto/keymanager.py +269 -0
  210. borgbackup-2.0.0b25/src/borg/crypto/low_level.c +40900 -0
  211. borgbackup-2.0.0b25/src/borg/crypto/low_level.pyi +166 -0
  212. borgbackup-2.0.0b25/src/borg/crypto/low_level.pyx +1156 -0
  213. borgbackup-2.0.0b25/src/borg/fslocking.py +500 -0
  214. borgbackup-2.0.0b25/src/borg/fuse.py +256 -0
  215. borgbackup-2.0.0b25/src/borg/hashindex.c +24357 -0
  216. borgbackup-2.0.0b25/src/borg/hashindex.pyi +53 -0
  217. borgbackup-2.0.0b25/src/borg/hashindex.pyx +249 -0
  218. borgbackup-2.0.0b25/src/borg/helpers/__init__.py +228 -0
  219. borgbackup-2.0.0b25/src/borg/helpers/argparsing.py +216 -0
  220. borgbackup-2.0.0b25/src/borg/helpers/errors.py +260 -0
  221. borgbackup-2.0.0b25/src/borg/helpers/fs.py +792 -0
  222. borgbackup-2.0.0b25/src/borg/helpers/misc.py +206 -0
  223. borgbackup-2.0.0b25/src/borg/helpers/msgpack.py +245 -0
  224. borgbackup-2.0.0b25/src/borg/helpers/parseformat.py +1711 -0
  225. borgbackup-2.0.0b25/src/borg/helpers/passphrase.py +202 -0
  226. borgbackup-2.0.0b25/src/borg/helpers/process.py +494 -0
  227. borgbackup-2.0.0b25/src/borg/helpers/time.py +371 -0
  228. borgbackup-2.0.0b25/src/borg/helpers/yes_no.py +129 -0
  229. borgbackup-2.0.0b25/src/borg/hlfuse.py +221 -0
  230. borgbackup-2.0.0b25/src/borg/item.c +48779 -0
  231. borgbackup-2.0.0b25/src/borg/item.pyi +360 -0
  232. borgbackup-2.0.0b25/src/borg/item.pyx +878 -0
  233. borgbackup-2.0.0b25/src/borg/legacy/archives.py +278 -0
  234. borgbackup-2.0.0b25/src/borg/legacy/crypto/key.py +238 -0
  235. borgbackup-2.0.0b25/src/borg/legacy/remote.py +910 -0
  236. borgbackup-2.0.0b25/src/borg/logger.py +390 -0
  237. borgbackup-2.0.0b25/src/borg/manifest.py +561 -0
  238. borgbackup-2.0.0b25/src/borg/repoobj.py +323 -0
  239. borgbackup-2.0.0b25/src/borg/repository.py +2680 -0
  240. borgbackup-2.0.0b25/src/borg/security.py +208 -0
  241. borgbackup-2.0.0b25/src/borg/storelocking.py +711 -0
  242. borgbackup-2.0.0b25/src/borg/testsuite/__init__.py +330 -0
  243. borgbackup-2.0.0b25/src/borg/testsuite/archive_test.py +750 -0
  244. borgbackup-2.0.0b25/src/borg/testsuite/archiver/__init__.py +660 -0
  245. borgbackup-2.0.0b25/src/borg/testsuite/archiver/_common_test.py +71 -0
  246. borgbackup-2.0.0b25/src/borg/testsuite/archiver/analyze_cmd_test.py +370 -0
  247. borgbackup-2.0.0b25/src/borg/testsuite/archiver/benchmark_cmd_test.py +206 -0
  248. borgbackup-2.0.0b25/src/borg/testsuite/archiver/check_cmd_test.py +1881 -0
  249. borgbackup-2.0.0b25/src/borg/testsuite/archiver/checks_test.py +271 -0
  250. borgbackup-2.0.0b25/src/borg/testsuite/archiver/compact_cmd_test.py +1014 -0
  251. borgbackup-2.0.0b25/src/borg/testsuite/archiver/completion_cmd_test.py +687 -0
  252. borgbackup-2.0.0b25/src/borg/testsuite/archiver/copy_cmd_test.py +145 -0
  253. borgbackup-2.0.0b25/src/borg/testsuite/archiver/corruption_test.py +11 -0
  254. borgbackup-2.0.0b25/src/borg/testsuite/archiver/create_cmd_test.py +2122 -0
  255. borgbackup-2.0.0b25/src/borg/testsuite/archiver/debug_cmds_test.py +292 -0
  256. borgbackup-2.0.0b25/src/borg/testsuite/archiver/delete_cmd_test.py +137 -0
  257. borgbackup-2.0.0b25/src/borg/testsuite/archiver/diff_cmd_test.py +801 -0
  258. borgbackup-2.0.0b25/src/borg/testsuite/archiver/disk_full_test.py +94 -0
  259. borgbackup-2.0.0b25/src/borg/testsuite/archiver/extract_cmd_test.py +1258 -0
  260. borgbackup-2.0.0b25/src/borg/testsuite/archiver/info_cmd_test.py +79 -0
  261. borgbackup-2.0.0b25/src/borg/testsuite/archiver/key_cmds_test.py +773 -0
  262. borgbackup-2.0.0b25/src/borg/testsuite/archiver/lock_cmds_test.py +96 -0
  263. borgbackup-2.0.0b25/src/borg/testsuite/archiver/match_archives_date_test.py +419 -0
  264. borgbackup-2.0.0b25/src/borg/testsuite/archiver/mount_cmds_test.py +680 -0
  265. borgbackup-2.0.0b25/src/borg/testsuite/archiver/prune_cmd_test.py +1076 -0
  266. borgbackup-2.0.0b25/src/borg/testsuite/archiver/recreate_cmd_test.py +368 -0
  267. borgbackup-2.0.0b25/src/borg/testsuite/archiver/remote_repo_test.py +170 -0
  268. borgbackup-2.0.0b25/src/borg/testsuite/archiver/rename_cmd_test.py +28 -0
  269. borgbackup-2.0.0b25/src/borg/testsuite/archiver/repo_compress_cmd_test.py +372 -0
  270. borgbackup-2.0.0b25/src/borg/testsuite/archiver/repo_create_cmd_test.py +354 -0
  271. borgbackup-2.0.0b25/src/borg/testsuite/archiver/repo_delete_cmd_test.py +83 -0
  272. borgbackup-2.0.0b25/src/borg/testsuite/archiver/repo_info_cmd_test.py +71 -0
  273. borgbackup-2.0.0b25/src/borg/testsuite/archiver/repo_list_cmd_test.py +363 -0
  274. borgbackup-2.0.0b25/src/borg/testsuite/archiver/repo_space_cmd_test.py +91 -0
  275. borgbackup-2.0.0b25/src/borg/testsuite/archiver/return_codes_test.py +66 -0
  276. borgbackup-2.0.0b25/src/borg/testsuite/archiver/serve_cmd_test.py +26 -0
  277. borgbackup-2.0.0b25/src/borg/testsuite/archiver/store_objects_test.py +153 -0
  278. borgbackup-2.0.0b25/src/borg/testsuite/archiver/tag_cmd_test.py +147 -0
  279. borgbackup-2.0.0b25/src/borg/testsuite/archiver/tar_cmds_test.py +939 -0
  280. borgbackup-2.0.0b25/src/borg/testsuite/archiver/transfer_cmd_test.py +697 -0
  281. borgbackup-2.0.0b25/src/borg/testsuite/archiver/undelete_cmd_test.py +127 -0
  282. borgbackup-2.0.0b25/src/borg/testsuite/archiver/version_cmd_test.py +33 -0
  283. borgbackup-2.0.0b25/src/borg/testsuite/archiver/webdav_cmd_test.py +713 -0
  284. borgbackup-2.0.0b25/src/borg/testsuite/archives_test.py +674 -0
  285. borgbackup-2.0.0b25/src/borg/testsuite/benchmark_test.py +135 -0
  286. borgbackup-2.0.0b25/src/borg/testsuite/cache_test.py +1009 -0
  287. borgbackup-2.0.0b25/src/borg/testsuite/chunkers/fastcdc_test.py +304 -0
  288. borgbackup-2.0.0b25/src/borg/testsuite/chunkers/phte_chunkers_test.py +225 -0
  289. borgbackup-2.0.0b25/src/borg/testsuite/cockpit_test.py +49 -0
  290. borgbackup-2.0.0b25/src/borg/testsuite/compress_test.py +450 -0
  291. borgbackup-2.0.0b25/src/borg/testsuite/crypto/crypto_test.py +364 -0
  292. borgbackup-2.0.0b25/src/borg/testsuite/crypto/key_test.py +649 -0
  293. borgbackup-2.0.0b25/src/borg/testsuite/crypto/legacy_key_test.py +82 -0
  294. borgbackup-2.0.0b25/src/borg/testsuite/crypto/low_level_test.py +157 -0
  295. borgbackup-2.0.0b25/src/borg/testsuite/fuse_test.py +186 -0
  296. borgbackup-2.0.0b25/src/borg/testsuite/hashindex_test.py +226 -0
  297. borgbackup-2.0.0b25/src/borg/testsuite/helpers/__init__test.py +85 -0
  298. borgbackup-2.0.0b25/src/borg/testsuite/helpers/fs_test.py +659 -0
  299. borgbackup-2.0.0b25/src/borg/testsuite/helpers/parseformat_test.py +1005 -0
  300. borgbackup-2.0.0b25/src/borg/testsuite/helpers/passphrase_test.py +198 -0
  301. borgbackup-2.0.0b25/src/borg/testsuite/helpers/process_test.py +58 -0
  302. borgbackup-2.0.0b25/src/borg/testsuite/helpers/progress_test.py +276 -0
  303. borgbackup-2.0.0b25/src/borg/testsuite/helpers/time_test.py +77 -0
  304. borgbackup-2.0.0b25/src/borg/testsuite/helpers/yes_no_test.py +178 -0
  305. borgbackup-2.0.0b25/src/borg/testsuite/item_test.py +236 -0
  306. borgbackup-2.0.0b25/src/borg/testsuite/legacy_archives_test.py +479 -0
  307. borgbackup-2.0.0b25/src/borg/testsuite/legacyrepository_test.py +1053 -0
  308. borgbackup-2.0.0b25/src/borg/testsuite/logger_test.py +87 -0
  309. borgbackup-2.0.0b25/src/borg/testsuite/repoobj_test.py +584 -0
  310. borgbackup-2.0.0b25/src/borg/testsuite/repository_test.py +3823 -0
  311. borgbackup-2.0.0b25/src/borg/testsuite/storelocking_test.py +539 -0
  312. borgbackup-2.0.0b25/src/borg/testsuite/vfs_test.py +161 -0
  313. borgbackup-2.0.0b25/src/borg/vfs.py +766 -0
  314. borgbackup-2.0.0b25/src/borgbackup.egg-info/PKG-INFO +268 -0
  315. borgbackup-2.0.0b25/src/borgbackup.egg-info/SOURCES.txt +581 -0
  316. borgbackup-2.0.0b25/src/borgbackup.egg-info/requires.txt +49 -0
  317. borgbackup-2.0.0b25/src/borgbackup.egg-info/scm_file_list.json +577 -0
  318. borgbackup-2.0.0b25/src/borgbackup.egg-info/scm_version.json +8 -0
  319. borgbackup-2.0.0b23/.claude/CLAUDE.md +0 -189
  320. borgbackup-2.0.0b23/CHANGES.rst +0 -1883
  321. borgbackup-2.0.0b23/FAME.md +0 -397
  322. borgbackup-2.0.0b23/FAME.svg +0 -81
  323. borgbackup-2.0.0b23/PKG-INFO +0 -254
  324. borgbackup-2.0.0b23/README.rst +0 -224
  325. borgbackup-2.0.0b23/docs/binaries/00_README.txt +0 -117
  326. borgbackup-2.0.0b23/docs/changes.rst +0 -1883
  327. borgbackup-2.0.0b23/docs/changes_1.x.rst +0 -4879
  328. borgbackup-2.0.0b23/docs/deployment/automated-local.rst +0 -216
  329. borgbackup-2.0.0b23/docs/deployment/central-backup-server.rst +0 -228
  330. borgbackup-2.0.0b23/docs/deployment/hosting-repositories.rst +0 -60
  331. borgbackup-2.0.0b23/docs/deployment/image-backup.rst +0 -154
  332. borgbackup-2.0.0b23/docs/deployment/pull-backup.rst +0 -512
  333. borgbackup-2.0.0b23/docs/deployment.rst +0 -17
  334. borgbackup-2.0.0b23/docs/development.rst +0 -566
  335. borgbackup-2.0.0b23/docs/faq.rst +0 -1320
  336. borgbackup-2.0.0b23/docs/global.rst.inc +0 -30
  337. borgbackup-2.0.0b23/docs/installation.rst +0 -509
  338. borgbackup-2.0.0b23/docs/internals/chunker.rst +0 -253
  339. borgbackup-2.0.0b23/docs/internals/data-structures.rst +0 -1353
  340. borgbackup-2.0.0b23/docs/internals/frontends.rst +0 -855
  341. borgbackup-2.0.0b23/docs/internals/packs.rst +0 -277
  342. borgbackup-2.0.0b23/docs/internals/security.rst +0 -540
  343. borgbackup-2.0.0b23/docs/internals.rst +0 -49
  344. borgbackup-2.0.0b23/docs/man/borg-analyze.1 +0 -158
  345. borgbackup-2.0.0b23/docs/man/borg-benchmark-cpu.1 +0 -94
  346. borgbackup-2.0.0b23/docs/man/borg-benchmark-crud.1 +0 -104
  347. borgbackup-2.0.0b23/docs/man/borg-benchmark.1 +0 -48
  348. borgbackup-2.0.0b23/docs/man/borg-break-lock.1 +0 -50
  349. borgbackup-2.0.0b23/docs/man/borg-check.1 +0 -245
  350. borgbackup-2.0.0b23/docs/man/borg-common.1 +0 -84
  351. borgbackup-2.0.0b23/docs/man/borg-compact.1 +0 -126
  352. borgbackup-2.0.0b23/docs/man/borg-completion.1 +0 -82
  353. borgbackup-2.0.0b23/docs/man/borg-compression.1 +0 -187
  354. borgbackup-2.0.0b23/docs/man/borg-create.1 +0 -664
  355. borgbackup-2.0.0b23/docs/man/borg-delete.1 +0 -130
  356. borgbackup-2.0.0b23/docs/man/borg-diff.1 +0 -260
  357. borgbackup-2.0.0b23/docs/man/borg-environment.1 +0 -636
  358. borgbackup-2.0.0b23/docs/man/borg-export-tar.1 +0 -183
  359. borgbackup-2.0.0b23/docs/man/borg-extract.1 +0 -169
  360. borgbackup-2.0.0b23/docs/man/borg-find.1 +0 -259
  361. borgbackup-2.0.0b23/docs/man/borg-import-tar.1 +0 -224
  362. borgbackup-2.0.0b23/docs/man/borg-info.1 +0 -116
  363. borgbackup-2.0.0b23/docs/man/borg-key-add.1 +0 -66
  364. borgbackup-2.0.0b23/docs/man/borg-key-change-location.1 +0 -71
  365. borgbackup-2.0.0b23/docs/man/borg-key-change-passphrase.1 +0 -115
  366. borgbackup-2.0.0b23/docs/man/borg-key-export.1 +0 -116
  367. borgbackup-2.0.0b23/docs/man/borg-key-import.1 +0 -76
  368. borgbackup-2.0.0b23/docs/man/borg-key-list.1 +0 -50
  369. borgbackup-2.0.0b23/docs/man/borg-key-remove.1 +0 -67
  370. borgbackup-2.0.0b23/docs/man/borg-key.1 +0 -50
  371. borgbackup-2.0.0b23/docs/man/borg-list.1 +0 -281
  372. borgbackup-2.0.0b23/docs/man/borg-match-archives.1 +0 -155
  373. borgbackup-2.0.0b23/docs/man/borg-mount.1 +0 -236
  374. borgbackup-2.0.0b23/docs/man/borg-patterns.1 +0 -401
  375. borgbackup-2.0.0b23/docs/man/borg-placeholders.1 +0 -113
  376. borgbackup-2.0.0b23/docs/man/borg-prune.1 +0 -306
  377. borgbackup-2.0.0b23/docs/man/borg-recreate.1 +0 -203
  378. borgbackup-2.0.0b23/docs/man/borg-rename.1 +0 -74
  379. borgbackup-2.0.0b23/docs/man/borg-repo-compress.1 +0 -96
  380. borgbackup-2.0.0b23/docs/man/borg-repo-create.1 +0 -248
  381. borgbackup-2.0.0b23/docs/man/borg-repo-delete.1 +0 -88
  382. borgbackup-2.0.0b23/docs/man/borg-repo-info.1 +0 -72
  383. borgbackup-2.0.0b23/docs/man/borg-repo-list.1 +0 -172
  384. borgbackup-2.0.0b23/docs/man/borg-repo-space.1 +0 -91
  385. borgbackup-2.0.0b23/docs/man/borg-serve.1 +0 -210
  386. borgbackup-2.0.0b23/docs/man/borg-tag.1 +0 -107
  387. borgbackup-2.0.0b23/docs/man/borg-transfer.1 +0 -290
  388. borgbackup-2.0.0b23/docs/man/borg-umount.1 +0 -120
  389. borgbackup-2.0.0b23/docs/man/borg-undelete.1 +0 -102
  390. borgbackup-2.0.0b23/docs/man/borg-version.1 +0 -81
  391. borgbackup-2.0.0b23/docs/man/borg-webdav.1 +0 -232
  392. borgbackup-2.0.0b23/docs/man/borg-with-lock.1 +0 -80
  393. borgbackup-2.0.0b23/docs/man/borg.1 +0 -1334
  394. borgbackup-2.0.0b23/docs/man/borgfs.1 +0 -117
  395. borgbackup-2.0.0b23/docs/misc/asciinema/demo.tcl +0 -209
  396. borgbackup-2.0.0b23/docs/misc/benchmark-crud.txt +0 -64
  397. borgbackup-2.0.0b23/docs/misc/create_chunker-params.txt +0 -116
  398. borgbackup-2.0.0b23/docs/quickstart.rst +0 -553
  399. borgbackup-2.0.0b23/docs/quickstart_example.rst.inc +0 -63
  400. borgbackup-2.0.0b23/docs/usage/analyze.rst.inc +0 -146
  401. borgbackup-2.0.0b23/docs/usage/benchmark_cpu.rst.inc +0 -84
  402. borgbackup-2.0.0b23/docs/usage/benchmark_crud.rst.inc +0 -89
  403. borgbackup-2.0.0b23/docs/usage/borgfs.rst +0 -3
  404. borgbackup-2.0.0b23/docs/usage/borgfs.rst.inc +0 -138
  405. borgbackup-2.0.0b23/docs/usage/break-lock.rst.inc +0 -41
  406. borgbackup-2.0.0b23/docs/usage/check.rst.inc +0 -235
  407. borgbackup-2.0.0b23/docs/usage/compact.rst +0 -9
  408. borgbackup-2.0.0b23/docs/usage/compact.rst.inc +0 -101
  409. borgbackup-2.0.0b23/docs/usage/create.rst.inc +0 -521
  410. borgbackup-2.0.0b23/docs/usage/debug.rst +0 -37
  411. borgbackup-2.0.0b23/docs/usage/delete.rst.inc +0 -98
  412. borgbackup-2.0.0b23/docs/usage/diff.rst +0 -26
  413. borgbackup-2.0.0b23/docs/usage/diff.rst.inc +0 -195
  414. borgbackup-2.0.0b23/docs/usage/extract.rst +0 -27
  415. borgbackup-2.0.0b23/docs/usage/extract.rst.inc +0 -134
  416. borgbackup-2.0.0b23/docs/usage/find.rst +0 -21
  417. borgbackup-2.0.0b23/docs/usage/find.rst.inc +0 -194
  418. borgbackup-2.0.0b23/docs/usage/general/config.rst.inc +0 -64
  419. borgbackup-2.0.0b23/docs/usage/general/environment.rst.inc +0 -455
  420. borgbackup-2.0.0b23/docs/usage/general/file-systems.rst.inc +0 -37
  421. borgbackup-2.0.0b23/docs/usage/general/positional-arguments.rst.inc +0 -15
  422. borgbackup-2.0.0b23/docs/usage/general/repository-urls.rst.inc +0 -61
  423. borgbackup-2.0.0b23/docs/usage/general/resources.rst.inc +0 -73
  424. borgbackup-2.0.0b23/docs/usage/general/units.rst.inc +0 -11
  425. borgbackup-2.0.0b23/docs/usage/general.rst +0 -44
  426. borgbackup-2.0.0b23/docs/usage/help.rst.inc +0 -587
  427. borgbackup-2.0.0b23/docs/usage/import-tar.rst.inc +0 -133
  428. borgbackup-2.0.0b23/docs/usage/info.rst +0 -21
  429. borgbackup-2.0.0b23/docs/usage/info.rst.inc +0 -89
  430. borgbackup-2.0.0b23/docs/usage/key.rst +0 -75
  431. borgbackup-2.0.0b23/docs/usage/key_import.rst.inc +0 -69
  432. borgbackup-2.0.0b23/docs/usage/list.rst +0 -47
  433. borgbackup-2.0.0b23/docs/usage/list.rst.inc +0 -191
  434. borgbackup-2.0.0b23/docs/usage/mount.rst +0 -60
  435. borgbackup-2.0.0b23/docs/usage/mount.rst.inc +0 -220
  436. borgbackup-2.0.0b23/docs/usage/notes.rst +0 -253
  437. borgbackup-2.0.0b23/docs/usage/prune.rst.inc +0 -232
  438. borgbackup-2.0.0b23/docs/usage/recreate.rst +0 -30
  439. borgbackup-2.0.0b23/docs/usage/recreate.rst.inc +0 -169
  440. borgbackup-2.0.0b23/docs/usage/rename.rst +0 -14
  441. borgbackup-2.0.0b23/docs/usage/repo-compress.rst.inc +0 -76
  442. borgbackup-2.0.0b23/docs/usage/repo-create.rst +0 -33
  443. borgbackup-2.0.0b23/docs/usage/repo-create.rst.inc +0 -193
  444. borgbackup-2.0.0b23/docs/usage/repo-delete.rst +0 -14
  445. borgbackup-2.0.0b23/docs/usage/repo-delete.rst.inc +0 -66
  446. borgbackup-2.0.0b23/docs/usage/repo-info.rst +0 -17
  447. borgbackup-2.0.0b23/docs/usage/repo-list.rst +0 -15
  448. borgbackup-2.0.0b23/docs/usage/repo-list.rst.inc +0 -140
  449. borgbackup-2.0.0b23/docs/usage/serve.rst +0 -89
  450. borgbackup-2.0.0b23/docs/usage/serve.rst.inc +0 -87
  451. borgbackup-2.0.0b23/docs/usage/tag.rst.inc +0 -102
  452. borgbackup-2.0.0b23/docs/usage/tar.rst +0 -61
  453. borgbackup-2.0.0b23/docs/usage/transfer.rst +0 -106
  454. borgbackup-2.0.0b23/docs/usage/transfer.rst.inc +0 -144
  455. borgbackup-2.0.0b23/docs/usage/undelete.rst.inc +0 -97
  456. borgbackup-2.0.0b23/docs/usage/version.rst.inc +0 -68
  457. borgbackup-2.0.0b23/docs/usage.rst +0 -75
  458. borgbackup-2.0.0b23/docs/usage_general.rst.inc +0 -21
  459. borgbackup-2.0.0b23/pyproject.toml +0 -318
  460. borgbackup-2.0.0b23/requirements.d/development.lock.txt +0 -12
  461. borgbackup-2.0.0b23/requirements.d/pyinstaller.txt +0 -1
  462. borgbackup-2.0.0b23/scripts/borg.exe.spec +0 -87
  463. borgbackup-2.0.0b23/scripts/build-borg-using-nuitka.sh +0 -29
  464. borgbackup-2.0.0b23/scripts/endian_interop_test.py +0 -257
  465. borgbackup-2.0.0b23/scripts/glibc_check.py +0 -61
  466. borgbackup-2.0.0b23/scripts/make.py +0 -631
  467. borgbackup-2.0.0b23/scripts/msys2-install-deps +0 -7
  468. borgbackup-2.0.0b23/scripts/rest_perf_test.sh +0 -221
  469. borgbackup-2.0.0b23/setup.py +0 -314
  470. borgbackup-2.0.0b23/src/borg/_version.py +0 -1
  471. borgbackup-2.0.0b23/src/borg/archive.py +0 -2886
  472. borgbackup-2.0.0b23/src/borg/archiver/__init__.py +0 -697
  473. borgbackup-2.0.0b23/src/borg/archiver/_common.py +0 -588
  474. borgbackup-2.0.0b23/src/borg/archiver/analyze_cmd.py +0 -526
  475. borgbackup-2.0.0b23/src/borg/archiver/benchmark_cmd.py +0 -546
  476. borgbackup-2.0.0b23/src/borg/archiver/check_cmd.py +0 -297
  477. borgbackup-2.0.0b23/src/borg/archiver/compact_cmd.py +0 -517
  478. borgbackup-2.0.0b23/src/borg/archiver/completion_cmd.py +0 -1108
  479. borgbackup-2.0.0b23/src/borg/archiver/create_cmd.py +0 -1328
  480. borgbackup-2.0.0b23/src/borg/archiver/debug_cmd.py +0 -550
  481. borgbackup-2.0.0b23/src/borg/archiver/delete_cmd.py +0 -94
  482. borgbackup-2.0.0b23/src/borg/archiver/diff_cmd.py +0 -313
  483. borgbackup-2.0.0b23/src/borg/archiver/extract_cmd.py +0 -203
  484. borgbackup-2.0.0b23/src/borg/archiver/find_cmd.py +0 -134
  485. borgbackup-2.0.0b23/src/borg/archiver/help_cmd.py +0 -1070
  486. borgbackup-2.0.0b23/src/borg/archiver/info_cmd.py +0 -85
  487. borgbackup-2.0.0b23/src/borg/archiver/key_cmds.py +0 -360
  488. borgbackup-2.0.0b23/src/borg/archiver/list_cmd.py +0 -204
  489. borgbackup-2.0.0b23/src/borg/archiver/lock_cmds.py +0 -80
  490. borgbackup-2.0.0b23/src/borg/archiver/mount_cmds.py +0 -219
  491. borgbackup-2.0.0b23/src/borg/archiver/prune_cmd.py +0 -563
  492. borgbackup-2.0.0b23/src/borg/archiver/recreate_cmd.py +0 -175
  493. borgbackup-2.0.0b23/src/borg/archiver/rename_cmd.py +0 -37
  494. borgbackup-2.0.0b23/src/borg/archiver/repo_compress_cmd.py +0 -245
  495. borgbackup-2.0.0b23/src/borg/archiver/repo_create_cmd.py +0 -251
  496. borgbackup-2.0.0b23/src/borg/archiver/repo_delete_cmd.py +0 -133
  497. borgbackup-2.0.0b23/src/borg/archiver/repo_info_cmd.py +0 -78
  498. borgbackup-2.0.0b23/src/borg/archiver/repo_list_cmd.py +0 -110
  499. borgbackup-2.0.0b23/src/borg/archiver/serve_cmd.py +0 -138
  500. borgbackup-2.0.0b23/src/borg/archiver/tag_cmd.py +0 -76
  501. borgbackup-2.0.0b23/src/borg/archiver/tar_cmds.py +0 -857
  502. borgbackup-2.0.0b23/src/borg/archiver/transfer_cmd.py +0 -408
  503. borgbackup-2.0.0b23/src/borg/archiver/undelete_cmd.py +0 -88
  504. borgbackup-2.0.0b23/src/borg/archiver/version_cmd.py +0 -64
  505. borgbackup-2.0.0b23/src/borg/archiver/webdav_cmd.py +0 -152
  506. borgbackup-2.0.0b23/src/borg/cache.py +0 -1320
  507. borgbackup-2.0.0b23/src/borg/chunkers/__init__.py +0 -91
  508. borgbackup-2.0.0b23/src/borg/chunkers/buzhash64_impl.c +0 -460
  509. borgbackup-2.0.0b23/src/borg/chunkers/fastcdc_impl.c +0 -454
  510. borgbackup-2.0.0b23/src/borg/chunkers/fastcdc_impl.h +0 -61
  511. borgbackup-2.0.0b23/src/borg/chunkers/goldilocks_aes_impl.c +0 -153
  512. borgbackup-2.0.0b23/src/borg/chunkers/phte_chunker.c +0 -12390
  513. borgbackup-2.0.0b23/src/borg/chunkers/phte_chunker.pyx +0 -54
  514. borgbackup-2.0.0b23/src/borg/chunkers/phte_core.h +0 -273
  515. borgbackup-2.0.0b23/src/borg/chunkers/phte_scan.h +0 -502
  516. borgbackup-2.0.0b23/src/borg/compress.c +0 -56524
  517. borgbackup-2.0.0b23/src/borg/compress.pyi +0 -61
  518. borgbackup-2.0.0b23/src/borg/compress.pyx +0 -769
  519. borgbackup-2.0.0b23/src/borg/conftest.py +0 -230
  520. borgbackup-2.0.0b23/src/borg/constants.py +0 -299
  521. borgbackup-2.0.0b23/src/borg/crypto/key.py +0 -1518
  522. borgbackup-2.0.0b23/src/borg/crypto/keymanager.py +0 -272
  523. borgbackup-2.0.0b23/src/borg/crypto/low_level.c +0 -38635
  524. borgbackup-2.0.0b23/src/borg/crypto/low_level.pyi +0 -160
  525. borgbackup-2.0.0b23/src/borg/crypto/low_level.pyx +0 -1029
  526. borgbackup-2.0.0b23/src/borg/fslocking.py +0 -495
  527. borgbackup-2.0.0b23/src/borg/fuse.py +0 -251
  528. borgbackup-2.0.0b23/src/borg/hashindex.c +0 -21085
  529. borgbackup-2.0.0b23/src/borg/hashindex.pyi +0 -51
  530. borgbackup-2.0.0b23/src/borg/hashindex.pyx +0 -197
  531. borgbackup-2.0.0b23/src/borg/helpers/__init__.py +0 -219
  532. borgbackup-2.0.0b23/src/borg/helpers/argparsing.py +0 -152
  533. borgbackup-2.0.0b23/src/borg/helpers/errors.py +0 -237
  534. borgbackup-2.0.0b23/src/borg/helpers/fs.py +0 -774
  535. borgbackup-2.0.0b23/src/borg/helpers/misc.py +0 -193
  536. borgbackup-2.0.0b23/src/borg/helpers/msgpack.py +0 -245
  537. borgbackup-2.0.0b23/src/borg/helpers/parseformat.py +0 -1660
  538. borgbackup-2.0.0b23/src/borg/helpers/passphrase.py +0 -187
  539. borgbackup-2.0.0b23/src/borg/helpers/process.py +0 -474
  540. borgbackup-2.0.0b23/src/borg/helpers/time.py +0 -354
  541. borgbackup-2.0.0b23/src/borg/helpers/yes_no.py +0 -122
  542. borgbackup-2.0.0b23/src/borg/hlfuse.py +0 -184
  543. borgbackup-2.0.0b23/src/borg/item.c +0 -42972
  544. borgbackup-2.0.0b23/src/borg/item.pyi +0 -355
  545. borgbackup-2.0.0b23/src/borg/item.pyx +0 -829
  546. borgbackup-2.0.0b23/src/borg/legacy/archives.py +0 -282
  547. borgbackup-2.0.0b23/src/borg/legacy/crypto/key.py +0 -217
  548. borgbackup-2.0.0b23/src/borg/legacy/remote.py +0 -873
  549. borgbackup-2.0.0b23/src/borg/logger.py +0 -358
  550. borgbackup-2.0.0b23/src/borg/manifest.py +0 -574
  551. borgbackup-2.0.0b23/src/borg/repoobj.py +0 -281
  552. borgbackup-2.0.0b23/src/borg/repository.py +0 -1792
  553. borgbackup-2.0.0b23/src/borg/security.py +0 -221
  554. borgbackup-2.0.0b23/src/borg/storelocking.py +0 -600
  555. borgbackup-2.0.0b23/src/borg/testsuite/__init__.py +0 -297
  556. borgbackup-2.0.0b23/src/borg/testsuite/archive_test.py +0 -732
  557. borgbackup-2.0.0b23/src/borg/testsuite/archiver/__init__.py +0 -577
  558. borgbackup-2.0.0b23/src/borg/testsuite/archiver/_common_test.py +0 -30
  559. borgbackup-2.0.0b23/src/borg/testsuite/archiver/analyze_cmd_test.py +0 -323
  560. borgbackup-2.0.0b23/src/borg/testsuite/archiver/benchmark_cmd_test.py +0 -111
  561. borgbackup-2.0.0b23/src/borg/testsuite/archiver/check_cmd_test.py +0 -896
  562. borgbackup-2.0.0b23/src/borg/testsuite/archiver/checks_test.py +0 -298
  563. borgbackup-2.0.0b23/src/borg/testsuite/archiver/compact_cmd_test.py +0 -752
  564. borgbackup-2.0.0b23/src/borg/testsuite/archiver/completion_cmd_test.py +0 -559
  565. borgbackup-2.0.0b23/src/borg/testsuite/archiver/corruption_test.py +0 -32
  566. borgbackup-2.0.0b23/src/borg/testsuite/archiver/create_cmd_test.py +0 -2010
  567. borgbackup-2.0.0b23/src/borg/testsuite/archiver/debug_cmds_test.py +0 -192
  568. borgbackup-2.0.0b23/src/borg/testsuite/archiver/delete_cmd_test.py +0 -50
  569. borgbackup-2.0.0b23/src/borg/testsuite/archiver/diff_cmd_test.py +0 -527
  570. borgbackup-2.0.0b23/src/borg/testsuite/archiver/disk_full_test.py +0 -93
  571. borgbackup-2.0.0b23/src/borg/testsuite/archiver/extract_cmd_test.py +0 -1083
  572. borgbackup-2.0.0b23/src/borg/testsuite/archiver/info_cmd_test.py +0 -61
  573. borgbackup-2.0.0b23/src/borg/testsuite/archiver/key_cmds_test.py +0 -733
  574. borgbackup-2.0.0b23/src/borg/testsuite/archiver/lock_cmds_test.py +0 -68
  575. borgbackup-2.0.0b23/src/borg/testsuite/archiver/match_archives_date_test.py +0 -420
  576. borgbackup-2.0.0b23/src/borg/testsuite/archiver/mount_cmds_test.py +0 -492
  577. borgbackup-2.0.0b23/src/borg/testsuite/archiver/prune_cmd_test.py +0 -878
  578. borgbackup-2.0.0b23/src/borg/testsuite/archiver/recreate_cmd_test.py +0 -361
  579. borgbackup-2.0.0b23/src/borg/testsuite/archiver/remote_repo_test.py +0 -138
  580. borgbackup-2.0.0b23/src/borg/testsuite/archiver/rename_cmd_test.py +0 -28
  581. borgbackup-2.0.0b23/src/borg/testsuite/archiver/repo_compress_cmd_test.py +0 -333
  582. borgbackup-2.0.0b23/src/borg/testsuite/archiver/repo_create_cmd_test.py +0 -137
  583. borgbackup-2.0.0b23/src/borg/testsuite/archiver/repo_delete_cmd_test.py +0 -30
  584. borgbackup-2.0.0b23/src/borg/testsuite/archiver/repo_info_cmd_test.py +0 -42
  585. borgbackup-2.0.0b23/src/borg/testsuite/archiver/repo_list_cmd_test.py +0 -200
  586. borgbackup-2.0.0b23/src/borg/testsuite/archiver/repo_space_cmd_test.py +0 -84
  587. borgbackup-2.0.0b23/src/borg/testsuite/archiver/return_codes_test.py +0 -35
  588. borgbackup-2.0.0b23/src/borg/testsuite/archiver/tag_cmd_test.py +0 -57
  589. borgbackup-2.0.0b23/src/borg/testsuite/archiver/tar_cmds_test.py +0 -762
  590. borgbackup-2.0.0b23/src/borg/testsuite/archiver/transfer_cmd_test.py +0 -629
  591. borgbackup-2.0.0b23/src/borg/testsuite/archiver/undelete_cmd_test.py +0 -67
  592. borgbackup-2.0.0b23/src/borg/testsuite/archiver/version_cmd_test.py +0 -17
  593. borgbackup-2.0.0b23/src/borg/testsuite/archiver/webdav_cmd_test.py +0 -698
  594. borgbackup-2.0.0b23/src/borg/testsuite/archives_test.py +0 -611
  595. borgbackup-2.0.0b23/src/borg/testsuite/benchmark_test.py +0 -128
  596. borgbackup-2.0.0b23/src/borg/testsuite/cache_test.py +0 -680
  597. borgbackup-2.0.0b23/src/borg/testsuite/chunkers/fastcdc_test.py +0 -301
  598. borgbackup-2.0.0b23/src/borg/testsuite/chunkers/phte_chunkers_test.py +0 -196
  599. borgbackup-2.0.0b23/src/borg/testsuite/cockpit_test.py +0 -48
  600. borgbackup-2.0.0b23/src/borg/testsuite/compress_test.py +0 -358
  601. borgbackup-2.0.0b23/src/borg/testsuite/crypto/crypto_test.py +0 -367
  602. borgbackup-2.0.0b23/src/borg/testsuite/crypto/key_test.py +0 -610
  603. borgbackup-2.0.0b23/src/borg/testsuite/crypto/legacy_key_test.py +0 -34
  604. borgbackup-2.0.0b23/src/borg/testsuite/crypto/low_level_test.py +0 -105
  605. borgbackup-2.0.0b23/src/borg/testsuite/fuse_test.py +0 -162
  606. borgbackup-2.0.0b23/src/borg/testsuite/hashindex_test.py +0 -164
  607. borgbackup-2.0.0b23/src/borg/testsuite/helpers/__init__test.py +0 -64
  608. borgbackup-2.0.0b23/src/borg/testsuite/helpers/fs_test.py +0 -659
  609. borgbackup-2.0.0b23/src/borg/testsuite/helpers/parseformat_test.py +0 -989
  610. borgbackup-2.0.0b23/src/borg/testsuite/helpers/passphrase_test.py +0 -85
  611. borgbackup-2.0.0b23/src/borg/testsuite/helpers/process_test.py +0 -27
  612. borgbackup-2.0.0b23/src/borg/testsuite/helpers/progress_test.py +0 -275
  613. borgbackup-2.0.0b23/src/borg/testsuite/helpers/time_test.py +0 -53
  614. borgbackup-2.0.0b23/src/borg/testsuite/helpers/yes_no_test.py +0 -104
  615. borgbackup-2.0.0b23/src/borg/testsuite/item_test.py +0 -172
  616. borgbackup-2.0.0b23/src/borg/testsuite/legacy_archives_test.py +0 -485
  617. borgbackup-2.0.0b23/src/borg/testsuite/legacyrepository_test.py +0 -989
  618. borgbackup-2.0.0b23/src/borg/testsuite/logger_test.py +0 -57
  619. borgbackup-2.0.0b23/src/borg/testsuite/repoobj_test.py +0 -502
  620. borgbackup-2.0.0b23/src/borg/testsuite/repository_test.py +0 -1890
  621. borgbackup-2.0.0b23/src/borg/testsuite/storelocking_test.py +0 -398
  622. borgbackup-2.0.0b23/src/borg/testsuite/vfs_test.py +0 -114
  623. borgbackup-2.0.0b23/src/borg/vfs.py +0 -735
  624. borgbackup-2.0.0b23/src/borgbackup.egg-info/PKG-INFO +0 -254
  625. borgbackup-2.0.0b23/src/borgbackup.egg-info/SOURCES.txt +0 -573
  626. borgbackup-2.0.0b23/src/borgbackup.egg-info/requires.txt +0 -48
  627. borgbackup-2.0.0b23/src/borgbackup.egg-info/scm_file_list.json +0 -566
  628. borgbackup-2.0.0b23/src/borgbackup.egg-info/scm_version.json +0 -8
  629. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/.claude/settings.json +0 -0
  630. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/.git-blame-ignore-revs +0 -0
  631. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/.pre-commit-config.yaml +0 -0
  632. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/.readthedocs.yaml +0 -0
  633. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/AUTHORS +0 -0
  634. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/Brewfile +0 -0
  635. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/CONTRIBUTING.md +0 -0
  636. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/LICENSE +0 -0
  637. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/MANIFEST.in +0 -0
  638. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/SECURITY.md +0 -0
  639. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/3rd_party/README +0 -0
  640. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/Makefile +0 -0
  641. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/_static/Makefile +0 -0
  642. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/_static/favicon.ico +0 -0
  643. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/_static/logo.pdf +0 -0
  644. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/_static/logo.png +0 -0
  645. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/_static/logo.svg +0 -0
  646. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/_static/logo_font.txt +0 -0
  647. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/_templates/downloads.html +0 -0
  648. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/_templates/globaltoc.html +0 -0
  649. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/_templates/layout.html +0 -0
  650. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/_templates/logo-text.html +0 -0
  651. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/_templates/versionselector.html +0 -0
  652. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/authors.rst +0 -0
  653. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/book.rst +0 -0
  654. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/borg_theme/css/borg.css +0 -0
  655. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/changes_0.x.rst +0 -0
  656. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/conf.py +0 -0
  657. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/deployment/non-root-user.rst +0 -0
  658. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/index.rst +0 -0
  659. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/internals/encryption-aead.odg +0 -0
  660. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/internals/encryption-aead.png +0 -0
  661. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/internals/object-graph.odg +0 -0
  662. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/internals/object-graph.png +0 -0
  663. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/internals/pack-layout.excalidraw +0 -0
  664. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/internals/pack-layout.png +0 -0
  665. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/internals/pack-objheader.excalidraw +0 -0
  666. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/internals/pack-objheader.png +0 -0
  667. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/internals/pack-write-order.excalidraw +0 -0
  668. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/internals/pack-write-order.png +0 -0
  669. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/internals/structure.odg +0 -0
  670. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/internals/structure.png +0 -0
  671. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/introduction.rst +0 -0
  672. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/man/borg-config.1 +0 -0
  673. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/man/borg-key-change-algorithm.1 +0 -0
  674. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/man/borg-key-migrate-to-repokey.1 +0 -0
  675. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/man/borg-upgrade.1 +0 -0
  676. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/man_intro.rst +0 -0
  677. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/misc/asciinema/Containerfile +0 -0
  678. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/misc/asciinema/README.md +0 -0
  679. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/misc/asciinema/borg2-demo.cast +0 -0
  680. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/misc/asciinema/demo-data.py +0 -0
  681. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/misc/asciinema/entrypoint.sh +0 -0
  682. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/misc/asciinema/record.exp +0 -0
  683. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/misc/asciinema/record.sh +0 -0
  684. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/misc/borg-data-flow.odg +0 -0
  685. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/misc/borg-data-flow.png +0 -0
  686. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/misc/internals-picture.txt +0 -0
  687. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/misc/joke-issue-10000/README.md +0 -0
  688. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/misc/joke-issue-10000/we_are_borg.svg +0 -0
  689. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/misc/logging.conf +0 -0
  690. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/misc/prune-example-interval.txt +0 -0
  691. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/misc/prune-example.txt +0 -0
  692. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/support.rst +0 -0
  693. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/analyze.rst +0 -0
  694. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/benchmark.rst +0 -0
  695. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/check.rst +0 -0
  696. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/common-options.rst.inc +0 -0
  697. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/completion.rst +0 -0
  698. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/completion.rst.inc +0 -0
  699. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/create.rst +0 -0
  700. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/delete.rst +0 -0
  701. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/export-tar.rst.inc +0 -0
  702. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/general/archive-specification.rst.inc +0 -0
  703. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/general/date-time.rst.inc +0 -0
  704. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/general/file-metadata.rst.inc +0 -0
  705. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/general/logging.rst.inc +0 -0
  706. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/general/repository-locations.rst.inc +0 -0
  707. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/general/return-codes.rst.inc +0 -0
  708. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/help.rst +0 -0
  709. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/key_add.rst.inc +0 -0
  710. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/key_change-location.rst.inc +0 -0
  711. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/key_change-passphrase.rst.inc +0 -0
  712. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/key_export.rst.inc +0 -0
  713. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/key_list.rst.inc +0 -0
  714. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/key_remove.rst.inc +0 -0
  715. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/lock.rst +0 -0
  716. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/prune.rst +0 -0
  717. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/rename.rst.inc +0 -0
  718. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/repo-compress.rst +0 -0
  719. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/repo-info.rst.inc +0 -0
  720. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/repo-space.rst +0 -0
  721. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/repo-space.rst.inc +0 -0
  722. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/tag.rst +0 -0
  723. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/umount.rst.inc +0 -0
  724. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/undelete.rst +0 -0
  725. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/usage_general.rst.inc +0 -0
  726. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/version.rst +0 -0
  727. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/webdav.rst +0 -0
  728. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/webdav.rst.inc +0 -0
  729. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/docs/usage/with-lock.rst.inc +0 -0
  730. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/requirements.d/codestyle.txt +0 -0
  731. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/requirements.d/development.txt +0 -0
  732. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/requirements.d/docs.txt +0 -0
  733. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/scripts/Dockerfile.linux-run +0 -0
  734. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/scripts/blake3-optimize-mt-threshold.py +0 -0
  735. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/scripts/build-borg-using-pyinstaller.sh +0 -0
  736. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/scripts/chunker_bench.py +0 -0
  737. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/scripts/errorlist.py +0 -0
  738. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/scripts/fame.py +0 -0
  739. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/scripts/fetch-binaries +0 -0
  740. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/scripts/linux-run +0 -0
  741. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/scripts/lvm-thin-map.py +0 -0
  742. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/scripts/make-testdata/test_transfer_upgrade.sh +0 -0
  743. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/scripts/sdist-sign +0 -0
  744. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/scripts/sign-binaries +0 -0
  745. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/scripts/upload-pypi +0 -0
  746. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/setup.cfg +0 -0
  747. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/__init__.py +0 -0
  748. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/__main__.py +0 -0
  749. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/archiver/repo_space_cmd.py +0 -0
  750. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/base.c +0 -0
  751. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/base.pxd +0 -0
  752. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/base.pyx +0 -0
  753. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/buzhash.c +0 -0
  754. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/buzhash.pyi +0 -0
  755. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/buzhash.pyx +0 -0
  756. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/buzhash64.c +0 -0
  757. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/buzhash64.pyi +0 -0
  758. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/buzhash64.pyx +0 -0
  759. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/buzhash64_impl.h +0 -0
  760. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/failing.py +0 -0
  761. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/fastcdc.c +0 -0
  762. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/fastcdc.pyi +0 -0
  763. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/fastcdc.pyx +0 -0
  764. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/fixed.py +0 -0
  765. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/goldilocks_aes.c +0 -0
  766. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/goldilocks_aes.pyi +0 -0
  767. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/goldilocks_aes.pyx +0 -0
  768. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/goldilocks_aes_impl.h +0 -0
  769. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/kernel_env.py +0 -0
  770. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/phte_chunker.pxd +0 -0
  771. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/phte_kernel.h +0 -0
  772. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/rabin_aes.c +0 -0
  773. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/rabin_aes.pyi +0 -0
  774. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/rabin_aes.pyx +0 -0
  775. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/rabin_aes_impl.c +0 -0
  776. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/rabin_aes_impl.h +0 -0
  777. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/reader.c +0 -0
  778. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/reader.pyi +0 -0
  779. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/reader.pyx +0 -0
  780. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/toeplitz_aes.c +0 -0
  781. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/toeplitz_aes.pyi +0 -0
  782. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/toeplitz_aes.pyx +0 -0
  783. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/toeplitz_aes_impl.c +0 -0
  784. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/chunkers/toeplitz_aes_impl.h +0 -0
  785. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/cockpit/__init__.py +0 -0
  786. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/cockpit/app.py +0 -0
  787. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/cockpit/cockpit.tcss +0 -0
  788. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/cockpit/runner.py +0 -0
  789. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/cockpit/theme.py +0 -0
  790. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/cockpit/translator.py +0 -0
  791. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/cockpit/widgets.py +0 -0
  792. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/crypto/__init__.py +0 -0
  793. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/crypto/file_integrity.py +0 -0
  794. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/digests.py +0 -0
  795. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/fuse_impl.py +0 -0
  796. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/helpers/datastruct.py +0 -0
  797. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/helpers/lrucache.py +0 -0
  798. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/helpers/nanorst.py +0 -0
  799. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/helpers/progress.py +0 -0
  800. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/helpers/shellpattern.py +0 -0
  801. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/helpers/sorting.py +0 -0
  802. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/legacy/__init__.py +0 -0
  803. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/legacy/crypto/__init__.py +0 -0
  804. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/legacy/crypto/low_level.c +0 -0
  805. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/legacy/crypto/low_level.pyi +0 -0
  806. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/legacy/crypto/low_level.pyx +0 -0
  807. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/legacy/fs.py +0 -0
  808. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/legacy/hashindex.py +0 -0
  809. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/legacy/helpers.py +0 -0
  810. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/legacy/repoobj.py +0 -0
  811. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/legacy/repository.py +0 -0
  812. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/legacy/upgrade.py +0 -0
  813. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/paperkey.html +0 -0
  814. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/patterns.py +0 -0
  815. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/__init__.py +0 -0
  816. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/base.py +0 -0
  817. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/darwin.c +0 -0
  818. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/darwin.pyx +0 -0
  819. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/freebsd.c +0 -0
  820. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/freebsd.pyx +0 -0
  821. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/linux.c +0 -0
  822. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/linux.pyx +0 -0
  823. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/netbsd.pyx +0 -0
  824. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/posix.c +0 -0
  825. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/posix.pyx +0 -0
  826. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/posix_ug.py +0 -0
  827. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/solaris.py +0 -0
  828. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/syncfilerange.c +0 -0
  829. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/syncfilerange.pyx +0 -0
  830. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/windows.c +0 -0
  831. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/windows.pyx +0 -0
  832. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/windows_ug.py +0 -0
  833. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platform/xattr.py +0 -0
  834. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/platformflags.py +0 -0
  835. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/selftest.py +0 -0
  836. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/archiver/argparsing_test.py +0 -0
  837. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/archiver/check_cmd_remote_test.py +0 -0
  838. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/archiver/dotdot_path.tar +0 -0
  839. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/archiver/find_cmd_test.py +0 -0
  840. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/archiver/help_cmd_test.py +0 -0
  841. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/archiver/list_cmd_test.py +0 -0
  842. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/archiver/patterns_test.py +0 -0
  843. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/archiver/repo12.tar.gz +0 -0
  844. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/archiver/restricted_permissions_test.py +0 -0
  845. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/archiver/unusual_paths.tar +0 -0
  846. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/chunkers/__init__.py +0 -0
  847. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/chunkers/buzhash64_self_test.py +0 -0
  848. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/chunkers/buzhash64_test.py +0 -0
  849. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/chunkers/buzhash_self_test.py +0 -0
  850. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/chunkers/buzhash_test.py +0 -0
  851. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/chunkers/failing_test.py +0 -0
  852. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/chunkers/fixed_self_test.py +0 -0
  853. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/chunkers/fixed_test.py +0 -0
  854. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/chunkers/goldilocks_aes_test.py +0 -0
  855. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/chunkers/interaction_test.py +0 -0
  856. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/chunkers/pytest_helpers.py +0 -0
  857. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/chunkers/rabin_aes_test.py +0 -0
  858. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/chunkers/reader_test.py +0 -0
  859. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/chunkers/toeplitz_aes_test.py +0 -0
  860. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/crypto/__init__.py +0 -0
  861. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/crypto/csprng_test.py +0 -0
  862. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/crypto/file_integrity_test.py +0 -0
  863. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/digests_test.py +0 -0
  864. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/fslocking_test.py +0 -0
  865. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/helpers/__init__.py +0 -0
  866. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/helpers/datastruct_test.py +0 -0
  867. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/helpers/efficient_collection_queue_test.py +0 -0
  868. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/helpers/lrucache_test.py +0 -0
  869. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/helpers/misc_test.py +0 -0
  870. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/helpers/msgpack_test.py +0 -0
  871. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/helpers/nanorst_test.py +0 -0
  872. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/helpers/shellpattern_test.py +0 -0
  873. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/helpers/sorting_test.py +0 -0
  874. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/legacy_fs_test.py +0 -0
  875. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/legacy_helpers_test.py +0 -0
  876. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/legacy_upgrade_test.py +0 -0
  877. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/patterns_test.py +0 -0
  878. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/platform/__init__.py +0 -0
  879. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/platform/all_test.py +0 -0
  880. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/platform/darwin_test.py +0 -0
  881. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/platform/freebsd_test.py +0 -0
  882. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/platform/linux_test.py +0 -0
  883. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/platform/platform_test.py +0 -0
  884. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/platform/windows_test.py +0 -0
  885. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/version_test.py +0 -0
  886. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/testsuite/xattr_test.py +0 -0
  887. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/upgrade.py +0 -0
  888. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/version.py +0 -0
  889. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/webdav.py +0 -0
  890. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borg/xattr.py +0 -0
  891. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borgbackup.egg-info/dependency_links.txt +0 -0
  892. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borgbackup.egg-info/entry_points.txt +0 -0
  893. {borgbackup-2.0.0b23 → borgbackup-2.0.0b25}/src/borgbackup.egg-info/top_level.txt +0 -0
@@ -0,0 +1,190 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ Machine-specific settings (e.g. the local virtualenv path) live in the gitignored `CLAUDE.local.md`:
6
+
7
+ @CLAUDE.local.md
8
+
9
+ ## Branch context
10
+
11
+ This checkout is on `master`, the main development branch — currently borg 2.x (a beta, see
12
+ `borg --version`). New development happens here; the stable maintenance branch for the previous
13
+ major is `1.4-maint`.
14
+
15
+ borg 2 is not just newer code, it is a different on-disk world from borg 1.x:
16
+
17
+ - The repository is a **borgstore** object store (`repository.py` wraps `borgstore.store.Store`),
18
+ not the borg 1.x segment/journal format. There are no `data/` segments, no `COMMIT` transaction
19
+ log, and no repository-side segment index.
20
+ - The CLI changed (e.g. `borg repo-create`, `borg repo-list`, archive series, archive IDs) and the
21
+ crypto/key modes changed (AEAD: AES-256-OCB / ChaCha20-Poly1305, with HMAC-SHA256 or BLAKE3 ids).
22
+ - `src/borg/archiver/` is a package, one `*_cmd.py` module per command group — not the single
23
+ monolithic `archiver.py` file that borg 1.x (and the `1.4-maint` branch) uses.
24
+
25
+ Don't be surprised by these differences if you're comparing against borg 1.x docs or memory. Legacy
26
+ borg 1.x repositories are only supported read-only via `src/borg/legacy/` (e.g. for `borg transfer`).
27
+
28
+ ## Build
29
+
30
+ Borg has Cython/C extensions and must be built before it can run.
31
+
32
+ ```bash
33
+ source <project-virtualenv>/bin/activate # see @CLAUDE.local.md for the local path
34
+ pip install -r requirements.d/development.txt
35
+ pip install -e . # builds Cython/C extensions in place
36
+ ```
37
+
38
+ Requires Python >=3.11, Cython >=3.0.3, pkgconfig, and dev headers for OpenSSL, lz4, zstd, xxhash.
39
+ The `borgstore` package (repository backend) is pulled in as a normal dependency.
40
+
41
+ Env vars to point the build at non-standard lib locations: `BORG_OPENSSL_PREFIX`, `BORG_LIBLZ4_PREFIX`.
42
+
43
+ After editing any `.pyx`/`.c` file, rebuild the extensions:
44
+
45
+ ```bash
46
+ python scripts/make.py clean && pip install -e .
47
+ ```
48
+
49
+ If you are requested to build a BINARY (the usual borg build does not build a binary as it is Python),
50
+ a pyinstaller-made binary is meant:
51
+
52
+ - POSIX: `pyinstaller --clean --distpath=dist/binary/ scripts/borg.exe.spec`
53
+
54
+ ## Writing tests
55
+
56
+ Always write pytest-style tests unless unittest-style is explicitly required.
57
+
58
+ ## Writing docstrings, comments, documentation
59
+
60
+ The docs shall always be in sync with the current code, algorithms and data structures.
61
+
62
+ The docs must:
63
+ - describe how it works, what it does, in its CURRENT state.
64
+ - use "TODO:" comments to refer to future tasks
65
+
66
+ The docs must not:
67
+ - describe what the code did in the past
68
+ - describe something that the code is NOT doing in its current state.
69
+
70
+ ## Running code or tests
71
+
72
+ Always activate the project virtualenv first (see `@CLAUDE.local.md` for its local path).
73
+
74
+ ## Tests
75
+
76
+ ```bash
77
+ # Run everything (never omit --benchmark-skip unless you specifically want the slow benchmarks).
78
+ # Running all the tests without parallelizing them is very slow, the parallel variant should be preferred.
79
+ pytest --benchmark-skip -v -rs -n auto # parallel variant
80
+ pytest --benchmark-skip -v -rs # sequential (slow)
81
+
82
+ # Single file / single test (test files are named *_test.py; see python_files in pyproject.toml)
83
+ pytest src/borg/testsuite/compress_test.py
84
+ pytest src/borg/testsuite/compress_test.py::TestClass::test_method
85
+ # archiver command tests live in the src/borg/testsuite/archiver/ package
86
+ pytest src/borg/testsuite/archiver/create_test.py
87
+
88
+ # Via tox (matches CI; needs fakeroot for full coverage, most tests still work without it)
89
+ fakeroot -u tox # all tests
90
+ fakeroot -u tox --recreate # after changing tox.ini
91
+ fakeroot -u tox -e py311 # one Python version only
92
+ fakeroot -u tox -e py311 -- -k 'locking' # select tests by keyword (posargs after --)
93
+ ```
94
+
95
+ Test env vars:
96
+ - `BORG_TESTS_IGNORE_MODES` (disable mode/permission tests)
97
+ - `BORG_FUSE_IMPL=mfusepy|llfuse|pyfuse3` (select FUSE implementation for mount tests).
98
+
99
+ Tests live in `src/borg/testsuite/`, see `python_files` in `pyproject.toml`.
100
+
101
+ macOS users without a Linux box can run the Linux test matrix via Podman: `./scripts/linux-run tox -e py311-pyfuse3`.
102
+
103
+ ## Lint
104
+
105
+ ```bash
106
+ tox -e ruff # or: ruff check .
107
+ pre-commit install # one-time, so pre-commit hooks run automatically on commit
108
+ ```
109
+
110
+ Style: PEP 8 at 120 columns (not 79). Comments/docstrings that are full sentences end with a period.
111
+ Per-file ruff ignores (mostly `E501`/`F401`/legacy `E722`/`E741`) are listed in `pyproject.toml`
112
+ under `[tool.ruff.per-file-ignores]` — check there before "fixing" a lint warning in an old file;
113
+ it may be intentionally exempted.
114
+
115
+ Python code files must never have trailing blanks at the end of lines.
116
+ Python code files must always end with exactly one linefeed character at the end of the file.
117
+
118
+ ## Committing
119
+
120
+ The working tree has a lot of stray untracked scratch files at the repo root — these are the user's
121
+ own working notes, not build artifacts.
122
+ Never do `git add -A` / `git add .`; stage only the files you intentionally changed.
123
+
124
+ ## Architecture
125
+
126
+ Borg is a client encrypting/deduplicating/compressing data *before* it ever reaches the repository,
127
+ so the repository storage layer never sees plaintext or has any notion of files/archives.
128
+
129
+ **Layering, bottom to top:**
130
+
131
+ - **`repository.py`** — `Repository`, a key→value object store built on top of **borgstore**
132
+ (`borgstore.store.Store`). Keys are 32-byte object IDs; the repo doesn't know what an "archive" or
133
+ "file" is. borgstore provides the actual storage backends and transport: local filesystem,
134
+ `ssh://` (borgstore REST backend talking HTTP over stdio over ssh to a remote `borg serve`,
135
+ optionally reusing `BORGSTORE_RSH`), `sftp://`, `http(s)://`, `rclone:`, `s3:`/`b2:`. This replaces the borg 1.x segment/journal format — read
136
+ `docs/internals/data-structures.rst` before touching repository/object/format code.
137
+ - **`archiver/serve_cmd.py`** — `borg serve` provides the server side for `ssh://` repositories:
138
+ `borg serve --rest` runs the borgstore REST server on stdio for a current repository, plain
139
+ `borg serve` serves a legacy borg 1.x repository via the legacy RPC protocol (`--from-borg1`,
140
+ `legacy/remote.py`).
141
+ - **`crypto/key.py`, `crypto/low_level.pyx`** — encryption/authentication (AEAD: AES-256-OCB or
142
+ ChaCha20-Poly1305; ids via HMAC-SHA256 or BLAKE3) and key file handling (keyfile vs repokey
143
+ storage). The `id_hash` used for deduplication depends on the key/encryption mode.
144
+ - **`chunkers/`** (buzhash, buzhash64, fastcdc, reader — Cython/C) — content-defined chunking:
145
+ splitting the input into variable-length chunks at content-defined boundaries is what makes dedup
146
+ insensitive to shifted/inserted bytes.
147
+ - **`compress.pyx`** — per-chunk compression (lz4/zstd/zlib/lzma/…), applied to each chunk before
148
+ it is encrypted and stored.
149
+ - **`cache.py`** — the local chunks/files cache used to decide what needs uploading. borg2 does **not**
150
+ refcount chunks. The chunks index (`ChunkIndex` from `hashindex.pyx`/`_hashindex.c`) maps chunk ID →
151
+ `(flags, size, pack_id, obj_offset, obj_size)`. Because borg2 batches many objects into a single
152
+ **pack** and stores that pack as one borgstore object, the index also records where each chunk lives
153
+ inside its pack: the containing `pack_id` plus the object's offset and size within the pack. The
154
+ files cache short-circuits re-chunking unchanged files. See `docs/internals/packs.rst` for the pack
155
+ format.
156
+ - **`archive.py`** (`Archive`) and **`manifest.py`** (`Manifest`, `Archives`) — the layer above the
157
+ flat KV store, turning it into archives made of `Item`s (files/dirs/links, see `item.pyx`)
158
+ referencing chunk lists. The `manifest` is largely a relic from borg 1.x; in borg2 the list of
159
+ archives is a **separate** structure (the `Archives` class in `manifest.py`), no longer embedded in
160
+ the manifest object.
161
+ - **`archiver/`** — the CLI, one `do_<command>` method per subcommand spread across `*_cmd.py`
162
+ modules (e.g. `create_cmd.py`, `check_cmd.py`, `repo_create_cmd.py`). `build_parser` and the
163
+ argument-parsing entry points live in `archiver/__init__.py`. This is the package to search first
164
+ when changing or adding a CLI command/flag.
165
+ - **`platform/`** — per-OS backends (Linux/Darwin/FreeBSD/NetBSD/Windows) for xattrs, ACLs, syncing,
166
+ process info; `platform/__init__.py` picks the right implementation at import time.
167
+ - **`helpers/`** — grab-bag of utilities used across layers (arg/format parsing, msgpack helpers,
168
+ progress reporting, filesystem helpers); check here before writing a new utility, it may exist.
169
+
170
+ **Client/server split:** most `do_*` archiver commands operate against a local or remote `Repository`
171
+ transparently — the choice of local vs. `ssh://` etc. is resolved by `Location` parsing in
172
+ `helpers/` and borgstore backend selection, and doesn't otherwise change command logic. `borg serve`
173
+ on the remote end provides the server side.
174
+
175
+ **Docs as source of truth for on-disk formats:** `docs/internals/data-structures.rst` (plus
176
+ `docs/internals/packs.rst` for the pack format) document the repository/object/pack/archive/item/cache
177
+ formats in detail and are more authoritative than guessing from code — read the relevant section
178
+ before changing serialization or the on-disk layout.
179
+ CLI usage docs (`docs/usage/`) and man pages are generated from the argparse definitions in
180
+ `archiver/` (`python scripts/make.py build_usage`/`build_man`); don't hand-edit generated usage docs,
181
+ and don't feel obligated to regenerate them for every CLI change — that's normally done at release time.
182
+
183
+ ## Logging conventions
184
+
185
+ Use the correct log level (debug only for debugging; info/warning/error/critical as appropriate).
186
+
187
+ When directly prompting the user (e.g. Y/N confirmations), write straight to stderr, not through the
188
+ logger and not to stdout (stdout may be piped). Info-level volume is controlled via flags like
189
+ `--stats`/`--list` feeding topic loggers — see `_setup_implied_logging()` in `archiver/__init__.py`.
190
+
@@ -0,0 +1,398 @@
1
+ # Contributors
2
+
3
+ 375 people have contributed to Borg, with 11,344 commits in total.
4
+ Thanks to everyone who helped!
5
+
6
+ ![Contributors by commit count](FAME.svg)
7
+
8
+ Generated on 2026-09-21 by `scripts/fame.py`, which computes the statistics with
9
+ [git-fame](https://github.com/casperdcl/git-fame), from the `master` branch
10
+ only - commits that exist solely on other branches or in unmerged pull requests
11
+ are not counted.
12
+
13
+ This list is only a rough summary: it counts commits and lines, which say
14
+ nothing about reviews, bug reports, translations, documentation review, support
15
+ work or funding. See `AUTHORS` for a manually maintained list of contributors.
16
+
17
+ "Lines" are surviving lines of code: lines of the current master that
18
+ `git blame` attributes to that author. Code that was later rewritten does not
19
+ show up there, so the number understates early contributions. Generated files
20
+ (such as the Excalidraw sources of the documentation figures) are excluded.
21
+
22
+ | Contributor | Commits | Lines | Files |
23
+ |:---|---:|---:|---:|
24
+ | Thomas Waldmann | 7,693 | 102,270 | 525 |
25
+ | Marian Beermann | 1,140 | 7,574 | 156 |
26
+ | Jonas Borgström | 560 | 962 | 38 |
27
+ | Antoine Beaupré | 285 | 437 | 33 |
28
+ | Mrityunjay Raj | 260 | 10,590 | 107 |
29
+ | Andrey Bienkowski | 72 | 200 | 16 |
30
+ | Ted Lawson | 71 | 4,364 | 39 |
31
+ | Thalian | 63 | 563 | 29 |
32
+ | dependabot[bot] | 51 | 17 | 7 |
33
+ | Martin Hostettler | 46 | 2,558 | 9 |
34
+ | Milkey Mouse | 42 | 239 | 12 |
35
+ | Dan Christensen | 40 | 5 | 2 |
36
+ | Rayyan Ansari | 34 | 88 | 12 |
37
+ | Abdel-Rahman | 30 | 2 | 2 |
38
+ | Manuel Riel | 28 | 84 | 6 |
39
+ | Nehalenniæ Oudin | 26 | 47 | 11 |
40
+ | anarcat | 24 | 33 | 4 |
41
+ | Hugo Wallenburg | 23 | 1,102 | 11 |
42
+ | Michael Hanselmann | 22 | 71 | 3 |
43
+ | Björn Ketelaars | 17 | 28 | 4 |
44
+ | SanskritFritz | 17 | 0 | 0 |
45
+ | Lee Bousfield | 14 | 157 | 9 |
46
+ | Alan Jenkins | 14 | 35 | 2 |
47
+ | Daniel Rudolf | 13 | 215 | 14 |
48
+ | Robin Schneider | 13 | 18 | 8 |
49
+ | Elmar Hoffmann | 12 | 90 | 6 |
50
+ | Jürg Rast | 12 | 72 | 11 |
51
+ | Ronny Pfannschmidt | 12 | 20 | 4 |
52
+ | mh4ckt3mh4ckt1c4s | 11 | 0 | 0 |
53
+ | finefoot | 10 | 18 | 3 |
54
+ | Teemu Toivanen | 10 | 14 | 2 |
55
+ | Lauri Niskanen | 10 | 5 | 2 |
56
+ | James Buren | 10 | 2 | 2 |
57
+ | Emmo Emminghaus | 9 | 60 | 9 |
58
+ | Ed Blackman | 9 | 12 | 3 |
59
+ | rugk | 9 | 9 | 4 |
60
+ | Carlo Teubner | 9 | 3 | 3 |
61
+ | Per Guth | 9 | 1 | 1 |
62
+ | ThomasWaldmann | 8 | 179 | 1 |
63
+ | Jakob Schnitzer | 8 | 35 | 1 |
64
+ | Josh Soref | 8 | 2 | 2 |
65
+ | Gianfranco Costamagna | 7 | 8 | 5 |
66
+ | Frank Sachsenheim | 7 | 2 | 1 |
67
+ | Hartmut Goebel | 7 | 0 | 0 |
68
+ | William D. Jones | 6 | 215 | 6 |
69
+ | Michael Deyaso | 6 | 165 | 14 |
70
+ | Peter Gerber | 6 | 102 | 9 |
71
+ | Alf Mikula | 6 | 19 | 1 |
72
+ | Felix Schwarz | 6 | 4 | 2 |
73
+ | Alexander-N | 6 | 0 | 0 |
74
+ | Paul D | 5 | 176 | 41 |
75
+ | Simon Frei | 5 | 124 | 3 |
76
+ | Dominik Stadler | 5 | 75 | 1 |
77
+ | elandorr | 5 | 39 | 3 |
78
+ | remyabel | 5 | 19 | 2 |
79
+ | Alexander 'Leo' Bergolth | 5 | 18 | 3 |
80
+ | infectormp | 5 | 18 | 2 |
81
+ | Mark Edgington | 5 | 10 | 3 |
82
+ | step21 | 5 | 1 | 1 |
83
+ | Radu Ciorba | 5 | 0 | 0 |
84
+ | Charlie Herz | 4 | 626 | 5 |
85
+ | Ebuzer Celil Durmaz | 4 | 78 | 5 |
86
+ | Robert Blenis | 4 | 49 | 4 |
87
+ | Franco Ayala | 4 | 39 | 6 |
88
+ | Suryansh Pal | 4 | 34 | 8 |
89
+ | 8bit | 4 | 29 | 5 |
90
+ | Steve Groesz | 4 | 22 | 1 |
91
+ | Ryan Polley | 4 | 12 | 4 |
92
+ | Artem Sheremet | 4 | 10 | 1 |
93
+ | Thomas Kluyver | 4 | 8 | 2 |
94
+ | Josh Holland | 4 | 3 | 2 |
95
+ | Narendra Vardi | 4 | 3 | 1 |
96
+ | Alexander Pyhalov | 4 | 0 | 0 |
97
+ | oxiedi | 4 | 0 | 0 |
98
+ | Parman Mohammadalizadeh | 3 | 292 | 5 |
99
+ | Stephan Herbers | 3 | 49 | 2 |
100
+ | Charmi Kadi | 3 | 46 | 2 |
101
+ | Martin Richtarsky | 3 | 31 | 4 |
102
+ | ntova | 3 | 26 | 8 |
103
+ | Daniel Reichelt | 3 | 23 | 5 |
104
+ | Michael Gajda | 3 | 23 | 2 |
105
+ | Lukas Fleischer | 3 | 22 | 2 |
106
+ | eoli3n | 3 | 22 | 1 |
107
+ | Will | 3 | 21 | 4 |
108
+ | Andrea Gelmini | 3 | 17 | 12 |
109
+ | Oleg Drokin | 3 | 16 | 1 |
110
+ | kmq | 3 | 14 | 1 |
111
+ | jungle-boogie | 3 | 13 | 1 |
112
+ | Helmut Grohne | 3 | 11 | 1 |
113
+ | Stephen | 3 | 9 | 2 |
114
+ | Dmitry Astapov | 3 | 8 | 1 |
115
+ | Gregor Kleen | 3 | 8 | 3 |
116
+ | valtron | 3 | 7 | 1 |
117
+ | Luke Dashjr | 3 | 4 | 1 |
118
+ | Stefan Tatschner | 3 | 3 | 1 |
119
+ | Divyesh | 3 | 1 | 1 |
120
+ | Thomas Harold | 3 | 1 | 1 |
121
+ | Danny Edel | 3 | 0 | 0 |
122
+ | Jeff Rizzo | 3 | 0 | 0 |
123
+ | Piotr Pawlow | 3 | 0 | 0 |
124
+ | Simon Heath | 3 | 0 | 0 |
125
+ | William Bonnaventure | 3 | 0 | 0 |
126
+ | Zhuoyun Wei | 3 | 0 | 0 |
127
+ | jhemmje | 3 | 0 | 0 |
128
+ | Thomas Portmann | 2 | 177 | 4 |
129
+ | Ken Kundert | 2 | 149 | 4 |
130
+ | trxvorr | 2 | 103 | 7 |
131
+ | Syed Ali Ghazi Ejaz | 2 | 90 | 4 |
132
+ | David Rambo | 2 | 87 | 3 |
133
+ | Soumik Dutta | 2 | 76 | 3 |
134
+ | Divyansh Agrawal | 2 | 43 | 4 |
135
+ | Eric Wolf | 2 | 38 | 3 |
136
+ | Ioannis Cherouvim | 2 | 30 | 2 |
137
+ | zDEFz | 2 | 27 | 1 |
138
+ | Atharva Varpe | 2 | 23 | 1 |
139
+ | Lapinot | 2 | 23 | 4 |
140
+ | ReethuVinta | 2 | 20 | 2 |
141
+ | Joachim Breitner | 2 | 15 | 1 |
142
+ | Matthew Glazar | 2 | 15 | 3 |
143
+ | Max-Julian Pogner | 2 | 15 | 1 |
144
+ | Jerry Jacobs | 2 | 12 | 3 |
145
+ | Jonas Schäfer | 2 | 12 | 1 |
146
+ | kmille | 2 | 11 | 2 |
147
+ | Łukasz Stelmach | 2 | 11 | 1 |
148
+ | jetchirag | 2 | 9 | 3 |
149
+ | Kurt Yoder | 2 | 8 | 1 |
150
+ | nain | 2 | 6 | 1 |
151
+ | Vaskebjoern | 2 | 5 | 1 |
152
+ | wormingdead | 2 | 5 | 1 |
153
+ | Samuel | 2 | 4 | 3 |
154
+ | snsmac | 2 | 4 | 2 |
155
+ | Andreas Gruhler | 2 | 3 | 1 |
156
+ | Markus Engelbrecht | 2 | 3 | 1 |
157
+ | a1346054 | 2 | 3 | 2 |
158
+ | bbx0 | 2 | 3 | 1 |
159
+ | jan | 2 | 3 | 1 |
160
+ | Fabian Fröhlich | 2 | 2 | 1 |
161
+ | MultisampledNight | 2 | 2 | 1 |
162
+ | Samuel BF | 2 | 2 | 1 |
163
+ | Saurav Sachidanand | 2 | 2 | 1 |
164
+ | azrdev | 2 | 2 | 1 |
165
+ | AJ Jordan | 2 | 1 | 1 |
166
+ | Cam Hutchison | 2 | 1 | 1 |
167
+ | Cthulhux | 2 | 1 | 1 |
168
+ | Leo Famulari | 2 | 1 | 1 |
169
+ | Russell Davis | 2 | 1 | 1 |
170
+ | Sophie Herold | 2 | 1 | 1 |
171
+ | textshell | 2 | 1 | 1 |
172
+ | Abogical | 2 | 0 | 0 |
173
+ | Andrew Skalski | 2 | 0 | 0 |
174
+ | Brian Johnson | 2 | 0 | 0 |
175
+ | Daniel Danner | 2 | 0 | 0 |
176
+ | Donny Ward | 2 | 0 | 0 |
177
+ | Herover | 2 | 0 | 0 |
178
+ | James Clarke | 2 | 0 | 0 |
179
+ | Jan Bader | 2 | 0 | 0 |
180
+ | Janne K | 2 | 0 | 0 |
181
+ | Jeremy Maitin-Shepard | 2 | 0 | 0 |
182
+ | Mark Lopez | 2 | 0 | 0 |
183
+ | Michael Herold | 2 | 0 | 0 |
184
+ | Michael Rupert | 2 | 0 | 0 |
185
+ | Mitch Bigelow | 2 | 0 | 0 |
186
+ | Petros Moisiadis | 2 | 0 | 0 |
187
+ | Radek Podgorny | 2 | 0 | 0 |
188
+ | Stavros Korokithakis | 2 | 0 | 0 |
189
+ | Yornik Heyl | 2 | 0 | 0 |
190
+ | lyh16 | 2 | 0 | 0 |
191
+ | motwok | 2 | 0 | 0 |
192
+ | sven | 2 | 0 | 0 |
193
+ | user062 | 2 | 0 | 0 |
194
+ | Tarrailt | 1 | 362 | 7 |
195
+ | axapaxa | 1 | 105 | 2 |
196
+ | Benedikt Seidl | 1 | 103 | 1 |
197
+ | Aleksey Korol | 1 | 91 | 1 |
198
+ | ebabcock93 | 1 | 84 | 1 |
199
+ | mrityunjay | 1 | 73 | 5 |
200
+ | Rohan salunke | 1 | 62 | 8 |
201
+ | Xiaocheng Song | 1 | 60 | 4 |
202
+ | Mike Mason | 1 | 37 | 3 |
203
+ | borkd | 1 | 37 | 1 |
204
+ | James Vasile | 1 | 36 | 1 |
205
+ | Uriel | 1 | 30 | 1 |
206
+ | Vedant Patel | 1 | 30 | 3 |
207
+ | Nic Donaldson | 1 | 26 | 1 |
208
+ | vancheese | 1 | 26 | 8 |
209
+ | Mike | 1 | 23 | 1 |
210
+ | Sitaram Chamarty | 1 | 23 | 1 |
211
+ | Jonathan Zacsh | 1 | 21 | 1 |
212
+ | Félix Sipma | 1 | 13 | 1 |
213
+ | Antonio Larrosa | 1 | 12 | 1 |
214
+ | Sam H | 1 | 12 | 2 |
215
+ | remyabel2 | 1 | 12 | 1 |
216
+ | Atemu | 1 | 11 | 2 |
217
+ | Reiko Asakura | 1 | 11 | 2 |
218
+ | Graham Stockton | 1 | 7 | 1 |
219
+ | James Rowell | 1 | 7 | 1 |
220
+ | Nikolaus Rath | 1 | 7 | 1 |
221
+ | Dark Dragon | 1 | 6 | 1 |
222
+ | Jubjub | 1 | 6 | 1 |
223
+ | TawfeeqShaik | 1 | 6 | 1 |
224
+ | edvatar | 1 | 6 | 2 |
225
+ | Florent Hemmi | 1 | 5 | 1 |
226
+ | Leo Antunes | 1 | 5 | 1 |
227
+ | dataprolet | 1 | 5 | 1 |
228
+ | Eddie Carswell | 1 | 4 | 1 |
229
+ | Phil Kulin | 1 | 4 | 1 |
230
+ | abebeos | 1 | 4 | 1 |
231
+ | goebbe | 1 | 4 | 1 |
232
+ | Alexandr Kozlinskiy | 1 | 3 | 1 |
233
+ | Dominik Tugend | 1 | 3 | 1 |
234
+ | Greg Grossmeier | 1 | 3 | 1 |
235
+ | Kevin Yin | 1 | 3 | 1 |
236
+ | Mateusz Konieczny | 1 | 3 | 1 |
237
+ | Tavlor | 1 | 3 | 1 |
238
+ | Zhou Qiankang | 1 | 3 | 1 |
239
+ | Daniel Dent | 1 | 2 | 1 |
240
+ | Maltimore | 1 | 2 | 1 |
241
+ | Mher Kazandjian | 1 | 2 | 1 |
242
+ | Michael Bauer | 1 | 2 | 1 |
243
+ | Paweł Kotiuk | 1 | 2 | 1 |
244
+ | Tom Denley | 1 | 2 | 2 |
245
+ | jminer74 | 1 | 2 | 1 |
246
+ | philippje | 1 | 2 | 1 |
247
+ | vhadzhiev | 1 | 2 | 1 |
248
+ | Abhijeet | 1 | 1 | 1 |
249
+ | Andreas Vögele | 1 | 1 | 1 |
250
+ | Ceesjan Luiten | 1 | 1 | 1 |
251
+ | Christian Paul | 1 | 1 | 1 |
252
+ | Coenraad Loubser | 1 | 1 | 1 |
253
+ | Dee Newcum | 1 | 1 | 1 |
254
+ | Divyansh Singh | 1 | 1 | 1 |
255
+ | Emil M George | 1 | 1 | 1 |
256
+ | Fredrik Mikker | 1 | 1 | 1 |
257
+ | Hauke Rehfeld | 1 | 1 | 1 |
258
+ | Ivan Shapovalov | 1 | 1 | 1 |
259
+ | Jens Diemer | 1 | 1 | 1 |
260
+ | Jim Paris | 1 | 1 | 1 |
261
+ | Jonathan Rascher | 1 | 1 | 1 |
262
+ | Lars K.W. Gohlke | 1 | 1 | 1 |
263
+ | Marc Kohaupt | 1 | 1 | 1 |
264
+ | MartinKurtz | 1 | 1 | 1 |
265
+ | Matt Van Horn | 1 | 1 | 1 |
266
+ | Peter Zangerl | 1 | 1 | 1 |
267
+ | Robert Marcano | 1 | 1 | 1 |
268
+ | Stefan Majewsky | 1 | 1 | 1 |
269
+ | Svein Ove Aas | 1 | 1 | 1 |
270
+ | Vagrant Cascadian | 1 | 1 | 1 |
271
+ | targhs | 1 | 1 | 1 |
272
+ | tree-wall | 1 | 1 | 1 |
273
+ | 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко) | 1 | 1 | 1 |
274
+ | Adam Kouse | 1 | 0 | 0 |
275
+ | Aidan Woods | 1 | 0 | 0 |
276
+ | Aiman | 1 | 0 | 0 |
277
+ | Alex Vorona | 1 | 0 | 0 |
278
+ | Alexander Meshcheryakov | 1 | 0 | 0 |
279
+ | Andraz Brodnik | 1 | 0 | 0 |
280
+ | Andrew Engelbrecht | 1 | 0 | 0 |
281
+ | André-Patrick Bubel | 1 | 0 | 0 |
282
+ | Ashmodei | 1 | 0 | 0 |
283
+ | Ben Creasy | 1 | 0 | 0 |
284
+ | Benedikt Heine | 1 | 0 | 0 |
285
+ | Benedikt Neuffer | 1 | 0 | 0 |
286
+ | Benjamin Pereto | 1 | 0 | 0 |
287
+ | Birkhoff Lee | 1 | 0 | 0 |
288
+ | Bruno Behnken | 1 | 0 | 0 |
289
+ | Chen Yufei | 1 | 0 | 0 |
290
+ | Chris Lamb | 1 | 0 | 0 |
291
+ | Christoph Trassl | 1 | 0 | 0 |
292
+ | Christopher Klooz | 1 | 0 | 0 |
293
+ | Cyril Roussillon | 1 | 0 | 0 |
294
+ | Dan Helfman | 1 | 0 | 0 |
295
+ | Dan Hipschman | 1 | 0 | 0 |
296
+ | David Fries | 1 | 0 | 0 |
297
+ | DifficultDerek | 1 | 0 | 0 |
298
+ | Eli Schwartz | 1 | 0 | 0 |
299
+ | Ellis Michael | 1 | 0 | 0 |
300
+ | Endareth | 1 | 0 | 0 |
301
+ | Evan Hempel | 1 | 0 | 0 |
302
+ | Fabian Weisshaar | 1 | 0 | 0 |
303
+ | Fabio Pedretti | 1 | 0 | 0 |
304
+ | Flachz | 1 | 0 | 0 |
305
+ | Florian Klink | 1 | 0 | 0 |
306
+ | Hans-Peter Jansen | 1 | 0 | 0 |
307
+ | Henry-Joseph Audéoud | 1 | 0 | 0 |
308
+ | Jakub Wilk | 1 | 0 | 0 |
309
+ | Jan | 1 | 0 | 0 |
310
+ | Jens Rantil | 1 | 0 | 0 |
311
+ | Jesus Fernandez Manzano | 1 | 0 | 0 |
312
+ | Joey | 1 | 0 | 0 |
313
+ | Johann Bauer | 1 | 0 | 0 |
314
+ | Johann Klähn | 1 | 0 | 0 |
315
+ | Johannes Wienke | 1 | 0 | 0 |
316
+ | Jonas Wunderlich | 1 | 0 | 0 |
317
+ | Julian Andres Klode | 1 | 0 | 0 |
318
+ | Julian Picht | 1 | 0 | 0 |
319
+ | Julien Lamy | 1 | 0 | 0 |
320
+ | Jürgen Gmach | 1 | 0 | 0 |
321
+ | KN4CK3R | 1 | 0 | 0 |
322
+ | Kevin | 1 | 0 | 0 |
323
+ | Kevin Puetz | 1 | 0 | 0 |
324
+ | Lars-Magnus Skog | 1 | 0 | 0 |
325
+ | Laurent | 1 | 0 | 0 |
326
+ | Lauri Alanko | 1 | 0 | 0 |
327
+ | Luke Murphy | 1 | 0 | 0 |
328
+ | Marcin Zajączkowski | 1 | 0 | 0 |
329
+ | Martin Stone | 1 | 0 | 0 |
330
+ | Marvin Gaube | 1 | 0 | 0 |
331
+ | Matthew R. Trower | 1 | 0 | 0 |
332
+ | Michael G. Noll | 1 | 0 | 0 |
333
+ | Nathan Musoke | 1 | 0 | 0 |
334
+ | Nick Cleaton | 1 | 0 | 0 |
335
+ | Niels Ole Salscheider | 1 | 0 | 0 |
336
+ | Niklas Meinzer | 1 | 0 | 0 |
337
+ | Nils Steinger | 1 | 0 | 0 |
338
+ | OEM Configuration (temporary user) | 1 | 0 | 0 |
339
+ | Ori Livneh | 1 | 0 | 0 |
340
+ | Pankaj Garg | 1 | 0 | 0 |
341
+ | Patrick Goering | 1 | 0 | 0 |
342
+ | Philip Kozeny | 1 | 0 | 0 |
343
+ | Philip Waritschlager | 1 | 0 | 0 |
344
+ | Philippe MIOSSEC | 1 | 0 | 0 |
345
+ | Profpatsch | 1 | 0 | 0 |
346
+ | RR | 1 | 0 | 0 |
347
+ | Ricardo M. Correia | 1 | 0 | 0 |
348
+ | Roberto Polli | 1 | 0 | 0 |
349
+ | Romain Vimont | 1 | 0 | 0 |
350
+ | Ruben Rodriguez | 1 | 0 | 0 |
351
+ | Sebastiaan Lokhorst | 1 | 0 | 0 |
352
+ | Serghei Iakovlev | 1 | 0 | 0 |
353
+ | Stefano Probst | 1 | 0 | 0 |
354
+ | Swanand01 | 1 | 0 | 0 |
355
+ | Thiago Macieira | 1 | 0 | 0 |
356
+ | Thomas Deutschmann | 1 | 0 | 0 |
357
+ | Thomas Schwinge | 1 | 0 | 0 |
358
+ | Tiago Donato | 1 | 0 | 0 |
359
+ | Tim Düsterhus | 1 | 0 | 0 |
360
+ | Timothy Burchfield | 1 | 0 | 0 |
361
+ | Tommy Nguyen | 1 | 0 | 0 |
362
+ | Tomás Andrighetti | 1 | 0 | 0 |
363
+ | TuXicc | 1 | 0 | 0 |
364
+ | Tung Dao | 1 | 0 | 0 |
365
+ | Viktor Bale | 1 | 0 | 0 |
366
+ | Vlad | 1 | 0 | 0 |
367
+ | Vladimir Malinovskii | 1 | 0 | 0 |
368
+ | Wladimir Palant | 1 | 0 | 0 |
369
+ | Yuri D'Elia | 1 | 0 | 0 |
370
+ | adrian5 | 1 | 0 | 0 |
371
+ | ahtaarra | 1 | 0 | 0 |
372
+ | alex3d | 1 | 0 | 0 |
373
+ | alexskc | 1 | 0 | 0 |
374
+ | ash | 1 | 0 | 0 |
375
+ | ashmodei | 1 | 0 | 0 |
376
+ | bobthebadguy | 1 | 0 | 0 |
377
+ | cornop | 1 | 0 | 0 |
378
+ | eike-fokken | 1 | 0 | 0 |
379
+ | henfri | 1 | 0 | 0 |
380
+ | hiijoshi | 1 | 0 | 0 |
381
+ | jenkins | 1 | 0 | 0 |
382
+ | jeroen tiebout | 1 | 0 | 0 |
383
+ | kannes | 1 | 0 | 0 |
384
+ | klemens | 1 | 0 | 0 |
385
+ | lexa-a | 1 | 0 | 0 |
386
+ | lumbric | 1 | 0 | 0 |
387
+ | mirobertod | 1 | 0 | 0 |
388
+ | nain-F49FF806 | 1 | 0 | 0 |
389
+ | newtonne | 1 | 0 | 0 |
390
+ | nod0n | 1 | 0 | 0 |
391
+ | nyuszika7h | 1 | 0 | 0 |
392
+ | ololoru | 1 | 0 | 0 |
393
+ | pamaron | 1 | 0 | 0 |
394
+ | petrcech | 1 | 0 | 0 |
395
+ | schuft69 | 1 | 0 | 0 |
396
+ | sothix | 1 | 0 | 0 |
397
+ | sw9719 | 1 | 0 | 0 |
398
+ | viq | 1 | 0 | 0 |
@@ -0,0 +1,81 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="760" height="524" viewBox="0 0 760 524" role="img" aria-label="Borg contributors by commit count">
2
+ <style>
3
+ text { font-family: -apple-system, "Segoe UI", Helvetica, Arial, sans-serif }
4
+ .bg { fill: #ffffff }
5
+ .title { font-size: 16px; font-weight: 600; fill: #1f2328 }
6
+ .name { font-size: 12px; fill: #1f2328 }
7
+ .subtitle, .footer, .count { font-size: 11px; fill: #59636e }
8
+ .count { font-size: 12px; text-anchor: end }
9
+ .bar { fill: #00a000 }
10
+ @media (prefers-color-scheme: dark) {
11
+ .bg { fill: #0d1117 }
12
+ .title, .name { fill: #e6edf3 }
13
+ .subtitle, .footer, .count { fill: #9198a1 }
14
+ .bar { fill: #00dd00 }
15
+ }
16
+ </style>
17
+ <rect class="bg" x="0" y="0" width="760" height="524" rx="6"/>
18
+ <text class="title" x="14" y="26">Borg contributors</text>
19
+ <text class="subtitle" x="14" y="44">top 20 of 374 by commits on the master branch</text>
20
+ <text class="name" x="14" y="73">Thomas Waldmann</text>
21
+ <rect class="bar" x="240" y="63" width="436" height="12" rx="2"/>
22
+ <text class="count" x="746" y="73">7,693</text>
23
+ <text class="name" x="14" y="95">Marian Beermann</text>
24
+ <rect class="bar" x="240" y="85" width="65" height="12" rx="2"/>
25
+ <text class="count" x="746" y="95">1,140</text>
26
+ <text class="name" x="14" y="117">Jonas Borgström</text>
27
+ <rect class="bar" x="240" y="107" width="32" height="12" rx="2"/>
28
+ <text class="count" x="746" y="117">560</text>
29
+ <text class="name" x="14" y="139">Antoine Beaupré</text>
30
+ <rect class="bar" x="240" y="129" width="16" height="12" rx="2"/>
31
+ <text class="count" x="746" y="139">285</text>
32
+ <text class="name" x="14" y="161">Mrityunjay Raj</text>
33
+ <rect class="bar" x="240" y="151" width="15" height="12" rx="2"/>
34
+ <text class="count" x="746" y="161">260</text>
35
+ <text class="name" x="14" y="183">Andrey Bienkowski</text>
36
+ <rect class="bar" x="240" y="173" width="4" height="12" rx="2"/>
37
+ <text class="count" x="746" y="183">72</text>
38
+ <text class="name" x="14" y="205">Ted Lawson</text>
39
+ <rect class="bar" x="240" y="195" width="4" height="12" rx="2"/>
40
+ <text class="count" x="746" y="205">71</text>
41
+ <text class="name" x="14" y="227">Thalian</text>
42
+ <rect class="bar" x="240" y="217" width="4" height="12" rx="2"/>
43
+ <text class="count" x="746" y="227">63</text>
44
+ <text class="name" x="14" y="249">Martin Hostettler</text>
45
+ <rect class="bar" x="240" y="239" width="3" height="12" rx="2"/>
46
+ <text class="count" x="746" y="249">46</text>
47
+ <text class="name" x="14" y="271">Milkey Mouse</text>
48
+ <rect class="bar" x="240" y="261" width="2" height="12" rx="2"/>
49
+ <text class="count" x="746" y="271">42</text>
50
+ <text class="name" x="14" y="293">Dan Christensen</text>
51
+ <rect class="bar" x="240" y="283" width="2" height="12" rx="2"/>
52
+ <text class="count" x="746" y="293">40</text>
53
+ <text class="name" x="14" y="315">Rayyan Ansari</text>
54
+ <rect class="bar" x="240" y="305" width="2" height="12" rx="2"/>
55
+ <text class="count" x="746" y="315">34</text>
56
+ <text class="name" x="14" y="337">Abdel-Rahman</text>
57
+ <rect class="bar" x="240" y="327" width="2" height="12" rx="2"/>
58
+ <text class="count" x="746" y="337">30</text>
59
+ <text class="name" x="14" y="359">Manuel Riel</text>
60
+ <rect class="bar" x="240" y="349" width="2" height="12" rx="2"/>
61
+ <text class="count" x="746" y="359">28</text>
62
+ <text class="name" x="14" y="381">Nehalenniæ Oudin</text>
63
+ <rect class="bar" x="240" y="371" width="2" height="12" rx="2"/>
64
+ <text class="count" x="746" y="381">26</text>
65
+ <text class="name" x="14" y="403">anarcat</text>
66
+ <rect class="bar" x="240" y="393" width="2" height="12" rx="2"/>
67
+ <text class="count" x="746" y="403">24</text>
68
+ <text class="name" x="14" y="425">Hugo Wallenburg</text>
69
+ <rect class="bar" x="240" y="415" width="2" height="12" rx="2"/>
70
+ <text class="count" x="746" y="425">23</text>
71
+ <text class="name" x="14" y="447">Michael Hanselmann</text>
72
+ <rect class="bar" x="240" y="437" width="2" height="12" rx="2"/>
73
+ <text class="count" x="746" y="447">22</text>
74
+ <text class="name" x="14" y="469">Björn Ketelaars</text>
75
+ <rect class="bar" x="240" y="459" width="2" height="12" rx="2"/>
76
+ <text class="count" x="746" y="469">17</text>
77
+ <text class="name" x="14" y="491">SanskritFritz</text>
78
+ <rect class="bar" x="240" y="481" width="2" height="12" rx="2"/>
79
+ <text class="count" x="746" y="491">17</text>
80
+ <text class="footer" x="14" y="514">generated by scripts/fame.py using git-fame</text>
81
+ </svg>