def close(self): if self._response is not None: self._response.close() UserAgent.close(self) del self._history[:] self._forms = self._title = self._links = None self.request = self._response = None
def _mech_open(self, url, data=None, update_history=True): try: url.get_full_url except AttributeError: # string URL -- convert to absolute URL if required scheme, netloc = urlparse.urlparse(url)[:2] if not scheme: # relative URL assert not netloc, "malformed URL" if self._response is None: raise BrowserStateError( "can't fetch relative URL: not viewing any document") url = urlparse.urljoin(self._response.geturl(), url) if self.request is not None and update_history: self._history.append((self.request, self._response)) self._response = None # we want self.request to be assigned even if UserAgent.open fails self.request = self._request(url, data) self._previous_scheme = self.request.get_type() self._response = UserAgent.open(self, self.request, data) if not hasattr(self._response, "seek"): self._response = response_seek_wrapper(self._response) self._parse_html(self._response) return self._response
def __init__(self, default_encoding="latin-1", forms_factory=None, links_factory=None, request_class=None, ): """ Only named arguments should be passed to this constructor. default_encoding: See class docs. forms_factory: Object supporting the mechanize.FormsFactory interface. links_factory: Object supporting the mechanize.LinksFactory interface. request_class: Request class to use. Defaults to ClientCookie.Request by default for Pythons older than 2.4, urllib2.Request otherwise. Note that the supplied forms_factory's request_class attribute is assigned to by this constructor, to ensure only one Request class is used. """ self.default_encoding = default_encoding self._history = [] # LIFO self.request = self._response = None self.form = None self._forms = None self._title = None self._links = None if request_class is None: if not hasattr(urllib2.Request, "add_unredirected_header"): request_class = ClientCookie.Request else: request_class = urllib2.Request # Python 2.4 self.request_class = request_class if forms_factory is None: forms_factory = FormsFactory() self._forms_factory = forms_factory forms_factory.request_class = request_class if links_factory is None: links_factory = LinksFactory() self._links_factory = links_factory UserAgent.__init__(self) # do this last to avoid __getattr__ problems