# Introduction

The PyObjC project aims to provide a bridge between the Python and Objective-C programming languages on macOS. The bridge is intended to be fully bidirectional, allowing the Python programmer to take full advantage of the power provided by various Objective-C based toolkits and the Objective-C programmer transparent access to Python based functionality.

PyObjC not only includes the basic bridge, but also bindings to most Apple frameworks on macOS.

The most important usage of this is writing Cocoa GUI applications on macOS in pure Python. See our tutorial for an example of this.

# Release information

PyObjC 10.1 was released on 2023-12-08. See the changelog for more information. PyObjC 9 supports Python 3.7 and later.

PyObjC 9.2 is the last version supporting Python 3.7. PyObjC 8.5 is the last version supporting Python 3.6. PyObjC 5.3 is the last version supporting Python 2. These versions are no longer supported.

# Supported platforms

PyObjC supports Python 3.7 or later and does not support Python 2. PyObjC does not support other python implementation such as PyPy and Jython.

PyObjC is regularly tested on macOS 10.14 and should work on macOS 10.9 or later for the i386 and x86_64 architectures.

PyObjC only supports macOS, and is not supported on other platforms (iOS, Linux, ...).

# General documentation

Using PyObjC

- Installing PyObjC
- An introduction to PyObjC
- Old Tutorials
- Examples

Various notes

- Using Objective-C protocols
- Using Objective-C blocks
- Using Objective-C SIMD types
- Converting values between Python and Objective-C
- Support for "FSRef" and "FSSpec"
- Runtime introspection with PyObjC
- Object-graph serializing (NSCoding and pickle)
- Key-Value Observing
- Objective-C exceptions
- (old) "import Quartz" or "import CoreGraphics"
- Using NSXPCInterface
- Using ctypes with PyObjC
- Code Signing and Notarizing
- Dealing with API deprecations

Framework bindings

- Overview of macOS frameworks and their wrappers
- API Notes for PyObjC framework wrappers

Metadata system

- PyObjC metadata system
- Generated types for C types

Historical documentation

- Using PyObjC with Interface Builder
- Objective-C Garbage Collection

Reference documentation

- API for 'pyobjc-core'
- Contextmanagers for CoreGraphics
- Utility methods for threading
- PyObjCTools.AppCategories in pyobjc-framework-Cocoa
- PyObjCTools.FndCategories in pyobjc-framework-Cocoa

Developing PyObjC

- PyObjC development is hosted at Github
- The PyObjC core team
- Sketch of the release workflow

Important resources

- Issue tracker
- PyObjC-dev mailing list, a low-volume mailinglist for PyObjC development.
- Mailing list for the PythonMac SIG, A mailing list for anyone developing with Python on macOS.
- Repository browser