# ======
# <= 3.8
# ======

_dummy_threading.Condition.acquire
_dummy_threading.Condition.release
_dummy_threading.ExceptHookArgs
_dummy_threading.Lock
_dummy_threading.RLock
_dummy_threading.Thread.native_id
asyncio.WriteTransport.get_write_buffer_limits  # Documented. Exists in subclasses, but not in WriteTransport itself
asyncio.transports.WriteTransport.get_write_buffer_limits  # Documented. Exists in subclasses, but not in WriteTransport itself
builtins.float.__set_format__  # Internal method for CPython test suite
dummy_threading.Condition.acquire
dummy_threading.Condition.release
dummy_threading.Thread.native_id
typing.NamedTuple.__new__
typing.NamedTuple._asdict
typing.NamedTuple._make
typing.NamedTuple._replace
typing._SpecialForm.__new__
xml.etree.ElementTree.TreeBuilder.start  # Discrepancy between Python and C modules, fixed in bpo-39495
xml.etree.cElementTree.TreeBuilder.start  # bpo-39495
tkinter.Tcl  # Default values given in the stub are a white lie, see #9637
tkinter.Tk.__init__  # Default values given in the stub are a white lie, see #9637

# Exists at runtime, but missing from stubs
_?contextvars.ContextVar.__class_getitem__
dummy_threading.ExceptHookArgs
dummy_threading.Lock
dummy_threading.RLock
html.parser.HTMLParser.unescape
plistlib.Data.asBase64
plistlib.Data.fromBase64
tempfile.SpooledTemporaryFile.softspace
tkinter.commondialog.[A-Z_]+
tkinter.commondialog.TclVersion
tkinter.commondialog.TkVersion
tkinter.commondialog.wantobjects
tkinter.dialog.[A-Z_]+
tkinter.dialog.TclVersion
tkinter.dialog.TkVersion
tkinter.dialog.wantobjects
tkinter.dnd.Icon
tkinter.dnd.Tester
tkinter.dnd.test
tkinter.filedialog.[A-Z_]+
tkinter.filedialog.TclVersion
tkinter.filedialog.TkVersion
tkinter.filedialog.wantobjects
tkinter.simpledialog.wantobjects
tkinter.tix.wantobjects


# ======
# <= 3.9
# ======

builtins.input  # Incorrect default value in text signature, fixed in 3.10
collections.AsyncGenerator.__anext__  # async at runtime, deliberately not in the stub, see #7491
collections.AsyncGenerator.aclose  # async at runtime, deliberately not in the stub, see #7491
collections.AsyncGenerator.ag_await
collections.AsyncGenerator.ag_code
collections.AsyncGenerator.ag_frame
collections.AsyncGenerator.ag_running
collections.AsyncGenerator.asend  # async at runtime, deliberately not in the stub, see #7491. Pos-only differences also.
collections.AsyncIterator.__anext__  # async at runtime, deliberately not in the stub, see #7491
collections.ByteString  # see comments in py3_common.txt
collections.Callable
collections.Coroutine.cr_await
collections.Coroutine.cr_code
collections.Coroutine.cr_frame
collections.Coroutine.cr_running
collections.Generator.gi_code
collections.Generator.gi_frame
collections.Generator.gi_running
collections.Generator.gi_yieldfrom
collections.Mapping.get  # Adding None to the Union messed up mypy
collections.Sequence.index  # Supporting None in end is not mandatory
xxsubtype  # module missing from the stubs


# =======
# <= 3.10
# =======

email.contentmanager.typ
gettext.install  # codeset default value is ['unspecified'] so can't be specified
gettext.translation  # codeset default value is ['unspecified'] so can't be specified
inspect.Signature.from_builtin  # Removed in 3.11, can add if someone needs this
inspect.Signature.from_function  # Removed in 3.11, can add if someone needs this

# SpooledTemporaryFile implements IO except these methods before Python 3.11
# See also https://github.com/python/typeshed/pull/2452#issuecomment-420657918
tempfile.SpooledTemporaryFile.__next__
tempfile.SpooledTemporaryFile.readable
tempfile.SpooledTemporaryFile.seekable
tempfile.SpooledTemporaryFile.writable

tkinter.Tk.split  # Exists at runtime, but missing from stubs


# =======
# <= 3.11
# =======

_?bz2.BZ2Decompressor.__init__  # function does not accept parameters but C signature is set
configparser.ParsingError.filename
enum.Enum._generate_next_value_
importlib.abc.Finder.find_module
xml.etree.ElementTree.Element.__bool__  # Doesn't really exist; see comments in stub
xml.etree.cElementTree.Element.__bool__  # Doesn't really exist; see comments in stub


# =======
# <= 3.12
# =======

# Exists at runtime, but missing from stubs
lib2to3.btm_utils
lib2to3.fixer_util
lib2to3.patcomp
lib2to3.pgen2.grammar.Grammar.loads
lib2to3.pygram.pattern_symbols
lib2to3.pygram.python_symbols
lib2to3.pytree.Base.__new__
lib2to3.pytree.Base.children
lib2to3.pytree.Base.type
lib2to3.pytree.BasePattern.__new__
lib2to3.pytree.BasePattern.type
lib2to3.pytree.NegatedPattern.match
lib2to3.pytree.NegatedPattern.match_seq
tkinter.tix.[A-Z_]+
tkinter.tix.CObjView
tkinter.tix.DialogShell
tkinter.tix.ExFileSelectDialog
tkinter.tix.FileSelectDialog
tkinter.tix.FileTypeList
tkinter.tix.Grid
tkinter.tix.NoteBookFrame
tkinter.tix.OptionName
tkinter.tix.ResizeHandle
tkinter.tix.ScrolledGrid
tkinter.tix.ScrolledHList
tkinter.tix.ScrolledListBox
tkinter.tix.ScrolledTList
tkinter.tix.ScrolledText
tkinter.tix.ScrolledWindow
tkinter.tix.Shell
tkinter.tix.TclVersion
tkinter.tix.TkVersion


# ============================================================
# Allowlist entries that cannot or should not be fixed; <= 3.8
# ============================================================

asyncio.locks._ContextManagerMixin.__enter__  # Always raises; deliberately omitted from the stub
asyncio.locks._ContextManagerMixin.__exit__  # Always raises; deliberately omitted from the stub

# Incompatible changes introduced in Python 3.8.20
# (Remove once 3.8.20 becomes available for GitHub Actions)
email._header_value_parser.NLSET
email._header_value_parser.SPECIALSNL
email.errors.HeaderWriteError
email.utils.getaddresses
email.utils.parseaddr

# Weird special builtins that are typed as functions, but aren't functions
hashlib.sha3_\d+  # Class in 3.8, can't be subclassed at runtime, built-in function 3.9+
hashlib.shake_\d+  # Class in 3.8, can't be subclassed at runtime, built-in function 3.9+

zipfile.Path.open  # A property at runtime that works like a method.


# ============================================================
# Allowlist entries that cannot or should not be fixed; <= 3.9
# ============================================================

_ssl.RAND_egd  # Depends on the existence and flags of SSL
builtins.classmethod.__get__  # Runtime signature is incorrect (https://github.com/python/cpython/issues/93021)
builtins.property.__get__  # Runtime signature is incorrect (https://github.com/python/cpython/issues/93021)
builtins.staticmethod.__get__  # Runtime signature is incorrect (https://github.com/python/cpython/issues/93021)
builtins.memoryview.__iter__  # C type that implements __getitem__
builtins.memoryview.cast  # inspect.signature is incorrect about shape being kw-only
collections.Mapping.__reversed__  # Set to None at runtime for a better error message, omitted from typeshed

# Adding these reflected dunders to `typing.AbstractSet` causes a large number of false-positives. See #7414.
collections.Set.__rand__
collections.Set.__ror__
collections.Set.__rsub__
collections.Set.__rxor__

ssl.RAND_egd  # Depends on the existence and flags of SSL
test  # Modules that exist at runtime, but shouldn't be added to typeshed

# Runtime signature is incorrect (https://github.com/python/cpython/issues/93021)
types.ClassMethodDescriptorType.__get__
types.FunctionType.__get__
types.GetSetDescriptorType.__get__
types.LambdaType.__get__
types.MemberDescriptorType.__get__
types.MethodDescriptorType.__get__
types.WrapperDescriptorType.__get__


# =============================================================
# Allowlist entries that cannot or should not be fixed; <= 3.10
# =============================================================

# Side effects from module initialization
_compat_pickle.excname
email.contentmanager.maintype
email.contentmanager.subtype
inspect.k
inspect.mod_dict
inspect.v
json.encoder.i
lib2to3.pgen2.grammar.line
lib2to3.pgen2.grammar.name
lib2to3.pgen2.grammar.op

pstats.SortKey.__new__  # Derives from (str, Enum)
pydoc.Helper.symbol  # Loop variable in class https://github.com/python/typeshed/issues/6401#issuecomment-981178522
pydoc.Helper.symbols_  # Loop variable in class https://github.com/python/typeshed/issues/6401#issuecomment-981178522
pydoc.Helper.topic  # Loop variable in class https://github.com/python/typeshed/issues/6401#issuecomment-981178522
sqlite3.test  # Modules that exist at runtime, but shouldn't be added to typeshed
sqlite3\.test\..+  # Modules that exist at runtime, but shouldn't be added to typeshed
tkinter.EventType.__new__  # Derives from (str, Enum)
types.CodeType.replace  # stubtest thinks default values are None but None doesn't work at runtime


# =============================================================
# Allowlist entries that cannot or should not be fixed; <= 3.11
# =============================================================

.*.__buffer__  # We lie about the existence of these methods
.*.__release_buffer__  # We lie about the existence of these methods
asynchat.async_chat.encoding  # Removed in 3.12
asynchat.async_chat.use_encoding  # Removed in 3.12
asynchat.find_prefix_at_end  # Removed in 3.12
asyncore.dispatcher.addr  # Removed in 3.12
asyncore.dispatcher.handle_accepted  # Removed in 3.12
ctypes.test  # Modules that exist at runtime, but shouldn't be added to typeshed
ctypes\.test\..+  # Modules that exist at runtime, but shouldn't be added to typeshed
distutils\..*  # Removed in 3.12
lib2to3.tests  # Modules that exist at runtime, but shouldn't be added to typeshed
lib2to3\.tests\..+  # Modules that exist at runtime, but shouldn't be added to typeshed
pkgutil.ImpImporter\..*  # Removed in 3.12
pkgutil.ImpLoader\..*  # Removed in 3.12
poplib.POP3_SSL.stls  # bad declaration of inherited function. See poplib.pyi
tkinter.test  # Modules that exist at runtime, but shouldn't be added to typeshed
tkinter\.test\..+  # Modules that exist at runtime, but shouldn't be added to typeshed

# Exist at runtime for internal reasons, no need to put them in the stub
typing_extensions\.TypeAliasType\.__call__
typing_extensions\.TypeAliasType\.__init_subclass__
# We call them read-only properties, runtime implementation is slightly different
typing_extensions\.TypeAliasType\.__(parameters|type_params|name|module|value)__

unittest.test  # Modules that exist at runtime, but shouldn't be added to typeshed
unittest\.test\..+  # Modules that exist at runtime, but shouldn't be added to typeshed


# =============================================================
# Allowlist entries that cannot or should not be fixed; <= 3.12
# =============================================================

# Undocumented implementation details
cgi.FieldStorage.bufsize
cgi.FieldStorage.read_binary
cgi.FieldStorage.read_lines
cgi.FieldStorage.read_lines_to_eof
cgi.FieldStorage.read_lines_to_outerboundary
cgi.FieldStorage.read_multi
cgi.FieldStorage.read_single
cgi.FieldStorage.read_urlencoded
cgi.FieldStorage.skip_lines

ctypes._endian.DEFAULT_MODE  # Incorrectly star import.
ctypes._endian.RTLD_GLOBAL  # Incorrectly star import.
ctypes._endian.RTLD_LOCAL  # Incorrectly star import.
multiprocessing.dummy.Lock  # Factory function at runtime, but that wouldn't let us use it in type hints

# These multiprocessing proxy methods have *args, **kwargs signatures at runtime,
# But have more precise (accurate) signatures in the stub
multiprocessing.managers.DictProxy.__iter__
multiprocessing.managers.DictProxy.__len__
multiprocessing.managers.DictProxy.copy
multiprocessing.managers.DictProxy.items
multiprocessing.managers.DictProxy.keys
multiprocessing.managers.DictProxy.values

# Runtime signature is incorrect (https://github.com/python/cpython/issues/93021)
multiprocessing.managers.DictProxy.clear
multiprocessing.managers.DictProxy.popitem

# Undocumented implementation details
pipes.Template.makepipeline
pipes.Template.open_r
pipes.Template.open_w
sunau.Au_read.initfp
sunau.Au_write.initfp

threading.Lock  # Factory function at runtime, but that wouldn't let us use it in type hints
types.SimpleNamespace.__init__  # class doesn't accept positional arguments but has default C signature
typing_extensions\.Annotated  # Undocumented implementation details
