docs: def xpath(
              self,
              path,
              namespaces=None,
              regexp=False,
              smart_strings=True,
              single_use=False,
      ):
          u"""Executes XPath query on the ``lxml`` object and returns a correct object.
  
          :param str path: XPath string e.g., 'cars'/'car'
  
          :param str/dict namespaces: e.g., 'exslt', 're' or
              ``{'re': "http://exslt.org/regular-expressions"}``
          :param bool regexp: if ``True`` and no namespaces is provided, it will use
              ``exslt`` namespace
          :param bool smart_strings:
          :param bool single_use: faster method for using only once. Does not
              create ``XPathEvaluator`` instance.
  
          >>> root = mappet.Mappet("<root><a>aB</a><b>aBc</b></root>")
          >>> root.XPath(
              "//*[re:test(., '^abc$', 'i')]",
              namespaces='exslt',
              regexp=True,
          )
          """
          if (
              namespaces in ['exslt', 're'] or
              (regexp and not namespaces)
          ):
              namespaces = {'re': "http://exslt.org/regular-expressions"}
          if single_use:
              node = self._xml.xpath(path)
          else:
              xpe = self.xpath_evaluator(
                  namespaces=namespaces,
                  regexp=regexp,
                  smart_strings=smart_strings
              )
              node = xpe(path)
  
          if len(node) == 1:
              node = node[0]
              if len(node):
                  return self.__class__(node)
              else:
                  return Literal(node)
          return node