duplicity 3.0.8.dev4__tar.gz → 3.0.8.dev6__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 (145) hide show
  1. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/AUTHORS.md +1 -1
  2. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/CHANGELOG.md +14 -0
  3. {duplicity-3.0.8.dev4/duplicity.egg-info → duplicity-3.0.8.dev6}/PKG-INFO +3 -4
  4. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/__init__.py +3 -3
  5. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/__main__.py +5 -3
  6. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backend.py +1 -1
  7. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backend_pool.py +1 -1
  8. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/__init__.py +1 -1
  9. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/_cf_cloudfiles.py +1 -1
  10. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/_cf_pyrax.py +1 -1
  11. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/_testbackend.py +7 -8
  12. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/adbackend.py +1 -1
  13. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/azurebackend.py +1 -1
  14. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/b2backend.py +1 -1
  15. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/boxbackend.py +1 -1
  16. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/cfbackend.py +1 -1
  17. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/dpbxbackend.py +1 -1
  18. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/gdocsbackend.py +1 -1
  19. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/gdrivebackend.py +1 -1
  20. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/giobackend.py +1 -1
  21. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/hsibackend.py +1 -1
  22. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/hubicbackend.py +1 -1
  23. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/idrivedbackend.py +1 -1
  24. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/imapbackend.py +1 -1
  25. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/jottacloudbackend.py +1 -1
  26. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/lftpbackend.py +1 -1
  27. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/localbackend.py +1 -1
  28. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/mediafirebackend.py +1 -1
  29. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/megabackend.py +1 -1
  30. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/megav2backend.py +1 -1
  31. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/megav3backend.py +1 -1
  32. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/multibackend.py +1 -1
  33. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/ncftpbackend.py +1 -1
  34. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/onedrivebackend.py +7 -7
  35. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/par2backend.py +1 -1
  36. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/pcabackend.py +1 -1
  37. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/pydrivebackend.py +1 -1
  38. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/pyrax_identity/__init__.py +1 -1
  39. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/pyrax_identity/hubic.py +1 -1
  40. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/rclonebackend.py +1 -1
  41. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/rsyncbackend.py +1 -1
  42. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/s3_boto3_backend.py +5 -5
  43. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/slatebackend.py +1 -1
  44. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/ssh_paramiko_backend.py +1 -1
  45. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/ssh_pexpect_backend.py +1 -1
  46. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/swiftbackend.py +1 -1
  47. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/sxbackend.py +1 -1
  48. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/tahoebackend.py +1 -1
  49. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/webdavbackend.py +1 -1
  50. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/backends/xorrisobackend.py +1 -1
  51. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/cached_ops.py +1 -1
  52. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/cli_data.py +1 -1
  53. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/cli_main.py +1 -1
  54. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/cli_util.py +1 -1
  55. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/config.py +1 -1
  56. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/diffdir.py +1 -1
  57. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/dup_collections.py +1 -1
  58. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/dup_main.py +1 -1
  59. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/dup_tarfile.py +1 -1
  60. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/dup_temp.py +1 -1
  61. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/dup_time.py +1 -1
  62. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/errors.py +1 -1
  63. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/filechunkio.py +1 -1
  64. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/globmatch.py +1 -1
  65. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/gpg.py +1 -1
  66. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/gpginterface.py +1 -1
  67. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/lazy.py +1 -1
  68. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/librsync.py +1 -1
  69. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/log.py +1 -1
  70. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/manifest.py +1 -1
  71. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/patchdir.py +1 -1
  72. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/path.py +1 -1
  73. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/progress.py +1 -1
  74. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/robust.py +1 -1
  75. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/selection.py +1 -1
  76. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/statistics.py +1 -1
  77. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/tempdir.py +1 -1
  78. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/util.py +1 -1
  79. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6/duplicity.egg-info}/PKG-INFO +3 -4
  80. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity.egg-info/SOURCES.txt +0 -1
  81. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity.egg-info/requires.txt +1 -1
  82. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/man/duplicity.1 +1 -1
  83. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/af_ZA/duplicity.mo +0 -0
  84. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/ar_SA/duplicity.mo +0 -0
  85. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/ca_ES/duplicity.mo +0 -0
  86. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/cs_CZ/duplicity.mo +0 -0
  87. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/da_DK/duplicity.mo +0 -0
  88. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/de_AT/duplicity.mo +0 -0
  89. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/de_DE/duplicity.mo +0 -0
  90. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/el_GR/duplicity.mo +0 -0
  91. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/en_AU/duplicity.mo +0 -0
  92. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/en_GB/duplicity.mo +0 -0
  93. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/en_PR/duplicity.mo +0 -0
  94. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/en_US/duplicity.mo +0 -0
  95. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/es_EM/duplicity.mo +0 -0
  96. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/es_ES/duplicity.mo +0 -0
  97. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/es_MX/duplicity.mo +0 -0
  98. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/es_PR/duplicity.mo +0 -0
  99. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/es_US/duplicity.mo +0 -0
  100. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/fi_FI/duplicity.mo +0 -0
  101. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/fr_FR/duplicity.mo +0 -0
  102. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/he_IL/duplicity.mo +0 -0
  103. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/hu_HU/duplicity.mo +0 -0
  104. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/it_IT/duplicity.mo +0 -0
  105. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/ja_JP/duplicity.mo +0 -0
  106. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/ko_KR/duplicity.mo +0 -0
  107. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/nl_BE/duplicity.mo +0 -0
  108. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/nl_NL/duplicity.mo +0 -0
  109. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/nl_SR/duplicity.mo +0 -0
  110. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/no_NO/duplicity.mo +0 -0
  111. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/pl_PL/duplicity.mo +0 -0
  112. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/pt_BR/duplicity.mo +0 -0
  113. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/pt_PT/duplicity.mo +0 -0
  114. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/ro_RO/duplicity.mo +0 -0
  115. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/ru_BY/duplicity.mo +0 -0
  116. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/ru_MD/duplicity.mo +0 -0
  117. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/ru_RU/duplicity.mo +0 -0
  118. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/ru_UA/duplicity.mo +0 -0
  119. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/sr_SP/duplicity.mo +0 -0
  120. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/sv_SE/duplicity.mo +0 -0
  121. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/tr_TR/duplicity.mo +0 -0
  122. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/uk_UA/duplicity.mo +0 -0
  123. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/vi_VN/duplicity.mo +0 -0
  124. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/zh_CN/duplicity.mo +0 -0
  125. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/zh_HK/duplicity.mo +0 -0
  126. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/zh_MO/duplicity.mo +0 -0
  127. duplicity-3.0.8.dev6/po/zh_SG/duplicity.mo +0 -0
  128. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/po/zh_TW/duplicity.mo +0 -0
  129. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/pyproject.toml +28 -33
  130. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/requirements.txt +2 -2
  131. duplicity-3.0.8.dev6/setup.cfg +4 -0
  132. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/setup.py +6 -10
  133. duplicity-3.0.8.dev4/po/zh_SG/duplicity.mo +0 -0
  134. duplicity-3.0.8.dev4/setup.cfg +0 -8
  135. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/COPYING +0 -0
  136. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/README-LOG.md +0 -0
  137. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/README-REPO.md +0 -0
  138. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/README-TESTING.md +0 -0
  139. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/README.md +0 -0
  140. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/_librsyncmodule.c +0 -0
  141. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/argparse311.py +0 -0
  142. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity/file_naming.py +0 -0
  143. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity.egg-info/dependency_links.txt +0 -0
  144. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity.egg-info/entry_points.txt +0 -0
  145. {duplicity-3.0.8.dev4 → duplicity-3.0.8.dev6}/duplicity.egg-info/top_level.txt +0 -0
