duplicity 2.2.3__tar.gz → 2.2.4__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 (331) hide show
  1. duplicity-2.2.4/.gitchangelog.rc +301 -0
  2. duplicity-2.2.4/.gitignore +44 -0
  3. duplicity-2.2.4/.gitlab-ci.yml +208 -0
  4. {duplicity-2.2.3 → duplicity-2.2.4}/CHANGELOG.md +134 -0
  5. duplicity-2.2.4/Makefile +60 -0
  6. duplicity-2.2.4/PKG-INFO +112 -0
  7. duplicity-2.2.4/README.md +122 -0
  8. duplicity-2.2.4/crowdin.yml +6 -0
  9. duplicity-2.2.4/debian/changelog +5 -0
  10. duplicity-2.2.4/debian/compat +1 -0
  11. duplicity-2.2.4/debian/control +46 -0
  12. duplicity-2.2.4/debian/copyright +33 -0
  13. duplicity-2.2.4/debian/duplicity.sh +8 -0
  14. duplicity-2.2.4/debian/rules +23 -0
  15. duplicity-2.2.4/debian/source/format +1 -0
  16. duplicity-2.2.4/docs/Makefile +28 -0
  17. duplicity-2.2.4/docs/README.md +18 -0
  18. duplicity-2.2.4/docs/conf.py +108 -0
  19. duplicity-2.2.4/docs/index.rst +28 -0
  20. duplicity-2.2.4/docs/modules.rst +8 -0
  21. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/__init__.py +2 -2
  22. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backend.py +1 -1
  23. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/_testbackend.py +6 -2
  24. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/onedrivebackend.py +3 -1
  25. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/webdavbackend.py +0 -4
  26. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/cli_data.py +0 -42
  27. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/cli_main.py +4 -37
  28. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/cli_util.py +21 -10
  29. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/dup_main.py +2 -2
  30. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/gpg.py +11 -2
  31. duplicity-2.2.4/duplicity.egg-info/PKG-INFO +112 -0
  32. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity.egg-info/SOURCES.txt +4 -0
  33. duplicity-2.2.4/duplicity.egg-info/requires.txt +107 -0
  34. {duplicity-2.2.3 → duplicity-2.2.4}/man/duplicity.1 +1 -1
  35. {duplicity-2.2.3 → duplicity-2.2.4}/po/af_ZA/duplicity.mo +0 -0
  36. {duplicity-2.2.3 → duplicity-2.2.4}/po/af_ZA.po +59 -63
  37. {duplicity-2.2.3 → duplicity-2.2.4}/po/ar_SA/duplicity.mo +0 -0
  38. {duplicity-2.2.3 → duplicity-2.2.4}/po/ar_SA.po +59 -63
  39. {duplicity-2.2.3 → duplicity-2.2.4}/po/ca_ES/duplicity.mo +0 -0
  40. {duplicity-2.2.3 → duplicity-2.2.4}/po/ca_ES.po +59 -63
  41. {duplicity-2.2.3 → duplicity-2.2.4}/po/cs_CZ/duplicity.mo +0 -0
  42. {duplicity-2.2.3 → duplicity-2.2.4}/po/cs_CZ.po +59 -63
  43. {duplicity-2.2.3 → duplicity-2.2.4}/po/da_DK/duplicity.mo +0 -0
  44. {duplicity-2.2.3 → duplicity-2.2.4}/po/da_DK.po +59 -63
  45. {duplicity-2.2.3 → duplicity-2.2.4}/po/de_AT/duplicity.mo +0 -0
  46. {duplicity-2.2.3 → duplicity-2.2.4}/po/de_AT.po +59 -63
  47. {duplicity-2.2.3 → duplicity-2.2.4}/po/de_DE/duplicity.mo +0 -0
  48. {duplicity-2.2.3 → duplicity-2.2.4}/po/de_DE.po +59 -63
  49. {duplicity-2.2.3 → duplicity-2.2.4}/po/duplicity.pot +58 -65
  50. {duplicity-2.2.3 → duplicity-2.2.4}/po/el_GR/duplicity.mo +0 -0
  51. {duplicity-2.2.3 → duplicity-2.2.4}/po/el_GR.po +59 -63
  52. {duplicity-2.2.3 → duplicity-2.2.4}/po/en_AU/duplicity.mo +0 -0
  53. {duplicity-2.2.3 → duplicity-2.2.4}/po/en_AU.po +59 -63
  54. {duplicity-2.2.3 → duplicity-2.2.4}/po/en_GB/duplicity.mo +0 -0
  55. {duplicity-2.2.3 → duplicity-2.2.4}/po/en_GB.po +59 -63
  56. {duplicity-2.2.3 → duplicity-2.2.4}/po/en_PR/duplicity.mo +0 -0
  57. {duplicity-2.2.3 → duplicity-2.2.4}/po/en_PR.po +59 -63
  58. {duplicity-2.2.3 → duplicity-2.2.4}/po/en_US/duplicity.mo +0 -0
  59. {duplicity-2.2.3 → duplicity-2.2.4}/po/en_US.po +59 -63
  60. {duplicity-2.2.3/po/es_ES → duplicity-2.2.4/po/es_EM}/duplicity.mo +0 -0
  61. {duplicity-2.2.3 → duplicity-2.2.4}/po/es_EM.po +59 -63
  62. {duplicity-2.2.3/po/es_EM → duplicity-2.2.4/po/es_ES}/duplicity.mo +0 -0
  63. {duplicity-2.2.3 → duplicity-2.2.4}/po/es_ES.po +59 -63
  64. {duplicity-2.2.3 → duplicity-2.2.4}/po/es_MX/duplicity.mo +0 -0
  65. {duplicity-2.2.3 → duplicity-2.2.4}/po/es_MX.po +59 -63
  66. {duplicity-2.2.3 → duplicity-2.2.4}/po/es_PR/duplicity.mo +0 -0
  67. {duplicity-2.2.3 → duplicity-2.2.4}/po/es_PR.po +59 -63
  68. {duplicity-2.2.3 → duplicity-2.2.4}/po/es_US/duplicity.mo +0 -0
  69. {duplicity-2.2.3 → duplicity-2.2.4}/po/es_US.po +59 -63
  70. {duplicity-2.2.3 → duplicity-2.2.4}/po/fi_FI/duplicity.mo +0 -0
  71. {duplicity-2.2.3 → duplicity-2.2.4}/po/fi_FI.po +59 -63
  72. {duplicity-2.2.3 → duplicity-2.2.4}/po/fr_FR/duplicity.mo +0 -0
  73. {duplicity-2.2.3 → duplicity-2.2.4}/po/fr_FR.po +59 -63
  74. {duplicity-2.2.3 → duplicity-2.2.4}/po/he_IL/duplicity.mo +0 -0
  75. {duplicity-2.2.3 → duplicity-2.2.4}/po/he_IL.po +59 -63
  76. {duplicity-2.2.3 → duplicity-2.2.4}/po/hu_HU/duplicity.mo +0 -0
  77. {duplicity-2.2.3 → duplicity-2.2.4}/po/hu_HU.po +59 -63
  78. {duplicity-2.2.3 → duplicity-2.2.4}/po/it_IT/duplicity.mo +0 -0
  79. {duplicity-2.2.3 → duplicity-2.2.4}/po/it_IT.po +59 -63
  80. {duplicity-2.2.3 → duplicity-2.2.4}/po/ja_JP/duplicity.mo +0 -0
  81. {duplicity-2.2.3 → duplicity-2.2.4}/po/ja_JP.po +59 -63
  82. {duplicity-2.2.3 → duplicity-2.2.4}/po/ko_KR/duplicity.mo +0 -0
  83. {duplicity-2.2.3 → duplicity-2.2.4}/po/ko_KR.po +59 -63
  84. {duplicity-2.2.3 → duplicity-2.2.4}/po/nl_BE/duplicity.mo +0 -0
  85. {duplicity-2.2.3 → duplicity-2.2.4}/po/nl_BE.po +59 -63
  86. {duplicity-2.2.3 → duplicity-2.2.4}/po/nl_NL/duplicity.mo +0 -0
  87. {duplicity-2.2.3 → duplicity-2.2.4}/po/nl_NL.po +59 -63
  88. {duplicity-2.2.3 → duplicity-2.2.4}/po/nl_SR/duplicity.mo +0 -0
  89. {duplicity-2.2.3 → duplicity-2.2.4}/po/nl_SR.po +59 -63
  90. {duplicity-2.2.3 → duplicity-2.2.4}/po/no_NO/duplicity.mo +0 -0
  91. {duplicity-2.2.3 → duplicity-2.2.4}/po/no_NO.po +59 -63
  92. {duplicity-2.2.3 → duplicity-2.2.4}/po/pl_PL/duplicity.mo +0 -0
  93. {duplicity-2.2.3 → duplicity-2.2.4}/po/pl_PL.po +59 -63
  94. {duplicity-2.2.3 → duplicity-2.2.4}/po/pt_BR/duplicity.mo +0 -0
  95. {duplicity-2.2.3 → duplicity-2.2.4}/po/pt_BR.po +59 -63
  96. {duplicity-2.2.3 → duplicity-2.2.4}/po/pt_PT/duplicity.mo +0 -0
  97. {duplicity-2.2.3 → duplicity-2.2.4}/po/pt_PT.po +59 -63
  98. {duplicity-2.2.3 → duplicity-2.2.4}/po/ro_RO/duplicity.mo +0 -0
  99. {duplicity-2.2.3 → duplicity-2.2.4}/po/ro_RO.po +59 -63
  100. {duplicity-2.2.3 → duplicity-2.2.4}/po/ru_BY/duplicity.mo +0 -0
  101. {duplicity-2.2.3 → duplicity-2.2.4}/po/ru_BY.po +59 -63
  102. {duplicity-2.2.3 → duplicity-2.2.4}/po/ru_MD/duplicity.mo +0 -0
  103. {duplicity-2.2.3 → duplicity-2.2.4}/po/ru_MD.po +59 -63
  104. {duplicity-2.2.3 → duplicity-2.2.4}/po/ru_RU/duplicity.mo +0 -0
  105. {duplicity-2.2.3 → duplicity-2.2.4}/po/ru_RU.po +59 -63
  106. {duplicity-2.2.3 → duplicity-2.2.4}/po/ru_UA/duplicity.mo +0 -0
  107. {duplicity-2.2.3 → duplicity-2.2.4}/po/ru_UA.po +59 -63
  108. {duplicity-2.2.3 → duplicity-2.2.4}/po/sr_SP/duplicity.mo +0 -0
  109. {duplicity-2.2.3 → duplicity-2.2.4}/po/sr_SP.po +59 -63
  110. {duplicity-2.2.3 → duplicity-2.2.4}/po/sv_SE/duplicity.mo +0 -0
  111. {duplicity-2.2.3 → duplicity-2.2.4}/po/sv_SE.po +59 -63
  112. {duplicity-2.2.3 → duplicity-2.2.4}/po/tr_TR/duplicity.mo +0 -0
  113. {duplicity-2.2.3 → duplicity-2.2.4}/po/tr_TR.po +59 -63
  114. {duplicity-2.2.3 → duplicity-2.2.4}/po/uk_UA/duplicity.mo +0 -0
  115. {duplicity-2.2.3 → duplicity-2.2.4}/po/uk_UA.po +59 -63
  116. {duplicity-2.2.3 → duplicity-2.2.4}/po/vi_VN/duplicity.mo +0 -0
  117. {duplicity-2.2.3 → duplicity-2.2.4}/po/vi_VN.po +59 -63
  118. {duplicity-2.2.3 → duplicity-2.2.4}/po/zh_CN/duplicity.mo +0 -0
  119. {duplicity-2.2.3 → duplicity-2.2.4}/po/zh_CN.po +59 -63
  120. {duplicity-2.2.3 → duplicity-2.2.4}/po/zh_HK/duplicity.mo +0 -0
  121. {duplicity-2.2.3 → duplicity-2.2.4}/po/zh_HK.po +59 -63
  122. {duplicity-2.2.3 → duplicity-2.2.4}/po/zh_MO/duplicity.mo +0 -0
  123. {duplicity-2.2.3 → duplicity-2.2.4}/po/zh_MO.po +59 -63
  124. {duplicity-2.2.3 → duplicity-2.2.4}/po/zh_SG/duplicity.mo +0 -0
  125. {duplicity-2.2.3 → duplicity-2.2.4}/po/zh_SG.po +59 -63
  126. {duplicity-2.2.3 → duplicity-2.2.4}/po/zh_TW/duplicity.mo +0 -0
  127. {duplicity-2.2.3 → duplicity-2.2.4}/po/zh_TW.po +59 -63
  128. {duplicity-2.2.3 → duplicity-2.2.4}/pyproject.toml +24 -10
  129. duplicity-2.2.4/readthedocs.yaml +28 -0
  130. duplicity-2.2.4/requirements.txt +363 -0
  131. {duplicity-2.2.3 → duplicity-2.2.4}/setup.cfg +1 -0
  132. {duplicity-2.2.3 → duplicity-2.2.4}/setup.py +30 -83
  133. {duplicity-2.2.3 → duplicity-2.2.4}/snap/snapcraft.yaml +1 -1
  134. duplicity-2.2.4/testing/docker/.env +28 -0
  135. duplicity-2.2.4/testing/docker/.gitignore +3 -0
  136. duplicity-2.2.4/testing/docker/build.sh +36 -0
  137. duplicity-2.2.4/testing/docker/docker-compose.yml +76 -0
  138. duplicity-2.2.4/testing/docker/duplicity_test/Dockerfile +122 -0
  139. duplicity-2.2.4/testing/docker/ftp_server/Dockerfile +32 -0
  140. duplicity-2.2.4/testing/docker/ftp_server/pureftpd.passwd +1 -0
  141. duplicity-2.2.4/testing/docker/hello-world-master.zip +0 -0
  142. duplicity-2.2.4/testing/docker/id_rsa +27 -0
  143. duplicity-2.2.4/testing/docker/id_rsa.pub +1 -0
  144. duplicity-2.2.4/testing/docker/push.sh +30 -0
  145. duplicity-2.2.4/testing/docker/setup.sh +29 -0
  146. duplicity-2.2.4/testing/docker/ssh_server/Dockerfile +65 -0
  147. duplicity-2.2.4/testing/docker/teardown.sh +28 -0
  148. duplicity-2.2.4/testing/docker/testit.sh +30 -0
  149. duplicity-2.2.4/testing/manual/__init__.py +20 -0
  150. duplicity-2.2.4/testing/manual/auto-ctrl-c-test.sh +61 -0
  151. duplicity-2.2.4/testing/manual/backendtest.py +237 -0
  152. duplicity-2.2.4/testing/manual/manual-ctrl-c-test.sh +74 -0
  153. duplicity-2.2.4/testing/manual/rootfiles.tar.gz +0 -0
  154. duplicity-2.2.4/testing/manual/roottest.py +132 -0
  155. duplicity-2.2.4/testing/manual/run-coverage.sh +60 -0
  156. duplicity-2.2.4/testing/manual/test-prefix-install.sh +15 -0
  157. duplicity-2.2.4/testing/manual/test-venv-install.sh +22 -0
  158. duplicity-2.2.4/testing/manual/test_config.py.tmpl +69 -0
  159. duplicity-2.2.4/testing/regression/bug1526557.sh +9 -0
  160. duplicity-2.2.4/testing/regression/bug1846678.sh +10 -0
  161. duplicity-2.2.4/testing/regression/bug1860200.sh +47 -0
  162. duplicity-2.2.4/testing/regression/bug487720.sh +36 -0
  163. duplicity-2.2.4/testing/regression/bug930151.sh +23 -0
  164. duplicity-2.2.4/testing/regression/issue100.sh +17 -0
  165. duplicity-2.2.4/testing/regression/issue103.json +16 -0
  166. duplicity-2.2.4/testing/regression/issue103.sh +64 -0
  167. duplicity-2.2.4/testing/regression/issue110-setup.sh +24 -0
  168. duplicity-2.2.4/testing/regression/issue110-test.sh +16 -0
  169. duplicity-2.2.4/testing/regression/issue125.sh +58 -0
  170. duplicity-2.2.4/testing/regression/issue147.sh +12 -0
  171. duplicity-2.2.4/testing/regression/issue25.json +10 -0
  172. duplicity-2.2.4/testing/regression/issue25.sh +17 -0
  173. duplicity-2.2.4/testing/regression/issue26.sh +21 -0
  174. duplicity-2.2.4/testing/regression/issue683.sh +16 -0
  175. duplicity-2.2.4/testing/regression/issue725.sh +32 -0
  176. duplicity-2.2.4/testing/regression/issue73.env +7 -0
  177. duplicity-2.2.4/testing/regression/issue73.sh +16 -0
  178. duplicity-2.2.4/testing/regression/issue781.json +10 -0
  179. duplicity-2.2.4/testing/regression/issue781.sh +28 -0
  180. duplicity-2.2.4/testing/regression/issue79.json +10 -0
  181. duplicity-2.2.4/testing/regression/issue79.sh +28 -0
  182. duplicity-2.2.4/testing/regression/issue98.sh +54 -0
  183. {duplicity-2.2.3 → duplicity-2.2.4}/testing/test_code.py +3 -0
  184. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_cli_main.py +0 -6
  185. duplicity-2.2.4/tools/installpyenv +47 -0
  186. duplicity-2.2.4/tools/installpythons +67 -0
  187. duplicity-2.2.4/tools/installsnap +56 -0
  188. duplicity-2.2.4/tools/makechangelog +46 -0
  189. duplicity-2.2.4/tools/makepip +38 -0
  190. duplicity-2.2.4/tools/makesnap +60 -0
  191. duplicity-2.2.4/tools/pushpip +45 -0
  192. duplicity-2.2.4/tools/pushsnap +48 -0
  193. duplicity-2.2.4/tools/release-prep +78 -0
  194. duplicity-2.2.4/tools/testpip +103 -0
  195. duplicity-2.2.4/tools/testsnap +60 -0
  196. duplicity-2.2.3/PKG-INFO +0 -5
  197. duplicity-2.2.3/README.md +0 -58
  198. duplicity-2.2.3/duplicity.egg-info/PKG-INFO +0 -5
  199. duplicity-2.2.3/requirements.txt +0 -61
  200. {duplicity-2.2.3 → duplicity-2.2.4}/AUTHORS.md +0 -0
  201. {duplicity-2.2.3 → duplicity-2.2.4}/COPYING +0 -0
  202. {duplicity-2.2.3 → duplicity-2.2.4}/README-LOG.md +0 -0
  203. {duplicity-2.2.3 → duplicity-2.2.4}/README-REPO.md +0 -0
  204. {duplicity-2.2.3 → duplicity-2.2.4}/README-SNAP.md +0 -0
  205. {duplicity-2.2.3 → duplicity-2.2.4}/README-TESTING.md +0 -0
  206. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/__main__.py +0 -0
  207. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/_librsyncmodule.c +0 -0
  208. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/argparse311.py +0 -0
  209. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/asyncscheduler.py +0 -0
  210. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/README +0 -0
  211. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/__init__.py +0 -0
  212. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/_cf_cloudfiles.py +0 -0
  213. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/_cf_pyrax.py +0 -0
  214. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/adbackend.py +0 -0
  215. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/azurebackend.py +0 -0
  216. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/b2backend.py +0 -0
  217. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/boxbackend.py +0 -0
  218. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/cfbackend.py +0 -0
  219. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/dpbxbackend.py +0 -0
  220. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/gdocsbackend.py +0 -0
  221. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/gdrivebackend.py +0 -0
  222. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/giobackend.py +0 -0
  223. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/hsibackend.py +0 -0
  224. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/hubicbackend.py +0 -0
  225. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/idrivedbackend.py +0 -0
  226. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/imapbackend.py +0 -0
  227. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/jottacloudbackend.py +0 -0
  228. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/lftpbackend.py +0 -0
  229. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/localbackend.py +0 -0
  230. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/mediafirebackend.py +0 -0
  231. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/megabackend.py +0 -0
  232. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/megav2backend.py +0 -0
  233. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/megav3backend.py +0 -0
  234. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/multibackend.py +0 -0
  235. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/ncftpbackend.py +0 -0
  236. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/par2backend.py +0 -0
  237. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/pcabackend.py +0 -0
  238. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/pydrivebackend.py +0 -0
  239. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/pyrax_identity/__init__.py +0 -0
  240. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/pyrax_identity/hubic.py +0 -0
  241. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/rclonebackend.py +0 -0
  242. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/rsyncbackend.py +0 -0
  243. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/s3_boto3_backend.py +0 -0
  244. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/slatebackend.py +0 -0
  245. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/ssh_paramiko_backend.py +0 -0
  246. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/ssh_pexpect_backend.py +0 -0
  247. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/swiftbackend.py +0 -0
  248. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/sxbackend.py +0 -0
  249. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/tahoebackend.py +0 -0
  250. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/backends/xorrisobackend.py +0 -0
  251. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/cached_ops.py +0 -0
  252. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/config.py +0 -0
  253. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/diffdir.py +0 -0
  254. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/dup_collections.py +0 -0
  255. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/dup_tarfile.py +0 -0
  256. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/dup_temp.py +0 -0
  257. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/dup_threading.py +0 -0
  258. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/dup_time.py +0 -0
  259. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/errors.py +0 -0
  260. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/file_naming.py +0 -0
  261. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/filechunkio.py +0 -0
  262. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/globmatch.py +0 -0
  263. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/gpginterface.py +0 -0
  264. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/lazy.py +0 -0
  265. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/librsync.py +0 -0
  266. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/log.py +0 -0
  267. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/manifest.py +0 -0
  268. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/patchdir.py +0 -0
  269. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/path.py +0 -0
  270. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/progress.py +0 -0
  271. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/robust.py +0 -0
  272. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/selection.py +0 -0
  273. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/statistics.py +0 -0
  274. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/tempdir.py +0 -0
  275. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity/util.py +0 -0
  276. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity.egg-info/dependency_links.txt +0 -0
  277. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity.egg-info/entry_points.txt +0 -0
  278. {duplicity-2.2.3 → duplicity-2.2.4}/duplicity.egg-info/top_level.txt +0 -0
  279. {duplicity-2.2.3 → duplicity-2.2.4}/po/LINGUAS +0 -0
  280. {duplicity-2.2.3 → duplicity-2.2.4}/po/Makevars +0 -0
  281. {duplicity-2.2.3 → duplicity-2.2.4}/po/POTFILES.in +0 -0
  282. {duplicity-2.2.3 → duplicity-2.2.4}/po/POTFILES.skip +0 -0
  283. {duplicity-2.2.3 → duplicity-2.2.4}/po/update-pot +0 -0
  284. {duplicity-2.2.3 → duplicity-2.2.4}/snap/local/debug.sh +0 -0
  285. {duplicity-2.2.3 → duplicity-2.2.4}/snap/local/launcher.sh +0 -0
  286. {duplicity-2.2.3 → duplicity-2.2.4}/testing/__init__.py +0 -0
  287. {duplicity-2.2.3 → duplicity-2.2.4}/testing/conftest.py +0 -0
  288. {duplicity-2.2.3 → duplicity-2.2.4}/testing/functional/__init__.py +0 -0
  289. {duplicity-2.2.3 → duplicity-2.2.4}/testing/functional/test_badupload.py +0 -0
  290. {duplicity-2.2.3 → duplicity-2.2.4}/testing/functional/test_cleanup.py +0 -0
  291. {duplicity-2.2.3 → duplicity-2.2.4}/testing/functional/test_final.py +0 -0
  292. {duplicity-2.2.3 → duplicity-2.2.4}/testing/functional/test_log.py +0 -0
  293. {duplicity-2.2.3 → duplicity-2.2.4}/testing/functional/test_restart.py +0 -0
  294. {duplicity-2.2.3 → duplicity-2.2.4}/testing/functional/test_selection.py +0 -0
  295. {duplicity-2.2.3 → duplicity-2.2.4}/testing/functional/test_verify.py +0 -0
  296. {duplicity-2.2.3 → duplicity-2.2.4}/testing/gnupg/README +0 -0
  297. {duplicity-2.2.3 → duplicity-2.2.4}/testing/gnupg/gpg-agent.conf +0 -0
  298. {duplicity-2.2.3 → duplicity-2.2.4}/testing/gnupg/gpg.conf +0 -0
  299. {duplicity-2.2.3 → duplicity-2.2.4}/testing/gnupg/pubring.gpg +0 -0
  300. {duplicity-2.2.3 → duplicity-2.2.4}/testing/gnupg/secring.gpg +0 -0
  301. {duplicity-2.2.3 → duplicity-2.2.4}/testing/gnupg/trustdb.gpg +0 -0
  302. {duplicity-2.2.3 → duplicity-2.2.4}/testing/overrides/__init__.py +0 -0
  303. {duplicity-2.2.3 → duplicity-2.2.4}/testing/overrides/bin/hsi +0 -0
  304. {duplicity-2.2.3 → duplicity-2.2.4}/testing/overrides/bin/lftp +0 -0
  305. {duplicity-2.2.3 → duplicity-2.2.4}/testing/overrides/bin/ncftpget +0 -0
  306. {duplicity-2.2.3 → duplicity-2.2.4}/testing/overrides/bin/ncftpls +0 -0
  307. {duplicity-2.2.3 → duplicity-2.2.4}/testing/overrides/bin/ncftpput +0 -0
  308. {duplicity-2.2.3 → duplicity-2.2.4}/testing/overrides/bin/tahoe +0 -0
  309. {duplicity-2.2.3 → duplicity-2.2.4}/testing/run-tests +0 -0
  310. {duplicity-2.2.3 → duplicity-2.2.4}/testing/testfiles.tar.gz +0 -0
  311. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/__init__.py +0 -0
  312. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_backend.py +0 -0
  313. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_backend_instance.py +0 -0
  314. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_collections.py +0 -0
  315. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_diffdir.py +0 -0
  316. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_dup_temp.py +0 -0
  317. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_dup_time.py +0 -0
  318. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_file_naming.py +0 -0
  319. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_globmatch.py +0 -0
  320. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_gpg.py +0 -0
  321. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_gpginterface.py +0 -0
  322. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_lazy.py +0 -0
  323. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_manifest.py +0 -0
  324. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_patchdir.py +0 -0
  325. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_path.py +0 -0
  326. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_selection.py +0 -0
  327. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_statistics.py +0 -0
  328. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_tarfile.py +0 -0
  329. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_tempdir.py +0 -0
  330. {duplicity-2.2.3 → duplicity-2.2.4}/testing/unit/test_util.py +0 -0
  331. {duplicity-2.2.3 → duplicity-2.2.4}/tox.ini +0 -0
@@ -0,0 +1,301 @@
1
+ # -*- coding: utf-8; mode: python -*-
2
+ ##
3
+ ## Format
4
+ ##
5
+ ## ACTION: [AUDIENCE:] COMMIT_MSG [!TAG ...]
6
+ ##
7
+ ## Description
8
+ ##
9
+ ## ACTION is one of 'chg', 'fix', 'new'
10
+ ##
11
+ ## Is WHAT the change is about.
12
+ ##
13
+ ## 'chg' is for refactor, small improvement, cosmetic changes...
14
+ ## 'fix' is for bug fixes
15
+ ## 'new' is for new features, big improvement
16
+ ##
17
+ ## AUDIENCE is one of 'dev', 'usr', 'pkg', 'test', 'doc'
18
+ ##
19
+ ## Is WHO is concerned by the change.
20
+ ##
21
+ ## 'dev' is for developpers (API changes, refactors...)
22
+ ## 'usr' is for final users (UI changes)
23
+ ## 'pkg' is for packagers (packaging changes)
24
+ ## 'test' is for testers (test only related changes)
25
+ ## 'doc' is for doc guys (doc only changes)
26
+ ##
27
+ ## COMMIT_MSG is ... well ... the commit message itself.
28
+ ##
29
+ ## TAGs are additionnal adjective as 'refactor' 'minor' 'cosmetic'
30
+ ##
31
+ ## They are preceded with a '!' or a '@' (prefer the former, as the
32
+ ## latter is wrongly interpreted in github.) Commonly used tags are:
33
+ ##
34
+ ## 'refactor' is obviously for refactoring code only
35
+ ## 'minor' is for a very meaningless change (a typo, adding a comment)
36
+ ## 'cosmetic' is for cosmetic driven change (re-indentation, 80-col...)
37
+ ## 'wip' is for partial functionality but complete subfunctionality.
38
+ ##
39
+ ## Example:
40
+ ##
41
+ ## new: usr: support of bazaar implemented
42
+ ## chg: re-indentend some lines !cosmetic
43
+ ## new: dev: updated code to be compatible with last version of killer lib.
44
+ ## fix: pkg: updated year of licence coverage.
45
+ ## new: test: added a bunch of test around user usability of feature X.
46
+ ## fix: typo in spelling my name in comment. !minor
47
+ ##
48
+ ## Please note that multi-line commit message are supported, and only the
49
+ ## first line will be considered as the "summary" of the commit message. So
50
+ ## tags, and other rules only applies to the summary. The body of the commit
51
+ ## message will be displayed in the changelog without reformatting.
52
+
53
+
54
+ ##
55
+ ## ``ignore_regexps`` is a line of regexps
56
+ ##
57
+ ## Any commit having its full commit message matching any regexp listed here
58
+ ## will be ignored and won't be reported in the changelog.
59
+ ##
60
+ ignore_regexps = [
61
+ r'@minor', r'!minor',
62
+ r'@cosmetic', r'!cosmetic',
63
+ r'@refactor', r'!refactor',
64
+ r'@wip', r'!wip',
65
+ r'^(.{3,3}\s*:)?\s*[fF]irst commit.?\s*$',
66
+ r'^Launchpad automatic translations update..*$',
67
+ r'^.*LP translations.*$',
68
+ r'^.*New Crowdin updates.*$',
69
+ r'^.*Change version for LP.*$',
70
+ r'^.*Update changelog..*$',
71
+ r'^.*Prep for .*$',
72
+ r'^$', ## ignore commits with empty messages
73
+ ]
74
+
75
+
76
+ ## ``section_regexps`` is a list of 2-tuples associating a string label and a
77
+ ## list of regexp
78
+ ##
79
+ ## Commit messages will be classified in sections thanks to this. Section
80
+ ## titles are the label, and a commit is classified under this section if any
81
+ ## of the regexps associated is matching.
82
+ ##
83
+ ## Please note that ``section_regexps`` will only classify commits and won't
84
+ ## make any changes to the contents. So you'll probably want to go check
85
+ ## ``subject_process`` (or ``body_process``) to do some changes to the subject,
86
+ ## whenever you are tweaking this variable.
87
+ ##
88
+ section_regexps = [
89
+ ('New', [
90
+ r'^new\s*:\s*((dev|usr|pkg|test|doc)\s*:\s*)?([^\n]*)$',
91
+ ]),
92
+ ('Changes', [
93
+ r'^chg\s*:\s*((dev|usr|pkg|test|doc)\s*:\s*)?([^\n]*)$',
94
+ ]),
95
+ ('Fix', [
96
+ r'^fix\s*:\s*((dev|usr|pkg|test|doc)\s*:\s*)?([^\n]*)$',
97
+ ]),
98
+ ('Other', None ## Match all lines
99
+ ),
100
+ ]
101
+
102
+
103
+ ## ``body_process`` is a callable
104
+ ##
105
+ ## This callable will be given the original body and result will
106
+ ## be used in the changelog.
107
+ ##
108
+ ## Available constructs are:
109
+ ##
110
+ ## - any python callable that take one txt argument and return txt argument.
111
+ ##
112
+ ## - ReSub(pattern, replacement): will apply regexp substitution.
113
+ ##
114
+ ## - Indent(chars=" "): will indent the text with the prefix
115
+ ## Please remember that template engines gets also to modify the text and
116
+ ## will usually indent themselves the text if needed.
117
+ ##
118
+ ## - Wrap(regexp=r"\n\n"): re-wrap text in separate paragraph to fill 80-Columns
119
+ ##
120
+ ## - noop: do nothing
121
+ ##
122
+ ## - ucfirst: ensure the first letter is uppercase.
123
+ ## (usually used in the ``subject_process`` pipeline)
124
+ ##
125
+ ## - final_dot: ensure text finishes with a dot
126
+ ## (usually used in the ``subject_process`` pipeline)
127
+ ##
128
+ ## - strip: remove any spaces before or after the content of the string
129
+ ##
130
+ ## - SetIfEmpty(msg="No commit message."): will set the text to
131
+ ## whatever given ``msg`` if the current text is empty.
132
+ ##
133
+ ## Additionally, you can `pipe` the provided filters, for instance:
134
+ # body_process = Wrap(regexp=r'\n(?=\w+\s*:)') | Indent(chars=" ")
135
+ # body_process = Wrap(regexp=r'\n(?=\w+\s*:)')
136
+ # body_process = noop
137
+ body_process = (strip |
138
+ ReSub(r'^\* ([A-Za-z])', r'\1') |
139
+ ReSub(r'((^|\n)[A-Z]\w+(-\w+)*: .*(\n\s+.*)*)+$', r'') |
140
+ ReSub(r'\[.*\s+skip\]', r'') |
141
+ ReSub(r'\[skip\s+.*\]', r'') |
142
+ Indent(chars=" "))
143
+
144
+
145
+ ## ``subject_process`` is a callable
146
+ ##
147
+ ## This callable will be given the original subject and result will
148
+ ## be used in the changelog.
149
+ ##
150
+ ## Available constructs are those listed in ``body_process`` doc.
151
+ subject_process = (strip |
152
+ ReSub(r'^[#*-]\s+([A-Za-z])', r'\1') |
153
+ ReSub(r'~', r'\~') |
154
+ ReSub(r'_', r'\_') |
155
+ ReSub(r'^(chg|fix|new)\s*:\s*((dev|usr|pkg|test|doc)\s*:\s*)?([^\n@]*)(@[a-z]+\s+)*$', r'\4') |
156
+ SetIfEmpty("No commit message.") |
157
+ Indent(chars=" ") |
158
+ Wrap(regexp=r"\n\n") |
159
+ ucfirst |
160
+ final_dot)
161
+
162
+
163
+ ## ``tag_filter_regexp`` is a regexp
164
+ ##
165
+ ## Tags that will be used for the changelog must match this regexp.
166
+ ##
167
+ tag_filter_regexp = r'^rel.[0-9]+(\.[0-9]+){2}((a|b|rc|x)[0-9]*)??$'
168
+
169
+ ## ``unreleased_version_label`` is a string or a callable that outputs a string
170
+ ##
171
+ ## This label will be used as the changelog Title of the last set of changes
172
+ ## between last valid tag and HEAD if any.
173
+ unreleased_version_label = "(unreleased)"
174
+
175
+
176
+ ## ``output_engine`` is a callable
177
+ ##
178
+ ## This will change the output format of the generated changelog file
179
+ ##
180
+ ## Available choices are:
181
+ ##
182
+ ## - rest_py
183
+ ##
184
+ ## Legacy pure python engine, outputs ReSTructured text.
185
+ ## This is the default.
186
+ ##
187
+ ## - mustache(<template_name>)
188
+ ##
189
+ ## Template name could be any of the available templates in
190
+ ## ``templates/mustache/*.tpl``.
191
+ ## Requires python package ``pystache``.
192
+ ## Examples:
193
+ ## - mustache("markdown")
194
+ ## - mustache("restructuredtext")
195
+ ##
196
+ ## - makotemplate(<template_name>)
197
+ ##
198
+ ## Template name could be any of the available templates in
199
+ ## ``templates/mako/*.tpl``.
200
+ ## Requires python package ``mako``.
201
+ ## Examples:
202
+ ## - makotemplate("restructuredtext")
203
+ ##
204
+ #output_engine = rest_py
205
+ #output_engine = mustache("restructuredtext")
206
+ output_engine = mustache("markdown")
207
+ #output_engine = makotemplate("restructuredtext")
208
+
209
+
210
+ ## ``include_merge`` is a boolean
211
+ ##
212
+ ## This option tells git-log whether to include merge commits in the log.
213
+ ## The default is to include them.
214
+ include_merge = False
215
+
216
+
217
+ ## ``log_encoding`` is a string identifier
218
+ ##
219
+ ## This option tells gitchangelog what encoding is outputed by ``git log``.
220
+ ## The default is to be clever about it: it checks ``git config`` for
221
+ ## ``i18n.logOutputEncoding``, and if not found will default to git's own
222
+ ## default: ``utf-8``.
223
+ log_encoding = 'utf-8'
224
+
225
+
226
+ ## ``publish`` is a callable
227
+ ##
228
+ ## Sets what ``gitchangelog`` should do with the output generated by
229
+ ## the output engine. ``publish`` is a callable taking one argument
230
+ ## that is an interator on lines from the output engine.
231
+ ##
232
+ ## Some helper callable are provided:
233
+ ##
234
+ ## Available choices are:
235
+ ##
236
+ ## - stdout
237
+ ##
238
+ ## Outputs directly to standard output
239
+ ## (This is the default)
240
+ ##
241
+ ## - FileInsertAtFirstRegexMatch(file, pattern, idx=lamda m: m.start())
242
+ ##
243
+ ## Creates a callable that will parse given file for the given
244
+ ## regex pattern and will insert the output in the file.
245
+ ## ``idx`` is a callable that receive the matching object and
246
+ ## must return a integer index point where to insert the
247
+ ## the output in the file. Default is to return the position of
248
+ ## the start of the matched string.
249
+ ##
250
+ ## - FileRegexSubst(file, pattern, replace, flags)
251
+ ##
252
+ ## Apply a replace inplace in the given file. Your regex pattern must
253
+ ## take care of everything and might be more complex. Check the README
254
+ ## for a complete copy-pastable example.
255
+ ##
256
+ # publish = FileInsertIntoFirstRegexMatch(
257
+ # "CHANGELOG.rst",
258
+ # r'/(?P<rev>[0-9]+\.[0-9]+(\.[0-9]+)?)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n/',
259
+ # idx=lambda m: m.start(1)
260
+ # )
261
+ publish = stdout
262
+
263
+
264
+ ## ``revs`` is a list of callable or a list of string
265
+ ##
266
+ ## callable will be called to resolve as strings and allow dynamical
267
+ ## computation of these. The result will be used as revisions for
268
+ ## gitchangelog (as if directly stated on the command line). This allows
269
+ ## to filter exaclty which commits will be read by gitchangelog.
270
+ ##
271
+ ## To get a full documentation on the format of these strings, please
272
+ ## refer to the ``git rev-list`` arguments. There are many examples.
273
+ ##
274
+ ## Using callables is especially useful, for instance, if you
275
+ ## are using gitchangelog to generate incrementally your changelog.
276
+ ##
277
+ ## Some helpers are provided, you can use them::
278
+ ##
279
+ ## - FileFirstRegexMatch(file, pattern): will return a callable that will
280
+ ## return the first string match for the given pattern in the given file.
281
+ ## If you use named sub-patterns in your regex pattern, it'll output only
282
+ ## the string matching the regex pattern named "rev".
283
+ ##
284
+ ## - Caret(rev): will return the rev prefixed by a "^", which is a
285
+ ## way to remove the given revision and all its ancestor.
286
+ ##
287
+ ## Please note that if you provide a rev-list on the command line, it'll
288
+ ## replace this value (which will then be ignored).
289
+ ##
290
+ ## If empty, then ``gitchangelog`` will act as it had to generate a full
291
+ ## changelog.
292
+ ##
293
+ ## The default is to use all commits to make the changelog.
294
+ #revs = ["^1.0.3", ]
295
+ #revs = [
296
+ # Caret(
297
+ # FileFirstRegexMatch(
298
+ # "CHANGELOG.rst",
299
+ # r"(?P<rev>[0-9]+\.[0-9]+(\.[0-9]+)?)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n")),
300
+ # "HEAD"
301
+ #]
@@ -0,0 +1,44 @@
1
+ *.egg
2
+ *.log
3
+ *.pyc
4
+ *.so
5
+ *.swp
6
+ .DS_Store
7
+ ._.DS_Store
8
+ .cache
9
+ .coverage*
10
+ .devcontainer/
11
+ .eggs
12
+ .idea/
13
+ .project
14
+ .pydevproject
15
+ .pytest_cache/
16
+ .run/
17
+ .secrets
18
+ .settings
19
+ .tox/
20
+ .vscode
21
+ __pycache__/
22
+ build/
23
+ config.py
24
+ dist/
25
+ docs/_build
26
+ docs/duplicity.*
27
+ docs/testing.*
28
+ duplicity-venv
29
+ duplicity.egg-info/
30
+ duplicity.spec
31
+ filters.txt
32
+ htmlcov
33
+ mprofile_*.dat
34
+ po/duplicity.pot-e
35
+ random_seed
36
+ report.xml
37
+ testfiles/
38
+ testing/gnupg/.gpg-v21-migrated
39
+ testing/gnupg/S.*
40
+ testing/gnupg/private-keys-v1.d/
41
+ testing/manual/test_config.py.tmpl
42
+ venv*/
43
+ wheelhouse/
44
+ /install-venv.sh
@@ -0,0 +1,208 @@
1
+ # This file is part of duplicity.
2
+ #
3
+ # Copyright 2022 Nils Tekampe <nils@tekampe.org>,
4
+ # Kenneth Loafman <kenneth@loafman.com>,
5
+ # Aaron Whitehouse <code@whitehouse.kiwi.nz>,
6
+ # Edgar Soldin <https://soldin.de>
7
+ #
8
+ # Duplicity is free software; you can redistribute it and/or modify it
9
+ # under the terms of the GNU General Public License as published by the
10
+ # Free Software Foundation; either version 2 of the License, or (at your
11
+ # option) any later version.
12
+ #
13
+ # Duplicity is distributed in the hope that it will be useful, but
14
+ # WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
+ # General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with duplicity; if not, write to the Free Software Foundation,
20
+ # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
+
22
+ workflow:
23
+ rules:
24
+ # don't trigger on tag push only
25
+ - if: $CI_COMMIT_TAG
26
+ when: never
27
+ # merge requests trigger push as well so only run on push
28
+ - if: $CI_PIPELINE_SOURCE == "push"
29
+ when: always
30
+ - when: never
31
+
32
+ .test-template: &test-template
33
+ stage: test
34
+ rules:
35
+ - if: $CI_COMMIT_MESSAGE =~ /\[skip[ _-]tests?\]/i || $SKIP_TESTS
36
+ allow_failure: true
37
+ when: manual
38
+ - changes:
39
+ - .gitlab-ci.yml
40
+ - duplicity/**/*
41
+ - pyproject.toml
42
+ - requirements.dev
43
+ - requirements.txt
44
+ - setup.*
45
+ - testing/**/*
46
+ when: always
47
+ - when: never
48
+ before_script:
49
+ # Set locale to prevent UTF-8 errors
50
+ - export LANG=C.UTF-8
51
+ - export LC_ALL=C.UTF-8
52
+ - apt-get update
53
+ - apt-get install -y build-essential git intltool lftp librsync-dev
54
+ libffi-dev libssl-dev openssl par2 rdiff tzdata
55
+
56
+ variables:
57
+ # Cache local items
58
+ PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
59
+ # Set to non-interactive so no tzdata prompt
60
+ DEBIAN_FRONTEND: "noninteractive"
61
+ # Signal we are running on GitLab CI
62
+ NON_NATIVE: "true"
63
+
64
+ #stages:
65
+ # - test
66
+ # - deploy
67
+
68
+ default:
69
+ interruptible: true
70
+
71
+ code:
72
+ <<: *test-template
73
+ image: python:3.12
74
+ stage: test
75
+ script:
76
+ - python3 -m pip install -r requirements.txt
77
+ - python3 -m pip install -r requirements.dev
78
+ - python3 ./setup.py build_ext
79
+ - pytest testing/test_code.py
80
+ allow_failure: true
81
+
82
+ py38:
83
+ <<: *test-template
84
+ image: python:3.8
85
+ stage: test
86
+ script:
87
+ - python3 -m pip install -r requirements.txt
88
+ - python3 -m pip install -r requirements.dev
89
+ - python3 ./setup.py build_ext
90
+ - pytest testing/unit testing/functional
91
+
92
+ py39:
93
+ <<: *test-template
94
+ image: python:3.9
95
+ stage: test
96
+ script:
97
+ - python3 -m pip install -r requirements.txt
98
+ - python3 -m pip install -r requirements.dev
99
+ - python3 ./setup.py build_ext
100
+ - pytest testing/unit testing/functional
101
+
102
+ py310:
103
+ <<: *test-template
104
+ image: python:3.10
105
+ stage: test
106
+ script:
107
+ - python3 -m pip install -r requirements.txt
108
+ - python3 -m pip install -r requirements.dev
109
+ - python3 ./setup.py build_ext
110
+ - pytest testing/unit testing/functional
111
+
112
+ py311:
113
+ <<: *test-template
114
+ image: python:3.11
115
+ stage: test
116
+ script:
117
+ - python3 -m pip install -r requirements.txt
118
+ - python3 -m pip install -r requirements.dev
119
+ - python3 ./setup.py build_ext
120
+ - pytest testing/unit testing/functional
121
+
122
+ py312:
123
+ <<: *test-template
124
+ image: python:3.12
125
+ stage: test
126
+ script:
127
+ - python3 -m pip install -r requirements.txt
128
+ - python3 -m pip install -r requirements.dev
129
+ - python3 ./setup.py build_ext
130
+ - pytest testing/unit testing/functional
131
+
132
+ pages:
133
+ stage: deploy
134
+ when: manual
135
+ image: ubuntu:20.04
136
+ before_script:
137
+ # Set locale to prevent UTF-8 errors
138
+ - export LANG=C.UTF-8
139
+ - export LC_ALL=C.UTF-8
140
+ script:
141
+ - apt-get update
142
+ - apt-get install -y git python3-pip git intltool
143
+ - python3 -m pip install --upgrade pip
144
+ - python3 -m pip install -r requirements.txt
145
+ - python3 -m pip install -r requirements.dev
146
+ - VERSION=`./setup.py --version`
147
+ - echo "make docs of ${VERSION}"
148
+ - make docs
149
+ - mv docs/_build/html public
150
+ artifacts:
151
+ paths:
152
+ - public
153
+
154
+ # run a pipeline trigger for the website to build
155
+ # - on new tag (always)
156
+ # - on new pushes (when online published files were changed)
157
+ # - when run manually
158
+ # needs WEBSITE_TRIGGER_TOKEN variable in CI settings (mask/protected as needed)
159
+ website:
160
+ stage: deploy
161
+ image: curlimages/curl:latest
162
+ rules:
163
+ - if: $CI_COMMIT_BRANCH != "main"
164
+ when: manual
165
+ - if: $CI_COMMIT_TAG
166
+ when: always
167
+ - changes:
168
+ - "CHANGELOG.md"
169
+ - "README.md"
170
+ - "man/*.1"
171
+ if: $CI_PIPELINE_SOURCE == "push"
172
+ when: always
173
+ - when: manual
174
+ allow_failure: true
175
+ variables:
176
+ GIT_STRATEGY: none
177
+ GIT_CHECKOUT: "false"
178
+ script: |
179
+ if [[ $WEBSITE_TRIGGER_TOKEN != "" ]]; then
180
+ curl --fail-with-body \
181
+ -X POST \
182
+ -F token=${WEBSITE_TRIGGER_TOKEN} \
183
+ -F ref=master https://gitlab.com/api/v4/projects/29130748/trigger/pipeline
184
+ fi
185
+
186
+ # run cibuildwheel for all pythons and arches we support
187
+ # see config in pyproject.toml
188
+ wheels:
189
+ stage: deploy
190
+ when: manual
191
+ image: python:3.8
192
+ # make a docker daemon available for cibuildwheel to use
193
+ services:
194
+ - name: docker:dind
195
+ entrypoint: ["env", "-u", "DOCKER_HOST"]
196
+ command: ["dockerd-entrypoint.sh"]
197
+ variables:
198
+ DOCKER_HOST: tcp://docker:2375/
199
+ DOCKER_DRIVER: overlay2
200
+ # See https://github.com/docker-library/docker/pull/166
201
+ DOCKER_TLS_CERTDIR: ""
202
+ script:
203
+ - curl -sSL https://get.docker.com/ | sh
204
+ - python -m pip install cibuildwheel==2.16.5
205
+ - cibuildwheel --output-dir wheelhouse
206
+ artifacts:
207
+ paths:
208
+ - wheelhouse/
@@ -1,6 +1,140 @@
1
1
  # Changelog
