Skip to main content

Introduction

RPA Framework is a collection of open-source libraries and tools for Robotic Process Automation (RPA), and it is designed to be used with both Robot Framework and Python. The goal is to offer well-documented and actively maintained core libraries for Software Robot Developers.

Learn more about RPA at Robocorp Documentation.

The project is:


Packages

rpaframework latest version rpaframework-assistant latest version rpaframework-aws latest version rpaframework-core latest version rpaframework-google latest version rpaframework-hubspot latest version rpaframework-openai latest version rpaframework-pdf latest version rpaframework-recognition latest version rpaframework-windows latest version

From the above packages, rpaframework-core and rpaframework-recognition are support packages, which alone do not contain any libraries.

Libraries

The RPA Framework project currently includes the following libraries:

The x in the PACKAGE column means that library is included in the rpaframework package and for example. x,pdf means that RPA.PDF library is provided in both the rpaframework and rpaframework-pdf packages.

LIBRARY NAME

DESCRIPTION

PACKAGE

Archive

Archiving TAR and ZIP files

x

Assistant

Display information to a user and request input.

assistant

Browser.Selenium

Control browsers and automate the web

x

Browser.Playwright

Newer way to control browsers

special (more below)

Calendar

For date and time manipulations

x

Cloud.AWS

Use Amazon AWS services

x,aws

Cloud.Azure

Use Microsoft Azure services

x

Cloud.Google

Use Google Cloud services

google

Crypto

Common hashing and encryption operations

x

Database

Interact with databases

x

Desktop

Cross-platform desktop automation

x

Desktop.Clipboard

Interact with the system clipboard

x

Desktop.OperatingSystem

Read OS information and manipulate processes

x

DocumentAI

Intelligent Document Processing wrapper

x

DocumentAI.Base64AI

Intelligent Document Processing service

x

DocumentAI.Nanonets

Intelligent Document Processing service

x

Email.Exchange

E-Mail operations (Exchange protocol)

x

Email.ImapSmtp

E-Mail operations (IMAP & SMTP)

x

Excel.Application

Control the Excel desktop application

x

Excel.Files

Manipulate Excel files directly

x

FileSystem

Read and manipulate files and paths

x

FTP

Interact with FTP servers

x

HTTP

Interact directly with web APIs

x

Hubspot

Access HubSpot CRM data objects

hubspot

Images

Manipulate images

x

JavaAccessBridge

Control Java applications

x

JSON

Manipulate JSON objects

x

MFA

Authenticate using one-time passwords (OTP) & OAuth2

x

MSGraph

Access Microsoft 365 via the Microsoft Graph API

x

Notifier

Notify messages using different services

x

OpenAI

Artificial Intelligence service

openai

Outlook.Application

Control the Outlook desktop application

x

PDF

Read and create PDF documents

x,pdf

Robocorp.Process

Use the Robocorp Process API

x

Robocorp.WorkItems

Use the Robocorp Work Items API

x

Robocorp.Vault

Use the Robocorp Secrets API

x

Robocorp.Storage

Use the Robocorp Asset Storage API

x

Salesforce

Salesforce operations

x

SAP

Control SAP GUI desktop client

x

Slack

Send messages and interact with Slack workspaces

x

Smartsheet

Access Smartsheet sheets

x

Tables

Manipulate, sort, and filter tabular data

x

Tasks

Control task execution

x

Twitter

Twitter API interface

x

Windows

Alternative library for Windows automation

x,windows

Word.Application

Control the Word desktop application

x

Installation of RPA.Browser.Playwright

The RPA.Browser.Playwright at the moment requires special installation, because of the package size and the post install step it needs to be fully installed.

Minimum required conda.yaml to install Playwright:

channels:
  - conda-forge
dependencies:
  - python=3.10.14
  - nodejs=22.9.0
  - pip=24.0
  - pip:
    - robotframework-browser==18.8.1
    - rpaframework==31.1.2
rccPostInstall:
  - rfbrowser init

Installation

Learn about installing Python packages at Installing Python Packages.

Default installation method with Robocorp Developer Tools using conda.yaml:

channels:
  - conda-forge
dependencies:
  - python=3.10.14
  - pip=24.0
  - pip:
    - rpaframework==31.1.2

To install all extra packages (including Playwright dependencies), you can use:

channels:
  - conda-forge
dependencies:
  - python=3.10.14
  - tesseract=5.4.1
  - nodejs=22.9.0
  - pip=24.0
  - pip:
    - robotframework-browser==18.8.1
    - rpaframework==31.1.2
    - rpaframework-aws==5.3.3
    - rpaframework-google==9.0.2
    - rpaframework-recognition==5.2.5
