pyobjc-framework-ExternalAccessory
Wrappers for the framework ExternalAccessory on macOS
What it is and what it does
This package wraps Apple's ExternalAccessory framework for macOS, translating Objective-C APIs into Python. It allows Python code running on macOS to interact with external hardware devices—such as accessories connected via USB, Bluetooth, or other standard interfaces—by exposing the native framework's device discovery, configuration, and communication capabilities.
The package is part of the larger PyObjC project and does not include its own documentation; users must consult Apple's official ExternalAccessory framework documentation alongside PyObjC's general translation guides. It requires macOS, Python 3.10 or later, and the pyobjc-core and pyobjc-framework-Cocoa packages. Installation is platform-specific, with wheels provided for recent Python versions including free-threading builds.
Use it for:
- Communicate with USB or Bluetooth accessories from a Python macOS application.
- Discover and enumerate external hardware devices connected to a Mac.
- Build macOS control software for custom or third-party hardware peripherals.
- Integrate hardware device management into a Python tool running on macOS.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides Python bindings to macOS's ExternalAccessory framework for communicating with external hardware devices.
Yes, if you are developing on macOS and need to interact with external hardware via the native ExternalAccessory framework. The package is actively maintained, has no known vulnerabilities, and carries a permissive MIT license. Install friction is moderate due to platform and Python version specificity, but wheels are available for all supported versions. Not applicable on non-macOS systems.
Install
pyobjc-framework-externalaccessory on PyPI
pip
pip install pyobjc-framework-externalaccessoryuv
uv add pyobjc-framework-externalaccessorypoetry
poetry add pyobjc-framework-externalaccessoryInstalling pyobjc-framework-ExternalAccessory
Before you install
Medium install friction: platform-specific wheels for macOS only (Python 3.10–3.15, including free-threading variants). Requires pyobjc-core and pyobjc-framework-Cocoa as runtime dependencies. Active maintenance with recent releases.
License in practice
MIT license permits commercial and private use with minimal restrictions—suitable for most projects.
Quickstart
pip install pyobjc-framework-externalaccessory
import ExternalAccessory
# Access ExternalAccessory framework APIs via the imported module
macOS required; Python 3.10 or later; pyobjc-core and pyobjc-framework-Cocoa must be installed
Verify before relying
- Whether the ExternalAccessory framework supports all device types your hardware requires.
- Whether free-threading (3.13t, 3.14t, 3.15t) variants are production-ready for your use case.
- Specific device communication patterns and API surface exposed by this wrapper.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 2 — pyobjc-core, pyobjc-framework-Cocoa |
| Maintenance | actively maintained — 3 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 656,278/month — #5,496 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pyobjc_framework_externalaccessory-12.2.2-cp310-cp310-macosx_10_9_universal2.whl; pyobjc_framework_externalaccessory-12.2.2-cp311-cp311-macosx_10_9_universal2.whl; pyobjc_framework_externalaccessory-12.2.2-cp312-cp312-macosx_10_13_universal2.whl; pyobjc_framework_externalaccessory-12.2.2-cp313-cp313-macosx_10_13_universal2.whl; pyobjc_framework_externalaccessory-12.2.2-cp313-cp313t-macosx_10_13_universal2.whl; pyobjc_framework_externalaccessory-12.2.2-cp314-cp314-macosx_10_15_universal2.whl; pyobjc_framework_externalaccessory-12.2.2-cp314-cp314t-macosx_10_15_universal2.whl; pyobjc_framework_externalaccessory-12.2.2-cp315-cp315-macosx_10_15_universal2.whl; pyobjc_framework_externalaccessory-12.2.2-cp315-cp315t-macosx_10_15_universal2.whl
Keywords: PyObjC, ExternalAccessory
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
pyobjc-framework-DeviceDiscoveryExtensionProvides Python bindings for Apple's…
permissive · top 15,000 on PyPI
pyobjc-framework-CryptoTokenKitProvides Python bindings to macOS's…
permissive · top 15,000 on PyPI
pyobjc-framework-NetworkProvides Python bindings to Apple's Network…
permissive · top 15,000 on PyPI
pyobjc-framework-SyncServicesProvides Python bindings to macOS's…
permissive · top 15,000 on PyPI
pyobjc-framework-FSKitProvides Python bindings to macOS's FSKit…
permissive · top 15,000 on PyPI
pyobjc-framework-IOBluetoothProvides Python bindings to macOS's IOBluetooth…
permissive · top 15,000 on PyPI
pyobjc-framework-libxpcProvides Python bindings to the macOS XPC…
permissive · top 15,000 on PyPI
pyobjc-framework-SystemExtensionsProvides Python bindings to macOS's…
permissive · top 15,000 on PyPI
pyobjc-framework-CoreAudioProvides Python bindings to macOS's CoreAudio…
permissive · top 15,000 on PyPI
pyobjc-framework-ThreadNetworkProvides Python bindings to Apple's…
permissive · top 15,000 on PyPI