From: "Bjorge, Erik C" <erik.c.bjorge@intel.com>
To: devel@edk2.groups.io
Cc: Ashley E Desimone <ashley.e.desimone@intel.com>,
Nate DeSimone <nathaniel.l.desimone@intel.com>,
Puja Pandya <puja.pandya@intel.com>,
Bret Barkelew <Bret.Barkelew@microsoft.com>,
Prince Agyeman <prince.agyeman@intel.com>
Subject: [edk2-staging/EdkRepo] [PATCH v1 1/3] EdkRepo: Flake8 cleanup
Date: Thu, 30 Apr 2020 15:52:52 -0700 [thread overview]
Message-ID: <c24f50363696b6c57c96f171bf85e01ae654107c.1588286715.git.erik.c.bjorge@intel.com> (raw)
In-Reply-To: <cover.1588286715.git.erik.c.bjorge@intel.com>
Just cleaning up the file to meet Flake8 expectations.
Signed-off-by: Erik Bjorge <erik.c.bjorge@intel.com>
Cc: Ashley E Desimone <ashley.e.desimone@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Puja Pandya <puja.pandya@intel.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>
---
edkrepo_manifest_parser/edk_manifest.py | 159 ++++++++++++++----------
1 file changed, 94 insertions(+), 65 deletions(-)
diff --git a/edkrepo_manifest_parser/edk_manifest.py b/edkrepo_manifest_parser/edk_manifest.py
index 080448f..7e5f0fb 100644
--- a/edkrepo_manifest_parser/edk_manifest.py
+++ b/edkrepo_manifest_parser/edk_manifest.py
@@ -25,19 +25,22 @@ GeneralConfig = namedtuple('GeneralConfig', ['default_combo', 'current_combo', '
RemoteRepo = namedtuple('RemoteRepo', ['name', 'url'])
RepoHook = namedtuple('RepoHook', ['source', 'dest_path', 'dest_file', 'remote_url'])
Combination = namedtuple('Combination', ['name', 'description'])
-RepoSource = namedtuple('RepoSource', ['root', 'remote_name', 'remote_url', 'branch', 'commit', 'sparse', 'enable_submodule', 'tag'])
+RepoSource = namedtuple('RepoSource', ['root', 'remote_name', 'remote_url', 'branch', 'commit', 'sparse',
+ 'enable_submodule', 'tag'])
SparseSettings = namedtuple('SparseSettings', ['sparse_by_default'])
SparseData = namedtuple('SparseData', ['combination', 'remote_name', 'always_include', 'always_exclude'])
FolderToFolderMapping = namedtuple('FolderToFolderMapping', ['project1', 'project2', 'remote_name', 'folders'])
-FolderToFolderMappingFolder = namedtuple('FolderToFolderMappingFolder', ['project1_folder', 'project2_folder', 'excludes'])
+FolderToFolderMappingFolder = namedtuple('FolderToFolderMappingFolder', ['project1_folder', 'project2_folder',
+ 'excludes'])
FolderToFolderMappingFolderExclude = namedtuple('FolderToFolderMappingFolderExclude', ['path'])
SubmoduleAlternateRemote = namedtuple('SubmoduleAlternateRemote', ['remote_name', 'original_url', 'alternate_url'])
REQUIRED_ATTRIB_ERROR_MSG = "Required attribute malformed in <{}>: {}"
-NO_ASSOCIATED_REMOTE = 'There are no remotes associated with the ClientGitHook entry: \nsource:{} destination:{} \nThis hook will not be installed, updated or deleted.\n'
+NO_ASSOCIATED_REMOTE = 'There are no remotes associated with the ClientGitHook entry:\nsource:{} destination:{}' \
+ '\nThis hook will not be installed, updated or deleted.\n'
NO_REMOTE_EXISTS_WITH_NAME = 'There are no remotes with the name: {} listed in the manifest file.'
PIN_COMB_ERROR = "Pin \"{}\" Pin did not have a single <Combination> tag."
DUPLICATE_TAG_ERROR = "Duplicate <{}> tag not allowed: '{}' (Note: check <include>'s"
@@ -50,12 +53,13 @@ INVALID_PROJECTNAME_ERROR = "Invalid input: {} not found in CiIndexXml"
UNSUPPORTED_TYPE_ERROR = "{} is not a supported xml type: {}"
INVALID_XML_ERROR = "{} is not a valid xml file"
+
class BaseXmlHelper():
def __init__(self, fileref, xml_types):
self._fileref = fileref
try:
- self._tree = ET.ElementTree(file=fileref) #fileref can be a filename or filestream
- except:
+ self._tree = ET.ElementTree(file=fileref) # fileref can be a filename or filestream
+ except Exception:
raise TypeError(INVALID_XML_ERROR.format(fileref))
self._xml_type = self._tree.getroot().tag
@@ -97,6 +101,7 @@ class CiIndexXml(BaseXmlHelper):
else:
raise ValueError(INVALID_PROJECTNAME_ERROR.format(project_name))
+
class _Project():
def __init__(self, element):
try:
@@ -105,33 +110,33 @@ class _Project():
except KeyError as k:
raise KeyError(REQUIRED_ATTRIB_ERROR_MSG.format(k, element.tag))
try:
- #if the archived attrib is not explicitly set to true, then assume false
+ # if the archived attrib is not explicitly set to true, then assume false
self.archived = (element.attrib['archived'].lower() == 'true')
- except:
+ except Exception:
self.archived = False
+
#
# This class will parse and the manifest XML file and populate the named
# tuples defined above to provide abstracted access to the manifest data
#
class ManifestXml(BaseXmlHelper):
def __init__(self, fileref):
-
# Most of the attributes of this class are intended to be private as they are used for
# internally gathering and storing the manifest data. As such, all access to them should be
# done through the provided methods to ensure future compatibility if the xml schema changes
super().__init__(fileref, ['Pin', 'Manifest'])
self.__project_info = None
self.__general_config = None
- self.__remotes = {} #dict of _Remote objs, with Remote.name as key
+ self.__remotes = {} # dict of _Remote objs, with Remote.name as key
self.__client_hook_list = []
- self.__combinations = {} #dict of _Combination objs, with Combination.name as key
- self.__combo_sources = {} #dict of _RepoSource obj lists, with Combination.name as key
+ self.__combinations = {} # dict of _Combination objs, with Combination.name as key
+ self.__combo_sources = {} # dict of _RepoSource obj lists, with Combination.name as key
self.__dsc_list = []
- self.__sparse_settings = None # A single instance of platform sparse checkout settings
- self.__sparse_data = [] # List of SparseData objects
- self.__commit_templates = {} #dict of commit message templates with the remote name as the key
- self.__folder_to_folder_mappings = [] # List of FolderToFolderMapping objects
+ self.__sparse_settings = None # A single instance of platform sparse checkout settings
+ self.__sparse_data = [] # List of SparseData objects
+ self.__commit_templates = {} # dict of commit message templates with the remote name as the key
+ self.__folder_to_folder_mappings = [] # List of FolderToFolderMapping objects
self.__submodule_alternate_remotes = []
#
@@ -143,12 +148,12 @@ class ManifestXml(BaseXmlHelper):
incl_file = os.path.join(incl_path, include_elem.attrib['xml'])
try:
include_tree = ET.ElementTree(file=incl_file)
- except:
+ except Exception:
raise TypeError("{} is not a valid xml file".format(incl_file))
for elem in include_tree.iterfind('*'):
if elem.tag != 'ProjectInfo' and elem.tag != 'GeneralConfig':
tree_root.append(elem)
- #remove include tags after added to etree to prevent feedback issues
+ # remove include tags after added to etree to prevent feedback issues
tree_root.remove(include_elem)
#
@@ -388,7 +393,7 @@ class ManifestXml(BaseXmlHelper):
# Note: It will also strip all the comments from the file
#
if self._xml_type == 'Pin':
- #raise Warning("This method is not supported for Pin xmls")
+ # raise Warning("This method is not supported for Pin xmls")
return
if filename is None:
filename = self._fileref
@@ -444,12 +449,12 @@ class ManifestXml(BaseXmlHelper):
# Only one of Branch or SHA is required to write PIN and checkout code
for src_tuple in repo_source_list:
if (src_tuple.root is None or src_tuple.remote_name is None or src_tuple.remote_url is
- None or (src_tuple.commit is None and src_tuple.branch is None and src_tuple.tag is None)):
+ None or (src_tuple.commit is None and src_tuple.branch is None and src_tuple.tag is None)):
raise ValueError("Invalid input: empty values in source list")
# the data to create the remote elements could also be retrieved
# from __remotes, but this is easier
- elem = ET.SubElement(remote_root, 'Remote', {'name' : src_tuple.remote_name})
+ elem = ET.SubElement(remote_root, 'Remote', {'name': src_tuple.remote_name})
elem.text = src_tuple.remote_url
elem.tail = '\n '
@@ -469,22 +474,33 @@ class ManifestXml(BaseXmlHelper):
if src_tuple.commit:
if src_tuple.branch:
if src_tuple.tag:
- elem = ET.SubElement(source_root, 'Source', {'localRoot':src_tuple.root, 'remote':src_tuple.remote_name,
- 'branch':src_tuple.branch, 'commit':src_tuple.commit,
- 'sparseCheckout':sparse, 'enable_submodule':sub,
- 'tag':src_tuple.tag})
+ elem = ET.SubElement(source_root, 'Source', {'localRoot': src_tuple.root,
+ 'remote': src_tuple.remote_name,
+ 'branch': src_tuple.branch,
+ 'commit': src_tuple.commit,
+ 'sparseCheckout': sparse,
+ 'enable_submodule': sub,
+ 'tag': src_tuple.tag})
else:
- elem = ET.SubElement(source_root, 'Source', {'localRoot':src_tuple.root, 'remote':src_tuple.remote_name,
- 'branch':src_tuple.branch, 'commit':src_tuple.commit,
- 'sparseCheckout':sparse, 'enable_submodule':sub})
+ elem = ET.SubElement(source_root, 'Source', {'localRoot': src_tuple.root,
+ 'remote': src_tuple.remote_name,
+ 'branch': src_tuple.branch,
+ 'commit': src_tuple.commit,
+ 'sparseCheckout': sparse,
+ 'enable_submodule': sub})
elif src_tuple.branch is None and src_tuple.tag:
- elem = ET.SubElement(source_root, 'Source', {'localRoot':src_tuple.root, 'remote':src_tuple.remote_name,
- 'commit':src_tuple.commit,'sparseCheckout':sparse,
- 'enable_submodule':sub, 'tag':src_tuple.tag})
+ elem = ET.SubElement(source_root, 'Source', {'localRoot': src_tuple.root,
+ 'remote': src_tuple.remote_name,
+ 'commit': src_tuple.commit,
+ 'sparseCheckout': sparse,
+ 'enable_submodule': sub,
+ 'tag': src_tuple.tag})
elif src_tuple.branch is None and src_tuple.tag is None:
- elem = ET.SubElement(source_root, 'Source', {'localRoot':src_tuple.root, 'remote':src_tuple.remote_name,
- 'commit':src_tuple.commit,'sparseCheckout':sparse,
- 'enable_submodule':sub})
+ elem = ET.SubElement(source_root, 'Source', {'localRoot': src_tuple.root,
+ 'remote': src_tuple.remote_name,
+ 'commit': src_tuple.commit,
+ 'sparseCheckout': sparse,
+ 'enable_submodule': sub})
else:
raise ValueError('Pin.xml cannot be generated with an empty commit value')
@@ -552,9 +568,9 @@ class ManifestXml(BaseXmlHelper):
def __ne__(self, other):
return not self.__eq__(other)
+
class _ProjectInfo():
def __init__(self, element):
-
try:
self.codename = element.find('CodeName').text
self.descript = element.find('Description').text
@@ -565,17 +581,17 @@ class _ProjectInfo():
self.lead_list = []
for lead in element.findall('DevLead'):
self.lead_list.append(lead.text)
- except:
+ except Exception:
self.lead_list = None
try:
self.org = element.find('Org').text
- except:
+ except Exception:
self.org = None
try:
self.short_name = element.find('ShortName').text
- except:
+ except Exception:
self.short_name = None
try:
@@ -583,33 +599,34 @@ class _ProjectInfo():
subroot = element.find('LeadReviewers')
for reviewer in subroot.iter(tag='Reviewer'):
self.reviewer_list.append(reviewer.text)
- except:
+ except Exception:
self.reviewer_list = None
-
@property
def tuple(self):
return ProjectInfo(self.codename, self.descript, self.lead_list, self.reviewer_list, self.org, self.short_name)
+
class _GeneralConfig():
def __init__(self, element):
try:
self.pin_path = element.find('PinPath').text
- except:
+ except Exception:
self.pin_path = None
try:
self.default_combo = element.find('DefaultCombo').attrib['combination']
- except:
+ except Exception:
self.default_combo = None
try:
self.curr_combo = element.find('CurrentClonedCombo').attrib['combination']
- except:
+ except Exception:
self.curr_combo = None
@property
def tuple(self):
return GeneralConfig(self.default_combo, self.curr_combo, self.pin_path)
+
class _RemoteRepo():
def __init__(self, element):
try:
@@ -622,6 +639,7 @@ class _RemoteRepo():
def tuple(self):
return RemoteRepo(self.name, self.url)
+
class _RepoHook():
def __init__(self, element, remotes):
try:
@@ -631,18 +649,19 @@ class _RepoHook():
raise KeyError(REQUIRED_ATTRIB_ERROR_MSG.format(k, element.tag))
try:
self.remote_url = remotes[element.attrib['remote']].url
- except:
+ except Exception:
self.remote_url = None
print(NO_ASSOCIATED_REMOTE.format(self.source, self.dest_path))
try:
self.dest_file = element.attrib['destination_file']
- except:
+ except Exception:
self.dest_file = None
@property
def tuple(self):
return RepoHook(self.source, self.dest_path, self.dest_file, self.remote_url)
+
class _Combination():
def __init__(self, element):
try:
@@ -651,17 +670,18 @@ class _Combination():
raise KeyError(REQUIRED_ATTRIB_ERROR_MSG.format(k, element.tag))
try:
self.description = element.attrib['description']
- except:
- self.description = None #description is optional attribute
+ except Exception:
+ self.description = None # description is optional attribute
try:
self.archived = (element.attrib['archived'].lower() == 'true')
- except:
+ except Exception:
self.archived = False
@property
def tuple(self):
return Combination(self.name, self.description)
+
class _RepoSource():
def __init__(self, element, remotes):
try:
@@ -672,25 +692,25 @@ class _RepoSource():
raise KeyError(REQUIRED_ATTRIB_ERROR_MSG.format(k, element.tag))
try:
self.branch = element.attrib['branch']
- except:
+ except Exception:
self.branch = None
try:
self.commit = element.attrib['commit']
- except:
+ except Exception:
self.commit = None
try:
self.tag = element.attrib['tag']
- except:
+ except Exception:
self.tag = None
try:
- #if the sparse attrib is not explicitly set to true, then assume false
+ # if the sparse attrib is not explicitly set to true, then assume false
self.sparse = (element.attrib['sparseCheckout'].lower() == 'true')
- except:
+ except Exception:
self.sparse = False
try:
- #If enableSubmodule is not set to True then default to False
+ # If enableSubmodule is not set to True then default to False
self.enableSub = (element.attrib['enableSubmodule'].lower() == 'true')
- except:
+ except Exception:
self.enableSub = False
if self.branch is None and self.commit is None and self.tag is None:
@@ -698,20 +718,23 @@ class _RepoSource():
@property
def tuple(self):
- return RepoSource(self.root, self.remote_name, self.remote_url, self.branch, self.commit, self.sparse, self.enableSub, self.tag)
+ return RepoSource(self.root, self.remote_name, self.remote_url, self.branch,
+ self.commit, self.sparse, self.enableSub, self.tag)
+
class _SparseSettings():
def __init__(self, element):
self.sparse_by_default = False
try:
self.sparse_by_default = (element.attrib['sparseByDefault'].lower() == 'true')
- except:
+ except Exception:
pass
@property
def tuple(self):
return SparseSettings(self.sparse_by_default)
+
class _SparseData():
def __init__(self, element):
self.combination = None
@@ -720,11 +743,11 @@ class _SparseData():
self.always_exclude = []
try:
self.combination = element.attrib['combination']
- except:
+ except Exception:
pass
try:
self.remote_name = element.attrib['remote']
- except:
+ except Exception:
pass
for includes in element.iter(tag='AlwaysInclude'):
self.always_include.extend(includes.text.split('|'))
@@ -735,18 +758,20 @@ class _SparseData():
def tuple(self):
return SparseData(self.combination, self.remote_name, self.always_include, self.always_exclude)
+
class _FolderToFolderMappingFolderExclude():
def __init__(self, element):
self.path = None
try:
self.path = element.attrib['path']
- except:
+ except Exception:
pass
@property
def tuple(self):
return FolderToFolderMappingFolderExclude(self.path)
+
class _FolderToFolderMappingFolder():
def __init__(self, element):
self.project1_folder = None
@@ -754,11 +779,11 @@ class _FolderToFolderMappingFolder():
self.excludes = []
try:
self.project1_folder = element.attrib['project1']
- except:
+ except Exception:
pass
try:
self.project2_folder = element.attrib['project2']
- except:
+ except Exception:
pass
for exclude in element.iter(tag='Exclude'):
self.excludes.append(_FolderToFolderMappingFolderExclude(exclude))
@@ -767,6 +792,7 @@ class _FolderToFolderMappingFolder():
def tuple(self):
return FolderToFolderMappingFolder(self.project1_folder, self.project2_folder, self.excludes)
+
class _FolderToFolderMapping():
def __init__(self, element):
self.project1 = None
@@ -775,15 +801,15 @@ class _FolderToFolderMapping():
self.folders = []
try:
self.project1 = element.attrib['project1']
- except:
+ except Exception:
pass
try:
self.project2 = element.attrib['project2']
- except:
+ except Exception:
pass
try:
self.remote_name = element.attrib['remote']
- except:
+ except Exception:
pass
for folder in element.iter(tag='Folder'):
self.folders.append(_FolderToFolderMappingFolder(folder))
@@ -811,6 +837,7 @@ class _SubmoduleAlternateRemote():
def tuple(self):
return SubmoduleAlternateRemote(self.remote_name, self.originalUrl, self.altUrl)
+
#
# Optional entry point for debug and validation of the CiIndexXml & ManifestXml classes
#
@@ -824,7 +851,8 @@ def main():
parser = argparse.ArgumentParser()
parser.add_argument("InputFile", help="Xml file to parse", nargs='?', default="manifest.xml")
- parser.add_argument('-v', '--verbose', action='store_true', help='Increased verbosity including exception tracebacks')
+ parser.add_argument('-v', '--verbose', action='store_true',
+ help='Increased verbosity including exception tracebacks')
args = parser.parse_args()
@@ -934,5 +962,6 @@ def main():
if args.verbose:
traceback.print_exc()
+
if __name__ == "__main__":
main()
--
2.21.0.windows.1
next prev parent reply other threads:[~2020-04-30 22:53 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-30 22:52 [edk2-staging/EdkRepo] [PATCH v1 0/3] Manifest parser cleanup Bjorge, Erik C
2020-04-30 22:52 ` Bjorge, Erik C [this message]
2020-04-30 22:52 ` [edk2-staging/EdkRepo] [PATCH v1 2/3] EdkRepo: Improve error message with invalid XML Bjorge, Erik C
2020-04-30 22:52 ` [edk2-staging/EdkRepo] [PATCH v1 3/3] EdkRepo: Refactoring private class members Bjorge, Erik C
2020-05-05 3:56 ` [edk2-staging/EdkRepo] [PATCH v1 0/3] Manifest parser cleanup Nate DeSimone
2020-05-05 3:59 ` Nate DeSimone
2020-05-05 17:04 ` Bjorge, Erik C
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c24f50363696b6c57c96f171bf85e01ae654107c.1588286715.git.erik.c.bjorge@intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox