Registry / pyobjc-framework-discrecording

pyobjc-framework-discrecording

JSON →
library12.2pypypiunverified

PyObjC-framework-DiscRecording provides Python wrappers for Apple's DiscRecording framework on macOS, enabling interaction with CD/DVD burning hardware and related functionalities. It is part of the larger PyObjC project, which provides access to macOS frameworks from Python. The library is actively maintained with frequent updates to align with new macOS SDK versions and Python releases, currently at version 12.1.

pip install pyobjc-framework-discrecording
INSTALL
IMPORT
SIG · PYOBJC-FRAMEWORK-D
P
pyobjc-framework-discrecording
pythonv12.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.920 runs
build_error
glibc
py 3.103.920 runs
build_error
Code
Verified usage

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

DiscRecording
import DiscRecording
The framework itself is imported as a module.
DRDevice
from DiscRecording import DRDevice
from pyobjc_framework_discrecording import DRDevice
Classes within the framework are directly exposed in the top-level framework module, not the PyPI package name.

This example demonstrates how to import the DiscRecording framework and list all detected disc burning devices on the system, printing their basic information. This uses the `DRDevice` class to query device properties.

import DiscRecording import objc def list_disc_devices(): devices = DiscRecording.DRDevice.allDevices() if not devices: print("No disc burning devices found.") return print("Available Disc Devices:") for device in devices: print(f" Name: {device.displayName()}") print(f" Vendor: {device.vendorName()}") print(f" Product: {device.productName()}") print(f" Bus: {device.busName()}") print(f" Write Capabilities: {device.writeCapabilities()['DRDeviceCanWriteDisc']}") print(f" Can Burn: {device.canBurn()}") print(" ---") if __name__ == "__main__": # Ensure the Objective-C runtime is initialized # (often handled automatically in app contexts, but explicit for scripts) list_disc_devices()
Debug
Known issues
breakingPyObjC versions frequently drop support for older Python versions. PyObjC 12.0 dropped Python 3.9, and PyObjC 11.0 dropped Python 3.8. Ensure your Python environment meets the `requires_python` specification for your PyObjC version.
fix
Upgrade your Python interpreter to a supported version (e.g., Python 3.10+ for PyObjC 12.1) before upgrading PyObjC.
affects: 11.0, 12.0+
breakingStarting with PyObjC 11.1, the core bridge's Automatic Reference Counting (ARC) behavior for initializer methods (those in the 'init' family) was updated to more closely align with `clang` documentation. This means `init` methods now correctly 'steal' a reference to `self` and return a new one. Code that manually manages reference counts around `init` calls might need adjustment.
fix
Review code that interacts with `init` family methods, especially if it relies on manual `retain`/`release` or assumes specific reference counts before and after `init` calls. Trust PyObjC's ARC modeling unless you have specific reasons otherwise.
affects: 11.1+
gotchaIn PyObjC 10.3, there was a change affecting how `__init__` is called when a class implements its own `__new__`. While partially reverted in 10.3.1, code relying on the PyObjC-provided `__new__` (i.e., not overridden in Python) still cannot use `__init__`. If you implement `__new__` in your Python subclass of an Objective-C class, `__init__` will be called. Otherwise, it won't.
fix
If you override `__new__` in a Python subclass, ensure `__init__` is correctly implemented. If you rely on PyObjC's default `__new__`, be aware that `__init__` will not be called, and perform initialization directly in `__new__` or another appropriate method.
affects: 10.3 - 10.3.1
gotchaPyObjC does not currently support Python's experimental free-threading (PEP 703), which was introduced in Python 3.13. Running PyObjC with a free-threading enabled Python 3.13 interpreter may lead to unexpected behavior or crashes.
fix
If using Python 3.13, ensure it is not compiled with free-threading support enabled, or use a Python version for which free-threading is not a factor when working with PyObjC.
affects: 10.3, 11.0+
gotchaAs of PyObjC 10.1, `os.fspath()` will not work directly with Cocoa `NSURL` or `CFURLRef` objects that do not refer to local filesystem paths, raising a `TypeError`. It only works for URLs convertible to local paths.
fix
For non-filesystem-bound URLs, use Cocoa methods to extract string representations (e.g., `url.absoluteString()`) rather than relying on `os.fspath()` for path-like object conversion.
affects: 10.1+
Upgrade
Version history
12.2latest on PyPI · released May 30, 2026
Audit
Dependencies
pyobjc-corerequiredThis package provides the core bridge between Python and Objective-C, essential for all PyObjC framework wrappers.
Agent activity
4 hits · last 30 days
node
4
Resources
pyobjc-framework-discrecording — pip install pyobjc-framework-discrecording · libregistry