Merge lp:~pieq/checkbox/fix-1609325-longer-SID into lp:checkbox
- fix-1609325-longer-SID
- Merge into trunk
Status: | Merged | ||||
---|---|---|---|---|---|
Approved by: | Maciej Kisielewski | ||||
Approved revision: | 4461 | ||||
Merged at revision: | 4458 | ||||
Proposed branch: | lp:~pieq/checkbox/fix-1609325-longer-SID | ||||
Merge into: | lp:checkbox | ||||
Diff against target: |
2149 lines (+402/-404) 9 files modified
checkbox-ng/checkbox_ng/certification.py (+2/-2) checkbox-ng/checkbox_ng/commands/newcli.py (+2/-2) checkbox-ng/checkbox_ng/commands/submit.py (+1/-1) checkbox-ng/checkbox_ng/test_certification.py (+5/-5) checkbox-ng/po/checkbox-ng.pot (+69/-121) plainbox/plainbox/impl/transport.py (+3/-3) plainbox/po/POTFILES.in (+0/-1) plainbox/po/plainbox.pot (+318/-267) tools/canonical-hw-collection/canonical-hw-collection (+2/-2) |
||||
To merge this branch: | bzr merge lp:~pieq/checkbox/fix-1609325-longer-SID | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Maciej Kisielewski | Approve | ||
Paul Larson | Approve | ||
Review via email: mp+301922@code.launchpad.net |
Commit message
Description of the change
Allow Secure IDs of more than 18 chars to be used when submitting to Certification
HEXR now uses Secure IDs (SID) made of 22 alphanumeric characters. However,
most scripts used in Checkbox/Plainbox were expecting 15 or 18 characters.
To test, you can use different ways of submitting:
1. run a launcher pointing to certification-
The launcher looks like this:
-------
#!/usr/bin/env checkbox-cli
[launcher]
launcher_version = 1
app_id = 2016.com.
stock_reports = text, submission_files, certification-
[ui]
type = interactive
[transport:c3]
secure_id = mXat4w43eMNP3Y2
-------
(of course you have to adjust the secure_id to your needs)
2. run the 'checkbox submit' tool (see --help for more info)
3. use the 'canonical-
Maciej Kisielewski (kissiel) wrote : | # |
There is a unit-test for SECURE_ID in test_certificat
Update that and I'm +1 :)
- 4461. By Pierre Equoy
-
checkbox-ng: Adapt unit test for longer SID
Pierre Equoy (pieq) wrote : | # |
Fixed unit test to only raise exception for SID shorter than 15 chars.
Maciej Kisielewski (kissiel) wrote : | # |
+1, let's land it!
Preview Diff
1 | === modified file 'checkbox-ng/checkbox_ng/certification.py' |
2 | --- checkbox-ng/checkbox_ng/certification.py 2016-07-26 12:41:32 +0000 |
3 | +++ checkbox-ng/checkbox_ng/certification.py 2016-08-03 18:15:33 +0000 |
4 | @@ -56,7 +56,7 @@ |
5 | Initialize the Certification Transport. |
6 | |
7 | The options string may contain 'secure_id' which must be |
8 | - a 15- or 18-character alphanumeric ID for the system. |
9 | + a 15-character (or longer) alphanumeric ID for the system. |
10 | |
11 | It may also contain a submit_to_hexr boolean, set to 1 |
12 | to enable submission to hexr. |
13 | @@ -178,4 +178,4 @@ |
14 | def _validate_secure_id(self, secure_id): |
15 | if not re.match(SECURE_ID_PATTERN, secure_id): |
16 | raise InvalidSecureIDError( |
17 | - _("secure_id must be 15 or 18-character alphanumeric string")) |
18 | + _("secure_id must be 15-character (or more) alphanumeric string")) |
19 | |
20 | === modified file 'checkbox-ng/checkbox_ng/commands/newcli.py' |
21 | --- checkbox-ng/checkbox_ng/commands/newcli.py 2016-02-25 18:35:48 +0000 |
22 | +++ checkbox-ng/checkbox_ng/commands/newcli.py 2016-08-03 18:15:33 +0000 |
23 | @@ -404,8 +404,8 @@ |
24 | self.config.secure_id = input(_("Secure ID: ")) |
25 | except ValidationError: |
26 | print( |
27 | - _("ERROR: Secure ID must be 15 or " |
28 | - "18-character alphanumeric string")) |
29 | + _("ERROR: Secure ID must be 15-character " |
30 | + "(or more) alphanumeric string")) |
31 | else: |
32 | again = False |
33 | self.submit_certification_results() |
34 | |
35 | === modified file 'checkbox-ng/checkbox_ng/commands/submit.py' |
36 | --- checkbox-ng/checkbox_ng/commands/submit.py 2016-07-26 12:41:32 +0000 |
37 | +++ checkbox-ng/checkbox_ng/commands/submit.py 2016-08-03 18:15:33 +0000 |
38 | @@ -111,7 +111,7 @@ |
39 | def secureid(secure_id): |
40 | if not re.match(SECURE_ID_PATTERN, secure_id): |
41 | raise ArgumentTypeError( |
42 | - _("must be 15 or 18-character alphanumeric string")) |
43 | + _("must be 15-character (or more) alphanumeric string")) |
44 | return secure_id |
45 | |
46 | required_check = False |
47 | |
48 | === modified file 'checkbox-ng/checkbox_ng/test_certification.py' |
49 | --- checkbox-ng/checkbox_ng/test_certification.py 2016-07-26 12:41:32 +0000 |
50 | +++ checkbox-ng/checkbox_ng/test_certification.py 2016-08-03 18:15:33 +0000 |
51 | @@ -71,11 +71,11 @@ |
52 | self.assertTrue(transport._submit_to_hexr is True) |
53 | |
54 | def test_invalid_length_secure_id_are_rejected(self): |
55 | - for length in (14, 16, 20): |
56 | - dummy_id = "a" * length |
57 | - option_string = "secure_id={}".format(dummy_id) |
58 | - with self.assertRaises(InvalidSecureIDError): |
59 | - CertificationTransport(self.valid_url, option_string) |
60 | + length = 14 |
61 | + dummy_id = "a" * length |
62 | + option_string = "secure_id={}".format(dummy_id) |
63 | + with self.assertRaises(InvalidSecureIDError): |
64 | + CertificationTransport(self.valid_url, option_string) |
65 | |
66 | def test_invalid_characters_in_secure_id_are_rejected(self): |
67 | option_string = "secure_id=aA0#" |
68 | |
69 | === modified file 'checkbox-ng/po/checkbox-ng.pot' |
70 | --- checkbox-ng/po/checkbox-ng.pot 2016-01-11 08:07:21 +0000 |
71 | +++ checkbox-ng/po/checkbox-ng.pot 2016-08-03 18:15:33 +0000 |
72 | @@ -8,7 +8,7 @@ |
73 | msgstr "" |
74 | "Project-Id-Version: PACKAGE VERSION\n" |
75 | "Report-Msgid-Bugs-To: \n" |
76 | -"POT-Creation-Date: 2016-01-11 16:06+0800\n" |
77 | +"POT-Creation-Date: 2016-08-03 16:58+0200\n" |
78 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
79 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
80 | "Language-Team: LANGUAGE <LL@li.org>\n" |
81 | @@ -17,39 +17,42 @@ |
82 | "Content-Type: text/plain; charset=CHARSET\n" |
83 | "Content-Transfer-Encoding: 8bit\n" |
84 | |
85 | -#: .././checkbox_ng/certification.py:135 |
86 | +#: .././checkbox_ng/certification.py:127 |
87 | msgid "Secure ID not specified" |
88 | msgstr "" |
89 | |
90 | -#: .././checkbox_ng/certification.py:138 |
91 | +#: .././checkbox_ng/certification.py:130 |
92 | #, python-format |
93 | -msgid "Sending to %s, hardware id is %s" |
94 | +msgid "Sending to %s, Secure ID is %s" |
95 | msgstr "" |
96 | |
97 | -#: .././checkbox_ng/certification.py:144 |
98 | +#: .././checkbox_ng/certification.py:136 |
99 | #, python-format |
100 | msgid "submit_to_hexr set to %s by config" |
101 | msgstr "" |
102 | |
103 | -#: .././checkbox_ng/certification.py:148 |
104 | +#: .././checkbox_ng/certification.py:140 |
105 | #, python-format |
106 | msgid "submit_to_hexr set to %s by UI" |
107 | msgstr "" |
108 | |
109 | -#: .././checkbox_ng/certification.py:164 .././checkbox_ng/launchpad.py:183 |
110 | +#: .././checkbox_ng/certification.py:156 .././checkbox_ng/launchpad.py:183 |
111 | +#, python-brace-format |
112 | msgid "Request to {0} timed out: {1}" |
113 | msgstr "" |
114 | |
115 | -#: .././checkbox_ng/certification.py:167 .././checkbox_ng/launchpad.py:186 |
116 | +#: .././checkbox_ng/certification.py:159 .././checkbox_ng/launchpad.py:186 |
117 | +#, python-brace-format |
118 | msgid "Invalid destination URL: {0}" |
119 | msgstr "" |
120 | |
121 | -#: .././checkbox_ng/certification.py:170 .././checkbox_ng/launchpad.py:189 |
122 | +#: .././checkbox_ng/certification.py:162 .././checkbox_ng/launchpad.py:189 |
123 | +#, python-brace-format |
124 | msgid "Unable to connect to {0}: {1}" |
125 | msgstr "" |
126 | |
127 | -#: .././checkbox_ng/certification.py:189 |
128 | -msgid "secure_id must be 15 or 18-character alphanumeric string" |
129 | +#: .././checkbox_ng/certification.py:181 |
130 | +msgid "secure_id must be 15-character (or more) alphanumeric string" |
131 | msgstr "" |
132 | |
133 | #: .././checkbox_ng/commands/cli.py:70 |
134 | @@ -57,12 +60,12 @@ |
135 | msgstr "" |
136 | |
137 | #: .././checkbox_ng/commands/cli.py:71 |
138 | -#: .././checkbox_ng/commands/launcher.py:108 |
139 | +#: .././checkbox_ng/commands/launcher.py:110 |
140 | msgid "user interface options" |
141 | msgstr "" |
142 | |
143 | #: .././checkbox_ng/commands/cli.py:77 |
144 | -#: .././checkbox_ng/commands/launcher.py:111 |
145 | +#: .././checkbox_ng/commands/launcher.py:113 |
146 | msgid "skip tests that require interactivity" |
147 | msgstr "" |
148 | |
149 | @@ -75,118 +78,125 @@ |
150 | msgid "Unable to load launcher definition: %s" |
151 | msgstr "" |
152 | |
153 | -#: .././checkbox_ng/commands/launcher.py:69 |
154 | +#: .././checkbox_ng/commands/launcher.py:71 |
155 | msgid "Unable to start launcher because of errors:" |
156 | msgstr "" |
157 | |
158 | -#: .././checkbox_ng/commands/launcher.py:102 |
159 | +#: .././checkbox_ng/commands/launcher.py:104 |
160 | msgid "LAUNCHER" |
161 | msgstr "" |
162 | |
163 | -#: .././checkbox_ng/commands/launcher.py:103 |
164 | +#: .././checkbox_ng/commands/launcher.py:105 |
165 | msgid "launcher definition file to use" |
166 | msgstr "" |
167 | |
168 | -#: .././checkbox_ng/commands/newcli.py:119 |
169 | -#: .././checkbox_ng/commands/newcli.py:130 |
170 | +#: .././checkbox_ng/commands/newcli.py:123 |
171 | +#: .././checkbox_ng/commands/newcli.py:134 |
172 | #, python-format |
173 | msgid "Incorrect pattern %r: %s" |
174 | msgstr "" |
175 | |
176 | -#: .././checkbox_ng/commands/newcli.py:147 |
177 | +#: .././checkbox_ng/commands/newcli.py:151 |
178 | #, python-format |
179 | msgid "There is no test plan: %s" |
180 | msgstr "" |
181 | |
182 | -#: .././checkbox_ng/commands/newcli.py:236 |
183 | +#: .././checkbox_ng/commands/newcli.py:240 |
184 | #, python-format |
185 | msgid "Selected testplans: %r" |
186 | msgstr "" |
187 | |
188 | -#: .././checkbox_ng/commands/newcli.py:259 |
189 | +#: .././checkbox_ng/commands/newcli.py:263 |
190 | msgid "Suite selection" |
191 | msgstr "" |
192 | |
193 | -#: .././checkbox_ng/commands/newcli.py:262 |
194 | +#: .././checkbox_ng/commands/newcli.py:266 |
195 | msgid "No testplan selected, aborting" |
196 | msgstr "" |
197 | |
198 | -#: .././checkbox_ng/commands/newcli.py:291 |
199 | +#: .././checkbox_ng/commands/newcli.py:295 |
200 | msgid "Selecting Job Generators" |
201 | msgstr "" |
202 | |
203 | -#: .././checkbox_ng/commands/newcli.py:310 |
204 | +#: .././checkbox_ng/commands/newcli.py:314 |
205 | msgid "Selecting Jobs For Execution" |
206 | msgstr "" |
207 | |
208 | -#: .././checkbox_ng/commands/newcli.py:317 |
209 | +#: .././checkbox_ng/commands/newcli.py:321 |
210 | msgid "Choose tests to run on your system:" |
211 | msgstr "" |
212 | |
213 | -#: .././checkbox_ng/commands/newcli.py:329 |
214 | +#: .././checkbox_ng/commands/newcli.py:333 |
215 | msgid "Results" |
216 | msgstr "" |
217 | |
218 | -#: .././checkbox_ng/commands/newcli.py:368 |
219 | +#: .././checkbox_ng/commands/newcli.py:372 |
220 | msgid "View results" |
221 | msgstr "" |
222 | |
223 | -#: .././checkbox_ng/commands/newcli.py:397 |
224 | +#: .././checkbox_ng/commands/newcli.py:401 |
225 | +#, python-brace-format |
226 | msgid "" |
227 | "\n" |
228 | "Submit results to {0}?" |
229 | msgstr "" |
230 | |
231 | -#: .././checkbox_ng/commands/newcli.py:400 |
232 | +#: .././checkbox_ng/commands/newcli.py:404 |
233 | msgid "Secure ID: " |
234 | msgstr "" |
235 | |
236 | -#: .././checkbox_ng/commands/newcli.py:403 |
237 | -msgid "ERROR: Secure ID must be 15 or 18-character alphanumeric string" |
238 | +#: .././checkbox_ng/commands/newcli.py:407 |
239 | +msgid "ERROR: Secure ID must be 15-character (or more) alphanumeric string" |
240 | msgstr "" |
241 | |
242 | -#: .././checkbox_ng/commands/newcli.py:421 |
243 | +#: .././checkbox_ng/commands/newcli.py:425 |
244 | msgid "" |
245 | "\n" |
246 | "Submit results to launchpad.net/+hwdb?" |
247 | msgstr "" |
248 | |
249 | -#: .././checkbox_ng/commands/newcli.py:423 |
250 | +#: .././checkbox_ng/commands/newcli.py:427 |
251 | msgid "Email address: " |
252 | msgstr "" |
253 | |
254 | #. TRANSLATORS: Do not translate the {} format markers. |
255 | -#: .././checkbox_ng/commands/newcli.py:439 |
256 | +#: .././checkbox_ng/commands/newcli.py:443 |
257 | +#, python-brace-format |
258 | msgid "Submitting results to {0} for email_address {1}" |
259 | msgstr "" |
260 | |
261 | #. TRANSLATORS: Do not translate the {} format marker. |
262 | -#: .././checkbox_ng/commands/newcli.py:450 |
263 | +#: .././checkbox_ng/commands/newcli.py:454 |
264 | +#, python-brace-format |
265 | msgid "Submission uploaded to: {0}" |
266 | msgstr "" |
267 | |
268 | -#: .././checkbox_ng/commands/newcli.py:456 |
269 | +#: .././checkbox_ng/commands/newcli.py:460 |
270 | +#, python-brace-format |
271 | msgid "Bad response from {0} transport" |
272 | msgstr "" |
273 | |
274 | #. TRANSLATORS: Do not translate the {} format markers. |
275 | -#: .././checkbox_ng/commands/newcli.py:464 |
276 | +#: .././checkbox_ng/commands/newcli.py:468 |
277 | +#, python-brace-format |
278 | msgid "Submitting results to {0} for secure_id {1}" |
279 | msgstr "" |
280 | |
281 | #. TRANSLATORS: Do not translate the {} format marker. |
282 | -#: .././checkbox_ng/commands/newcli.py:485 |
283 | +#: .././checkbox_ng/commands/newcli.py:489 |
284 | #: .././checkbox_ng/commands/submit.py:64 |
285 | +#, python-brace-format |
286 | msgid "Successfully sent, submission status at {0}" |
287 | msgstr "" |
288 | |
289 | #. TRANSLATORS: Do not translate the {} format marker. |
290 | -#: .././checkbox_ng/commands/newcli.py:489 |
291 | +#: .././checkbox_ng/commands/newcli.py:493 |
292 | #: .././checkbox_ng/commands/submit.py:68 |
293 | +#, python-brace-format |
294 | msgid "Successfully sent, server response: {0}" |
295 | msgstr "" |
296 | |
297 | -#: .././checkbox_ng/commands/newcli.py:514 |
298 | +#: .././checkbox_ng/commands/newcli.py:518 |
299 | msgid "Select jobs to re-run" |
300 | msgstr "" |
301 | |
302 | @@ -207,7 +217,7 @@ |
303 | msgid "load the specified test plan" |
304 | msgstr "" |
305 | |
306 | -#: .././checkbox_ng/commands/sru.py:71 .././checkbox_ng/config.py:88 |
307 | +#: .././checkbox_ng/commands/sru.py:71 .././checkbox_ng/config.py:86 |
308 | msgid "Send the data to non-production test server" |
309 | msgstr "" |
310 | |
311 | @@ -220,6 +230,7 @@ |
312 | msgstr "" |
313 | |
314 | #: .././checkbox_ng/commands/sru.py:113 |
315 | +#, python-brace-format |
316 | msgid "Results saved to {0}" |
317 | msgstr "" |
318 | |
319 | @@ -228,6 +239,7 @@ |
320 | msgstr "" |
321 | |
322 | #: .././checkbox_ng/commands/sru.py:119 |
323 | +#, python-brace-format |
324 | msgid "Server URL is: {0}" |
325 | msgstr "" |
326 | |
327 | @@ -265,7 +277,7 @@ |
328 | msgstr "" |
329 | |
330 | #: .././checkbox_ng/commands/submit.py:114 |
331 | -msgid "must be 15 or 18-character alphanumeric string" |
332 | +msgid "must be 15-character (or more) alphanumeric string" |
333 | msgstr "" |
334 | |
335 | #: .././checkbox_ng/commands/submit.py:124 |
336 | @@ -280,113 +292,49 @@ |
337 | msgid "destination to submit to" |
338 | msgstr "" |
339 | |
340 | -#: .././checkbox_ng/config.py:43 |
341 | +#: .././checkbox_ng/config.py:41 |
342 | msgid "Secure ID of the system" |
343 | msgstr "" |
344 | |
345 | -#: .././checkbox_ng/config.py:48 |
346 | +#: .././checkbox_ng/config.py:46 |
347 | msgid "Whether to send the submission data to c3" |
348 | msgstr "" |
349 | |
350 | -#: .././checkbox_ng/config.py:52 |
351 | +#: .././checkbox_ng/config.py:50 |
352 | msgid "Whether to also send the submission data to HEXR" |
353 | msgstr "" |
354 | |
355 | -#: .././checkbox_ng/config.py:58 |
356 | +#: .././checkbox_ng/config.py:56 |
357 | msgid "Email address to log into the Launchpad HWDB" |
358 | msgstr "" |
359 | |
360 | -#: .././checkbox_ng/config.py:63 |
361 | +#: .././checkbox_ng/config.py:61 |
362 | msgid "URL of the certification website" |
363 | msgstr "" |
364 | |
365 | -#: .././checkbox_ng/config.py:69 |
366 | +#: .././checkbox_ng/config.py:67 |
367 | msgid "URL of the launchpad hardware database" |
368 | msgstr "" |
369 | |
370 | -#: .././checkbox_ng/config.py:74 |
371 | +#: .././checkbox_ng/config.py:72 |
372 | msgid "Location of the fallback file" |
373 | msgstr "" |
374 | |
375 | -#: .././checkbox_ng/config.py:78 |
376 | +#: .././checkbox_ng/config.py:76 |
377 | msgid "Optional whitelist with which to run SRU testing" |
378 | msgstr "" |
379 | |
380 | -#: .././checkbox_ng/config.py:82 |
381 | +#: .././checkbox_ng/config.py:80 |
382 | msgid "Optional test plan with which to run SRU testing" |
383 | msgstr "" |
384 | |
385 | -#: .././checkbox_ng/launcher.py:47 |
386 | -msgid "Application Title" |
387 | -msgstr "" |
388 | - |
389 | -#: .././checkbox_ng/launcher.py:51 |
390 | -msgid "Welcome Message" |
391 | -msgstr "" |
392 | - |
393 | -#. TODO: valid regexp text validator |
394 | -#: .././checkbox_ng/launcher.py:56 |
395 | -msgid "Pattern that whitelists need to match to be displayed" |
396 | -msgstr "" |
397 | - |
398 | -#. TODO: valid regexp text validator |
399 | -#: .././checkbox_ng/launcher.py:61 |
400 | -msgid "Pattern that whitelists need to match to be selected" |
401 | -msgstr "" |
402 | - |
403 | -#: .././checkbox_ng/launcher.py:67 |
404 | -msgid "If enabled then suite selection screen is not displayed" |
405 | -msgstr "" |
406 | - |
407 | -#: .././checkbox_ng/launcher.py:73 |
408 | -msgid "If enabled then test selection screen is not displayed" |
409 | -msgstr "" |
410 | - |
411 | -#. TODO: probably a choice validator |
412 | -#: .././checkbox_ng/launcher.py:78 |
413 | -msgid "Type of the input field?" |
414 | -msgstr "" |
415 | - |
416 | -#: .././checkbox_ng/launcher.py:82 |
417 | -msgid "Label on the 'send' button" |
418 | -msgstr "" |
419 | - |
420 | -#. TODO: default? |
421 | -#: .././checkbox_ng/launcher.py:88 |
422 | -msgid "If enabled then test results will be also sent to HEXR" |
423 | -msgstr "" |
424 | - |
425 | -#: .././checkbox_ng/launcher.py:93 |
426 | -msgid "Where to submit the test results to" |
427 | -msgstr "" |
428 | - |
429 | -#: .././checkbox_ng/launcher.py:98 |
430 | -msgid "" |
431 | -"HTTP endpoint to submit data to, using the transport specified with " |
432 | -"submit_to." |
433 | -msgstr "" |
434 | - |
435 | -#: .././checkbox_ng/launcher.py:104 |
436 | -msgid "Secure ID to identify the system this submission belongs to." |
437 | -msgstr "" |
438 | - |
439 | -#: .././checkbox_ng/launcher.py:109 |
440 | -msgid "Name of custom configuration file" |
441 | -msgstr "" |
442 | - |
443 | -#: .././checkbox_ng/launcher.py:113 |
444 | -msgid "Don't suppress the output of certain job plugin types." |
445 | -msgstr "" |
446 | - |
447 | -#: .././checkbox_ng/launcher.py:116 |
448 | -msgid "Section with only exported unit ids as keys (no values)" |
449 | -msgstr "" |
450 | - |
451 | #: .././checkbox_ng/launchpad.py:66 |
452 | +#, python-brace-format |
453 | msgid "Cannot get {0} resource job" |
454 | msgstr "" |
455 | |
456 | #: .././checkbox_ng/launchpad.py:70 |
457 | +#, python-brace-format |
458 | msgid "{0} has no attribute {1}" |
459 | msgstr "" |
460 | |
461 | @@ -411,18 +359,18 @@ |
462 | msgid "< Continue >" |
463 | msgstr "" |
464 | |
465 | -#: .././checkbox_ng/ui.py:194 .././checkbox_ng/ui.py:321 |
466 | +#: .././checkbox_ng/ui.py:197 .././checkbox_ng/ui.py:325 |
467 | msgid "Enter" |
468 | msgstr "" |
469 | |
470 | -#: .././checkbox_ng/ui.py:197 .././checkbox_ng/ui.py:324 |
471 | +#: .././checkbox_ng/ui.py:200 .././checkbox_ng/ui.py:328 |
472 | msgid ": Expand/Collapse" |
473 | msgstr "" |
474 | |
475 | -#: .././checkbox_ng/ui.py:213 |
476 | +#: .././checkbox_ng/ui.py:216 |
477 | msgid "Start " |
478 | msgstr "" |
479 | |
480 | -#: .././checkbox_ng/ui.py:345 |
481 | +#: .././checkbox_ng/ui.py:349 |
482 | msgid "inish" |
483 | msgstr "" |
484 | |
485 | === modified file 'plainbox/plainbox/impl/transport.py' |
486 | --- plainbox/plainbox/impl/transport.py 2016-03-18 00:37:50 +0000 |
487 | +++ plainbox/plainbox/impl/transport.py 2016-08-03 18:15:33 +0000 |
488 | @@ -109,7 +109,7 @@ |
489 | raise ValueError(_("No valid options in option string")) |
490 | |
491 | |
492 | -SECURE_ID_PATTERN = r"^[a-zA-Z0-9]{15}$|^[a-zA-Z0-9]{18}$" |
493 | +SECURE_ID_PATTERN = r"^[a-zA-Z0-9]{15,}$" |
494 | |
495 | |
496 | class InvalidSecureIDError(ValueError): |
497 | @@ -142,7 +142,7 @@ |
498 | Initialize the Certification Transport. |
499 | |
500 | The options string may contain 'secure_id' which must be |
501 | - a 15- or 18-character alphanumeric ID for the system. |
502 | + a 15-character (or more) alphanumeric ID for the system. |
503 | |
504 | It may also contain a submit_to_hexr boolean, set to 1 |
505 | to enable submission to hexr. |
506 | @@ -264,7 +264,7 @@ |
507 | def _validate_secure_id(self, secure_id): |
508 | if not re.match(SECURE_ID_PATTERN, secure_id): |
509 | raise InvalidSecureIDError( |
510 | - _("secure_id must be 15 or 18-character alphanumeric string")) |
511 | + _("secure_id must be a 15 characters (or more) alphanumeric string")) |
512 | |
513 | |
514 | def oauth_available(): |
515 | |
516 | === modified file 'plainbox/po/POTFILES.in' |
517 | --- plainbox/po/POTFILES.in 2015-09-21 07:12:05 +0000 |
518 | +++ plainbox/po/POTFILES.in 2016-08-03 18:15:33 +0000 |
519 | @@ -132,7 +132,6 @@ |
520 | ./plainbox/impl/testing_utils.py |
521 | ./plainbox/impl/transport.py |
522 | ./plainbox/impl/unit/__init__.py |
523 | -./plainbox/impl/unit/_legacy.py |
524 | ./plainbox/impl/unit/category.py |
525 | ./plainbox/impl/unit/exporter.py |
526 | ./plainbox/impl/unit/file.py |
527 | |
528 | === modified file 'plainbox/po/plainbox.pot' |
529 | --- plainbox/po/plainbox.pot 2016-01-11 08:07:21 +0000 |
530 | +++ plainbox/po/plainbox.pot 2016-08-03 18:15:33 +0000 |
531 | @@ -8,7 +8,7 @@ |
532 | msgstr "" |
533 | "Project-Id-Version: PACKAGE VERSION\n" |
534 | "Report-Msgid-Bugs-To: \n" |
535 | -"POT-Creation-Date: 2016-01-11 16:06+0800\n" |
536 | +"POT-Creation-Date: 2016-08-03 16:58+0200\n" |
537 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
538 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
539 | "Language-Team: LANGUAGE <LL@li.org>\n" |
540 | @@ -40,6 +40,7 @@ |
541 | #. TRANSLATORS: '--help' and '--version' are not translatable, |
542 | #. but '[options]' and '<command>' are. |
543 | #: .././plainbox/impl/box.py:82 |
544 | +#, python-brace-format |
545 | msgid "{0} [--help] [--version] | [options] <command> ..." |
546 | msgstr "" |
547 | |
548 | @@ -100,7 +101,7 @@ |
549 | msgid "Dispatching command..." |
550 | msgstr "" |
551 | |
552 | -#: .././plainbox/impl/clitools.py:460 .././plainbox/provider_manager.py:1403 |
553 | +#: .././plainbox/impl/clitools.py:460 .././plainbox/provider_manager.py:1425 |
554 | #: .././plainbox/vendor/argparse/py32-argparse.py:1625 |
555 | msgid "show program's version number and exit" |
556 | msgstr "" |
557 | @@ -794,6 +795,7 @@ |
558 | msgstr "" |
559 | |
560 | #: .././plainbox/impl/commands/inv_check_config.py:43 |
561 | +#, python-brace-format |
562 | msgid " - {0} (not present)" |
563 | msgstr "" |
564 | |
565 | @@ -810,6 +812,7 @@ |
566 | msgstr "" |
567 | |
568 | #: .././plainbox/impl/commands/inv_check_config.py:61 |
569 | +#, python-brace-format |
570 | msgid " - variable {0}: {1}" |
571 | msgstr "" |
572 | |
573 | @@ -855,10 +858,12 @@ |
574 | msgstr "" |
575 | |
576 | #: .././plainbox/impl/commands/inv_run.py:171 |
577 | +#, python-brace-format |
578 | msgid "ID: {0}" |
579 | msgstr "" |
580 | |
581 | #: .././plainbox/impl/commands/inv_run.py:172 |
582 | +#, python-brace-format |
583 | msgid "Category: {0}" |
584 | msgstr "" |
585 | |
586 | @@ -916,6 +921,7 @@ |
587 | msgstr "" |
588 | |
589 | #: .././plainbox/impl/commands/inv_run.py:439 |
590 | +#, python-brace-format |
591 | msgid "There is {0} incomplete session that might be resumed" |
592 | msgid_plural "There are {0} incomplete sessions that might be resumed" |
593 | msgstr[0] "" |
594 | @@ -1026,14 +1032,17 @@ |
595 | msgstr "" |
596 | |
597 | #: .././plainbox/impl/commands/inv_run.py:625 |
598 | +#, python-brace-format |
599 | msgid "At least two jobs contend for the id {0}" |
600 | msgstr "" |
601 | |
602 | #: .././plainbox/impl/commands/inv_run.py:628 |
603 | +#, python-brace-format |
604 | msgid "First job defined in: {0}" |
605 | msgstr "" |
606 | |
607 | #: .././plainbox/impl/commands/inv_run.py:630 |
608 | +#, python-brace-format |
609 | msgid "Second job defined in: {0}" |
610 | msgstr "" |
611 | |
612 | @@ -1083,6 +1092,7 @@ |
613 | #: .././plainbox/impl/commands/inv_run.py:897 |
614 | #: .././plainbox/impl/commands/inv_run.py:902 |
615 | #: .././plainbox/impl/commands/inv_run.py:907 |
616 | +#, python-brace-format |
617 | msgid "set outcome to {0}" |
618 | msgstr "" |
619 | |
620 | @@ -1106,6 +1116,7 @@ |
621 | msgstr "" |
622 | |
623 | #: .././plainbox/impl/commands/inv_run.py:919 |
624 | +#, python-brace-format |
625 | msgid "set suggested outcome [{0}]" |
626 | msgstr "" |
627 | |
628 | @@ -1144,6 +1155,7 @@ |
629 | msgstr "" |
630 | |
631 | #: .././plainbox/impl/commands/inv_run.py:968 |
632 | +#, python-brace-format |
633 | msgid "This session is about {0:.2f}{percent} complete" |
634 | msgstr "" |
635 | |
636 | @@ -1164,10 +1176,12 @@ |
637 | msgstr "" |
638 | |
639 | #: .././plainbox/impl/commands/inv_run.py:984 |
640 | +#, python-brace-format |
641 | msgid "Size of the desired job list: {0}" |
642 | msgstr "" |
643 | |
644 | #: .././plainbox/impl/commands/inv_run.py:986 |
645 | +#, python-brace-format |
646 | msgid "Size of the effective execution plan: {0}" |
647 | msgstr "" |
648 | |
649 | @@ -1208,6 +1222,7 @@ |
650 | msgstr "" |
651 | |
652 | #: .././plainbox/impl/commands/inv_session.py:82 |
653 | +#, python-brace-format |
654 | msgid "session {0} (not saved yet)" |
655 | msgstr "" |
656 | |
657 | @@ -1229,6 +1244,7 @@ |
658 | msgstr "" |
659 | |
660 | #: .././plainbox/impl/commands/inv_session.py:108 |
661 | +#, python-brace-format |
662 | msgid "application-specific blob: {0}" |
663 | msgstr "" |
664 | |
665 | @@ -1245,10 +1261,12 @@ |
666 | msgstr "" |
667 | |
668 | #: .././plainbox/impl/commands/inv_session.py:115 |
669 | +#, python-brace-format |
670 | msgid "data size: {0}" |
671 | msgstr "" |
672 | |
673 | #: .././plainbox/impl/commands/inv_session.py:117 |
674 | +#, python-brace-format |
675 | msgid "Resuming session {0} ..." |
676 | msgstr "" |
677 | |
678 | @@ -1262,6 +1280,7 @@ |
679 | |
680 | #: .././plainbox/impl/commands/inv_session.py:133 |
681 | #: .././plainbox/impl/commands/inv_session.py:151 |
682 | +#, python-brace-format |
683 | msgid "No such session: {0}" |
684 | msgstr "" |
685 | |
686 | @@ -1270,6 +1289,7 @@ |
687 | msgstr "" |
688 | |
689 | #: .././plainbox/impl/commands/inv_session.py:140 |
690 | +#, python-brace-format |
691 | msgid "Created archive: {0}" |
692 | msgstr "" |
693 | |
694 | @@ -1319,14 +1339,9 @@ |
695 | msgid "Instantiating unit: %s" |
696 | msgstr "" |
697 | |
698 | -#: .././plainbox/impl/ctrl.py:318 |
699 | -#, python-format |
700 | -msgid "Ignoring invalid instantiated unit %s: %s" |
701 | -msgstr "" |
702 | - |
703 | -#: .././plainbox/impl/ctrl.py:344 |
704 | -#, python-format |
705 | -msgid "Ignoring invalid generated job %s: %s" |
706 | +#: .././plainbox/impl/ctrl.py:318 .././plainbox/impl/ctrl.py:344 |
707 | +#, python-format |
708 | +msgid "Ignoring invalid generated job %s" |
709 | msgstr "" |
710 | |
711 | #. TRANSLATORS: keep the word "local" untranslated. It is a |
712 | @@ -1376,23 +1391,28 @@ |
713 | msgid "Symlink nest for executables: %s" |
714 | msgstr "" |
715 | |
716 | -#: .././plainbox/impl/ctrl.py:611 |
717 | +#: .././plainbox/impl/ctrl.py:612 |
718 | #, python-format |
719 | msgid "Job temporary current working directory: %s" |
720 | msgstr "" |
721 | |
722 | -#: .././plainbox/impl/ctrl.py:968 |
723 | +#: .././plainbox/impl/ctrl.py:621 |
724 | +#, python-format |
725 | +msgid "There was a problem with temporary cwd %s, %s" |
726 | +msgstr "" |
727 | + |
728 | +#: .././plainbox/impl/ctrl.py:973 |
729 | #, python-format |
730 | msgid "Generating job repr for job: %r" |
731 | msgstr "" |
732 | |
733 | #. run the command |
734 | -#: .././plainbox/impl/ctrl.py:1042 |
735 | +#: .././plainbox/impl/ctrl.py:1048 |
736 | #, python-format |
737 | msgid "job[%s] executing %r withenv %r in cwd %r" |
738 | msgstr "" |
739 | |
740 | -#: .././plainbox/impl/ctrl.py:1178 |
741 | +#: .././plainbox/impl/ctrl.py:1205 |
742 | #, python-format |
743 | msgid "Cannot check if plainbox-trusted-launcher-1 is available: %s" |
744 | msgstr "" |
745 | @@ -1471,11 +1491,11 @@ |
746 | msgid "Unsupported platform: %s" |
747 | msgstr "" |
748 | |
749 | -#: .././plainbox/impl/exporter/__init__.py:250 |
750 | +#: .././plainbox/impl/exporter/__init__.py:248 |
751 | msgid "Uncategorised" |
752 | msgstr "" |
753 | |
754 | -#: .././plainbox/impl/exporter/__init__.py:384 |
755 | +#: .././plainbox/impl/exporter/__init__.py:382 |
756 | #, python-format |
757 | msgid "" |
758 | "Incorrect stream encoding. Got %s, expected %s. some characters won't be " |
759 | @@ -1483,6 +1503,7 @@ |
760 | msgstr "" |
761 | |
762 | #: .././plainbox/impl/exporter/text.py:59 |
763 | +#, python-brace-format |
764 | msgid " history: {0}\n" |
765 | msgstr "" |
766 | |
767 | @@ -1753,93 +1774,93 @@ |
768 | msgid "unable to parse imports statement {0!r}: expected 'as' keyword" |
769 | msgstr "" |
770 | |
771 | -#: .././plainbox/impl/result.py:126 |
772 | +#: .././plainbox/impl/result.py:131 |
773 | msgctxt "textual outcome" |
774 | msgid "job didn't run" |
775 | msgstr "" |
776 | |
777 | -#: .././plainbox/impl/result.py:127 |
778 | +#: .././plainbox/impl/result.py:132 |
779 | msgctxt "chart label" |
780 | msgid "not started" |
781 | msgstr "" |
782 | |
783 | -#: .././plainbox/impl/result.py:137 |
784 | +#: .././plainbox/impl/result.py:142 |
785 | msgctxt "textual outcome" |
786 | msgid "job passed" |
787 | msgstr "" |
788 | |
789 | -#: .././plainbox/impl/result.py:138 |
790 | +#: .././plainbox/impl/result.py:143 |
791 | msgctxt "chart label" |
792 | msgid "passed" |
793 | msgstr "" |
794 | |
795 | -#: .././plainbox/impl/result.py:148 |
796 | +#: .././plainbox/impl/result.py:153 |
797 | msgctxt "textual outcome" |
798 | msgid "job failed" |
799 | msgstr "" |
800 | |
801 | -#: .././plainbox/impl/result.py:149 |
802 | +#: .././plainbox/impl/result.py:154 |
803 | msgctxt "chart label" |
804 | msgid "failed" |
805 | msgstr "" |
806 | |
807 | -#: .././plainbox/impl/result.py:159 |
808 | +#: .././plainbox/impl/result.py:164 |
809 | msgctxt "textual outcome" |
810 | msgid "job skipped" |
811 | msgstr "" |
812 | |
813 | -#: .././plainbox/impl/result.py:160 |
814 | +#: .././plainbox/impl/result.py:165 |
815 | msgctxt "chart label" |
816 | msgid "skipped" |
817 | msgstr "" |
818 | |
819 | -#: .././plainbox/impl/result.py:170 |
820 | +#: .././plainbox/impl/result.py:175 |
821 | msgctxt "textual outcome" |
822 | msgid "job cannot be started" |
823 | msgstr "" |
824 | |
825 | -#: .././plainbox/impl/result.py:171 |
826 | +#: .././plainbox/impl/result.py:176 |
827 | msgctxt "chart label" |
828 | msgid "not supported" |
829 | msgstr "" |
830 | |
831 | -#: .././plainbox/impl/result.py:181 |
832 | +#: .././plainbox/impl/result.py:186 |
833 | msgctxt "textual outcome" |
834 | msgid "job is not implemented" |
835 | msgstr "" |
836 | |
837 | -#: .././plainbox/impl/result.py:182 |
838 | +#: .././plainbox/impl/result.py:187 |
839 | msgctxt "chart label" |
840 | msgid "not implemented" |
841 | msgstr "" |
842 | |
843 | -#: .././plainbox/impl/result.py:192 |
844 | +#: .././plainbox/impl/result.py:197 |
845 | msgctxt "textual outcome" |
846 | msgid "job needs verification" |
847 | msgstr "" |
848 | |
849 | -#: .././plainbox/impl/result.py:193 |
850 | +#: .././plainbox/impl/result.py:198 |
851 | msgctxt "chart label" |
852 | msgid "undecided" |
853 | msgstr "" |
854 | |
855 | -#: .././plainbox/impl/result.py:203 |
856 | +#: .././plainbox/impl/result.py:208 |
857 | msgctxt "textual outcome" |
858 | msgid "job crashed" |
859 | msgstr "" |
860 | |
861 | -#: .././plainbox/impl/result.py:204 |
862 | +#: .././plainbox/impl/result.py:209 |
863 | msgctxt "chart label" |
864 | msgid "crashed" |
865 | msgstr "" |
866 | |
867 | #. TRANSLATORS: please keep DiskJobResult.io_log untranslated |
868 | -#: .././plainbox/impl/result.py:535 |
869 | +#: .././plainbox/impl/result.py:548 |
870 | #, python-format |
871 | msgid "Expensive DiskJobResult.io_log property access from %s:%d" |
872 | msgstr "" |
873 | |
874 | -#: .././plainbox/impl/result.py:557 |
875 | +#: .././plainbox/impl/result.py:570 |
876 | #, python-format |
877 | msgid "Encoded %r into string %r" |
878 | msgstr "" |
879 | @@ -1869,7 +1890,7 @@ |
880 | msgid "bad job plugin value" |
881 | msgstr "" |
882 | |
883 | -#: .././plainbox/impl/runner.py:727 .././plainbox/impl/runner.py:800 |
884 | +#: .././plainbox/impl/runner.py:727 .././plainbox/impl/runner.py:804 |
885 | msgid "No suitable execution controller is available)" |
886 | msgstr "" |
887 | |
888 | @@ -1878,100 +1899,110 @@ |
889 | msgid "job[%s] starting qml shell: %s" |
890 | msgstr "" |
891 | |
892 | -#: .././plainbox/impl/runner.py:755 |
893 | +#: .././plainbox/impl/runner.py:760 |
894 | #, python-format |
895 | msgid "job[%s] shell return code: %r" |
896 | msgstr "" |
897 | |
898 | -#: .././plainbox/impl/runner.py:785 |
899 | +#: .././plainbox/impl/runner.py:789 |
900 | msgid "Job skipped in dry-run mode" |
901 | msgstr "" |
902 | |
903 | -#: .././plainbox/impl/runner.py:861 |
904 | +#: .././plainbox/impl/runner.py:865 |
905 | #, python-format |
906 | msgid "job[%s] extcmd delegate: %r" |
907 | msgstr "" |
908 | |
909 | -#: .././plainbox/impl/runner.py:876 |
910 | +#: .././plainbox/impl/runner.py:880 |
911 | +#, python-brace-format |
912 | msgid "job {0} has no command to run" |
913 | msgstr "" |
914 | |
915 | -#: .././plainbox/impl/runner.py:903 |
916 | +#: .././plainbox/impl/runner.py:907 |
917 | #, python-format |
918 | msgid "job[%s] starting command: %s" |
919 | msgstr "" |
920 | |
921 | -#: .././plainbox/impl/runner.py:908 |
922 | +#: .././plainbox/impl/runner.py:915 |
923 | #, python-format |
924 | msgid "job[%s] command return code: %r" |
925 | msgstr "" |
926 | |
927 | -#: .././plainbox/impl/runner.py:944 .././plainbox/impl/session/state.py:483 |
928 | +#: .././plainbox/impl/runner.py:951 .././plainbox/impl/session/state.py:486 |
929 | msgid "No exec controller supports job {}" |
930 | msgstr "" |
931 | |
932 | -#: .././plainbox/impl/runner.py:946 .././plainbox/impl/session/state.py:485 |
933 | +#: .././plainbox/impl/runner.py:953 .././plainbox/impl/session/state.py:488 |
934 | #, python-format |
935 | msgid "Selected execution controller %s (score %d) for job %r" |
936 | msgstr "" |
937 | |
938 | -#: .././plainbox/impl/runner.py:974 |
939 | +#: .././plainbox/impl/runner.py:981 |
940 | +#, python-brace-format |
941 | msgid "Job {0} created leftover filesystem artefacts in its working directory" |
942 | msgstr "" |
943 | |
944 | -#: .././plainbox/impl/runner.py:977 |
945 | +#: .././plainbox/impl/runner.py:984 |
946 | #, python-format |
947 | msgid "Leftover file/directory: %r" |
948 | msgstr "" |
949 | |
950 | -#: .././plainbox/impl/runner.py:980 |
951 | +#: .././plainbox/impl/runner.py:987 |
952 | msgid "" |
953 | "Please store desired files in $PLAINBOX_SESSION_SHARE and use regular " |
954 | "temporary files for everything else" |
955 | msgstr "" |
956 | |
957 | -#: .././plainbox/impl/secure/config.py:87 |
958 | +#: .././plainbox/impl/secure/config.py:89 |
959 | msgid "unset" |
960 | msgstr "" |
961 | |
962 | -#: .././plainbox/impl/secure/config.py:124 |
963 | +#: .././plainbox/impl/secure/config.py:126 |
964 | msgid "unsupported kind" |
965 | msgstr "" |
966 | |
967 | -#: .././plainbox/impl/secure/config.py:572 |
968 | +#: .././plainbox/impl/secure/config.py:637 |
969 | #, python-format |
970 | msgid "Loading configuration from %s" |
971 | msgstr "" |
972 | |
973 | -#: .././plainbox/impl/secure/config.py:699 |
974 | +#: .././plainbox/impl/secure/config.py:775 |
975 | msgid "expected a boolean" |
976 | msgstr "" |
977 | |
978 | -#: .././plainbox/impl/secure/config.py:700 |
979 | +#: .././plainbox/impl/secure/config.py:776 |
980 | msgid "expected an integer" |
981 | msgstr "" |
982 | |
983 | -#: .././plainbox/impl/secure/config.py:701 |
984 | +#: .././plainbox/impl/secure/config.py:777 |
985 | msgid "expected a floating point number" |
986 | msgstr "" |
987 | |
988 | -#: .././plainbox/impl/secure/config.py:702 |
989 | +#: .././plainbox/impl/secure/config.py:778 |
990 | msgid "expected a string" |
991 | msgstr "" |
992 | |
993 | -#: .././plainbox/impl/secure/config.py:717 |
994 | +#: .././plainbox/impl/secure/config.py:779 |
995 | +msgid "expected a list of strings" |
996 | +msgstr "" |
997 | + |
998 | +#: .././plainbox/impl/secure/config.py:794 |
999 | msgid "does not match pattern: {!r}" |
1000 | msgstr "" |
1001 | |
1002 | -#: .././plainbox/impl/secure/config.py:736 |
1003 | -msgid "must be one of {}" |
1004 | -msgstr "" |
1005 | - |
1006 | -#: .././plainbox/impl/secure/config.py:760 |
1007 | +#: .././plainbox/impl/secure/config.py:813 |
1008 | +msgid "{} must be one of {}. Got '{}'" |
1009 | +msgstr "" |
1010 | + |
1011 | +#: .././plainbox/impl/secure/config.py:831 |
1012 | +msgid "{} must be a subset of {}. Got {}" |
1013 | +msgstr "" |
1014 | + |
1015 | +#: .././plainbox/impl/secure/config.py:856 |
1016 | msgid "must be set to something" |
1017 | msgstr "" |
1018 | |
1019 | -#: .././plainbox/impl/secure/config.py:781 |
1020 | +#: .././plainbox/impl/secure/config.py:877 |
1021 | msgid "cannot be empty" |
1022 | msgstr "" |
1023 | |
1024 | @@ -2041,159 +2072,159 @@ |
1025 | msgid "command line argument {!a}" |
1026 | msgstr "" |
1027 | |
1028 | -#: .././plainbox/impl/secure/plugins.py:407 |
1029 | +#: .././plainbox/impl/secure/plugins.py:417 |
1030 | #, python-format |
1031 | msgid "Unable to prepare plugin %s: %s" |
1032 | msgstr "" |
1033 | |
1034 | -#: .././plainbox/impl/secure/plugins.py:423 |
1035 | +#: .././plainbox/impl/secure/plugins.py:433 |
1036 | msgid "discovery_time is meaningful after calling load()" |
1037 | msgstr "" |
1038 | |
1039 | -#: .././plainbox/impl/secure/plugins.py:493 |
1040 | +#: .././plainbox/impl/secure/plugins.py:502 |
1041 | #, python-format |
1042 | msgid "Unable to import %s" |
1043 | msgstr "" |
1044 | |
1045 | -#: .././plainbox/impl/secure/plugins.py:569 |
1046 | +#: .././plainbox/impl/secure/plugins.py:579 |
1047 | #, python-format |
1048 | msgid "Unable to load %r: %s" |
1049 | msgstr "" |
1050 | |
1051 | -#: .././plainbox/impl/secure/plugins.py:708 |
1052 | +#: .././plainbox/impl/secure/plugins.py:718 |
1053 | #, python-format |
1054 | msgid "Loading everything in %r" |
1055 | msgstr "" |
1056 | |
1057 | -#: .././plainbox/impl/secure/plugins.py:725 |
1058 | +#: .././plainbox/impl/secure/plugins.py:735 |
1059 | #, python-format |
1060 | msgid "Loading %r" |
1061 | msgstr "" |
1062 | |
1063 | -#: .././plainbox/impl/secure/plugins.py:728 |
1064 | +#: .././plainbox/impl/secure/plugins.py:738 |
1065 | #, python-format |
1066 | msgid "Unable to load: %r" |
1067 | msgstr "" |
1068 | |
1069 | -#: .././plainbox/impl/secure/plugins.py:731 |
1070 | +#: .././plainbox/impl/secure/plugins.py:741 |
1071 | #, python-format |
1072 | msgid "Wrapping %r" |
1073 | msgstr "" |
1074 | |
1075 | -#: .././plainbox/impl/secure/plugins.py:745 |
1076 | +#: .././plainbox/impl/secure/plugins.py:755 |
1077 | #, python-format |
1078 | msgid "Importing %s" |
1079 | msgstr "" |
1080 | |
1081 | -#: .././plainbox/impl/secure/plugins.py:750 |
1082 | +#: .././plainbox/impl/secure/plugins.py:760 |
1083 | #, python-format |
1084 | msgid "Calling %r with %r" |
1085 | msgstr "" |
1086 | |
1087 | -#: .././plainbox/impl/secure/providers/v1.py:89 |
1088 | +#: .././plainbox/impl/secure/providers/v1.py:93 |
1089 | msgid "Cannot load {!r}: {}" |
1090 | msgstr "" |
1091 | |
1092 | -#: .././plainbox/impl/secure/providers/v1.py:260 |
1093 | +#: .././plainbox/impl/secure/providers/v1.py:264 |
1094 | #, python-format |
1095 | msgid "Loading units from %r..." |
1096 | msgstr "" |
1097 | |
1098 | -#: .././plainbox/impl/secure/providers/v1.py:266 |
1099 | +#: .././plainbox/impl/secure/providers/v1.py:270 |
1100 | msgid "Cannot load job definitions from {!r}: {}" |
1101 | msgstr "" |
1102 | |
1103 | -#: .././plainbox/impl/secure/providers/v1.py:275 |
1104 | +#: .././plainbox/impl/secure/providers/v1.py:279 |
1105 | msgid "Unknown unit type: {!r}" |
1106 | msgstr "" |
1107 | |
1108 | -#: .././plainbox/impl/secure/providers/v1.py:280 |
1109 | +#: .././plainbox/impl/secure/providers/v1.py:284 |
1110 | msgid "Cannot define unit from record {!r}: {}" |
1111 | msgstr "" |
1112 | |
1113 | -#: .././plainbox/impl/secure/providers/v1.py:286 |
1114 | +#: .././plainbox/impl/secure/providers/v1.py:290 |
1115 | msgid "Problem in unit definition, {}" |
1116 | msgstr "" |
1117 | |
1118 | -#: .././plainbox/impl/secure/providers/v1.py:292 |
1119 | +#: .././plainbox/impl/secure/providers/v1.py:296 |
1120 | msgid "Problem in unit definition, field {}: {}" |
1121 | msgstr "" |
1122 | |
1123 | -#: .././plainbox/impl/secure/providers/v1.py:295 |
1124 | +#: .././plainbox/impl/secure/providers/v1.py:299 |
1125 | #, python-format |
1126 | msgid "Loaded %r" |
1127 | msgstr "" |
1128 | |
1129 | -#: .././plainbox/impl/secure/providers/v1.py:1241 |
1130 | -#: .././plainbox/impl/secure/providers/v1.py:1270 |
1131 | +#: .././plainbox/impl/secure/providers/v1.py:1245 |
1132 | +#: .././plainbox/impl/secure/providers/v1.py:1274 |
1133 | msgid "must look like RFC3720 IQN" |
1134 | msgstr "" |
1135 | |
1136 | -#: .././plainbox/impl/secure/providers/v1.py:1287 |
1137 | -msgid "must be a sequence of digits separated by dots" |
1138 | +#: .././plainbox/impl/secure/providers/v1.py:1321 |
1139 | +msgid "must be a PEP440 compatible version" |
1140 | msgstr "" |
1141 | |
1142 | -#: .././plainbox/impl/secure/providers/v1.py:1297 |
1143 | +#: .././plainbox/impl/secure/providers/v1.py:1331 |
1144 | msgid "no such directory" |
1145 | msgstr "" |
1146 | |
1147 | -#: .././plainbox/impl/secure/providers/v1.py:1307 |
1148 | +#: .././plainbox/impl/secure/providers/v1.py:1341 |
1149 | msgid "cannot be relative" |
1150 | msgstr "" |
1151 | |
1152 | -#: .././plainbox/impl/secure/providers/v1.py:1328 |
1153 | +#: .././plainbox/impl/secure/providers/v1.py:1362 |
1154 | msgid "Flag indicating if the provider is relocatable" |
1155 | msgstr "" |
1156 | |
1157 | -#: .././plainbox/impl/secure/providers/v1.py:1334 |
1158 | +#: .././plainbox/impl/secure/providers/v1.py:1368 |
1159 | msgid "Base directory with provider data" |
1160 | msgstr "" |
1161 | |
1162 | -#: .././plainbox/impl/secure/providers/v1.py:1344 |
1163 | +#: .././plainbox/impl/secure/providers/v1.py:1378 |
1164 | msgid "Name of the provider" |
1165 | msgstr "" |
1166 | |
1167 | -#: .././plainbox/impl/secure/providers/v1.py:1353 |
1168 | +#: .././plainbox/impl/secure/providers/v1.py:1387 |
1169 | msgid "Namespace of the provider" |
1170 | msgstr "" |
1171 | |
1172 | -#: .././plainbox/impl/secure/providers/v1.py:1368 |
1173 | +#: .././plainbox/impl/secure/providers/v1.py:1402 |
1174 | msgid "Version of the provider" |
1175 | msgstr "" |
1176 | |
1177 | -#: .././plainbox/impl/secure/providers/v1.py:1377 |
1178 | +#: .././plainbox/impl/secure/providers/v1.py:1411 |
1179 | msgid "Description of the provider" |
1180 | msgstr "" |
1181 | |
1182 | -#: .././plainbox/impl/secure/providers/v1.py:1381 |
1183 | +#: .././plainbox/impl/secure/providers/v1.py:1415 |
1184 | msgid "Name of the gettext domain for translations" |
1185 | msgstr "" |
1186 | |
1187 | -#: .././plainbox/impl/secure/providers/v1.py:1400 |
1188 | +#: .././plainbox/impl/secure/providers/v1.py:1434 |
1189 | msgid "Pathname of the directory with unit definitions" |
1190 | msgstr "" |
1191 | |
1192 | -#: .././plainbox/impl/secure/providers/v1.py:1436 |
1193 | +#: .././plainbox/impl/secure/providers/v1.py:1470 |
1194 | msgid "Pathname of the directory with job definitions" |
1195 | msgstr "" |
1196 | |
1197 | -#: .././plainbox/impl/secure/providers/v1.py:1472 |
1198 | +#: .././plainbox/impl/secure/providers/v1.py:1506 |
1199 | msgid "Pathname of the directory with whitelists definitions" |
1200 | msgstr "" |
1201 | |
1202 | -#: .././plainbox/impl/secure/providers/v1.py:1509 |
1203 | +#: .././plainbox/impl/secure/providers/v1.py:1543 |
1204 | msgid "Pathname of the directory with provider data" |
1205 | msgstr "" |
1206 | |
1207 | -#: .././plainbox/impl/secure/providers/v1.py:1545 |
1208 | +#: .././plainbox/impl/secure/providers/v1.py:1579 |
1209 | msgid "Pathname of the directory with provider executables" |
1210 | msgstr "" |
1211 | |
1212 | -#: .././plainbox/impl/secure/providers/v1.py:1581 |
1213 | +#: .././plainbox/impl/secure/providers/v1.py:1615 |
1214 | msgid "Pathname of the directory with locale data" |
1215 | msgstr "" |
1216 | |
1217 | -#: .././plainbox/impl/secure/providers/v1.py:1681 |
1218 | +#: .././plainbox/impl/secure/providers/v1.py:1715 |
1219 | msgid "Problem in provider definition, field {!a}: {}" |
1220 | msgstr "" |
1221 | |
1222 | @@ -2282,42 +2313,42 @@ |
1223 | msgid "{!r} is not overridable" |
1224 | msgstr "" |
1225 | |
1226 | -#: .././plainbox/impl/session/manager.py:99 |
1227 | -#: .././plainbox/impl/session/manager.py:457 |
1228 | +#: .././plainbox/impl/session/manager.py:100 |
1229 | +#: .././plainbox/impl/session/manager.py:458 |
1230 | msgid "" |
1231 | "session manager currently doesn't support sessions involving multiple " |
1232 | "devices (a.k.a multi-node testing)" |
1233 | msgstr "" |
1234 | |
1235 | -#: .././plainbox/impl/session/manager.py:365 |
1236 | +#: .././plainbox/impl/session/manager.py:366 |
1237 | #, python-format |
1238 | msgid "Saving %d byte of checkpoint data to %r" |
1239 | msgid_plural "Saving %d bytes of checkpoint data to %r" |
1240 | msgstr[0] "" |
1241 | msgstr[1] "" |
1242 | |
1243 | -#: .././plainbox/impl/session/manager.py:400 |
1244 | +#: .././plainbox/impl/session/manager.py:401 |
1245 | msgid "" |
1246 | "attmpting to add a context for device {} which is already represented in " |
1247 | "this session manager" |
1248 | msgstr "" |
1249 | |
1250 | -#: .././plainbox/impl/session/manager.py:430 |
1251 | +#: .././plainbox/impl/session/manager.py:431 |
1252 | msgid "" |
1253 | "attempting to remove a device context not present in this session manager" |
1254 | msgstr "" |
1255 | |
1256 | -#: .././plainbox/impl/session/manager.py:441 |
1257 | +#: .././plainbox/impl/session/manager.py:442 |
1258 | #, python-format |
1259 | msgid "Device context %s added to session manager %s" |
1260 | msgstr "" |
1261 | |
1262 | -#: .././plainbox/impl/session/manager.py:451 |
1263 | +#: .././plainbox/impl/session/manager.py:452 |
1264 | #, python-format |
1265 | msgid "Device context %s removed from session manager %s" |
1266 | msgstr "" |
1267 | |
1268 | -#: .././plainbox/impl/session/manager.py:462 |
1269 | +#: .././plainbox/impl/session/manager.py:463 |
1270 | msgid "Propagating test plans to all devices" |
1271 | msgstr "" |
1272 | |
1273 | @@ -2513,39 +2544,41 @@ |
1274 | msgid "app_id must be either None or str" |
1275 | msgstr "" |
1276 | |
1277 | -#: .././plainbox/impl/session/state.py:393 |
1278 | -msgid "attempting to add the same provider twice" |
1279 | -msgstr "" |
1280 | - |
1281 | -#: .././plainbox/impl/session/state.py:415 |
1282 | -msgid "attempting to add the same unit twice" |
1283 | -msgstr "" |
1284 | - |
1285 | -#: .././plainbox/impl/session/state.py:431 |
1286 | +#: .././plainbox/impl/session/state.py:394 |
1287 | +#, python-format |
1288 | +msgid "attempting to add the same provider twice: %s" |
1289 | +msgstr "" |
1290 | + |
1291 | +#: .././plainbox/impl/session/state.py:418 |
1292 | +#, python-format |
1293 | +msgid "attempting to add the same unit twice: %s" |
1294 | +msgstr "" |
1295 | + |
1296 | +#: .././plainbox/impl/session/state.py:434 |
1297 | msgid "attempting to remove unit not in this context" |
1298 | msgstr "" |
1299 | |
1300 | -#: .././plainbox/impl/session/state.py:492 |
1301 | +#: .././plainbox/impl/session/state.py:495 |
1302 | #, python-format |
1303 | msgid "Provider %s added to context %s" |
1304 | msgstr "" |
1305 | |
1306 | -#: .././plainbox/impl/session/state.py:500 |
1307 | +#: .././plainbox/impl/session/state.py:503 |
1308 | #, python-format |
1309 | msgid "Unit %s added to context %s" |
1310 | msgstr "" |
1311 | |
1312 | -#: .././plainbox/impl/session/state.py:514 |
1313 | +#: .././plainbox/impl/session/state.py:517 |
1314 | #, python-format |
1315 | msgid "Unit %s removed from context %s" |
1316 | msgstr "" |
1317 | |
1318 | -#: .././plainbox/impl/session/state.py:719 |
1319 | +#: .././plainbox/impl/session/state.py:722 |
1320 | #, python-format |
1321 | msgid "Job %s result changed to %r" |
1322 | msgstr "" |
1323 | |
1324 | -#: .././plainbox/impl/session/state.py:835 |
1325 | +#: .././plainbox/impl/session/state.py:838 |
1326 | msgid "cannot remove jobs that are on the run list: {}" |
1327 | msgstr "" |
1328 | |
1329 | @@ -2807,62 +2840,61 @@ |
1330 | msgid "Cannot synchronize directory %r: %s" |
1331 | msgstr "" |
1332 | |
1333 | -#: .././plainbox/impl/transport.py:98 |
1334 | +#: .././plainbox/impl/transport.py:109 |
1335 | msgid "No valid options in option string" |
1336 | msgstr "" |
1337 | |
1338 | -#: .././plainbox/impl/transport.py:204 |
1339 | +#: .././plainbox/impl/transport.py:215 |
1340 | #, python-format |
1341 | -msgid "Sending to %s, hardware id is %s" |
1342 | +msgid "Sending to %s, Secure ID is %s" |
1343 | msgstr "" |
1344 | |
1345 | -#: .././plainbox/impl/transport.py:212 |
1346 | +#: .././plainbox/impl/transport.py:223 |
1347 | #, python-format |
1348 | msgid "submit_to_hexr set to %s by config" |
1349 | msgstr "" |
1350 | |
1351 | -#: .././plainbox/impl/transport.py:216 |
1352 | +#: .././plainbox/impl/transport.py:227 |
1353 | #, python-format |
1354 | msgid "submit_to_hexr set to %s by UI" |
1355 | msgstr "" |
1356 | |
1357 | -#: .././plainbox/impl/transport.py:232 |
1358 | +#: .././plainbox/impl/transport.py:243 |
1359 | +#, python-brace-format |
1360 | msgid "Request to {0} timed out: {1}" |
1361 | msgstr "" |
1362 | |
1363 | -#: .././plainbox/impl/transport.py:235 |
1364 | +#: .././plainbox/impl/transport.py:246 |
1365 | +#, python-brace-format |
1366 | msgid "Invalid destination URL: {0}" |
1367 | msgstr "" |
1368 | |
1369 | -#: .././plainbox/impl/transport.py:238 |
1370 | +#: .././plainbox/impl/transport.py:249 |
1371 | +#, python-brace-format |
1372 | msgid "Unable to connect to {0}: {1}" |
1373 | msgstr "" |
1374 | |
1375 | -#: .././plainbox/impl/transport.py:256 |
1376 | -msgid "secure_id must be 15 or 18-character alphanumeric string" |
1377 | +#: .././plainbox/impl/transport.py:267 |
1378 | +msgid "secure_id must be a 15 characters (or more) alphanumeric string" |
1379 | msgstr "" |
1380 | |
1381 | -#: .././plainbox/impl/transport.py:271 |
1382 | +#: .././plainbox/impl/transport.py:404 |
1383 | msgid "Unable to import {}: {}" |
1384 | msgstr "" |
1385 | |
1386 | -#: .././plainbox/impl/unit/_legacy.py:298 |
1387 | -msgid "invalid regular expression: {0}" |
1388 | -msgstr "" |
1389 | - |
1390 | -#: .././plainbox/impl/unit/category.py:102 |
1391 | +#: .././plainbox/impl/unit/category.py:101 |
1392 | msgid "category" |
1393 | msgstr "" |
1394 | |
1395 | -#: .././plainbox/impl/unit/category.py:119 |
1396 | -#: .././plainbox/impl/unit/exporter.py:123 .././plainbox/impl/unit/job.py:714 |
1397 | -#: .././plainbox/impl/unit/testplan.py:563 |
1398 | +#: .././plainbox/impl/unit/category.py:118 |
1399 | +#: .././plainbox/impl/unit/exporter.py:123 .././plainbox/impl/unit/job.py:717 |
1400 | +#: .././plainbox/impl/unit/testplan.py:619 |
1401 | msgid "please use only one line" |
1402 | msgstr "" |
1403 | |
1404 | -#: .././plainbox/impl/unit/category.py:125 |
1405 | -#: .././plainbox/impl/unit/exporter.py:129 .././plainbox/impl/unit/job.py:720 |
1406 | -#: .././plainbox/impl/unit/testplan.py:569 |
1407 | +#: .././plainbox/impl/unit/category.py:124 |
1408 | +#: .././plainbox/impl/unit/exporter.py:129 .././plainbox/impl/unit/job.py:723 |
1409 | +#: .././plainbox/impl/unit/testplan.py:625 |
1410 | msgid "please stay under 80 characters" |
1411 | msgstr "" |
1412 | |
1413 | @@ -2879,135 +2911,135 @@ |
1414 | "please use .pxu as an extension for all files with plainbox units, see: {}" |
1415 | msgstr "" |
1416 | |
1417 | -#: .././plainbox/impl/unit/file.py:152 .././plainbox/impl/unit/job.py:730 |
1418 | -#: .././plainbox/impl/unit/job.py:1004 |
1419 | +#: .././plainbox/impl/unit/file.py:152 .././plainbox/impl/unit/job.py:733 |
1420 | +#: .././plainbox/impl/unit/job.py:1007 |
1421 | msgid "valid values are: {}" |
1422 | msgstr "" |
1423 | |
1424 | -#: .././plainbox/impl/unit/job.py:450 |
1425 | +#: .././plainbox/impl/unit/job.py:453 |
1426 | msgid "PURPOSE" |
1427 | msgstr "" |
1428 | |
1429 | -#: .././plainbox/impl/unit/job.py:451 |
1430 | +#: .././plainbox/impl/unit/job.py:454 |
1431 | msgid "STEPS" |
1432 | msgstr "" |
1433 | |
1434 | -#: .././plainbox/impl/unit/job.py:452 |
1435 | +#: .././plainbox/impl/unit/job.py:455 |
1436 | msgid "VERIFICATION" |
1437 | msgstr "" |
1438 | |
1439 | -#: .././plainbox/impl/unit/job.py:583 .././plainbox/impl/unit/job.py:613 |
1440 | +#: .././plainbox/impl/unit/job.py:586 .././plainbox/impl/unit/job.py:616 |
1441 | #, python-format |
1442 | msgid "unable to parse depends: %s" |
1443 | msgstr "" |
1444 | |
1445 | #. TRANSLATORS: don't translate record.origin or JobOutputTextSource |
1446 | -#: .././plainbox/impl/unit/job.py:663 |
1447 | +#: .././plainbox/impl/unit/job.py:666 |
1448 | msgid "record.origin must be a JobOutputTextSource" |
1449 | msgstr "" |
1450 | |
1451 | #. TRANSLATORS: don't translate record.origin.source.job |
1452 | -#: .././plainbox/impl/unit/job.py:666 |
1453 | +#: .././plainbox/impl/unit/job.py:669 |
1454 | msgid "record.origin.source.job must be this job" |
1455 | msgstr "" |
1456 | |
1457 | -#: .././plainbox/impl/unit/job.py:671 |
1458 | +#: .././plainbox/impl/unit/job.py:674 |
1459 | msgid "job" |
1460 | msgstr "" |
1461 | |
1462 | -#: .././plainbox/impl/unit/job.py:703 |
1463 | +#: .././plainbox/impl/unit/job.py:706 |
1464 | msgid "use 'id' and 'summary' instead of 'name'" |
1465 | msgstr "" |
1466 | |
1467 | -#: .././plainbox/impl/unit/job.py:736 |
1468 | +#: .././plainbox/impl/unit/job.py:739 |
1469 | msgid "" |
1470 | "please migrate to job templates, see plainbox-template-unit(7) for details" |
1471 | msgstr "" |
1472 | |
1473 | -#: .././plainbox/impl/unit/job.py:741 |
1474 | +#: .././plainbox/impl/unit/job.py:744 |
1475 | msgid "please migrate to user-interact-verify" |
1476 | msgstr "" |
1477 | |
1478 | -#: .././plainbox/impl/unit/job.py:747 |
1479 | +#: .././plainbox/impl/unit/job.py:750 |
1480 | msgid "command is mandatory for non-manual jobs" |
1481 | msgstr "" |
1482 | |
1483 | -#: .././plainbox/impl/unit/job.py:751 |
1484 | +#: .././plainbox/impl/unit/job.py:754 |
1485 | msgid "command on a manual or qml job makes no sense" |
1486 | msgstr "" |
1487 | |
1488 | -#: .././plainbox/impl/unit/job.py:757 |
1489 | +#: .././plainbox/impl/unit/job.py:760 |
1490 | msgid "please use PLAINBOX_PROVIDER_DATA instead of CHECKBOX_SHARE" |
1491 | msgstr "" |
1492 | |
1493 | -#: .././plainbox/impl/unit/job.py:764 |
1494 | +#: .././plainbox/impl/unit/job.py:767 |
1495 | msgid "please use PLAINBOX_SESSION_SHARE instead of CHECKBOX_DATA" |
1496 | msgstr "" |
1497 | |
1498 | -#: .././plainbox/impl/unit/job.py:775 |
1499 | +#: .././plainbox/impl/unit/job.py:778 |
1500 | msgid "" |
1501 | "manual jobs must have a description field, or a set of purpose, steps, and " |
1502 | "verification fields" |
1503 | msgstr "" |
1504 | |
1505 | -#: .././plainbox/impl/unit/job.py:786 |
1506 | +#: .././plainbox/impl/unit/job.py:789 |
1507 | msgid "" |
1508 | "all jobs should have a description field, or a set of purpose, steps and " |
1509 | "verification fields" |
1510 | msgstr "" |
1511 | |
1512 | -#: .././plainbox/impl/unit/job.py:831 |
1513 | +#: .././plainbox/impl/unit/job.py:834 |
1514 | msgid "user can only be 'root'" |
1515 | msgstr "" |
1516 | |
1517 | -#: .././plainbox/impl/unit/job.py:835 |
1518 | +#: .././plainbox/impl/unit/job.py:838 |
1519 | msgid "user without a command makes no sense" |
1520 | msgstr "" |
1521 | |
1522 | -#: .././plainbox/impl/unit/job.py:843 |
1523 | +#: .././plainbox/impl/unit/job.py:846 |
1524 | msgid "environ without a command makes no sense" |
1525 | msgstr "" |
1526 | |
1527 | -#: .././plainbox/impl/unit/job.py:869 .././plainbox/impl/unit/job.py:883 |
1528 | -#: .././plainbox/impl/unit/job.py:895 .././plainbox/impl/unit/job.py:928 |
1529 | -#: .././plainbox/impl/unit/template.py:438 |
1530 | -#: .././plainbox/impl/unit/testplan.py:595 |
1531 | +#: .././plainbox/impl/unit/job.py:872 .././plainbox/impl/unit/job.py:886 |
1532 | +#: .././plainbox/impl/unit/job.py:898 .././plainbox/impl/unit/job.py:931 |
1533 | +#: .././plainbox/impl/unit/template.py:447 |
1534 | +#: .././plainbox/impl/unit/testplan.py:651 |
1535 | msgid "the referenced unit is not a job" |
1536 | msgstr "" |
1537 | |
1538 | -#: .././plainbox/impl/unit/job.py:902 .././plainbox/impl/unit/template.py:445 |
1539 | +#: .././plainbox/impl/unit/job.py:905 .././plainbox/impl/unit/template.py:454 |
1540 | msgid "the referenced job is not a resource job" |
1541 | msgstr "" |
1542 | |
1543 | -#: .././plainbox/impl/unit/job.py:913 |
1544 | +#: .././plainbox/impl/unit/job.py:916 |
1545 | msgid "only /bin/sh and /bin/bash are allowed" |
1546 | msgstr "" |
1547 | |
1548 | -#: .././plainbox/impl/unit/job.py:943 |
1549 | +#: .././plainbox/impl/unit/job.py:946 |
1550 | msgid "the referenced unit is not a category" |
1551 | msgstr "" |
1552 | |
1553 | -#: .././plainbox/impl/unit/job.py:956 |
1554 | +#: .././plainbox/impl/unit/job.py:959 |
1555 | msgid "" |
1556 | "please ensure that the command supports non-C locale then set the preserve-" |
1557 | "locale flag" |
1558 | msgstr "" |
1559 | |
1560 | -#: .././plainbox/impl/unit/job.py:967 |
1561 | +#: .././plainbox/impl/unit/job.py:970 |
1562 | msgid "" |
1563 | "explicit-fail makes no sense for job which outcome is automatically " |
1564 | "determined." |
1565 | msgstr "" |
1566 | |
1567 | -#: .././plainbox/impl/unit/job.py:976 |
1568 | +#: .././plainbox/impl/unit/job.py:979 |
1569 | msgid "has-leftovers makes no sense without a command" |
1570 | msgstr "" |
1571 | |
1572 | -#: .././plainbox/impl/unit/job.py:988 |
1573 | +#: .././plainbox/impl/unit/job.py:991 |
1574 | msgid "use the .qml extension for all QML files" |
1575 | msgstr "" |
1576 | |
1577 | -#: .././plainbox/impl/unit/job.py:993 |
1578 | +#: .././plainbox/impl/unit/job.py:996 |
1579 | msgid "please point to an existing QML file" |
1580 | msgstr "" |
1581 | |
1582 | @@ -3089,19 +3121,19 @@ |
1583 | msgid "Using null packaging driver" |
1584 | msgstr "" |
1585 | |
1586 | -#: .././plainbox/impl/unit/template.py:72 |
1587 | +#: .././plainbox/impl/unit/template.py:71 |
1588 | msgid "unable to instantiate template: {}" |
1589 | msgstr "" |
1590 | |
1591 | -#: .././plainbox/impl/unit/template.py:406 |
1592 | +#: .././plainbox/impl/unit/template.py:415 |
1593 | msgid "template" |
1594 | msgstr "" |
1595 | |
1596 | -#: .././plainbox/impl/unit/template.py:426 |
1597 | +#: .././plainbox/impl/unit/template.py:435 |
1598 | msgid "template should explicitly define instantiated unit type" |
1599 | msgstr "" |
1600 | |
1601 | -#: .././plainbox/impl/unit/template.py:466 |
1602 | +#: .././plainbox/impl/unit/template.py:475 |
1603 | msgid "at most one import statement is allowed" |
1604 | msgstr "" |
1605 | |
1606 | @@ -3116,96 +3148,106 @@ |
1607 | "patterns" |
1608 | msgstr "" |
1609 | |
1610 | -#: .././plainbox/impl/unit/testplan.py:313 |
1611 | +#: .././plainbox/impl/unit/testplan.py:329 |
1612 | #, python-format |
1613 | msgid "unable to parse bootstrap_include: %s" |
1614 | msgstr "" |
1615 | |
1616 | -#: .././plainbox/impl/unit/testplan.py:599 |
1617 | +#: .././plainbox/impl/unit/testplan.py:353 |
1618 | +#, python-format |
1619 | +msgid "unable to parse nested_part: %s" |
1620 | +msgstr "" |
1621 | + |
1622 | +#: .././plainbox/impl/unit/testplan.py:361 |
1623 | +#, python-format |
1624 | +msgid "unable to find nested part: %s" |
1625 | +msgstr "" |
1626 | + |
1627 | +#: .././plainbox/impl/unit/testplan.py:655 |
1628 | msgid "only local and resource jobs are allowed in bootstrapping_include" |
1629 | msgstr "" |
1630 | |
1631 | -#: .././plainbox/impl/unit/unit.py:117 |
1632 | +#: .././plainbox/impl/unit/unit.py:116 |
1633 | msgid "{}.Meta.fields[{!r}] is not a validator" |
1634 | msgstr "" |
1635 | |
1636 | -#: .././plainbox/impl/unit/unit.py:129 |
1637 | +#: .././plainbox/impl/unit/unit.py:128 |
1638 | msgid "{}.Meta.fields[{!r}][{}] is not a validator" |
1639 | msgstr "" |
1640 | |
1641 | -#: .././plainbox/impl/unit/unit.py:198 |
1642 | +#: .././plainbox/impl/unit/unit.py:197 |
1643 | msgid "unable to deduce message and no message provided" |
1644 | msgstr "" |
1645 | |
1646 | -#: .././plainbox/impl/unit/unit.py:240 |
1647 | +#: .././plainbox/impl/unit/unit.py:239 |
1648 | msgid "field {field!a}, {message}" |
1649 | msgstr "" |
1650 | |
1651 | -#: .././plainbox/impl/unit/unit.py:244 |
1652 | +#: .././plainbox/impl/unit/unit.py:243 |
1653 | msgid "required field missing" |
1654 | msgstr "" |
1655 | |
1656 | -#: .././plainbox/impl/unit/unit.py:245 .././plainbox/provider_manager.py:999 |
1657 | +#: .././plainbox/impl/unit/unit.py:244 .././plainbox/provider_manager.py:1003 |
1658 | msgid "incorrect value supplied" |
1659 | msgstr "" |
1660 | |
1661 | +#: .././plainbox/impl/unit/unit.py:245 |
1662 | +msgid "definition useless in this context" |
1663 | +msgstr "" |
1664 | + |
1665 | #: .././plainbox/impl/unit/unit.py:246 |
1666 | -msgid "definition useless in this context" |
1667 | +msgid "deprecated field used" |
1668 | msgstr "" |
1669 | |
1670 | #: .././plainbox/impl/unit/unit.py:247 |
1671 | -msgid "deprecated field used" |
1672 | +msgid "value must be variant (parametrized)" |
1673 | msgstr "" |
1674 | |
1675 | #: .././plainbox/impl/unit/unit.py:248 |
1676 | -msgid "value must be variant (parametrized)" |
1677 | +msgid "value must be invariant (unparametrized)" |
1678 | msgstr "" |
1679 | |
1680 | #: .././plainbox/impl/unit/unit.py:249 |
1681 | -msgid "value must be invariant (unparametrized)" |
1682 | +msgid "field refers to unknown parameter" |
1683 | msgstr "" |
1684 | |
1685 | #: .././plainbox/impl/unit/unit.py:250 |
1686 | -msgid "field refers to unknown parameter" |
1687 | +msgid "field value is not unique" |
1688 | msgstr "" |
1689 | |
1690 | #: .././plainbox/impl/unit/unit.py:251 |
1691 | -msgid "field value is not unique" |
1692 | -msgstr "" |
1693 | - |
1694 | -#: .././plainbox/impl/unit/unit.py:252 |
1695 | msgid "field should be marked as translatable" |
1696 | msgstr "" |
1697 | |
1698 | +#: .././plainbox/impl/unit/unit.py:253 |
1699 | +msgid "field should not be marked as translatable" |
1700 | +msgstr "" |
1701 | + |
1702 | #: .././plainbox/impl/unit/unit.py:254 |
1703 | -msgid "field should not be marked as translatable" |
1704 | +msgid "syntax error inside the field" |
1705 | msgstr "" |
1706 | |
1707 | #: .././plainbox/impl/unit/unit.py:255 |
1708 | -msgid "syntax error inside the field" |
1709 | -msgstr "" |
1710 | - |
1711 | -#: .././plainbox/impl/unit/unit.py:256 |
1712 | msgid "bad reference to another unit" |
1713 | msgstr "" |
1714 | |
1715 | -#: .././plainbox/impl/unit/unit.py:348 |
1716 | +#: .././plainbox/impl/unit/unit.py:347 |
1717 | msgid "Please define 'name' in {}.Meta" |
1718 | msgstr "" |
1719 | |
1720 | -#: .././plainbox/impl/unit/unit.py:852 |
1721 | +#: .././plainbox/impl/unit/unit.py:851 |
1722 | msgid "unit should explicitly define its type" |
1723 | msgstr "" |
1724 | |
1725 | -#: .././plainbox/impl/unit/unit_with_id.py:68 |
1726 | +#: .././plainbox/impl/unit/unit_with_id.py:66 |
1727 | msgid "{unit} {id!a}, field {field!a}, {message}" |
1728 | msgstr "" |
1729 | |
1730 | -#: .././plainbox/impl/unit/unit_with_id.py:107 |
1731 | +#: .././plainbox/impl/unit/unit_with_id.py:105 |
1732 | msgid "unit-with-id" |
1733 | msgstr "" |
1734 | |
1735 | -#: .././plainbox/impl/unit/unit_with_id.py:128 |
1736 | +#: .././plainbox/impl/unit/unit_with_id.py:126 |
1737 | msgid "identifier cannot define a custom namespace" |
1738 | msgstr "" |
1739 | |
1740 | @@ -3214,6 +3256,7 @@ |
1741 | msgstr "" |
1742 | |
1743 | #: .././plainbox/impl/unit/validators.py:556 |
1744 | +#, python-brace-format |
1745 | msgid "clashes with {0} other unit" |
1746 | msgid_plural "clashes with {0} other units" |
1747 | msgstr[0] "" |
1748 | @@ -3288,6 +3331,7 @@ |
1749 | #. result won't work. In particular the leading whitespace *must* be |
1750 | #. preserved and *must* have the same length on each line. |
1751 | #: .././plainbox/provider_manager.py:119 |
1752 | +#, python-brace-format |
1753 | msgid "" |
1754 | "\n" |
1755 | " install this provider in the system\n" |
1756 | @@ -3412,7 +3456,7 @@ |
1757 | #. It must be correctly preserved or the result won't work. In particular |
1758 | #. the leading whitespace *must* be preserved and *must* have the same |
1759 | #. length on each line. |
1760 | -#: .././plainbox/provider_manager.py:498 |
1761 | +#: .././plainbox/provider_manager.py:502 |
1762 | msgid "" |
1763 | "\n" |
1764 | " install/remove this provider, only for development\n" |
1765 | @@ -3441,28 +3485,28 @@ |
1766 | msgstr "" |
1767 | |
1768 | #. TRANSLATORS: don't translate the extension name |
1769 | -#: .././plainbox/provider_manager.py:536 |
1770 | +#: .././plainbox/provider_manager.py:540 |
1771 | msgid "remove the generated .provider file" |
1772 | msgstr "" |
1773 | |
1774 | -#: .././plainbox/provider_manager.py:539 |
1775 | +#: .././plainbox/provider_manager.py:543 |
1776 | msgid "overwrite existing provider files" |
1777 | msgstr "" |
1778 | |
1779 | -#: .././plainbox/provider_manager.py:543 |
1780 | +#: .././plainbox/provider_manager.py:547 |
1781 | msgid "directory to use (defaults to user's home provider path)" |
1782 | msgstr "" |
1783 | |
1784 | -#: .././plainbox/provider_manager.py:551 |
1785 | +#: .././plainbox/provider_manager.py:555 |
1786 | #, python-format |
1787 | msgid "Removing provider file: %s" |
1788 | msgstr "" |
1789 | |
1790 | -#: .././plainbox/provider_manager.py:555 |
1791 | +#: .././plainbox/provider_manager.py:559 |
1792 | msgid "Provider file already exists: {}" |
1793 | msgstr "" |
1794 | |
1795 | -#: .././plainbox/provider_manager.py:558 |
1796 | +#: .././plainbox/provider_manager.py:562 |
1797 | #, python-format |
1798 | msgid "Creating provider file: %s" |
1799 | msgstr "" |
1800 | @@ -3475,7 +3519,7 @@ |
1801 | #. It must be correctly preserved or the result won't work. In particular |
1802 | #. the leading whitespace *must* be preserved and *must* have the same |
1803 | #. length on each line. |
1804 | -#: .././plainbox/provider_manager.py:573 |
1805 | +#: .././plainbox/provider_manager.py:577 |
1806 | msgid "" |
1807 | "\n" |
1808 | " build provider specific executables from source\n" |
1809 | @@ -3514,7 +3558,7 @@ |
1810 | #. It must be correctly preserved or the result won't work. In particular |
1811 | #. the leading whitespace *must* be preserved and *must* have the same |
1812 | #. length on each line. |
1813 | -#: .././plainbox/provider_manager.py:722 |
1814 | +#: .././plainbox/provider_manager.py:726 |
1815 | msgid "" |
1816 | "\n" |
1817 | " clean build results\n" |
1818 | @@ -3553,7 +3597,7 @@ |
1819 | #. It must be correctly preserved or the result won't work. In particular |
1820 | #. the leading whitespace *must* be preserved and *must* have the same |
1821 | #. length on each line. |
1822 | -#: .././plainbox/provider_manager.py:825 |
1823 | +#: .././plainbox/provider_manager.py:829 |
1824 | msgid "" |
1825 | "\n" |
1826 | " display basic information about this provider\n" |
1827 | @@ -3567,78 +3611,81 @@ |
1828 | " " |
1829 | msgstr "" |
1830 | |
1831 | -#: .././plainbox/provider_manager.py:851 |
1832 | +#: .././plainbox/provider_manager.py:855 |
1833 | msgid "[Provider MetaData]" |
1834 | msgstr "" |
1835 | |
1836 | #. TRANSLATORS: {} is the name of the test provider |
1837 | -#: .././plainbox/provider_manager.py:853 |
1838 | +#: .././plainbox/provider_manager.py:857 |
1839 | msgid "name: {}" |
1840 | msgstr "" |
1841 | |
1842 | #. TRANSLATORS: {} is the namespace of the test provider |
1843 | -#: .././plainbox/provider_manager.py:856 |
1844 | +#: .././plainbox/provider_manager.py:860 |
1845 | msgid "namespace: {}" |
1846 | msgstr "" |
1847 | |
1848 | #. TRANSLATORS: {} is the namespace of the test provider |
1849 | -#: .././plainbox/provider_manager.py:859 |
1850 | +#: .././plainbox/provider_manager.py:863 |
1851 | msgid "namespace: {} (derived from name)" |
1852 | msgstr "" |
1853 | |
1854 | #. TRANSLATORS: {} is the name of the test provider |
1855 | -#: .././plainbox/provider_manager.py:862 |
1856 | +#: .././plainbox/provider_manager.py:866 |
1857 | msgid "description: {}" |
1858 | msgstr "" |
1859 | |
1860 | #. TRANSLATORS: {} is the version of the test provider |
1861 | -#: .././plainbox/provider_manager.py:864 |
1862 | +#: .././plainbox/provider_manager.py:868 |
1863 | msgid "version: {}" |
1864 | msgstr "" |
1865 | |
1866 | #. TRANSLATORS: {} is the gettext translation domain of the provider |
1867 | -#: .././plainbox/provider_manager.py:866 |
1868 | +#: .././plainbox/provider_manager.py:870 |
1869 | msgid "gettext domain: {}" |
1870 | msgstr "" |
1871 | |
1872 | -#: .././plainbox/provider_manager.py:868 |
1873 | +#: .././plainbox/provider_manager.py:872 |
1874 | msgid "[Job Definitions]" |
1875 | msgstr "" |
1876 | |
1877 | -#: .././plainbox/provider_manager.py:871 |
1878 | +#: .././plainbox/provider_manager.py:875 |
1879 | msgid "[Test Plans]" |
1880 | msgstr "" |
1881 | |
1882 | -#: .././plainbox/provider_manager.py:874 |
1883 | +#: .././plainbox/provider_manager.py:878 |
1884 | msgid "[Test Plans] (legacy)" |
1885 | msgstr "" |
1886 | |
1887 | -#: .././plainbox/provider_manager.py:877 |
1888 | +#: .././plainbox/provider_manager.py:881 |
1889 | +#, python-brace-format |
1890 | msgid "{0} from {1}" |
1891 | msgstr "" |
1892 | |
1893 | -#: .././plainbox/provider_manager.py:880 |
1894 | +#: .././plainbox/provider_manager.py:884 |
1895 | msgid "[Other Units]" |
1896 | msgstr "" |
1897 | |
1898 | -#: .././plainbox/provider_manager.py:885 |
1899 | +#: .././plainbox/provider_manager.py:889 |
1900 | msgid "Some units could not be parsed correctly" |
1901 | msgstr "" |
1902 | |
1903 | #. TRANSLATORS: please don't translate `manage.py validate` |
1904 | -#: .././plainbox/provider_manager.py:887 |
1905 | +#: .././plainbox/provider_manager.py:891 |
1906 | msgid "Please run `manage.py validate` for details" |
1907 | msgstr "" |
1908 | |
1909 | -#: .././plainbox/provider_manager.py:888 |
1910 | +#: .././plainbox/provider_manager.py:892 |
1911 | msgid "[Executables]" |
1912 | msgstr "" |
1913 | |
1914 | -#: .././plainbox/provider_manager.py:898 |
1915 | +#: .././plainbox/provider_manager.py:902 |
1916 | +#, python-brace-format |
1917 | msgid "{0} {1}, role {2}" |
1918 | msgstr "" |
1919 | |
1920 | -#: .././plainbox/provider_manager.py:903 |
1921 | +#: .././plainbox/provider_manager.py:907 |
1922 | +#, python-brace-format |
1923 | msgid "{0} {1}, from {2}" |
1924 | msgstr "" |
1925 | |
1926 | @@ -3650,7 +3697,7 @@ |
1927 | #. It must be correctly preserved or the result won't work. In particular |
1928 | #. the leading whitespace *must* be preserved and *must* have the same |
1929 | #. length on each line. |
1930 | -#: .././plainbox/provider_manager.py:918 |
1931 | +#: .././plainbox/provider_manager.py:922 |
1932 | msgid "" |
1933 | "\n" |
1934 | " perform various static analysis and validation\n" |
1935 | @@ -3675,47 +3722,48 @@ |
1936 | " " |
1937 | msgstr "" |
1938 | |
1939 | -#: .././plainbox/provider_manager.py:970 |
1940 | +#: .././plainbox/provider_manager.py:974 |
1941 | msgid "validation options" |
1942 | msgstr "" |
1943 | |
1944 | -#: .././plainbox/provider_manager.py:973 |
1945 | +#: .././plainbox/provider_manager.py:977 |
1946 | msgid "Be strict about correctness" |
1947 | msgstr "" |
1948 | |
1949 | -#: .././plainbox/provider_manager.py:976 |
1950 | +#: .././plainbox/provider_manager.py:980 |
1951 | msgid "Report deprecated syntax and features" |
1952 | msgstr "" |
1953 | |
1954 | -#: .././plainbox/provider_manager.py:979 |
1955 | +#: .././plainbox/provider_manager.py:983 |
1956 | msgid "Be loose about correctness" |
1957 | msgstr "" |
1958 | |
1959 | -#: .././plainbox/provider_manager.py:982 |
1960 | +#: .././plainbox/provider_manager.py:986 |
1961 | msgid "Support deprecated syntax and features" |
1962 | msgstr "" |
1963 | |
1964 | -#: .././plainbox/provider_manager.py:998 |
1965 | +#: .././plainbox/provider_manager.py:1002 |
1966 | msgid "missing definition of required field" |
1967 | msgstr "" |
1968 | |
1969 | -#: .././plainbox/provider_manager.py:1000 |
1970 | +#: .././plainbox/provider_manager.py:1004 |
1971 | msgid "useless field in this context" |
1972 | msgstr "" |
1973 | |
1974 | -#: .././plainbox/provider_manager.py:1001 |
1975 | +#: .././plainbox/provider_manager.py:1005 |
1976 | msgid "usage of deprecated field" |
1977 | msgstr "" |
1978 | |
1979 | -#: .././plainbox/provider_manager.py:1002 |
1980 | +#: .././plainbox/provider_manager.py:1006 |
1981 | msgid "template field is constant" |
1982 | msgstr "" |
1983 | |
1984 | -#: .././plainbox/provider_manager.py:1003 |
1985 | +#: .././plainbox/provider_manager.py:1007 |
1986 | msgid "template field is variable" |
1987 | msgstr "" |
1988 | |
1989 | -#: .././plainbox/provider_manager.py:1020 |
1990 | +#: .././plainbox/provider_manager.py:1024 |
1991 | +#, python-brace-format |
1992 | msgid "allowed values are: {0}" |
1993 | msgstr "" |
1994 | |
1995 | @@ -3725,47 +3773,49 @@ |
1996 | #. 2: unit identifier |
1997 | #. 3: field name |
1998 | #. 4: explanation of the problem |
1999 | -#: .././plainbox/provider_manager.py:1028 |
2000 | +#: .././plainbox/provider_manager.py:1032 |
2001 | msgid "{0}: {1} {2!a}, field {3!a}: {4}" |
2002 | msgstr "" |
2003 | |
2004 | -#: .././plainbox/provider_manager.py:1039 |
2005 | -#: .././plainbox/provider_manager.py:1123 |
2006 | +#: .././plainbox/provider_manager.py:1043 |
2007 | +#: .././plainbox/provider_manager.py:1127 |
2008 | msgid "The provider seems to be valid" |
2009 | msgstr "" |
2010 | |
2011 | -#: .././plainbox/provider_manager.py:1051 |
2012 | -#: .././plainbox/provider_manager.py:1135 |
2013 | +#: .././plainbox/provider_manager.py:1055 |
2014 | +#: .././plainbox/provider_manager.py:1139 |
2015 | msgid "NOTE: subsequent units from problematic files are ignored" |
2016 | msgstr "" |
2017 | |
2018 | -#: .././plainbox/provider_manager.py:1065 |
2019 | +#: .././plainbox/provider_manager.py:1069 |
2020 | msgid "Loading provider..." |
2021 | msgstr "" |
2022 | |
2023 | -#: .././plainbox/provider_manager.py:1067 |
2024 | +#: .././plainbox/provider_manager.py:1071 |
2025 | msgid "Loading other providers..." |
2026 | msgstr "" |
2027 | |
2028 | -#: .././plainbox/provider_manager.py:1084 |
2029 | +#: .././plainbox/provider_manager.py:1088 |
2030 | msgid "Validating everything..." |
2031 | msgstr "" |
2032 | |
2033 | -#: .././plainbox/provider_manager.py:1110 |
2034 | +#: .././plainbox/provider_manager.py:1114 |
2035 | +#, python-brace-format |
2036 | msgid "NOTE: {0} advice was hidden" |
2037 | msgid_plural "NOTE: {0} advices where hidden" |
2038 | msgstr[0] "" |
2039 | msgstr[1] "" |
2040 | |
2041 | -#: .././plainbox/provider_manager.py:1115 |
2042 | +#: .././plainbox/provider_manager.py:1119 |
2043 | msgid "Run 'manage.py validate --strict --deprecated' for details" |
2044 | msgstr "" |
2045 | |
2046 | -#: .././plainbox/provider_manager.py:1119 |
2047 | +#: .././plainbox/provider_manager.py:1123 |
2048 | +#, python-brace-format |
2049 | msgid "Validation of provider {0} has failed" |
2050 | msgstr "" |
2051 | |
2052 | -#: .././plainbox/provider_manager.py:1140 |
2053 | +#: .././plainbox/provider_manager.py:1144 |
2054 | #, python-format |
2055 | msgid "Validating unit %s" |
2056 | msgstr "" |
2057 | @@ -3778,7 +3828,7 @@ |
2058 | #. It must be correctly preserved or the result won't work. In particular |
2059 | #. the leading whitespace *must* be preserved and *must* have the same |
2060 | #. length on each line. |
2061 | -#: .././plainbox/provider_manager.py:1189 |
2062 | +#: .././plainbox/provider_manager.py:1193 |
2063 | msgid "" |
2064 | "\n" |
2065 | " update, merge and build translation catalogs\n" |
2066 | @@ -3788,23 +3838,23 @@ |
2067 | " " |
2068 | msgstr "" |
2069 | |
2070 | -#: .././plainbox/provider_manager.py:1212 |
2071 | +#: .././plainbox/provider_manager.py:1216 |
2072 | msgid "don't actually do anything" |
2073 | msgstr "" |
2074 | |
2075 | -#: .././plainbox/provider_manager.py:1213 |
2076 | +#: .././plainbox/provider_manager.py:1217 |
2077 | msgid "actions to perform" |
2078 | msgstr "" |
2079 | |
2080 | -#: .././plainbox/provider_manager.py:1216 |
2081 | +#: .././plainbox/provider_manager.py:1220 |
2082 | msgid "do not update the translation template" |
2083 | msgstr "" |
2084 | |
2085 | -#: .././plainbox/provider_manager.py:1219 |
2086 | +#: .././plainbox/provider_manager.py:1223 |
2087 | msgid "do not merge translation files with the template" |
2088 | msgstr "" |
2089 | |
2090 | -#: .././plainbox/provider_manager.py:1222 |
2091 | +#: .././plainbox/provider_manager.py:1226 |
2092 | msgid "do not build binary translation files" |
2093 | msgstr "" |
2094 | |
2095 | @@ -3816,7 +3866,7 @@ |
2096 | #. It must be correctly preserved or the result won't work. In particular |
2097 | #. the leading whitespace *must* be preserved and *must* have the same |
2098 | #. length on each line. |
2099 | -#: .././plainbox/provider_manager.py:1304 |
2100 | +#: .././plainbox/provider_manager.py:1326 |
2101 | msgid "" |
2102 | "\n" |
2103 | " generate packaging meta-data\n" |
2104 | @@ -3828,17 +3878,17 @@ |
2105 | " " |
2106 | msgstr "" |
2107 | |
2108 | -#: .././plainbox/provider_manager.py:1396 |
2109 | +#: .././plainbox/provider_manager.py:1418 |
2110 | msgid "Per-provider management script" |
2111 | msgstr "" |
2112 | |
2113 | #. TRANSLATORS: please keep 'manage.py', '--help', '--version' |
2114 | #. untranslated. Translate only '[options]' |
2115 | -#: .././plainbox/provider_manager.py:1400 |
2116 | +#: .././plainbox/provider_manager.py:1422 |
2117 | msgid "manage.py [--help] [--version] [options]" |
2118 | msgstr "" |
2119 | |
2120 | -#: .././plainbox/provider_manager.py:1485 |
2121 | +#: .././plainbox/provider_manager.py:1507 |
2122 | msgid "{}: bad value of {!r}, {}" |
2123 | msgstr "" |
2124 | |
2125 | @@ -4154,6 +4204,7 @@ |
2126 | msgstr "" |
2127 | |
2128 | #: .././plainbox/vendor/phablet.py:127 |
2129 | +#, python-brace-format |
2130 | msgid "Programming error: {0}" |
2131 | msgstr "" |
2132 | |
2133 | |
2134 | === modified file 'tools/canonical-hw-collection/canonical-hw-collection' |
2135 | --- tools/canonical-hw-collection/canonical-hw-collection 2016-01-18 17:08:02 +0000 |
2136 | +++ tools/canonical-hw-collection/canonical-hw-collection 2016-08-03 18:15:33 +0000 |
2137 | @@ -37,12 +37,12 @@ |
2138 | |
2139 | """A Canonical-specific identifier of a particular device.""" |
2140 | |
2141 | - SECURE_ID_PATTERN = r"^[a-zA-Z0-9]{15}$|^[a-zA-Z0-9]{18}$" |
2142 | + SECURE_ID_PATTERN = r"^[a-zA-Z0-9]{15,}$" |
2143 | |
2144 | def __new__(cls, value): |
2145 | if not re.match(cls.SECURE_ID_PATTERN, value): |
2146 | raise ValueError( |
2147 | - _("secure_id must be 15 or 18-character alphanumeric string")) |
2148 | + _("secure_id must be 15-character (or more) alphanumeric string")) |
2149 | return super().__new__(cls, value) |
2150 | |
2151 |
regexp confirmed for 15+, looks good. +1