Releases: pypa/pipx
Releases · pypa/pipx
1.11.1
What's Changed
- 🐛 fix(uninject): preserve shared dependencies by @gaborbernat in #1767
- 🐛 fix(venv): support non-Latin Windows usernames by @gaborbernat in #1768
- 🐛 fix(install): show version and suggest upgrade by @gaborbernat in #1769
- 🐛 fix(install): ignore PIP_TARGET env var by @gaborbernat in #1770
- 🐛 fix(uninject): remove dependency app symlinks by @gaborbernat in #1771
- 🐛 fix(cli): error on -v/-q before subcommand by @gaborbernat in #1772
- 🐛 fix(shared_libs): remove setuptools after creation by @gaborbernat in #1773
Full Changelog: 1.11.0...1.11.1
1.11.0
What's Changed
- 🐛 fix(install): enable keyring auth for private indexes by @gaborbernat in #1758
- 🐛 fix(install): preserve URL constraints in pip-args by @gaborbernat in #1760
- 🐛 fix(install): keyring auth and URL constraint handling by @gaborbernat in #1759
- 🐛 fix(upgrade): allow --pip-args in upgrade-all by @gaborbernat in #1761
- Make list_installed_packages handle pip errors (#1698) by @absolutely-vivid in #1699
- Remove outdated experimental note from --suffix help text by @sedat4ras in #1764
- Add MAX_PIPX_LOGS environment variable support by @joewanko in #1763
- ♻️ refactor(config): rename MAX_PIPX_LOGS to PIPX_MAX_LOGS by @gaborbernat in #1765
New Contributors
- @absolutely-vivid made their first contribution in #1699
- @sedat4ras made their first contribution in #1764
- @joewanko made their first contribution in #1763
Full Changelog: 1.10.1...1.11.0
1.10.1
What's Changed
- 👷 ci(release): use Python 3.14 and fix zipapp job by @gaborbernat in #1741
- 📝 docs: restructure to Diataxis framework by @gaborbernat in #1742
- 📝 docs: clarify --global flag placement by @gaborbernat in #1743
- 📝 docs: explain sudo pipx failure with --user installs by @gaborbernat in #1744
- 📝 docs: document pipx.run entry point group by @gaborbernat in #1745
- 📝 docs: add PEP 668 note to Linux install guide by @gaborbernat in #1747
- 📝 docs: mention gui_scripts support by @gaborbernat in #1748
- 📝 docs: add troubleshoot section for wrong package version by @gaborbernat in #1749
- 📝 docs: add version requirements for --global and --prepend by @gaborbernat in #1750
- 📝 docs: document pip configuration for shared libs by @gaborbernat in #1746
- 📝 docs: document installing from a pull request by @gaborbernat in #1751
- 📝 docs: replace pipx-in-pipx warning with self-managed install guide by @gaborbernat in #1752
- 🐛 fix(uninstall): prevent data loss from relative directory names by @gaborbernat in #1753
- 🐛 fix: reject --global flag before subcommand by @gaborbernat in #1754
- 🐛 fix(upgrade): catch missing Python interpreter by @gaborbernat in #1755
- 🐛 fix(install): respect --quiet flag by @gaborbernat in #1756
- 🐛 fix(upgrade): use stored pip_args from metadata by @gaborbernat in #1757
Full Changelog: 1.10.0...1.10.1
1.10.0
What's Changed
- 🔧 chore(github): add community health files by @gaborbernat in #1729
- Fix tests badge in README by @Goooler in #1730
- feat: add --with option to "pipx run" command by @pabloyoyoista in #1666
- 🐛 fix(runpip): accept single-string args by @gaborbernat in #1733
- completions: only complete
--optionswhen a leading-has been entered by @exploide in #1638 - docs: Add FreeBSD to installation.md by @spmzt in #1609
- fix(shared_libs): handle missing Python interpreter on Windows by @BillionClaw in #1734
- pre-commit: Add ruff rules UP for pyupgrade by @cclauss in #1731
- Apply repo-review suggestions by @DimitriPapadopoulos in #1519
- Update legacy hook by @DimitriPapadopoulos in #1735
- Enforce ruff/flake8-pie rules (PIE) by @DimitriPapadopoulos in #1736
- Prefer str.removeprefix() over conditionally replacing with slice by @DimitriPapadopoulos in #1737
- 🔧 build(test): migrate from nox to tox with performance fixes by @gaborbernat in #1738
- replace explicit sleep with polling in animation tests by @pareshjoshij in #1697
- fix: strip extras from package name when looking up venv by @Br1an67 in #1722
- Add more detailed info about how to resolve a PIPX_HOME folder with spaces by @mcoliver in #1633
- Fix run command with bash substitution by @beshr11 in #1644
New Contributors
- @Goooler made their first contribution in #1730
- @pabloyoyoista made their first contribution in #1666
- @exploide made their first contribution in #1638
- @spmzt made their first contribution in #1609
- @BillionClaw made their first contribution in #1734
- @Br1an67 made their first contribution in #1722
- @mcoliver made their first contribution in #1633
- @beshr11 made their first contribution in #1644
Full Changelog: 1.9.0...1.10.0
1.9.0
What's Changed
- 1.8.0: Bump changelog by @github-actions[bot] in #1678
- chore: Update
python-build-standalonerepo path by @paulchen5 in #1680 - [pre-commit] pre-commit autoupdate by @DimitriPapadopoulos in #1676
pipx reinstall: An exception will now be raised if package is pinned by @dukecat0 in #1674- Add documentation for pipx pin and unpin features by @JakeFloch in #1688
- Fix: Optimize _unpack memory usage during checksum by @pareshjoshij in #1692
- Handle recursive symlinks in PIPX_BIN_DIR by @CorentinDurand in #1708
- Feature/env var completion 1498 by @CorentinDurand in #1707
- Stop
pipx runfrom leaving bad temporary venvs by @sam-sw in #1710 - chore(deps): bump the actions group across 1 directory with 5 updates by @dependabot[bot] in #1700
- test: fix tests for package url by @huxuan in #1712
- [pre-commit] pre-commit autoupdate by @DimitriPapadopoulos in #1706
- fix: clarify install message to avoid confusion with --global flag by @toroleapinc in #1721
- PEP 639 compliance by @DimitriPapadopoulos in #1702
__package__→__spec__.parentby @DimitriPapadopoulos in #1719- chore(deps): bump the actions group with 2 updates by @dependabot[bot] in #1720
- Fix documentation: grammar, typos, capitalization, and formatting by @DimitriPapadopoulos in #1714
- Use Well-known Labels by @DimitriPapadopoulos in #1703
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #1563
New Contributors
- @paulchen5 made their first contribution in #1680
- @JakeFloch made their first contribution in #1688
- @pareshjoshij made their first contribution in #1692
- @CorentinDurand made their first contribution in #1708
- @toroleapinc made their first contribution in #1721
Full Changelog: 1.8.0...1.9.0
1.8.0
What's Changed
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #1512
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #1530
- Bump pypa/gh-action-pypi-publish from 1.9.0 to 1.10.0 in the actions group by @dependabot[bot] in #1529
- fix(commands/common/_copy_package_resource): if destination exists and files are same, do not overwrite existing files by @pratikpc in #1528
- Bump pypa/gh-action-pypi-publish from 1.10.0 to 1.10.1 in the actions group by @dependabot[bot] in #1532
- Fix
/changelog/and/contributing/docs URLs by @br3ndonland in #1541 - [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #1543
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #1546
- Bump pypa/gh-action-pypi-publish from 1.10.1 to 1.10.2 in the actions group by @dependabot[bot] in #1549
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #1552
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #1558
- Bump pypa/gh-action-pypi-publish from 1.10.2 to 1.10.3 in the actions group by @dependabot[bot] in #1555
- Bump pypa/gh-action-pypi-publish from 1.10.3 to 1.12.0 in the actions group across 1 directory by @dependabot[bot] in #1569
- Bump pypa/gh-action-pypi-publish from 1.12.0 to 1.12.2 in the actions group by @dependabot[bot] in #1571
- feat: rename USE_EMOJI to PIPX_USE_EMOJI by @dkav in #1581
- chore(deps): bump pypa/gh-action-pypi-publish from 1.12.2 to 1.12.3 in the actions group by @dependabot[bot] in #1586
- Add --all-shells flag to ensure_path by @gh271 in #1591
- chore(deps): bump pypa/gh-action-pypi-publish from 1.12.3 to 1.12.4 in the actions group by @dependabot[bot] in #1595
- fix: no message when no packages upgraded with upgrade-all by @huxuan in #1597
- fix: make Github Action safe to RCE via pull request title by @lociko in #1600
- Drop support for Python 3.8 by @dukecat0 in #1628
- Upgrade ruff and rename ruleset:
TCH→TCby @DimitriPapadopoulos in #1626 - fix #1610: Reorder upgrade option and arguments by @fluzzywuzzy in #1625
- Update the archive name of build of Python for Windows by @dukecat0 in #1632
- Update the logic of finding python interpreter by @dukecat0 in #1631
- Check for stdout/stderr in case file descriptor is closed by @julien-lecomte in #1620
- BUG: fix running a script with explicitly empty
dependencies = []by @neutrinoceros in #1658 - fix #1652: Use GitHub API for standalone python checksums by @13steinj in #1662
- Fix typo in PATH notification message by @lpmi-13 in #1667
- Add examples for using ssh to install from Source Control by @tonur in #1629
- Add support for Python 3.13 by @dukecat0 in #1647
- chore(deps): bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows by @dependabot[bot] in #1664
New Contributors
- @pratikpc made their first contribution in #1528
- @br3ndonland made their first contribution in #1541
- @dkav made their first contribution in #1581
- @gh271 made their first contribution in #1591
- @lociko made their first contribution in #1600
- @fluzzywuzzy made their first contribution in #1625
- @julien-lecomte made their first contribution in #1620
- @neutrinoceros made their first contribution in #1658
- @13steinj made their first contribution in #1662
- @lpmi-13 made their first contribution in #1667
- @tonur made their first contribution in #1629
Full Changelog: 1.7.1...1.8.0
1.7.1
What's Changed
Full Changelog: 1.7.0...1.7.1
1.7.0
What's Changed
- Add help messages for
pipx pinandpipx unpincommands by @dukecat0 in #1438 - Add quotes to title and fix tag name in release action by @dukecat0 in #1437
- Add a
--prependoption to thepipx ensurepathcommand by @agriyakhetarpal in #1451 - ci: clean up auto changelog on releases by @henryiii in #1440
- Introduce a new env variable to allow spaces in home path by @Gitznik in #1446
- Use multiple machine suffixes for standalone python by @tusharsadhwani in #1462
- Fix install all example typo by @agrvz in #1464
- Fix passing constraints file path into
pipx installoperation via--pip-argsby @guysalt in #1390 - Apply preview ruff/Pylint rule PLC0206 by @DimitriPapadopoulos in #1466
- Apply ruff/pycodestyle rule E721 by @DimitriPapadopoulos in #1465
- Enforce new ruff rules by @DimitriPapadopoulos in #1469
- Moved documentation to
docsdirectory by @svengregorio in #1474 - Fix #1475 (
--globalinstalls to~/.local) by @viscruocco in #1476 - Fix #1492: Add PIPX_GLOBAL_(HOME|BIN_DIR|MAN_DIR) documentation and list them in
pipx environmentby @viscruocco in #1493 - Assorted repo-review suggestions by @DimitriPapadopoulos in #1497
- Fixes #1509 short-circuit of installing packages when already installed by @ayemiller in #1510
New Contributors
- @agriyakhetarpal made their first contribution in #1451
- @agrvz made their first contribution in #1464
- @guysalt made their first contribution in #1390
- @svengregorio made their first contribution in #1474
- @viscruocco made their first contribution in #1476
- @ayemiller made their first contribution in #1510
Full Changelog: 1.6.0...1.7.0
1.6.0
What's Changed
- Create a dedicated documentation section for manual pages by @pawamoy in #1312
- Avoid reinstalling injected package without --force by @huxuan in #1305
- bug: Removed --python flag dependency when --force is passed by @SwarajBaral in #1306
- add preinstall with multiple packages example, cli help and test by @gempir in #1321
- Add "install-all" command to install packages according to spec metadata file by @huxuan in #1301
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1318
- Update installation.md - reference valid tag in pre-commit snippet by @Spitfire1900 in #1323
- fix: use
logger.warninginstead oflogging.warnby @mayeut in #1326 - docs: refine docs generation script and template by @huxuan in #1328
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1332
- fix: resolve the DEFAULT_PYTHON to the actual absolute path by @huxuan in #1340
- feat: allow
upgradecommand to accept multiple packages as arguments by @huxuan in #1339 - Fix
pipx reinstallcrash with absolute path by @chrysle in #1329 - [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1347
- fix: version check for standalone python by @huxuan in #1350
- feature: make install-all gather errors in batch by @huxuan in #1348
- fix: validate whether a package is an URL correctly by @huxuan in #1356
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1361
- refactor: unify batch behavior of "install-all", "reinstall-all" and "upgrade-all" by @huxuan in #1357
- feat: upgrade local standalone python in micro/patch level by @huxuan in #1351
- Added a note about sourcing the shell config file for
ensure_pathby @trag1c in #1359 - Mock GH API return of standalone Python index file by @chrysle in #1362
- Fix error log overwrite for "-all" batch operations. by @huxuan in #1365
- fix: update test packages to fix tests on macos-latest by @huxuan in #1373
- feat: support Python version for
--pythonarg when py launcher is n… by @huxuan in #1343 - fix: support python3.8 for standalone python builds by @huxuan in #1374
- feat: add upgrade-shared command by @mayeut in #1316
- Validate package(s) argument should not be path(s). by @huxuan in #1363
- fix: install specified version of
--preinstalldependency instead of latest version by @davidpeckham in #1379 - chore: fix mypy error by @huxuan in #1383
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1382
- Fix
--system-site-packagesforupgrade --installby @sadamczyk in #1378 - ci: restrict main branch for on push tests by @huxuan in #1384
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1393
- Move --global option into shared parser by @dukecat0 in #1397
- Apply ruff rule RUF100 by @DimitriPapadopoulos in #1401
- Proper
ruff/ruff formatsequence by @DimitriPapadopoulos in #1405 - Apply ruff rule RUF010 by @DimitriPapadopoulos in #1407
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1409
- Apply ruff/flake8-implicit-str-concat rule ISC001 by @DimitriPapadopoulos in #1403
- Inject additional packages from text file by @jamesmyatt in #1252
- Add Arch installation and fix flags order by @Paiusco in #1396
- Refactor release process in order to include changelog in release files by @chrysle in #1246
- Bump softprops/action-gh-release from 1 to 2 in the actions group by @dependabot in #1413
- Apply ruff rule RUF012 by @DimitriPapadopoulos in #1414
- Apply assorted ruff rules by @DimitriPapadopoulos in #1415
- NamedTuple → dataclass by @DimitriPapadopoulos in #1416
- Apply ruff/pygrep-hooks rule PGH003 by @DimitriPapadopoulos in #1417
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1420
- Fix
pipx runentry point discovery with local path by @chrysle in #1422 - Introduce
pipx pinandpipx unpincommands by @dukecat0 in #1291 - docs:
python 3.7+->python 3.8+by @dukecat0 in #1426 - Prepare news fragments for 1.6.0 by @Gitznik in #1431
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1428
- 1.6.0: Bump changelog by @github-actions in #1432
- 1.6.0: Create Git tag before releasing, ideally by @chrysle in #1433
- 1.6.0: Bump changelog by @github-actions in #1434
- 1.6.0: fix release tag creation by @huxuan in #1435
- 1.6.0: Add
workflow_dispatchto release action by @dukecat0 in #1436
New Contributors
- @huxuan made their first contribution in #1305
- @SwarajBaral made their first contribution in #1306
- @gempir made their first contribution in #1321
- @mayeut made their first contribution in #1326
- @trag1c made their first contribution in #1359
- @davidpeckham made their first contribution in #1379
- @sadamczyk made their first contribution in #1378
- @jamesmyatt made their first contribution in #1252
- @Paiusco made their first contribution in #1396
- @github-actions made their first contribution in #1432
Full Changelog: 1.5.0...1.6.0
1.5.0
What's Changed
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1209
- fix: allow older setuptools_scm versions when building by @henryiii in #1208
- ci: update to artifacts v2 by @henryiii in #1206
- Fix towncrier build by @Gitznik in #1213
- bump changelog to 1.4.3 by @Gitznik in #1215
- Bump the actions group with 1 update by @dependabot in #1217
- Switch to note admonition in readme by @Gitznik in #1216
- docs/comparisons: Add pae/pactivate by @0cjs in #1211
- Fix typo in README.md - hatch by @ezhang7423 in #1218
- Update the completion instructions for zipapp users by @dukecat0 in #1224
- Remove installation section about dev versions by @chrysle in #1225
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1228
- Add codespell: config, workflow, pre-commit config and make it fix few typos by @yarikoptic in #1219
- Run subprocesses in isolated directory by @chrysle in #1237
- docs: add install instructions for Fedora by @markmc in #1239
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1245
- Update requirement specification by @oberbichler in #1240
- [feature] Download/use standalone python build when chose --python version doesn't exist by @alextremblay in #1243
- Resolve home path in dir env vars by @Gitznik in #1241
- Let self-managed pipx uninstall itself on windows again by @guahki in #1231
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1255
- Add source interpreter to pipx metadata by @Gitznik in #1251
- Log traceback of interpreter resolution in debug logging by @Gitznik in #1250
- Fix path resolution for python executables looked up in PATH on windows by @guahki in #1232
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1259
- Use shutil.move() instead of rename() when moving extracted Python by @dukecat0 in #1265
- Display help message when
pipx installis run without arguments by @dukecat0 in #1266 - Add interpreter command by @Gitznik in #1261
- Add
--installoption topipx upgradecommand by @chrysle in #1267 - Bump the actions group with 1 update by @dependabot in #1273
- GH1229 Update how-pipx-works documentation to include pyproject.toml by @IanHopkinson in #1274
- #1270 Make dedup_ordered type annotations more specific by @sam-xif in #1271
- Add repology shield to installation.md by @sstandre in #1276
- limit verbosity to supported range by @Gitznik in #1284
- Bump the actions group with 1 update by @dependabot in #1285
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1289
- Bump the actions group with 1 update by @dependabot in #1287
- Updated PR: Added --global option to perform actions for all users (#754) by @jendker in #1281
- Support pip_args for shared_libs-enabled virtual environments by @Arpafaucon in #1256
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1295
- Updated examples with installation of packages from localdir by @bhargavyagnik in #1294
- simplify path env var resolving test by @Gitznik in #1298
- Update Instructions for zsh in
pipx completionsOutput by @mjs271 in #1296 - Fix inconsistent wording in
pipx installcommand description by @sgryjp in #1307 - Revert platformdirs on MacOS and Windows by @Gitznik in #1297
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1299
- Can I be added to the volunteer list by @Gitznik in #1311
- Release 1.5.0 by @Gitznik in #1310
New Contributors
- @0cjs made their first contribution in #1211
- @ezhang7423 made their first contribution in #1218
- @yarikoptic made their first contribution in #1219
- @markmc made their first contribution in #1239
- @oberbichler made their first contribution in #1240
- @guahki made their first contribution in #1231
- @IanHopkinson made their first contribution in #1274
- @sam-xif made their first contribution in #1271
- @sstandre made their first contribution in #1276
- @jendker made their first contribution in #1281
- @Arpafaucon made their first contribution in #1256
- @bhargavyagnik made their first contribution in #1294
- @mjs271 made their first contribution in #1296
Full Changelog: 1.4.3...1.5.0