Files
linux/debian/lib/python/debian_linux/firmware.py
Ben Hutchings af0098b10a debian/bin, debian/lib/python: Fix most errors reported by pycodestyle
Fix coding style violations reported by pycodestyle.  This is
mostly a matter of reformatting code, particularly to eliminate
over-long lines.  I also rename one variable ("l" is considered
visually ambiguous) and change a bare "except" to explicitly
catch all exceptions.

There are three types of error or warning remaining:

- debian/bin/...: E402 module level import not at top of file
  Scripts in debian/bin need to modify the import path before
  importing from debian/lib/python.
- E127 continuation line over-indented for visual indent
  This seems to be a false positive.  pycodestyle doesn't seem to be
  happy with any level of indent (including 0) on a continuation line
  in a "with" statement.
- debian/lib/python/debian_linux/debian.py:15:2: W291 trailing whitespace
  This is a false positive.  The trailing spaces are in a long
  string and are intentional.
2018-10-01 21:41:23 +01:00

91 lines
2.9 KiB
Python

import re
class FirmwareFile(object):
def __init__(self, binary, desc=None, source=None, version=None):
self.binary = binary
self.desc = desc
self.source = source
self.version = version
class FirmwareSection(object):
def __init__(self, driver, files, licence):
self.driver = driver
self.files = files
self.licence = licence
class FirmwareWhence(list):
def __init__(self, file):
self.read(file)
def read(self, file):
in_header = True
driver = None
files = {}
licence = None
binary = []
desc = None
source = []
version = None
for line in file:
if line.startswith('----------'):
if in_header:
in_header = False
else:
# Finish old section
if driver:
self.append(FirmwareSection(driver, files, licence))
driver = None
files = {}
licence = None
continue
if in_header:
continue
if line == '\n':
# End of field; end of file fields
for b in binary:
# XXX The WHENCE file isn't yet consistent in its
# association of binaries and their sources and
# metadata. This associates all sources and
# metadata in a group with each binary.
files[b] = FirmwareFile(b, desc, source, version)
binary = []
desc = None
source = []
version = None
continue
match = re.match(
r'(Driver|File|Info|Licen[cs]e|Source|Version'
r'|Original licen[cs]e info(?:rmation)?):\s*(.*)\n',
line)
if match:
keyword, value = match.group(1, 2)
if keyword == 'Driver':
driver = value.split(' ')[0].lower()
elif keyword == 'File':
match = re.match(r'(\S+)(?:\s+--\s+(.*))?', value)
binary.append(match.group(1))
desc = match.group(2)
elif keyword in ['Info', 'Version']:
version = value
elif keyword == 'Source':
source.append(value)
else:
licence = value
elif licence is not None:
licence = (licence + '\n' +
re.sub(r'^(?:[/ ]\*| \*/)?\s*(.*?)\s*$', r'\1',
line))
# Finish last section if non-empty
for b in binary:
files[b] = FirmwareFile(b, desc, source, version)
if driver:
self.append(FirmwareSection(driver, files, licence))