2
2
 
3
3
 
4
+ ## rel.2.2.4 (2024-05-20)
5
+
6
+ ### Changes
7
+
8
+ * Bump to version 2.2.4. [Kenneth Loafman]
9
+
10
+ * Add tools/testpipx. [Kenneth Loafman]
11
+
12
+ * Move install-requires back to setup.py. [Kenneth Loafman]
13
+
14
+ - See https://gitlab.com/duplicity/duplicity/-/merge_requests/233
15
+
16
+
17
+ ## rel.2.2.4rc3 (2024-05-19)
18
+
19
+ ### Changes
20
+
21
+ * Bump version to 2.2.4.rc3. [Kenneth Loafman]
22
+
23
+ * Use pip-compile to build requirements.txt. [Kenneth Loafman]
24
+
25
+
26
+ ## rel.2.2.4rc2 (2024-05-18)
27
+
28
+ ### Changes
29
+
30
+ * Adjust since twine does not do wildcards. [Kenneth Loafman]
31
+
32
+ * Revert "chg:pkg: Add missing fasteners install dependency" [Kenneth Loafman]
33
+
34
+ This reverts commit ce3baa9a86ed6734dc7b013b6aaa1b873a2ba481.
35
+
36
+ * Add requirements.dev to tests. [Kenneth Loafman]
37
+
38
+ * Bump version to 2.2.4.rc2. [Kenneth Loafman]
39
+
40
+ * Split requirements.txt into .txt and .dev. [Kenneth Loafman]
41
+
42
+ * Add missing fasteners install dependency. [Michael Terry]
43
+
44
+ * Run po/update-pot. [Kenneth Loafman]
45
+
46
+ * Fix typo in ignore new pylint warning. [Kenneth Loafman]
47
+
48
+ * Ignore new pylint warning E0606 (possibly-used-before-assignment). [Kenneth Loafman]
49
+
50
+ ### Fix
51
+
52
+ * Onedrive: fix "unauthorized" upload error by not passing auth. [Michael Terry]
53
+
54
+ After the initial createUploadSession, apparently OneDrive actively dislikes it if you send Authorization headers on the subsequent PUT calls.
55
+
56
+ See their docs: https://learn.microsoft.com/en-us/graph/api/driveitem-createuploadsession?view=graph-rest-1.0#remarks
57
+
58
+ If you do include the Authorization header, you get 401 responses.
59
+
60
+
61
+ ## rel.2.2.4rc1 (2024-05-15)
62
+
63
+ ### Changes
64
+
65
+ * Run po/update-pot. [Kenneth Loafman]
66
+
67
+ * Fix typo in ignore new pylint warning. [Kenneth Loafman]
68
+
69
+ * Ignore new pylint warning E0606 (possibly-used-before-assignment). [Kenneth Loafman]
70
+
71
+ * Upgrade setup process and instructions (2nd try) [Kenneth Loafman]
72
+
73
+ Finally fix #797
74
+
75
+ * enhance README.md to match current PyPA install process
76
+ * improve and expand pyproject.toml
77
+ * build requires section
78
+ * build excludes section
79
+ * improve and shrink setup.py
80
+ * remove SdistCommand
81
+ * suppress nonsense warnings
82
+ * pyproject.toml now does most of the heavy lifting
83
+ * requires updates to pip, pipx, and setuptools
84
+ * the newer pip builds a virtual environment
85
+ * it installs the build requirements in that venv
86
+ * the build is then done in that venv
87
+ * fixes to tools/install\* scripts to build/test VM environment
88
+ * replaces argparse with duplicity/argparse311 globally
89
+
90
+ * Reformating, typos. [Thomas Laubrock]
91
+
92
+ * Add deprecation warning for `--async` [poggenpower]
93
+
94
+ * Restore previous docs/Makefile. [Kenneth Loafman]
95
+
96
+ * Set version for LP dev PPA. [Kenneth Loafman]
97
+
98
+ * Set packaging and black version requirements. [Kenneth Loafman]
99
+
100
+ * Adjust debian/control for focal builds. [Kenneth Loafman]
101
+
102
+ * Adjust debian/control for focal builds. [Kenneth Loafman]
103
+
104
+ * Adjust debian/control for focal builds. [Kenneth Loafman]
105
+
106
+ ### Fix
107
+
108
+ * Don't drop args when restarting with execve. [Michael Terry]
109
+
110
+ * Really fix invalid option error. [Kenneth Loafman]
111
+
112
+ - remove code trying to emulate subparsers
113
+ - all options accepted but may be ignored
114
+
115
+ Closes #795
116
+
117
+ * Fix invalid option error. [Kenneth Loafman]
118
+
119
+ Closes #795
120
+
121
+ * Move missleading warning to debug level #813. [Thomas Laubrock]
122
+
123
+ * Duplicity 2.2.3: --use-agent can be wrongly turned off. [Kenneth Loafman]
124
+
125
+ * Adjust #810 fix for py38. [Kenneth Loafman]
126
+
127
+ - py38 does not support usedforsecurity= option.
128
+ - FIPS will still break duplicity under py38.
129
+
130
+ * Pass "usedforsecurity=False" to md5() and sha1(). [Kenneth Loafman]
131
+
132
+ - GnuPG used for security, hash for matching
133
+ - only needed under FIPS mode, somewhat rare
134
+
135
+ Fixes #810
136
+
137
+
4
138
  ## rel.2.2.3 (2024-03-20)
5
139
 
6
140
  ### New