Exemple #1
0
 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
Exemple #2
0
 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)
Exemple #3
0
 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)
Exemple #4
0
 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
Exemple #5
0
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("&lt;", "<")
    s = s.replace("&gt;", ">")
    s = s.replace("&amp;", "&")
    s = s.replace('&quot;', '"')
    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)))