Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 0 additions & 22 deletions docs/source/libraries/desktop_windows/index.rst

This file was deleted.

12 changes: 0 additions & 12 deletions docs/source/libraries/desktop_windows/python.rst

This file was deleted.

19 changes: 17 additions & 2 deletions docs/source/releasenotes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,32 @@ Latest versions
`Upcoming release <https://github.com/robocorp/rpaframework/projects/3#column-16713994>`_
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

- **Breaking:** Remove the long-deprecated ``RPA.Desktop.Windows`` library (pywinauto-based).
It has emitted a deprecation warning pointing to ``RPA.Windows`` since being deprecated in
favor of it, and is no longer maintained. Use ``RPA.Windows`` for all Windows UI automation
going forward (fixes :issue:`1322`).
- **Security:** ``RPA.Archive``: Fix a Zip Slip path traversal vulnerability (CWE-22) in
``Extract Archive`` — archive members with path traversal sequences (e.g.
``../../evil.py``) could previously be extracted outside the requested destination
directory. Extraction now validates that every member resolves within the destination
before extracting, raising ``ValueError`` otherwise (fixes :issue:`1339`, :issue:`1340`).

- ``rpaframework-core``: Fix the Windows locator parser silently mis-tokenizing a strategy
when the locator value contained a stray ``locator=`` prefix or an unmatched quote
character (e.g. produced a bogus ``locator='executable`` strategy instead of recognizing
``executable:``), with a clearer warning surfaced when this happens (fixes :issue:`1323`).
- ``RPA.Desktop``: ``Highlight Elements`` now returns the list of matched element regions
instead of ``None``, exposing coordinates that were already being computed internally
(fixes :issue:`1324`).
- ``rpaframework-core``: Match ``executable:`` locators case-insensitively. Windows file
names are case-insensitive, but the comparison was not, so ``executable:notepad.exe``
could not find a process that Windows lists as ``Notepad.exe`` — as it does on Windows 11.
``handle:`` matching is numeric and is unchanged.
- **Security:** Bump ``soupsieve`` ≥2.8.4 (HIGH — memory exhaustion via large
comma-separated selector lists, CVE-2026-49476) in the root and ``rpaframework``
lock files.

- ``rpaframework`` **32.0.2**
- ``rpaframework-core`` **13.0.2**
- ``rpaframework`` **33.0.0**

`Released <https://pypi.org/project/rpaframework/#history>`_
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Expand Down
10 changes: 0 additions & 10 deletions examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,3 @@
## manipulating-pdf

Python syntax example of working with PDFs.

## windows-basics

Python and RFW syntax example of Windows basic operations with Calculator and Notepad.

## windows-uidemo-application

Python syntax example of UIPath's UIDemo.exe

The environment variable `UIDEMO_EXE` needs to be set to the absolute path of the file.
1 change: 0 additions & 1 deletion examples/windows-basics/mytextfile.txt

This file was deleted.

93 changes: 0 additions & 93 deletions examples/windows-basics/task.py

This file was deleted.

28 changes: 0 additions & 28 deletions examples/windows-basics/task.robot

This file was deleted.

108 changes: 0 additions & 108 deletions examples/windows-uidemo-application/task.py

This file was deleted.

6 changes: 0 additions & 6 deletions examples/windows-uidemo-application/variables.py

This file was deleted.

11 changes: 8 additions & 3 deletions invocations/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -407,6 +407,7 @@ def install_local(ctx, package, extra=None, all_extras=False):
"""
backup_dependency_files(ctx)
valid_packages = get_package_paths()
pkg_root = get_current_package_root(ctx)
if not package:
package = valid_packages.keys()
opt_dependencies = []
Expand All @@ -417,11 +418,15 @@ def install_local(ctx, package, extra=None, all_extras=False):
pkg_name = "main"
else:
pkg_name = pkg
pkg_root = get_current_package_root(ctx)
dependency_path = PACKAGES_ROOT / pkg_name
if dependency_path.resolve() == pkg_root.resolve():
continue
opt_dependencies.append(str(relative_path(pkg_root, dependency_path)))
add_arg = " ".join(opt_dependencies)
shell.uv(ctx, f"add --editable {add_arg}")
if not opt_dependencies:
print("No external local packages to install.")
return
add_arg = " ".join(opt_dependencies)
shell.uv(ctx, f"add --editable {add_arg}", in_stream=False)


def relative_path(first_path: Path, second_path: Path) -> Path:
Expand Down
6 changes: 5 additions & 1 deletion invocations/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,12 @@ def get_package_paths():
for project_toml in project_tomls:
toml_path = Path(project_toml)
project_config = toml.load(toml_path)
if "tool" in project_config and "poetry" in project_config.get("tool", {}):
name = str(project_config["tool"]["poetry"]["name"])
else:
name = str(project_config["project"]["name"])
package_paths[toml_path.parent.name] = {
"name": str(project_config["tool"]["poetry"]["name"]),
"name": name,
"path": toml_path.parent.resolve(),
}
return package_paths
Expand Down
2 changes: 1 addition & 1 deletion packages/core/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "rpaframework-core"
version = "13.0.1"
version = "13.0.2"
description = "Core utilities used by RPA Framework"
authors = [{name = "RPA Framework", email = "rpafw@robocorp.com"}]
license = {text = "Apache-2.0"}
Expand Down
Loading
Loading