Skip to content

feat(deps): make uipath-ipc a required dependency - #1900

Merged
eduard-dumitru merged 3 commits into
mainfrom
feat/uipath-ipc-required-dependency
Sep 16, 2026
Merged

eduard-dumitru merged 3 commits into
mainfrom
feat/uipath-ipc-required-dependency

Conversation

@eduard-dumitru

Copy link
Copy Markdown
Contributor

Why

uipath-ipc sits behind the ipc extra because of a review note on #1809 (2026-07-23):

Adding uipath-ipc as a required runtime dependency means pip install uipath will fail unless uipath-ipc is resolvable on public PyPI... consider making this an optional extra... until the package is publicly available.

That was correct at the time — uipath-ipc was only on the internal feed. It was published to public PyPI as 2.5.2 on 2026-07-24, five days before #1809 merged. The extra just stayed behind.

What it costs us

A consumer cannot tell from the uipath version whether an environment can actually speak IPC.

A project declaring plain uipath resolves uipath and uipath-runtime but not uipath-ipc, because the extra is opt-in. So anything invoking uipath server --ipc-pipe or uipath run --handler-ipc-pipe on that environment either dies at import time or has to silently fall back to another channel — and neither the caller nor the version number can predict which.

Version-gating is the normal way to negotiate a transport, and it can't work while the transport itself is optional. This is what blocks the serverless handler from relying on the job-api channel added in #1883.

What changes

  • uipath-ipc>=2.5.1, <2.6.0 moves from [project.optional-dependencies] into dependencies.
  • The ipc extra stays declared, so an existing uipath[ipc] requirement keeps resolving. No consumer has to change anything.
  • Dropped from the dev group, where it is now redundant.
  • The two ImportError guards stay as a broken-install backstop; their messages no longer tell you to install an extra that is now implied.

Trade-off

Every pip install uipath now pulls one more package. uipath-ipc is pure Python and already resolved for anyone using uipath[ipc], the pooled serverless runtime, or the dev group.

Verification

  • Full uipath test suite green
  • mypy src clean — 190 files
  • uv.lock regenerated

uipath-ipc sits behind the `ipc` extra because of a review note on #1809
(2026-07-23): at the time the package was only on the internal feed, so a
hard dependency would have broken `pip install uipath` for anyone outside
UiPath. uipath-ipc 2.5.2 was published to public PyPI on 2026-07-24, five
days before #1809 merged, and the extra stayed behind.

That costs us downstream. A consumer cannot tell from the uipath version
whether an environment can actually speak IPC: a project declaring plain
`uipath` resolves uipath and uipath-runtime but not uipath-ipc, so any
caller of `uipath server --ipc-pipe` or `uipath run --handler-ipc-pipe`
has to either fail at import time or silently fall back. Version-gating is
the normal way to negotiate these channels and it cannot work while the
transport is optional.

The `ipc` extra stays declared, so an existing `uipath[ipc]` requirement
still resolves. Removed from the dev group, where it is now redundant.
Copilot AI lite review requested due to automatic review settings September 16, 2026 09:51
@github-actions github-actions Bot added test:uipath-langchain Triggers tests in the uipath-langchain-python repository test:uipath-runtime test:uipath-integrations labels Sep 16, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Three checked-in sample lockfiles must be regenerated to include the new required dependency.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Promotes uipath-ipc to a required runtime dependency while preserving the existing ipc extra.

Changes:

  • Updates dependency declarations and lockfile.
  • Removes the redundant development dependency.
  • Clarifies IPC missing-dependency messages.
File summaries
File Summary
packages/uipath/uv.lock Updates the locked dependency graph.
packages/uipath/src/uipath/_cli/cli_server_ipc.py Updates IPC fallback messaging.
packages/uipath/src/uipath/_cli/_job_api.py Updates handler IPC fallback messaging.
packages/uipath/pyproject.toml Makes uipath-ipc a required dependency.
Review details
  • Files reviewed: 3/4 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread packages/uipath/pyproject.toml
The three samples that resolve uipath as an editable path dependency had
locked its old dependency set, so a locked sync would have installed a
uipath without uipath-ipc. greeter is left alone: it resolves uipath from
the registry, so this change does not reach it.
connect_handler_ipc and start_ipc_server each caught ImportError on the
uipath-ipc import and re-raised it as a RuntimeError telling the caller to
install the extra. Neither can fire now that the package is a base
dependency: a uipath new enough to have these code paths already brings it.
Both imports stay inside their functions, so nothing new is imported at
module load, and a broken install now surfaces as a plain ImportError
pointing at the line. Their two tests go with them.

The module-level Message import is deliberately left alone. Only its
ImportError arm is dead: when uipath-ipc is present the else branch is what
binds Message at runtime, and the dispatcher resolves the contract's
annotations against it.
@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

🚨 Heads up: uipath-langchain cross-tests are FAILING 🚨

Your changes may break the uipath-langchain-python integration.

⚠️ These checks are NOT enforced by branch protection rules. Please review the failures before merging.

🔍 Inspect the failed run →

@eduard-dumitru
eduard-dumitru merged commit eae33b9 into main Sep 16, 2026
186 of 187 checks passed
@eduard-dumitru
eduard-dumitru deleted the feat/uipath-ipc-required-dependency branch September 16, 2026 11:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test:uipath-integrations test:uipath-langchain Triggers tests in the uipath-langchain-python repository test:uipath-runtime

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants