Registry / communication / pyobjc-framework-imagecapturecore

pyobjc-framework-imagecapturecore

JSON →
library12.2pypypiunverified

This library provides Python bindings for Apple's ImageCaptureCore.framework, enabling Python applications to interact with scanners, cameras, and other image capture devices on macOS. It is part of the larger PyObjC project, which wraps various macOS frameworks. The current version is 12.1, with releases tightly coupled to macOS SDK updates and Python version support.

pip install pyobjc-framework-imagecapturecore
INSTALL
IMPORT
SIG · PYOBJC-FRAMEWORK-I
P
pyobjc-framework-imagecapturecore
communicationpythonv12.2
Install
Import
Disk
Pass rate
0/ 10
Env Coverage0 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v? · pip install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.940 runs
build_error
glibc
py 3.103.940 runs
build_error
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

ImageCaptureCore
import ImageCaptureCore
The framework's classes are typically accessed as attributes of the imported module, e.g., `ImageCaptureCore.ICDeviceBrowser`.
ICDeviceBrowser
from ImageCaptureCore import ICDeviceBrowser

This quickstart demonstrates how to use `ICDeviceBrowser` to discover image capture devices on macOS. It sets up a delegate to receive callbacks for device additions and removals and runs a console event loop to keep the application responsive. Note that `PyObjCTools.AppHelper` requires `pyobjc-framework-AppKit` to be installed.

import ImageCaptureCore import objc from PyObjCTools import AppHelper class MyDeviceBrowserDelegate(objc.NSObject): def deviceBrowser_didAddDevice_moreComing_(self, browser, device, moreComing): print(f"[*] Found device: {device.name()} (UUID: {device.uuid()})") # You can access device properties here, e.g., device.type(), device.icon(). def deviceBrowser_didRemoveDevice_moreComing_(self, browser, device, moreComing): print(f"[-] Removed device: {device.name()} (UUID: {device.uuid()})") def main(): browser = ImageCaptureCore.ICDeviceBrowser.alloc().init() delegate = MyDeviceBrowserDelegate.alloc().init() browser.setDelegate_(delegate) print("Starting ImageCaptureCore device browser. Press Ctrl+C to exit.") print("Detected devices will be printed as they are found or removed.") browser.start() # Run the Cocoa event loop indefinitely to receive delegate callbacks. # This keeps the script alive and responsive to system events. AppHelper.runConsoleEventLoop(installInterrupt=True) if __name__ == "__main__": main()
Debug
Known issues
breakingPyObjC versions are tightly coupled with supported Python versions. PyObjC 12.0 dropped support for Python 3.9, requiring Python 3.10 or newer. PyObjC 11.0 dropped support for Python 3.8.
fix
Ensure your Python environment is version 3.10 or newer. Always check the `requires_python` metadata for the PyObjC version you intend to use.
affects: <12.0 (for Python 3.9), <11.0 (for Python 3.8)
gotchaPyObjC framework bindings are macOS-specific. Attempting to import or use `pyobjc-framework-imagecapturecore` on non-macOS operating systems will result in import errors or runtime failures.
fix
Run PyObjC applications exclusively on macOS platforms.
affects: All
gotchaMany ImageCaptureCore operations are asynchronous and rely on delegate callbacks. To receive these callbacks and keep your application responsive, you must run a Cocoa event loop (e.g., using `PyObjCTools.AppHelper.runConsoleEventLoop()` for console apps or within a GUI application's main loop).
fix
Integrate your ImageCaptureCore interactions within a running Cocoa event loop. For simple console scripts, `AppHelper.runConsoleEventLoop()` is the idiomatic way.
affects: All
gotchaWhen subclassing Objective-C classes in Python with PyObjC, the interaction between `__new__` and `__init__` can be nuanced. If your Python subclass (or one of its superclasses) explicitly defines `__new__`, then `__init__` will be called. However, if `__new__` is *not* explicitly overridden by the user, `__init__` will *not* be called. This can lead to objects not being initialized as expected.
fix
Carefully review the PyObjC documentation on subclassing Objective-C classes in Python, especially regarding `__new__` and `init` methods, to ensure correct object initialization and avoid uninitialized objects.
affects: 10.3.0 and >=10.3.1
gotchaPyObjC 11.1 introduced a change in how it models initializer methods to align with Clang's Automatic Reference Counting (ARC). Methods in the 'init' family (e.g., `init` methods) now correctly 'steal' the reference to `self` and return a new reference. This change can affect complex object graphs or manual reference counting scenarios in Python subclasses.
fix
If you have complex Python subclasses that override Objective-C `init` methods, review their reference counting behavior to ensure it aligns with ARC semantics after the PyObjC 11.1 update.
affects: 11.1 and later
Upgrade
Version history
12.2latest on PyPI · released May 30, 2026
Audit
Dependencies
pyobjc-corerequiredThe fundamental bridge for Objective-C, required by all PyObjC framework bindings.
pyobjc-framework-AppKitoptionalNeeded for `PyObjCTools.AppHelper` to run Cocoa event loops, which are common for handling asynchronous ImageCaptureCore operations.
pyobjcoptionalA metapackage that installs `pyobjc-core` and all framework bindings (including ImageCaptureCore).
Agent activity
20 hits · last 30 days
node
18
Amazon
1
OpenAI (training)
1
Resources
pyobjc-framework-imagecapturecore — pip install pyobjc-framework-imagecapturecore · libregistry