duplicity 2.2.3.dev18__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 (332) 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.dev18 → duplicity-2.2.4}/CHANGELOG.md +217 -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.dev18 → duplicity-2.2.4}/duplicity/__init__.py +2 -2
  22. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backend.py +5 -1
  23. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/_testbackend.py +6 -2
  24. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/onedrivebackend.py +3 -1
  25. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/webdavbackend.py +0 -4
  26. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/cli_data.py +0 -42
  27. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/cli_main.py +4 -37
  28. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/cli_util.py +21 -10
  29. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/dup_collections.py +1 -8
  30. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/dup_main.py +2 -2
  31. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/gpg.py +11 -2
  32. duplicity-2.2.4/duplicity.egg-info/PKG-INFO +112 -0
  33. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity.egg-info/SOURCES.txt +8 -1
  34. duplicity-2.2.4/duplicity.egg-info/requires.txt +107 -0
  35. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/man/duplicity.1 +1 -2
  36. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/af_ZA/duplicity.mo +0 -0
  37. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/af_ZA.po +190 -191
  38. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/ar_SA/duplicity.mo +0 -0
  39. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/ar_SA.po +190 -195
  40. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/ca_ES/duplicity.mo +0 -0
  41. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/ca_ES.po +190 -191
  42. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/cs_CZ/duplicity.mo +0 -0
  43. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/cs_CZ.po +190 -193
  44. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/da_DK/duplicity.mo +0 -0
  45. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/da_DK.po +190 -191
  46. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/de_AT/duplicity.mo +0 -0
  47. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/de_AT.po +190 -191
  48. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/de_DE/duplicity.mo +0 -0
  49. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/de_DE.po +190 -191
  50. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/duplicity.pot +189 -193
  51. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/el_GR/duplicity.mo +0 -0
  52. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/el_GR.po +190 -191
  53. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/en_AU/duplicity.mo +0 -0
  54. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/en_AU.po +190 -191
  55. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/en_GB/duplicity.mo +0 -0
  56. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/en_GB.po +190 -191
  57. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/en_PR/duplicity.mo +0 -0
  58. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/en_PR.po +190 -191
  59. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/en_US/duplicity.mo +0 -0
  60. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/en_US.po +190 -191
  61. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/es_EM/duplicity.mo +0 -0
  62. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/es_EM.po +190 -191
  63. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/es_ES/duplicity.mo +0 -0
  64. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/es_ES.po +190 -191
  65. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/es_MX/duplicity.mo +0 -0
  66. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/es_MX.po +190 -191
  67. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/es_PR/duplicity.mo +0 -0
  68. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/es_PR.po +190 -191
  69. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/es_US/duplicity.mo +0 -0
  70. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/es_US.po +190 -191
  71. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/fi_FI/duplicity.mo +0 -0
  72. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/fi_FI.po +190 -191
  73. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/fr_FR/duplicity.mo +0 -0
  74. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/fr_FR.po +190 -191
  75. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/he_IL/duplicity.mo +0 -0
  76. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/he_IL.po +190 -193
  77. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/hu_HU/duplicity.mo +0 -0
  78. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/hu_HU.po +190 -191
  79. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/it_IT/duplicity.mo +0 -0
  80. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/it_IT.po +190 -191
  81. duplicity-2.2.4/po/ja_JP/duplicity.mo +0 -0
  82. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/ja_JP.po +190 -190
  83. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/ko_KR/duplicity.mo +0 -0
  84. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/ko_KR.po +190 -190
  85. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/nl_BE/duplicity.mo +0 -0
  86. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/nl_BE.po +190 -191
  87. {duplicity-2.2.3.dev18/po/nl_SR → duplicity-2.2.4/po/nl_NL}/duplicity.mo +0 -0
  88. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/nl_NL.po +190 -191
  89. {duplicity-2.2.3.dev18/po/nl_NL → duplicity-2.2.4/po/nl_SR}/duplicity.mo +0 -0
  90. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/nl_SR.po +190 -191
  91. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/no_NO/duplicity.mo +0 -0
  92. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/no_NO.po +190 -191
  93. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/pl_PL/duplicity.mo +0 -0
  94. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/pl_PL.po +190 -193
  95. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/pt_BR/duplicity.mo +0 -0
  96. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/pt_BR.po +190 -191
  97. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/pt_PT/duplicity.mo +0 -0
  98. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/pt_PT.po +190 -191
  99. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/ro_RO/duplicity.mo +0 -0
  100. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/ro_RO.po +190 -192
  101. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/ru_BY/duplicity.mo +0 -0
  102. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/ru_BY.po +190 -193
  103. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/ru_MD/duplicity.mo +0 -0
  104. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/ru_MD.po +190 -193
  105. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/ru_RU/duplicity.mo +0 -0
  106. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/ru_RU.po +190 -193
  107. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/ru_UA/duplicity.mo +0 -0
  108. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/ru_UA.po +190 -193
  109. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/sr_SP/duplicity.mo +0 -0
  110. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/sr_SP.po +190 -192
  111. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/sv_SE/duplicity.mo +0 -0
  112. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/sv_SE.po +190 -191
  113. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/tr_TR/duplicity.mo +0 -0
  114. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/tr_TR.po +190 -191
  115. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/uk_UA/duplicity.mo +0 -0
  116. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/uk_UA.po +190 -193
  117. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/vi_VN/duplicity.mo +0 -0
  118. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/vi_VN.po +190 -190
  119. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/zh_CN/duplicity.mo +0 -0
  120. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/zh_CN.po +190 -190
  121. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/zh_HK/duplicity.mo +0 -0
  122. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/zh_HK.po +190 -190
  123. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/zh_MO/duplicity.mo +0 -0
  124. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/zh_MO.po +190 -190
  125. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/zh_SG/duplicity.mo +0 -0
  126. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/zh_SG.po +190 -190
  127. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/zh_TW/duplicity.mo +0 -0
  128. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/zh_TW.po +190 -190
  129. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/pyproject.toml +40 -18
  130. duplicity-2.2.4/readthedocs.yaml +28 -0
  131. duplicity-2.2.4/requirements.txt +363 -0
  132. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/setup.cfg +1 -0
  133. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/setup.py +47 -116
  134. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/snap/snapcraft.yaml +1 -1
  135. duplicity-2.2.4/testing/docker/.env +28 -0
  136. duplicity-2.2.4/testing/docker/.gitignore +3 -0
  137. duplicity-2.2.4/testing/docker/build.sh +36 -0
  138. duplicity-2.2.4/testing/docker/docker-compose.yml +76 -0
  139. duplicity-2.2.4/testing/docker/duplicity_test/Dockerfile +122 -0
  140. duplicity-2.2.4/testing/docker/ftp_server/Dockerfile +32 -0
  141. duplicity-2.2.4/testing/docker/ftp_server/pureftpd.passwd +1 -0
  142. duplicity-2.2.4/testing/docker/hello-world-master.zip +0 -0
  143. duplicity-2.2.4/testing/docker/id_rsa +27 -0
  144. duplicity-2.2.4/testing/docker/id_rsa.pub +1 -0
  145. duplicity-2.2.4/testing/docker/push.sh +30 -0
  146. duplicity-2.2.4/testing/docker/setup.sh +29 -0
  147. duplicity-2.2.4/testing/docker/ssh_server/Dockerfile +65 -0
  148. duplicity-2.2.4/testing/docker/teardown.sh +28 -0
  149. duplicity-2.2.4/testing/docker/testit.sh +30 -0
  150. duplicity-2.2.4/testing/manual/__init__.py +20 -0
  151. duplicity-2.2.4/testing/manual/auto-ctrl-c-test.sh +61 -0
  152. duplicity-2.2.4/testing/manual/backendtest.py +237 -0
  153. duplicity-2.2.4/testing/manual/manual-ctrl-c-test.sh +74 -0
  154. duplicity-2.2.4/testing/manual/rootfiles.tar.gz +0 -0
  155. duplicity-2.2.4/testing/manual/roottest.py +132 -0
  156. duplicity-2.2.4/testing/manual/run-coverage.sh +60 -0
  157. duplicity-2.2.4/testing/manual/test-prefix-install.sh +15 -0
  158. duplicity-2.2.4/testing/manual/test-venv-install.sh +22 -0
  159. duplicity-2.2.4/testing/manual/test_config.py.tmpl +69 -0
  160. duplicity-2.2.4/testing/regression/bug1526557.sh +9 -0
  161. duplicity-2.2.4/testing/regression/bug1846678.sh +10 -0
  162. duplicity-2.2.4/testing/regression/bug1860200.sh +47 -0
  163. duplicity-2.2.4/testing/regression/bug487720.sh +36 -0
  164. duplicity-2.2.4/testing/regression/bug930151.sh +23 -0
  165. duplicity-2.2.4/testing/regression/issue100.sh +17 -0
  166. duplicity-2.2.4/testing/regression/issue103.json +16 -0
  167. duplicity-2.2.4/testing/regression/issue103.sh +64 -0
  168. duplicity-2.2.4/testing/regression/issue110-setup.sh +24 -0
  169. duplicity-2.2.4/testing/regression/issue110-test.sh +16 -0
  170. duplicity-2.2.4/testing/regression/issue125.sh +58 -0
  171. duplicity-2.2.4/testing/regression/issue147.sh +12 -0
  172. duplicity-2.2.4/testing/regression/issue25.json +10 -0
  173. duplicity-2.2.4/testing/regression/issue25.sh +17 -0
  174. duplicity-2.2.4/testing/regression/issue26.sh +21 -0
  175. duplicity-2.2.4/testing/regression/issue683.sh +16 -0
  176. duplicity-2.2.4/testing/regression/issue725.sh +32 -0
  177. duplicity-2.2.4/testing/regression/issue73.env +7 -0
  178. duplicity-2.2.4/testing/regression/issue73.sh +16 -0
  179. duplicity-2.2.4/testing/regression/issue781.json +10 -0
  180. duplicity-2.2.4/testing/regression/issue781.sh +28 -0
  181. duplicity-2.2.4/testing/regression/issue79.json +10 -0
  182. duplicity-2.2.4/testing/regression/issue79.sh +28 -0
  183. duplicity-2.2.4/testing/regression/issue98.sh +54 -0
  184. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/test_code.py +3 -0
  185. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_backend.py +4 -1
  186. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_cli_main.py +0 -6
  187. duplicity-2.2.4/tools/installpyenv +47 -0
  188. duplicity-2.2.4/tools/installpythons +67 -0
  189. duplicity-2.2.4/tools/installsnap +56 -0
  190. duplicity-2.2.4/tools/makechangelog +46 -0
  191. duplicity-2.2.4/tools/makepip +38 -0
  192. duplicity-2.2.4/tools/makesnap +60 -0
  193. duplicity-2.2.4/tools/pushpip +45 -0
  194. duplicity-2.2.4/tools/pushsnap +48 -0
  195. duplicity-2.2.4/tools/release-prep +78 -0
  196. duplicity-2.2.4/tools/testpip +103 -0
  197. duplicity-2.2.4/tools/testsnap +60 -0
  198. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/tox.ini +0 -1
  199. duplicity-2.2.3.dev18/PKG-INFO +0 -7
  200. duplicity-2.2.3.dev18/README.md +0 -58
  201. duplicity-2.2.3.dev18/duplicity.egg-info/PKG-INFO +0 -7
  202. duplicity-2.2.3.dev18/po/ja_JP/duplicity.mo +0 -0
  203. duplicity-2.2.3.dev18/requirements.txt +0 -60
  204. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/AUTHORS.md +0 -0
  205. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/COPYING +0 -0
  206. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/README-LOG.md +0 -0
  207. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/README-REPO.md +0 -0
  208. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/README-SNAP.md +0 -0
  209. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/README-TESTING.md +0 -0
  210. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/__main__.py +0 -0
  211. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/_librsyncmodule.c +0 -0
  212. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/argparse311.py +0 -0
  213. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/asyncscheduler.py +0 -0
  214. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/README +0 -0
  215. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/__init__.py +0 -0
  216. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/_cf_cloudfiles.py +0 -0
  217. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/_cf_pyrax.py +0 -0
  218. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/adbackend.py +0 -0
  219. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/azurebackend.py +0 -0
  220. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/b2backend.py +0 -0
  221. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/boxbackend.py +0 -0
  222. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/cfbackend.py +0 -0
  223. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/dpbxbackend.py +0 -0
  224. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/gdocsbackend.py +0 -0
  225. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/gdrivebackend.py +0 -0
  226. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/giobackend.py +0 -0
  227. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/hsibackend.py +0 -0
  228. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/hubicbackend.py +0 -0
  229. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/idrivedbackend.py +0 -0
  230. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/imapbackend.py +0 -0
  231. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/jottacloudbackend.py +0 -0
  232. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/lftpbackend.py +0 -0
  233. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/localbackend.py +0 -0
  234. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/mediafirebackend.py +0 -0
  235. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/megabackend.py +0 -0
  236. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/megav2backend.py +0 -0
  237. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/megav3backend.py +0 -0
  238. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/multibackend.py +0 -0
  239. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/ncftpbackend.py +0 -0
  240. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/par2backend.py +0 -0
  241. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/pcabackend.py +0 -0
  242. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/pydrivebackend.py +0 -0
  243. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/pyrax_identity/__init__.py +0 -0
  244. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/pyrax_identity/hubic.py +0 -0
  245. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/rclonebackend.py +0 -0
  246. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/rsyncbackend.py +0 -0
  247. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/s3_boto3_backend.py +0 -0
  248. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/slatebackend.py +0 -0
  249. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/ssh_paramiko_backend.py +0 -0
  250. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/ssh_pexpect_backend.py +0 -0
  251. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/swiftbackend.py +0 -0
  252. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/sxbackend.py +0 -0
  253. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/tahoebackend.py +0 -0
  254. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/backends/xorrisobackend.py +0 -0
  255. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/cached_ops.py +0 -0
  256. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/config.py +0 -0
  257. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/diffdir.py +0 -0
  258. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/dup_tarfile.py +0 -0
  259. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/dup_temp.py +0 -0
  260. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/dup_threading.py +0 -0
  261. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/dup_time.py +0 -0
  262. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/errors.py +0 -0
  263. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/file_naming.py +0 -0
  264. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/filechunkio.py +0 -0
  265. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/globmatch.py +0 -0
  266. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/gpginterface.py +0 -0
  267. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/lazy.py +0 -0
  268. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/librsync.py +0 -0
  269. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/log.py +0 -0
  270. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/manifest.py +0 -0
  271. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/patchdir.py +0 -0
  272. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/path.py +0 -0
  273. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/progress.py +0 -0
  274. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/robust.py +0 -0
  275. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/selection.py +0 -0
  276. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/statistics.py +0 -0
  277. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/tempdir.py +0 -0
  278. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity/util.py +0 -0
  279. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity.egg-info/dependency_links.txt +0 -0
  280. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity.egg-info/entry_points.txt +0 -0
  281. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/duplicity.egg-info/top_level.txt +0 -0
  282. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/LINGUAS +0 -0
  283. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/Makevars +0 -0
  284. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/POTFILES.in +0 -0
  285. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/POTFILES.skip +0 -0
  286. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/po/update-pot +0 -0
  287. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/snap/local/debug.sh +0 -0
  288. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/snap/local/launcher.sh +0 -0
  289. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/__init__.py +0 -0
  290. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/conftest.py +0 -0
  291. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/functional/__init__.py +0 -0
  292. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/functional/test_badupload.py +0 -0
  293. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/functional/test_cleanup.py +0 -0
  294. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/functional/test_final.py +0 -0
  295. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/functional/test_log.py +0 -0
  296. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/functional/test_restart.py +0 -0
  297. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/functional/test_selection.py +0 -0
  298. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/functional/test_verify.py +0 -0
  299. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/gnupg/README +0 -0
  300. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/gnupg/gpg-agent.conf +0 -0
  301. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/gnupg/gpg.conf +0 -0
  302. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/gnupg/pubring.gpg +0 -0
  303. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/gnupg/secring.gpg +0 -0
  304. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/gnupg/trustdb.gpg +0 -0
  305. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/overrides/__init__.py +0 -0
  306. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/overrides/bin/hsi +0 -0
  307. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/overrides/bin/lftp +0 -0
  308. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/overrides/bin/ncftpget +0 -0
  309. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/overrides/bin/ncftpls +0 -0
  310. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/overrides/bin/ncftpput +0 -0
  311. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/overrides/bin/tahoe +0 -0
  312. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/run-tests +0 -0
  313. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/testfiles.tar.gz +0 -0
  314. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/__init__.py +0 -0
  315. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_backend_instance.py +0 -0
  316. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_collections.py +0 -0
  317. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_diffdir.py +0 -0
  318. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_dup_temp.py +0 -0
  319. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_dup_time.py +0 -0
  320. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_file_naming.py +0 -0
  321. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_globmatch.py +0 -0
  322. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_gpg.py +0 -0
  323. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_gpginterface.py +0 -0
  324. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_lazy.py +0 -0
  325. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_manifest.py +0 -0
  326. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_patchdir.py +0 -0
  327. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_path.py +0 -0
  328. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_selection.py +0 -0
  329. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_statistics.py +0 -0
  330. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_tarfile.py +0 -0
  331. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_tempdir.py +0 -0
  332. {duplicity-2.2.3.dev18 → duplicity-2.2.4}/testing/unit/test_util.py +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/