def param_help_tree(self): '''return a "help tree", a map between a parameter and its metadata. May return None if help is not available''' if self.xml_filepath is not None: print("param: using xml_filepath=%s" % self.xml_filepath) path = self.xml_filepath else: if self.vehicle_name is None: print("Unknown vehicle type") return None path = mp_util.dot_mavproxy("%s.xml" % self.vehicle_name) if not os.path.exists(path): print("Please run 'param download' first (vehicle_name=%s)" % self.vehicle_name) return None if not os.path.exists(path): print("Param XML (%s) does not exist" % path) return None xml = open(path, 'rb').read() from lxml import objectify objectify.enable_recursive_str() tree = objectify.fromstring(xml) htree = {} for p in tree.vehicles.parameters.param: n = p.get('name').split(':')[1] htree[n] = p for lib in tree.libraries.parameters: for p in lib.param: n = p.get('name') htree[n] = p return htree
def load_param_doc(self, file_name): xml = open(file_name).read() objectify.enable_recursive_str() tree = objectify.fromstring(xml) param_tree = {} for p in tree.vehicles.parameters.param: n = p.get('name') #.split(':') param_tree[n] = p for lib in tree.libraries.parameters: for p in lib.param: n = p.get('name') param_tree[n] = p self.params_info = {} for key in param_tree: node = param_tree[key] text_hname = node.get("humanName") doc = node.get("documentation") text_range = "" text_unit = "" for child_node in node.iterchildren("field"): name = child_node.get("name") if name == "Range" : text_range = str(child_node).replace(" ", "--") elif name == "Increment" : text_range += "(step %s)" % str(child_node) elif name == "Units" : text_unit = str(child_node) self.params_info[key.strip()] = (text_range, text_unit, text_hname, doc)
def param_help(self, args): '''show help on a parameter''' if len(args) == 0: print("Usage: param help PARAMETER_NAME") return path = mp_util.dot_mavproxy("%s.xml" % self.vehicle_name) if not os.path.exists(path): print("Please run 'param download' first (vehicle_name=%s)" % self.vehicle_name) return xml = open(path).read() from lxml import objectify objectify.enable_recursive_str() tree = objectify.fromstring(xml) htree = {} for p in tree.vehicles.parameters.param: n = p.get('name').split(':')[1] htree[n] = p for lib in tree.libraries.parameters: for p in lib.param: n = p.get('name') htree[n] = p for h in args: if h in htree: help = htree[h] print("%s: %s\n" % (h, help.get('humanName'))) print(help.get('documentation')) try: vchild = help.getchildren()[0] print("\nValues: ") for v in vchild.value: print("\t%s : %s" % (v.get('code'), str(v))) except Exception as e: pass else: print("Parameter '%s' not found in documentation" % h)
def param_help_tree(self): '''return a "help tree", a map between a parameter and its metadata. May return None if help is not available''' if self.xml_filepath is not None: print("param: using xml_filepath=%s" % self.xml_filepath) path = self.xml_filepath else: if self.vehicle_name is None: print("Unknown vehicle type") return None path = mp_util.dot_mavproxy("%s.xml" % self.vehicle_name) if not os.path.exists(path): print("Please run 'param download' first (vehicle_name=%s)" % self.vehicle_name) return None if not os.path.exists(path): print("Param XML (%s) does not exist" % path) return None xml = open(path,'rb').read() from lxml import objectify objectify.enable_recursive_str() tree = objectify.fromstring(xml) htree = {} for p in tree.vehicles.parameters.param: n = p.get('name').split(':')[1] htree[n] = p for lib in tree.libraries.parameters: for p in lib.param: n = p.get('name') htree[n] = p return htree
def xml_to_objfy(path_to_file: str): full_path = os.path.join(WORKING_DIRECTORY, path_to_file) with open(full_path, 'r', encoding=ENCODING) as f: parser_recovery = objectify.makeparser(recover=True, encoding=ENCODING, collect_ids=False) objectify.enable_recursive_str() objfy = objectify.parse(f, parser_recovery) objectify_tree = objfy.getroot() # for obj in objectify_tree.iterchildren(): # tag_object_tree(obj, objectify_tree.tag) return objectify_tree
def param_help(self, args): '''show help on a parameter''' if len(args) == 0: print("Usage: param help PARAMETER_NAME") return if self.vehicle_name is None: print("Unknown vehicle type") return path = mp_util.dot_mavproxy("%s.xml" % self.vehicle_name) if not os.path.exists(path): print("Please run 'param download' first (vehicle_name=%s)" % self.vehicle_name) return xml = open(path).read() from lxml import objectify objectify.enable_recursive_str() tree = objectify.fromstring(xml) htree = {} for p in tree.vehicles.parameters.param: n = p.get('name').split(':')[1] htree[n] = p for lib in tree.libraries.parameters: for p in lib.param: n = p.get('name') htree[n] = p for h in args: if h in htree: help = htree[h] print("%s: %s\n" % (h, help.get('humanName'))) print(help.get('documentation')) try: print("\n") for f in help.field: print("%s : %s" % (f.get('name'), str(f))) except Exception as e: pass try: vchild = help.getchildren()[0] print("\nValues: ") for v in vchild.value: print("\t%s : %s" % (v.get('code'), str(v))) except Exception as e: pass else: print("Parameter '%s' not found in documentation" % h)
def param_help_tree(self): '''return a "help tree", a map between a parameter and its metadata. May return None if help is not available''' if self.xml_filepath is not None: path = self.xml_filepath elif self.vehicle_name is not None: path = mp_util.dot_mavproxy("%s.xml" % self.vehicle_name) if not os.path.exists(path): self.param_help_download() else: return try: xml = open(path, 'rb').read() from lxml import objectify objectify.enable_recursive_str() tree = objectify.fromstring(xml) for p in tree.vehicles.parameters.param: n = p.get('name').split(':')[1] self.htree[n] = p for lib in tree.libraries.parameters: for p in lib.param: n = p.get('name') self.htree[n] = p except Exception as e: print(e)
from lxml import objectify from lxml import etree from eb_catalog.database import * from old.amazon_product_api import CREDENTIALS objectify.enable_recursive_str() def unescape(s): s = s.replace("<", "<") s = s.replace(">", ">") s = s.replace("&", "&") s = s.replace('"', '"') return s api = amazonproduct.API(cfg=CREDENTIALS) nodes = execute_query("SELECT * FROM item_counts(4)") nodes.reverse() for node in nodes: try: try: items = api.item_search(node[2], BrowseNode=node[0], ResponseGroup="ItemAttributes, Images, EditorialReview, OfferSummary", Sort='reviewrank') except amazonproduct.AWSError: items = api.item_search('Books', BrowseNode=node[0], ResponseGroup="ItemAttributes, Images, EditorialReview, OfferSummary", Sort='reviewrank') i = 0 k = 0 for page in items: for item in page[4:]: asin = item.ASIN images = list()
def main(args): with open(args.schema, "r") as schemafile: objdefs = [] resdefs = [] schema = etree.XMLSchema(file=schemafile) for xmlinput in args.input: with open(xmlinput, "r") as xmlfile: objectify.enable_recursive_str() parser = objectify.makeparser(schema=schema) LWM2M = objectify.parse(xmlfile, parser=parser) # pick only required resource fields from the spec object_resources = {} for resource_item in LWM2M.getroot().Object.Resources.Item: res_id, filtered_res = filter_resource_item(resource_item) object_resources[res_id] = filtered_res # record the offsets of each resource written to the array so that we can generate the index offsets = {} # first serialized "thing" in the actual data is the object metadata obj_id, obj_items = filter_object_data(LWM2M.getroot().Object) # map the values back to enum for obj_item_key, obj_item in obj_items.items(): if obj_item_key in OBJECT_ENUM_REVERSE_MAP: obj_items[obj_item_key] = OBJECT_ENUM_REVERSE_MAP[ obj_item_key][obj_item] obj_items["objectid"] = obj_id obj_items["namelength"] = len(str(obj_items["Name"])) obj_items["resourcecount"] = len(object_resources.items()) # .. followed by the resource metadata struct_list = [] for res_id, res in object_resources.items(): for res_item_key, res_item in res.items(): if res_item_key in RESOURCE_ENUM_REVERSE_MAP: res[res_item_key] = RESOURCE_ENUM_REVERSE_MAP[ res_item_key][res[res_item_key]] res["resourceid"] = res_id res["namelength"] = len(str(res["Name"])) struct_list.append(Formatter().vformat( RESOURCE_STRUCT_FORMAT_STRING, None, res)) obj_items[ "resources"] = "OMA_LWM2M_RESOURCE_DEFS_OBJECT_" + str( obj_id) resdefs.append( RESOURCE_LIST_FORMAT_STRING.format( obj_id, ",\n".join(struct_list))) objdefs.append(Formatter().vformat(OBJECT_STRUCT_FORMAT_STRING, None, obj_items)) # export the generated object/resource structures to the C file using a template if args.coutput and args.ctemplate: with open(args.coutput, "w") as coutputfile: with open(args.ctemplate, "r") as ctemplatefile: ctemplate = ctemplatefile.read() coutputfile.write( ctemplate.replace("%%OBJDEFS%%", ",\\\n".join(objdefs)).replace( "%%RESDEFS_LIST%%", "\n".join(resdefs)))