mirror of
https://github.com/HKUDS/OpenSpace.git
synced 2026-08-28 05:15:00 +00:00
fix: separate atomacos import from AppKit to avoid disabling all macOS features
The original change removed atomacos from dependencies but left it bundled in the same try/except as AppKit. Without atomacos installed, the ImportError made MACOS_LIBS_AVAILABLE=False, silently disabling every macOS feature (screenshots, window control, etc.) even though they never use atomacos. - Split import into independent try/except blocks - Guard get_accessibility_tree() with ATOMACOS_AVAILABLE - Condense redundant comments in requirements files - Tighten README note into a blockquote
This commit is contained in:
parent
22d6864df2
commit
59095d52c2
4 changed files with 13 additions and 12 deletions
|
|
@ -40,11 +40,7 @@ Set `"mode": "server"` in `openspace/config/config_grounding.json`:
|
|||
pip install pyobjc-core pyobjc-framework-cocoa pyobjc-framework-quartz
|
||||
```
|
||||
|
||||
`atomacos` is not included in the default macOS dependency set right now because
|
||||
its published releases require `pyautogui<0.9.42`, which conflicts with
|
||||
OpenSpace's `pyautogui>=0.9.54`. OpenSpace will still run without it, but the
|
||||
macOS accessibility-tree features will stay unavailable until that upstream
|
||||
constraint is resolved.
|
||||
> **Note:** `atomacos` is excluded because it requires `pyautogui<0.9.42` (appears unmaintained). Accessibility-tree features are currently unavailable.
|
||||
|
||||
**Permissions required** (macOS will prompt automatically on first run):
|
||||
- **Accessibility** (for GUI control)
|
||||
|
|
|
|||
|
|
@ -5,11 +5,16 @@ from openspace.utils.logging import Logger
|
|||
|
||||
try:
|
||||
import AppKit
|
||||
import atomacos
|
||||
MACOS_LIBS_AVAILABLE = True
|
||||
except ImportError:
|
||||
MACOS_LIBS_AVAILABLE = False
|
||||
|
||||
try:
|
||||
import atomacos
|
||||
ATOMACOS_AVAILABLE = True
|
||||
except ImportError:
|
||||
ATOMACOS_AVAILABLE = False
|
||||
|
||||
logger = Logger.get_logger(__name__)
|
||||
|
||||
_warning_shown = False
|
||||
|
|
@ -21,8 +26,9 @@ class MacOSAdapter:
|
|||
if not MACOS_LIBS_AVAILABLE and not _warning_shown:
|
||||
logger.warning("macOS libraries are not fully installed, some features may not be available")
|
||||
logger.info("To install missing libraries, run: pip install pyobjc-core pyobjc-framework-Cocoa pyobjc-framework-quartz")
|
||||
logger.info("Note: atomacos is currently optional because its published versions conflict with pyautogui>=0.9.54")
|
||||
_warning_shown = True
|
||||
if not ATOMACOS_AVAILABLE:
|
||||
logger.debug("atomacos not installed; accessibility-tree features unavailable (conflicts with pyautogui>=0.9.54)")
|
||||
self.available = MACOS_LIBS_AVAILABLE
|
||||
|
||||
def capture_screenshot_with_cursor(self, output_path: str) -> bool:
|
||||
|
|
@ -164,6 +170,8 @@ class MacOSAdapter:
|
|||
"""
|
||||
if not MACOS_LIBS_AVAILABLE:
|
||||
return {'error': 'macOS accessibility libraries not available'}
|
||||
if not ATOMACOS_AVAILABLE:
|
||||
return {'error': 'atomacos is not installed; accessibility-tree features require it'}
|
||||
|
||||
try:
|
||||
# Get frontmost application
|
||||
|
|
@ -178,7 +186,6 @@ class MacOSAdapter:
|
|||
|
||||
logger.info(f"Getting accessibility tree: {app_name} ({bundle_id})")
|
||||
|
||||
# Use atomacos to get application reference
|
||||
try:
|
||||
if bundle_id:
|
||||
app_ref = atomacos.getAppRefByBundleId(bundle_id)
|
||||
|
|
|
|||
|
|
@ -8,8 +8,7 @@ requests>=2.32.0
|
|||
# pyobjc-core>=12.0; sys_platform == 'darwin'
|
||||
# pyobjc-framework-cocoa>=12.0; sys_platform == 'darwin'
|
||||
# pyobjc-framework-quartz>=12.0; sys_platform == 'darwin'
|
||||
# atomacos is intentionally excluded for now: atomacos 3.2+/3.3 requires
|
||||
# pyautogui<0.9.42, which conflicts with OpenSpace's pyautogui>=0.9.54.
|
||||
# atomacos excluded: requires pyautogui<0.9.42, conflicts with >=0.9.54
|
||||
|
||||
# # Linux-specific dependencies (local server)
|
||||
# python-xlib>=0.33; sys_platform == 'linux'
|
||||
|
|
|
|||
|
|
@ -19,8 +19,7 @@ requests>=2.32.0
|
|||
# pyobjc-core>=12.0; sys_platform == 'darwin'
|
||||
# pyobjc-framework-cocoa>=12.0; sys_platform == 'darwin'
|
||||
# pyobjc-framework-quartz>=12.0; sys_platform == 'darwin'
|
||||
# atomacos is intentionally excluded for now: atomacos 3.2+/3.3 requires
|
||||
# pyautogui<0.9.42, which conflicts with OpenSpace's pyautogui>=0.9.54.
|
||||
# atomacos excluded: requires pyautogui<0.9.42, conflicts with >=0.9.54
|
||||
|
||||
# # Linux-specific dependencies (local server)
|
||||
# python-xlib>=0.33; sys_platform == 'linux'
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue