def propfind(<EOL>self, path, properties="<STR_LIT>", namespace="<STR_LIT>", depth=None, headers=None<EOL>):
<EOL>root = ElementTree.Element("<STR_LIT>")<EOL>if is_native(properties):<EOL><INDENT>ElementTree.SubElement(root, "<STR_LIT>" % properties)<EOL><DEDENT>else:<EOL><INDENT>props = ElementTree.SubElement(root, "<STR_LIT>")<EOL>object_to_etree(props, properties, namespace=namespace)<EOL><DEDENT>tree = ElementTree.ElementTree(root)<EOL>body = self._tree_to_binary_body(tree)<EOL>if headers is None:<EOL><INDENT>headers = {}<EOL><DEDENT>if depth is not None:<EOL><INDENT>headers["<STR_LIT>"] = depth<EOL><DEDENT>headers["<STR_LIT:Content-Type>"] = '<STR_LIT>'<EOL>self._request("<STR_LIT>", path, body=body, headers=headers)<EOL>if self.response is not None and hasattr(self.response, "<STR_LIT>") is True:<EOL><INDENT>property_responses = {}<EOL>for response in self.response.tree:<EOL><INDENT>property_href = response.find("<STR_LIT>")<EOL>property_stat = response.find("<STR_LIT>")<EOL>def parse_props(props):<EOL><INDENT>property_dict = {}<EOL>for prop in props:<EOL><INDENT>if prop.tag.find("<STR_LIT>") is not -<NUM_LIT:1>:<EOL><INDENT>name = prop.tag.split("<STR_LIT:}>")[-<NUM_LIT:1>]<EOL><DEDENT>else:<EOL><INDENT>name = prop.tag<EOL><DEDENT>if len(list(prop)):<EOL><INDENT>property_dict[name] = parse_props(prop)<EOL><DEDENT>else:<EOL><INDENT>property_dict[name] = prop.text<EOL><DEDENT><DEDENT>return property_dict<EOL><DEDENT>if property_href is not None and property_stat is not None:<EOL><INDENT>property_dict = parse_props(property_stat.find("<STR_LIT>"))<EOL>property_responses[property_href.text] = property_dict<EOL><DEDENT><DEDENT>return property_responses<EOL><DEDENT>
Property find. If properties arg is unspecified it defaults to 'allprop'.