Metadata-Version: 2.4
Name: jab-rpa
Version: 0.1.2
Summary: Python client for jab-rpa — automate Java desktop applications from Python
Author-email: carou-c <carolcorrea555@gmail.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows
Requires-Python: >=3.12
Requires-Dist: betterproto2<0.10,>=0.9.1
Requires-Dist: grpcio<2.0,>=1.80.0
Requires-Dist: pyautogui<0.10,>=0.9.54
Requires-Dist: pywin32>=311; sys_platform == 'win32'
Requires-Dist: types-pyautogui
Requires-Dist: types-pywin32
Provides-Extra: java11
Requires-Dist: jab-rpa-bin-java11==0.1.2; extra == 'java11'
Provides-Extra: java17
Requires-Dist: jab-rpa-bin-java17==0.1.2; extra == 'java17'
Provides-Extra: java21
Requires-Dist: jab-rpa-bin-java21==0.1.2; extra == 'java21'
Provides-Extra: java25
Requires-Dist: jab-rpa-bin-java25==0.1.2; extra == 'java25'
Provides-Extra: java8
Requires-Dist: jab-rpa-bin-java8==0.1.2; extra == 'java8'
Description-Content-Type: text/markdown

# jab-rpa

This project is a solution to a problem I had:

1. Automate processes that use a 32-bit Java desktop app
2. Do that, necessarily, from a 64-bit Python runtime

(1) means the existing tooling (like robocorp's excellent
[rpaframework.RPA.JavaAccessBridge](https://rpaframework.org/libraries/javaaccessbridge/python.html))
does not work properly.

(2) means, whatever the solution, it will involve some kind of IPC. My tool of
choice for this was gRPC.

This project exposes a fairly ergonomic Python API for developing RPA
workflows against Java desktop applications. The server includes multi-JVM
support (32-bit and 64-bit, Java 8 through 25) and a selector engine with
CSS-like syntax.

## Quickstart

1. Install from PyPI with the Java version extra:

   ```bash
   pip install jab-rpa[java8]      # Java 8 (proven in production)
   pip install jab-rpa[java17]     # Java 17
   # etc.
   ```

2. Use it:

```python
from jab_rpa import JabDriver

with JabDriver("My Java Application.*") as driver:
    button = driver.locator("push_button[name='Clear']")
    button.click()
```

See the [full documentation](https://carou-c.github.io/jab-rpa/) for details.

## Disclaimer

This package runs **only** on Windows, and supports both 32-bit and 64-bit JVMs.
If you exclusively target 64-bit JVMs,
[rpaframework.RPA.JavaAccessBridge](https://rpaframework.org/libraries/javaaccessbridge/python.html)
is a more mature option.

**Note:** Only Java 8 has been proven to work reliably in production. Java 11,
17, 21 and 25 are supported experimentally.

Bug reports, issues, discussions and contributions are always welcome.
