{"library":"pyobjc-framework-installerplugins","title":"PyObjC Framework InstallerPlugins","description":"PyObjC is a bridge between Python and Objective-C, enabling Python scripts to interact with macOS frameworks and Cocoa libraries. The `pyobjc-framework-installerplugins` package provides Python wrappers specifically for the InstallerPlugins framework, which allows developers to extend the macOS installation process with custom steps and UI. The current version is 12.1, and PyObjC generally follows a release cadence tied to macOS SDK updates and Python version support, with major versions often introducing significant changes or dropping older Python support.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install pyobjc-framework-installerplugins"],"cli":null},"imports":["import InstallerPlugins","from Foundation import NSObject","import objc"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from Foundation import NSObject\nimport objc\nimport InstallerPlugins\n\nclass MyCustomInstallerSection(NSObject):\n    # The 'alloc().init()' pattern is standard for Objective-C object creation.\n    # Python methods often use trailing underscores for Objective-C selector arguments.\n    \n    # Example: Defining a method that an Installer Plugin might call.\n    # In a real plugin, you would override specific methods like 'initWithSection_'.\n    @objc.python_method\n    def myPluginMethod_(self, installerSection):\n        print(f\"My custom installer plugin method called by: {installerSection}\")\n        # You'd typically interact with installerSection here\n        return True\n\n# This simple script demonstrates importing the framework and defining a class.\n# A real Installer Plugin requires specific project structure and bundling\n# (e.g., using py2app) to be loaded by the macOS Installer.app.\nif __name__ == '__main__':\n    print(\"InstallerPlugins framework imported successfully.\")\n    # Instantiate the class (though it won't be 'used' without Installer.app)\n    plugin_instance = MyCustomInstallerSection.alloc().init()\n    print(f\"Instance created: {plugin_instance}\")\n    # Demonstrate calling a custom method (for illustrative purposes)\n    # In practice, the macOS Installer would call specific methods on your plugin.\n    # Replace 'None' with a mock InstallerSection object if testing interaction.\n    plugin_instance.myPluginMethod_(None)\n","lang":"python","description":"This quickstart demonstrates how to import the `InstallerPlugins` framework and define a basic Objective-C compatible class in Python. Actual usage as an Installer Plugin requires a specific project structure, Objective-C class definition patterns, and bundling into a `.bundle` within an installer package, typically managed with tools like `py2app` and proper `InstallerSections.plist` configuration. This example focuses on the Python-side import and class definition.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":null,"pypi_latest":"12.1","is_stale":null,"summary":{"python_range":"3.10–3.9","success_rate":0,"avg_install_s":null,"avg_import_s":null,"wheel_type":null},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pyobjc-framework-installerplugins","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pyobjc-framework-installerplugins","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":3.3,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pyobjc-framework-installerplugins","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pyobjc-framework-installerplugins","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":3.2,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pyobjc-framework-installerplugins","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pyobjc-framework-installerplugins","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":3.1,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pyobjc-framework-installerplugins","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pyobjc-framework-installerplugins","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":2.7,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pyobjc-framework-installerplugins","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pyobjc-framework-installerplugins","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":4,"import_time_s":null,"mem_mb":null,"disk_size":null}]}}