Skip to content

Commit 2347dd1

Browse files
authored
deps(libraries): add upper bound specifiers and sync package versions (fixes #693) (#713)
* deps(libraries): add upper bound specifiers and sync package versions (fixes #693) * deps(libraries): allow cryptography 50.x to resolve PYSEC-2026-3552 --------- Co-authored-by: chelslava <chelslava@users.noreply.github.com>
1 parent 25588f2 commit 2347dd1

5 files changed

Lines changed: 29 additions & 23 deletions

File tree

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -420,9 +420,9 @@ pnpm build # Production build
420420

421421
| Package | Description | Version | Status |
422422
|---------|-------------|---------|--------|
423-
| `rpaforge-core` | Engine, debugger, JSON-RPC bridge | v0.3.5 | ✅ Stable |
424-
| `rpaforge-libraries` | 14 RPA library modules | v0.3.5 | ✅ Stable |
425-
| `rpaforge-studio` | Electron + React desktop UI | v0.3.5 | 🔄 Alpha |
423+
| `rpaforge-core` | Engine, debugger, JSON-RPC bridge | v0.4.5 | ✅ Stable |
424+
| `rpaforge-libraries` | 14 RPA library modules | v0.4.5 | ✅ Stable |
425+
| `rpaforge-studio` | Electron + React desktop UI | v0.4.5 | 🔄 Alpha |
426426
| `rpaforge-orchestrator` | Control Tower || 🔜 Planned |
427427

428428
---
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
"""Package version."""
22

3-
VERSION = "0.3.7"
3+
VERSION = "0.4.5"

packages/libraries/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ pip install rpaforge-libraries
3535
# With optional dependencies
3636
pip install rpaforge-libraries[desktop] # Desktop UI automation (pywinauto)
3737
pip install rpaforge-libraries[web] # Web UI automation (playwright)
38+
playwright install chromium # Download browser binaries for WebUI
3839
pip install rpaforge-libraries[ocr] # OCR support (pytesseract, pyzbar, pyautogui)
3940
pip install rpaforge-libraries[excel] # Excel operations (openpyxl)
4041
pip install rpaforge-libraries[dataframes] # Tabular data (polars)

packages/libraries/pyproject.toml

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "rpaforge-libraries"
7-
version = "0.4.1"
7+
version = "0.4.5"
88
description = "RPA automation libraries for RPAForge"
99
readme = "README.md"
1010
license = {text = "Apache-2.0"}
@@ -30,41 +30,41 @@ classifiers = [
3030
"Programming Language :: Python :: 3.13",
3131
]
3232
dependencies = [
33-
"rpaforge-core>=0.3.0",
34-
"cryptography>=48.0",
35-
"requests>=2.32.0",
33+
"rpaforge-core>=0.4.0,<0.5.0",
34+
"cryptography>=48.0,<51.0",
35+
"requests>=2.32.0,<3.0.0",
3636
]
3737

3838
[project.optional-dependencies]
3939
desktop = [
40-
"pywinauto>=0.6.8",
41-
"pillow>=10.0",
40+
"pywinauto>=0.6.8,<1.0.0",
41+
"pillow>=10.0,<12.0",
4242
]
4343
web = [
44-
"playwright>=1.40",
44+
"playwright>=1.40.0,<2.0.0",
4545
]
4646
ocr = [
47-
"pytesseract>=0.3.10",
48-
"pyzbar>=0.1.9",
49-
"pyautogui>=0.9.54",
50-
"pillow>=10.0",
47+
"pytesseract>=0.3.10,<1.0.0",
48+
"pyzbar>=0.1.9,<1.0.0",
49+
"pyautogui>=0.9.54,<1.0.0",
50+
"pillow>=10.0,<12.0",
5151
]
5252
excel = [
53-
"openpyxl>=3.1",
53+
"openpyxl>=3.1,<4.0",
5454
]
5555
database = [
56-
"sqlalchemy>=2.0",
56+
"sqlalchemy>=2.0,<3.0",
5757
]
5858
keystore = [
59-
"keyring>=24.0",
59+
"keyring>=24.0,<26.0",
6060
]
6161
spy = [
62-
"uiautomation>=2.0",
63-
"websocket-client>=1.0",
64-
"pynput>=1.7",
62+
"uiautomation>=2.0,<3.0",
63+
"websocket-client>=1.0,<2.0",
64+
"pynput>=1.7,<2.0",
6565
]
6666
dataframes = [
67-
"polars>=0.20",
67+
"polars>=0.20,<2.0",
6868
]
6969
all = [
7070
"rpaforge-libraries[desktop,web,ocr,excel,database,keystore,spy,dataframes]",

packages/libraries/tests/test_desktop_ui_unit.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,10 +156,15 @@ class TestDesktopUIImportError:
156156
"""Tests for import error handling."""
157157

158158
@pytest.mark.skipif(sys.platform != "win32", reason="Windows-only test")
159-
def test_connect_raises_import_error(self):
159+
def test_connect_raises_import_error(self, monkeypatch):
160160
"""Test that connect raises helpful error message when pywinauto not installed."""
161161
desktop = DesktopUI()
162162

163+
def mock_pywinauto(self):
164+
raise ImportError("pywinauto is required for DesktopUI library.")
165+
166+
monkeypatch.setattr(DesktopUI, "_pywinauto", property(mock_pywinauto))
167+
163168
with pytest.raises(ImportError, match="pywinauto is required"):
164169
desktop.connect_to_application(process_id=1234)
165170

0 commit comments

Comments
 (0)