bpo-42255: Deprecate webbrowser.MacOSX from Python 3.11 (GH-27837)

Co-authored-by: Ɓukasz Langa <lukasz@langa.pl>
diff --git a/Doc/library/webbrowser.rst b/Doc/library/webbrowser.rst
index bd09191..27e0b51 100644
--- a/Doc/library/webbrowser.rst
+++ b/Doc/library/webbrowser.rst
@@ -143,9 +143,9 @@
 +------------------------+-----------------------------------------+-------+
 | ``'windows-default'``  | :class:`WindowsDefault`                 | \(2)  |
 +------------------------+-----------------------------------------+-------+
-| ``'macosx'``           | :class:`MacOSX('default')`              | \(3)  |
+| ``'macosx'``           | :class:`MacOSXOSAScript('default')`     | \(3)  |
 +------------------------+-----------------------------------------+-------+
-| ``'safari'``           | :class:`MacOSX('safari')`               | \(3)  |
+| ``'safari'``           | :class:`MacOSXOSAScript('safari')`      | \(3)  |
 +------------------------+-----------------------------------------+-------+
 | ``'google-chrome'``    | :class:`Chrome('google-chrome')`        |       |
 +------------------------+-----------------------------------------+-------+
@@ -174,6 +174,9 @@
 .. versionadded:: 3.3
    Support for Chrome/Chromium has been added.
 
+.. deprecated-removed:: 3.11 3.13
+   :class:`MacOSX` is deprecated, use :class:`MacOSXOSAScript` instead.
+
 Here are some simple examples::
 
    url = 'https://docs.python.org/'
diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst
index d6a95a2..896a292 100644
--- a/Doc/whatsnew/3.11.rst
+++ b/Doc/whatsnew/3.11.rst
@@ -292,6 +292,10 @@
   Python 3.10 or newer. See the :pep:`617` (New PEG parser for CPython).
   (Contributed by Victor Stinner in :issue:`40360`.)
 
+* :class:`webbrowser.MacOSX` is deprecated and will be removed in Python 3.13.
+  It is untested and undocumented and also not used by webbrowser itself.
+  (Contributed by Dong-hee Na in :issue:`42255`.)
+
 
 Removed
 =======
diff --git a/Lib/webbrowser.py b/Lib/webbrowser.py
index ec3cece..d8a9915 100755
--- a/Lib/webbrowser.py
+++ b/Lib/webbrowser.py
@@ -8,6 +8,7 @@
 import sys
 import subprocess
 import threading
+import warnings
 
 __all__ = ["Error", "open", "open_new", "open_new_tab", "get", "register"]
 
@@ -629,6 +630,8 @@ class MacOSX(BaseBrowser):
         Internet System Preferences panel, will be used.
         """
         def __init__(self, name):
+            warnings.warn(f'{self.__class__.__name__} is deprecated in 3.11'
+                          ' use MacOSXOSAScript instead.', DeprecationWarning, stacklevel=2)
             self.name = name
 
         def open(self, url, new=0, autoraise=True):
diff --git a/Misc/NEWS.d/next/Library/2021-08-19-23-49-10.bpo-42255.ofe3ms.rst b/Misc/NEWS.d/next/Library/2021-08-19-23-49-10.bpo-42255.ofe3ms.rst
new file mode 100644
index 0000000..84a02c4
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2021-08-19-23-49-10.bpo-42255.ofe3ms.rst
@@ -0,0 +1,3 @@
+:class:`webbrowser.MacOSX` is deprecated and will be removed in Python 3.13.
+It is untested and undocumented and also not used by webbrowser itself.
+Patch by Dong-hee Na.