pipx icon indicating copy to clipboard operation
pipx copied to clipboard

After interrupted reinstall-all, one package is gone

Open jaraco opened this issue 2 years ago • 2 comments

Describe the bug

While troubleshooting #965, I ran reinstall-all several times, first without --verbose, then with --verbose, then a few times more until I was able to get a clean output of the behavior. During at least one of those runs, I interrupted the operation. I didn't take note of the operation that was in progress and assumed it was safe to terminate a pipx operation. I've since closed my terminal, so I no longer have a meaningful record of what transpired, but I can confirm that the tox executable is missing as is the virtualenv in ~/.local/pipx/venvs.

It's possible I had tox installed with nothing else, so it's straightforward to reinstall with pipx install tox, but I don't recall if I had other state configured in that environment (injected packages, ...).

How to reproduce

I haven't yet attempted to reproduce it. I'd like to get feedback about the expected behavior first.

Expected behavior

pipx operations should be interrupt-safe (rolled back if cancelled) or should warn the user (maybe even prompt) if an irreversible operation has taken place but its replacement has been cancelled. Such a message should include state that is otherwise lost (what packages were injected in that pipx env).

jaraco avatar Apr 09 '23 21:04 jaraco

Example output for this:

➜  ~ pipx reinstall-all    
uninstalled epr-reader! ✨ 🌟 ✨
  installed package epr-reader 2.4.15, installed using Python 3.9.2
  These apps are now globally available
    - epr
done! ✨ 🌟 ✨
uninstalled semantra! ✨ 🌟 ✨
  installed package semantra 0.1.6, installed using Python 3.9.2
  These apps are now globally available
    - semantra
done! ✨ 🌟 ✨
uninstalled maturin! ✨ 🌟 ✨

^C

➜  ~ maturin
zsh: command not found: maturin

dukecat0 avatar Jul 01 '23 16:07 dukecat0

PR welcome.

gaborbernat avatar Dec 02 '23 17:12 gaborbernat