rccPostInstall:
  - rfbrowser init

Separate installation of AWS, PDF and Windows libraries without the main rpaframework:

channels:
  - conda-forge
dependencies:
  - python=3.10.14
  - pip=24.0
  - pip:
    - rpaframework-aws==5.3.3  # included in the rpaframework as an extra
    - rpaframework-pdf==7.3.3  # included in the rpaframework by default
    - rpaframework-windows==7.5.2  # included in the rpaframework by default

Installation method with pip using Python venv:

python -m venv .venv
source .venv/bin/activate
pip install rpaframework

Example

After installation the libraries can be directly imported inside Robot Framework:

*** Settings ***
Library    RPA.Browser.Selenium

*** Tasks ***
Login as user
    Open available browser    https://example.com
    Input text    id:user-name    ${USERNAME}
    Input text    id:password     ${PASSWORD}

The libraries are also available inside Python:

from RPA.Browser.Selenium import Selenium

lib = Selenium()

lib.open_available_browser("https://example.com")
lib.input_text("id:user-name", username)
lib.input_text("id:password", password)

Here is another example showing how to read an Excel file and filter rows using RPA.Excel.Files and RPA.Tables together:

*** Settings ***
Library    RPA.Excel.Files
Library    RPA.Tables

*** Tasks ***
Filter active employees
    Open workbook    employees.xlsx
    ${table}=    Read worksheet as table    header=True
    Close workbook
    ${active}=    Filter table by column    ${table}    Status    ==    Active
    Log    Found ${active.size} active employees

And the same example in Python:

from RPA.Excel.Files import Files
from RPA.Tables import Tables

excel = Files()
tables = Tables()

excel.open_workbook("employees.xlsx")
table = excel.read_worksheet_as_table(header=True)
excel.close_workbook()

active = tables.filter_table_by_column(table, "Status", "==", "Active")
print(f"Found {active.size} active employees")

Support and contact

Contributing

Found a bug? Missing a critical feature? Interested in contributing? Head over to the Contribution guide to see where to get started.

Development

Repository development is Python based and requires Python 3.9.2 or higher (tested up to 3.13) installed on the development machine. Python 3.10.14 is the default version used in the Robocorp Robot template and is a solid choice. Versions 3.7.6 and 3.8.1 are known to have issues with some dependencies and are not supported.

Repository development tooling is based on uv and invoke. uv is used for dependency management, building and running the package. Invoke is used for scripting purposes, for example for linting, testing and publishing tasks.

Before writing any code, please read and acknowledge our extensive Dev Guide.

First steps to start developing:

  1. Install uv (see uv installation docs)

  2. git clone the repository

  3. create a new Git branch or switch to correct branch or stay in master branch

    • branch naming conventions: feature/name-of-feature, hotfix/name-of-the-issue, release/number-of-release

  4. uv sync — installs the package and its dependencies into the .venv directory

  5. if testing against Robocorp Robot which is using devdata/env.json:

    • set environment variables

    • or uv build and use the resulting .whl file (in the dist/ directory) in the Robot conda.yaml

    • or push the .whl to a repository and reference the raw URL in conda.yaml

  6. uv run python -m robot <ROBOT_ARGS> <TARGET_ROBOT_FILE>

    • common ROBOT_ARGS from Robocorp Robot template: --report NONE --outputdir output --logtitle "Task log"

  7. uv run python <TARGET_PYTHON_FILE>

  8. invoke lint to make sure that code formatting follows rpaframework repository guidelines. Formatting is based on black and flake8 and those are run with invoke lint.

  9. Library documentation can be generated from the repository root (the “meta” package level). Local changes to the main package are reflected automatically. For optional packages, use invoke install-local --package <package_name> (e.g. rpaframework-aws) to install them as editable versions. Reset with invoke install --reset.

    • uv sync and/or invoke install-local --package <package name>

    • make docs

    • open docs/build/html/index.html in a browser, or run make local and navigate to localhost:8000 for a live preview.

    # Before
    [tool.uv.sources]
    rpaframework = { path = "packages/main", extras = ["cv", "playwright", "aws"] }
    rpaframework-google = { version = "^4.0.0" }
    rpaframework-windows = { version = "^4.0.0" }
    
    # After
    [tool.uv.sources]
    rpaframework = { path = "packages/main", extras = ["cv", "playwright"] }
    rpaframework-aws = { path = "packages/aws" }
    rpaframework-google = { version = "^4.0.0" }
    rpaframework-windows = { version = "^4.0.0" }
  10. invoke test (runs both Python unittests and Robot Framework tests in the package tests/ directory)

    • to run a specific Python test: uv run pytest path/to/test.py::test_function

    • to run a specific Robot Framework test: inv testrobot -r <robot_name> -t <task_name>

  11. git commit changes

  12. git push changes to remote

  13. create a pull request from the branch describing the changes in the description

  14. update docs/source/releasenotes.rst with changes (commit and push)

