code: def init (self, base_ref, base_url, parent_url, recursion_level,
                aggregate, line, column, page, name, url_encoding, extern):
          
          self.base_ref = base_ref
          if self.base_ref is not None:
              assert isinstance(self.base_ref, unicode), repr(self.base_ref)
          self.base_url = base_url.strip() if base_url else base_url
          if self.base_url is not None:
              assert isinstance(self.base_url, unicode), repr(self.base_url)
          self.parent_url = parent_url
          if self.parent_url is not None:
              assert isinstance(self.parent_url, unicode), repr(self.parent_url)
          self.recursion_level = recursion_level
          self.aggregate = aggregate
          self.line = line
          self.column = column
          self.page = page
          self.name = name
          assert isinstance(self.name, unicode), repr(self.name)
          self.encoding = url_encoding
          self.charset = None
          self.extern = extern
          if self.base_ref:
              assert not urlutil.url_needs_quoting(self.base_ref), \
                     "unquoted base reference URL %r" % self.base_ref
          if self.parent_url:
              assert not urlutil.url_needs_quoting(self.parent_url), \
                     "unquoted parent URL %r" % self.parent_url
          url = absolute_url(self.base_url, base_ref, parent_url)
          # assume file link if no scheme is found
          self.scheme = url.split(":", 1)[0].lower() or "file"
          if self.base_url != base_url:
              self.add_warning(_("Leading or trailing whitespace in URL `%(url)s'.") %
                                 {"url": base_url}, tag=WARN_URL_WHITESPACE)
docs: Initialize internal data.