@@ -32,7 +32,7 @@ Duplicity Authors
32
32
  - Stefan Breunig <stefan-duplicity@breunig.xyz>
33
33
  - Steve Tynor <steve.tynor@gmail.com>
34
34
  - Thomas Harning Jr <harningt@gmail.com>
35
- - Thomas Laubrock
35
+ - Thomas Laubrock <duplicity-talk@schmu.net>
36
36
  - Tomas Vondra (Launchpad id: tomas-v)
37
37
  - Xavier Lucas <xavier.lucas@corp.ovh.com>
38
38
  - Yigal Asnis
@@ -1,4 +1,18 @@
1
1
 
2
+ (Unreleased) / 2026-05-12
3
+ =========================
4
+
5
+
6
+
7
+ rel.3.0.8.dev5 / 2026-05-12
8
+ ===========================
9
+
10
+ * 3997156c:chg: Update README-RELEASE.md.
11
+ * 0f5430db:fix: Fix so GNUPGHOME is not changed in production.
12
+ * 53cc9659:fix: lower boto warning log level, rephrase.
13
+ * 88bfc75e:chg: Misc cleanups for developers
14
+ * 4b0bb8d5:chg: Update 'release pip version' in README-RELEASE.md.
15
+
2
16
  rel.3.0.8.dev4 / 2026-03-31
3
17
  ===========================
4
18
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: duplicity
3
- Version: 3.0.8.dev4
3
+ Version: 3.0.8.dev6
4
4
  Summary: Encrypted backup using rsync algorithm
5
5
  Author-email: Kenneth Loafman <kenneth@loafman.com>
6
6
  Maintainer: Edgar Soldin, Thomas Laubrock
@@ -18,14 +18,13 @@ Classifier: Operating System :: MacOS
18
18
  Classifier: Operating System :: POSIX
19
19
  Classifier: Programming Language :: C
20
20
  Classifier: Programming Language :: Python :: 3
21
- Classifier: Programming Language :: Python :: 3.9
22
21
  Classifier: Programming Language :: Python :: 3.10
23
22
  Classifier: Programming Language :: Python :: 3.11
24
23
  Classifier: Programming Language :: Python :: 3.12
25
24
  Classifier: Programming Language :: Python :: 3.13
26
25
  Classifier: Programming Language :: Python :: 3.14
27
26
  Classifier: Topic :: System :: Archiving :: Backup
28
- Requires-Python: <3.15,>3.8
27
+ Requires-Python: >=3.10
29
28
  Description-Content-Type: text/markdown
30
29
  License-File: COPYING
31
30
  License-File: AUTHORS.md
@@ -45,7 +44,7 @@ Requires-Dist: httplib2
45
44
  Requires-Dist: pysocks
46
45
  Requires-Dist: jottalib
47
46
  Requires-Dist: keyring
48
- Requires-Dist: lxml<=5.4.0
47
+ Requires-Dist: lxml
49
48
  Requires-Dist: mediafire
50
49
  Requires-Dist: megatools
51
50
  Requires-Dist: paramiko
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -21,7 +21,7 @@
21
21
 
22
22
  import gettext
23
23
 
24
- __version__: str = "3.0.8.dev4"
25
- __reldate__: str = "March 31, 2026"
24
+ __version__: str = "3.0.8.dev6"
25
+ __reldate__: str = "May 12, 2026"
26
26
 
27
27
  gettext.install("duplicity", names=["ngettext"])
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env python3
2
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
2
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
3
3
  #
4
4
  # duplicity -- Encrypted bandwidth efficient backup
5
5
  #
@@ -62,8 +62,10 @@ def dup_run():
62
62
  # check that we can function here
63
63
  if os.environ.get("PYTEST_VERSION") is not None:
64
64
  pass
65
- elif not ((3, 9) <= sys.version_info[:2] <= (3, 14)):
66
- print("Sorry, duplicity requires version 3.9 thru 3.14 of Python.", file=sys.stderr)
65
+ elif os.environ.get("CIBUILDWHEEL") is not None:
66
+ pass
67
+ elif not ((3, 10) <= sys.version_info[:2] <= (3, 14)):
68
+ print("Sorry, duplicity requires Python version 3.10 thru 3.14.", file=sys.stderr)
67
69
  sys.exit(1)