Packaging and publishing are done after changes have been merged into master branch. All the following steps should be done within master branch.

  1. git pull latest changes into master branch

  2. in the package directory containing changes execute invoke lint and invoke test

  3. update pyproject.toml with new version according to semantic versioning

  4. update docs/source/releasenotes.rst with changes

  5. in the repository root (so called “meta” package level) run command uv sync

  6. git commit changed uv.lock files (on meta and target package level), releasenotes.rst and pyproject.toml with message “PACKAGE. version x.y.z”

  7. git push

  8. invoke publish after Github action on master branch is all green

Some recommended tools for development

License

This project is open-source and licensed under the terms of the Apache License 2.0.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rpaframework-33.0.1.tar.gz (17.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rpaframework-33.0.1-py3-none-any.whl (312.9 kB view details)

Uploaded Python 3

File details

Details for the file rpaframework-33.0.1.tar.gz.

File metadata

  • Download URL: rpaframework-33.0.1.tar.gz
  • Upload date:
  • Size: 17.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for rpaframework-33.0.1.tar.gz
Algorithm Hash digest
SHA256 10701aa0576845d0291309a005dee34fdba2b291c6a5355aa8f620370a7e4685
MD5 738ce66109bbd19cb9f58bb34bc80c31
BLAKE2b-256 a3c37ba39e6a3ef58dc222dc1c5a0acd87a6c9e4180e49810635bf1cc7ab316d

See more details on using hashes here.

File details

Details for the file rpaframework-33.0.1-py3-none-any.whl.

File metadata

  • Download URL: rpaframework-33.0.1-py3-none-any.whl
  • Upload date:
  • Size: 312.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for rpaframework-33.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0bc447fd94ef51c7e52f0648c9d3b84f41e8f4142a239b978f8576af2f613f89
MD5 d3b62546d6e1fc7ca42eb4b0e56aed58
BLAKE2b-256 877d5bacca11848bfc06679e993cbd1ba38e9097351dfbe6c365d53fee7dccfa

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

33.0.1 This release

2 files

33.0.0

2 files

32.0.1

2 files

32.0.0

2 files

31.2.0

2 files

31.1.2

2 files

31.1.1

2 files

31.1.0

2 files

31.0.0

2 files

30.0.2

2 files

30.0.1

2 files

30.0.0

2 files

29.0.0

2 files

28.6.3

2 files

28.6.2

2 files

28.6.1

2 files

28.6.0

2 files

28.5.1

2 files

28.5.0

2 files

28.4.2

2 files

28.4.1

2 files

28.4.0

2 files

28.3.0

2 files

28.2.0

2 files

28.1.0

2 files

28.0.0

2 files

27.7.0

2 files

27.6.0

1 file

27.5.3

2 files

27.5.2

2 files

27.5.1

2 files

27.5.0

2 files

27.4.2

2 files

27.4.1

2 files

27.4.0

2 files

27.3.1

2 files

27.3.0

2 files

27.2.1

2 files

27.2.0

2 files

27.1.0

2 files

27.0.1

2 files

27.0.0

2 files

26.1.1

2 files

26.1.0

2 files

26.0.3

2 files

26.0.2

2 files

26.0.1

2 files

26.0.0

2 files

25.0.1

2 files

25.0.0

2 files

24.1.2

2 files

24.1.1

2 files

24.1.0

2 files

24.0.0

2 files

23.5.2

2 files

23.5.1

2 files

23.5.0

2 files

23.4.0

2 files

23.3.0

2 files

23.2.1

2 files

23.2.0

2 files

23.1.0

2 files

23.0.0

2 files

22.5.3

2 files

22.5.2

2 files

22.5.1

2 files

22.5.0

2 files

22.4.0

2 files

22.3.0

2 files

22.2.3

2 files

22.2.2

2 files

22.2.1

2 files

22.2.0

2 files

22.1.1

2 files

22.1.0

2 files

22.0.1

2 files

22.0.0

2 files

21.1.1

2 files

21.1.0

2 files

21.0.1

2 files

21.0.0

2 files

20.1.2

2 files

20.1.1

2 files

20.1.0

2 files

20.0.2

2 files

20.0.1

2 files

20.0.0

2 files

19.4.2

2 files

19.4.1

2 files

19.4.0

2 files

19.3.1

2 files

19.3.0

2 files

19.2.0

2 files

19.1.2

2 files

19.1.1

2 files

19.1.0

2 files

19.0.0

2 files

18.0.0

2 files

17.7.0

2 files

17.6.0

2 files

17.5.2

2 files

17.5.1

2 files

17.5.0

2 files

17.4.0

2 files

17.3.0

2 files

17.2.0

2 files

17.1.1

2 files

17.1.0

2 files

17.0.1

2 files

17.0.0

2 files

16.3.0

2 files

16.2.0

2 files

16.1.0

2 files

16.0.0

2 files

15.9.0

2 files

15.8.1

2 files

15.8.0

2 files

15.7.0

2 files

15.6.1

2 files

15.6.0

2 files

15.5.0

2 files

15.4.0

2 files

15.3.0

2 files

15.2.0

2 files

15.1.4

2 files

15.1.3

2 files

15.1.2

2 files

15.1.1

2 files

15.1.0

2 files

15.0.0

2 files

14.2.0

2 files

14.1.1

2 files

14.1.0

2 files

14.0.0

2 files

13.3.1

2 files

13.3.0

2 files

13.2.0

2 files

13.1.0

2 files

13.0.3

2 files

13.0.2

2 files

13.0.1

2 files

13.0.0

2 files

12.10.1

2 files

12.10.0

2 files

12.9.0

2 files

12.8.2

2 files

12.8.1

2 files

12.8.0

2 files

12.7.0

2 files

12.6.1

2 files

12.6.0

2 files

12.5.1

2 files

12.5.0

2 files

12.4.1

2 files

12.4.0

2 files

12.3.0

2 files

12.2.0

2 files

12.1.2

2 files

12.1.1

2 files

12.1.0

2 files

12.0.3

2 files

12.0.2

2 files

12.0.1

2 files

12.0.0

2 files

11.6.4

2 files

11.6.3

2 files

11.6.2

2 files

11.6.1

2 files

11.6.0

2 files

11.5.2

2 files

11.5.1

2 files

11.5.0

2 files

11.4.0

2 files

11.3.0

2 files

11.2.1

3 files

11.2.0

2 files

11.1.3

2 files

11.1.2

2 files

11.1.1

2 files

11.1.0

2 files

11.0.0

2 files

10.9.3

2 files

10.9.2

2 files

10.9.0

2 files

10.8.0

2 files

10.7.1

2 files

10.7.0

2 files

10.6.0

2 files

10.5.0

2 files

10.4.0

2 files

10.3.0

2 files

10.2.0

2 files

10.1.0

2 files

10.0.7

2 files

10.0.6

2 files

10.0.5

2 files

10.0.4

2 files

10.0.3

2 files

10.0.2

2 files

10.0.1

2 files

10.0.0

2 files

9.6.0

2 files

9.5.0

2 files

9.4.0

2 files

9.3.4

2 files

9.3.3

2 files

9.3.2

2 files

9.3.1

2 files

9.3.0

2 files

9.2.1

2 files

9.2.0

2 files

9.1.0

2 files

9.0.0

2 files

8.2.0

2 files

8.1.0

2 files

8.0.1

2 files

8.0.0

2 files

7.6.0

2 files

7.5.0

2 files

7.4.2

2 files

7.4.1

2 files

7.4.0

2 files

7.3.0

2 files

7.2.0

2 files

7.1.1

2 files

7.1.0

2 files

7.0.5

2 files

7.0.4

2 files

7.0.3

2 files

7.0.2

2 files

7.0.1

2 files

7.0.0

2 files

6.7.3

2 files

6.7.2

2 files

6.7.1

2 files

6.7.0

2 files

6.6.0

2 files

6.5.0

2 files

6.4.0

2 files

6.3.1

2 files

6.3.0

2 files

6.2.0

2 files

6.1.0

2 files

6.0.2

2 files

6.0.1

2 files

6.0.0

2 files

5.3.3

2 files

5.3.2

2 files

5.3.1

2 files

5.3.0

2 files

5.2.0

2 files

5.1.0

2 files

5.0.0

2 files

4.2.0

2 files

4.1.0

2 files

4.0.0

2 files

3.0.0

2 files

2.7.0

2 files

2.6.0

2 files

2.5.1

2 files

2.5.0

2 files

2.4.0

2 files

2.3.0

2 files

2.2.0

2 files

2.1.0

2 files

2.0.1

2 files

2.0.0

2 files

1.4.0

2 files

1.3.0

2 files

1.2.1

2 files

1.2.0

2 files

1.1.0

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page