Merge lp:~mgorse/duplicity/0.8-series into lp:~duplicity-team/duplicity/0.8-series
- 0.8-series
- Merge into 0.8-series
Proposed by
Mgorse
Status: | Merged | ||||
---|---|---|---|---|---|
Merged at revision: | 1339 | ||||
Proposed branch: | lp:~mgorse/duplicity/0.8-series | ||||
Merge into: | lp:~duplicity-team/duplicity/0.8-series | ||||
Diff against target: |
385 lines (+46/-37) 19 files modified
bin/duplicity (+3/-3) bin/rdiffdir (+2/-1) duplicity/backend.py (+2/-2) duplicity/backends/adbackend.py (+1/-0) duplicity/backends/dpbxbackend.py (+7/-6) duplicity/backends/gdocsbackend.py (+1/-0) duplicity/backends/megabackend.py (+1/-0) duplicity/backends/onedrivebackend.py (+1/-0) duplicity/backends/pyrax_identity/hubic.py (+4/-3) duplicity/backends/rsyncbackend.py (+2/-1) duplicity/collections.py (+1/-1) duplicity/diffdir.py (+1/-1) duplicity/dup_time.py (+2/-2) duplicity/gpg.py (+4/-4) duplicity/librsync.py (+1/-1) po/duplicity.pot (+3/-3) testing/functional/__init__.py (+6/-5) testing/unit/test_dup_time.py (+2/-2) testing/unit/test_manifest.py (+2/-2) |
||||
To merge this branch: | bzr merge lp:~mgorse/duplicity/0.8-series | ||||
Related bugs: |
|
||||
Related blueprints: |
Python 3 Support
(High)
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
duplicity-team | Pending | ||
Review via email: mp+356627@code.launchpad.net |
Commit message
Run futurize --stage1, and adjust so that tests still pass.
Description of the change
To post a comment you must log in.
lp:~mgorse/duplicity/0.8-series
updated
- 1339. By Kenneth Loafman
-
* Merged in lp:~mgorse/duplicity/0.8-series
- Run futurize --stage1, and adjust so that tests still pass.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'bin/duplicity' | |||
2 | --- bin/duplicity 2018-09-06 11:14:11 +0000 | |||
3 | +++ bin/duplicity 2018-10-12 01:45:30 +0000 | |||
4 | @@ -222,7 +222,7 @@ | |||
5 | 222 | """ | 222 | """ |
6 | 223 | try: | 223 | try: |
7 | 224 | # Just spin our wheels | 224 | # Just spin our wheels |
9 | 225 | while tarblock_iter.next(): | 225 | while next(tarblock_iter): |
10 | 226 | pass | 226 | pass |
11 | 227 | except StopIteration: | 227 | except StopIteration: |
12 | 228 | pass | 228 | pass |
13 | @@ -247,7 +247,7 @@ | |||
14 | 247 | last_block = globals.restart.last_block | 247 | last_block = globals.restart.last_block |
15 | 248 | try: | 248 | try: |
16 | 249 | # Just spin our wheels | 249 | # Just spin our wheels |
18 | 250 | iter_result = tarblock_iter.next() | 250 | iter_result = next(tarblock_iter) |
19 | 251 | while iter_result: | 251 | while iter_result: |
20 | 252 | if (tarblock_iter.previous_index == last_index): | 252 | if (tarblock_iter.previous_index == last_index): |
21 | 253 | # If both the previous index and this index are done, exit now | 253 | # If both the previous index and this index are done, exit now |
22 | @@ -266,7 +266,7 @@ | |||
23 | 266 | # We went too far! Stuff the data back into place before restarting | 266 | # We went too far! Stuff the data back into place before restarting |
24 | 267 | tarblock_iter.queue_index_data(iter_result) | 267 | tarblock_iter.queue_index_data(iter_result) |
25 | 268 | break | 268 | break |
27 | 269 | iter_result = tarblock_iter.next() | 269 | iter_result = next(tarblock_iter) |
28 | 270 | except StopIteration: | 270 | except StopIteration: |
29 | 271 | log.Warn(_(u"File %s missing in backup set.\n" | 271 | log.Warn(_(u"File %s missing in backup set.\n" |
30 | 272 | u"Continuing restart on file %s.") % | 272 | u"Continuing restart on file %s.") % |
31 | 273 | 273 | ||
32 | === modified file 'bin/rdiffdir' | |||
33 | --- bin/rdiffdir 2018-07-22 14:36:15 +0000 | |||
34 | +++ bin/rdiffdir 2018-10-12 01:45:30 +0000 | |||
35 | @@ -25,6 +25,7 @@ | |||
36 | 25 | # Please send mail to me or the mailing list if you find bugs or have | 25 | # Please send mail to me or the mailing list if you find bugs or have |
37 | 26 | # any suggestions. | 26 | # any suggestions. |
38 | 27 | 27 | ||
39 | 28 | from __future__ import print_function | ||
40 | 28 | import sys | 29 | import sys |
41 | 29 | import getopt | 30 | import getopt |
42 | 30 | import gzip | 31 | import gzip |
43 | @@ -97,7 +98,7 @@ | |||
44 | 97 | elif opt == u"--null-separator": | 98 | elif opt == u"--null-separator": |
45 | 98 | globals.null_separator = 1 | 99 | globals.null_separator = 1 |
46 | 99 | elif opt == u"-V": | 100 | elif opt == u"-V": |
48 | 100 | print u"rdiffdir", str(globals.version) | 101 | print(u"rdiffdir", str(globals.version)) |
49 | 101 | sys.exit(0) | 102 | sys.exit(0) |
50 | 102 | elif opt == u"-v" or opt == u"--verbosity": | 103 | elif opt == u"-v" or opt == u"--verbosity": |
51 | 103 | log.setverbosity(int(arg)) | 104 | log.setverbosity(int(arg)) |
52 | 104 | 105 | ||
53 | === modified file 'duplicity/backend.py' | |||
54 | --- duplicity/backend.py 2018-09-11 21:35:37 +0000 | |||
55 | +++ duplicity/backend.py 2018-10-12 01:45:30 +0000 | |||
56 | @@ -477,7 +477,7 @@ | |||
57 | 477 | """ | 477 | """ |
58 | 478 | import shlex | 478 | import shlex |
59 | 479 | 479 | ||
61 | 480 | if isinstance(commandline, (types.ListType, types.TupleType)): | 480 | if isinstance(commandline, (list, tuple)): |
62 | 481 | logstr = u' '.join(commandline) | 481 | logstr = u' '.join(commandline) |
63 | 482 | args = commandline | 482 | args = commandline |
64 | 483 | else: | 483 | else: |
65 | @@ -583,7 +583,7 @@ | |||
66 | 583 | u""" | 583 | u""" |
67 | 584 | Delete each filename in filename_list, in order if possible. | 584 | Delete each filename in filename_list, in order if possible. |
68 | 585 | """ | 585 | """ |
70 | 586 | assert not isinstance(filename_list, types.StringType) | 586 | assert not isinstance(filename_list, bytes) |
71 | 587 | if hasattr(self.backend, u'_delete_list'): | 587 | if hasattr(self.backend, u'_delete_list'): |
72 | 588 | self._do_delete_list(filename_list) | 588 | self._do_delete_list(filename_list) |
73 | 589 | elif hasattr(self.backend, u'_delete'): | 589 | elif hasattr(self.backend, u'_delete'): |
74 | 590 | 590 | ||
75 | === modified file 'duplicity/backends/adbackend.py' | |||
76 | --- duplicity/backends/adbackend.py 2018-07-23 14:55:39 +0000 | |||
77 | +++ duplicity/backends/adbackend.py 2018-10-12 01:45:30 +0000 | |||
78 | @@ -1,3 +1,4 @@ | |||
79 | 1 | from __future__ import print_function | ||
80 | 1 | # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- | 2 | # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- |
81 | 2 | # | 3 | # |
82 | 3 | # Copyright 2016 Stefan Breunig <stefan-duplicity@breunig.xyz> | 4 | # Copyright 2016 Stefan Breunig <stefan-duplicity@breunig.xyz> |
83 | 4 | 5 | ||
84 | === modified file 'duplicity/backends/dpbxbackend.py' | |||
85 | --- duplicity/backends/dpbxbackend.py 2018-10-04 14:46:47 +0000 | |||
86 | +++ duplicity/backends/dpbxbackend.py 2018-10-12 01:45:30 +0000 | |||
87 | @@ -1,3 +1,4 @@ | |||
88 | 1 | from __future__ import print_function | ||
89 | 1 | # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- | 2 | # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- |
90 | 2 | # | 3 | # |
91 | 3 | # Copyright 2013 jno <jno@pisem.net> | 4 | # Copyright 2013 jno <jno@pisem.net> |
92 | @@ -148,12 +149,12 @@ | |||
93 | 148 | auth_flow = DropboxOAuth2FlowNoRedirect(app_key, app_secret) | 149 | auth_flow = DropboxOAuth2FlowNoRedirect(app_key, app_secret) |
94 | 149 | log.Debug(u'dpbx,auth_flow.start()') | 150 | log.Debug(u'dpbx,auth_flow.start()') |
95 | 150 | authorize_url = auth_flow.start() | 151 | authorize_url = auth_flow.start() |
102 | 151 | 152 | print() | |
103 | 152 | print u'-' * 72 | 153 | print(u'-' * 72) |
104 | 153 | print u"1. Go to: " + authorize_url | 154 | print(u"1. Go to: " + authorize_url) |
105 | 154 | print u"2. Click \"Allow\" (you might have to log in first)." | 155 | print(u"2. Click \"Allow\" (you might have to log in first).") |
106 | 155 | print u"3. Copy the authorization code." | 156 | print(u"3. Copy the authorization code.") |
107 | 156 | print u'-' * 72 | 157 | print(u'-' * 72) |
108 | 157 | auth_code = raw_input(u"Enter the authorization code here: ").strip() | 158 | auth_code = raw_input(u"Enter the authorization code here: ").strip() |
109 | 158 | try: | 159 | try: |
110 | 159 | log.Debug(u'dpbx,auth_flow.finish(%s)' % auth_code) | 160 | log.Debug(u'dpbx,auth_flow.finish(%s)' % auth_code) |
111 | 160 | 161 | ||
112 | === modified file 'duplicity/backends/gdocsbackend.py' | |||
113 | --- duplicity/backends/gdocsbackend.py 2018-07-23 14:55:39 +0000 | |||
114 | +++ duplicity/backends/gdocsbackend.py 2018-10-12 01:45:30 +0000 | |||
115 | @@ -1,3 +1,4 @@ | |||
116 | 1 | from __future__ import print_function | ||
117 | 1 | # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- | 2 | # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- |
118 | 2 | # | 3 | # |
119 | 3 | # Copyright 2011 Carlos Abalde <carlos.abalde@gmail.com> | 4 | # Copyright 2011 Carlos Abalde <carlos.abalde@gmail.com> |
120 | 4 | 5 | ||
121 | === modified file 'duplicity/backends/megabackend.py' | |||
122 | --- duplicity/backends/megabackend.py 2018-07-23 14:55:39 +0000 | |||
123 | +++ duplicity/backends/megabackend.py 2018-10-12 01:45:30 +0000 | |||
124 | @@ -1,3 +1,4 @@ | |||
125 | 1 | from __future__ import print_function | ||
126 | 1 | # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- | 2 | # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- |
127 | 2 | # | 3 | # |
128 | 3 | # Copyright 2017 Tomas Vondra (Launchpad id: tomas-v) | 4 | # Copyright 2017 Tomas Vondra (Launchpad id: tomas-v) |
129 | 4 | 5 | ||
130 | === modified file 'duplicity/backends/onedrivebackend.py' | |||
131 | --- duplicity/backends/onedrivebackend.py 2018-07-23 14:55:39 +0000 | |||
132 | +++ duplicity/backends/onedrivebackend.py 2018-10-12 01:45:30 +0000 | |||
133 | @@ -1,3 +1,4 @@ | |||
134 | 1 | from __future__ import print_function | ||
135 | 1 | # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- | 2 | # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- |
136 | 2 | # vim:tabstop=4:shiftwidth=4:expandtab | 3 | # vim:tabstop=4:shiftwidth=4:expandtab |
137 | 3 | # | 4 | # |
138 | 4 | 5 | ||
139 | === modified file 'duplicity/backends/pyrax_identity/hubic.py' | |||
140 | --- duplicity/backends/pyrax_identity/hubic.py 2018-07-23 14:55:39 +0000 | |||
141 | +++ duplicity/backends/pyrax_identity/hubic.py 2018-10-12 01:45:30 +0000 | |||
142 | @@ -3,6 +3,7 @@ | |||
143 | 3 | # Copyright (c) 2014 Gu1 | 3 | # Copyright (c) 2014 Gu1 |
144 | 4 | # Licensed under the MIT license | 4 | # Licensed under the MIT license |
145 | 5 | 5 | ||
146 | 6 | from __future__ import print_function | ||
147 | 6 | import ConfigParser | 7 | import ConfigParser |
148 | 7 | import os | 8 | import os |
149 | 8 | import re | 9 | import re |
150 | @@ -122,12 +123,12 @@ | |||
151 | 122 | config.remove_option(u"hubic", u"email") | 123 | config.remove_option(u"hubic", u"email") |
152 | 123 | with open(TOKENS_FILE, u'wb') as configfile: | 124 | with open(TOKENS_FILE, u'wb') as configfile: |
153 | 124 | config.write(configfile) | 125 | config.write(configfile) |
155 | 125 | print u"username has been removed from the .hubic_tokens file sent to the CE." | 126 | print(u"username has been removed from the .hubic_tokens file sent to the CE.") |
156 | 126 | if config.has_option(u"hubic", u"password"): | 127 | if config.has_option(u"hubic", u"password"): |
157 | 127 | config.remove_option(u"hubic", u"password") | 128 | config.remove_option(u"hubic", u"password") |
158 | 128 | with open(TOKENS_FILE, u'wb') as configfile: | 129 | with open(TOKENS_FILE, u'wb') as configfile: |
159 | 129 | config.write(configfile) | 130 | config.write(configfile) |
161 | 130 | print u"password has been removed from the .hubic_tokens file sent to the CE." | 131 | print(u"password has been removed from the .hubic_tokens file sent to the CE.") |
162 | 131 | 132 | ||
163 | 132 | return oauth_token | 133 | return oauth_token |
164 | 133 | 134 | ||
165 | @@ -157,7 +158,7 @@ | |||
166 | 157 | ) | 158 | ) |
167 | 158 | if r.status_code != 200: | 159 | if r.status_code != 200: |
168 | 159 | if r.status_code == 509: | 160 | if r.status_code == 509: |
170 | 160 | print u"status_code 509: attempt #", retries, u" failed" | 161 | print(u"status_code 509: attempt #", retries, u" failed") |
171 | 161 | retries += 1 | 162 | retries += 1 |
172 | 162 | time.sleep(sleep_time) | 163 | time.sleep(sleep_time) |
173 | 163 | sleep_time = sleep_time * 2 | 164 | sleep_time = sleep_time * 2 |
174 | 164 | 165 | ||
175 | === modified file 'duplicity/backends/rsyncbackend.py' | |||
176 | --- duplicity/backends/rsyncbackend.py 2018-07-23 14:55:39 +0000 | |||
177 | +++ duplicity/backends/rsyncbackend.py 2018-10-12 01:45:30 +0000 | |||
178 | @@ -1,3 +1,4 @@ | |||
179 | 1 | from __future__ import print_function | ||
180 | 1 | # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- | 2 | # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- |
181 | 2 | # | 3 | # |
182 | 3 | # Copyright 2002 Ben Escoto <ben@emerose.org> | 4 | # Copyright 2002 Ben Escoto <ben@emerose.org> |
183 | @@ -143,7 +144,7 @@ | |||
184 | 143 | path = os.path.join(dir, file) | 144 | path = os.path.join(dir, file) |
185 | 144 | to_delete.append(path) | 145 | to_delete.append(path) |
186 | 145 | f = open(path, u'w') | 146 | f = open(path, u'w') |
188 | 146 | print >> exclude, file | 147 | print(file, file=exclude) |
189 | 147 | f.close() | 148 | f.close() |
190 | 148 | exclude.close() | 149 | exclude.close() |
191 | 149 | commandline = (u"%s --recursive --delete --exclude-from=%s %s/ %s" % | 150 | commandline = (u"%s --recursive --delete --exclude-from=%s %s/ %s" % |
192 | 150 | 151 | ||
193 | === modified file 'duplicity/collections.py' | |||
194 | --- duplicity/collections.py 2018-09-11 21:35:37 +0000 | |||
195 | +++ duplicity/collections.py 2018-10-12 01:45:30 +0000 | |||
196 | @@ -39,7 +39,7 @@ | |||
197 | 39 | 39 | ||
198 | 40 | # For type testing against both int and long types that works in python 2/3 | 40 | # For type testing against both int and long types that works in python 2/3 |
199 | 41 | if sys.version_info < (3,): | 41 | if sys.version_info < (3,): |
201 | 42 | integer_types = (int, types.LongType) | 42 | integer_types = (int, int) |
202 | 43 | else: | 43 | else: |
203 | 44 | integer_types = (int,) | 44 | integer_types = (int,) |
204 | 45 | 45 | ||
205 | 46 | 46 | ||
206 | === modified file 'duplicity/diffdir.py' | |||
207 | --- duplicity/diffdir.py 2018-09-24 17:02:42 +0000 | |||
208 | +++ duplicity/diffdir.py 2018-10-12 01:45:30 +0000 | |||
209 | @@ -717,7 +717,7 @@ | |||
210 | 717 | """ | 717 | """ |
211 | 718 | if isinstance(out_obj, Path): | 718 | if isinstance(out_obj, Path): |
212 | 719 | fp = open(out_obj.name, u"wb") | 719 | fp = open(out_obj.name, u"wb") |
214 | 720 | elif isinstance(out_obj, types.StringTypes): | 720 | elif isinstance(out_obj, (str, u"".__class__)): |
215 | 721 | fp = open(out_obj, u"wb") | 721 | fp = open(out_obj, u"wb") |
216 | 722 | else: | 722 | else: |
217 | 723 | fp = out_obj | 723 | fp = out_obj |
218 | 724 | 724 | ||
219 | === modified file 'duplicity/dup_time.py' | |||
220 | --- duplicity/dup_time.py 2018-09-11 21:35:37 +0000 | |||
221 | +++ duplicity/dup_time.py 2018-10-12 01:45:30 +0000 | |||
222 | @@ -260,10 +260,10 @@ | |||
223 | 260 | 260 | ||
224 | 261 | def cmp(time1, time2): | 261 | def cmp(time1, time2): |
225 | 262 | u"""Compare time1 and time2 and return -1, 0, or 1""" | 262 | u"""Compare time1 and time2 and return -1, 0, or 1""" |
227 | 263 | if isinstance(time1, types.StringTypes): | 263 | if isinstance(time1, (str, u"".__class__)): |
228 | 264 | time1 = stringtotime(time1) | 264 | time1 = stringtotime(time1) |
229 | 265 | assert time1 is not None | 265 | assert time1 is not None |
231 | 266 | if isinstance(time2, types.StringTypes): | 266 | if isinstance(time2, (str, u"".__class__)): |
232 | 267 | time2 = stringtotime(time2) | 267 | time2 = stringtotime(time2) |
233 | 268 | assert time2 is not None | 268 | assert time2 is not None |
234 | 269 | 269 | ||
235 | 270 | 270 | ||
236 | === modified file 'duplicity/gpg.py' | |||
237 | --- duplicity/gpg.py 2018-09-11 21:35:37 +0000 | |||
238 | +++ duplicity/gpg.py 2018-10-12 01:45:30 +0000 | |||
239 | @@ -71,20 +71,20 @@ | |||
240 | 71 | indicated, and recipients should be a list of keys. For all | 71 | indicated, and recipients should be a list of keys. For all |
241 | 72 | keys, the format should be an hex key like 'AA0E73D2'. | 72 | keys, the format should be an hex key like 'AA0E73D2'. |
242 | 73 | """ | 73 | """ |
244 | 74 | assert passphrase is None or isinstance(passphrase, types.StringTypes) | 74 | assert passphrase is None or isinstance(passphrase, (str, u"".__class__)) |
245 | 75 | 75 | ||
246 | 76 | self.passphrase = passphrase | 76 | self.passphrase = passphrase |
247 | 77 | self.signing_passphrase = passphrase | 77 | self.signing_passphrase = passphrase |
248 | 78 | self.sign_key = sign_key | 78 | self.sign_key = sign_key |
249 | 79 | self.encrypt_secring = None | 79 | self.encrypt_secring = None |
250 | 80 | if recipients is not None: | 80 | if recipients is not None: |
252 | 81 | assert isinstance(recipients, types.ListType) # must be list, not tuple | 81 | assert isinstance(recipients, list) # must be list, not tuple |
253 | 82 | self.recipients = recipients | 82 | self.recipients = recipients |
254 | 83 | else: | 83 | else: |
255 | 84 | self.recipients = [] | 84 | self.recipients = [] |
256 | 85 | 85 | ||
257 | 86 | if hidden_recipients is not None: | 86 | if hidden_recipients is not None: |
259 | 87 | assert isinstance(hidden_recipients, types.ListType) # must be list, not tuple | 87 | assert isinstance(hidden_recipients, list) # must be list, not tuple |
260 | 88 | self.hidden_recipients = hidden_recipients | 88 | self.hidden_recipients = hidden_recipients |
261 | 89 | else: | 89 | else: |
262 | 90 | self.hidden_recipients = [] | 90 | self.hidden_recipients = [] |
263 | @@ -444,7 +444,7 @@ | |||
264 | 444 | if bytes_to_go < block_iter.get_read_size(): | 444 | if bytes_to_go < block_iter.get_read_size(): |
265 | 445 | break | 445 | break |
266 | 446 | try: | 446 | try: |
268 | 447 | new_block = block_iter.next() | 447 | new_block = next(block_iter) |
269 | 448 | except StopIteration: | 448 | except StopIteration: |
270 | 449 | at_end_of_blockiter = 1 | 449 | at_end_of_blockiter = 1 |
271 | 450 | break | 450 | break |
272 | 451 | 451 | ||
273 | === modified file 'duplicity/librsync.py' | |||
274 | --- duplicity/librsync.py 2018-09-11 21:35:37 +0000 | |||
275 | +++ duplicity/librsync.py 2018-10-12 01:45:30 +0000 | |||
276 | @@ -149,7 +149,7 @@ | |||
277 | 149 | 149 | ||
278 | 150 | """ | 150 | """ |
279 | 151 | LikeFile.__init__(self, new_file) | 151 | LikeFile.__init__(self, new_file) |
281 | 152 | if isinstance(signature, types.StringType): | 152 | if isinstance(signature, bytes): |
282 | 153 | sig_string = signature | 153 | sig_string = signature |
283 | 154 | else: | 154 | else: |
284 | 155 | self.check_file(signature) | 155 | self.check_file(signature) |
285 | 156 | 156 | ||
286 | === modified file 'po/duplicity.pot' | |||
287 | --- po/duplicity.pot 2018-10-11 20:10:01 +0000 | |||
288 | +++ po/duplicity.pot 2018-10-12 01:45:30 +0000 | |||
289 | @@ -8,7 +8,7 @@ | |||
290 | 8 | msgstr "" | 8 | msgstr "" |
291 | 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
292 | 10 | "Report-Msgid-Bugs-To: Kenneth Loafman <kenneth@loafman.com>\n" | 10 | "Report-Msgid-Bugs-To: Kenneth Loafman <kenneth@loafman.com>\n" |
294 | 11 | "POT-Creation-Date: 2018-10-11 14:51-0500\n" | 11 | "POT-Creation-Date: 2018-10-11 20:32-0500\n" |
295 | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
296 | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
297 | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
298 | @@ -395,12 +395,12 @@ | |||
299 | 395 | msgid "Backend error detail: %s" | 395 | msgid "Backend error detail: %s" |
300 | 396 | msgstr "" | 396 | msgstr "" |
301 | 397 | 397 | ||
303 | 398 | #: ../bin/rdiffdir:61 ../duplicity/commandline.py:263 | 398 | #: ../bin/rdiffdir:62 ../duplicity/commandline.py:263 |
304 | 399 | #, python-format | 399 | #, python-format |
305 | 400 | msgid "Error opening file %s" | 400 | msgid "Error opening file %s" |
306 | 401 | msgstr "" | 401 | msgstr "" |
307 | 402 | 402 | ||
309 | 403 | #: ../bin/rdiffdir:128 | 403 | #: ../bin/rdiffdir:129 |
310 | 404 | #, python-format | 404 | #, python-format |
311 | 405 | msgid "File %s already exists, will not overwrite." | 405 | msgid "File %s already exists, will not overwrite." |
312 | 406 | msgstr "" | 406 | msgstr "" |
313 | 407 | 407 | ||
314 | === modified file 'testing/functional/__init__.py' | |||
315 | --- testing/functional/__init__.py 2018-07-24 20:57:03 +0000 | |||
316 | +++ testing/functional/__init__.py 2018-10-12 01:45:30 +0000 | |||
317 | @@ -1,3 +1,4 @@ | |||
318 | 1 | from __future__ import print_function | ||
319 | 1 | # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- | 2 | # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- |
320 | 2 | # | 3 | # |
321 | 3 | # Copyright 2012 Canonical Ltd | 4 | # Copyright 2012 Canonical Ltd |
322 | @@ -148,14 +149,14 @@ | |||
323 | 148 | if fail: | 149 | if fail: |
324 | 149 | self.assertEqual(30, return_val) | 150 | self.assertEqual(30, return_val) |
325 | 150 | elif return_val: | 151 | elif return_val: |
329 | 151 | print >>sys.stderr, u"\n...command:", cmdline | 152 | print(u"\n...command:", cmdline, file=sys.stderr) |
330 | 152 | print >>sys.stderr, u"...cwd:", os.getcwd() | 153 | print(u"...cwd:", os.getcwd(), file=sys.stderr) |
331 | 153 | print >>sys.stderr, u"...output:" | 154 | print(u"...output:", file=sys.stderr) |
332 | 154 | for line in lines: | 155 | for line in lines: |
333 | 155 | line = line.rstrip() | 156 | line = line.rstrip() |
334 | 156 | if line: | 157 | if line: |
337 | 157 | print >>sys.stderr, line | 158 | print(line, file=sys.stderr) |
338 | 158 | print >>sys.stderr, u"...return_val:", return_val | 159 | print(u"...return_val:", return_val, file=sys.stderr) |
339 | 159 | raise CmdError(return_val) | 160 | raise CmdError(return_val) |
340 | 160 | 161 | ||
341 | 161 | def backup(self, type, input_dir, options=[], **kwargs): | 162 | def backup(self, type, input_dir, options=[], **kwargs): |
342 | 162 | 163 | ||
343 | === modified file 'testing/unit/test_dup_time.py' | |||
344 | --- testing/unit/test_dup_time.py 2018-07-27 02:18:12 +0000 | |||
345 | +++ testing/unit/test_dup_time.py 2018-10-12 01:45:30 +0000 | |||
346 | @@ -28,7 +28,7 @@ | |||
347 | 28 | 28 | ||
348 | 29 | # For type testing against both int and long types that works in python 2/3 | 29 | # For type testing against both int and long types that works in python 2/3 |
349 | 30 | if sys.version_info < (3,): | 30 | if sys.version_info < (3,): |
351 | 31 | integer_types = (int, types.LongType) | 31 | integer_types = (int, int) |
352 | 32 | else: | 32 | else: |
353 | 33 | integer_types = (int,) | 33 | integer_types = (int,) |
354 | 34 | 34 | ||
355 | @@ -38,7 +38,7 @@ | |||
356 | 38 | u"""test timetostring and stringtotime""" | 38 | u"""test timetostring and stringtotime""" |
357 | 39 | dup_time.setcurtime() | 39 | dup_time.setcurtime() |
358 | 40 | assert type(dup_time.curtime) in integer_types | 40 | assert type(dup_time.curtime) in integer_types |
360 | 41 | assert isinstance(dup_time.curtimestr, types.StringTypes) | 41 | assert isinstance(dup_time.curtimestr, (str, u"".__class__)) |
361 | 42 | assert (dup_time.cmp(int(dup_time.curtime), dup_time.curtimestr) == 0 or | 42 | assert (dup_time.cmp(int(dup_time.curtime), dup_time.curtimestr) == 0 or |
362 | 43 | dup_time.cmp(int(dup_time.curtime) + 1, dup_time.curtimestr) == 0) | 43 | dup_time.cmp(int(dup_time.curtime) + 1, dup_time.curtimestr) == 0) |
363 | 44 | time.sleep(1.05) | 44 | time.sleep(1.05) |
364 | 45 | 45 | ||
365 | === modified file 'testing/unit/test_manifest.py' | |||
366 | --- testing/unit/test_manifest.py 2018-07-27 02:18:12 +0000 | |||
367 | +++ testing/unit/test_manifest.py 2018-10-12 01:45:30 +0000 | |||
368 | @@ -40,7 +40,7 @@ | |||
369 | 40 | vi.set_info(3, (u"hello", u"there"), None, (), None) | 40 | vi.set_info(3, (u"hello", u"there"), None, (), None) |
370 | 41 | vi.set_hash(u"MD5", u"aoseutaohe") | 41 | vi.set_hash(u"MD5", u"aoseutaohe") |
371 | 42 | s = vi.to_string() | 42 | s = vi.to_string() |
373 | 43 | assert isinstance(s, types.StringTypes) | 43 | assert isinstance(s, (str, u"".__class__)) |
374 | 44 | # print "---------\n%s\n---------" % s | 44 | # print "---------\n%s\n---------" % s |
375 | 45 | vi2 = manifest.VolumeInfo() | 45 | vi2 = manifest.VolumeInfo() |
376 | 46 | vi2.from_string(s) | 46 | vi2.from_string(s) |
377 | @@ -55,7 +55,7 @@ | |||
378 | 55 | (r"\n",), | 55 | (r"\n",), |
379 | 56 | None) | 56 | None) |
380 | 57 | s = vi.to_string() | 57 | s = vi.to_string() |
382 | 58 | assert isinstance(s, types.StringTypes) | 58 | assert isinstance(s, (str, u"".__class__)) |
383 | 59 | # print "---------\n%s\n---------" % s | 59 | # print "---------\n%s\n---------" % s |
384 | 60 | vi2 = manifest.VolumeInfo() | 60 | vi2 = manifest.VolumeInfo() |
385 | 61 | vi2.from_string(s) | 61 | vi2.from_string(s) |