A remarkably powerful dynamic programming language

Python for Mac

Join our mailing list

Stay up to date with latest software releases, news, software discounts, deals and more.

Subscribe

Python 3.11.2

  -  40.9 MB  -  Open Source

Sometimes latest versions of the software can cause issues when installed on older devices or devices running an older version of the operating system. Software makers usually fix these issues but it can take them some time. What you can do in the meantime is to download and install an older version of Python 3.11.2.


For those interested in downloading the most recent release of Python for Mac or reading our review, simply click here.


All old versions distributed on our website are completely virus-free and available for download at no cost.


We would love to hear from you

If you have any questions or ideas that you want to share with us - head over to our Contact page and let us know. We value your feedback!

  • Python 3.11.2 Screenshots

    The images below have been resized. Click on them to view the screenshots in full size.

    Python 3.11.2 Screenshot 1
  • Python 3.11.2 Screenshot 2
  • Python 3.11.2 Screenshot 3
  • Python 3.11.2 Screenshot 4
  • Python 3.11.2 Screenshot 5

What's new in this version:

Core and Builtins:
-Fix the defs and kwdefs arguments to PyEval_EvalCodeEx() and a reference leak in that function
- Fix wrong lineno in exception message on continue or break which are not in a loop. Patch by Dong-hee Na
- Fix is_normalized() to properly handle the UCD 3.2.0 cases. Patch by Dong-hee Na
- Fix a possible memory leak in the parser when raising MemoryError. Patch by Pablo Galindo
- Fix potential memory underallocation issue for instances of int subclasses with value zero
- Fixed segfault in property.getter/setter/deleter that occurred when a property subclass overrode the __new__ method to return a non-property instance
- Fix race while iterating over thread states in clearing threading.local. Patch by Kumar Aditya
- Fix misleading default value in input()’s __text_signature__
- Fix int.__sizeof__() calculation to include the 1 element ob_digit array for 0 and False
- Update the native_thread_id field of PyThreadState after fork
- Fix incorrect result and delay in socket.getfqdn(). Patch by Dominic Socular
-Initialize frame->previous in frameobject.c to fix a segmentation fault when accessing frames created by PyFrame_New()
- Honor existing errors obtained when searching for mismatching parentheses in the tokenizer. Patch by Pablo Galindo
- bpo-32782: ctypes arrays of length 0 now report a correct itemsize when a memoryview is constructed from them, rather than always giving a value of 0.

Library:
- [Enum] - fix psuedo-flag creation
- Fix regression when passing None as second or third argument to FutureIter.throw.
- Avoid potential unexpected freeaddrinfo call (double free) in socket when when a libc getaddrinfo() implementation leaves garbage in an output pointer when returning an error. Original patch by Sergey G. Brester.
- Remove unused references to TimerHandle in asyncio.base_events.BaseEventLoop._add_callback.
- Make zipfile.Path.open() and zipfile.Path.read_text() also accept encoding as a positional argument. This was the behavior in Python 3.9 and earlier. 3.10 introduced a regression where supplying it as a positional argument would lead to a TypeError.
- Fix typing.get_type_hints() on '*tuple[...]' and *tuple[...]. It must not drop the Unpack part.
- Fix a Windows asyncio bug with named pipes where a client doing os.stat() on the pipe would cause an error in the server that disabled serving future requests
- Modify random.choice() implementation to once again work with NumPy arrays
-Avoid RecursionError on repr if a dataclass field definition has a cyclic reference
- pass encoding kwarg to subprocess in platform
- Fix crash in pyexpat by statically allocating PyExpat_CAPI capsule
- Fix unittest.mock.Mock not respecting the spec for attribute names prefixed with assert
-Fix asyncio.open_connection() to skip binding to local addresses of different family. Patch by Kumar Aditya
- Fix the interaction of unittest.mock.seal() with unittest.mock.AsyncMock
- http.server now checks that an index page is actually a regular file before trying to serve it. This avoids issues with directories named index.html.
- Remove any deprecation warnings in asyncio.get_event_loop(). They are deferred to Python 3.12.
-Fix handling of partial and invalid UNC drives in ntpath.splitdrive(), and in ntpath.normpath() on non-Windows systems. Paths such as ‘\server’ and ‘\’ are now considered by splitdrive() to contain only a drive, and consequently are not modified by normpath() on non-Windows systems. The behaviour of normpath() on Windows systems is unaffected, as native OS APIs are used. Patch by Eryk Sun, with contributions by Barney Gale.
-Fix crash when creating an instance of _ctypes.CField.
-Fix a reference undercounting issue in ctypes.Structure with from_param() results larger than a C pointer
- Fix regression in asyncio where a subprocess would sometimes lose data received from pipe
- Fix tuple subclasses being cast to tuple when used as enum values
-Update HTTPError to be initialized properly, even if the fp is None. Patch by Dong-hee Na
-Fix inspect.getsource() handling of decorator calls with nested parentheses
-Fix .save() method for LWPCookieJar and MozillaCookieJar: saved file was not truncated on repeated save
-Fix doctest failure on types.MethodWrapperType in modules
-Fix double-free bug in Argument Clinic str_converter by extracting memory clean up to a new post_parsing section
-Fix refcount error when arguments are packed to tuple in Argument Clinic
-Several improvements to inspect.signature()’s handling of __text_signature. - Fixes a case where inspect.signature() dropped parameters - Fixes a case where inspect.signature() raised tokenize.TokenError - Allows inspect.signature() to understand defaults involving binary operations of constants - inspect.signature() is documented as only raising TypeError or ValueError, but sometimes raised RuntimeError. These cases now raise ValueError - Removed a dead code path
-Fix a 3.11 regression in asynccontextmanager(), which caused it to propagate exceptions with incorrect tracebacks and fix a 3.11 regression in contextmanager(), which caused it to propagate exceptions with incorrect tracebacks for StopIteration.
- bpo-44817: Ignore WinError 53 (ERROR_BAD_NETPATH), 65 (ERROR_NETWORK_ACCESS_DENIED) and 161 (ERROR_BAD_PATHNAME) when using ntpath.realpath()
- bpo-40447: Accept os.PathLike (such as pathlib.Path) in the stripdir arguments of compileall.compile_file() and compileall.compile_dir()
- bpo-36880: Fix a reference counting issue when a ctypes callback with return type py_object returns None, which could cause crashes

Documentation:
- Document existing attr parameter to curses.window.vline() function in curses
- Remove claim in documentation that the stripdir, prependdir and limit_sl_dest parameters of compileall.compile_dir() and compileall.compile_file() could be bytes.
-Use sphinxext-opengraph to generate OpenGraph metadata

Tests:
- test_tarfile has been updated to pass when run as a high UID
- Start running SSL tests with OpenSSL 3.1.0-beta1
- Add functional test for Argument Clinic

Build:
- Allow overriding Windows dependencies versions and paths using MSBuild properties

macOS:
- Update macOS installer to OpenSSL 1.1.1s

Join our mailing list

Stay up to date with latest software releases, news, software discounts, deals and more.

Subscribe