Metadata-Version: 2.4
Name: rpaforge-libraries
Version: 0.3.9
Summary: RPA automation libraries for RPAForge
Author: RPAForge Contributors
License: Apache-2.0
Project-URL: Homepage, https://github.com/chelslava/rpaforge
Project-URL: Repository, https://github.com/chelslava/rpaforge.git
Project-URL: Issues, https://github.com/chelslava/rpaforge/issues
Keywords: rpa,automation,desktop-automation,web-automation,ocr,excel
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: rpaforge-core>=0.3.0
Requires-Dist: cryptography>=48.0
Requires-Dist: requests>=2.32.0
Provides-Extra: desktop
Requires-Dist: pywinauto>=0.6.8; extra == "desktop"
Requires-Dist: pillow>=10.0; extra == "desktop"
Provides-Extra: web
Requires-Dist: playwright>=1.40; extra == "web"
Provides-Extra: ocr
Requires-Dist: pytesseract>=0.3.10; extra == "ocr"
Requires-Dist: easyocr>=1.7; extra == "ocr"
Requires-Dist: pillow>=10.0; extra == "ocr"
Provides-Extra: excel
Requires-Dist: openpyxl>=3.1; extra == "excel"
Provides-Extra: database
Requires-Dist: sqlalchemy>=2.0; extra == "database"
Provides-Extra: keystore
Requires-Dist: keyring>=24.0; extra == "keystore"
Provides-Extra: spy
Requires-Dist: uiautomation>=2.0; extra == "spy"
Requires-Dist: websocket-client>=1.0; extra == "spy"
Requires-Dist: pynput>=1.7; extra == "spy"
Provides-Extra: dataframes
Requires-Dist: polars>=0.20; extra == "dataframes"
Provides-Extra: all
Requires-Dist: rpaforge-libraries[database,dataframes,desktop,excel,keystore,ocr,spy,web]; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Requires-Dist: pytest-playwright>=0.4.0; extra == "dev"
Requires-Dist: ruff>=0.15.0; extra == "dev"
Requires-Dist: mypy>=1.0; extra == "dev"

[🇷🇺 Русский](README.ru.md)

# RPAForge Libraries

[![PyPI version](https://badge.fury.io/py/rpaforge-libraries.svg)](https://badge.fury.io/py/rpaforge-libraries)
[![Python Support](https://img.shields.io/pypi/pyversions/rpaforge-libraries.svg)](https://pypi.org/project/rpaforge-libraries/)

RPA automation libraries for RPAForge.

## Included Libraries

| Library | Activities | Description | Status |
|---------|-----------|-------------|--------|
| `DesktopUI` | 20+ | Windows desktop automation (Win32, WPF) | 🟡 In Progress |
| `WebUI` | 15+ | Web automation with Playwright | 🟡 In Progress |
| `Excel` | 8+ | Excel file operations | 🟡 In Progress |
| `DataFrames` | 28+ | Tabular data — filter, sort, join, aggregate (Polars) | ✅ Stable |
| `Database` | 6+ | Database operations with SQLAlchemy | 🟡 In Progress |
| `OCR` | 5+ | Text recognition with Tesseract/EasyOCR | 🟡 In Progress |
| `Credentials` | 4+ | Secure credential management | 🟡 In Progress |
| `File` | 8+ | File and folder operations | 🟡 In Progress |
| `HTTP` | 5+ | REST API requests | 🟡 In Progress |
| `DateTime` | 6+ | Date/time utilities | 🟡 In Progress |
| `String` | 7+ | String manipulation | 🟡 In Progress |
| `Variables` | 4+ | Variable management and scoping | 🟡 In Progress |
| `Flow` | 4+ | Control flow — if, while, for | 🟡 In Progress |
| `Spy` | 3+ | Live UI element inspector overlay | 🟡 In Progress |

## Installation

```bash
# Core libraries (no optional deps)
pip install rpaforge-libraries

# With optional dependencies
pip install rpaforge-libraries[desktop]    # Desktop UI automation (pywinauto)
pip install rpaforge-libraries[web]        # Web UI automation (playwright)
pip install rpaforge-libraries[ocr]        # OCR support (tesseract, easyocr)
pip install rpaforge-libraries[excel]      # Excel operations (openpyxl)
pip install rpaforge-libraries[dataframes] # Tabular data (polars)
pip install rpaforge-libraries[all]        # All dependencies
```

## Usage

### DataFrames

```python
from rpaforge_libraries.DataFrames import DataFrames

df = DataFrames()

# Load data
df.read_csv("sales.csv", frame_name="sales")

# Filter, sort, aggregate
df.filter_rows("sales", "amount", ">", "1000", result_frame="big_sales")
df.sort("big_sales", by=["amount"], descending=True, result_frame="sorted")
total = df.aggregate("sorted", "amount", "sum")

# Export
df.write_csv("sorted", "top_sales.csv")
```

### Desktop UI

```python
from rpaforge_libraries.DesktopUI import DesktopUI

ui = DesktopUI()
ui.open_application("notepad.exe")
ui.wait_for_window("Notepad", timeout="10s")
ui.input_text("Hello from RPAForge!")
ui.close_window()
```

### Web UI

```python
from rpaforge_libraries.WebUI import WebUI

web = WebUI()
web.open_browser("https://example.com/login")
web.input_text("id:username", "myuser")
web.input_text("id:password", "mypass")
web.click_button("id:login-btn")
web.wait_for_page_load()
web.close_browser()
```

### Excel

```python
from rpaforge_libraries.Excel import Excel

xls = Excel()
xls.open_workbook("invoice.xlsx")
data = xls.read_worksheet("Sheet1")
for row in data:
    print(f"Processing: {row['Customer']}")
xls.close_workbook()
```

## License

Apache License 2.0