68
70
 
69
71
  try:
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2009 Eric EJ Johnson
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2013 J.P. Krauss
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -25,19 +25,16 @@ import inspect
25
25
  import json
26
26
  import logging
27
27
  import os
28
- from random import random
29
28
  import re
30
29
  import sys
31
30
  import time
31
+ from random import random
32
32
 
33
33
  import duplicity.backend
34
- from duplicity import (
35
- log,
36
- path,
37
- progress,
38
- )
34
+ from duplicity import log
35
+ from duplicity import path
36
+ from duplicity import progress
39
37
  from duplicity.errors import BackendException
40
- from testing import _runtest_dir
41
38
 
42
39
 
43
40
  class BackendErrors:
@@ -66,6 +63,8 @@ class _TestBackend(duplicity.backend.Backend):
66
63
 
67
64
  def __init__(self, parsed_url):
68
65
  super().__init__(parsed_url)
66
+ from testing import _runtest_dir
67
+
69
68
  log._logger.addHandler(logging.FileHandler(f"{_runtest_dir}/testbackend.log"))
70
69
  log.Warn("TestBackend is not made for production use!")
71
70
  # The URL form "file:MyFile" is not a valid duplicity target.
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2016 Stefan Breunig
4
4
  # Based on the backend onedrivebackend.py
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2013 Matthieu Huin
4
4
  # Copyright 2015 Scott McKenzie
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright (c) 2015 Matthew Bentley
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2020 Jose L. Domingo Lopez
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2013 Kenneth Loafman
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2013 jno
4
4
  # Copyright 2016 Dmitry Nezhevenko
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2011 Carlos Abalde
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2015 Yigal Asnis
4
4
  # Copyright 2021 Jindrich Makovicka
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2009 Michael Terry
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2013 J.P. Krauss
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2021 Menno Smits
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2014 Havard Gulldahl
4
4
  # Copyright 2013 jno
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2016 Roman Yepishev
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2017 Tomas Vondra
4
4
  # Copyright 2017 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2020 Jose L. Domingo Lopez
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2020 Jose L. Domingo Lopez
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2015 Steve Tynor
4
4
  # Copyright 2016 Thomas Harning Jr
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  # vim:tabstop=4:shiftwidth=4:expandtab
3
3
  #
4
4
  # Copyright 2014 Google Inc.
@@ -92,7 +92,7 @@ class OneDriveBackend(duplicity.backend.Backend):
92
92
  def _list(self):
93
93
  accum = []
94
94
  # Strip last slash, because graph can give a 404 in some cases with it
95
- next_url = self.API_URI + self.directory_onedrive_path.rstrip("/") + ":/children"
95
+ next_url = f"{self.API_URI}{self.directory_onedrive_path.rstrip('/')}:/children"
96
96
  while True:
97
97
  response = self.http_client.get(next_url, timeout=config.timeout)
98
98
  if response.status_code == 404:
@@ -114,7 +114,7 @@ class OneDriveBackend(duplicity.backend.Backend):
114
114
  remote_filename = remote_filename.decode("UTF-8")
115
115
  with local_path.open("wb") as f:
116
116
  response = self.http_client.get(
117
- self.API_URI + self.directory_onedrive_path + remote_filename + ":/content",
117
+ f"{self.API_URI}{self.directory_onedrive_path}{remote_filename}:/content",
118
118
  stream=True,
119
119
  timeout=config.timeout,
120
120
  )
@@ -132,7 +132,7 @@ class OneDriveBackend(duplicity.backend.Backend):
132
132
  remote_filename = remote_filename.decode("UTF-8")
133
133
  source_size = os.path.getsize(source_path.name)
134
134
  start = time.time()
135
- response = self.http_client.get(self.API_URI + self.drive_root + "?$select=quota", timeout=config.timeout)
135
+ response = self.http_client.get(f"{self.API_URI}{self.drive_root}?$select=quota", timeout=config.timeout)
136
136
  response.raise_for_status()
137
137
  if "quota" in response.json():
138
138
  available = response.json()["quota"].get("remaining", None)
@@ -149,7 +149,7 @@ class OneDriveBackend(duplicity.backend.Backend):
149
149
 
150
150
  with source_path.open() as source_file:
151
151
  start = time.time()
152
- url = self.API_URI + self.directory_onedrive_path + remote_filename + ":/createUploadSession"
152
+ url = f"{self.API_URI}{self.directory_onedrive_path}{remote_filename}:/createUploadSession"
153
153
 
154
154
  response = self.http_client.post(url, timeout=config.timeout)
155
155
  response.raise_for_status()
@@ -309,7 +309,7 @@ class DefaultOAuth2Session(OneDriveOAuth2Session):
309
309
  # refreshed successfully, which will happen under the covers). In case
310
310
  # this request fails, the provided token was too old (i.e. expired),
311
311
  # and we need to get a new token.
312
- user_info_response = self.session.get(api_uri + "me", timeout=config.timeout)
312
+ user_info_response = self.session.get(f"{api_uri}me", timeout=config.timeout)
313
313
  if user_info_response.status_code != 200:
314
314
  token = None
315
315
 
@@ -335,7 +335,7 @@ class DefaultOAuth2Session(OneDriveOAuth2Session):
335
335
  timeout=config.timeout,
336
336
  )
337
337
 
338
- user_info_response = self.session.get(api_uri + "me", timeout=config.timeout)
338
+ user_info_response = self.session.get(f"{api_uri}me", timeout=config.timeout)
339
339
  user_info_response.raise_for_status()
340
340
 
341
341
  try:
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2013 Germar Reitze
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2013 Matthieu Huin
4
4
  # Copyright 2017 Xavier Lucas
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2015 Yigal Asnis
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright (c) 2014 Gu1
4
4
  # Licensed under the MIT license
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2019 Francesco Magno
4
4
  # Copyright 2019 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -106,10 +106,10 @@ class S3Boto3Backend(duplicity.backend.Backend):
106
106
  if config.s3_endpoint_url and not re.match(
107
107
  pattern="(?i).*\\.amazonaws\\.com(/+)?$", string=config.s3_endpoint_url
108
108
  ):
109
- log.Warn(
110
- "WARNING: Using boto3 >= 1,36.0 with non-amazon s3 services"
111
- " may result in checksum errors."
112
- " a workaround is to set the following env vars\n\n"
109
+ log.Notice(
110
+ "WARNING: If boto3 >= 1,36.0 with non-amazon s3 services"
111
+ " results in checksum errors preventing uploads you may try"
112
+ " the following workaround. set the following env vars\n\n"
113
113
  " export AWS_REQUEST_CHECKSUM_CALCULATION=when_required\n"
114
114
  " export AWS_RESPONSE_CHECKSUM_VALIDATION=when_required\n\n"
115
115
  "see https://gitlab.com/duplicity/duplicity/-/issues/870 for details."
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2021 Syeam Bin Abdullah
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2013 Matthieu Huin
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2014 Andrea Grandi
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2008 Francois Deppierraz
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escotodo
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2012 Google Inc.
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2022 Kenneth Loafman
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2022 Kenneth Loafman
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2022 Kenneth Loafman
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # duplicity -- Encrypted bandwidth efficient backup
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2013 Michael Terry
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2011 Fabian Topfstedt
4
4
  #
@@ -1,4 +1,4 @@
1
- # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; encoding:utf-8 -*-
1
+ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4; coding:utf-8 -*-
2
2
  #
3
3
  # Copyright 2002 Ben Escoto
4
4
  # Copyright 2007 Kenneth Loafman