Skip to content

Conversation

@mikaylathompson
Copy link
Contributor

@mikaylathompson mikaylathompson commented Nov 11, 2025

Addresses #13636

Prints the path to the workspace root by default, and any of the child packages if requested.

It has a preview flag like workspace metadata, called workspace-dir.

Summary

─> uv workspace dir
/Users/mikayla/code/uv/dev-envs

─> uv workspace dir --package foo-proj
/Users/mikayla/code/uv/dev-envs/foo-proj

─> uv workspace dir --package bar-proj
error: Package `bar-proj` not found in workspace.

Test Plan

Unit tests added.

@mikaylathompson mikaylathompson changed the base branch from main to zb/metadata November 11, 2025 00:30
@zanieb zanieb force-pushed the zb/metadata branch 2 times, most recently from 83d8f8a to 8658f99 Compare November 11, 2025 15:34
Base automatically changed from zb/metadata to main November 11, 2025 15:46
Signed-off-by: Mikayla Thompson <[email protected]>
@mikaylathompson mikaylathompson marked this pull request as ready for review November 11, 2025 16:39
Signed-off-by: Mikayla Thompson <[email protected]>
preview: Preview,
printer: Printer,
) -> Result<ExitStatus> {
if preview.is_enabled(PreviewFeatures::WORKSPACE_METADATA) {
Copy link
Member

@zanieb zanieb Nov 11, 2025

Choose a reason for hiding this comment

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

I think this should be a separate preview flag so we can stabilize things separately


#[derive(Subcommand)]
pub enum WorkspaceCommand {
/// Display package metadata.
Copy link
Member

Choose a reason for hiding this comment

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

(My own doc here is bad, I should fix that)

@zanieb zanieb added cli Related to the command line interface preview Experimental behavior labels Nov 11, 2025
Co-authored-by: Zanie Blue <[email protected]>
@codspeed-hq
Copy link

codspeed-hq bot commented Nov 11, 2025

CodSpeed Performance Report

Merging #16678 will not alter performance

Comparing mikayla/workspace-dir (e249d84) with main (63ab247)

Summary

✅ 6 untouched

Signed-off-by: Mikayla Thompson <[email protected]>
Signed-off-by: Mikayla Thompson <[email protected]>
Comment on lines +32 to +41
let dir: &Path = match package_name {
None => workspace.install_path().as_path(),
Some(package) => {
if let Some(p) = workspace.packages().get(&package) {
p.root().as_path()
} else {
bail!("Package `{package}` not found in workspace.")
}
}
};
Copy link
Member

Choose a reason for hiding this comment

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

This code compiles without the type cast:

Suggested change
let dir: &Path = match package_name {
None => workspace.install_path().as_path(),
Some(package) => {
if let Some(p) = workspace.packages().get(&package) {
p.root().as_path()
} else {
bail!("Package `{package}` not found in workspace.")
}
}
};
let dir = match package_name {
None => workspace.install_path(),
Some(package) => {
if let Some(p) = workspace.packages().get(&package) {
p.root()
} else {
bail!("Package `{package}` not found in workspace.")
}
}
};

);
}

// Workspace dir output when run with `--package`
Copy link
Member

Choose a reason for hiding this comment

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

nit:

Suggested change
// Workspace dir output when run with `--package`
/// Workspace dir output when run with `--package`.

Signed-off-by: Mikayla Thompson <[email protected]>
@mikaylathompson mikaylathompson merged commit b810606 into main Nov 11, 2025
188 of 189 checks passed
@mikaylathompson mikaylathompson deleted the mikayla/workspace-dir branch November 11, 2025 19:30
@zanieb zanieb changed the title workspace dir command Add uv workspace dir command Nov 11, 2025
zanieb pushed a commit that referenced this pull request Nov 11, 2025
…ollowups (#16690)

## Summary

1. Discussed in review of #16678 that println should be replaced by
using `printer`. The `println` pattern was pretty consistent across all
the `dir` commands, so I've updated all of them in this PR (there are
some usages of `println` outside of `uv/src/commands` that I didn't
touch -- the use cases there seemed more complex and nuanced).
2. I missed two comments in the previous PR before merging, so updates
from those are in here as well.

## Test Plan

No behavior changes, existing tests for all commands pass.

---------

Signed-off-by: Mikayla Thompson <[email protected]>
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Nov 14, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [astral-sh/uv](https://github.com/astral-sh/uv) | patch | `0.9.8` -> `0.9.9` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>astral-sh/uv (astral-sh/uv)</summary>

### [`v0.9.9`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#099)

[Compare Source](astral-sh/uv@0.9.8...0.9.9)

Released on 2025-11-12.

##### Deprecations

- Deprecate use of `--project` in `uv init` ([#&#8203;16674](astral-sh/uv#16674))

##### Enhancements

- Add iOS support to Python interpreter discovery ([#&#8203;16686](astral-sh/uv#16686))
- Reject ambiguously parsed URLs ([#&#8203;16622](astral-sh/uv#16622))
- Allow explicit values in `uv version --bump` ([#&#8203;16555](astral-sh/uv#16555))
- Warn on use of managed pre-release Python versions when a stable version is available ([#&#8203;16619](astral-sh/uv#16619))
- Allow signing trampolines on Windows by using `.rcdata` to store metadata ([#&#8203;15068](astral-sh/uv#15068))
- Add `--only-emit-workspace` and similar variants to `uv export` ([#&#8203;16681](astral-sh/uv#16681))

##### Preview features

- Add `uv workspace dir` command ([#&#8203;16678](astral-sh/uv#16678))
- Add `uv workspace metadata` command ([#&#8203;16516](astral-sh/uv#16516))

##### Configuration

- Add `UV_NO_DEFAULT_GROUPS` environment variable ([#&#8203;16645](astral-sh/uv#16645))

##### Bug fixes

- Remove `torch-model-archiver` and `torch-tb-profiler` from PyTorch backend ([#&#8203;16655](astral-sh/uv#16655))
- Fix Pixi environment detection ([#&#8203;16585](astral-sh/uv#16585))

##### Documentation

- Fix `CMD` path in FastAPI Dockerfile ([#&#8203;16701](astral-sh/uv#16701))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNzMuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE3My4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cli Related to the command line interface preview Experimental behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants