]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-43424: Deprecate `webbrowser.MacOSXOSAScript._name` attribute (GH-30241)
authorNikita Sobolev <mail@sobolevn.me>
Thu, 30 Dec 2021 01:30:13 +0000 (04:30 +0300)
committerGitHub <noreply@github.com>
Thu, 30 Dec 2021 01:30:13 +0000 (10:30 +0900)
Doc/library/webbrowser.rst
Lib/test/test_webbrowser.py
Lib/webbrowser.py
Misc/NEWS.d/next/Library/2021-12-23-14-36-58.bpo-43424.d9x2JZ.rst [new file with mode: 0644]

index 19b3c463bb817449a0315662ff8b00c5568d63fe..1dc59306164ecdc500469135f78863991c5c3316 100644 (file)
@@ -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
index 673cc995d3f5a406a3fac86ef41be0106370c47b..dbfd2e5a0f280b8356075f48327b942b267fdf55 100644 (file)
@@ -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:
index 3244f206aade67819c5a7909daeff2271d61d641..02d2036906178fa943dc98bb351bd3b479c1125b 100755 (executable)
@@ -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 (file)
index 0000000..aa5f8d4
--- /dev/null
@@ -0,0 +1 @@
+Deprecate :attr:`webbrowser.MacOSXOSAScript._name` and use ``name`` instead.