Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:sbradnick:branches:X11:XOrg
Mesa
u_0002-intel-genxml-Add-a-untyped-OrderedDict-f...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File u_0002-intel-genxml-Add-a-untyped-OrderedDict-fallback-for-.patch of Package Mesa
From 89ede5b851a6a15f85e83278257ee4e3783f6bd2 Mon Sep 17 00:00:00 2001 From: Jordan Justen <jordan.l.justen@intel.com> Date: Sat, 20 Jan 2024 01:00:56 -0800 Subject: [PATCH 2/2] intel/genxml: Add a untyped OrderedDict fallback for Python 3.6 typing.OrderedDict was introduced in Python 3.7.2. Python 3.6 and 3.7 have been deprecated and are no longer supported, but this seems like an easy enough fallback to include for now. https://devguide.python.org/versions/ Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> --- src/intel/genxml/intel_genxml.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/intel/genxml/intel_genxml.py b/src/intel/genxml/intel_genxml.py index 9388ebecfce..eefd7b44992 100755 --- a/src/intel/genxml/intel_genxml.py +++ b/src/intel/genxml/intel_genxml.py @@ -45,10 +45,22 @@ BASE_TYPES = { FIXED_PATTERN = re.compile(r"(s|u)(\d+)\.(\d+)") +try: + # Python 3.7 and newer should be able to support strong typing for + # our OrderedDict usage. + def typed_ordered_dict(key_ty, val_ty): + return typing.OrderedDict[str, bool] + # This will raise an exception on Python 3.6 + typed_ordered_dict(int, int) +except Exception: + # For Python 3.6 we return an untyped OrderedDict + def typed_ordered_dict(key_ty, val_ty): + return OrderedDict + def is_base_type(name: str) -> bool: return name in BASE_TYPES or FIXED_PATTERN.match(name) is not None -def add_struct_refs(items: typing.OrderedDict[str, bool], node: et.Element) -> None: +def add_struct_refs(items: typed_ordered_dict(str, bool), node: et.Element) -> None: if node.tag == 'field': if 'type' in node.attrib and not is_base_type(node.attrib['type']): t = node.attrib['type'] @@ -64,16 +76,16 @@ class Struct(object): def __init__(self, xml: et.Element): self.xml = xml self.name = xml.attrib['name'] - self.deps: typing.OrderedDict[str, Struct] = OrderedDict() + self.deps: typed_ordered_dict(str, Struct) = OrderedDict() def find_deps(self, struct_dict, enum_dict) -> None: - deps: typing.OrderedDict[str, bool] = OrderedDict() + deps: typed_ordered_dict(str, bool) = OrderedDict() add_struct_refs(deps, self.xml) for d in deps.keys(): if d in struct_dict: self.deps[d] = struct_dict[d] - def add_xml(self, items: typing.OrderedDict[str, et.Element]) -> None: + def add_xml(self, items: typed_ordered_dict(str, et.Element)) -> None: for d in self.deps.values(): d.add_xml(items) items[self.name] = self.xml @@ -151,7 +163,7 @@ def sort_xml(xml: et.ElementTree) -> None: for ws in wrapped_struct_dict.values(): ws.find_deps(wrapped_struct_dict, enum_dict) - sorted_structs: typing.OrderedDict[str, et.Element] = OrderedDict() + sorted_structs: typed_ordered_dict(str, et.Element) = OrderedDict() for s in structs: _s = wrapped_struct_dict[s.attrib['name']] _s.add_xml(sorted_structs) -- 2.35.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor