Ejemplo n.º 1
0
 def _parse_polygon(self, polygon: etree._Element,
                    nsmap: Dict[str, str]) -> Polygon:
     gml = f"{{{nsmap['gml']}}}"
     ogr = f"{{{nsmap['ogr']}}}"
     outer_boundary = next(polygon.iter(f"{gml}outerBoundaryIs"))
     citer = (float(x)
              for x in next(outer_boundary.iter(
                  f"{gml}coordinates")).text.replace(",", " ").split())
     shell = np.fromiter(citer, dtype='d').reshape(-1, 2)
     holes = []
     for inner_boundary in polygon.iter(f"{gml}innerBoundaryIs"):
         citer = (float(x)
                  for x in next(inner_boundary.iter(
                      f"{gml}coordinates")).text.replace(",", " ").split())
         holes.append(np.fromiter(citer, dtype='d').reshape(-1, 2))
     return Polygon(shell=shell, holes=holes)
Ejemplo n.º 2
0
def find_phone(supplier: etree._Element):
    "Функция возвращает телефон"
    phones = [element for element in supplier.iter('{http://zakupki.gov.ru/oos/types/1}contactPhone')]
    if len(phones) == 0:
        phone = ''
    else:
        phone = phones[0].text
    return phone
Ejemplo n.º 3
0
def find_address(supplier: etree._Element):
    "Функция возвращает адрес"
    addresses = [element for element in supplier.iter('{http://zakupki.gov.ru/oos/types/1}address')]
    if len(addresses) == 0:
        address = ''
    else:
        address = addresses[0].text
    return address
Ejemplo n.º 4
0
def find_email(supplier: etree._Element):
    "Функция возвращает емэйл"
    emails = [element for element in supplier.iter('{http://zakupki.gov.ru/oos/types/1}contactEMail')]
    if len(emails) == 0:
        email = ''
    else:
        email = emails[0].text.lower()
    return email
Ejemplo n.º 5
0
def get_channel_metadata(mdroot: etree._Element, channel_number: int):
    channel = [
        obj for obj in [item
                        for item in mdroot.iter("Channels")][0].iter("Channel")
    ][channel_number]
    channel_dict = elem2dict(channel)
    # Set channel color based on color map.
    channel_dict["Color"] = [
        color for color in color_map
        if channel.get('Name').lower() in color_map[color]
    ][0].title()
    return channel_dict
Ejemplo n.º 6
0
def _parse_actions_1_1(element: _Element) -> List[ResourceAgentActionOcf1_1]:
    return [
        ResourceAgentActionOcf1_1(
            name=str(action.attrib["name"]),
            timeout=action.get("timeout"),
            interval=action.get("interval"),
            role=action.get("role"),
            start_delay=action.get("start-delay"),
            depth=action.get("depth"),
            automatic=action.get("automatic"),
            on_target=action.get("on_target"),
        )
        for action in element.iter("action")
    ]
Ejemplo n.º 7
0
def translate_dom(dom: etree._Element,
                  dest_language: str,
                  original_url: Optional[str] = None):
    if dest_language in LANGUAGES:
        translator = Translator()
        for node in dom.iter():
            node.text = _translate(node.text, translator, dest_language)
            node.tail = _translate(node.tail, translator, dest_language)

        if original_url is not None:
            a = etree.Element("a")
            a.text = "Untranslated"
            a.attrib["href"] = original_url\
                .replace("&translateto=", "&nop=")\
                .replace("?translateto=", "?nop=")  # quick & dirty
            dom.append(etree.Element("hr"))
            dom.append(a)
            dom.append(etree.Element("hr"))
Ejemplo n.º 8
0
    def _call_inner(self, root: etree._Element):
        # do it as a BFS rather than using etree._Element.iter().
        # using iter, you add nodes to the tree as you go and they get double visited.
        # with the BFS, you've already got the parent nodes in your queue when you visit the child
        # and you won't ever double visit
        to_visit = [root]
        while to_visit:
            node = to_visit.pop(0)
            to_visit.extend(list(node))
            self._handle_text(node)
            self._handle_text(node, do_handle_tail_instead=True)

        docwide_word_id = self._starting_word_id

        for node in root.iter():
            if node.tag == self.WORD_TAG:
                # TODO: factor out word_id definition
                word_id = f'word_{docwide_word_id:0>6d}'
                node.attrib[self.WORD_ID_ATTRIB_NAME] = word_id
                self._used_word_ids[word_id] = node
                docwide_word_id += 1
Ejemplo n.º 9
0
def _parse_parameters_1_0(
    element: _Element,
) -> List[ResourceAgentParameterOcf1_0]:
    result = []
    for parameter_el in element.iter("parameter"):
        value_type, default_value, enum_values = _parse_parameter_content(
            parameter_el
        )
        result.append(
            ResourceAgentParameterOcf1_0(
                name=str(parameter_el.attrib["name"]),
                shortdesc=_get_shortdesc(parameter_el),
                longdesc=_get_longdesc(parameter_el),
                type=value_type,
                default=default_value,
                enum_values=enum_values,
                required=parameter_el.get("required"),
                deprecated=parameter_el.get("deprecated"),
                obsoletes=parameter_el.get("obsoletes"),
                unique=parameter_el.get("unique"),
            )
        )
    return result
Ejemplo n.º 10
0
def _parse_parameters_1_1(
    element: _Element,
) -> List[ResourceAgentParameterOcf1_1]:
    result = []
    for parameter_el in element.iter("parameter"):
        value_type, default_value, enum_values = _parse_parameter_content(
            parameter_el
        )

        deprecated, deprecated_by, deprecated_desc = False, [], None
        deprecated_el = parameter_el.find("deprecated")
        if deprecated_el is not None:
            deprecated = True
            deprecated_by = [
                str(replaced_with_el.attrib["name"])
                for replaced_with_el in deprecated_el.iterfind("replaced-with")
            ]
            deprecated_desc = _get_desc(deprecated_el)

        result.append(
            ResourceAgentParameterOcf1_1(
                name=str(parameter_el.attrib["name"]),
                shortdesc=_get_shortdesc(parameter_el),
                longdesc=_get_longdesc(parameter_el),
                type=value_type,
                default=default_value,
                enum_values=enum_values,
                required=parameter_el.get("required"),
                deprecated=deprecated,
                deprecated_by=deprecated_by,
                deprecated_desc=deprecated_desc,
                unique_group=parameter_el.get("unique-group"),
                reloadable=parameter_el.get("reloadable"),
            )
        )
    return result
Ejemplo n.º 11
0
 def _assign_data_crs(self, root: etree._Element) -> None:
     gml = f"{{{root.nsmap['gml']}}}"
     elm = next(root.iter(f"{gml}featureMember"))
     pstr = next(elm.iter(f"{gml}Polygon")).attrib["srsName"]
     self.data_crs = CRS.from_string(f"+init={pstr}")
Ejemplo n.º 12
0
def find_xml(search_string: str, root: etree._Element):
    "Фукнция для поиска элемента по его названию"
    anwser = [element for element in root.iter(search_string)]
    assert len(anwser) < 2, "Element must be unique"
    if len(anwser) == 1:
        return anwser[0]