Skip to content

Commit bcd14ec

Browse files
authored
Display Python implementation when creating environments (#7652)
e.g. ``` ❯ cargo run -q -- venv -p pypy Using PyPy 3.9.19 Creating virtual environment at: .venv Activate with: source .venv/bin/activate ```
1 parent 0c6117f commit bcd14ec

File tree

12 files changed

+124
-118
lines changed

12 files changed

+124
-118
lines changed

crates/uv/src/commands/project/mod.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -449,18 +449,21 @@ impl FoundInterpreter {
449449
.await?;
450450

451451
let managed = python.source().is_managed();
452+
let implementation = python.implementation();
452453
let interpreter = python.into_interpreter();
453454

454455
if managed {
455456
writeln!(
456457
printer.stderr(),
457-
"Using Python {}",
458+
"Using {} {}",
459+
implementation.pretty(),
458460
interpreter.python_version().cyan()
459461
)?;
460462
} else {
461463
writeln!(
462464
printer.stderr(),
463-
"Using Python {} interpreter at: {}",
465+
"Using {} {} interpreter at: {}",
466+
implementation.pretty(),
464467
interpreter.python_version(),
465468
interpreter.sys_executable().user_display().cyan()
466469
)?;

crates/uv/src/commands/venv.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ async fn venv_impl(
222222
.into_diagnostic()?;
223223

224224
let managed = python.source().is_managed();
225+
let implementation = python.implementation();
225226
let interpreter = python.into_interpreter();
226227

227228
// Add all authenticated sources to the cache.
@@ -232,14 +233,16 @@ async fn venv_impl(
232233
if managed {
233234
writeln!(
234235
printer.stderr(),
235-
"Using Python {}",
236+
"Using {} {}",
237+
implementation.pretty(),
236238
interpreter.python_version().cyan()
237239
)
238240
.into_diagnostic()?;
239241
} else {
240242
writeln!(
241243
printer.stderr(),
242-
"Using Python {} interpreter at: {}",
244+
"Using {} {} interpreter at: {}",
245+
implementation.pretty(),
243246
interpreter.python_version(),
244247
interpreter.sys_executable().user_display().cyan()
245248
)

crates/uv/tests/edit.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2039,7 +2039,7 @@ fn add_path() -> Result<()> {
20392039
----- stdout -----
20402040
20412041
----- stderr -----
2042-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
2042+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
20432043
Creating virtual environment at: .venv
20442044
Resolved 2 packages in [TIME]
20452045
Prepared 2 packages in [TIME]

crates/uv/tests/export.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ fn relative_path() -> Result<()> {
511511
----- stdout -----
512512
513513
----- stderr -----
514-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
514+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
515515
Resolved 3 packages in [TIME]
516516
"###);
517517

crates/uv/tests/init.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ fn init() -> Result<()> {
4949
----- stdout -----
5050
5151
----- stderr -----
52-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
52+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
5353
Resolved 1 package in [TIME]
5454
"###);
5555

@@ -127,7 +127,7 @@ fn init_application() -> Result<()> {
127127
128128
----- stderr -----
129129
warning: `VIRTUAL_ENV=[VENV]/` does not match the project environment path `.venv` and will be ignored
130-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
130+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
131131
Creating virtual environment at: .venv
132132
Resolved 1 package in [TIME]
133133
Audited in [TIME]
@@ -308,7 +308,7 @@ fn init_application_package() -> Result<()> {
308308
309309
----- stderr -----
310310
warning: `VIRTUAL_ENV=[VENV]/` does not match the project environment path `.venv` and will be ignored
311-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
311+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
312312
Creating virtual environment at: .venv
313313
Resolved 1 package in [TIME]
314314
Prepared 1 package in [TIME]
@@ -390,7 +390,7 @@ fn init_library() -> Result<()> {
390390
391391
----- stderr -----
392392
warning: `VIRTUAL_ENV=[VENV]/` does not match the project environment path `.venv` and will be ignored
393-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
393+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
394394
Creating virtual environment at: .venv
395395
Resolved 1 package in [TIME]
396396
Prepared 1 package in [TIME]
@@ -604,7 +604,7 @@ fn init_library_current_dir() -> Result<()> {
604604
----- stdout -----
605605
606606
----- stderr -----
607-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
607+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
608608
Resolved 1 package in [TIME]
609609
"###);
610610

@@ -668,7 +668,7 @@ fn init_application_current_dir() -> Result<()> {
668668
----- stdout -----
669669
670670
----- stderr -----
671-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
671+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
672672
Resolved 1 package in [TIME]
673673
"###);
674674

@@ -733,7 +733,7 @@ fn init_dot_args() -> Result<()> {
733733
----- stdout -----
734734
735735
----- stderr -----
736-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
736+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
737737
Resolved 1 package in [TIME]
738738
"###);
739739

crates/uv/tests/lock.rs

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3473,7 +3473,7 @@ fn lock_requires_python_wheels() -> Result<()> {
34733473
----- stdout -----
34743474

34753475
----- stderr -----
3476-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
3476+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
34773477
Resolved 2 packages in [TIME]
34783478
"###);
34793479

@@ -3535,7 +3535,7 @@ fn lock_requires_python_wheels() -> Result<()> {
35353535
----- stdout -----
35363536

35373537
----- stderr -----
3538-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
3538+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
35393539
Resolved 2 packages in [TIME]
35403540
"###);
35413541

@@ -3560,7 +3560,7 @@ fn lock_requires_python_wheels() -> Result<()> {
35603560
----- stdout -----
35613561

35623562
----- stderr -----
3563-
Using Python 3.11.[X] interpreter at: [PYTHON-3.11]
3563+
Using CPython 3.11.[X] interpreter at: [PYTHON-3.11]
35643564
Resolved 2 packages in [TIME]
35653565
"###);
35663566

@@ -3637,7 +3637,7 @@ fn lock_requires_python_wheels() -> Result<()> {
36373637
----- stdout -----
36383638

36393639
----- stderr -----
3640-
Using Python 3.11.[X] interpreter at: [PYTHON-3.11]
3640+
Using CPython 3.11.[X] interpreter at: [PYTHON-3.11]
36413641
Resolved 2 packages in [TIME]
36423642
"###);
36433643

@@ -5604,7 +5604,7 @@ fn lock_exclusion() -> Result<()> {
56045604
----- stdout -----
56055605

56065606
----- stderr -----
5607-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
5607+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
56085608
Resolved 2 packages in [TIME]
56095609
"###);
56105610

@@ -5732,7 +5732,7 @@ fn lock_dev_transitive() -> Result<()> {
57325732
----- stdout -----
57335733

57345734
----- stderr -----
5735-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
5735+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
57365736
Resolved 5 packages in [TIME]
57375737
"###);
57385738

@@ -7108,7 +7108,7 @@ fn lock_find_links_local_wheel() -> Result<()> {
71087108
----- stdout -----
71097109

71107110
----- stderr -----
7111-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
7111+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
71127112
Resolved 2 packages in [TIME]
71137113
"###);
71147114

@@ -7154,7 +7154,7 @@ fn lock_find_links_local_wheel() -> Result<()> {
71547154
----- stdout -----
71557155

71567156
----- stderr -----
7157-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
7157+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
71587158
Resolved 2 packages in [TIME]
71597159
"###);
71607160

@@ -7165,7 +7165,7 @@ fn lock_find_links_local_wheel() -> Result<()> {
71657165
----- stdout -----
71667166

71677167
----- stderr -----
7168-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
7168+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
71697169
Creating virtual environment at: .venv
71707170
Prepared 1 package in [TIME]
71717171
Installed 2 packages in [TIME]
@@ -7226,7 +7226,7 @@ fn lock_find_links_local_sdist() -> Result<()> {
72267226
----- stdout -----
72277227

72287228
----- stderr -----
7229-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
7229+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
72307230
Resolved 2 packages in [TIME]
72317231
"###);
72327232

@@ -7270,7 +7270,7 @@ fn lock_find_links_local_sdist() -> Result<()> {
72707270
----- stdout -----
72717271

72727272
----- stderr -----
7273-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
7273+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
72747274
Resolved 2 packages in [TIME]
72757275
"###);
72767276

@@ -7281,7 +7281,7 @@ fn lock_find_links_local_sdist() -> Result<()> {
72817281
----- stdout -----
72827282

72837283
----- stderr -----
7284-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
7284+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
72857285
Creating virtual environment at: .venv
72867286
Prepared 2 packages in [TIME]
72877287
Installed 2 packages in [TIME]
@@ -8327,7 +8327,7 @@ fn lock_mixed_extras() -> Result<()> {
83278327
----- stdout -----
83288328

83298329
----- stderr -----
8330-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
8330+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
83318331
Resolved 6 packages in [TIME]
83328332
"###);
83338333

@@ -8431,7 +8431,7 @@ fn lock_mixed_extras() -> Result<()> {
84318431
----- stdout -----
84328432

84338433
----- stderr -----
8434-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
8434+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
84358435
Resolved 6 packages in [TIME]
84368436
"###);
84378437

@@ -8443,7 +8443,7 @@ fn lock_mixed_extras() -> Result<()> {
84438443
----- stdout -----
84448444

84458445
----- stderr -----
8446-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
8446+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
84478447
Creating virtual environment at: .venv
84488448
Prepared 4 packages in [TIME]
84498449
Installed 4 packages in [TIME]
@@ -8525,7 +8525,7 @@ fn lock_transitive_extra() -> Result<()> {
85258525
----- stdout -----
85268526

85278527
----- stderr -----
8528-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
8528+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
85298529
Resolved 4 packages in [TIME]
85308530
"###);
85318531

@@ -8610,7 +8610,7 @@ fn lock_transitive_extra() -> Result<()> {
86108610
----- stdout -----
86118611

86128612
----- stderr -----
8613-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
8613+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
86148614
Resolved 4 packages in [TIME]
86158615
"###);
86168616

@@ -8622,7 +8622,7 @@ fn lock_transitive_extra() -> Result<()> {
86228622
----- stdout -----
86238623

86248624
----- stderr -----
8625-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
8625+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
86268626
Creating virtual environment at: .venv
86278627
Prepared 2 packages in [TIME]
86288628
Installed 2 packages in [TIME]
@@ -12958,7 +12958,7 @@ fn lock_request_requires_python() -> Result<()> {
1295812958
----- stdout -----
1295912959

1296012960
----- stderr -----
12961-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
12961+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
1296212962
error: The requested interpreter resolved to Python 3.12.[X], which is incompatible with the project's Python requirement: `>=3.8, <=3.10`
1296312963
"###);
1296412964

@@ -12972,7 +12972,7 @@ fn lock_request_requires_python() -> Result<()> {
1297212972
----- stdout -----
1297312973

1297412974
----- stderr -----
12975-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
12975+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
1297612976
error: The Python request from `.python-version` resolved to Python 3.12.[X], which is incompatible with the project's Python requirement: `>=3.8, <=3.10`
1297712977
"###);
1297812978

@@ -13083,7 +13083,7 @@ fn lock_invalid_project_table() -> Result<()> {
1308313083
----- stdout -----
1308413084

1308513085
----- stderr -----
13086-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
13086+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
1308713087
error: Failed to build: `b @ file://[TEMP_DIR]/b`
1308813088
Caused by: Failed to extract static metadata from `pyproject.toml`
1308913089
Caused by: `pyproject.toml` is using the `[project]` table, but the required `project.name` field is not set.

crates/uv/tests/pip_sync.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5584,7 +5584,7 @@ fn sync_seed() -> Result<()> {
55845584
----- stdout -----
55855585
55865586
----- stderr -----
5587-
Using Python 3.8.[X] interpreter at: [PYTHON-3.8]
5587+
Using CPython 3.8.[X] interpreter at: [PYTHON-3.8]
55885588
Creating virtual environment with seed packages at: .venv
55895589
+ pip==24.0
55905590
+ setuptools==69.2.0

crates/uv/tests/run.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ fn run_with_python_version() -> Result<()> {
5656
3.7.0
5757
5858
----- stderr -----
59-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
59+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
6060
Creating virtual environment at: .venv
6161
Resolved 5 packages in [TIME]
6262
Prepared 4 packages in [TIME]
@@ -105,7 +105,7 @@ fn run_with_python_version() -> Result<()> {
105105
3.6.0
106106
107107
----- stderr -----
108-
Using Python 3.11.[X] interpreter at: [PYTHON-3.11]
108+
Using CPython 3.11.[X] interpreter at: [PYTHON-3.11]
109109
Removed virtual environment at: .venv
110110
Creating virtual environment at: .venv
111111
Resolved 5 packages in [TIME]
@@ -133,7 +133,7 @@ fn run_with_python_version() -> Result<()> {
133133
----- stdout -----
134134
135135
----- stderr -----
136-
Using Python 3.8.[X] interpreter at: [PYTHON-3.8]
136+
Using CPython 3.8.[X] interpreter at: [PYTHON-3.8]
137137
error: The requested interpreter resolved to Python 3.8.[X], which is incompatible with the project's Python requirement: `>=3.11, <4`
138138
"###);
139139

@@ -1414,7 +1414,7 @@ fn run_from_directory() -> Result<()> {
14141414
14151415
----- stderr -----
14161416
warning: `VIRTUAL_ENV=.venv` does not match the project environment path `[PROJECT_VENV]/` and will be ignored
1417-
Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
1417+
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
14181418
Creating virtual environment at: [PROJECT_VENV]/
14191419
Resolved 1 package in [TIME]
14201420
Prepared 1 package in [TIME]
@@ -1489,7 +1489,7 @@ fn run_from_directory() -> Result<()> {
14891489
14901490
----- stderr -----
14911491
warning: `VIRTUAL_ENV=.venv` does not match the project environment path `[PROJECT_VENV]/` and will be ignored
1492-
Using Python 3.10.[X] interpreter at: [PYTHON-3.10]
1492+
Using CPython 3.10.[X] interpreter at: [PYTHON-3.10]
14931493
Removed virtual environment at: [PROJECT_VENV]/
14941494
Creating virtual environment at: [PROJECT_VENV]/
14951495
Resolved 1 package in [TIME]
@@ -1600,7 +1600,7 @@ fn run_isolated_python_version() -> Result<()> {
16001600
(3, 8)
16011601
16021602
----- stderr -----
1603-
Using Python 3.8.[X] interpreter at: [PYTHON-3.8]
1603+
Using CPython 3.8.[X] interpreter at: [PYTHON-3.8]
16041604
Creating virtual environment at: .venv
16051605
Resolved 6 packages in [TIME]
16061606
Prepared 6 packages in [TIME]
@@ -1908,7 +1908,7 @@ fn run_isolated_incompatible_python() -> Result<()> {
19081908
----- stdout -----
19091909
19101910
----- stderr -----
1911-
Using Python 3.8.[X] interpreter at: [PYTHON-3.8]
1911+
Using CPython 3.8.[X] interpreter at: [PYTHON-3.8]
19121912
error: The Python request from `.python-version` resolved to Python 3.8.[X], which is incompatible with the project's Python requirement: `>=3.12`
19131913
"###);
19141914

0 commit comments

Comments
 (0)