Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

stateful_browser: self.url -> self.__state.url for internal consumers #367

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions mechanicalsoup/stateful_browser.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@


class _BrowserState:
"""An internal class whose purpose is underspecified."""
def __init__(self, page=None, url=None, form=None, request=None):
self.page = page
self.url = url
Expand Down Expand Up @@ -68,7 +69,7 @@ def __init__(self, *args, **kwargs):
# Almost same as self.form, but don't raise an error if no
# form was selected for backward compatibility.
self.get_current_form = lambda: self.__state.form
self.get_url = lambda: self.url
self.get_url = lambda: self.__state.url

def set_debug(self, debug):
"""Set the debug mode (off by default).
Expand Down Expand Up @@ -131,7 +132,7 @@ def absolute_url(self, url):
``url``, as in the `.urljoin() method of urllib.parse
<https://docs.python.org/3/library/urllib.parse.html#urllib.parse.urljoin>`__.
"""
return urllib.parse.urljoin(self.url, url)
return urllib.parse.urljoin(self.__state.url, url)

def open(self, url, *args, **kwargs):
"""Open the URL and store the Browser's state in this object.
Expand Down Expand Up @@ -228,7 +229,7 @@ def _merge_referer(self, **kwargs):
"""Helper function to set the Referer header in kwargs passed to
requests, if it has not already been overriden by the user."""

referer = self.url
referer = self.__state.url
headers = CaseInsensitiveDict(kwargs.get('headers', {}))
if referer is not None and 'Referer' not in headers:
headers['Referer'] = referer
Expand Down Expand Up @@ -347,7 +348,7 @@ def follow_link(self, link=None, *args, **kwargs):
"""
link = self._find_link_internal(link, args, kwargs)

referer = self.url
referer = self.__state.url
headers = {'Referer': referer} if referer else None

return self.open_relative(link['href'], headers=headers)
Expand All @@ -371,7 +372,7 @@ def download_link(self, link=None, file=None, *args, **kwargs):
link = self._find_link_internal(link, args, kwargs)
url = self.absolute_url(link['href'])

referer = self.url
referer = self.__state.url
headers = {'Referer': referer} if referer else None

response = self.session.get(url, headers=headers)
Expand Down