Merge lp:~cjwatson/launchpad/hardwaredb-tests-future-imports into lp:launchpad
- hardwaredb-tests-future-imports
- Merge into devel
Proposed by
Colin Watson
Status: | Merged |
---|---|
Merged at revision: | 18933 |
Proposed branch: | lp:~cjwatson/launchpad/hardwaredb-tests-future-imports |
Merge into: | lp:launchpad |
Diff against target: |
4805 lines (+815/-786) 13 files modified
lib/lp/hardwaredb/browser/tests/test_views.py (+4/-1) lib/lp/hardwaredb/doc/hwdb-access.txt (+2/-2) lib/lp/hardwaredb/doc/hwdb-device-tables.txt (+411/-407) lib/lp/hardwaredb/doc/hwdb-submission.txt (+56/-54) lib/lp/hardwaredb/doc/hwdb.txt (+51/-50) lib/lp/hardwaredb/scripts/hwdbsubmissions.py (+14/-13) lib/lp/hardwaredb/scripts/tests/test_hwdb_submission_parser.py (+38/-36) lib/lp/hardwaredb/scripts/tests/test_hwdb_submission_processing.py (+14/-10) lib/lp/hardwaredb/scripts/tests/test_hwdbsubmissions.py (+2/-0) lib/lp/hardwaredb/stories/hwdb/xx-hwdb.txt (+22/-22) lib/lp/hardwaredb/stories/webservice/xx-hwdb.txt (+175/-177) lib/lp/hardwaredb/tests/test_doc.py (+8/-2) lib/lp/hardwaredb/tests/test_hwdb_submission_validation.py (+18/-12) |
To merge this branch: | bzr merge lp:~cjwatson/launchpad/hardwaredb-tests-future-imports |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
William Grant | code | Approve | |
Review via email: mp+366133@code.launchpad.net |
Commit message
Convert lp.hardwaredb to Launchpad's preferred __future__ imports.
Description of the change
To post a comment you must log in.
Revision history for this message
William Grant (wgrant) : | # |
review:
Approve
(code)
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'lib/lp/hardwaredb/browser/tests/test_views.py' |
2 | --- lib/lp/hardwaredb/browser/tests/test_views.py 2011-12-28 17:03:06 +0000 |
3 | +++ lib/lp/hardwaredb/browser/tests/test_views.py 2019-04-16 17:27:23 +0000 |
4 | @@ -5,6 +5,8 @@ |
5 | Run the view tests. |
6 | """ |
7 | |
8 | +from __future__ import absolute_import, print_function, unicode_literals |
9 | + |
10 | import logging |
11 | import os |
12 | import unittest |
13 | @@ -33,7 +35,8 @@ |
14 | for filename in filenames: |
15 | path = filename |
16 | one_test = LayeredDocFileSuite( |
17 | - path, setUp=setUp, tearDown=tearDown, |
18 | + path, |
19 | + setUp=lambda test: setUp(test, future=True), tearDown=tearDown, |
20 | layer=LaunchpadFunctionalLayer, |
21 | stdout_logging_level=logging.WARNING |
22 | ) |
23 | |
24 | === modified file 'lib/lp/hardwaredb/doc/hwdb-access.txt' |
25 | --- lib/lp/hardwaredb/doc/hwdb-access.txt 2011-12-08 20:24:09 +0000 |
26 | +++ lib/lp/hardwaredb/doc/hwdb-access.txt 2019-04-16 17:27:23 +0000 |
27 | @@ -21,9 +21,9 @@ |
28 | ... getattr(obj, attribute) |
29 | ... except Unauthorized: |
30 | ... has_access = False |
31 | - ... print "Access for %s denied" % person_name_or_address |
32 | + ... print("Access for %s denied" % person_name_or_address) |
33 | ... if has_access: |
34 | - ... print "Access for %s allowed" % person_name_or_address |
35 | + ... print("Access for %s allowed" % person_name_or_address) |
36 | ... logout() |
37 | |
38 | >>> def check_authorized_only_for_hwdb_team(obj, attribute): |
39 | |
40 | === modified file 'lib/lp/hardwaredb/doc/hwdb-device-tables.txt' |
41 | --- lib/lp/hardwaredb/doc/hwdb-device-tables.txt 2016-01-26 15:47:37 +0000 |
42 | +++ lib/lp/hardwaredb/doc/hwdb-device-tables.txt 2019-04-16 17:27:23 +0000 |
43 | @@ -14,7 +14,7 @@ |
44 | >>> from lp.hardwaredb.interfaces.hwdb import IHWVendorNameSet |
45 | >>> vendor_name_set = getUtility(IHWVendorNameSet) |
46 | >>> intel_name = vendor_name_set.create(name='Intel') |
47 | - >>> print intel_name.name |
48 | + >>> print(intel_name.name) |
49 | Intel |
50 | |
51 | Each name in the table must be unique. The attempt to create a second |
52 | @@ -61,7 +61,7 @@ |
53 | >>> a_umlaut_lower = u'\N{LATIN SMALL LETTER A WITH DIAERESIS}' |
54 | >>> a_umlaut_name = vendor_name_set.create(name=a_umlaut_upper) |
55 | >>> LaunchpadZopelessLayer.txn.commit() |
56 | - >>> print repr(a_umlaut_name.name) |
57 | + >>> print(repr(a_umlaut_name.name)) |
58 | u'\xc4' |
59 | |
60 | >>> vendor_name_set.create(name=a_umlaut_lower) |
61 | @@ -78,7 +78,7 @@ |
62 | >>> cyrillic_de_upper = u'\N{CYRILLIC CAPITAL LETTER DE}' |
63 | >>> cyrillic_de_lower = u'\N{CYRILLIC SMALL LETTER DE}' |
64 | >>> cyrillic_de_name = vendor_name_set.create(name=cyrillic_de_upper) |
65 | - >>> print repr(cyrillic_de_name.name) |
66 | + >>> print(repr(cyrillic_de_name.name)) |
67 | u'\u0414' |
68 | |
69 | >>> vendor_name_set.create(name=cyrillic_de_lower) |
70 | @@ -95,7 +95,7 @@ |
71 | >>> alpha_upper = u'\N{GREEK CAPITAL LETTER ALPHA}' |
72 | >>> alpha_lower = u'\N{GREEK SMALL LETTER ALPHA}' |
73 | >>> cyrillic_de_name = vendor_name_set.create(name=alpha_upper) |
74 | - >>> print repr(cyrillic_de_name.name) |
75 | + >>> print(repr(cyrillic_de_name.name)) |
76 | u'\u0391' |
77 | |
78 | >>> vendor_name_set.create(name=alpha_lower) |
79 | @@ -110,33 +110,33 @@ |
80 | Existing IHWVendorName records are retrieved by IHWVendorName.getByName(). |
81 | |
82 | >>> intel_name = vendor_name_set.getByName('Intel') |
83 | - >>> print intel_name.name |
84 | + >>> print(intel_name.name) |
85 | Intel |
86 | |
87 | The capitalization of the name does not metter. |
88 | |
89 | >>> intel_name = vendor_name_set.getByName('INTEL') |
90 | - >>> print intel_name.name |
91 | + >>> print(intel_name.name) |
92 | Intel |
93 | |
94 | >>> intel_name = vendor_name_set.getByName('intel') |
95 | - >>> print intel_name.name |
96 | + >>> print(intel_name.name) |
97 | Intel |
98 | |
99 | >>> umlaut_name = vendor_name_set.getByName( |
100 | ... u'\N{LATIN CAPITAL LETTER A WITH DIAERESIS}') |
101 | - >>> print repr(umlaut_name.name) |
102 | + >>> print(repr(umlaut_name.name)) |
103 | u'\xc4' |
104 | |
105 | >>> umlaut_name = vendor_name_set.getByName( |
106 | ... u'\N{LATIN SMALL LETTER A WITH DIAERESIS}') |
107 | - >>> print repr(umlaut_name.name) |
108 | + >>> print(repr(umlaut_name.name)) |
109 | u'\xc4' |
110 | |
111 | If no record matching the given name exists, IHWVendorName.getByName() |
112 | returns None. |
113 | |
114 | - >>> print vendor_name_set.getByName('Babbage Computers') |
115 | + >>> print(vendor_name_set.getByName('Babbage Computers')) |
116 | None |
117 | |
118 | |
119 | @@ -153,9 +153,9 @@ |
120 | >>> intel_pci_id = vendor_id_set.create(bus=HWBus.PCI, |
121 | ... vendor_id='0x8086', |
122 | ... vendor_name=intel_name) |
123 | - >>> print intel_pci_id.bus.title, intel_pci_id.vendor_id_for_bus |
124 | + >>> print(intel_pci_id.bus.title, intel_pci_id.vendor_id_for_bus) |
125 | PCI 0x8086 |
126 | - >>> print intel_pci_id.vendor_name.name |
127 | + >>> print(intel_pci_id.vendor_name.name) |
128 | Intel |
129 | |
130 | The tuple (bus, vendor id, vendor name) must be unique. |
131 | @@ -187,31 +187,31 @@ |
132 | >>> another_pci_vendor_id = vendor_id_set.create(bus=HWBus.PCI, |
133 | ... vendor_id='0x10ae', |
134 | ... vendor_name=intel_name) |
135 | - >>> print another_pci_vendor_id.bus.title |
136 | + >>> print(another_pci_vendor_id.bus.title) |
137 | PCI |
138 | - >>> print another_pci_vendor_id.vendor_id_for_bus |
139 | + >>> print(another_pci_vendor_id.vendor_id_for_bus) |
140 | 0x10ae |
141 | - >>> print another_pci_vendor_id.vendor_name.name |
142 | + >>> print(another_pci_vendor_id.vendor_name.name) |
143 | Intel |
144 | |
145 | >>> another_pci_vendor_id = vendor_id_set.create(bus=HWBus.PCCARD, |
146 | ... vendor_id='0x10ae', |
147 | ... vendor_name=intel_name) |
148 | - >>> print another_pci_vendor_id.bus.title |
149 | + >>> print(another_pci_vendor_id.bus.title) |
150 | PC Card (32 bit) |
151 | - >>> print another_pci_vendor_id.vendor_id_for_bus |
152 | + >>> print(another_pci_vendor_id.vendor_id_for_bus) |
153 | 0x10ae |
154 | - >>> print another_pci_vendor_id.vendor_name.name |
155 | + >>> print(another_pci_vendor_id.vendor_name.name) |
156 | Intel |
157 | |
158 | >>> another_usb_vendor_id = vendor_id_set.create(bus=HWBus.USB, |
159 | ... vendor_id='0x10ae', |
160 | ... vendor_name=intel_name) |
161 | - >>> print another_usb_vendor_id.bus.title |
162 | + >>> print(another_usb_vendor_id.bus.title) |
163 | USB |
164 | - >>> print another_usb_vendor_id.vendor_id_for_bus |
165 | + >>> print(another_usb_vendor_id.vendor_id_for_bus) |
166 | 0x10ae |
167 | - >>> print another_usb_vendor_id.vendor_name.name |
168 | + >>> print(another_usb_vendor_id.vendor_name.name) |
169 | Intel |
170 | |
171 | A..F is rejected. |
172 | @@ -221,7 +221,7 @@ |
173 | ... vendor_name=intel_name) |
174 | Traceback (most recent call last): |
175 | ... |
176 | - ParameterError: '0x10AE' is not a valid vendor ID for PCI |
177 | + ParameterError: u'0x10AE' is not a valid vendor ID for PCI |
178 | >>> from storm.tracer import debug; debug(True) |
179 | >>> store.flush() |
180 | >>> debug(False) |
181 | @@ -231,14 +231,14 @@ |
182 | ... vendor_name=intel_name) |
183 | Traceback (most recent call last): |
184 | ... |
185 | - ParameterError: '0x10AE' is not a valid vendor ID for PC Card (32 bit) |
186 | + ParameterError: u'0x10AE' is not a valid vendor ID for PC Card (32 bit) |
187 | |
188 | >>> vendor_id_set.create(bus=HWBus.USB, |
189 | ... vendor_id='0x10AE', |
190 | ... vendor_name=intel_name) |
191 | Traceback (most recent call last): |
192 | ... |
193 | - ParameterError: '0x10AE' is not a valid vendor ID for USB |
194 | + ParameterError: u'0x10AE' is not a valid vendor ID for USB |
195 | |
196 | The ID must have the prefix "0x". |
197 | |
198 | @@ -247,21 +247,21 @@ |
199 | ... vendor_name=intel_name) |
200 | Traceback (most recent call last): |
201 | ... |
202 | - ParameterError: '8086' is not a valid vendor ID for PCI |
203 | + ParameterError: u'8086' is not a valid vendor ID for PCI |
204 | |
205 | >>> vendor_id_set.create(bus=HWBus.PCCARD, |
206 | ... vendor_id='8086', |
207 | ... vendor_name=intel_name) |
208 | Traceback (most recent call last): |
209 | ... |
210 | - ParameterError: '8086' is not a valid vendor ID for PC Card (32 bit) |
211 | + ParameterError: u'8086' is not a valid vendor ID for PC Card (32 bit) |
212 | |
213 | >>> vendor_id_set.create(bus=HWBus.USB, |
214 | ... vendor_id='8086', |
215 | ... vendor_name=intel_name) |
216 | Traceback (most recent call last): |
217 | ... |
218 | - ParameterError: '8086' is not a valid vendor ID for USB |
219 | + ParameterError: u'8086' is not a valid vendor ID for USB |
220 | |
221 | The number must have four digits. |
222 | |
223 | @@ -270,42 +270,42 @@ |
224 | ... vendor_name=intel_name) |
225 | Traceback (most recent call last): |
226 | ... |
227 | - ParameterError: '0x123' is not a valid vendor ID for PCI |
228 | + ParameterError: u'0x123' is not a valid vendor ID for PCI |
229 | |
230 | >>> vendor_id_set.create(bus=HWBus.PCCARD, |
231 | ... vendor_id='0x123', |
232 | ... vendor_name=intel_name) |
233 | Traceback (most recent call last): |
234 | ... |
235 | - ParameterError: '0x123' is not a valid vendor ID for PC Card (32 bit) |
236 | + ParameterError: u'0x123' is not a valid vendor ID for PC Card (32 bit) |
237 | |
238 | >>> vendor_id_set.create(bus=HWBus.USB, |
239 | ... vendor_id='0x123', |
240 | ... vendor_name=intel_name) |
241 | Traceback (most recent call last): |
242 | ... |
243 | - ParameterError: '0x123' is not a valid vendor ID for USB |
244 | + ParameterError: u'0x123' is not a valid vendor ID for USB |
245 | |
246 | >>> vendor_id_set.create(bus=HWBus.PCI, |
247 | ... vendor_id='0x12345', |
248 | ... vendor_name=intel_name) |
249 | Traceback (most recent call last): |
250 | ... |
251 | - ParameterError: '0x12345' is not a valid vendor ID for PCI |
252 | + ParameterError: u'0x12345' is not a valid vendor ID for PCI |
253 | |
254 | >>> vendor_id_set.create(bus=HWBus.PCCARD, |
255 | ... vendor_id='0x12345', |
256 | ... vendor_name=intel_name) |
257 | Traceback (most recent call last): |
258 | ... |
259 | - ParameterError: '0x12345' is not a valid vendor ID for PC Card (32 bit) |
260 | + ParameterError: u'0x12345' is not a valid vendor ID for PC Card (32 bit) |
261 | |
262 | >>> vendor_id_set.create(bus=HWBus.USB, |
263 | ... vendor_id='0x12345', |
264 | ... vendor_name=intel_name) |
265 | Traceback (most recent call last): |
266 | ... |
267 | - ParameterError: '0x12345' is not a valid vendor ID for USB |
268 | + ParameterError: u'0x12345' is not a valid vendor ID for USB |
269 | |
270 | Only hex digits are allowed. |
271 | |
272 | @@ -314,21 +314,21 @@ |
273 | ... vendor_name=intel_name) |
274 | Traceback (most recent call last): |
275 | ... |
276 | - ParameterError: '0xblah' is not a valid vendor ID for PCI |
277 | + ParameterError: u'0xblah' is not a valid vendor ID for PCI |
278 | |
279 | >>> vendor_id_set.create(bus=HWBus.PCCARD, |
280 | ... vendor_id='0xblah', |
281 | ... vendor_name=intel_name) |
282 | Traceback (most recent call last): |
283 | ... |
284 | - ParameterError: '0xblah' is not a valid vendor ID for PC Card (32 bit) |
285 | + ParameterError: u'0xblah' is not a valid vendor ID for PC Card (32 bit) |
286 | |
287 | >>> vendor_id_set.create(bus=HWBus.USB, |
288 | ... vendor_id='0xblah', |
289 | ... vendor_name=intel_name) |
290 | Traceback (most recent call last): |
291 | ... |
292 | - ParameterError: '0xblah' is not a valid vendor ID for USB |
293 | + ParameterError: u'0xblah' is not a valid vendor ID for USB |
294 | |
295 | IEEE1394 IDs are represented as strings with a six-digit hexadecimal |
296 | number, prefixed by '0x'; the digits a..f must be lower cases characters. |
297 | @@ -337,11 +337,11 @@ |
298 | >>> vendor_id_1394 = vendor_id_set.create(bus=HWBus.IEEE1394, |
299 | ... vendor_id='0x0010e0', |
300 | ... vendor_name=intel_name) |
301 | - >>> print vendor_id_1394.bus.title |
302 | + >>> print(vendor_id_1394.bus.title) |
303 | IEEE1394 |
304 | - >>> print vendor_id_1394.vendor_id_for_bus |
305 | + >>> print(vendor_id_1394.vendor_id_for_bus) |
306 | 0x0010e0 |
307 | - >>> print vendor_id_1394.vendor_name.name |
308 | + >>> print(vendor_id_1394.vendor_name.name) |
309 | Intel |
310 | |
311 | A..F is rejected. |
312 | @@ -351,7 +351,7 @@ |
313 | ... vendor_name=intel_name) |
314 | Traceback (most recent call last): |
315 | ... |
316 | - ParameterError: '0x0010E0' is not a valid vendor ID for IEEE1394 |
317 | + ParameterError: u'0x0010E0' is not a valid vendor ID for IEEE1394 |
318 | |
319 | The ID must have the prefix "0x". |
320 | |
321 | @@ -360,7 +360,7 @@ |
322 | ... vendor_name=intel_name) |
323 | Traceback (most recent call last): |
324 | ... |
325 | - ParameterError: '0010E0' is not a valid vendor ID for IEEE1394 |
326 | + ParameterError: u'0010E0' is not a valid vendor ID for IEEE1394 |
327 | |
328 | The number must have six digits. |
329 | |
330 | @@ -369,14 +369,14 @@ |
331 | ... vendor_name=intel_name) |
332 | Traceback (most recent call last): |
333 | ... |
334 | - ParameterError: '0x12345' is not a valid vendor ID for IEEE1394 |
335 | + ParameterError: u'0x12345' is not a valid vendor ID for IEEE1394 |
336 | |
337 | >>> vendor_id_set.create(bus=HWBus.IEEE1394, |
338 | ... vendor_id='0x1234567', |
339 | ... vendor_name=intel_name) |
340 | Traceback (most recent call last): |
341 | ... |
342 | - ParameterError: '0x1234567' is not a valid vendor ID for IEEE1394 |
343 | + ParameterError: u'0x1234567' is not a valid vendor ID for IEEE1394 |
344 | |
345 | Only hex digits are allowed. |
346 | |
347 | @@ -385,18 +385,18 @@ |
348 | ... vendor_name=intel_name) |
349 | Traceback (most recent call last): |
350 | ... |
351 | - ParameterError: '0xfoobar' is not a valid vendor ID for IEEE1394 |
352 | + ParameterError: u'0xfoobar' is not a valid vendor ID for IEEE1394 |
353 | |
354 | SCSI vendor IDs are ASCII strings with exactly eight characters. |
355 | |
356 | >>> intel_scsi_id = vendor_id_set.create(bus=HWBus.SCSI, |
357 | ... vendor_id='INTEL ', |
358 | ... vendor_name=intel_name) |
359 | - >>> print intel_scsi_id.bus.title |
360 | + >>> print(intel_scsi_id.bus.title) |
361 | SCSI |
362 | >>> intel_scsi_id.vendor_id_for_bus |
363 | u'INTEL ' |
364 | - >>> print intel_scsi_id.vendor_name.name |
365 | + >>> print(intel_scsi_id.vendor_name.name) |
366 | Intel |
367 | |
368 | Strings with less than eight characters are not allowed as SCSI vendor IDs... |
369 | @@ -406,7 +406,7 @@ |
370 | ... vendor_name=intel_name) |
371 | Traceback (most recent call last): |
372 | ... |
373 | - ParameterError: '1234567' is not a valid vendor ID for SCSI |
374 | + ParameterError: u'1234567' is not a valid vendor ID for SCSI |
375 | |
376 | ...as well as strings with more than eight characters. |
377 | |
378 | @@ -415,15 +415,15 @@ |
379 | ... vendor_name=intel_name) |
380 | Traceback (most recent call last): |
381 | ... |
382 | - ParameterError: '123456789' is not a valid vendor ID for SCSI |
383 | + ParameterError: u'123456789' is not a valid vendor ID for SCSI |
384 | |
385 | HWVendorIDSet.getByBusAndVendorID() is used to look up a HWVendorID record. |
386 | |
387 | >>> vendor_id = vendor_id_set.getByBusAndVendorID(bus=HWBus.PCI, |
388 | ... vendor_id='0x8086') |
389 | - >>> print vendor_id.bus.title |
390 | + >>> print(vendor_id.bus.title) |
391 | PCI |
392 | - >>> print vendor_id.vendor_name.name |
393 | + >>> print(vendor_id.vendor_name.name) |
394 | Intel |
395 | |
396 | If no record exists for the given bus and vendor ID, |
397 | @@ -431,7 +431,7 @@ |
398 | |
399 | >>> vendor_id = vendor_id_set.getByBusAndVendorID(bus=HWBus.PCI, |
400 | ... vendor_id='0xffff') |
401 | - >>> print vendor_id |
402 | + >>> print(vendor_id) |
403 | None |
404 | |
405 | HWVendorIDSet.getByBusAndVendorID() performs the same validity tests of |
406 | @@ -441,23 +441,23 @@ |
407 | >>> vendor_id_set.getByBusAndVendorID(bus=HWBus.PCI, vendor_id='8086') |
408 | Traceback (most recent call last): |
409 | ... |
410 | - ParameterError: '8086' is not a valid vendor ID for PCI |
411 | + ParameterError: u'8086' is not a valid vendor ID for PCI |
412 | |
413 | HWVendorIDSet.get() returns the HWVendorID record with the given ID... |
414 | |
415 | >>> vendor_id = vendor_id_set.get(1) |
416 | - >>> print vendor_id.bus.name, vendor_id.vendor_id_for_bus |
417 | + >>> print(vendor_id.bus.name, vendor_id.vendor_id_for_bus) |
418 | SYSTEM MSI |
419 | |
420 | ...or None, if no such record exists. |
421 | |
422 | - >>> print vendor_id_set.get(1000000) |
423 | + >>> print(vendor_id_set.get(1000000)) |
424 | None |
425 | |
426 | HWVendorIDSet.idsForBus() returns all known HWVendorIDs for a given bus. |
427 | |
428 | >>> for vendor_id in vendor_id_set.idsForBus(HWBus.PCI): |
429 | - ... print vendor_id.bus.name, vendor_id.vendor_id_for_bus |
430 | + ... print(vendor_id.bus.name, vendor_id.vendor_id_for_bus) |
431 | PCI 0x10ae |
432 | PCI 0x10de |
433 | PCI 0x8086 |
434 | @@ -491,33 +491,33 @@ |
435 | access them, as well as the vendor name, either via the attribute |
436 | bus_vendor, which references HWVendorID... |
437 | |
438 | - >>> print usb_controller.bus_vendor.bus.title |
439 | + >>> print(usb_controller.bus_vendor.bus.title) |
440 | PCI |
441 | - >>> print usb_controller.bus_vendor.vendor_id_for_bus |
442 | + >>> print(usb_controller.bus_vendor.vendor_id_for_bus) |
443 | 0x8086 |
444 | - >>> print usb_controller.bus_vendor.vendor_name.name |
445 | + >>> print(usb_controller.bus_vendor.vendor_name.name) |
446 | Intel |
447 | |
448 | ...or via the (read-only) HWDevice properties bus, vendor_id, vendor_name. |
449 | |
450 | - >>> print usb_controller.bus.title |
451 | + >>> print(usb_controller.bus.title) |
452 | PCI |
453 | - >>> print usb_controller.vendor_id |
454 | + >>> print(usb_controller.vendor_id) |
455 | 0x8086 |
456 | - >>> print usb_controller.vendor_name |
457 | + >>> print(usb_controller.vendor_name) |
458 | Intel |
459 | |
460 | Other attributes stored in HWDevice are the product ID, the product name, |
461 | the product variant and submissions. submissions is a counter of the |
462 | number of submissions with this device. |
463 | |
464 | - >>> print usb_controller.bus_product_id |
465 | + >>> print(usb_controller.bus_product_id) |
466 | 0x27cc |
467 | - >>> print usb_controller.name |
468 | + >>> print(usb_controller.name) |
469 | 82801GBM/GHM (ICH7 Family) USB2 EHCI Controller |
470 | - >>> print usb_controller.variant |
471 | + >>> print(usb_controller.variant) |
472 | None |
473 | - >>> print usb_controller.submissions |
474 | + >>> print(usb_controller.submissions) |
475 | 0 |
476 | |
477 | Like vendor IDs, product IDs of some busses have certain constraints. |
478 | @@ -533,21 +533,21 @@ |
479 | ... vendor_id='0x8086', |
480 | ... product_id='0xabcd', |
481 | ... product_name='A PCI card') |
482 | - >>> print another_pci_product.bus_product_id |
483 | + >>> print(another_pci_product.bus_product_id) |
484 | 0xabcd |
485 | |
486 | >>> another_pci_product = device_set.create(bus=HWBus.PCCARD, |
487 | ... vendor_id='0x8086', |
488 | ... product_id='0xabcd', |
489 | ... product_name='A PC Card') |
490 | - >>> print another_pci_product.bus_product_id |
491 | + >>> print(another_pci_product.bus_product_id) |
492 | 0xabcd |
493 | |
494 | >>> another_usb_product = device_set.create(bus=HWBus.USB, |
495 | ... vendor_id='0x8086', |
496 | ... product_id='0xabcd', |
497 | ... product_name='A USB device') |
498 | - >>> print another_usb_product.bus_product_id |
499 | + >>> print(another_usb_product.bus_product_id) |
500 | 0xabcd |
501 | |
502 | A..F is rejected. |
503 | @@ -558,7 +558,7 @@ |
504 | ... product_name='A PCI card') |
505 | Traceback (most recent call last): |
506 | ... |
507 | - ParameterError: '0xABCD' is not a valid product ID for PCI |
508 | + ParameterError: u'0xABCD' is not a valid product ID for PCI |
509 | |
510 | >>> device_set.create(bus=HWBus.PCCARD, |
511 | ... vendor_id='0x8086', |
512 | @@ -566,7 +566,7 @@ |
513 | ... product_name='A PC Card') |
514 | Traceback (most recent call last): |
515 | ... |
516 | - ParameterError: '0xABCD' is not a valid product ID for PC Card (32 bit) |
517 | + ParameterError: u'0xABCD' is not a valid product ID for PC Card (32 bit) |
518 | |
519 | >>> device_set.create(bus=HWBus.USB, |
520 | ... vendor_id='0x8086', |
521 | @@ -574,7 +574,7 @@ |
522 | ... product_name='A USB device') |
523 | Traceback (most recent call last): |
524 | ... |
525 | - ParameterError: '0xABCD' is not a valid product ID for USB |
526 | + ParameterError: u'0xABCD' is not a valid product ID for USB |
527 | |
528 | The ID must have the prefix "0x". |
529 | |
530 | @@ -584,7 +584,7 @@ |
531 | ... product_name='A PCI card') |
532 | Traceback (most recent call last): |
533 | ... |
534 | - ParameterError: '1234' is not a valid product ID for PCI |
535 | + ParameterError: u'1234' is not a valid product ID for PCI |
536 | |
537 | >>> device_set.create(bus=HWBus.PCCARD, |
538 | ... vendor_id='0x8086', |
539 | @@ -592,7 +592,7 @@ |
540 | ... product_name='A PC Card') |
541 | Traceback (most recent call last): |
542 | ... |
543 | - ParameterError: '1234' is not a valid product ID for PC Card (32 bit) |
544 | + ParameterError: u'1234' is not a valid product ID for PC Card (32 bit) |
545 | |
546 | >>> device_set.create(bus=HWBus.USB, |
547 | ... vendor_id='0x8086', |
548 | @@ -600,7 +600,7 @@ |
549 | ... product_name='A USB device') |
550 | Traceback (most recent call last): |
551 | ... |
552 | - ParameterError: '1234' is not a valid product ID for USB |
553 | + ParameterError: u'1234' is not a valid product ID for USB |
554 | |
555 | The number must have four digits. |
556 | |
557 | @@ -610,7 +610,7 @@ |
558 | ... product_name='A PCI card') |
559 | Traceback (most recent call last): |
560 | ... |
561 | - ParameterError: '0x123' is not a valid product ID for PCI |
562 | + ParameterError: u'0x123' is not a valid product ID for PCI |
563 | |
564 | >>> device_set.create(bus=HWBus.PCCARD, |
565 | ... vendor_id='0x8086', |
566 | @@ -618,7 +618,7 @@ |
567 | ... product_name='A PC Card') |
568 | Traceback (most recent call last): |
569 | ... |
570 | - ParameterError: '0x123' is not a valid product ID for PC Card (32 bit) |
571 | + ParameterError: u'0x123' is not a valid product ID for PC Card (32 bit) |
572 | |
573 | >>> device_set.create(bus=HWBus.USB, |
574 | ... vendor_id='0x8086', |
575 | @@ -626,7 +626,7 @@ |
576 | ... product_name='A USB device') |
577 | Traceback (most recent call last): |
578 | ... |
579 | - ParameterError: '0x123' is not a valid product ID for USB |
580 | + ParameterError: u'0x123' is not a valid product ID for USB |
581 | |
582 | >>> device_set.create(bus=HWBus.PCI, |
583 | ... vendor_id='0x8086', |
584 | @@ -634,7 +634,7 @@ |
585 | ... product_name='A PCI card') |
586 | Traceback (most recent call last): |
587 | ... |
588 | - ParameterError: '0x12345' is not a valid product ID for PCI |
589 | + ParameterError: u'0x12345' is not a valid product ID for PCI |
590 | |
591 | >>> device_set.create(bus=HWBus.PCCARD, |
592 | ... vendor_id='0x8086', |
593 | @@ -642,7 +642,7 @@ |
594 | ... product_name='A PC Card') |
595 | Traceback (most recent call last): |
596 | ... |
597 | - ParameterError: '0x12345' is not a valid product ID for PC Card (32 bit) |
598 | + ParameterError: u'0x12345' is not a valid product ID for PC Card (32 bit) |
599 | |
600 | >>> device_set.create(bus=HWBus.USB, |
601 | ... vendor_id='0x8086', |
602 | @@ -650,7 +650,7 @@ |
603 | ... product_name='A USB device') |
604 | Traceback (most recent call last): |
605 | ... |
606 | - ParameterError: '0x12345' is not a valid product ID for USB |
607 | + ParameterError: u'0x12345' is not a valid product ID for USB |
608 | |
609 | Only hex digits are allowed. |
610 | |
611 | @@ -660,7 +660,7 @@ |
612 | ... product_name='A PCI card') |
613 | Traceback (most recent call last): |
614 | ... |
615 | - ParameterError: '0xblah' is not a valid product ID for PCI |
616 | + ParameterError: u'0xblah' is not a valid product ID for PCI |
617 | |
618 | >>> device_set.create(bus=HWBus.PCCARD, |
619 | ... vendor_id='0x8086', |
620 | @@ -668,7 +668,7 @@ |
621 | ... product_name='A PC Card') |
622 | Traceback (most recent call last): |
623 | ... |
624 | - ParameterError: '0xblah' is not a valid product ID for PC Card (32 bit) |
625 | + ParameterError: u'0xblah' is not a valid product ID for PC Card (32 bit) |
626 | |
627 | >>> device_set.create(bus=HWBus.USB, |
628 | ... vendor_id='0x8086', |
629 | @@ -676,7 +676,7 @@ |
630 | ... product_name='A USB device') |
631 | Traceback (most recent call last): |
632 | ... |
633 | - ParameterError: '0xblah' is not a valid product ID for USB |
634 | + ParameterError: u'0xblah' is not a valid product ID for USB |
635 | |
636 | SCSI product IDs are ASCII strings with 16 characters. |
637 | |
638 | @@ -695,7 +695,7 @@ |
639 | ... product_name='A SCSI device') |
640 | Traceback (most recent call last): |
641 | ... |
642 | - ParameterError: '123456789012345' is not a valid product ID for SCSI |
643 | + ParameterError: u'123456789012345' is not a valid product ID for SCSI |
644 | |
645 | ...as well as strings with more than 16 characters. |
646 | |
647 | @@ -705,7 +705,7 @@ |
648 | ... product_name='A SCSI device') |
649 | Traceback (most recent call last): |
650 | ... |
651 | - ParameterError: '12345678901234567' is not a valid product ID for SCSI |
652 | + ParameterError: u'12345678901234567' is not a valid product ID for SCSI |
653 | |
654 | |
655 | Unknown Vendor IDs |
656 | @@ -730,7 +730,7 @@ |
657 | ... vendor_id='0x4321', |
658 | ... product_id='0x8765', |
659 | ... product_name='mind sensor') |
660 | - >>> print new_vendor_device.bus_vendor.vendor_name.name |
661 | + >>> print(new_vendor_device.bus_vendor.vendor_name.name) |
662 | Unknown |
663 | |
664 | |
665 | @@ -762,13 +762,13 @@ |
666 | ... vendor_id='0x07b3', |
667 | ... product_id='0x0017', |
668 | ... product_name='some scanner') |
669 | - >>> print some_plustek_scanner.bus_vendor.vendor_id_for_bus |
670 | + >>> print(some_plustek_scanner.bus_vendor.vendor_id_for_bus) |
671 | 0x07b3 |
672 | - >>> print some_plustek_scanner.bus_vendor.vendor_name.name |
673 | + >>> print(some_plustek_scanner.bus_vendor.vendor_name.name) |
674 | Plustek |
675 | - >>> print some_plustek_scanner.name |
676 | + >>> print(some_plustek_scanner.name) |
677 | some scanner |
678 | - >>> print some_plustek_scanner.variant |
679 | + >>> print(some_plustek_scanner.variant) |
680 | None |
681 | |
682 | Once we know that (bus, vendor ID, product ID) does not uniquely |
683 | @@ -802,15 +802,15 @@ |
684 | ... vendor_id=hal_vendor_name, |
685 | ... product_id=hal_product_name, |
686 | ... product_name=hal_product_name) |
687 | - >>> print tuffbook_2600.bus_vendor.bus.title |
688 | + >>> print(tuffbook_2600.bus_vendor.bus.title) |
689 | System |
690 | - >>> print tuffbook_2600.bus_vendor.vendor_id_for_bus |
691 | - Tonka |
692 | - >>> print tuffbook_2600.bus_vendor.vendor_name.name |
693 | - Tonka |
694 | - >>> print tuffbook_2600.bus_product_id |
695 | + >>> print(tuffbook_2600.bus_vendor.vendor_id_for_bus) |
696 | + Tonka |
697 | + >>> print(tuffbook_2600.bus_vendor.vendor_name.name) |
698 | + Tonka |
699 | + >>> print(tuffbook_2600.bus_product_id) |
700 | Tuffbook 2600 |
701 | - >>> print tuffbook_2600.name |
702 | + >>> print(tuffbook_2600.name) |
703 | Tuffbook 2600 |
704 | |
705 | The tuple (bus_vendor, bus_product_id, variant) must be unique. |
706 | @@ -848,50 +848,50 @@ |
707 | HWDeviceSet.getByDeviceID() |
708 | |
709 | >>> device = device_set.getByDeviceID(HWBus.USB, '0x07b3', '0x0017') |
710 | - >>> print device.bus_vendor.bus.title |
711 | + >>> print(device.bus_vendor.bus.title) |
712 | USB |
713 | - >>> print device.bus_vendor.vendor_id_for_bus |
714 | + >>> print(device.bus_vendor.vendor_id_for_bus) |
715 | 0x07b3 |
716 | - >>> print device.bus_product_id |
717 | + >>> print(device.bus_product_id) |
718 | 0x0017 |
719 | - >>> print device.name |
720 | + >>> print(device.name) |
721 | some scanner |
722 | |
723 | The call to HWDeviceSet.getByDeviceID() above did not specify a product |
724 | variant. In such a case, the record having variant==None is returned |
725 | |
726 | - >>> print device.variant |
727 | + >>> print(device.variant) |
728 | None |
729 | |
730 | If a variant name is given, we get the HWDevice record of that variant. |
731 | |
732 | >>> device = device_set.getByDeviceID(HWBus.USB, '0x07b3', '0x0017', |
733 | ... 'OpticPro UT16') |
734 | - >>> print device.bus_vendor.bus.title |
735 | + >>> print(device.bus_vendor.bus.title) |
736 | USB |
737 | - >>> print device.bus_vendor.vendor_id_for_bus |
738 | + >>> print(device.bus_vendor.vendor_id_for_bus) |
739 | 0x07b3 |
740 | - >>> print device.bus_product_id |
741 | + >>> print(device.bus_product_id) |
742 | 0x0017 |
743 | - >>> print device.name |
744 | + >>> print(device.name) |
745 | OpticPro UT16 |
746 | - >>> print device.variant |
747 | + >>> print(device.variant) |
748 | OpticPro UT16 |
749 | |
750 | If the given parameters do not match any existing record, None is |
751 | returned. |
752 | |
753 | - >>> print device_set.getByDeviceID(HWBus.PCI, '0x07b3', '0x0017', |
754 | - ... 'OpticPro UT16') |
755 | - None |
756 | - >>> print device_set.getByDeviceID(HWBus.USB, '0xffff', '0x0017', |
757 | - ... 'OpticPro UT16') |
758 | - None |
759 | - >>> print device_set.getByDeviceID(HWBus.PCI, '0x07b3', '0xffff', |
760 | - ... 'OpticPro UT16') |
761 | - None |
762 | - >>> print device_set.getByDeviceID(HWBus.PCI, '0x07b3', '0x0017', |
763 | - ... 'nonsense') |
764 | + >>> print(device_set.getByDeviceID(HWBus.PCI, '0x07b3', '0x0017', |
765 | + ... 'OpticPro UT16')) |
766 | + None |
767 | + >>> print(device_set.getByDeviceID(HWBus.USB, '0xffff', '0x0017', |
768 | + ... 'OpticPro UT16')) |
769 | + None |
770 | + >>> print(device_set.getByDeviceID(HWBus.PCI, '0x07b3', '0xffff', |
771 | + ... 'OpticPro UT16')) |
772 | + None |
773 | + >>> print(device_set.getByDeviceID(HWBus.PCI, '0x07b3', '0x0017', |
774 | + ... 'nonsense')) |
775 | None |
776 | |
777 | The parameters vendor_id and product_id must be valid IDs for the |
778 | @@ -900,12 +900,12 @@ |
779 | >>> device_set.getByDeviceID(HWBus.USB, '07b3', '0x0017') |
780 | Traceback (most recent call last): |
781 | ... |
782 | - ParameterError: '07b3' is not a valid vendor ID for USB |
783 | + ParameterError: u'07b3' is not a valid vendor ID for USB |
784 | |
785 | >>> device_set.getByDeviceID(HWBus.USB, '0x07b3', '0017') |
786 | Traceback (most recent call last): |
787 | ... |
788 | - ParameterError: '0017' is not a valid product ID for USB |
789 | + ParameterError: u'0017' is not a valid product ID for USB |
790 | |
791 | HWDeviceSet.getOrCreate() returns an existing record matching the given |
792 | parameters or creates a new one, if no existing record matches. |
793 | @@ -915,79 +915,79 @@ |
794 | ... product_id='0x0017', |
795 | ... product_name='OpticPro UT16', |
796 | ... variant='OpticPro UT16') |
797 | - >>> print device2.bus_vendor.bus.title |
798 | + >>> print(device2.bus_vendor.bus.title) |
799 | USB |
800 | - >>> print device2.bus_vendor.vendor_id_for_bus |
801 | + >>> print(device2.bus_vendor.vendor_id_for_bus) |
802 | 0x07b3 |
803 | - >>> print device2.bus_product_id |
804 | + >>> print(device2.bus_product_id) |
805 | 0x0017 |
806 | - >>> print device2.name |
807 | - OpticPro UT16 |
808 | - >>> print device2.variant |
809 | - OpticPro UT16 |
810 | - >>> print device2.id == device.id |
811 | + >>> print(device2.name) |
812 | + OpticPro UT16 |
813 | + >>> print(device2.variant) |
814 | + OpticPro UT16 |
815 | + >>> print(device2.id == device.id) |
816 | True |
817 | |
818 | >>> device3 = device_set.getByDeviceID(bus=HWBus.USB, |
819 | ... vendor_id='0x07b3', |
820 | ... product_id='0x0017', |
821 | ... variant='Some other scanner') |
822 | - >>> print device3 |
823 | + >>> print(device3) |
824 | None |
825 | >>> device3 = device_set.getOrCreate(bus=HWBus.USB, |
826 | ... vendor_id='0x07b3', |
827 | ... product_id='0x0017', |
828 | ... product_name='Some other scanner', |
829 | ... variant='Some other scanner') |
830 | - >>> print device3.bus_vendor.bus.title |
831 | + >>> print(device3.bus_vendor.bus.title) |
832 | USB |
833 | - >>> print device3.bus_vendor.vendor_id_for_bus |
834 | + >>> print(device3.bus_vendor.vendor_id_for_bus) |
835 | 0x07b3 |
836 | - >>> print device3.bus_product_id |
837 | + >>> print(device3.bus_product_id) |
838 | 0x0017 |
839 | - >>> print device3.name |
840 | + >>> print(device3.name) |
841 | Some other scanner |
842 | - >>> print device3.variant |
843 | + >>> print(device3.variant) |
844 | Some other scanner |
845 | |
846 | >>> device4 = device_set.getOrCreate(bus=HWBus.USB, |
847 | ... vendor_id='0x07b3', |
848 | ... product_id='0x0015', |
849 | ... product_name='OpticPro U24') |
850 | - >>> print device4.bus_vendor.bus.title |
851 | + >>> print(device4.bus_vendor.bus.title) |
852 | USB |
853 | - >>> print device4.bus_vendor.vendor_id_for_bus |
854 | + >>> print(device4.bus_vendor.vendor_id_for_bus) |
855 | 0x07b3 |
856 | - >>> print device4.bus_product_id |
857 | + >>> print(device4.bus_product_id) |
858 | 0x0015 |
859 | - >>> print device4.name |
860 | + >>> print(device4.name) |
861 | OpticPro U24 |
862 | - >>> print device4.variant |
863 | + >>> print(device4.variant) |
864 | None |
865 | |
866 | |
867 | HWDeviceSet.getByID() returns a HWDevice record with the given database ID. |
868 | |
869 | >>> device = device_set.getByID(1) |
870 | - >>> print device.id |
871 | + >>> print(device.id) |
872 | 1 |
873 | - >>> print device.vendor_id |
874 | + >>> print(device.vendor_id) |
875 | MSI |
876 | - >>> print device.bus_product_id |
877 | + >>> print(device.bus_product_id) |
878 | MS-7369 |
879 | |
880 | HWDeviceSet.getByID() returns None if no record with the passed ID exists. |
881 | |
882 | >>> device = device_set.getByID(1000000) |
883 | - >>> print device |
884 | + >>> print(device) |
885 | None |
886 | |
887 | HWDeviceSet.search() returns all devices with a given bus and vendor ID. |
888 | |
889 | >>> devices = device_set.search(bus=HWBus.USB, vendor_id='0x07b3') |
890 | >>> for device in devices: |
891 | - ... print device.bus.title, device.vendor_id, device.bus_product_id, |
892 | - ... print device.variant |
893 | + ... print(device.bus.title, device.vendor_id, device.bus_product_id, |
894 | + ... device.variant) |
895 | USB 0x07b3 0x0017 None |
896 | USB 0x07b3 0x0017 OpticPro UT12 |
897 | USB 0x07b3 0x0017 OpticPro UT16 |
898 | @@ -999,8 +999,8 @@ |
899 | >>> devices = device_set.search( |
900 | ... bus=HWBus.USB, vendor_id='0x07b3', product_id='0x0017') |
901 | >>> for device in devices: |
902 | - ... print device.bus.title, device.vendor_id, device.bus_product_id, |
903 | - ... print device.variant |
904 | + ... print(device.bus.title, device.vendor_id, device.bus_product_id, |
905 | + ... device.variant) |
906 | USB 0x07b3 0x0017 None |
907 | USB 0x07b3 0x0017 OpticPro UT12 |
908 | USB 0x07b3 0x0017 OpticPro UT16 |
909 | @@ -1013,13 +1013,13 @@ |
910 | ... bus=HWBus.USB, vendor_id='invalid', product_id='0x0017') |
911 | Traceback (most recent call last): |
912 | ... |
913 | - ParameterError: 'invalid' is not a valid vendor ID for USB |
914 | + ParameterError: u'invalid' is not a valid vendor ID for USB |
915 | |
916 | >>> devices = device_set.search( |
917 | ... bus=HWBus.USB, vendor_id='0x07b3', product_id='nonsense') |
918 | Traceback (most recent call last): |
919 | ... |
920 | - ParameterError: 'nonsense' is not a valid product ID for USB |
921 | + ParameterError: u'nonsense' is not a valid product ID for USB |
922 | |
923 | HWDevice.getSubmissions() returns submissions which contain this device. |
924 | |
925 | @@ -1036,7 +1036,7 @@ |
926 | >>> sata_controller = device_set.getByDeviceID( |
927 | ... bus=HWBus.PCI, vendor_id='0x10de', product_id='0x045d') |
928 | >>> for submission in sata_controller.getSubmissions(): |
929 | - ... print submission.submission_key |
930 | + ... print(submission.submission_key) |
931 | sample-submission |
932 | |
933 | We can limit the results to a specific driver. (See below for details about |
934 | @@ -1047,13 +1047,13 @@ |
935 | ... 'linux-image-2.6.24-19-generic', 'ahci') |
936 | >>> for submission in sata_controller.getSubmissions( |
937 | ... driver=ahci_driver): |
938 | - ... print submission.submission_key |
939 | + ... print(submission.submission_key) |
940 | sample-submission |
941 | |
942 | >>> usb_storage_driver = getUtility(IHWDriverSet).getByPackageAndName( |
943 | ... 'linux-image-2.6.24-19-generic', 'usb-storage') |
944 | - >>> print list(sata_controller.getSubmissions( |
945 | - ... driver=usb_storage_driver)) |
946 | + >>> print(list(sata_controller.getSubmissions( |
947 | + ... driver=usb_storage_driver))) |
948 | [] |
949 | |
950 | We can limit the results to a specific distribution. |
951 | @@ -1064,7 +1064,7 @@ |
952 | >>> ubuntu = distribution_set.getByName('ubuntu') |
953 | >>> for submission in sata_controller.getSubmissions( |
954 | ... distribution=ubuntu): |
955 | - ... print submission.submission_key |
956 | + ... print(submission.submission_key) |
957 | sample-submission |
958 | |
959 | >>> debian = distribution_set.getByName('debian') |
960 | @@ -1075,7 +1075,7 @@ |
961 | |
962 | >>> for submission in sata_controller.getSubmissions( |
963 | ... architecture='i386'): |
964 | - ... print submission.submission_key |
965 | + ... print(submission.submission_key) |
966 | sample-submission |
967 | |
968 | >>> sata_controller.getSubmissions(architecture='amd64').count() |
969 | @@ -1085,7 +1085,7 @@ |
970 | |
971 | >>> for submission in sata_controller.getSubmissions( |
972 | ... distroseries=ubuntu['hoary']): |
973 | - ... print submission.submission_key |
974 | + ... print(submission.submission_key) |
975 | sample-submission |
976 | |
977 | >>> sata_controller.getSubmissions(distroseries=ubuntu['warty']).count() |
978 | @@ -1095,7 +1095,7 @@ |
979 | |
980 | >>> for submission in sata_controller.getSubmissions( |
981 | ... distroseries=ubuntu['hoary'], architecture='i386'): |
982 | - ... print submission.submission_key |
983 | + ... print(submission.submission_key) |
984 | sample-submission |
985 | |
986 | >>> sata_controller.getSubmissions( |
987 | @@ -1107,7 +1107,7 @@ |
988 | >>> from lp.registry.interfaces.person import IPersonSet |
989 | >>> owner = getUtility(IPersonSet).getByName('name12') |
990 | >>> for submission in sata_controller.getSubmissions(owner=owner): |
991 | - ... print submission.submission_key |
992 | + ... print(submission.submission_key) |
993 | sample-submission |
994 | |
995 | >>> not_owner = getUtility(IPersonSet).getByName('name20') |
996 | @@ -1122,7 +1122,7 @@ |
997 | HWDeviceDriverLink (see below) with this device. |
998 | |
999 | >>> for driver in sata_controller.drivers: |
1000 | - ... print driver.package_name, driver.name |
1001 | + ... print(driver.package_name, driver.name) |
1002 | linux-image-2.6.24-19-generic ahci |
1003 | |
1004 | |
1005 | @@ -1143,17 +1143,17 @@ |
1006 | >>> variant = device_name_variant_set.create(device=optic_pro_ut16, |
1007 | ... vendor_name='Medion', |
1008 | ... product_name='MD 1234') |
1009 | - >>> print variant.device.bus_vendor.vendor_name.name |
1010 | + >>> print(variant.device.bus_vendor.vendor_name.name) |
1011 | Plustek |
1012 | - >>> print variant.vendor_name.name |
1013 | + >>> print(variant.vendor_name.name) |
1014 | Medion |
1015 | - >>> print variant.product_name |
1016 | + >>> print(variant.product_name) |
1017 | MD 1234 |
1018 | |
1019 | We count the number of submissions which told us an alternative device |
1020 | name. |
1021 | |
1022 | - >>> print variant.submissions |
1023 | + >>> print(variant.submissions) |
1024 | 0 |
1025 | |
1026 | The tuple (device, vendor_name, product_name) must be unique. |
1027 | @@ -1191,11 +1191,11 @@ |
1028 | >>> usb_driver = driver_set.create(package_name='linux-image-generic', |
1029 | ... name='usb', |
1030 | ... license=License.GNU_GPL_V2) |
1031 | - >>> print usb_driver.name |
1032 | + >>> print(usb_driver.name) |
1033 | usb |
1034 | - >>> print usb_driver.package_name |
1035 | + >>> print(usb_driver.package_name) |
1036 | linux-image-generic |
1037 | - >>> print usb_driver.license.title |
1038 | + >>> print(usb_driver.license.title) |
1039 | GNU GPL v2 |
1040 | |
1041 | The submitted data does not need to contain package information for all |
1042 | @@ -1206,21 +1206,21 @@ |
1043 | >>> driver2 = driver_set.create(package_name=None, |
1044 | ... name='whatever', |
1045 | ... license=License.GNU_GPL_V2) |
1046 | - >>> print driver2.name |
1047 | + >>> print(driver2.name) |
1048 | whatever |
1049 | - >>> print repr(driver2.package_name) |
1050 | + >>> print(repr(driver2.package_name)) |
1051 | u'' |
1052 | - >>> print driver2.license.title |
1053 | + >>> print(driver2.license.title) |
1054 | GNU GPL v2 |
1055 | |
1056 | >>> driver_blank_package_name = driver_set.create(package_name='', |
1057 | ... name='bar', |
1058 | ... license=License.GNU_GPL_V3) |
1059 | - >>> print driver_blank_package_name.name |
1060 | + >>> print(driver_blank_package_name.name) |
1061 | bar |
1062 | - >>> print repr(driver_blank_package_name.package_name) |
1063 | + >>> print(repr(driver_blank_package_name.package_name)) |
1064 | u'' |
1065 | - >>> print driver_blank_package_name.license.title |
1066 | + >>> print(driver_blank_package_name.license.title) |
1067 | GNU GPL v3 |
1068 | |
1069 | Since we also do not always know the license of a driver, the license |
1070 | @@ -1229,11 +1229,11 @@ |
1071 | >>> driver3 = driver_set.create(package_name='', |
1072 | ... name='something_else', |
1073 | ... license=None) |
1074 | - >>> print driver3.name |
1075 | + >>> print(driver3.name) |
1076 | something_else |
1077 | - >>> print repr(driver3.package_name) |
1078 | + >>> print(repr(driver3.package_name)) |
1079 | u'' |
1080 | - >>> print driver3.license |
1081 | + >>> print(driver3.license) |
1082 | None |
1083 | |
1084 | The tuple (driver name, package name) must be unique. |
1085 | @@ -1263,18 +1263,18 @@ |
1086 | IHWDriverSet.getByPackageAndName(). |
1087 | |
1088 | >>> driver = driver_set.getByPackageAndName('linux-image-generic', 'usb') |
1089 | - >>> print driver.package_name |
1090 | + >>> print(driver.package_name) |
1091 | linux-image-generic |
1092 | - >>> print driver.name |
1093 | + >>> print(driver.name) |
1094 | usb |
1095 | |
1096 | If we want to search for a driver without a known package, we can |
1097 | pass None as well as the empty string. |
1098 | |
1099 | >>> driver = driver_set.getByPackageAndName('', 'whatever') |
1100 | - >>> print repr(driver.package_name) |
1101 | + >>> print(repr(driver.package_name)) |
1102 | u'' |
1103 | - >>> print driver.name |
1104 | + >>> print(driver.name) |
1105 | whatever |
1106 | |
1107 | >>> driver2 = driver_set.getByPackageAndName(None, 'whatever') |
1108 | @@ -1285,34 +1285,34 @@ |
1109 | IHWDriverSet.getByPackageAndName() call, None is returned. |
1110 | |
1111 | >>> driver = driver_set.getByPackageAndName('nonsense', 'more nonsense') |
1112 | - >>> print driver |
1113 | + >>> print(driver) |
1114 | None |
1115 | |
1116 | IHWDriverSet.getOrCreate() returns an existing record matching |
1117 | the given parameters or creates a new one, if no existing record matches. |
1118 | |
1119 | >>> driver = driver_set.getOrCreate('linux-image-generic', 'usb') |
1120 | - >>> print driver.package_name |
1121 | + >>> print(driver.package_name) |
1122 | linux-image-generic |
1123 | - >>> print driver.name |
1124 | + >>> print(driver.name) |
1125 | usb |
1126 | |
1127 | >>> driver = driver_set.getByPackageAndName('linux-image-generic', 'foo') |
1128 | - >>> print driver |
1129 | + >>> print(driver) |
1130 | None |
1131 | >>> driver = driver_set.getOrCreate('linux-image-generic', 'foo') |
1132 | - >>> print driver.name |
1133 | + >>> print(driver.name) |
1134 | foo |
1135 | - >>> print driver.package_name |
1136 | + >>> print(driver.package_name) |
1137 | linux-image-generic |
1138 | |
1139 | If we pass None as the value for package_name, we get records where |
1140 | package_name is None or the empty string. |
1141 | |
1142 | >>> driver = driver_set.getOrCreate(None, 'whatever') |
1143 | - >>> print repr(driver.package_name) |
1144 | + >>> print(repr(driver.package_name)) |
1145 | u'' |
1146 | - >>> print driver.name |
1147 | + >>> print(driver.name) |
1148 | whatever |
1149 | |
1150 | Older HWDriver records may store None as the package name. We can |
1151 | @@ -1320,9 +1320,9 @@ |
1152 | |
1153 | >>> from lp.hardwaredb.model.hwdb import HWDriver |
1154 | >>> old_driver = HWDriver(package_name=None, name=u'foo', license=None) |
1155 | - >>> print old_driver.name |
1156 | + >>> print(old_driver.name) |
1157 | foo |
1158 | - >>> print old_driver.package_name |
1159 | + >>> print(old_driver.package_name) |
1160 | None |
1161 | |
1162 | >>> driver = driver_set.getOrCreate(None, 'foo') |
1163 | @@ -1340,20 +1340,20 @@ |
1164 | |
1165 | >>> drivers = driver_set.search(package_name='linux-image-generic') |
1166 | >>> for driver in drivers: |
1167 | - ... print driver.package_name, driver.name |
1168 | + ... print(driver.package_name, driver.name) |
1169 | linux-image-generic usb |
1170 | linux-image-generic foo |
1171 | |
1172 | >>> drivers = driver_set.search(name='usb') |
1173 | >>> for driver in drivers: |
1174 | - ... print driver.package_name, driver.name |
1175 | + ... print(driver.package_name, driver.name) |
1176 | linux-image-2.6.24-19-generic usb |
1177 | linux-image-generic usb |
1178 | |
1179 | >>> drivers = driver_set.search( |
1180 | ... package_name='linux-image-2.6.24-19-generic', name='ahci') |
1181 | >>> for driver in drivers: |
1182 | - ... print driver.package_name, driver.name |
1183 | + ... print(driver.package_name, driver.name) |
1184 | linux-image-2.6.24-19-generic ahci |
1185 | |
1186 | If package_name is an empty string, driver records are returned where |
1187 | @@ -1363,7 +1363,7 @@ |
1188 | |
1189 | >>> drivers = driver_set.search(package_name='') |
1190 | >>> for driver in drivers: |
1191 | - ... print repr(driver.package_name), driver.name |
1192 | + ... print(repr(driver.package_name), driver.name) |
1193 | u'' whatever |
1194 | u'' bar |
1195 | u'' something_else |
1196 | @@ -1371,12 +1371,12 @@ |
1197 | |
1198 | >>> drivers = driver_set.search(package_name='', name='whatever') |
1199 | >>> for driver in drivers: |
1200 | - ... print repr(driver.package_name), driver.name |
1201 | + ... print(repr(driver.package_name), driver.name) |
1202 | u'' whatever |
1203 | |
1204 | >>> drivers = driver_set.search(package_name='', name='foo') |
1205 | >>> for driver in drivers: |
1206 | - ... print repr(driver.package_name), driver.name |
1207 | + ... print(repr(driver.package_name), driver.name) |
1208 | None foo |
1209 | |
1210 | If no parameters are specified, IHWDriverSet.search() returns all driver |
1211 | @@ -1384,7 +1384,7 @@ |
1212 | |
1213 | >>> drivers = driver_set.search() |
1214 | >>> for driver in drivers: |
1215 | - ... print repr(driver.package_name), driver.name |
1216 | + ... print(repr(driver.package_name), driver.name) |
1217 | u'linux-image-2.6.24-19-generic' ehci_hcd |
1218 | u'linux-image-2.6.24-19-generic' usb |
1219 | u'linux-image-2.6.24-19-generic' usb-storage |
1220 | @@ -1402,17 +1402,17 @@ |
1221 | HWDriverSet.getByID() returns a HWDriver record with the given database ID. |
1222 | |
1223 | >>> driver = driver_set.getByID(1) |
1224 | - >>> print driver.id |
1225 | + >>> print(driver.id) |
1226 | 1 |
1227 | - >>> print driver.package_name |
1228 | + >>> print(driver.package_name) |
1229 | linux-image-2.6.24-19-generic |
1230 | - >>> print driver.name |
1231 | + >>> print(driver.name) |
1232 | ehci_hcd |
1233 | |
1234 | HWDriverSet.getByID() returns None if no record with the passed ID exists. |
1235 | |
1236 | >>> driver = driver_set.getByID(1000000) |
1237 | - >>> print driver |
1238 | + >>> print(driver) |
1239 | None |
1240 | |
1241 | >>> transaction.abort() |
1242 | @@ -1422,23 +1422,23 @@ |
1243 | |
1244 | >>> driver = driver_set.getByID(1) |
1245 | >>> for submission in driver.getSubmissions(): |
1246 | - ... print submission.submission_key |
1247 | + ... print(submission.submission_key) |
1248 | sample-submission |
1249 | |
1250 | We can limit our search to submissions for a particular distribution. |
1251 | |
1252 | >>> for submission in driver.getSubmissions(distribution=ubuntu): |
1253 | - ... print submission.submission_key |
1254 | + ... print(submission.submission_key) |
1255 | sample-submission |
1256 | |
1257 | - >>> print driver.getSubmissions(distribution=debian).count() |
1258 | + >>> print(driver.getSubmissions(distribution=debian).count()) |
1259 | 0 |
1260 | |
1261 | We can limit the results to a specific distro series. |
1262 | |
1263 | >>> for submission in driver.getSubmissions( |
1264 | ... distroseries=ubuntu['hoary']): |
1265 | - ... print submission.submission_key |
1266 | + ... print(submission.submission_key) |
1267 | sample-submission |
1268 | |
1269 | >>> driver.getSubmissions(distroseries=ubuntu['warty']).count() |
1270 | @@ -1448,7 +1448,7 @@ |
1271 | |
1272 | >>> for submission in driver.getSubmissions( |
1273 | ... distroseries=ubuntu['hoary'], architecture='i386'): |
1274 | - ... print submission.submission_key |
1275 | + ... print(submission.submission_key) |
1276 | sample-submission |
1277 | |
1278 | >>> driver.getSubmissions( |
1279 | @@ -1458,7 +1458,7 @@ |
1280 | And We can search for submissions from a particular user. |
1281 | |
1282 | >>> for submission in driver.getSubmissions(owner=owner): |
1283 | - ... print submission.submission_key |
1284 | + ... print(submission.submission_key) |
1285 | sample-submission |
1286 | |
1287 | >>> driver.getSubmissions(owner=not_owner).count() |
1288 | @@ -1477,7 +1477,7 @@ |
1289 | |
1290 | >>> switch_dbuser('launchpad') |
1291 | >>> for driver_name in driver_set.all_driver_names(): |
1292 | - ... print driver_name.name |
1293 | + ... print(driver_name.name) |
1294 | ahci |
1295 | bar |
1296 | ehci_hcd |
1297 | @@ -1498,7 +1498,7 @@ |
1298 | >>> store.add(HWDriver(name='foo', package_name=None)) |
1299 | <HWDriver at... |
1300 | >>> for package_name in driver_set.all_package_names(): |
1301 | - ... print package_name.package_name |
1302 | + ... print(package_name.package_name) |
1303 | <BLANKLINE> |
1304 | linux-image-2.6.24-19-generic |
1305 | linux-image-generic |
1306 | @@ -1515,9 +1515,9 @@ |
1307 | >>> device_driver_link_set = getUtility(IHWDeviceDriverLinkSet) |
1308 | >>> usb_controller_usb_link = device_driver_link_set.create( |
1309 | ... device=usb_controller, driver=usb_driver) |
1310 | - >>> print usb_controller_usb_link.device.name |
1311 | + >>> print(usb_controller_usb_link.device.name) |
1312 | 82801GBM/GHM (ICH7 Family) USB2 EHCI Controller |
1313 | - >>> print usb_controller_usb_link.driver.name |
1314 | + >>> print(usb_controller_usb_link.driver.name) |
1315 | usb |
1316 | |
1317 | A device may be linked to more than one driver. A USB2 host controller |
1318 | @@ -1529,9 +1529,9 @@ |
1319 | ... license=License.GNU_GPL_V2) |
1320 | >>> usb_controller_ehci_hcd_link = device_driver_link_set.create( |
1321 | ... device=usb_controller, driver=ehci_hcd_driver) |
1322 | - >>> print usb_controller_ehci_hcd_link.device.name |
1323 | + >>> print(usb_controller_ehci_hcd_link.device.name) |
1324 | 82801GBM/GHM (ICH7 Family) USB2 EHCI Controller |
1325 | - >>> print usb_controller_ehci_hcd_link.driver.name |
1326 | + >>> print(usb_controller_ehci_hcd_link.driver.name) |
1327 | ehci_hcd |
1328 | |
1329 | A scanner can be linked to the kernel driver for the physical interface |
1330 | @@ -1539,9 +1539,9 @@ |
1331 | |
1332 | >>> scanner_usb_driver_link = device_driver_link_set.create( |
1333 | ... device=optic_pro_ut12, driver=usb_driver) |
1334 | - >>> print scanner_usb_driver_link.device.name |
1335 | + >>> print(scanner_usb_driver_link.device.name) |
1336 | OpticPro UT12 |
1337 | - >>> print scanner_usb_driver_link.driver.name |
1338 | + >>> print(scanner_usb_driver_link.driver.name) |
1339 | usb |
1340 | |
1341 | >>> sane_plustek_driver = driver_set.create(package_name='libsane', |
1342 | @@ -1549,9 +1549,9 @@ |
1343 | ... license=License.GNU_GPL_V2) |
1344 | >>> scanner_sane_plustek_link = device_driver_link_set.create( |
1345 | ... device=optic_pro_ut12, driver=sane_plustek_driver) |
1346 | - >>> print scanner_sane_plustek_link.device.name |
1347 | + >>> print(scanner_sane_plustek_link.device.name) |
1348 | OpticPro UT12 |
1349 | - >>> print scanner_sane_plustek_link.driver.name |
1350 | + >>> print(scanner_sane_plustek_link.driver.name) |
1351 | plustek |
1352 | |
1353 | Devices can have alternative drivers. Let's assume that Plustek |
1354 | @@ -1565,9 +1565,9 @@ |
1355 | |
1356 | >>> link3 = device_driver_link_set.create(device=optic_pro_ut12, |
1357 | ... driver=closed_driver) |
1358 | - >>> print link3.device.name |
1359 | + >>> print(link3.device.name) |
1360 | OpticPro UT12 |
1361 | - >>> print link3.driver.name |
1362 | + >>> print(link3.driver.name) |
1363 | ut12 |
1364 | |
1365 | We have two cases, where we do not (or can not) store driver information |
1366 | @@ -1611,9 +1611,9 @@ |
1367 | |
1368 | >>> link = device_driver_link_set.getByDeviceAndDriver(optic_pro_ut12, |
1369 | ... closed_driver) |
1370 | - >>> print link.device.name |
1371 | + >>> print(link.device.name) |
1372 | OpticPro UT12 |
1373 | - >>> print link.driver.name |
1374 | + >>> print(link.driver.name) |
1375 | ut12 |
1376 | |
1377 | If no record exists for the given tuple (device, driver), |
1378 | @@ -1621,7 +1621,7 @@ |
1379 | |
1380 | >>> link = device_driver_link_set.getByDeviceAndDriver(optic_pro_ut12, |
1381 | ... ehci_hcd_driver) |
1382 | - >>> print link |
1383 | + >>> print(link) |
1384 | None |
1385 | |
1386 | HWDeviceDriverLinkSet.getOrCreate() returns an existing record matching |
1387 | @@ -1629,20 +1629,20 @@ |
1388 | |
1389 | >>> link = device_driver_link_set.getOrCreate(optic_pro_ut12, |
1390 | ... closed_driver) |
1391 | - >>> print link.device.name |
1392 | + >>> print(link.device.name) |
1393 | OpticPro UT12 |
1394 | - >>> print link.driver.name |
1395 | + >>> print(link.driver.name) |
1396 | ut12 |
1397 | - >>> print link.id == link3.id |
1398 | + >>> print(link.id == link3.id) |
1399 | True |
1400 | >>> link = device_driver_link_set.getByDeviceAndDriver(optic_pro_ut12, |
1401 | ... None) |
1402 | - >>> print link |
1403 | + >>> print(link) |
1404 | None |
1405 | >>> link = device_driver_link_set.getOrCreate(optic_pro_ut12, None) |
1406 | - >>> print link.device.name |
1407 | + >>> print(link.device.name) |
1408 | OpticPro UT12 |
1409 | - >>> print link.driver |
1410 | + >>> print(link.driver) |
1411 | None |
1412 | |
1413 | |
1414 | @@ -1684,17 +1684,17 @@ |
1415 | |
1416 | >>> device_class_printer = optic_pro_ut12.getOrCreateDeviceClass( |
1417 | ... main_class=0x07, sub_class=0x01) |
1418 | - >>> print device_class_printer.device.name |
1419 | + >>> print(device_class_printer.device.name) |
1420 | OpticPro UT12 |
1421 | - >>> print device_class_printer.main_class |
1422 | + >>> print(device_class_printer.main_class) |
1423 | 7 |
1424 | - >>> print device_class_printer.sub_class |
1425 | + >>> print(device_class_printer.sub_class) |
1426 | 1 |
1427 | |
1428 | IHWDdevice.classes contains the set of classes defined for this device. |
1429 | |
1430 | >>> for device_class in optic_pro_ut12.classes: |
1431 | - ... print device_class.main_class, device_class.sub_class |
1432 | + ... print(device_class.main_class, device_class.sub_class) |
1433 | 7 1 |
1434 | 16 0 |
1435 | |
1436 | @@ -1709,7 +1709,7 @@ |
1437 | >>> switch_dbuser('launchpad') |
1438 | >>> optic_pro_ut12.removeDeviceClass(main_class=0x07, sub_class=0x01) |
1439 | >>> for device_class in optic_pro_ut12.classes: |
1440 | - ... print device_class.main_class, device_class.sub_class |
1441 | + ... print(device_class.main_class, device_class.sub_class) |
1442 | 16 0 |
1443 | |
1444 | >>> switch_dbuser('hwdb-submission-processor') |
1445 | @@ -1739,17 +1739,17 @@ |
1446 | >>> submitted_tuffbook_2600 = submission_device_set.create( |
1447 | ... device_driver_link=tuffbook_2600_device_driver_link, |
1448 | ... submission=sample_submission, parent=None, hal_device_id=1) |
1449 | - >>> print submitted_tuffbook_2600.device_driver_link.device.name |
1450 | - Tuffbook 2600 |
1451 | - >>> print submitted_tuffbook_2600.device.name |
1452 | - Tuffbook 2600 |
1453 | - >>> print submitted_tuffbook_2600.driver |
1454 | + >>> print(submitted_tuffbook_2600.device_driver_link.device.name) |
1455 | + Tuffbook 2600 |
1456 | + >>> print(submitted_tuffbook_2600.device.name) |
1457 | + Tuffbook 2600 |
1458 | + >>> print(submitted_tuffbook_2600.driver) |
1459 | None |
1460 | - >>> print submitted_tuffbook_2600.submission.submission_key |
1461 | + >>> print(submitted_tuffbook_2600.submission.submission_key) |
1462 | test_submission_id_1 |
1463 | - >>> print submitted_tuffbook_2600.parent |
1464 | + >>> print(submitted_tuffbook_2600.parent) |
1465 | None |
1466 | - >>> print submitted_tuffbook_2600.hal_device_id |
1467 | + >>> print(submitted_tuffbook_2600.hal_device_id) |
1468 | 1 |
1469 | |
1470 | ...while ordinary device entries have the attribute parent set. The |
1471 | @@ -1772,15 +1772,15 @@ |
1472 | ... submission=sample_submission, |
1473 | ... parent=submitted_usb_ehci_hcd_controller, |
1474 | ... hal_device_id=3) |
1475 | - >>> print submitted_usb_controller.device_driver_link.device.name |
1476 | - 82801GBM/GHM (ICH7 Family) USB2 EHCI Controller |
1477 | - >>> print submitted_usb_controller.device_driver_link.driver.name |
1478 | - usb |
1479 | - >>> print submitted_usb_controller.device.name |
1480 | - 82801GBM/GHM (ICH7 Family) USB2 EHCI Controller |
1481 | - >>> print submitted_usb_controller.driver.name |
1482 | - usb |
1483 | - >>> print submitted_usb_controller.hal_device_id |
1484 | + >>> print(submitted_usb_controller.device_driver_link.device.name) |
1485 | + 82801GBM/GHM (ICH7 Family) USB2 EHCI Controller |
1486 | + >>> print(submitted_usb_controller.device_driver_link.driver.name) |
1487 | + usb |
1488 | + >>> print(submitted_usb_controller.device.name) |
1489 | + 82801GBM/GHM (ICH7 Family) USB2 EHCI Controller |
1490 | + >>> print(submitted_usb_controller.driver.name) |
1491 | + usb |
1492 | + >>> print(submitted_usb_controller.hal_device_id) |
1493 | 3 |
1494 | |
1495 | The USB controller is connected to an (often internal) USB hub. We don't |
1496 | @@ -1820,14 +1820,14 @@ |
1497 | ... submission=sample_submission) |
1498 | >>> def print_device(submission_device, indent=0): |
1499 | ... if indent > 0: |
1500 | - ... print '-' * indent + '>', |
1501 | + ... print('-' * indent + '>', end=' ') |
1502 | ... device = submission_device.device_driver_link.device |
1503 | ... driver = submission_device.device_driver_link.driver |
1504 | - ... print device.bus_vendor.vendor_name.name, device.name, |
1505 | + ... print(device.bus_vendor.vendor_name.name, device.name, end=' ') |
1506 | ... if driver is not None: |
1507 | - ... print driver.name |
1508 | + ... print(driver.name) |
1509 | ... else: |
1510 | - ... print '(no driver)' |
1511 | + ... print('(no driver)') |
1512 | ... for sub_device in submitted_devices: |
1513 | ... if sub_device.parent == submission_device: |
1514 | ... print_device(sub_device, indent+1) |
1515 | @@ -1851,7 +1851,7 @@ |
1516 | |
1517 | This method returns None if a nonexistent ID is passed. |
1518 | |
1519 | - >>> print submission_device_set.get(1000000) |
1520 | + >>> print(submission_device_set.get(1000000)) |
1521 | None |
1522 | |
1523 | |
1524 | @@ -1861,8 +1861,9 @@ |
1525 | HWSubmissionDeviceSet.numDevicesInSubmissions() returns how often a |
1526 | device appears in HWDB submissions. |
1527 | |
1528 | - >>> print submission_device_set.numDevicesInSubmissions( |
1529 | - ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ') |
1530 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1531 | + ... bus=HWBus.IDE, vendor_id='SEAGATE', |
1532 | + ... product_id='ST3250820NS ')) |
1533 | 1 |
1534 | |
1535 | If a device appears more than once in a submission, it is counted as often |
1536 | @@ -1883,8 +1884,9 @@ |
1537 | The number returned for the query "count the number of Seagate |
1538 | ST3250820NS" disks increased. |
1539 | |
1540 | - >>> print submission_device_set.numDevicesInSubmissions( |
1541 | - ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ') |
1542 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1543 | + ... bus=HWBus.IDE, vendor_id='SEAGATE', |
1544 | + ... product_id='ST3250820NS ')) |
1545 | 2 |
1546 | |
1547 | Note that we did _not_ add a HWSubmissionDevice entry for the device |
1548 | @@ -1892,9 +1894,9 @@ |
1549 | disks driven by the sd driver, we'll get 1 as without the recently |
1550 | added device. |
1551 | |
1552 | - >>> print submission_device_set.numDevicesInSubmissions( |
1553 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1554 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1555 | - ... driver_name='sd') |
1556 | + ... driver_name='sd')) |
1557 | 1 |
1558 | |
1559 | Let's now create another HWDB submission, and let's add |
1560 | @@ -1923,46 +1925,47 @@ |
1561 | The number of all ST3250820NS disks and of those disks driven by |
1562 | the sd driver has now increased by 1. |
1563 | |
1564 | - >>> print submission_device_set.numDevicesInSubmissions( |
1565 | - ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ') |
1566 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1567 | + ... bus=HWBus.IDE, vendor_id='SEAGATE', |
1568 | + ... product_id='ST3250820NS ')) |
1569 | 3 |
1570 | - >>> print submission_device_set.numDevicesInSubmissions( |
1571 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1572 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1573 | - ... driver_name='sd') |
1574 | + ... driver_name='sd')) |
1575 | 2 |
1576 | |
1577 | We can optionally specify a driver's package name too. |
1578 | |
1579 | - >>> print submission_device_set.numDevicesInSubmissions( |
1580 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1581 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1582 | - ... driver_name='sd', package_name='linux-image-2.6.24-19-generic') |
1583 | + ... driver_name='sd', package_name='linux-image-2.6.24-19-generic')) |
1584 | 1 |
1585 | - >>> print submission_device_set.numDevicesInSubmissions( |
1586 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1587 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1588 | - ... driver_name='sd', package_name='nonsense') |
1589 | + ... driver_name='sd', package_name='nonsense')) |
1590 | 0 |
1591 | |
1592 | And we can query for devices having any driver from a given package too. |
1593 | |
1594 | - >>> print submission_device_set.numDevicesInSubmissions( |
1595 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1596 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1597 | - ... package_name='linux-image-2.6.24-19-generic') |
1598 | + ... package_name='linux-image-2.6.24-19-generic')) |
1599 | 1 |
1600 | - >>> print submission_device_set.numDevicesInSubmissions( |
1601 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1602 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1603 | - ... package_name='nonsense') |
1604 | + ... package_name='nonsense')) |
1605 | 0 |
1606 | |
1607 | We can also get the number of all devices controlled by a given driver. |
1608 | |
1609 | - >>> print submission_device_set.numDevicesInSubmissions( |
1610 | - ... driver_name='sd') |
1611 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1612 | + ... driver_name='sd')) |
1613 | 6 |
1614 | |
1615 | We can limit this count to a given package. |
1616 | |
1617 | - >>> print submission_device_set.numDevicesInSubmissions( |
1618 | - ... driver_name='sd', package_name='linux-image-2.6.24-19-generic') |
1619 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1620 | + ... driver_name='sd', package_name='linux-image-2.6.24-19-generic')) |
1621 | 5 |
1622 | |
1623 | While the parameters for a device or a driver are optional, specifying |
1624 | @@ -1979,62 +1982,62 @@ |
1625 | distribution. |
1626 | |
1627 | >>> switch_dbuser('launchpad') |
1628 | - >>> print submission_device_set.numDevicesInSubmissions( |
1629 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1630 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1631 | - ... distro_target=ubuntu) |
1632 | + ... distro_target=ubuntu)) |
1633 | 2 |
1634 | - >>> print submission_device_set.numDevicesInSubmissions( |
1635 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1636 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1637 | - ... distro_target=debian) |
1638 | + ... distro_target=debian)) |
1639 | 0 |
1640 | |
1641 | Similary, we can limit the count to devices mentioned in submissions |
1642 | made for a given distroseries. |
1643 | |
1644 | - >>> print submission_device_set.numDevicesInSubmissions( |
1645 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1646 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1647 | - ... distro_target=ubuntu['hoary']) |
1648 | + ... distro_target=ubuntu['hoary'])) |
1649 | 2 |
1650 | - >>> print submission_device_set.numDevicesInSubmissions( |
1651 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1652 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1653 | - ... distro_target=ubuntu['warty']) |
1654 | + ... distro_target=ubuntu['warty'])) |
1655 | 0 |
1656 | |
1657 | And we can also search for devices mentioned in submissions made on a |
1658 | given processor architecture. |
1659 | |
1660 | - >>> print submission_device_set.numDevicesInSubmissions( |
1661 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1662 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1663 | - ... distro_target=ubuntu['hoary']['i386']) |
1664 | + ... distro_target=ubuntu['hoary']['i386'])) |
1665 | 2 |
1666 | - >>> print submission_device_set.numDevicesInSubmissions( |
1667 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1668 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1669 | - ... distro_target=ubuntu['hoary']['hppa']) |
1670 | + ... distro_target=ubuntu['hoary']['hppa'])) |
1671 | 0 |
1672 | |
1673 | We can also query the number of devices controlled by a given driver |
1674 | for a distrotarget. |
1675 | |
1676 | - >>> print submission_device_set.numDevicesInSubmissions( |
1677 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1678 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1679 | - ... driver_name='sd', distro_target=ubuntu['hoary']['i386']) |
1680 | + ... driver_name='sd', distro_target=ubuntu['hoary']['i386'])) |
1681 | 1 |
1682 | - >>> print submission_device_set.numDevicesInSubmissions( |
1683 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1684 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1685 | - ... driver_name='nonsense', distro_target=ubuntu['hoary']['i386']) |
1686 | + ... driver_name='nonsense', distro_target=ubuntu['hoary']['i386'])) |
1687 | 0 |
1688 | |
1689 | And we can additionally specify a package name. |
1690 | |
1691 | - >>> print submission_device_set.numDevicesInSubmissions( |
1692 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1693 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1694 | ... driver_name='sd', package_name='linux-image-2.6.24-19-generic', |
1695 | - ... distro_target=ubuntu['hoary']['i386']) |
1696 | + ... distro_target=ubuntu['hoary']['i386'])) |
1697 | 1 |
1698 | - >>> print submission_device_set.numDevicesInSubmissions( |
1699 | + >>> print(submission_device_set.numDevicesInSubmissions( |
1700 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1701 | ... driver_name='sd', package_name='nonsense', |
1702 | - ... distro_target=ubuntu['hoary']['i386']) |
1703 | + ... distro_target=ubuntu['hoary']['i386'])) |
1704 | 0 |
1705 | |
1706 | HWSubmissionSet.numSubmissionsWithDevice() returns all submissions |
1707 | @@ -2050,106 +2053,107 @@ |
1708 | >>> submission.status = HWSubmissionProcessingStatus.PROCESSED |
1709 | |
1710 | >>> submission_set = getUtility(IHWSubmissionSet) |
1711 | - >>> print submission_set.numSubmissionsWithDevice( |
1712 | - ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ') |
1713 | + >>> print(submission_set.numSubmissionsWithDevice( |
1714 | + ... bus=HWBus.IDE, vendor_id='SEAGATE', |
1715 | + ... product_id='ST3250820NS ')) |
1716 | (2L, 3L) |
1717 | |
1718 | We can limit the results to a given driver... |
1719 | |
1720 | - >>> print submission_set.numSubmissionsWithDevice( |
1721 | + >>> print(submission_set.numSubmissionsWithDevice( |
1722 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1723 | - ... driver_name='sd') |
1724 | + ... driver_name='sd')) |
1725 | (2L, 3L) |
1726 | - >>> print submission_set.numSubmissionsWithDevice( |
1727 | + >>> print(submission_set.numSubmissionsWithDevice( |
1728 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1729 | - ... driver_name='usb') |
1730 | + ... driver_name='usb')) |
1731 | (0L, 3L) |
1732 | |
1733 | ...or we can ask for all submissions containing any device controlled |
1734 | by a given driver. |
1735 | |
1736 | - >>> print submission_set.numSubmissionsWithDevice( |
1737 | - ... driver_name='sd') |
1738 | + >>> print(submission_set.numSubmissionsWithDevice( |
1739 | + ... driver_name='sd')) |
1740 | (2L, 3L) |
1741 | |
1742 | While the parameters for a device or a driver are optional, specifying |
1743 | neither of them leads to an error. |
1744 | |
1745 | - >>> print submission_set.numSubmissionsWithDevice() |
1746 | + >>> print(submission_set.numSubmissionsWithDevice()) |
1747 | Traceback (most recent call last): |
1748 | ... |
1749 | ParameterError: Specify (bus, vendor_id, product_id) or driver_name. |
1750 | |
1751 | This count can be limited to a given package. |
1752 | |
1753 | - >>> print submission_set.numSubmissionsWithDevice( |
1754 | - ... driver_name='sd', package_name='linux-image-2.6.24-19-generic') |
1755 | + >>> print(submission_set.numSubmissionsWithDevice( |
1756 | + ... driver_name='sd', package_name='linux-image-2.6.24-19-generic')) |
1757 | (1L, 3L) |
1758 | |
1759 | We can also limit the count to a distibution... |
1760 | |
1761 | - >>> print submission_set.numSubmissionsWithDevice( |
1762 | + >>> print(submission_set.numSubmissionsWithDevice( |
1763 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1764 | - ... distro_target=ubuntu) |
1765 | + ... distro_target=ubuntu)) |
1766 | (1L, 2L) |
1767 | - >>> print submission_set.numSubmissionsWithDevice( |
1768 | + >>> print(submission_set.numSubmissionsWithDevice( |
1769 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1770 | - ... distro_target=debian) |
1771 | + ... distro_target=debian)) |
1772 | (0L, 0L) |
1773 | |
1774 | ...to a distroseries... |
1775 | |
1776 | - >>> print submission_set.numSubmissionsWithDevice( |
1777 | + >>> print(submission_set.numSubmissionsWithDevice( |
1778 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1779 | - ... distro_target=ubuntu['hoary']) |
1780 | + ... distro_target=ubuntu['hoary'])) |
1781 | (1L, 2L) |
1782 | - >>> print submission_set.numSubmissionsWithDevice( |
1783 | + >>> print(submission_set.numSubmissionsWithDevice( |
1784 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1785 | - ... distro_target=ubuntu['warty']) |
1786 | + ... distro_target=ubuntu['warty'])) |
1787 | (0L, 0L) |
1788 | |
1789 | ...or to a distroarchseries. |
1790 | |
1791 | - >>> print submission_set.numSubmissionsWithDevice( |
1792 | + >>> print(submission_set.numSubmissionsWithDevice( |
1793 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1794 | - ... distro_target=ubuntu['hoary']['i386']) |
1795 | + ... distro_target=ubuntu['hoary']['i386'])) |
1796 | (1L, 2L) |
1797 | - >>> print submission_set.numSubmissionsWithDevice( |
1798 | + >>> print(submission_set.numSubmissionsWithDevice( |
1799 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1800 | - ... distro_target=ubuntu['hoary']['hppa']) |
1801 | + ... distro_target=ubuntu['hoary']['hppa'])) |
1802 | (0L, 0L) |
1803 | |
1804 | We can specify a distro target as well as a driver or package name. |
1805 | |
1806 | - >>> print submission_set.numSubmissionsWithDevice( |
1807 | + >>> print(submission_set.numSubmissionsWithDevice( |
1808 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1809 | - ... driver_name='sd', distro_target=ubuntu['hoary']['i386']) |
1810 | + ... driver_name='sd', distro_target=ubuntu['hoary']['i386'])) |
1811 | (1L, 2L) |
1812 | - >>> print submission_set.numSubmissionsWithDevice( |
1813 | + >>> print(submission_set.numSubmissionsWithDevice( |
1814 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1815 | - ... driver_name='nosense', distro_target=ubuntu['hoary']['i386']) |
1816 | + ... driver_name='nosense', distro_target=ubuntu['hoary']['i386'])) |
1817 | (0L, 2L) |
1818 | |
1819 | - >>> print submission_set.numSubmissionsWithDevice( |
1820 | + >>> print(submission_set.numSubmissionsWithDevice( |
1821 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1822 | ... package_name='linux-image-2.6.24-19-generic', |
1823 | - ... distro_target=ubuntu['hoary']['i386']) |
1824 | + ... distro_target=ubuntu['hoary']['i386'])) |
1825 | (1L, 2L) |
1826 | - >>> print submission_set.numSubmissionsWithDevice( |
1827 | + >>> print(submission_set.numSubmissionsWithDevice( |
1828 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1829 | - ... package_name='nonsense', distro_target=ubuntu['hoary']['i386']) |
1830 | + ... package_name='nonsense', distro_target=ubuntu['hoary']['i386'])) |
1831 | (0L, 2L) |
1832 | |
1833 | - >>> print submission_set.numSubmissionsWithDevice( |
1834 | + >>> print(submission_set.numSubmissionsWithDevice( |
1835 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1836 | ... driver_name='sd', package_name='linux-image-2.6.24-19-generic', |
1837 | - ... distro_target=ubuntu['hoary']['i386']) |
1838 | + ... distro_target=ubuntu['hoary']['i386'])) |
1839 | (1L, 2L) |
1840 | - >>> print submission_set.numSubmissionsWithDevice( |
1841 | + >>> print(submission_set.numSubmissionsWithDevice( |
1842 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1843 | ... driver_name='nonsense', |
1844 | ... package_name='linux-image-2.6.24-19-generic', |
1845 | - ... distro_target=ubuntu['hoary']['i386']) |
1846 | + ... distro_target=ubuntu['hoary']['i386'])) |
1847 | (0L, 2L) |
1848 | |
1849 | HWSubmission.numDeviceOwners() returns the number of device owners. |
1850 | @@ -2173,99 +2177,99 @@ |
1851 | |
1852 | We can limit the results to a given driver. |
1853 | |
1854 | - >>> print submission_set.numOwnersOfDevice( |
1855 | + >>> print(submission_set.numOwnersOfDevice( |
1856 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1857 | - ... driver_name='sd') |
1858 | + ... driver_name='sd')) |
1859 | (2L, 3L) |
1860 | - >>> print submission_set.numOwnersOfDevice( |
1861 | + >>> print(submission_set.numOwnersOfDevice( |
1862 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1863 | - ... driver_name='usb') |
1864 | + ... driver_name='usb')) |
1865 | (0L, 3L) |
1866 | |
1867 | We can also ask for submitters who use a given driver with any device. |
1868 | |
1869 | - >>> print submission_set.numOwnersOfDevice( |
1870 | - ... driver_name='sd') |
1871 | + >>> print(submission_set.numOwnersOfDevice( |
1872 | + ... driver_name='sd')) |
1873 | (2L, 3L) |
1874 | |
1875 | This count can be limited to a given package. |
1876 | |
1877 | - >>> print submission_set.numOwnersOfDevice( |
1878 | - ... driver_name='sd', package_name='linux-image-2.6.24-19-generic') |
1879 | + >>> print(submission_set.numOwnersOfDevice( |
1880 | + ... driver_name='sd', package_name='linux-image-2.6.24-19-generic')) |
1881 | (1L, 3L) |
1882 | |
1883 | While the parameters for a device or a driver are optional, specifying |
1884 | neither of them leads to an error. |
1885 | |
1886 | - >>> print submission_set.numOwnersOfDevice() |
1887 | + >>> print(submission_set.numOwnersOfDevice()) |
1888 | Traceback (most recent call last): |
1889 | ... |
1890 | ParameterError: Specify (bus, vendor_id, product_id) or driver_name. |
1891 | |
1892 | We can limit the count to a distibution... |
1893 | |
1894 | - >>> print submission_set.numOwnersOfDevice( |
1895 | + >>> print(submission_set.numOwnersOfDevice( |
1896 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1897 | - ... distro_target=ubuntu) |
1898 | + ... distro_target=ubuntu)) |
1899 | (1L, 2L) |
1900 | - >>> print submission_set.numOwnersOfDevice( |
1901 | + >>> print(submission_set.numOwnersOfDevice( |
1902 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1903 | - ... distro_target=debian) |
1904 | + ... distro_target=debian)) |
1905 | (0L, 0L) |
1906 | |
1907 | ...to a distroseries... |
1908 | |
1909 | - >>> print submission_set.numOwnersOfDevice( |
1910 | + >>> print(submission_set.numOwnersOfDevice( |
1911 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1912 | - ... distro_target=ubuntu['hoary']) |
1913 | + ... distro_target=ubuntu['hoary'])) |
1914 | (1L, 2L) |
1915 | - >>> print submission_set.numOwnersOfDevice( |
1916 | + >>> print(submission_set.numOwnersOfDevice( |
1917 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1918 | - ... distro_target=ubuntu['warty']) |
1919 | + ... distro_target=ubuntu['warty'])) |
1920 | (0L, 0L) |
1921 | |
1922 | ...or to a distroarchseries. |
1923 | |
1924 | - >>> print submission_set.numOwnersOfDevice( |
1925 | + >>> print(submission_set.numOwnersOfDevice( |
1926 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1927 | - ... distro_target=ubuntu['hoary']['i386']) |
1928 | + ... distro_target=ubuntu['hoary']['i386'])) |
1929 | (1L, 2L) |
1930 | - >>> print submission_set.numOwnersOfDevice( |
1931 | + >>> print(submission_set.numOwnersOfDevice( |
1932 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1933 | - ... distro_target=ubuntu['hoary']['hppa']) |
1934 | + ... distro_target=ubuntu['hoary']['hppa'])) |
1935 | (0L, 0L) |
1936 | |
1937 | We can specify a distro target as well as a driver or package name. |
1938 | |
1939 | - >>> print submission_set.numOwnersOfDevice( |
1940 | + >>> print(submission_set.numOwnersOfDevice( |
1941 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1942 | - ... driver_name='sd', distro_target=ubuntu['hoary']['i386']) |
1943 | + ... driver_name='sd', distro_target=ubuntu['hoary']['i386'])) |
1944 | (1L, 2L) |
1945 | - >>> print submission_set.numOwnersOfDevice( |
1946 | + >>> print(submission_set.numOwnersOfDevice( |
1947 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1948 | - ... driver_name='nosense', distro_target=ubuntu['hoary']['i386']) |
1949 | + ... driver_name='nosense', distro_target=ubuntu['hoary']['i386'])) |
1950 | (0L, 2L) |
1951 | |
1952 | - >>> print submission_set.numOwnersOfDevice( |
1953 | + >>> print(submission_set.numOwnersOfDevice( |
1954 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1955 | ... package_name='linux-image-2.6.24-19-generic', |
1956 | - ... distro_target=ubuntu['hoary']['i386']) |
1957 | + ... distro_target=ubuntu['hoary']['i386'])) |
1958 | (1L, 2L) |
1959 | - >>> print submission_set.numOwnersOfDevice( |
1960 | + >>> print(submission_set.numOwnersOfDevice( |
1961 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1962 | - ... package_name='nonsense', distro_target=ubuntu['hoary']['i386']) |
1963 | + ... package_name='nonsense', distro_target=ubuntu['hoary']['i386'])) |
1964 | (0L, 2L) |
1965 | |
1966 | - >>> print submission_set.numOwnersOfDevice( |
1967 | + >>> print(submission_set.numOwnersOfDevice( |
1968 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1969 | ... driver_name='sd', package_name='linux-image-2.6.24-19-generic', |
1970 | - ... distro_target=ubuntu['hoary']['i386']) |
1971 | + ... distro_target=ubuntu['hoary']['i386'])) |
1972 | (1L, 2L) |
1973 | - >>> print submission_set.numOwnersOfDevice( |
1974 | + >>> print(submission_set.numOwnersOfDevice( |
1975 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1976 | ... driver_name='nonsense', |
1977 | ... package_name='linux-image-2.6.24-19-generic', |
1978 | - ... distro_target=ubuntu['hoary']['i386']) |
1979 | + ... distro_target=ubuntu['hoary']['i386'])) |
1980 | (0L, 2L) |
1981 | |
1982 | |
1983 | @@ -2283,12 +2287,12 @@ |
1984 | >>> from lp.bugs.interfaces.bug import IBugSet |
1985 | >>> bug_set = getUtility(IBugSet) |
1986 | >>> bug_one = bug_set.get(1) |
1987 | - >>> print bug_one.owner.displayname |
1988 | + >>> print(bug_one.owner.displayname) |
1989 | Sample Person |
1990 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
1991 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
1992 | ... bug_ids=[1]): |
1993 | - ... print person.displayname |
1994 | + ... print(person.displayname) |
1995 | Sample Person |
1996 | |
1997 | If Foo Bar says that they are affected by this bug, they will be listed |
1998 | @@ -2300,7 +2304,7 @@ |
1999 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2000 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
2001 | ... bug_ids=[1], affected_by_bug=True): |
2002 | - ... print person.displayname |
2003 | + ... print(person.displayname) |
2004 | Foo Bar |
2005 | Sample Person |
2006 | |
2007 | @@ -2311,7 +2315,7 @@ |
2008 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2009 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
2010 | ... bug_ids=[1], affected_by_bug=True): |
2011 | - ... print person.displayname |
2012 | + ... print(person.displayname) |
2013 | Sample Person |
2014 | |
2015 | By setting the parameter subscribed_to_bug to True, we can also look |
2016 | @@ -2322,7 +2326,7 @@ |
2017 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2018 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
2019 | ... bug_ids=[1], subscribed_to_bug=True): |
2020 | - ... print person.displayname |
2021 | + ... print(person.displayname) |
2022 | Foo Bar |
2023 | Sample Person |
2024 | |
2025 | @@ -2330,7 +2334,7 @@ |
2026 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2027 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
2028 | ... bug_ids=[1], subscribed_to_bug=True): |
2029 | - ... print person.displayname |
2030 | + ... print(person.displayname) |
2031 | Sample Person |
2032 | |
2033 | We can specify more than one bug ID. If we specify bugs 1 and 3, |
2034 | @@ -2338,12 +2342,12 @@ |
2035 | Foo Bar. |
2036 | |
2037 | >>> bug_three = bug_set.get(3) |
2038 | - >>> print bug_three.owner.displayname |
2039 | + >>> print(bug_three.owner.displayname) |
2040 | Foo Bar |
2041 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2042 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
2043 | ... bug_ids=[1, 3]): |
2044 | - ... print person.displayname |
2045 | + ... print(person.displayname) |
2046 | Foo Bar |
2047 | Sample Person |
2048 | |
2049 | @@ -2359,25 +2363,25 @@ |
2050 | ... BugTaskSearchParams(user=foo_bar, tag=any('pebcak'))) |
2051 | >>> owners = set(bugtask.bug.owner for bugtask in bugtasks) |
2052 | >>> for owner in owners: |
2053 | - ... print owner.displayname |
2054 | + ... print(owner.displayname) |
2055 | Sample Person |
2056 | >>> bugtasks = bugtask_set.search( |
2057 | ... BugTaskSearchParams(user=foo_bar, tag=any('crash'))) |
2058 | >>> owners = set(bugtask.bug.owner for bugtask in bugtasks) |
2059 | >>> for owner in owners: |
2060 | - ... print owner.displayname |
2061 | + ... print(owner.displayname) |
2062 | Foo Bar |
2063 | |
2064 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2065 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
2066 | ... bug_tags=['pebcak']): |
2067 | - ... print person.displayname |
2068 | + ... print(person.displayname) |
2069 | Sample Person |
2070 | |
2071 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2072 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
2073 | ... bug_tags=['pebcak', 'crash']): |
2074 | - ... print person.displayname |
2075 | + ... print(person.displayname) |
2076 | Foo Bar |
2077 | Sample Person |
2078 | |
2079 | @@ -2392,13 +2396,13 @@ |
2080 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2081 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
2082 | ... driver_name='sd', bug_tags=['pebcak', 'crash']): |
2083 | - ... print person.displayname |
2084 | + ... print(person.displayname) |
2085 | Foo Bar |
2086 | Sample Person |
2087 | |
2088 | - >>> print submission_set.deviceDriverOwnersAffectedByBugs( |
2089 | + >>> print(submission_set.deviceDriverOwnersAffectedByBugs( |
2090 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
2091 | - ... driver_name='nonsense', bug_tags=['pebcak', 'crash']).count() |
2092 | + ... driver_name='nonsense', bug_tags=['pebcak', 'crash']).count()) |
2093 | 0 |
2094 | |
2095 | ...or a given package name by providing a package_name parameter. |
2096 | @@ -2407,12 +2411,12 @@ |
2097 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
2098 | ... package_name='linux-image-2.6.24-19-generic', |
2099 | ... bug_tags=['pebcak', 'crash']): |
2100 | - ... print person.displayname |
2101 | + ... print(person.displayname) |
2102 | Sample Person |
2103 | |
2104 | - >>> print submission_set.deviceDriverOwnersAffectedByBugs( |
2105 | + >>> print(submission_set.deviceDriverOwnersAffectedByBugs( |
2106 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
2107 | - ... package_name='nonsense', bug_tags=['pebcak', 'crash']).count() |
2108 | + ... package_name='nonsense', bug_tags=['pebcak', 'crash']).count()) |
2109 | 0 |
2110 | |
2111 | Owners of private submissions are only included if the optional parameter |
2112 | @@ -2430,14 +2434,14 @@ |
2113 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2114 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
2115 | ... bug_ids=[1], subscribed_to_bug=True, user=no_priv): |
2116 | - ... print person.displayname |
2117 | + ... print(person.displayname) |
2118 | No Privileges Person |
2119 | Sample Person |
2120 | |
2121 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2122 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
2123 | ... bug_ids=[1], subscribed_to_bug=True, user=foo_bar): |
2124 | - ... print person.displayname |
2125 | + ... print(person.displayname) |
2126 | No Privileges Person |
2127 | Sample Person |
2128 | |
2129 | @@ -2446,13 +2450,13 @@ |
2130 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2131 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
2132 | ... bug_ids=[1], subscribed_to_bug=True, user=sample_person): |
2133 | - ... print person.displayname |
2134 | + ... print(person.displayname) |
2135 | Sample Person |
2136 | |
2137 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2138 | ... bus=HWBus.IDE, vendor_id='SEAGATE', product_id='ST3250820NS ', |
2139 | ... bug_ids=[1], subscribed_to_bug=True): |
2140 | - ... print person.displayname |
2141 | + ... print(person.displayname) |
2142 | Sample Person |
2143 | |
2144 | |
2145 | @@ -2464,7 +2468,7 @@ |
2146 | |
2147 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2148 | ... driver_name='sd', bug_ids=[1]): |
2149 | - ... print person.displayname |
2150 | + ... print(person.displayname) |
2151 | Sample Person |
2152 | |
2153 | If Foo Bar says that they are affected by this bug, they will be listed |
2154 | @@ -2473,7 +2477,7 @@ |
2155 | >>> bug_one.markUserAffected(foo_bar) |
2156 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2157 | ... driver_name='sd', bug_ids=[1], affected_by_bug=True): |
2158 | - ... print person.displayname |
2159 | + ... print(person.displayname) |
2160 | Foo Bar |
2161 | Sample Person |
2162 | |
2163 | @@ -2484,7 +2488,7 @@ |
2164 | <lp.bugs.model.bugsubscription.BugSubscription ...> |
2165 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2166 | ... driver_name='sd', bug_ids=[1], subscribed_to_bug=True): |
2167 | - ... print person.displayname |
2168 | + ... print(person.displayname) |
2169 | Foo Bar |
2170 | Sample Person |
2171 | |
2172 | @@ -2495,7 +2499,7 @@ |
2173 | >>> bug_one.unsubscribe(foo_bar, unsubscribed_by=foo_bar) |
2174 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2175 | ... driver_name='sd', bug_ids=[1, 3]): |
2176 | - ... print person.displayname |
2177 | + ... print(person.displayname) |
2178 | Foo Bar |
2179 | Sample Person |
2180 | |
2181 | @@ -2504,12 +2508,12 @@ |
2182 | |
2183 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2184 | ... driver_name='sd', bug_tags=['pebcak']): |
2185 | - ... print person.displayname |
2186 | + ... print(person.displayname) |
2187 | Sample Person |
2188 | |
2189 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2190 | ... driver_name='sd', bug_tags=['pebcak', 'crash']): |
2191 | - ... print person.displayname |
2192 | + ... print(person.displayname) |
2193 | Foo Bar |
2194 | Sample Person |
2195 | |
2196 | @@ -2521,14 +2525,14 @@ |
2197 | |
2198 | >>> for person in submission_set.deviceDriverOwnersAffectedByBugs( |
2199 | ... driver_name='sd', bug_ids=[2], bug_tags=['pebcak']): |
2200 | - ... print person.displayname |
2201 | + ... print(person.displayname) |
2202 | Sample Person |
2203 | |
2204 | Also, confirm that nothing is returned where there is no matching |
2205 | tag on a given bug id. |
2206 | |
2207 | - >>> print len(list(submission_set.deviceDriverOwnersAffectedByBugs( |
2208 | - ... driver_name='sd', bug_ids=[3], bug_tags=['pebcak']))) |
2209 | + >>> print(len(list(submission_set.deviceDriverOwnersAffectedByBugs( |
2210 | + ... driver_name='sd', bug_ids=[3], bug_tags=['pebcak'])))) |
2211 | 0 |
2212 | |
2213 | If neither a device nor a driver name is specified, |
2214 | @@ -2557,7 +2561,7 @@ |
2215 | |
2216 | >>> for entry in submission_set.hwInfoByBugRelatedUsers( |
2217 | ... bug_ids=[1]): |
2218 | - ... print entry |
2219 | + ... print(entry) |
2220 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'MSI', u'MS-7369') |
2221 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'Tonka', u'Tuffbook 2600') |
2222 | (u'name12', <DBItem HWBus.PCI, (1) PCI>, u'0x10de', u'0x0455') |
2223 | @@ -2574,7 +2578,7 @@ |
2224 | |
2225 | >>> for entry in submission_set.hwInfoByBugRelatedUsers( |
2226 | ... bug_ids=[1, 3]): |
2227 | - ... print entry |
2228 | + ... print(entry) |
2229 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'MSI', u'MS-7369') |
2230 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'Tonka', u'Tuffbook 2600') |
2231 | (u'name12', <DBItem HWBus.PCI, (1) PCI>, u'0x10de', u'0x0455') |
2232 | @@ -2592,7 +2596,7 @@ |
2233 | |
2234 | >>> for entry in submission_set.hwInfoByBugRelatedUsers( |
2235 | ... bug_tags=['pebcak']): |
2236 | - ... print entry |
2237 | + ... print(entry) |
2238 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'MSI', u'MS-7369') |
2239 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'Tonka', u'Tuffbook 2600') |
2240 | (u'name12', <DBItem HWBus.PCI, (1) PCI>, u'0x10de', u'0x0455') |
2241 | @@ -2607,7 +2611,7 @@ |
2242 | |
2243 | >>> for entry in submission_set.hwInfoByBugRelatedUsers( |
2244 | ... bug_tags=['pebcak', 'crash']): |
2245 | - ... print entry |
2246 | + ... print(entry) |
2247 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'MSI', u'MS-7369') |
2248 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'Tonka', u'Tuffbook 2600') |
2249 | (u'name12', <DBItem HWBus.PCI, (1) PCI>, u'0x10de', u'0x0455') |
2250 | @@ -2625,7 +2629,7 @@ |
2251 | |
2252 | >>> for entry in submission_set.hwInfoByBugRelatedUsers( |
2253 | ... bug_ids=[2], bug_tags=['pebcak']): |
2254 | - ... print entry |
2255 | + ... print(entry) |
2256 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'MSI', u'MS-7369') |
2257 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'Tonka', u'Tuffbook 2600') |
2258 | (u'name12', <DBItem HWBus.PCI, (1) PCI>, u'0x10de', u'0x0455') |
2259 | @@ -2641,8 +2645,8 @@ |
2260 | Also, confirm that nothing is returned where there is no matching |
2261 | tag on a given bug id. |
2262 | |
2263 | - >>> print len(submission_set.hwInfoByBugRelatedUsers( |
2264 | - ... bug_ids=[3], bug_tags=['pebcak'])) |
2265 | + >>> print(len(submission_set.hwInfoByBugRelatedUsers( |
2266 | + ... bug_ids=[3], bug_tags=['pebcak']))) |
2267 | 0 |
2268 | |
2269 | This method can also be used to list devices where the |
2270 | @@ -2652,7 +2656,7 @@ |
2271 | |
2272 | >>> for entry in submission_set.hwInfoByBugRelatedUsers( |
2273 | ... bug_ids=[1], affected_by_bug=True): |
2274 | - ... print entry |
2275 | + ... print(entry) |
2276 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'MSI', u'MS-7369') |
2277 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'Tonka', u'Tuffbook 2600') |
2278 | (u'name12', <DBItem HWBus.PCI, (1) PCI>, u'0x10de', u'0x0455') |
2279 | @@ -2675,7 +2679,7 @@ |
2280 | |
2281 | >>> for entry in submission_set.hwInfoByBugRelatedUsers( |
2282 | ... bug_ids=[1], subscribed_to_bug=True): |
2283 | - ... print entry |
2284 | + ... print(entry) |
2285 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'MSI', u'MS-7369') |
2286 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'Tonka', u'Tuffbook 2600') |
2287 | (u'name12', <DBItem HWBus.PCI, (1) PCI>, u'0x10de', u'0x0455') |
2288 | @@ -2699,7 +2703,7 @@ |
2289 | |
2290 | >>> for entry in submission_set.hwInfoByBugRelatedUsers( |
2291 | ... bug_ids=[1], subscribed_to_bug=True, user=no_priv): |
2292 | - ... print entry |
2293 | + ... print(entry) |
2294 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'MSI', u'MS-7369') |
2295 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'Tonka', u'Tuffbook 2600') |
2296 | (u'name12', <DBItem HWBus.PCI, (1) PCI>, u'0x10de', u'0x0455') |
2297 | @@ -2717,7 +2721,7 @@ |
2298 | |
2299 | >>> for entry in submission_set.hwInfoByBugRelatedUsers( |
2300 | ... bug_ids=[1], subscribed_to_bug=True, user=foo_bar): |
2301 | - ... print entry |
2302 | + ... print(entry) |
2303 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'MSI', u'MS-7369') |
2304 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'Tonka', u'Tuffbook 2600') |
2305 | (u'name12', <DBItem HWBus.PCI, (1) PCI>, u'0x10de', u'0x0455') |
2306 | @@ -2736,7 +2740,7 @@ |
2307 | |
2308 | >>> for entry in submission_set.hwInfoByBugRelatedUsers( |
2309 | ... bug_ids=[1], subscribed_to_bug=True, user=sample_person): |
2310 | - ... print entry |
2311 | + ... print(entry) |
2312 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'MSI', u'MS-7369') |
2313 | (u'name12', <DBItem HWBus.SYSTEM, (0) System>, u'Tonka', u'Tuffbook 2600') |
2314 | (u'name12', <DBItem HWBus.PCI, (1) PCI>, u'0x10de', u'0x0455') |
2315 | |
2316 | === modified file 'lib/lp/hardwaredb/doc/hwdb-submission.txt' |
2317 | --- lib/lp/hardwaredb/doc/hwdb-submission.txt 2012-11-22 00:15:23 +0000 |
2318 | +++ lib/lp/hardwaredb/doc/hwdb-submission.txt 2019-04-16 17:27:23 +0000 |
2319 | @@ -21,10 +21,10 @@ |
2320 | * submission_data: An XML file containing the collected data. This file is |
2321 | simply stored as a Librarian file, and parsed later by a cron job. |
2322 | |
2323 | + >>> import io |
2324 | >>> from zope.component import getUtility |
2325 | - >>> from StringIO import StringIO |
2326 | >>> from lp.hardwaredb.interfaces.hwdb import IHWDBApplication |
2327 | - >>> data = StringIO('some data.') |
2328 | + >>> data = io.BytesIO(b'some data.') |
2329 | >>> data.filename = 'hardware-info' |
2330 | >>> form={'field.date_created': u'2007-08-01', |
2331 | ... 'field.format': u'VERSION_1', |
2332 | @@ -80,7 +80,7 @@ |
2333 | |
2334 | >>> submit_view = create_initialized_view(app, name='+submit', form=form) |
2335 | >>> for error in submit_view.errors: |
2336 | - ... print error.doc() |
2337 | + ... print(error.doc()) |
2338 | Submission key already exists. |
2339 | |
2340 | If the field distribution contains a name which is not known in the |
2341 | @@ -92,7 +92,7 @@ |
2342 | >>> submit_view = create_initialized_view( |
2343 | ... app, name='+submit', form=invalid_form) |
2344 | >>> submission = submission_set.getBySubmissionKey(u'unique-id-2') |
2345 | - >>> print submission.distroarchseries |
2346 | + >>> print(submission.distroarchseries) |
2347 | None |
2348 | |
2349 | If distribution is known, but distroseries or architecture are unknown |
2350 | @@ -103,7 +103,7 @@ |
2351 | >>> invalid_form['field.distroseries'] = 'no release' |
2352 | >>> submit_view = create_initialized_view( |
2353 | ... app, name='+submit', form=invalid_form) |
2354 | - >>> print submission_set.getBySubmissionKey(u'unique-id-3') |
2355 | + >>> print(submission_set.getBySubmissionKey(u'unique-id-3')) |
2356 | None |
2357 | |
2358 | >>> form['field.submission_key'] = u'unique-id-4' |
2359 | @@ -111,7 +111,7 @@ |
2360 | >>> invalid_form['field.architecture'] = 'no architecture' |
2361 | >>> submit_view = create_initialized_view( |
2362 | ... app, name='+submit', form=invalid_form) |
2363 | - >>> print submission_set.getBySubmissionKey(u'unique-id-4') |
2364 | + >>> print(submission_set.getBySubmissionKey(u'unique-id-4')) |
2365 | None |
2366 | |
2367 | The `date_created` field must contain a valid date. |
2368 | @@ -122,7 +122,7 @@ |
2369 | >>> submit_view = create_initialized_view( |
2370 | ... app, name='+submit', form=invalid_form) |
2371 | >>> for error in submit_view.errors: |
2372 | - ... print error.doc() |
2373 | + ... print(error.doc()) |
2374 | Invalid datetime data |
2375 | |
2376 | The `format` field must contain a value that matches the DBEnumeratedType |
2377 | @@ -133,7 +133,7 @@ |
2378 | >>> submit_view = create_initialized_view( |
2379 | ... app, name='+submit', form=invalid_form) |
2380 | >>> for error in submit_view.errors: |
2381 | - ... print error.doc() |
2382 | + ... print(error.doc()) |
2383 | Invalid value |
2384 | |
2385 | The field `submission_key` may contain only ASCII data. |
2386 | @@ -143,7 +143,7 @@ |
2387 | >>> submit_view = create_initialized_view( |
2388 | ... app, name='+submit', form=invalid_form) |
2389 | >>> for error in submit_view.errors: |
2390 | - ... print error.doc() |
2391 | + ... print(error.doc()) |
2392 | Invalid textual data |
2393 | |
2394 | The field `emailaddress` must contain a formally valid email address. |
2395 | @@ -153,7 +153,7 @@ |
2396 | >>> submit_view = create_initialized_view( |
2397 | ... app, name='+submit', form=invalid_form) |
2398 | >>> for error in submit_view.errors: |
2399 | - ... print error.doc() |
2400 | + ... print(error.doc()) |
2401 | Invalid email address |
2402 | |
2403 | All fields are required. With normal form processing, it's impossible not to |
2404 | @@ -171,10 +171,11 @@ |
2405 | ... invalid_form[field] = u'' |
2406 | ... submit_view = create_initialized_view( |
2407 | ... app, name='+submit', form=invalid_form) |
2408 | - ... print field |
2409 | + ... print(field) |
2410 | ... for error in submit_view.errors: |
2411 | ... field_name = error.field_name |
2412 | - ... print ' ', field_name, submit_view.getFieldError(field_name) |
2413 | + ... print(' ', field_name, |
2414 | + ... submit_view.getFieldError(field_name)) |
2415 | field.date_created |
2416 | date_created Required input is missing. |
2417 | field.submission_key |
2418 | @@ -203,7 +204,8 @@ |
2419 | ... config.root, |
2420 | ... 'lib/lp/hardwaredb/scripts/tests/' |
2421 | ... 'simple_valid_hwdb_submission.xml') |
2422 | - >>> valid_sample_data = StringIO(open(valid_sample_data_path).read()) |
2423 | + >>> valid_sample_data = io.BytesIO( |
2424 | + ... open(valid_sample_data_path, 'rb').read()) |
2425 | >>> valid_sample_data.filename = 'simple_valid_hwdb_submission.xml' |
2426 | >>> team_form['field.submission_data'] = valid_sample_data |
2427 | >>> submit_view = create_initialized_view( |
2428 | @@ -233,18 +235,18 @@ |
2429 | >>> new_submissions = submission_set.getByStatus( |
2430 | ... HWSubmissionProcessingStatus.SUBMITTED) |
2431 | >>> for submission in new_submissions: |
2432 | - ... print submission.submission_key, submission.status.title |
2433 | + ... print(submission.submission_key, submission.status.title) |
2434 | test_submission_id_1 Submitted |
2435 | unique-id-1 Submitted |
2436 | unique-id-68 Submitted |
2437 | >>> processed_submissions = submission_set.getByStatus( |
2438 | ... HWSubmissionProcessingStatus.PROCESSED) |
2439 | >>> for submission in processed_submissions: |
2440 | - ... print submission.submission_key, submission.status.title |
2441 | + ... print(submission.submission_key, submission.status.title) |
2442 | sample-submission Processed |
2443 | >>> invalid_submissions = submission_set.getByStatus( |
2444 | ... HWSubmissionProcessingStatus.INVALID) |
2445 | - >>> print invalid_submissions.count() |
2446 | + >>> print(invalid_submissions.count()) |
2447 | 0 |
2448 | |
2449 | The script process-hwdb-submissions.py takes the optional parameter |
2450 | @@ -269,14 +271,14 @@ |
2451 | ... 'cronscripts/process-hwdb-submissions.py', ['-m1']) |
2452 | >>> returnvalue |
2453 | 0 |
2454 | - >>> print err |
2455 | + >>> print(err) |
2456 | INFO Creating lockfile: /var/lock/launchpad-hwdbsubmissions.lock |
2457 | ERROR Parsing submission test_submission_id_1: syntax error: |
2458 | line 1, column 0 |
2459 | INFO OOPS-... |
2460 | INFO Processed 0 valid and 1 invalid HWDB submissions |
2461 | <BLANKLINE> |
2462 | - >>> print out |
2463 | + >>> print(out) |
2464 | <BLANKLINE> |
2465 | |
2466 | Submission "test_submission_id_1" has now the state INVALID; the other |
2467 | @@ -285,18 +287,18 @@ |
2468 | >>> new_submissions = submission_set.getByStatus( |
2469 | ... HWSubmissionProcessingStatus.SUBMITTED) |
2470 | >>> for submission in new_submissions: |
2471 | - ... print submission.submission_key, submission.status.title |
2472 | + ... print(submission.submission_key, submission.status.title) |
2473 | unique-id-1 Submitted |
2474 | unique-id-68 Submitted |
2475 | >>> processed_submissions = submission_set.getByStatus( |
2476 | ... HWSubmissionProcessingStatus.PROCESSED) |
2477 | >>> for submission in processed_submissions: |
2478 | - ... print submission.submission_key, submission.status.title |
2479 | + ... print(submission.submission_key, submission.status.title) |
2480 | sample-submission Processed |
2481 | >>> invalid_submissions = submission_set.getByStatus( |
2482 | ... HWSubmissionProcessingStatus.INVALID) |
2483 | >>> for submission in invalid_submissions: |
2484 | - ... print submission.submission_key, submission.status.title |
2485 | + ... print(submission.submission_key, submission.status.title) |
2486 | test_submission_id_1 Invalid submission |
2487 | |
2488 | From the remaining two not yet processed submissions, one has invalid |
2489 | @@ -306,13 +308,13 @@ |
2490 | ... 'cronscripts/process-hwdb-submissions.py') |
2491 | >>> returnvalue |
2492 | 0 |
2493 | - >>> print err |
2494 | + >>> print(err) |
2495 | INFO Creating lockfile: /var/lock/launchpad-hwdbsubmissions.lock |
2496 | ERROR Parsing submission unique-id-1: syntax error: line 1, column 0 |
2497 | INFO OOPS-... |
2498 | INFO Processed 1 valid and 1 invalid HWDB submissions |
2499 | <BLANKLINE> |
2500 | - >>> print out |
2501 | + >>> print(out) |
2502 | <BLANKLINE> |
2503 | |
2504 | Now we have one valid, two invalid and no unprocessed submissions. |
2505 | @@ -322,19 +324,19 @@ |
2506 | >>> transaction.commit() |
2507 | >>> new_submissions = submission_set.getByStatus( |
2508 | ... HWSubmissionProcessingStatus.SUBMITTED) |
2509 | - >>> print new_submissions.count() |
2510 | + >>> print(new_submissions.count()) |
2511 | 0 |
2512 | >>> processed_submissions = submission_set.getByStatus( |
2513 | ... HWSubmissionProcessingStatus.PROCESSED) |
2514 | >>> for submission in processed_submissions: |
2515 | - ... print submission.submission_key, submission.status.title |
2516 | + ... print(submission.submission_key, submission.status.title) |
2517 | sample-submission Processed |
2518 | unique-id-68 Processed |
2519 | |
2520 | >>> invalid_submissions = submission_set.getByStatus( |
2521 | ... HWSubmissionProcessingStatus.INVALID) |
2522 | >>> for submission in invalid_submissions: |
2523 | - ... print submission.submission_key, submission.status.title |
2524 | + ... print(submission.submission_key, submission.status.title) |
2525 | test_submission_id_1 Invalid submission |
2526 | unique-id-1 Invalid submission |
2527 | |
2528 | @@ -350,14 +352,14 @@ |
2529 | Now we have 80 new submissions and three submissions that were processed |
2530 | in previous tests. |
2531 | |
2532 | - >>> print submission_set.getByStatus( |
2533 | - ... HWSubmissionProcessingStatus.SUBMITTED).count() |
2534 | + >>> print(submission_set.getByStatus( |
2535 | + ... HWSubmissionProcessingStatus.SUBMITTED).count()) |
2536 | 80 |
2537 | - >>> print submission_set.getByStatus( |
2538 | - ... HWSubmissionProcessingStatus.PROCESSED).count() |
2539 | + >>> print(submission_set.getByStatus( |
2540 | + ... HWSubmissionProcessingStatus.PROCESSED).count()) |
2541 | 2 |
2542 | - >>> print submission_set.getByStatus( |
2543 | - ... HWSubmissionProcessingStatus.INVALID).count() |
2544 | + >>> print(submission_set.getByStatus( |
2545 | + ... HWSubmissionProcessingStatus.INVALID).count()) |
2546 | 2 |
2547 | >>> transaction.commit() |
2548 | |
2549 | @@ -368,19 +370,19 @@ |
2550 | ... 'cronscripts/process-hwdb-submissions.py', ['-m60']) |
2551 | >>> returnvalue |
2552 | 0 |
2553 | - >>> print err |
2554 | + >>> print(err) |
2555 | INFO Creating lockfile: /var/lock/launchpad-hwdbsubmissions.lock |
2556 | INFO Processed 60 valid and 0 invalid HWDB submissions |
2557 | - >>> print out |
2558 | + >>> print(out) |
2559 | <BLANKLINE> |
2560 | - >>> print submission_set.getByStatus( |
2561 | - ... HWSubmissionProcessingStatus.SUBMITTED).count() |
2562 | + >>> print(submission_set.getByStatus( |
2563 | + ... HWSubmissionProcessingStatus.SUBMITTED).count()) |
2564 | 20 |
2565 | - >>> print submission_set.getByStatus( |
2566 | - ... HWSubmissionProcessingStatus.PROCESSED).count() |
2567 | + >>> print(submission_set.getByStatus( |
2568 | + ... HWSubmissionProcessingStatus.PROCESSED).count()) |
2569 | 62 |
2570 | - >>> print submission_set.getByStatus( |
2571 | - ... HWSubmissionProcessingStatus.INVALID).count() |
2572 | + >>> print(submission_set.getByStatus( |
2573 | + ... HWSubmissionProcessingStatus.INVALID).count()) |
2574 | 2 |
2575 | |
2576 | Let's add more subscription so that we have more than max_chunk_size |
2577 | @@ -391,31 +393,31 @@ |
2578 | ... submit_view = create_initialized_view( |
2579 | ... app, name='+submit', form=form) |
2580 | |
2581 | - >>> print submission_set.getByStatus( |
2582 | - ... HWSubmissionProcessingStatus.SUBMITTED).count() |
2583 | + >>> print(submission_set.getByStatus( |
2584 | + ... HWSubmissionProcessingStatus.SUBMITTED).count()) |
2585 | 100 |
2586 | - >>> print submission_set.getByStatus( |
2587 | - ... HWSubmissionProcessingStatus.PROCESSED).count() |
2588 | + >>> print(submission_set.getByStatus( |
2589 | + ... HWSubmissionProcessingStatus.PROCESSED).count()) |
2590 | 62 |
2591 | - >>> print submission_set.getByStatus( |
2592 | - ... HWSubmissionProcessingStatus.INVALID).count() |
2593 | + >>> print(submission_set.getByStatus( |
2594 | + ... HWSubmissionProcessingStatus.INVALID).count()) |
2595 | 2 |
2596 | >>> transaction.commit() |
2597 | >>> returnvalue, out, err = run_script( |
2598 | ... 'cronscripts/process-hwdb-submissions.py') |
2599 | >>> returnvalue |
2600 | 0 |
2601 | - >>> print err |
2602 | + >>> print(err) |
2603 | INFO Creating lockfile: /var/lock/launchpad-hwdbsubmissions.lock |
2604 | INFO Processed 100 valid and 0 invalid HWDB submissions |
2605 | - >>> print out |
2606 | + >>> print(out) |
2607 | <BLANKLINE> |
2608 | - >>> print submission_set.getByStatus( |
2609 | - ... HWSubmissionProcessingStatus.SUBMITTED).count() |
2610 | + >>> print(submission_set.getByStatus( |
2611 | + ... HWSubmissionProcessingStatus.SUBMITTED).count()) |
2612 | 0 |
2613 | - >>> print submission_set.getByStatus( |
2614 | - ... HWSubmissionProcessingStatus.PROCESSED).count() |
2615 | + >>> print(submission_set.getByStatus( |
2616 | + ... HWSubmissionProcessingStatus.PROCESSED).count()) |
2617 | 162 |
2618 | - >>> print submission_set.getByStatus( |
2619 | - ... HWSubmissionProcessingStatus.INVALID).count() |
2620 | + >>> print(submission_set.getByStatus( |
2621 | + ... HWSubmissionProcessingStatus.INVALID).count()) |
2622 | 2 |
2623 | |
2624 | === modified file 'lib/lp/hardwaredb/doc/hwdb.txt' |
2625 | --- lib/lp/hardwaredb/doc/hwdb.txt 2016-02-05 16:51:12 +0000 |
2626 | +++ lib/lp/hardwaredb/doc/hwdb.txt 2019-04-16 17:27:23 +0000 |
2627 | @@ -14,7 +14,7 @@ |
2628 | |
2629 | * reference to the librarian file. |
2630 | |
2631 | - >>> print sample_submission.raw_submission |
2632 | + >>> print(sample_submission.raw_submission) |
2633 | <...LibraryFileAlias instance at ...> |
2634 | |
2635 | * date_created: Date and time of the submission (generated by the client). |
2636 | @@ -24,52 +24,52 @@ |
2637 | * Some machines have a broken CMOS battery and the user does not set |
2638 | date and time after every boot. |
2639 | |
2640 | - >>> print sample_submission.date_created |
2641 | + >>> print(sample_submission.date_created) |
2642 | 2008-09-26 17:19:18+00:00 |
2643 | |
2644 | * date_submitted: Date and time of the submission (generated by the server). |
2645 | |
2646 | - >>> print sample_submission.date_submitted |
2647 | + >>> print(sample_submission.date_submitted) |
2648 | 2008-09-30 08:19:00.222131+00:00 |
2649 | |
2650 | * format: The format version of the submitted data, as given by the HWDB |
2651 | client. See HWSubmissionFormat for valid values. |
2652 | |
2653 | - >>> print sample_submission.format.name |
2654 | + >>> print(sample_submission.format.name) |
2655 | VERSION_1 |
2656 | |
2657 | * status: The status of the submission. See HWSubmissionProcessingStatus for |
2658 | valid values. |
2659 | |
2660 | - >>> print sample_submission.status.name |
2661 | + >>> print(sample_submission.status.name) |
2662 | PROCESSED |
2663 | |
2664 | * private: If True, the submitter allows public access to the data. If |
2665 | false, the data may be used only for statistical purposes. |
2666 | |
2667 | - >>> print sample_submission.private |
2668 | + >>> print(sample_submission.private) |
2669 | False |
2670 | |
2671 | * contactable: If True, the submitter agrees to be contacted by upstream |
2672 | developers and package maintainers for tests etc. |
2673 | |
2674 | - >>> print sample_submission.contactable |
2675 | + >>> print(sample_submission.contactable) |
2676 | False |
2677 | |
2678 | * submission_key: A unique submission ID. |
2679 | |
2680 | - >>> print sample_submission.submission_key |
2681 | + >>> print(sample_submission.submission_key) |
2682 | sample-submission |
2683 | |
2684 | * raw_emailaddress: The email address of the submitter. |
2685 | |
2686 | - >>> print sample_submission.raw_emailaddress |
2687 | + >>> print(sample_submission.raw_emailaddress) |
2688 | test@canonical.com |
2689 | |
2690 | * owner: A reference to the Person table. This value is null, if the email |
2691 | address does not belong (yet) to an entry in Person table. |
2692 | |
2693 | - >>> print sample_submission.owner.displayname |
2694 | + >>> print(sample_submission.owner.displayname) |
2695 | Sample Person |
2696 | |
2697 | * distroarchseries: A reference to the distroarchseries of the submission. |
2698 | @@ -77,20 +77,21 @@ |
2699 | distroseries and architecture do not match an existing entry in the |
2700 | Distroarchrelease table. |
2701 | |
2702 | - >>> print sample_submission.distroarchseries.architecturetag |
2703 | + >>> print(sample_submission.distroarchseries.architecturetag) |
2704 | i386 |
2705 | |
2706 | - >>> print sample_submission.distroarchseries.distroseries.name |
2707 | + >>> print(sample_submission.distroarchseries.distroseries.name) |
2708 | hoary |
2709 | |
2710 | - >>> print sample_submission.distroarchseries.distroseries.distribution.name |
2711 | + >>> print( |
2712 | + ... sample_submission.distroarchseries.distroseries.distribution.name) |
2713 | ubuntu |
2714 | |
2715 | * system_fingerprint: A reference to an entry of the HWSystemFingerprint |
2716 | table. This table stores the system name as returned by HAL |
2717 | (system.vendor, system.product). |
2718 | |
2719 | - >>> print sample_submission.system_fingerprint.fingerprint |
2720 | + >>> print(sample_submission.system_fingerprint.fingerprint) |
2721 | MSI MS-7369 |
2722 | |
2723 | * devices: The set set of HWSubmissionDevice records which belong to |
2724 | @@ -101,7 +102,7 @@ |
2725 | |
2726 | >>> login('foo.bar@canonical.com') |
2727 | >>> for submission_device in sample_submission.devices[:2]: |
2728 | - ... print submission_device.device.name |
2729 | + ... print(submission_device.device.name) |
2730 | MCP65 USB Controller |
2731 | MCP65 SATA Controller |
2732 | >>> login(ANONYMOUS) |
2733 | @@ -146,7 +147,7 @@ |
2734 | |
2735 | ...or None, if no entry exists. |
2736 | |
2737 | - >>> print hw_fingerprint_set.getByName(u'DEC PDP11') |
2738 | + >>> print(hw_fingerprint_set.getByName(u'DEC PDP11')) |
2739 | None |
2740 | |
2741 | IHWSubmissionSet.createSubmission creates a new entry in the |
2742 | @@ -207,7 +208,7 @@ |
2743 | >>> from lp.registry.interfaces.person import IPersonSet |
2744 | >>> beeblebrox = getUtility(IPersonSet).getByEmail( |
2745 | ... 'beeblebrox@example.com') |
2746 | - >>> print beeblebrox |
2747 | + >>> print(beeblebrox) |
2748 | None |
2749 | |
2750 | >>> submission = hw_submission_set.createSubmission( |
2751 | @@ -222,7 +223,7 @@ |
2752 | ... filename=u'hwinfo.txt', |
2753 | ... filesize=len(submission_data), |
2754 | ... system_fingerprint=u'Acer 6789') |
2755 | - >>> print submission.owner |
2756 | + >>> print(submission.owner) |
2757 | None |
2758 | |
2759 | The submitted data can be retrieved via IHWSubmissionSet.getBySubmissionKey. |
2760 | @@ -247,7 +248,7 @@ |
2761 | ... filename=u'hwinfo.txt', |
2762 | ... filesize=len(submission_data), |
2763 | ... system_fingerprint=u'Dell Inspiron 1234') |
2764 | - >>> print hw_submission_set.getBySubmissionKey(u'private-submission') |
2765 | + >>> print(hw_submission_set.getBySubmissionKey(u'private-submission')) |
2766 | None |
2767 | >>> sample_person = getUtility(IPersonSet).getByEmail('test@canonical.com') |
2768 | >>> sample_person.displayname |
2769 | @@ -286,15 +287,15 @@ |
2770 | >>> no_priv = getUtility(IPersonSet).getByEmail('no-priv@canonical.com') |
2771 | >>> no_priv.displayname |
2772 | u'No Privileges Person' |
2773 | - >>> print hw_submission_set.getBySubmissionKey(u'private-submission', |
2774 | - ... no_priv) |
2775 | + >>> print(hw_submission_set.getBySubmissionKey(u'private-submission', |
2776 | + ... no_priv)) |
2777 | None |
2778 | |
2779 | >>> login(ANONYMOUS) |
2780 | |
2781 | If no submission exists for a given ID, None is returned. |
2782 | |
2783 | - >>> print hw_submission_set.getBySubmissionKey(u'unknown-ID') |
2784 | + >>> print(hw_submission_set.getBySubmissionKey(u'unknown-ID')) |
2785 | None |
2786 | |
2787 | IHWSubmissionSet.getByFingerprintName returns all submissions for a |
2788 | @@ -381,7 +382,7 @@ |
2789 | >>> from lp.services.log.logger import DevNullLogger |
2790 | >>> HWSubmissionEmailLinker(log=DevNullLogger()).run() |
2791 | >>> submission = hw_submission_set.getBySubmissionKey(u'unique-id-2') |
2792 | - >>> print submission.owner.displayname |
2793 | + >>> print(submission.owner.displayname) |
2794 | Beeblebrox |
2795 | |
2796 | If somebody has a Launchpad account, but submits HWDB test data using |
2797 | @@ -401,7 +402,7 @@ |
2798 | ... filesize=len(submission_data), |
2799 | ... system_fingerprint=u'Acer 6789') |
2800 | >>> Store.of(submission).flush() |
2801 | - >>> print submission.owner |
2802 | + >>> print(submission.owner) |
2803 | None |
2804 | |
2805 | When they add this email address to their list of addresses in Launchpad, |
2806 | @@ -415,7 +416,7 @@ |
2807 | >>> transaction.commit() |
2808 | >>> HWSubmissionEmailLinker(log=DevNullLogger()).run() |
2809 | >>> submission = hw_submission_set.getBySubmissionKey(u'unique-id-2') |
2810 | - >>> print submission.owner.displayname |
2811 | + >>> print(submission.owner.displayname) |
2812 | Beeblebrox |
2813 | |
2814 | === Submission Records without an email address === |
2815 | @@ -436,9 +437,9 @@ |
2816 | ... filesize=len(submission_data), |
2817 | ... system_fingerprint=u'Dell Inspiron 1234') |
2818 | >>> Store.of(submission_no_owner).flush() |
2819 | - >>> print submission_no_owner.raw_emailaddress |
2820 | + >>> print(submission_no_owner.raw_emailaddress) |
2821 | None |
2822 | - >>> print submission_no_owner.owner |
2823 | + >>> print(submission_no_owner.owner) |
2824 | None |
2825 | |
2826 | == Retrieving Submissions by Status == |
2827 | @@ -451,12 +452,12 @@ |
2828 | ... HWSubmissionProcessingStatus) |
2829 | >>> def print_submissions(submissions): |
2830 | ... for submission in submissions: |
2831 | - ... print submission.submission_key, submission.private, |
2832 | + ... print(submission.submission_key, submission.private, end=' ') |
2833 | ... if submission.owner is not None: |
2834 | - ... print submission.owner.displayname, |
2835 | + ... print(submission.owner.displayname, end=' ') |
2836 | ... else: |
2837 | - ... print '(no owner)', |
2838 | - ... print submission.status.name |
2839 | + ... print('(no owner)', end=' ') |
2840 | + ... print(submission.status.name) |
2841 | >>> new_submissions = hw_submission_set.getByStatus( |
2842 | ... HWSubmissionProcessingStatus.SUBMITTED) |
2843 | >>> print_submissions(new_submissions) |
2844 | @@ -546,7 +547,7 @@ |
2845 | >>> submission_bug = submission_bug_set.create( |
2846 | ... submission_no_owner, bug_one) |
2847 | >>> transaction.commit() |
2848 | - >>> print submission_bug.submission.submission_key |
2849 | + >>> print(submission_bug.submission.submission_key) |
2850 | unique-id-5 |
2851 | >>> submission_bug.bug.id |
2852 | 1 |
2853 | @@ -563,7 +564,7 @@ |
2854 | a given bug. |
2855 | |
2856 | >>> for submission in submission_bug_set.submissionsForBug(bug_one): |
2857 | - ... print submission.submission_key |
2858 | + ... print(submission.submission_key) |
2859 | unique-id-5 |
2860 | |
2861 | Private submissions are only returned if the current user is an admin |
2862 | @@ -575,13 +576,13 @@ |
2863 | <HWSubmissionBug at... |
2864 | >>> for submission in submission_bug_set.submissionsForBug( |
2865 | ... bug_one, user=sample_person): |
2866 | - ... print submission.submission_key |
2867 | + ... print(submission.submission_key) |
2868 | private-submission |
2869 | unique-id-5 |
2870 | |
2871 | >>> for submission in submission_bug_set.submissionsForBug( |
2872 | ... bug_one, user=foobar): |
2873 | - ... print submission.submission_key |
2874 | + ... print(submission.submission_key) |
2875 | private-submission |
2876 | unique-id-5 |
2877 | |
2878 | @@ -589,14 +590,14 @@ |
2879 | |
2880 | >>> for submission in submission_bug_set.submissionsForBug( |
2881 | ... bug_one, user=no_priv): |
2882 | - ... print submission.submission_key |
2883 | + ... print(submission.submission_key) |
2884 | unique-id-5 |
2885 | |
2886 | ...as well as anonymous users. |
2887 | |
2888 | >>> for submission in submission_bug_set.submissionsForBug( |
2889 | ... bug_one): |
2890 | - ... print submission.submission_key |
2891 | + ... print(submission.submission_key) |
2892 | unique-id-5 |
2893 | |
2894 | Existing links can also be removed. |
2895 | @@ -607,7 +608,7 @@ |
2896 | |
2897 | >>> for submission in submission_bug_set.submissionsForBug( |
2898 | ... bug_one, user=foobar): |
2899 | - ... print submission.submission_key |
2900 | + ... print(submission.submission_key) |
2901 | private-submission |
2902 | |
2903 | |
2904 | @@ -621,7 +622,7 @@ |
2905 | submissions are returned. |
2906 | |
2907 | >>> for submission in hw_submission_set.search(): |
2908 | - ... print submission.submission_key |
2909 | + ... print(submission.submission_key) |
2910 | test_submission_id_1 |
2911 | sample-submission |
2912 | unique-id-1 |
2913 | @@ -633,7 +634,7 @@ |
2914 | are returned too. |
2915 | |
2916 | >>> for submission in hw_submission_set.search(user=sample_person): |
2917 | - ... print submission.submission_key |
2918 | + ... print(submission.submission_key) |
2919 | test_submission_id_1 |
2920 | sample-submission |
2921 | unique-id-1 |
2922 | @@ -645,7 +646,7 @@ |
2923 | Admins have access to all submissions. |
2924 | |
2925 | >>> for submission in hw_submission_set.search(user=foobar): |
2926 | - ... print submission.submission_key |
2927 | + ... print(submission.submission_key) |
2928 | test_submission_id_1 |
2929 | sample-submission |
2930 | unique-id-1 |
2931 | @@ -662,21 +663,21 @@ |
2932 | >>> distribution_set = getUtility(IDistributionSet) |
2933 | >>> ubuntu = distribution_set.getByName('ubuntu') |
2934 | >>> for submission in hw_submission_set.search(distribution=ubuntu): |
2935 | - ... print submission.submission_key |
2936 | + ... print(submission.submission_key) |
2937 | sample-submission |
2938 | |
2939 | >>> debian = distribution_set.getByName('debian') |
2940 | - >>> print hw_submission_set.search(distribution=debian).count() |
2941 | + >>> print(hw_submission_set.search(distribution=debian).count()) |
2942 | 0 |
2943 | |
2944 | If an architecture is specified, only those submissions that were made |
2945 | for that architecture are returned. |
2946 | |
2947 | >>> for submission in hw_submission_set.search(architecture='i386'): |
2948 | - ... print submission.submission_key |
2949 | + ... print(submission.submission_key) |
2950 | sample-submission |
2951 | |
2952 | - >>> print hw_submission_set.search(architecture='amd64').count() |
2953 | + >>> print(hw_submission_set.search(architecture='amd64').count()) |
2954 | 0 |
2955 | |
2956 | |
2957 | @@ -688,7 +689,7 @@ |
2958 | >>> msi_mainboard = device_set.getByDeviceID( |
2959 | ... HWBus.SYSTEM, 'MSI', 'MS-7369') |
2960 | >>> for submission in hw_submission_set.search(device=msi_mainboard): |
2961 | - ... print submission.submission_key |
2962 | + ... print(submission.submission_key) |
2963 | sample-submission |
2964 | |
2965 | If a driver is specified, only those submissions for that driver |
2966 | @@ -699,7 +700,7 @@ |
2967 | >>> ehci_driver = driver_set.getByPackageAndName( |
2968 | ... 'linux-image-2.6.24-19-generic', 'ehci_hcd') |
2969 | >>> for submission in hw_submission_set.search(driver=ehci_driver): |
2970 | - ... print submission.submission_key |
2971 | + ... print(submission.submission_key) |
2972 | sample-submission |
2973 | |
2974 | If a distroseries is specified, only submissions for that distroseries |
2975 | @@ -712,7 +713,7 @@ |
2976 | >>> warty_arch_series = factory.makeDistroArchSeries(distroseries=warty) |
2977 | >>> submission = factory.makeHWSubmission(distroarchseries=warty_arch_series) |
2978 | >>> for submission in hw_submission_set.search(distroseries=warty): |
2979 | - ... print submission.distroarchseries.distroseries.name |
2980 | + ... print(submission.distroarchseries.distroseries.name) |
2981 | warty |
2982 | |
2983 | It is also possible to search for a distroseries and architecture. |
2984 | @@ -724,9 +725,9 @@ |
2985 | ... processor=amd64) |
2986 | >>> submission = factory.makeHWSubmission(distroarchseries=warty_amd64) |
2987 | >>> for submission in hw_submission_set.search(distroseries=warty, architecture='amd64'): |
2988 | - ... print '%s %s ' % ( |
2989 | + ... print('%s %s ' % ( |
2990 | ... submission.distroarchseries.distroseries.name, |
2991 | - ... submission.distroarchseries.architecturetag) |
2992 | + ... submission.distroarchseries.architecturetag)) |
2993 | warty amd64 |
2994 | |
2995 | And we can also search for submissions from a particular user. |
2996 | |
2997 | === modified file 'lib/lp/hardwaredb/scripts/hwdbsubmissions.py' |
2998 | --- lib/lp/hardwaredb/scripts/hwdbsubmissions.py 2018-02-02 10:06:24 +0000 |
2999 | +++ lib/lp/hardwaredb/scripts/hwdbsubmissions.py 2019-04-16 17:27:23 +0000 |
3000 | @@ -16,11 +16,11 @@ |
3001 | ] |
3002 | |
3003 | import bz2 |
3004 | -from cStringIO import StringIO |
3005 | from datetime import ( |
3006 | datetime, |
3007 | timedelta, |
3008 | ) |
3009 | +import io |
3010 | from logging import getLogger |
3011 | import os |
3012 | import re |
3013 | @@ -73,14 +73,15 @@ |
3014 | """, |
3015 | re.VERBOSE) |
3016 | |
3017 | -_broken_comment_nodes_re = re.compile('(<comment>.*?</comment>)', re.DOTALL) |
3018 | +_broken_comment_nodes_re = re.compile(br'(<comment>.*?</comment>)', re.DOTALL) |
3019 | _missing_udev_node_data = re.compile( |
3020 | - '<info command="udevadm info --export-db">(.*?)</info>', re.DOTALL) |
3021 | + br'<info command="udevadm info --export-db">(.*?)</info>', re.DOTALL) |
3022 | _missing_dmi_node_data = re.compile( |
3023 | - r'<info command="grep -r \. /sys/class/dmi/id/ 2>/dev/null">(.*?)' |
3024 | - '</info>', re.DOTALL) |
3025 | -_udev_node_exists = re.compile('<hardware>.*?<udev>.*?</hardware>', re.DOTALL) |
3026 | -_dmi_node_exists = re.compile('<hardware>.*?<dmi>.*?</hardware>', re.DOTALL) |
3027 | + br'<info command="grep -r \. /sys/class/dmi/id/ 2>/dev/null">(.*?)' |
3028 | + br'</info>', re.DOTALL) |
3029 | +_udev_node_exists = re.compile( |
3030 | + br'<hardware>.*?<udev>.*?</hardware>', re.DOTALL) |
3031 | +_dmi_node_exists = re.compile(br'<hardware>.*?<dmi>.*?</hardware>', re.DOTALL) |
3032 | |
3033 | ROOT_UDI = '/org/freedesktop/Hal/devices/computer' |
3034 | UDEV_ROOT_PATH = '/devices/LNXSYSTM:00' |
3035 | @@ -176,7 +177,7 @@ |
3036 | # A considerable number of reports for Lucid has ESC characters |
3037 | # in comment nodes. We don't need the comment nodes at all, so |
3038 | # we can simply empty them. |
3039 | - submission = _broken_comment_nodes_re.sub('<comment/>', submission) |
3040 | + submission = _broken_comment_nodes_re.sub(b'<comment/>', submission) |
3041 | |
3042 | # Submissions from Natty don't have the nodes <dmi> and <udev> |
3043 | # as children of the <hardware> node. Fortunately, they provide |
3044 | @@ -197,14 +198,14 @@ |
3045 | mo = _missing_udev_node_data.search(submission) |
3046 | if mo is not None: |
3047 | missing_data = mo.group(1) |
3048 | - missing_data = '<udev>%s</udev>\n</hardware>' % missing_data |
3049 | - submission = submission.replace('</hardware>', missing_data) |
3050 | + missing_data = b'<udev>%s</udev>\n</hardware>' % missing_data |
3051 | + submission = submission.replace(b'</hardware>', missing_data) |
3052 | if _dmi_node_exists.search(submission) is None: |
3053 | mo = _missing_dmi_node_data.search(submission) |
3054 | if mo is not None: |
3055 | missing_data = mo.group(1) |
3056 | - missing_data = '<dmi>%s</dmi>\n</hardware>' % missing_data |
3057 | - submission = submission.replace('</hardware>', missing_data) |
3058 | + missing_data = b'<dmi>%s</dmi>\n</hardware>' % missing_data |
3059 | + submission = submission.replace(b'</hardware>', missing_data) |
3060 | return submission |
3061 | |
3062 | def _getValidatedEtree(self, submission, submission_key): |
3063 | @@ -215,7 +216,7 @@ |
3064 | """ |
3065 | submission = self.fixFrequentErrors(submission) |
3066 | try: |
3067 | - tree = etree.parse(StringIO(submission), parser=self.doc_parser) |
3068 | + tree = etree.parse(io.BytesIO(submission), parser=self.doc_parser) |
3069 | except SyntaxError as error_value: |
3070 | self._logError(error_value, submission_key) |
3071 | return None |
3072 | |
3073 | === modified file 'lib/lp/hardwaredb/scripts/tests/test_hwdb_submission_parser.py' |
3074 | --- lib/lp/hardwaredb/scripts/tests/test_hwdb_submission_parser.py 2012-01-01 02:58:52 +0000 |
3075 | +++ lib/lp/hardwaredb/scripts/tests/test_hwdb_submission_parser.py 2019-04-16 17:27:23 +0000 |
3076 | @@ -3,8 +3,10 @@ |
3077 | |
3078 | """Tests of the HWDB submissions parser.""" |
3079 | |
3080 | -from cStringIO import StringIO |
3081 | +from __future__ import absolute_import, print_function, unicode_literals |
3082 | + |
3083 | from datetime import datetime |
3084 | +import io |
3085 | import logging |
3086 | import os |
3087 | from textwrap import dedent |
3088 | @@ -343,18 +345,18 @@ |
3089 | |
3090 | def testStringPropertyEncoding(self): |
3091 | """Different encodings are properly handled.""" |
3092 | - xml_template = '''<?xml version="1.0" encoding="%s"?> |
3093 | - <property type="str" name="foo">%s</property>''' |
3094 | + xml_template = u'''<?xml version="1.0" encoding="%s"?> |
3095 | + <property type="str" name="foo">%s</property>''' |
3096 | umlaut = u'\xe4' |
3097 | parser = SubmissionParser() |
3098 | for encoding in ('utf-8', 'iso-8859-1'): |
3099 | - xml = xml_template % (encoding, umlaut.encode(encoding)) |
3100 | - tree = etree.parse(StringIO(xml)) |
3101 | + xml = (xml_template % (encoding, umlaut)).encode(encoding) |
3102 | + tree = etree.parse(io.BytesIO(xml)) |
3103 | node = tree.getroot() |
3104 | result = parser._parseProperty(node) |
3105 | self.assertEqual(result, ('foo', (umlaut, 'str')), |
3106 | 'Invalid parsing result for string encoding %s, ' |
3107 | - 'expected am umlaut (\xe4), got %s' |
3108 | + 'expected an umlaut (\xe4), got %s' |
3109 | % (encoding, repr(result))) |
3110 | |
3111 | def testIntegerPropertyTypes(self): |
3112 | @@ -1431,7 +1433,7 @@ |
3113 | sample_data_path = os.path.join( |
3114 | config.root, 'lib', 'lp', 'hardwaredb', 'scripts', |
3115 | 'tests', 'hardwaretest.xml') |
3116 | - sample_data = open(sample_data_path).read() |
3117 | + sample_data = open(sample_data_path, 'rb').read() |
3118 | parser = SubmissionParser() |
3119 | result = parser.parseSubmission(sample_data, 'parser test 1') |
3120 | self.assertNotEqual(result, None, |
3121 | @@ -1441,7 +1443,7 @@ |
3122 | # parseSubmission returns None, if the submitted data is not |
3123 | # well-formed XML... |
3124 | result = parser.parseSubmission( |
3125 | - sample_data.replace('<summary', '<inconsitent_opening_tag'), |
3126 | + sample_data.replace(b'<summary', b'<inconsitent_opening_tag'), |
3127 | 'parser test 2') |
3128 | self.assertEqual(result, None, |
3129 | 'Not-well-formed XML data accepted by ' |
3130 | @@ -1449,7 +1451,7 @@ |
3131 | |
3132 | # ...or if RelaxNG validation fails... |
3133 | result = parser.parseSubmission( |
3134 | - sample_data.replace('<summary', '<summary foo="bar"'), |
3135 | + sample_data.replace(b'<summary', b'<summary foo="bar"'), |
3136 | 'parser test 3') |
3137 | self.assertEqual(result, None, |
3138 | 'XML data that does pass the Relax NG validation ' |
3139 | @@ -1459,8 +1461,8 @@ |
3140 | # property set containing two properties with the same name. |
3141 | result = parser.parseSubmission( |
3142 | sample_data.replace( |
3143 | - '<property name="info.parent"', |
3144 | - """<property name="info.parent" type="dbus.String"> |
3145 | + b'<property name="info.parent"', |
3146 | + b"""<property name="info.parent" type="dbus.String"> |
3147 | foo |
3148 | </property> |
3149 | <property name="info.parent" |
3150 | @@ -1980,8 +1982,8 @@ |
3151 | [self.udev_root_device, self.udev_pci_device])) |
3152 | self.assertErrorMessage( |
3153 | parser.submission_key, |
3154 | - "Non-PCI udev device with PCI properties: set(['PCI_SLOT_NAME']) " |
3155 | - "'/devices/LNXSYSTM:00'") |
3156 | + "Non-PCI udev device with PCI properties: set([u'PCI_SLOT_NAME']) " |
3157 | + "u'/devices/LNXSYSTM:00'") |
3158 | |
3159 | def testCheckUdevPciPropertiesPciDeviceWithoutRequiredProperties(self): |
3160 | """Test of SubmissionParser.checkUdevPciProperties(). |
3161 | @@ -1997,7 +1999,7 @@ |
3162 | self.assertErrorMessage( |
3163 | parser.submission_key, |
3164 | "PCI udev device without required PCI properties: " |
3165 | - "set(['PCI_CLASS']) '/devices/pci0000:00/0000:00:1f.2'") |
3166 | + "set(['PCI_CLASS']) u'/devices/pci0000:00/0000:00:1f.2'") |
3167 | |
3168 | def testCheckUdevPciPropertiesPciDeviceWithNonIntegerPciClass(self): |
3169 | """Test of SubmissionParser.checkUdevPciProperties(). |
3170 | @@ -2012,8 +2014,8 @@ |
3171 | [self.udev_root_device, self.udev_pci_device])) |
3172 | self.assertErrorMessage( |
3173 | parser.submission_key, |
3174 | - "Invalid udev PCI class: 'not-an-integer' " |
3175 | - "'/devices/pci0000:00/0000:00:1f.2'") |
3176 | + "Invalid udev PCI class: u'not-an-integer' " |
3177 | + "u'/devices/pci0000:00/0000:00:1f.2'") |
3178 | |
3179 | def testCheckUdevPciPropertiesPciDeviceWithInvalidPciClassValue(self): |
3180 | """Test of SubmissionParser.checkUdevPciProperties(). |
3181 | @@ -2028,8 +2030,8 @@ |
3182 | [self.udev_root_device, self.udev_pci_device])) |
3183 | self.assertErrorMessage( |
3184 | parser.submission_key, |
3185 | - "Invalid udev PCI class: '1234567' " |
3186 | - "'/devices/pci0000:00/0000:00:1f.2'") |
3187 | + "Invalid udev PCI class: u'1234567' " |
3188 | + "u'/devices/pci0000:00/0000:00:1f.2'") |
3189 | |
3190 | def testCheckUdevPciPropertiesPciDeviceWithInvalidDeviceID(self): |
3191 | """Test of SubmissionParser.checkUdevPciProperties(). |
3192 | @@ -2044,8 +2046,8 @@ |
3193 | [self.udev_root_device, self.udev_pci_device])) |
3194 | self.assertErrorMessage( |
3195 | parser.submission_key, |
3196 | - "Invalid udev PCI device ID: 'not-an-id' " |
3197 | - "'/devices/pci0000:00/0000:00:1f.2'") |
3198 | + "Invalid udev PCI device ID: u'not-an-id' " |
3199 | + "u'/devices/pci0000:00/0000:00:1f.2'") |
3200 | |
3201 | def testCheckUdevPciPropertiesPciDeviceWithInvalidSubsystemID(self): |
3202 | """Test of SubmissionParser.checkUdevPciProperties(). |
3203 | @@ -2060,8 +2062,8 @@ |
3204 | [self.udev_root_device, self.udev_pci_device])) |
3205 | self.assertErrorMessage( |
3206 | parser.submission_key, |
3207 | - "Invalid udev PCI device ID: 'not-a-subsystem-id' " |
3208 | - "'/devices/pci0000:00/0000:00:1f.2'") |
3209 | + "Invalid udev PCI device ID: u'not-a-subsystem-id' " |
3210 | + "u'/devices/pci0000:00/0000:00:1f.2'") |
3211 | |
3212 | def testCheckUdevUsbProperties(self): |
3213 | """Test of SubmissionParser.checkUdevUsbProperties(). |
3214 | @@ -2096,7 +2098,7 @@ |
3215 | self.assertErrorMessage( |
3216 | parser.submission_key, |
3217 | "USB udev device found without required properties: " |
3218 | - "set(['%s']) '/devices/pci0000:00/0000:00:1d.1/usb3/3-2'" |
3219 | + "set(['%s']) u'/devices/pci0000:00/0000:00:1d.1/usb3/3-2'" |
3220 | % property_name) |
3221 | self.udev_usb_device['E'][property_name] = saved_property |
3222 | |
3223 | @@ -2114,8 +2116,8 @@ |
3224 | self.assertErrorMessage( |
3225 | parser.submission_key, |
3226 | "USB udev device found with invalid product ID: " |
3227 | - "'not-a-valid-usb-product-id' " |
3228 | - "'/devices/pci0000:00/0000:00:1d.1/usb3/3-2'") |
3229 | + "u'not-a-valid-usb-product-id' " |
3230 | + "u'/devices/pci0000:00/0000:00:1d.1/usb3/3-2'") |
3231 | |
3232 | def testCheckUdevUsbProperties_with_invalid_type_data(self): |
3233 | """Test of SubmmissionParser.checkUdevUsbProperties(). |
3234 | @@ -2129,8 +2131,8 @@ |
3235 | [self.udev_root_device, self.udev_usb_device])) |
3236 | self.assertErrorMessage( |
3237 | parser.submission_key, |
3238 | - "USB udev device found with invalid type data: 'no-type' " |
3239 | - "'/devices/pci0000:00/0000:00:1d.1/usb3/3-2'") |
3240 | + "USB udev device found with invalid type data: u'no-type' " |
3241 | + "u'/devices/pci0000:00/0000:00:1d.1/usb3/3-2'") |
3242 | |
3243 | def testCheckUdevUsbProperties_with_invalid_devtype(self): |
3244 | """Test of SubmmissionParser.checkUdevUsbProperties(). |
3245 | @@ -2145,8 +2147,8 @@ |
3246 | [self.udev_root_device, self.udev_usb_device])) |
3247 | self.assertErrorMessage( |
3248 | parser.submission_key, |
3249 | - "USB udev device found with invalid udev type data: 'nonsense' " |
3250 | - "'/devices/pci0000:00/0000:00:1d.1/usb3/3-2'") |
3251 | + "USB udev device found with invalid udev type data: u'nonsense' " |
3252 | + "u'/devices/pci0000:00/0000:00:1d.1/usb3/3-2'") |
3253 | |
3254 | def testCheckUdevUsbProperties_interface_without_interface_property(self): |
3255 | """Test of SubmmissionParser.checkUdevUsbProperties(). |
3256 | @@ -2161,7 +2163,7 @@ |
3257 | self.assertErrorMessage( |
3258 | parser.submission_key, |
3259 | "USB interface udev device found without INTERFACE property: " |
3260 | - "'/devices/pci0000:00/0000:00:1d.1/usb3/3-2/3-2:1.1'") |
3261 | + "u'/devices/pci0000:00/0000:00:1d.1/usb3/3-2/3-2:1.1'") |
3262 | |
3263 | def testCheckUdevUsbProperties_interface_invalid_interface_property(self): |
3264 | """Test of SubmmissionParser.checkUdevUsbProperties(). |
3265 | @@ -2177,8 +2179,8 @@ |
3266 | self.assertErrorMessage( |
3267 | parser.submission_key, |
3268 | "USB Interface udev device found with invalid INTERFACE " |
3269 | - "property: 'nonsense' " |
3270 | - "'/devices/pci0000:00/0000:00:1d.1/usb3/3-2/3-2:1.1'") |
3271 | + "property: u'nonsense' " |
3272 | + "u'/devices/pci0000:00/0000:00:1d.1/usb3/3-2/3-2:1.1'") |
3273 | |
3274 | def testCheckUdevScsiProperties(self): |
3275 | """Test of SubmissionParser.checkUdevScsiProperties().""" |
3276 | @@ -2218,7 +2220,7 @@ |
3277 | self.assertErrorMessage( |
3278 | parser.submission_key, |
3279 | "SCSI udev node found without DEVTYPE property: " |
3280 | - "'/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0'") |
3281 | + "u'/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0'") |
3282 | |
3283 | def testCheckUdevScsiProperties_no_sysfs_data(self): |
3284 | """Test of SubmissionParser.checkUdevScsiProperties(). |
3285 | @@ -2234,7 +2236,7 @@ |
3286 | self.assertErrorMessage( |
3287 | parser.submission_key, |
3288 | "SCSI udev device node found without related sysfs record: " |
3289 | - "'/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0'") |
3290 | + "u'/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0'") |
3291 | |
3292 | def testCheckUdevScsiProperties_missing_sysfs_attributes(self): |
3293 | """Test of SubmissionParser.checkUdevScsiProperties(). |
3294 | @@ -2255,7 +2257,7 @@ |
3295 | parser.submission_key, |
3296 | "SCSI udev device found without required sysfs attributes: " |
3297 | "set(['model']) " |
3298 | - "'/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0'") |
3299 | + "u'/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0'") |
3300 | |
3301 | class UdevTestSubmissionParser(SubmissionParser): |
3302 | """A variant of SubmissionParser that shortcuts udev related tests. |
3303 | @@ -2612,4 +2614,4 @@ |
3304 | self.assertErrorMessage( |
3305 | 'Consistency check detects circular parent-child relationships', |
3306 | "Found HAL devices with circular parent/child " |
3307 | - "relationship: ['/foo', '/bar']") |
3308 | + "relationship: [u'/foo', u'/bar']") |
3309 | |
3310 | === modified file 'lib/lp/hardwaredb/scripts/tests/test_hwdb_submission_processing.py' |
3311 | --- lib/lp/hardwaredb/scripts/tests/test_hwdb_submission_processing.py 2018-01-02 15:23:24 +0000 |
3312 | +++ lib/lp/hardwaredb/scripts/tests/test_hwdb_submission_processing.py 2019-04-16 17:27:23 +0000 |
3313 | @@ -3,10 +3,12 @@ |
3314 | |
3315 | """Tests of the HWDB submissions parser.""" |
3316 | |
3317 | +from __future__ import absolute_import, print_function, unicode_literals |
3318 | + |
3319 | import bz2 |
3320 | from copy import deepcopy |
3321 | -from cStringIO import StringIO |
3322 | from datetime import datetime |
3323 | +import io |
3324 | import logging |
3325 | import os |
3326 | |
3327 | @@ -397,7 +399,7 @@ |
3328 | parser.submission_key = 'udev device with invalid path' |
3329 | self.assertFalse(parser.buildUdevDeviceList(parsed_data)) |
3330 | self.assertErrorMessage( |
3331 | - parser.submission_key, "Invalid device path name: '/nonsense'") |
3332 | + parser.submission_key, "Invalid device path name: u'/nonsense'") |
3333 | |
3334 | def test_buildUdevDeviceList_missing_root_device(self): |
3335 | """Test the creation of UdevDevice instances for a submission. |
3336 | @@ -1565,7 +1567,7 @@ |
3337 | % found_bus) |
3338 | self.assertWarningMessage( |
3339 | parser.submission_key, |
3340 | - "Unknown bus 'nonsense' for device " + self.UDI_PCCARD_DEVICE) |
3341 | + "Unknown bus u'nonsense' for device " + self.UDI_PCCARD_DEVICE) |
3342 | |
3343 | def test_HALDevice_is_root_device_for_root_device(self): |
3344 | """Test of HALDevice.is_root_device for the root device.""" |
3345 | @@ -2147,13 +2149,13 @@ |
3346 | ('pci.vendor_id', |
3347 | "A HALDevice that is supposed to be a real device does not " |
3348 | "provide bus, vendor ID, product ID or product name: <DBItem " |
3349 | - "HWBus.PCI, (1) PCI> None 28980 'Intel PCCard bridge 1234' " |
3350 | + "HWBus.PCI, (1) PCI> None 28980 u'Intel PCCard bridge 1234' " |
3351 | "/org/freedesktop/Hal/devices/pci_8086_27c5" |
3352 | ), |
3353 | ('pci.product_id', |
3354 | "A HALDevice that is supposed to be a real device does not " |
3355 | "provide bus, vendor ID, product ID or product name: " |
3356 | - "<DBItem HWBus.PCI, (1) PCI> 32902 None 'Intel PCCard bridge " |
3357 | + "<DBItem HWBus.PCI, (1) PCI> 32902 None u'Intel PCCard bridge " |
3358 | "1234' /org/freedesktop/Hal/devices/pci_8086_27c5" |
3359 | ), |
3360 | ('info.product', |
3361 | @@ -4212,7 +4214,7 @@ |
3362 | # which a USB is not. Hence we get a warning. |
3363 | self.assertWarningMessage( |
3364 | parser.submission_key, |
3365 | - "Unknown bus 'usb_interface' for device " |
3366 | + "Unknown bus u'usb_interface' for device " |
3367 | "/devices/pci0000:00/0000:00:1d.7/usb1/1-1/1-1:1.0") |
3368 | |
3369 | def test_real_bus_pci(self): |
3370 | @@ -4370,8 +4372,8 @@ |
3371 | parser.submission_key, |
3372 | "A UdevDevice that is supposed to be a real device does not " |
3373 | "provide bus, vendor ID, product ID or product name: " |
3374 | - "<DBItem HWBus.SYSTEM, (0) System> None 'LIFEBOOK E8210' " |
3375 | - "'LIFEBOOK E8210' /devices/LNXSYSTM:00") |
3376 | + "<DBItem HWBus.SYSTEM, (0) System> None u'LIFEBOOK E8210' " |
3377 | + "u'LIFEBOOK E8210' /devices/LNXSYSTM:00") |
3378 | |
3379 | def test_has_reliable_data_system_no_product_name(self): |
3380 | """Test of UdevDevice.has_reliable_data for a system. |
3381 | @@ -4390,7 +4392,7 @@ |
3382 | parser.submission_key, |
3383 | "A UdevDevice that is supposed to be a real device does not " |
3384 | "provide bus, vendor ID, product ID or product name: " |
3385 | - "<DBItem HWBus.SYSTEM, (0) System> 'FUJITSU SIEMENS' None None " |
3386 | + "<DBItem HWBus.SYSTEM, (0) System> u'FUJITSU SIEMENS' None None " |
3387 | "/devices/LNXSYSTM:00") |
3388 | |
3389 | def test_has_reliable_data_acpi_device(self): |
3390 | @@ -5078,6 +5080,8 @@ |
3391 | def createSubmissionData(self, data, compress, submission_key, |
3392 | private=False): |
3393 | """Create a submission.""" |
3394 | + if not isinstance(data, bytes): |
3395 | + data = data.encode('UTF-8') |
3396 | if compress: |
3397 | data = bz2.compress(data) |
3398 | switch_dbuser('launchpad') |
3399 | @@ -5089,7 +5093,7 @@ |
3400 | submission_key=submission_key, |
3401 | emailaddress=u'test@canonical.com', |
3402 | distroarchseries=None, |
3403 | - raw_submission=StringIO(data), |
3404 | + raw_submission=io.BytesIO(data), |
3405 | filename='hwinfo.xml', |
3406 | filesize=len(data), |
3407 | system_fingerprint='A Machine Name') |
3408 | |
3409 | === modified file 'lib/lp/hardwaredb/scripts/tests/test_hwdbsubmissions.py' |
3410 | --- lib/lp/hardwaredb/scripts/tests/test_hwdbsubmissions.py 2012-04-23 11:52:39 +0000 |
3411 | +++ lib/lp/hardwaredb/scripts/tests/test_hwdbsubmissions.py 2019-04-16 17:27:23 +0000 |
3412 | @@ -3,6 +3,8 @@ |
3413 | |
3414 | """Tests for hwdbsubmissions script.""" |
3415 | |
3416 | +from __future__ import absolute_import, print_function, unicode_literals |
3417 | + |
3418 | __metaclass__ = type |
3419 | |
3420 | from tempfile import mktemp |
3421 | |
3422 | === modified file 'lib/lp/hardwaredb/stories/hwdb/xx-hwdb.txt' |
3423 | --- lib/lp/hardwaredb/stories/hwdb/xx-hwdb.txt 2016-01-26 15:47:37 +0000 |
3424 | +++ lib/lp/hardwaredb/stories/hwdb/xx-hwdb.txt 2019-04-16 17:27:23 +0000 |
3425 | @@ -42,7 +42,7 @@ |
3426 | For easy error checks by the HWDB client, an extra header is added, if the |
3427 | data has successfully been uploaded. |
3428 | |
3429 | - >>> print browser.headers |
3430 | + >>> print(browser.headers) |
3431 | Status: 200 Ok |
3432 | Content-Length: ... |
3433 | Content-Type: text/html;charset=utf-8 |
3434 | @@ -56,7 +56,7 @@ |
3435 | |
3436 | >>> for tag in find_tags_by_class( |
3437 | ... browser.contents, 'informational message'): |
3438 | - ... print tag |
3439 | + ... print(tag) |
3440 | <div class="informational message">Thank you for your submission.</div> |
3441 | |
3442 | If fields are not set, the response contains a header explaining this |
3443 | @@ -74,8 +74,8 @@ |
3444 | ... browser, wrong_data, submit_data_checkboxes, submit_file, |
3445 | ... 'test.txt') |
3446 | ... browser.getControl('Upload').click() |
3447 | - ... print "--- missing field", field |
3448 | - ... print browser.headers |
3449 | + ... print("--- missing field", field) |
3450 | + ... print(browser.headers) |
3451 | --- missing field Date Created: |
3452 | Status: 200 Ok |
3453 | ... |
3454 | @@ -118,7 +118,7 @@ |
3455 | >>> fill_form( |
3456 | ... browser, wrong_data, submit_data_checkboxes, None, 'test.txt') |
3457 | >>> browser.getControl('Upload').click() |
3458 | - >>> print browser.headers |
3459 | + >>> print(browser.headers) |
3460 | Status: 200 Ok |
3461 | ... |
3462 | X-Launchpad-Hwdb-Submission: Error in field 'submission_data' - Required input is missing. |
3463 | @@ -134,7 +134,7 @@ |
3464 | ... browser, wrong_data, submit_data_checkboxes, submit_file, |
3465 | ... 'test.txt') |
3466 | >>> browser.getControl('Upload').click() |
3467 | - >>> print browser.headers |
3468 | + >>> print(browser.headers) |
3469 | Status: 200 Ok |
3470 | ... |
3471 | X-Launchpad-Hwdb-Submission: Error in field 'submission_key' - Submission key already exists. |
3472 | @@ -149,7 +149,7 @@ |
3473 | ... browser, wrong_data, submit_data_checkboxes, submit_file, |
3474 | ... 'test.txt') |
3475 | >>> browser.getControl('Upload').click() |
3476 | - >>> print browser.headers |
3477 | + >>> print(browser.headers) |
3478 | Status: 200 Ok |
3479 | ... |
3480 | X-Launchpad-Hwdb-Submission: Error in field 'date_created' - Invalid datetime data |
3481 | @@ -164,7 +164,7 @@ |
3482 | ... browser, wrong_data, submit_data_checkboxes, submit_file, |
3483 | ... 'test.txt') |
3484 | >>> browser.getControl('Upload').click() |
3485 | - >>> print browser.headers |
3486 | + >>> print(browser.headers) |
3487 | Status: 200 Ok |
3488 | ... |
3489 | X-Launchpad-Hwdb-Submission: Error in field 'submission_key' - Invalid textual data |
3490 | @@ -179,7 +179,7 @@ |
3491 | ... browser, wrong_data, submit_data_checkboxes, submit_file, |
3492 | ... 'test.txt') |
3493 | >>> browser.getControl('Upload').click() |
3494 | - >>> print browser.headers |
3495 | + >>> print(browser.headers) |
3496 | Status: 200 Ok |
3497 | ... |
3498 | X-Launchpad-Hwdb-Submission: Error in field 'emailaddress' - Invalid email address |
3499 | @@ -212,7 +212,7 @@ |
3500 | ... } |
3501 | >>> browser.open('http://launchpad.dev/+hwdb/+submit', |
3502 | ... data=urlencode(form_data)) |
3503 | - >>> print browser.headers |
3504 | + >>> print(browser.headers) |
3505 | Status: 200 Ok |
3506 | ... |
3507 | X-Launchpad-Hwdb-Submission: Error: Required fields not contained in |
3508 | @@ -230,7 +230,7 @@ |
3509 | |
3510 | >>> anon_browser.open('http://launchpad.dev/~name12/+hwdb-submissions') |
3511 | >>> [content_table] = find_tags_by_class(anon_browser.contents, 'listing') |
3512 | - >>> print extract_text(content_table) |
3513 | + >>> print(extract_text(content_table)) |
3514 | System Date submitted Download Raw |
3515 | Fujitsu_CY26 ... test.txt ... |
3516 | TONKA TUFFBOOK2600 ... hwsubmission1.xml ... |
3517 | @@ -297,7 +297,7 @@ |
3518 | >>> browser.getControl('Upload').click() |
3519 | >>> anon_browser.open('http://launchpad.dev/~name12/+hwdb-submissions') |
3520 | >>> [content_table] = find_tags_by_class(anon_browser.contents, 'listing') |
3521 | - >>> print extract_text(content_table) |
3522 | + >>> print(extract_text(content_table)) |
3523 | System Date submitted Download Raw |
3524 | Fujitsu_CY26 ... test.txt ... |
3525 | TONKA TUFFBOOK2600 ... hwsubmission1.xml ... |
3526 | @@ -312,7 +312,7 @@ |
3527 | >>> browser = setupBrowser(auth='Basic test@canonical.com:test') |
3528 | >>> browser.open('http://launchpad.dev/~name12/+hwdb-submissions') |
3529 | >>> [content_table] = find_tags_by_class(browser.contents, 'listing') |
3530 | - >>> print extract_text(content_table) |
3531 | + >>> print(extract_text(content_table)) |
3532 | System Date submitted Download Private Raw |
3533 | Fujitsu_CY26 ... test2.txt yes ... |
3534 | Fujitsu_CY26 ... test.txt no ... |
3535 | @@ -322,7 +322,7 @@ |
3536 | displayed. |
3537 | |
3538 | >>> anon_browser.open('http://launchpad.dev/~name16/+hwdb-submissions') |
3539 | - >>> print extract_text(find_main_content(anon_browser.contents)) |
3540 | + >>> print(extract_text(find_main_content(anon_browser.contents))) |
3541 | Hardware submissions for Foo Bar... |
3542 | Foo Bar has posted no submissions. |
3543 | |
3544 | @@ -351,14 +351,14 @@ |
3545 | >>> browser.getControl('Upload').click() |
3546 | >>> anon_browser.open( |
3547 | ... 'http://launchpad.dev/~ubuntu-team/+hwdb-submissions') |
3548 | - >>> print extract_text(find_main_content(anon_browser.contents)) |
3549 | + >>> print(extract_text(find_main_content(anon_browser.contents))) |
3550 | Hardware submissions for ...Ubuntu Team... |
3551 | Ubuntu Team has posted no submissions. |
3552 | |
3553 | >>> browser = setupBrowser(auth='Basic celso.providelo@canonical.com:test') |
3554 | >>> browser.open('http://launchpad.dev/~ubuntu-team/+hwdb-submissions') |
3555 | >>> [content_table] = find_tags_by_class(browser.contents, 'listing') |
3556 | - >>> print extract_text(content_table) |
3557 | + >>> print(extract_text(content_table)) |
3558 | System Date submitted Download Raw |
3559 | Black Box 42 ... teamtest.txt ... |
3560 | |
3561 | @@ -371,7 +371,7 @@ |
3562 | |
3563 | >>> browser.open( |
3564 | ... 'http://launchpad.dev/+hwdb/+submission/unique-id-1/+text') |
3565 | - >>> print browser.contents |
3566 | + >>> print(browser.contents) |
3567 | Date-Created: 2007-01-01 00:00:00+00:00 |
3568 | Date-Submitted: ... |
3569 | Format: VERSION_1 |
3570 | @@ -394,7 +394,7 @@ |
3571 | >>> browser = setupBrowser(auth='Basic celso.providelo@canonical.com:test') |
3572 | >>> browser.open( |
3573 | ... 'http://launchpad.dev/+hwdb/+submission/unique-id-3a/+text') |
3574 | - >>> print browser.contents |
3575 | + >>> print(browser.contents) |
3576 | Date-Created: 2007-01-01 00:00:00+00:00 |
3577 | Date-Submitted: ... |
3578 | Format: VERSION_1 |
3579 | @@ -413,7 +413,7 @@ |
3580 | >>> anon_browser.open( |
3581 | ... 'http://launchpad.dev/+hwdb/+fingerprint/Fujitsu_CY26') |
3582 | >>> [content_table] = find_tags_by_class(anon_browser.contents, 'listing') |
3583 | - >>> print extract_text(content_table) |
3584 | + >>> print(extract_text(content_table)) |
3585 | Date submitted Submitted by Download Raw |
3586 | ... n/a test.txt ... |
3587 | |
3588 | @@ -432,7 +432,7 @@ |
3589 | >>> anon_browser.open( |
3590 | ... 'http://launchpad.dev/+hwdb/+fingerprint/Fujitsu_CY26') |
3591 | >>> [content_table] = find_tags_by_class(anon_browser.contents, 'listing') |
3592 | - >>> print extract_text(content_table) |
3593 | + >>> print(extract_text(content_table)) |
3594 | Date submitted Submitted by Download Raw |
3595 | ... Sample Person (name12) test3.txt ... |
3596 | ... n/a test.txt ... |
3597 | @@ -443,7 +443,7 @@ |
3598 | >>> browser.open( |
3599 | ... 'http://launchpad.dev/+hwdb/+fingerprint/Fujitsu_CY26') |
3600 | >>> [content_table] = find_tags_by_class(browser.contents, 'listing') |
3601 | - >>> print extract_text(content_table) |
3602 | + >>> print(extract_text(content_table)) |
3603 | Date submitted Submitted by Download Raw |
3604 | ... Sample Person (name12) test3.txt ... |
3605 | ... Sample Person (name12) test2.txt ... |
3606 | @@ -453,7 +453,7 @@ |
3607 | |
3608 | >>> anon_browser.open( |
3609 | ... 'http://launchpad.dev/+hwdb/+fingerprint/unknownfingerprint') |
3610 | - >>> print extract_text(find_main_content(anon_browser.contents)) |
3611 | + >>> print(extract_text(find_main_content(anon_browser.contents))) |
3612 | Hardware Database submissions for a fingerprint |
3613 | Submissions for system: unknownfingerprint |
3614 | There are no submissions for this system. |
3615 | |
3616 | === modified file 'lib/lp/hardwaredb/stories/webservice/xx-hwdb.txt' |
3617 | --- lib/lp/hardwaredb/stories/webservice/xx-hwdb.txt 2015-10-06 06:48:01 +0000 |
3618 | +++ lib/lp/hardwaredb/stories/webservice/xx-hwdb.txt 2019-04-16 17:27:23 +0000 |
3619 | @@ -49,8 +49,8 @@ |
3620 | |
3621 | The query parameter `bus` must be a bus name as enumerated by HWBus. |
3622 | |
3623 | - >>> print webservice.get( |
3624 | - ... '/+hwdb?ws.op=devices&bus=NoSuchBus&vendor_id=MSI') |
3625 | + >>> print(webservice.get( |
3626 | + ... '/+hwdb?ws.op=devices&bus=NoSuchBus&vendor_id=MSI')) |
3627 | HTTP/1.1 400 Bad Request |
3628 | ... |
3629 | bus: Invalid value "NoSuchBus". Acceptable values are: System, PCI, |
3630 | @@ -58,14 +58,14 @@ |
3631 | |
3632 | Omitting the query parameters `bus` or `vendor_id` leads to an error. |
3633 | |
3634 | - >>> print webservice.get( |
3635 | - ... '/+hwdb?ws.op=devices&bus=System') |
3636 | + >>> print(webservice.get( |
3637 | + ... '/+hwdb?ws.op=devices&bus=System')) |
3638 | HTTP/1.1 400 Bad Request |
3639 | ... |
3640 | vendor_id: Required input is missing. |
3641 | |
3642 | - >>> print webservice.get( |
3643 | - ... '/+hwdb?ws.op=devices&vendor_id=MSI') |
3644 | + >>> print(webservice.get( |
3645 | + ... '/+hwdb?ws.op=devices&vendor_id=MSI')) |
3646 | HTTP/1.1 400 Bad Request |
3647 | ... |
3648 | bus: Required input is missing. |
3649 | @@ -91,7 +91,7 @@ |
3650 | |
3651 | >>> devices = webservice.get( |
3652 | ... '/+hwdb?ws.op=devices&bus=System&vendor_id=MSI&product_id=nothing') |
3653 | - >>> print devices.jsonBody()['entries'] |
3654 | + >>> print(devices.jsonBody()['entries']) |
3655 | [] |
3656 | |
3657 | Some buses have constraints for the values of vendor and product IDs. |
3658 | @@ -99,14 +99,14 @@ |
3659 | an overview of these constraints, see doc/hwdb-device-tables.txt.) |
3660 | Queries with invalid parameter values return a 400 error. |
3661 | |
3662 | - >>> print webservice.get( |
3663 | - ... '/+hwdb?ws.op=devices&bus=PCI&vendor_id=WRONG') |
3664 | + >>> print(webservice.get( |
3665 | + ... '/+hwdb?ws.op=devices&bus=PCI&vendor_id=WRONG')) |
3666 | HTTP/1.1 400 Bad Request |
3667 | ... |
3668 | u'WRONG' is not a valid vendor ID for PCI |
3669 | |
3670 | - >>> print webservice.get( |
3671 | - ... '/+hwdb?ws.op=devices&bus=PCI&vendor_id=0x1234&product_id=BAD') |
3672 | + >>> print(webservice.get( |
3673 | + ... '/+hwdb?ws.op=devices&bus=PCI&vendor_id=0x1234&product_id=BAD')) |
3674 | HTTP/1.1 400 Bad Request |
3675 | ... |
3676 | u'BAD' is not a valid product ID for PCI |
3677 | @@ -129,7 +129,7 @@ |
3678 | |
3679 | A 404 error is returned, when a non-existent ID is passed in the URL... |
3680 | |
3681 | - >>> print webservice.get('/+hwdb/+device/1000000') |
3682 | + >>> print(webservice.get('/+hwdb/+device/1000000')) |
3683 | HTTP/1.1 404 Not Found |
3684 | ... |
3685 | Object: <lp.systemhomes.HWDBApplication |
3686 | @@ -137,7 +137,7 @@ |
3687 | |
3688 | ...and when an otherwise invalid ID is passed. |
3689 | |
3690 | - >>> print webservice.get('/+hwdb/+device/nonsense') |
3691 | + >>> print(webservice.get('/+hwdb/+device/nonsense')) |
3692 | HTTP/1.1 404 Not Found |
3693 | ... |
3694 | Object: <lp.systemhomes.HWDBApplication |
3695 | @@ -187,7 +187,7 @@ |
3696 | >>> class_info = webservice.named_post( |
3697 | ... '/+hwdb/+device/2', 'getOrCreateDeviceClass', {}, main_class=12, |
3698 | ... sub_class=3).jsonBody() |
3699 | - >>> print class_info['self_link'] |
3700 | + >>> print(class_info['self_link']) |
3701 | http://api.launchpad.dev/beta/+hwdb/+deviceclass/... |
3702 | |
3703 | The property device.classes returns the collection of all classes |
3704 | @@ -203,12 +203,12 @@ |
3705 | |
3706 | We can delete existing class data by calling deviceclass.delete(). |
3707 | |
3708 | - >>> print webservice.delete(class_info['entries'][0]['self_link']) |
3709 | + >>> print(webservice.delete(class_info['entries'][0]['self_link'])) |
3710 | HTTP/1.1 200 Ok |
3711 | ... |
3712 | |
3713 | >>> class_info = webservice.get('/+hwdb/+device/2/classes').jsonBody() |
3714 | - >>> print class_info['total_size'] |
3715 | + >>> print(class_info['total_size']) |
3716 | 0 |
3717 | |
3718 | |
3719 | @@ -389,7 +389,7 @@ |
3720 | |
3721 | A 404 error is returned, when a non-existent ID is passed in the URL... |
3722 | |
3723 | - >>> print webservice.get('/+hwdb/+driver/1000000') |
3724 | + >>> print(webservice.get('/+hwdb/+driver/1000000')) |
3725 | HTTP/1.1 404 Not Found |
3726 | ... |
3727 | Object: <lp.systemhomes.HWDBApplication |
3728 | @@ -397,7 +397,7 @@ |
3729 | |
3730 | ...and when an otherwise invalid ID is passed. |
3731 | |
3732 | - >>> print webservice.get('/+hwdb/+driver/nonsense') |
3733 | + >>> print(webservice.get('/+hwdb/+driver/nonsense')) |
3734 | HTTP/1.1 404 Not Found |
3735 | ... |
3736 | Object: <lp.systemhomes.HWDBApplication |
3737 | @@ -408,7 +408,7 @@ |
3738 | >>> submissions = webservice.named_get( |
3739 | ... '/+hwdb/+driver/1', 'getSubmissions').jsonBody() |
3740 | >>> for submission in submissions['entries']: |
3741 | - ... print submission['submission_key'] |
3742 | + ... print(submission['submission_key']) |
3743 | sample-submission |
3744 | |
3745 | We can filter the list of drivers by distribution. |
3746 | @@ -417,13 +417,13 @@ |
3747 | ... '/+hwdb/+driver/1', 'getSubmissions', |
3748 | ... distribution=webservice.getAbsoluteUrl('/ubuntu')).jsonBody() |
3749 | >>> for submission in submissions['entries']: |
3750 | - ... print submission['submission_key'] |
3751 | + ... print(submission['submission_key']) |
3752 | sample-submission |
3753 | |
3754 | >>> submissions = webservice.named_get( |
3755 | ... '/+hwdb/+driver/1', 'getSubmissions', |
3756 | ... distribution=webservice.getAbsoluteUrl('/debian')).jsonBody() |
3757 | - >>> print submissions['total_size'] |
3758 | + >>> print(submissions['total_size']) |
3759 | 0 |
3760 | |
3761 | We can filter the list of drivers by distribution series. |
3762 | @@ -432,13 +432,13 @@ |
3763 | ... '/+hwdb/+driver/1', 'getSubmissions', |
3764 | ... distroseries=webservice.getAbsoluteUrl('/ubuntu/hoary')).jsonBody() |
3765 | >>> for submission in submissions['entries']: |
3766 | - ... print submission['submission_key'] |
3767 | + ... print(submission['submission_key']) |
3768 | sample-submission |
3769 | |
3770 | >>> submissions = webservice.named_get( |
3771 | ... '/+hwdb/+driver/1', 'getSubmissions', |
3772 | ... distroseries=webservice.getAbsoluteUrl('/ubuntu/warty')).jsonBody() |
3773 | - >>> print submissions['total_size'] |
3774 | + >>> print(submissions['total_size']) |
3775 | 0 |
3776 | |
3777 | We can filter the list of drivers by processor architecture. |
3778 | @@ -447,13 +447,13 @@ |
3779 | ... '/+hwdb/+driver/1', 'getSubmissions', |
3780 | ... architecture='i386').jsonBody() |
3781 | >>> for submission in submissions['entries']: |
3782 | - ... print submission['submission_key'] |
3783 | + ... print(submission['submission_key']) |
3784 | sample-submission |
3785 | |
3786 | >>> submissions = webservice.named_get( |
3787 | ... '/+hwdb/+driver/1', 'getSubmissions', |
3788 | ... architecture='powerpc').jsonBody() |
3789 | - >>> print submissions['total_size'] |
3790 | + >>> print(submissions['total_size']) |
3791 | 0 |
3792 | |
3793 | We can filter by distribution series and processor architecture. |
3794 | @@ -463,7 +463,7 @@ |
3795 | ... distroseries=webservice.getAbsoluteUrl('/ubuntu/hoary'), |
3796 | ... architecture='i386').jsonBody() |
3797 | >>> for submission in submissions['entries']: |
3798 | - ... print submission['submission_key'] |
3799 | + ... print(submission['submission_key']) |
3800 | sample-submission |
3801 | |
3802 | |
3803 | @@ -536,7 +536,7 @@ |
3804 | |
3805 | Accessing the raw submission data yields a redirect to a Librarian URL. |
3806 | |
3807 | - >>> print webservice.get(submission['raw_submission_link']) |
3808 | + >>> print(webservice.get(submission['raw_submission_link'])) |
3809 | HTTP/1.1 303 See Other... |
3810 | Content-Length: 0 |
3811 | Content-Type: text/plain |
3812 | @@ -546,7 +546,7 @@ |
3813 | A 404 error is returned when a client tries to access a non-existent |
3814 | submission. |
3815 | |
3816 | - >>> print webservice.get('/+hwdb/+submission/nonsense') |
3817 | + >>> print(webservice.get('/+hwdb/+submission/nonsense')) |
3818 | HTTP/1.1 404 Not Found |
3819 | ... |
3820 | Object: <...systemhomes.HWDBApplication object at ...>, name: u'nonsense' |
3821 | @@ -557,7 +557,7 @@ |
3822 | >>> submissions = webservice.get( |
3823 | ... '/+hwdb/+device/2?ws.op=getSubmissions').jsonBody() |
3824 | >>> for submission in submissions['entries']: |
3825 | - ... print submission['submission_key'] |
3826 | + ... print(submission['submission_key']) |
3827 | sample-submission |
3828 | |
3829 | We can limit the result set to submissions where the device is accessed |
3830 | @@ -572,7 +572,7 @@ |
3831 | >>> submissions = webservice.get( |
3832 | ... '/+hwdb/+device/2?' + urlencode(parameters)).jsonBody() |
3833 | >>> for submission in submissions['entries']: |
3834 | - ... print submission['submission_key'] |
3835 | + ... print(submission['submission_key']) |
3836 | sample-submission |
3837 | |
3838 | ...but when we set it to nv_xorg_driver, we get an empty result set. |
3839 | @@ -583,7 +583,7 @@ |
3840 | ... } |
3841 | >>> submissions = webservice.get( |
3842 | ... '/+hwdb/+device/2?' + urlencode(parameters)).jsonBody() |
3843 | - >>> print submissions['total_size'] |
3844 | + >>> print(submissions['total_size']) |
3845 | 0 |
3846 | |
3847 | We can also limit the result set to submissions made for a specific |
3848 | @@ -604,7 +604,7 @@ |
3849 | >>> submissions = webservice.get( |
3850 | ... '/+hwdb/+device/2?' + urlencode(parameters)).jsonBody() |
3851 | >>> for submission in submissions['entries']: |
3852 | - ... print submission['submission_key'] |
3853 | + ... print(submission['submission_key']) |
3854 | sample-submission |
3855 | |
3856 | >>> parameters = { |
3857 | @@ -613,7 +613,7 @@ |
3858 | ... } |
3859 | >>> submissions = webservice.get( |
3860 | ... '/+hwdb/+device/2?' + urlencode(parameters)).jsonBody() |
3861 | - >>> print submissions['total_size'] |
3862 | + >>> print(submissions['total_size']) |
3863 | 0 |
3864 | |
3865 | ...for a specific processor architecture... |
3866 | @@ -625,7 +625,7 @@ |
3867 | >>> submissions = webservice.get( |
3868 | ... '/+hwdb/+device/2?' + urlencode(parameters)).jsonBody() |
3869 | >>> for submission in submissions['entries']: |
3870 | - ... print submission['submission_key'] |
3871 | + ... print(submission['submission_key']) |
3872 | sample-submission |
3873 | |
3874 | >>> parameters = { |
3875 | @@ -634,7 +634,7 @@ |
3876 | ... } |
3877 | >>> submissions = webservice.get( |
3878 | ... '/+hwdb/+device/2?' + urlencode(parameters)).jsonBody() |
3879 | - >>> print submissions['total_size'] |
3880 | + >>> print(submissions['total_size']) |
3881 | 0 |
3882 | |
3883 | ...for a specific distro series... |
3884 | @@ -643,13 +643,13 @@ |
3885 | ... '/+hwdb/+device/2', 'getSubmissions', |
3886 | ... distroseries=webservice.getAbsoluteUrl('/ubuntu/hoary')).jsonBody() |
3887 | >>> for submission in submissions['entries']: |
3888 | - ... print submission['submission_key'] |
3889 | + ... print(submission['submission_key']) |
3890 | sample-submission |
3891 | |
3892 | >>> submissions = webservice.named_get( |
3893 | ... '/+hwdb/+device/2', 'getSubmissions', |
3894 | ... distroseries=webservice.getAbsoluteUrl('/ubuntu/warty')).jsonBody() |
3895 | - >>> print submissions['total_size'] |
3896 | + >>> print(submissions['total_size']) |
3897 | 0 |
3898 | |
3899 | ...and the combination of a distro series and processor architecture. |
3900 | @@ -659,22 +659,22 @@ |
3901 | ... distroseries=webservice.getAbsoluteUrl('/ubuntu/hoary'), |
3902 | ... architecture='i386').jsonBody() |
3903 | >>> for submission in submissions['entries']: |
3904 | - ... print submission['submission_key'] |
3905 | + ... print(submission['submission_key']) |
3906 | sample-submission |
3907 | |
3908 | >>> submissions = webservice.named_get( |
3909 | ... '/+hwdb/+device/2', 'getSubmissions', |
3910 | ... distroseries=webservice.getAbsoluteUrl('/ubuntu/hoary'), |
3911 | ... architecture='powerpc').jsonBody() |
3912 | - >>> print submissions['total_size'] |
3913 | + >>> print(submissions['total_size']) |
3914 | 0 |
3915 | |
3916 | But we can't supply both distribution and distroseries. |
3917 | |
3918 | - >>> print webservice.named_get( |
3919 | + >>> print(webservice.named_get( |
3920 | ... '/+hwdb/+device/2', 'getSubmissions', |
3921 | ... distribution=webservice.getAbsoluteUrl('/ubuntu'), |
3922 | - ... distroseries=webservice.getAbsoluteUrl('/ubuntu/hoary')) |
3923 | + ... distroseries=webservice.getAbsoluteUrl('/ubuntu/hoary'))) |
3924 | HTTP/1.1 400 Bad Request |
3925 | ... |
3926 | Only one of `distribution` or `distroseries` can be present. |
3927 | @@ -685,13 +685,13 @@ |
3928 | ... '/+hwdb/+device/2', 'getSubmissions', |
3929 | ... owner=webservice.getAbsoluteUrl('/~name12')).jsonBody() |
3930 | >>> for submission in submissions['entries']: |
3931 | - ... print submission['submission_key'] |
3932 | + ... print(submission['submission_key']) |
3933 | sample-submission |
3934 | |
3935 | >>> submissions = webservice.named_get( |
3936 | ... '/+hwdb/+device/2', 'getSubmissions', |
3937 | ... owner=webservice.getAbsoluteUrl('/~name20')).jsonBody() |
3938 | - >>> print submissions['total_size'] |
3939 | + >>> print(submissions['total_size']) |
3940 | 0 |
3941 | |
3942 | === Getting all submissions for a user === |
3943 | @@ -718,13 +718,13 @@ |
3944 | >>> owner = webservice.getAbsoluteUrl('/~name12') |
3945 | >>> submissions = webservice.get( |
3946 | ... '/+hwdb?ws.op=search&owner=%s' % owner).jsonBody() |
3947 | - >>> print submissions['total_size'] |
3948 | + >>> print(submissions['total_size']) |
3949 | 2 |
3950 | |
3951 | >>> owner = webservice.getAbsoluteUrl('/~name20') |
3952 | >>> submissions = webservice.get( |
3953 | ... '/+hwdb?ws.op=search&owner=%s' % owner).jsonBody() |
3954 | - >>> print submissions['total_size'] |
3955 | + >>> print(submissions['total_size']) |
3956 | 0 |
3957 | |
3958 | ...and by device: |
3959 | @@ -732,7 +732,7 @@ |
3960 | >>> device = webservice.getAbsoluteUrl('/+hwdb/+device/1') |
3961 | >>> submissions = webservice.named_get( |
3962 | ... '/+hwdb', 'search', device=device).jsonBody() |
3963 | - >>> print submissions['total_size'] |
3964 | + >>> print(submissions['total_size']) |
3965 | 1 |
3966 | |
3967 | ...and by driver: |
3968 | @@ -740,7 +740,7 @@ |
3969 | >>> driver = webservice.getAbsoluteUrl('/+hwdb/+driver/1') |
3970 | >>> submissions = webservice.named_get( |
3971 | ... '/+hwdb', 'search', driver=driver).jsonBody() |
3972 | - >>> print submissions['total_size'] |
3973 | + >>> print(submissions['total_size']) |
3974 | 1 |
3975 | |
3976 | ...and by distribution: |
3977 | @@ -748,12 +748,12 @@ |
3978 | >>> ubuntu_url = webservice.getAbsoluteUrl('/ubuntu') |
3979 | >>> submissions = webservice.named_get( |
3980 | ... '/+hwdb', 'search', distribution=ubuntu_url).jsonBody() |
3981 | - >>> print submissions['total_size'] |
3982 | + >>> print(submissions['total_size']) |
3983 | 1 |
3984 | >>> debian_url = webservice.getAbsoluteUrl('/debian') |
3985 | >>> submissions = webservice.named_get( |
3986 | ... '/+hwdb', 'search', distribution=debian_url).jsonBody() |
3987 | - >>> print submissions['total_size'] |
3988 | + >>> print(submissions['total_size']) |
3989 | 0 |
3990 | |
3991 | ...and by distroseries: |
3992 | @@ -761,23 +761,23 @@ |
3993 | >>> hoary_url = webservice.getAbsoluteUrl('/ubuntu/hoary') |
3994 | >>> submissions = webservice.named_get( |
3995 | ... '/+hwdb', 'search', distroseries=hoary_url).jsonBody() |
3996 | - >>> print submissions['total_size'] |
3997 | + >>> print(submissions['total_size']) |
3998 | 1 |
3999 | >>> warty_url = webservice.getAbsoluteUrl('/ubuntu/warty') |
4000 | >>> submissions = webservice.named_get( |
4001 | ... '/+hwdb', 'search', distroseries=warty_url).jsonBody() |
4002 | - >>> print submissions['total_size'] |
4003 | + >>> print(submissions['total_size']) |
4004 | 0 |
4005 | |
4006 | ...and by architecture: |
4007 | |
4008 | >>> submissions = webservice.named_get( |
4009 | ... '/+hwdb', 'search', architecture='i386').jsonBody() |
4010 | - >>> print submissions['total_size'] |
4011 | + >>> print(submissions['total_size']) |
4012 | 1 |
4013 | >>> submissions = webservice.named_get( |
4014 | ... '/+hwdb', 'search', architecture='powerpc').jsonBody() |
4015 | - >>> print submissions['total_size'] |
4016 | + >>> print(submissions['total_size']) |
4017 | 0 |
4018 | |
4019 | ...and by date created: |
4020 | @@ -785,11 +785,11 @@ |
4021 | >>> date_created = u'2007-09-11T00:00:00+00:00' |
4022 | >>> submissions = webservice.named_get( |
4023 | ... '/+hwdb', 'search', created_before=date_created).jsonBody() |
4024 | - >>> print submissions['total_size'] |
4025 | + >>> print(submissions['total_size']) |
4026 | 1 |
4027 | >>> submissions = webservice.named_get( |
4028 | ... '/+hwdb', 'search', created_after=date_created).jsonBody() |
4029 | - >>> print submissions['total_size'] |
4030 | + >>> print(submissions['total_size']) |
4031 | 1 |
4032 | |
4033 | ...and by date submitted: |
4034 | @@ -797,11 +797,11 @@ |
4035 | >>> date_submitted = u'2007-09-11T15:23:45.653316+00:00' |
4036 | >>> submissions = webservice.named_get( |
4037 | ... '/+hwdb', 'search', submitted_before=date_submitted).jsonBody() |
4038 | - >>> print submissions['total_size'] |
4039 | + >>> print(submissions['total_size']) |
4040 | 1 |
4041 | >>> submissions = webservice.named_get( |
4042 | ... '/+hwdb', 'search', submitted_after=date_submitted).jsonBody() |
4043 | - >>> print submissions['total_size'] |
4044 | + >>> print(submissions['total_size']) |
4045 | 1 |
4046 | |
4047 | |
4048 | @@ -867,7 +867,7 @@ |
4049 | |
4050 | A 404 error is returned, when a non-existent ID is passed in the URL... |
4051 | |
4052 | - >>> print webservice.get('/+hwdb/+hwvendorid/1000000') |
4053 | + >>> print(webservice.get('/+hwdb/+hwvendorid/1000000')) |
4054 | HTTP/1.1 404 Not Found |
4055 | ... |
4056 | Object: <lp.systemhomes.HWDBApplication |
4057 | @@ -875,7 +875,7 @@ |
4058 | |
4059 | ...and when an otherwise invalid ID is passed. |
4060 | |
4061 | - >>> print webservice.get('/+hwdb/+hwvendorid/nonsense') |
4062 | + >>> print(webservice.get('/+hwdb/+hwvendorid/nonsense')) |
4063 | HTTP/1.1 404 Not Found |
4064 | ... |
4065 | Object: <lp.systemhomes.HWDBApplication |
4066 | @@ -905,52 +905,52 @@ |
4067 | We can query how often a given device or a given driver appears in |
4068 | HWDB submissions. |
4069 | |
4070 | - >>> print webservice.named_get( |
4071 | + >>> print(webservice.named_get( |
4072 | ... '/+hwdb', 'numDevicesInSubmissions', |
4073 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ' |
4074 | - ... ).jsonBody() |
4075 | + ... ).jsonBody()) |
4076 | 1 |
4077 | |
4078 | - >>> print webservice.named_get( |
4079 | - ... '/+hwdb', 'numDevicesInSubmissions', driver_name='sd').jsonBody() |
4080 | + >>> print(webservice.named_get( |
4081 | + ... '/+hwdb', 'numDevicesInSubmissions', driver_name='sd').jsonBody()) |
4082 | 5 |
4083 | |
4084 | We can ask how many given devices controlled by a given driver appear |
4085 | in HWDB submissions. |
4086 | |
4087 | - >>> print webservice.named_get( |
4088 | + >>> print(webservice.named_get( |
4089 | ... '/+hwdb', 'numDevicesInSubmissions', |
4090 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4091 | - ... driver_name='sd').jsonBody() |
4092 | + ... driver_name='sd').jsonBody()) |
4093 | 1 |
4094 | - >>> print webservice.named_get( |
4095 | + >>> print(webservice.named_get( |
4096 | ... '/+hwdb', 'numDevicesInSubmissions', |
4097 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4098 | - ... driver_name='nonsense').jsonBody() |
4099 | + ... driver_name='nonsense').jsonBody()) |
4100 | 0 |
4101 | |
4102 | This count can be limited to a package_name. |
4103 | |
4104 | - >>> print webservice.named_get( |
4105 | + >>> print(webservice.named_get( |
4106 | ... '/+hwdb', 'numDevicesInSubmissions', |
4107 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4108 | - ... package_name='linux-image-2.6.24-19-generic').jsonBody() |
4109 | + ... package_name='linux-image-2.6.24-19-generic').jsonBody()) |
4110 | 1 |
4111 | - >>> print webservice.named_get( |
4112 | + >>> print(webservice.named_get( |
4113 | ... '/+hwdb', 'numDevicesInSubmissions', |
4114 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4115 | - ... package_name='nonsense').jsonBody() |
4116 | + ... package_name='nonsense').jsonBody()) |
4117 | 0 |
4118 | |
4119 | - >>> print webservice.named_get( |
4120 | + >>> print(webservice.named_get( |
4121 | ... '/+hwdb', 'numDevicesInSubmissions', driver_name='sd', |
4122 | - ... package_name='linux-image-2.6.24-19-generic').jsonBody() |
4123 | + ... package_name='linux-image-2.6.24-19-generic').jsonBody()) |
4124 | 5 |
4125 | |
4126 | While the parameters for a device and for a driver are optional, |
4127 | specifying neither leads to an error. |
4128 | |
4129 | - >>> print webservice.named_get('/+hwdb', 'numDevicesInSubmissions') |
4130 | + >>> print(webservice.named_get('/+hwdb', 'numDevicesInSubmissions')) |
4131 | HTTP/1.1 400 Bad Request |
4132 | ... |
4133 | Specify (bus, vendor_id, product_id) or driver_name. |
4134 | @@ -958,77 +958,76 @@ |
4135 | We can additionally pass a reference to a distribution... |
4136 | |
4137 | >>> ubuntu_url = webservice.getAbsoluteUrl('/ubuntu') |
4138 | - >>> print webservice.named_get( |
4139 | + >>> print(webservice.named_get( |
4140 | ... '/+hwdb', 'numDevicesInSubmissions', |
4141 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4142 | - ... distribution=ubuntu_url).jsonBody() |
4143 | + ... distribution=ubuntu_url).jsonBody()) |
4144 | 1 |
4145 | >>> debian_url = webservice.getAbsoluteUrl('/debian') |
4146 | - >>> print webservice.named_get( |
4147 | + >>> print(webservice.named_get( |
4148 | ... '/+hwdb', 'numDevicesInSubmissions', |
4149 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4150 | - ... distribution=debian_url).jsonBody() |
4151 | + ... distribution=debian_url).jsonBody()) |
4152 | 0 |
4153 | |
4154 | ...a reference to a distroseries... |
4155 | |
4156 | >>> hoary_url = webservice.getAbsoluteUrl('/ubuntu/hoary') |
4157 | - >>> print webservice.named_get( |
4158 | + >>> print(webservice.named_get( |
4159 | ... '/+hwdb', 'numDevicesInSubmissions', |
4160 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4161 | - ... distroseries=hoary_url).jsonBody() |
4162 | + ... distroseries=hoary_url).jsonBody()) |
4163 | 1 |
4164 | >>> warty_url = webservice.getAbsoluteUrl('/ubuntu/warty') |
4165 | - >>> print webservice.named_get( |
4166 | + >>> print(webservice.named_get( |
4167 | ... '/+hwdb', 'numDevicesInSubmissions', |
4168 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4169 | - ... distroseries=warty_url).jsonBody() |
4170 | + ... distroseries=warty_url).jsonBody()) |
4171 | 0 |
4172 | |
4173 | ...or a reference to a distroarchseries. |
4174 | |
4175 | >>> hoary_i386_url = webservice.getAbsoluteUrl('/ubuntu/hoary/i386') |
4176 | - >>> print webservice.named_get( |
4177 | + >>> print(webservice.named_get( |
4178 | ... '/+hwdb', 'numDevicesInSubmissions', |
4179 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4180 | - ... distroarchseries=hoary_i386_url).jsonBody() |
4181 | + ... distroarchseries=hoary_i386_url).jsonBody()) |
4182 | 1 |
4183 | >>> hoary_hppa_url = webservice.getAbsoluteUrl('/ubuntu/hoary/hppa') |
4184 | - >>> print webservice.named_get( |
4185 | + >>> print(webservice.named_get( |
4186 | ... '/+hwdb', 'numDevicesInSubmissions', |
4187 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4188 | - ... distroarchseries=hoary_hppa_url).jsonBody() |
4189 | + ... distroarchseries=hoary_hppa_url).jsonBody()) |
4190 | 0 |
4191 | |
4192 | But at most one of the parameters distribution, distroseries, |
4193 | distroarchseries may be specified. |
4194 | |
4195 | - >>> print webservice.named_get( |
4196 | + >>> print(webservice.named_get( |
4197 | ... '/+hwdb', 'numDevicesInSubmissions', |
4198 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4199 | - ... distribution=ubuntu_url, distroseries=hoary_url) |
4200 | + ... distribution=ubuntu_url, distroseries=hoary_url)) |
4201 | ... |
4202 | HTTP/1.1 400 Bad Request |
4203 | ... |
4204 | Only one of `distribution`, `distroseries` or `distroarchseries` can |
4205 | be present. |
4206 | |
4207 | - >>> print webservice.named_get( |
4208 | + >>> print(webservice.named_get( |
4209 | ... '/+hwdb', 'numDevicesInSubmissions', |
4210 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4211 | ... distribution=ubuntu_url, |
4212 | - ... distroarchseries=hoary_i386_url) |
4213 | + ... distroarchseries=hoary_i386_url)) |
4214 | ... |
4215 | HTTP/1.1 400 Bad Request |
4216 | ... |
4217 | Only one of `distribution`, `distroseries` or `distroarchseries` can |
4218 | be present. |
4219 | |
4220 | - >>> print webservice.named_get( |
4221 | + >>> print(webservice.named_get( |
4222 | ... '/+hwdb', 'numDevicesInSubmissions', |
4223 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4224 | - ... distroseries=hoary_url, distroarchseries=hoary_i386_url |
4225 | - ... ) |
4226 | + ... distroseries=hoary_url, distroarchseries=hoary_i386_url)) |
4227 | HTTP/1.1 400 Bad Request |
4228 | ... |
4229 | Only one of `distribution`, `distroseries` or `distroarchseries` can |
4230 | @@ -1040,46 +1039,47 @@ |
4231 | distroseries or distroarchseries, if one of these parameters is |
4232 | specified. |
4233 | |
4234 | - >>> print webservice.named_get( |
4235 | + >>> print(webservice.named_get( |
4236 | ... '/+hwdb', 'numSubmissionsWithDevice', |
4237 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ' |
4238 | - ... ).jsonBody() |
4239 | + ... ).jsonBody()) |
4240 | {u'submissions_with_device': 1, u'all_submissions': 1} |
4241 | |
4242 | - >>> print webservice.named_get( |
4243 | - ... '/+hwdb', 'numSubmissionsWithDevice', driver_name='sd').jsonBody() |
4244 | + >>> print(webservice.named_get( |
4245 | + ... '/+hwdb', 'numSubmissionsWithDevice', |
4246 | + ... driver_name='sd').jsonBody()) |
4247 | {u'submissions_with_device': 1, u'all_submissions': 1} |
4248 | |
4249 | The parameters for a device and a driver can be combined. |
4250 | |
4251 | - >>> print webservice.named_get( |
4252 | + >>> print(webservice.named_get( |
4253 | ... '/+hwdb', 'numSubmissionsWithDevice', |
4254 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4255 | - ... driver_name='sd').jsonBody() |
4256 | + ... driver_name='sd').jsonBody()) |
4257 | {u'submissions_with_device': 1, u'all_submissions': 1} |
4258 | - >>> print webservice.named_get( |
4259 | + >>> print(webservice.named_get( |
4260 | ... '/+hwdb', 'numSubmissionsWithDevice', |
4261 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4262 | - ... driver_name='nonsense').jsonBody() |
4263 | + ... driver_name='nonsense').jsonBody()) |
4264 | {u'submissions_with_device': 0, u'all_submissions': 1} |
4265 | |
4266 | Additionally, a package_name can be passed. |
4267 | |
4268 | - >>> print webservice.named_get( |
4269 | + >>> print(webservice.named_get( |
4270 | ... '/+hwdb', 'numSubmissionsWithDevice', |
4271 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4272 | - ... package_name='linux-image-2.6.24-19-generic').jsonBody() |
4273 | + ... package_name='linux-image-2.6.24-19-generic').jsonBody()) |
4274 | {u'submissions_with_device': 1, u'all_submissions': 1} |
4275 | - >>> print webservice.named_get( |
4276 | + >>> print(webservice.named_get( |
4277 | ... '/+hwdb', 'numSubmissionsWithDevice', |
4278 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4279 | - ... package_name='nonsense').jsonBody() |
4280 | + ... package_name='nonsense').jsonBody()) |
4281 | {u'submissions_with_device': 0, u'all_submissions': 1} |
4282 | |
4283 | If neither a device nor a driver is specified, an error is returned. |
4284 | |
4285 | - >>> print webservice.named_get( |
4286 | - ... '/+hwdb', 'numSubmissionsWithDevice') |
4287 | + >>> print(webservice.named_get( |
4288 | + ... '/+hwdb', 'numSubmissionsWithDevice')) |
4289 | HTTP/1.1 400 Bad Request |
4290 | ... |
4291 | Specify (bus, vendor_id, product_id) or driver_name. |
4292 | @@ -1087,77 +1087,76 @@ |
4293 | The count can be limited to a distribution... |
4294 | |
4295 | >>> ubuntu_url = webservice.getAbsoluteUrl('/ubuntu') |
4296 | - >>> print webservice.named_get( |
4297 | + >>> print(webservice.named_get( |
4298 | ... '/+hwdb', 'numSubmissionsWithDevice', |
4299 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4300 | - ... distribution=ubuntu_url).jsonBody() |
4301 | + ... distribution=ubuntu_url).jsonBody()) |
4302 | {u'submissions_with_device': 1, u'all_submissions': 1} |
4303 | >>> debian_url = webservice.getAbsoluteUrl('/debian') |
4304 | - >>> print webservice.named_get( |
4305 | + >>> print(webservice.named_get( |
4306 | ... '/+hwdb', 'numSubmissionsWithDevice', |
4307 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4308 | - ... distribution=debian_url).jsonBody() |
4309 | + ... distribution=debian_url).jsonBody()) |
4310 | {u'submissions_with_device': 0, u'all_submissions': 0} |
4311 | |
4312 | ...or a distroseries... |
4313 | |
4314 | >>> hoary_url = webservice.getAbsoluteUrl('/ubuntu/hoary') |
4315 | - >>> print webservice.named_get( |
4316 | + >>> print(webservice.named_get( |
4317 | ... '/+hwdb', 'numSubmissionsWithDevice', |
4318 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4319 | - ... distroseries=hoary_url).jsonBody() |
4320 | + ... distroseries=hoary_url).jsonBody()) |
4321 | {u'submissions_with_device': 1, u'all_submissions': 1} |
4322 | >>> warty_url = webservice.getAbsoluteUrl('/ubuntu/warty') |
4323 | - >>> print webservice.named_get( |
4324 | + >>> print(webservice.named_get( |
4325 | ... '/+hwdb', 'numSubmissionsWithDevice', |
4326 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4327 | - ... distroseries=warty_url).jsonBody() |
4328 | + ... distroseries=warty_url).jsonBody()) |
4329 | {u'submissions_with_device': 0, u'all_submissions': 0} |
4330 | |
4331 | ...or a distroarchseries. |
4332 | |
4333 | >>> hoary_i386_url = webservice.getAbsoluteUrl('/ubuntu/hoary/i386') |
4334 | - >>> print webservice.named_get( |
4335 | + >>> print(webservice.named_get( |
4336 | ... '/+hwdb', 'numSubmissionsWithDevice', |
4337 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4338 | - ... distroarchseries=hoary_i386_url).jsonBody() |
4339 | + ... distroarchseries=hoary_i386_url).jsonBody()) |
4340 | {u'submissions_with_device': 1, u'all_submissions': 1} |
4341 | >>> hoary_hppa_url = webservice.getAbsoluteUrl('/ubuntu/hoary/hppa') |
4342 | - >>> print webservice.named_get( |
4343 | + >>> print(webservice.named_get( |
4344 | ... '/+hwdb', 'numSubmissionsWithDevice', |
4345 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4346 | - ... distroarchseries=hoary_hppa_url).jsonBody() |
4347 | + ... distroarchseries=hoary_hppa_url).jsonBody()) |
4348 | {u'submissions_with_device': 0, u'all_submissions': 0} |
4349 | |
4350 | But at most one of the parameters distribution, distroseries, |
4351 | distroarchseries may be specified. |
4352 | |
4353 | - >>> print webservice.named_get( |
4354 | + >>> print(webservice.named_get( |
4355 | ... '/+hwdb', 'numSubmissionsWithDevice', |
4356 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4357 | - ... distribution=ubuntu_url, distroseries=hoary_url) |
4358 | + ... distribution=ubuntu_url, distroseries=hoary_url)) |
4359 | ... |
4360 | HTTP/1.1 400 Bad Request |
4361 | ... |
4362 | Only one of `distribution`, `distroseries` or `distroarchseries` can |
4363 | be present. |
4364 | |
4365 | - >>> print webservice.named_get( |
4366 | + >>> print(webservice.named_get( |
4367 | ... '/+hwdb', 'numSubmissionsWithDevice', |
4368 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4369 | ... distribution=ubuntu_url, |
4370 | - ... distroarchseries=hoary_i386_url) |
4371 | + ... distroarchseries=hoary_i386_url)) |
4372 | ... |
4373 | HTTP/1.1 400 Bad Request |
4374 | ... |
4375 | Only one of `distribution`, `distroseries` or `distroarchseries` can |
4376 | be present. |
4377 | |
4378 | - >>> print webservice.named_get( |
4379 | + >>> print(webservice.named_get( |
4380 | ... '/+hwdb', 'numSubmissionsWithDevice', |
4381 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4382 | - ... distroseries=hoary_url, distroarchseries=hoary_i386_url |
4383 | - ... ) |
4384 | + ... distroseries=hoary_url, distroarchseries=hoary_i386_url)) |
4385 | HTTP/1.1 400 Bad Request |
4386 | ... |
4387 | Only one of `distribution`, `distroseries` or `distroarchseries` can |
4388 | @@ -1170,123 +1169,122 @@ |
4389 | the given distribution, distroseries or distroarchseries, if one |
4390 | of these parameters is specified. |
4391 | |
4392 | - >>> print webservice.named_get( |
4393 | + >>> print(webservice.named_get( |
4394 | ... '/+hwdb', 'numOwnersOfDevice', |
4395 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ' |
4396 | - ... ).jsonBody() |
4397 | + ... ).jsonBody()) |
4398 | {u'owners': 1, u'all_submitters': 1} |
4399 | |
4400 | - >>> print webservice.named_get( |
4401 | - ... '/+hwdb', 'numOwnersOfDevice', driver_name='sd').jsonBody() |
4402 | + >>> print(webservice.named_get( |
4403 | + ... '/+hwdb', 'numOwnersOfDevice', driver_name='sd').jsonBody()) |
4404 | {u'owners': 1, u'all_submitters': 1} |
4405 | |
4406 | A device and a driver can be specified simultaneously. |
4407 | |
4408 | - >>> print webservice.named_get( |
4409 | + >>> print(webservice.named_get( |
4410 | ... '/+hwdb', 'numOwnersOfDevice', |
4411 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4412 | - ... driver_name='sd').jsonBody() |
4413 | + ... driver_name='sd').jsonBody()) |
4414 | {u'owners': 1, u'all_submitters': 1} |
4415 | - >>> print webservice.named_get( |
4416 | + >>> print(webservice.named_get( |
4417 | ... '/+hwdb', 'numOwnersOfDevice', |
4418 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4419 | - ... driver_name='nonsense').jsonBody() |
4420 | + ... driver_name='nonsense').jsonBody()) |
4421 | {u'owners': 0, u'all_submitters': 1} |
4422 | |
4423 | Specifying neiher a device nor a driver leads to an error. |
4424 | |
4425 | - >>> print webservice.named_get('/+hwdb', 'numOwnersOfDevice') |
4426 | + >>> print(webservice.named_get('/+hwdb', 'numOwnersOfDevice')) |
4427 | HTTP/1.1 400 Bad Request |
4428 | ... |
4429 | Specify (bus, vendor_id, product_id) or driver_name. |
4430 | |
4431 | Additionally, a package_name can be passed... |
4432 | |
4433 | - >>> print webservice.named_get( |
4434 | + >>> print(webservice.named_get( |
4435 | ... '/+hwdb', 'numOwnersOfDevice', |
4436 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4437 | - ... package_name='linux-image-2.6.24-19-generic').jsonBody() |
4438 | + ... package_name='linux-image-2.6.24-19-generic').jsonBody()) |
4439 | {u'owners': 1, u'all_submitters': 1} |
4440 | - >>> print webservice.named_get( |
4441 | + >>> print(webservice.named_get( |
4442 | ... '/+hwdb', 'numOwnersOfDevice', |
4443 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4444 | - ... package_name='nonsense').jsonBody() |
4445 | + ... package_name='nonsense').jsonBody()) |
4446 | {u'owners': 0, u'all_submitters': 1} |
4447 | |
4448 | ...a reference to a distribution... |
4449 | |
4450 | >>> ubuntu_url = webservice.getAbsoluteUrl('/ubuntu') |
4451 | - >>> print webservice.named_get( |
4452 | + >>> print(webservice.named_get( |
4453 | ... '/+hwdb', 'numOwnersOfDevice', |
4454 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4455 | - ... distribution=ubuntu_url).jsonBody() |
4456 | + ... distribution=ubuntu_url).jsonBody()) |
4457 | {u'owners': 1, u'all_submitters': 1} |
4458 | >>> debian_url = webservice.getAbsoluteUrl('/debian') |
4459 | - >>> print webservice.named_get( |
4460 | + >>> print(webservice.named_get( |
4461 | ... '/+hwdb', 'numOwnersOfDevice', |
4462 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4463 | - ... distribution=debian_url).jsonBody() |
4464 | + ... distribution=debian_url).jsonBody()) |
4465 | {u'owners': 0, u'all_submitters': 0} |
4466 | |
4467 | ...a reference to a distroseries... |
4468 | |
4469 | >>> hoary_url = webservice.getAbsoluteUrl('/ubuntu/hoary') |
4470 | - >>> print webservice.named_get( |
4471 | + >>> print(webservice.named_get( |
4472 | ... '/+hwdb', 'numOwnersOfDevice', |
4473 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4474 | - ... distroseries=hoary_url).jsonBody() |
4475 | + ... distroseries=hoary_url).jsonBody()) |
4476 | {u'owners': 1, u'all_submitters': 1} |
4477 | >>> warty_url = webservice.getAbsoluteUrl('/ubuntu/warty') |
4478 | - >>> print webservice.named_get( |
4479 | + >>> print(webservice.named_get( |
4480 | ... '/+hwdb', 'numOwnersOfDevice', |
4481 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4482 | - ... distroseries=warty_url).jsonBody() |
4483 | + ... distroseries=warty_url).jsonBody()) |
4484 | {u'owners': 0, u'all_submitters': 0} |
4485 | |
4486 | ...or a reference to a distroarchseries. |
4487 | |
4488 | >>> hoary_i386_url = webservice.getAbsoluteUrl('/ubuntu/hoary/i386') |
4489 | - >>> print webservice.named_get( |
4490 | + >>> print(webservice.named_get( |
4491 | ... '/+hwdb', 'numOwnersOfDevice', |
4492 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4493 | - ... distroarchseries=hoary_i386_url).jsonBody() |
4494 | + ... distroarchseries=hoary_i386_url).jsonBody()) |
4495 | {u'owners': 1, u'all_submitters': 1} |
4496 | >>> hoary_hppa_url = webservice.getAbsoluteUrl('/ubuntu/hoary/hppa') |
4497 | - >>> print webservice.named_get( |
4498 | + >>> print(webservice.named_get( |
4499 | ... '/+hwdb', 'numOwnersOfDevice', |
4500 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4501 | - ... distroarchseries=hoary_hppa_url).jsonBody() |
4502 | + ... distroarchseries=hoary_hppa_url).jsonBody()) |
4503 | {u'owners': 0, u'all_submitters': 0} |
4504 | |
4505 | But at most one of the parameters distribution, distroseries, |
4506 | distroarchseries may be specified. |
4507 | |
4508 | - >>> print webservice.named_get( |
4509 | + >>> print(webservice.named_get( |
4510 | ... '/+hwdb', 'numOwnersOfDevice', |
4511 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4512 | - ... distribution=ubuntu_url, distroseries=hoary_url) |
4513 | + ... distribution=ubuntu_url, distroseries=hoary_url)) |
4514 | ... |
4515 | HTTP/1.1 400 Bad Request |
4516 | ... |
4517 | Only one of `distribution`, `distroseries` or `distroarchseries` can |
4518 | be present. |
4519 | |
4520 | - >>> print webservice.named_get( |
4521 | + >>> print(webservice.named_get( |
4522 | ... '/+hwdb', 'numOwnersOfDevice', |
4523 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4524 | ... distribution=ubuntu_url, |
4525 | - ... distroarchseries=hoary_i386_url) |
4526 | + ... distroarchseries=hoary_i386_url)) |
4527 | ... |
4528 | HTTP/1.1 400 Bad Request |
4529 | ... |
4530 | Only one of `distribution`, `distroseries` or `distroarchseries` can |
4531 | be present. |
4532 | |
4533 | - >>> print webservice.named_get( |
4534 | + >>> print(webservice.named_get( |
4535 | ... '/+hwdb', 'numOwnersOfDevice', |
4536 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4537 | - ... distroseries=hoary_url, distroarchseries=hoary_i386_url |
4538 | - ... ) |
4539 | + ... distroseries=hoary_url, distroarchseries=hoary_i386_url)) |
4540 | HTTP/1.1 400 Bad Request |
4541 | ... |
4542 | Only one of `distribution`, `distroseries` or `distroarchseries` can |
4543 | @@ -1305,7 +1303,7 @@ |
4544 | ... '/+hwdb', 'deviceDriverOwnersAffectedByBugs', |
4545 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4546 | ... bug_ids=[1]).jsonBody()['entries']: |
4547 | - ... print person['display_name'] |
4548 | + ... print(person['display_name']) |
4549 | Sample Person |
4550 | |
4551 | We can additionally ask for bugsubscribers... |
4552 | @@ -1314,7 +1312,7 @@ |
4553 | ... '/+hwdb', 'deviceDriverOwnersAffectedByBugs', |
4554 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4555 | ... bug_ids=[9], subscribed_to_bug=True).jsonBody()['entries']: |
4556 | - ... print person['display_name'] |
4557 | + ... print(person['display_name']) |
4558 | Sample Person |
4559 | |
4560 | or users affected by a bug. |
4561 | @@ -1335,7 +1333,7 @@ |
4562 | ... '/+hwdb', 'deviceDriverOwnersAffectedByBugs', |
4563 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4564 | ... bug_ids=[15], affected_by_bug=True).jsonBody()['entries']: |
4565 | - ... print person['display_name'] |
4566 | + ... print(person['display_name']) |
4567 | Sample Person |
4568 | |
4569 | We can limit the search to a driver... |
4570 | @@ -1344,14 +1342,14 @@ |
4571 | ... '/+hwdb', 'deviceDriverOwnersAffectedByBugs', |
4572 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4573 | ... bug_ids=[1], driver_name='sd').jsonBody()['entries']: |
4574 | - ... print person['display_name'] |
4575 | + ... print(person['display_name']) |
4576 | Sample Person |
4577 | |
4578 | - >>> print webservice.named_get( |
4579 | + >>> print(webservice.named_get( |
4580 | ... '/+hwdb', 'deviceDriverOwnersAffectedByBugs', |
4581 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4582 | ... bug_ids=[9], driver_name='nonsense', subscribed_to_bug=True |
4583 | - ... ).jsonBody()['total_size'] |
4584 | + ... ).jsonBody()['total_size']) |
4585 | 0 |
4586 | |
4587 | ...or a package name. |
4588 | @@ -1361,14 +1359,14 @@ |
4589 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4590 | ... bug_ids=[1], package_name='linux-image-2.6.24-19-generic' |
4591 | ... ).jsonBody()['entries']: |
4592 | - ... print person['display_name'] |
4593 | + ... print(person['display_name']) |
4594 | Sample Person |
4595 | |
4596 | - >>> print webservice.named_get( |
4597 | + >>> print(webservice.named_get( |
4598 | ... '/+hwdb', 'deviceDriverOwnersAffectedByBugs', |
4599 | ... bus='IDE', vendor_id='SEAGATE', product_id='ST3250820NS ', |
4600 | ... bug_ids=[9], package_name='nonsense', subscribed_to_bug=True |
4601 | - ... ).jsonBody()['total_size'] |
4602 | + ... ).jsonBody()['total_size']) |
4603 | 0 |
4604 | |
4605 | And we can search for people using a given driver and being affected by |
4606 | @@ -1377,18 +1375,18 @@ |
4607 | >>> for person in webservice.named_get( |
4608 | ... '/+hwdb', 'deviceDriverOwnersAffectedByBugs', |
4609 | ... driver_name='sd', bug_ids=[1]).jsonBody()['entries']: |
4610 | - ... print person['display_name'] |
4611 | + ... print(person['display_name']) |
4612 | Sample Person |
4613 | |
4614 | - >>> print webservice.named_get( |
4615 | + >>> print(webservice.named_get( |
4616 | ... '/+hwdb', 'deviceDriverOwnersAffectedByBugs', |
4617 | - ... driver_name='nonsense', bug_ids=[1]).jsonBody()['total_size'] |
4618 | + ... driver_name='nonsense', bug_ids=[1]).jsonBody()['total_size']) |
4619 | 0 |
4620 | |
4621 | A 400 error is returned, if neither a device nor a driver name is specified. |
4622 | |
4623 | - >>> print webservice.named_get( |
4624 | - ... '/+hwdb', 'deviceDriverOwnersAffectedByBugs', bug_ids=[1]) |
4625 | + >>> print(webservice.named_get( |
4626 | + ... '/+hwdb', 'deviceDriverOwnersAffectedByBugs', bug_ids=[1])) |
4627 | HTTP/1.1 400 Bad Request |
4628 | ... |
4629 | Specify (bus, vendor_id, product_id) or driver_name. |
4630 | @@ -1396,9 +1394,9 @@ |
4631 | If one of the parameters bus, vendor_id, product_id is specified, all of |
4632 | them have to be specified. |
4633 | |
4634 | - >>> print webservice.named_get( |
4635 | + >>> print(webservice.named_get( |
4636 | ... '/+hwdb', 'deviceDriverOwnersAffectedByBugs', |
4637 | - ... bus='IDE', bug_ids=[1]) |
4638 | + ... bus='IDE', bug_ids=[1])) |
4639 | HTTP/1.1 400 Bad Request |
4640 | ... |
4641 | Either specify bus, vendor_id and product_id or none of them. |
4642 | @@ -1409,7 +1407,7 @@ |
4643 | >>> for entry in webservice.named_get( |
4644 | ... '/+hwdb', 'hwInfoByBugRelatedUsers', |
4645 | ... bug_ids=[1]).jsonBody(): |
4646 | - ... print entry |
4647 | + ... print(entry) |
4648 | [u'name12', u'IDE', u'Optiarc', u'DVD RW AD-7170S '] |
4649 | [u'name12', u'IDE', u'SEAGATE', u'ST3250820NS '] |
4650 | [u'name12', u'PCI', u'0x10de', u'0x0455'] |
4651 | @@ -1424,7 +1422,7 @@ |
4652 | >>> for entry in webservice.named_get( |
4653 | ... '/+hwdb', 'hwInfoByBugRelatedUsers', |
4654 | ... bug_ids=[9], subscribed_to_bug=True).jsonBody(): |
4655 | - ... print entry |
4656 | + ... print(entry) |
4657 | [u'name12', u'IDE', u'Optiarc', u'DVD RW AD-7170S '] |
4658 | [u'name12', u'IDE', u'SEAGATE', u'ST3250820NS '] |
4659 | [u'name12', u'PCI', u'0x10de', u'0x0455'] |
4660 | @@ -1438,7 +1436,7 @@ |
4661 | >>> for entry in webservice.named_get( |
4662 | ... '/+hwdb', 'hwInfoByBugRelatedUsers', |
4663 | ... bug_ids=[15], affected_by_bug=True).jsonBody(): |
4664 | - ... print entry |
4665 | + ... print(entry) |
4666 | [u'name12', u'IDE', u'Optiarc', u'DVD RW AD-7170S '] |
4667 | [u'name12', u'IDE', u'SEAGATE', u'ST3250820NS '] |
4668 | [u'name12', u'PCI', u'0x10de', u'0x0455'] |
4669 | |
4670 | === modified file 'lib/lp/hardwaredb/tests/test_doc.py' |
4671 | --- lib/lp/hardwaredb/tests/test_doc.py 2012-01-20 15:42:44 +0000 |
4672 | +++ lib/lp/hardwaredb/tests/test_doc.py 2019-04-16 17:27:23 +0000 |
4673 | @@ -5,6 +5,8 @@ |
4674 | Run the doctests and pagetests. |
4675 | """ |
4676 | |
4677 | +from __future__ import absolute_import, print_function, unicode_literals |
4678 | + |
4679 | import os |
4680 | |
4681 | from lp.services.testing import build_test_suite |
4682 | @@ -13,6 +15,7 @@ |
4683 | LaunchpadFunctionalLayer, |
4684 | LaunchpadZopelessLayer, |
4685 | ) |
4686 | +from lp.testing.pages import setUpGlobs |
4687 | from lp.testing.systemdocs import ( |
4688 | LayeredDocFileSuite, |
4689 | setUp, |
4690 | @@ -24,7 +27,7 @@ |
4691 | |
4692 | |
4693 | def hwdbDeviceTablesSetup(test): |
4694 | - setUp(test) |
4695 | + setUp(test, future=True) |
4696 | switch_dbuser('hwdb-submission-processor') |
4697 | |
4698 | |
4699 | @@ -38,4 +41,7 @@ |
4700 | |
4701 | |
4702 | def test_suite(): |
4703 | - return build_test_suite(here, special, layer=LaunchpadFunctionalLayer) |
4704 | + return build_test_suite( |
4705 | + here, special, layer=LaunchpadFunctionalLayer, |
4706 | + setUp=lambda test: setUp(test, future=True), |
4707 | + pageTestsSetUp=lambda test: setUpGlobs(test, future=True)) |
4708 | |
4709 | === modified file 'lib/lp/hardwaredb/tests/test_hwdb_submission_validation.py' |
4710 | --- lib/lp/hardwaredb/tests/test_hwdb_submission_validation.py 2012-01-01 02:58:52 +0000 |
4711 | +++ lib/lp/hardwaredb/tests/test_hwdb_submission_validation.py 2019-04-16 17:27:23 +0000 |
4712 | @@ -3,6 +3,8 @@ |
4713 | |
4714 | """Tests of the HWDB submissions parser.""" |
4715 | |
4716 | +from __future__ import absolute_import, print_function, unicode_literals |
4717 | + |
4718 | from datetime import datetime |
4719 | import logging |
4720 | import os |
4721 | @@ -36,6 +38,8 @@ |
4722 | config.root, 'lib', 'lp', 'hardwaredb', 'scripts', |
4723 | 'tests', 'hardwaretest.xml') |
4724 | self.sample_data = open(sample_data_path).read() |
4725 | + if isinstance(self.sample_data, bytes): |
4726 | + self.sample_data = self.sample_data.decode('UTF-8') |
4727 | |
4728 | def runValidator(self, sample_data): |
4729 | """Run the Relax NG validator. |
4730 | @@ -44,6 +48,8 @@ |
4731 | expected in a test is indeed created by this test. |
4732 | """ |
4733 | self.submission_count += 1 |
4734 | + if not isinstance(sample_data, bytes): |
4735 | + sample_data = sample_data.encode('UTF-8') |
4736 | submission_id = 'submission_%i' % self.submission_count |
4737 | result = SubmissionParser(self.log)._getValidatedEtree(sample_data, |
4738 | submission_id) |
4739 | @@ -165,7 +171,7 @@ |
4740 | data=self.sample_data, |
4741 | replace_text='<?xml version="1.0" encoding="%s"?>' % encoding, |
4742 | from_text='<?xml', |
4743 | - to_text='?>') |
4744 | + to_text='?>').encode(encoding) |
4745 | |
4746 | def testAsciiEncoding(self): |
4747 | """Validation of ASCII encoded XML data. |
4748 | @@ -182,8 +188,8 @@ |
4749 | sample_data = self.replaceSampledata( |
4750 | data=sample_data_ascii_encoded, |
4751 | replace_text=tag_with_umlaut, |
4752 | - from_text='<architecture', |
4753 | - to_text='/>') |
4754 | + from_text=b'<architecture', |
4755 | + to_text=b'/>') |
4756 | result, submission_id = self.runValidator(sample_data) |
4757 | self.assertEqual(result, None, |
4758 | 'Invalid submission with ASCII encoding accepted') |
4759 | @@ -196,12 +202,12 @@ |
4760 | def testISO8859_1_Encoding(self): |
4761 | """XML data with ISO-8859-1 may have bytes with bit 7 set.""" |
4762 | sample_data_iso_8859_1_encoded = self._setEncoding('ISO-8859-1') |
4763 | - tag_with_umlaut = '<architecture value="\xc4"/>' |
4764 | + tag_with_umlaut = b'<architecture value="\xc4"/>' |
4765 | sample_data = self.replaceSampledata( |
4766 | data=sample_data_iso_8859_1_encoded, |
4767 | replace_text=tag_with_umlaut, |
4768 | - from_text='<architecture', |
4769 | - to_text='/>') |
4770 | + from_text=b'<architecture', |
4771 | + to_text=b'/>') |
4772 | result, submission_id = self.runValidator(sample_data) |
4773 | self.assertNotEqual(result, None, |
4774 | 'Valid submission with ISO-8859-1 encoding ' |
4775 | @@ -211,24 +217,24 @@ |
4776 | """UTF-8 encoded data is properly detected and parsed.""" |
4777 | sample_data_utf8_encoded = self._setEncoding('UTF-8') |
4778 | umlaut = u'\xc4'.encode('utf8') |
4779 | - tag = '<architecture value="%s"/>' |
4780 | + tag = b'<architecture value="%s"/>' |
4781 | tag_with_valid_utf8 = tag % umlaut |
4782 | sample_data = self.replaceSampledata( |
4783 | data=sample_data_utf8_encoded, |
4784 | replace_text=tag_with_valid_utf8, |
4785 | - from_text='<architecture', |
4786 | - to_text='/>') |
4787 | + from_text=b'<architecture', |
4788 | + to_text=b'/>') |
4789 | result, submission_id = self.runValidator(sample_data) |
4790 | self.assertNotEqual(result, None, |
4791 | 'Valid submission with UTF-8 encoding rejected') |
4792 | |
4793 | # Broken UTF8 encoding is detected. |
4794 | - tag_with_broken_utf8 = tag % umlaut[0] |
4795 | + tag_with_broken_utf8 = tag % umlaut[:1] |
4796 | sample_data = self.replaceSampledata( |
4797 | data=tag_with_broken_utf8, |
4798 | replace_text=tag_with_broken_utf8, |
4799 | - from_text='<architecture', |
4800 | - to_text='/>') |
4801 | + from_text=b'<architecture', |
4802 | + to_text=b'/>') |
4803 | result, submission_id = self.runValidator(sample_data) |
4804 | self.assertEqual(result, None, |
4805 | 'Invalid submissison with UTF-8 encoding accepted') |