From d12bec69931503be78cd555cf7bc22ad6f4f2bd5 Mon Sep 17 00:00:00 2001 From: Nikita Sobolev <mail@sobolevn.me> Date: Thu, 30 Dec 2021 04:30:13 +0300 Subject: bpo-43424: Deprecate `webbrowser.MacOSXOSAScript._name` attribute (GH-30241) --- Doc/library/webbrowser.rst | 5 +++++ Lib/test/test_webbrowser.py | 4 ++-- Lib/webbrowser.py | 24 +++++++++++++++++----- .../2021-12-23-14-36-58.bpo-43424.d9x2JZ.rst | 1 + 4 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2021-12-23-14-36-58.bpo-43424.d9x2JZ.rst diff --git a/Doc/library/webbrowser.rst b/Doc/library/webbrowser.rst index 19b3c46..1dc5930 100644 --- a/Doc/library/webbrowser.rst +++ b/Doc/library/webbrowser.rst @@ -197,6 +197,11 @@ Browser controllers provide these methods which parallel three of the module-level convenience functions: +.. attribute:: name + + System-dependent name for the browser. + + .. method:: controller.open(url, new=0, autoraise=True) Display *url* using the browser handled by this controller. If *new* is 1, a new diff --git a/Lib/test/test_webbrowser.py b/Lib/test/test_webbrowser.py index 673cc99..dbfd2e5 100644 --- a/Lib/test/test_webbrowser.py +++ b/Lib/test/test_webbrowser.py @@ -304,7 +304,7 @@ class ImportTest(unittest.TestCase): webbrowser = import_helper.import_fresh_module('webbrowser') try: browser = webbrowser.get().name - except (webbrowser.Error, AttributeError) as err: + except webbrowser.Error as err: self.skipTest(str(err)) with os_helper.EnvironmentVarGuard() as env: env["BROWSER"] = browser @@ -316,7 +316,7 @@ class ImportTest(unittest.TestCase): try: webbrowser.get() least_preferred_browser = webbrowser.get(webbrowser._tryorder[-1]).name - except (webbrowser.Error, AttributeError, IndexError) as err: + except (webbrowser.Error, IndexError) as err: self.skipTest(str(err)) with os_helper.EnvironmentVarGuard() as env: diff --git a/Lib/webbrowser.py b/Lib/webbrowser.py index 3244f20..02d2036 100755 --- a/Lib/webbrowser.py +++ b/Lib/webbrowser.py @@ -666,19 +666,33 @@ if sys.platform == 'darwin': return not rc class MacOSXOSAScript(BaseBrowser): - def __init__(self, name): - self._name = name + def __init__(self, name='default'): + super().__init__(name) + + @property + def _name(self): + warnings.warn(f'{self.__class__.__name__}._name is deprecated in 3.11' + f' use {self.__class__.__name__}.name instead.', + DeprecationWarning, stacklevel=2) + return self.name + + @_name.setter + def _name(self, val): + warnings.warn(f'{self.__class__.__name__}._name is deprecated in 3.11' + f' use {self.__class__.__name__}.name instead.', + DeprecationWarning, stacklevel=2) + self.name = val def open(self, url, new=0, autoraise=True): - if self._name == 'default': + if self.name == 'default': script = 'open location "%s"' % url.replace('"', '%22') # opens in default browser else: - script = ''' + script = f''' tell application "%s" activate open location "%s" end - '''%(self._name, url.replace('"', '%22')) + '''%(self.name, url.replace('"', '%22')) osapipe = os.popen("osascript", "w") if osapipe is None: diff --git a/Misc/NEWS.d/next/Library/2021-12-23-14-36-58.bpo-43424.d9x2JZ.rst b/Misc/NEWS.d/next/Library/2021-12-23-14-36-58.bpo-43424.d9x2JZ.rst new file mode 100644 index 0000000..aa5f8d4 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-12-23-14-36-58.bpo-43424.d9x2JZ.rst @@ -0,0 +1 @@ +Deprecate :attr:`webbrowser.MacOSXOSAScript._name` and use ``name`` instead. -- cgit v0.12