src/eric7/PipInterface/pipcleanup.py

Mon, 24 Feb 2025 15:43:49 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 24 Feb 2025 15:43:49 +0100
branch
eric7
changeset 11148
15e30f0c76a8
parent 11120
cdefc0469f4d
permissions
-rw-r--r--

Adjusted the code to the modified issue codes.

11091
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 #!/usr/bin/env python3
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3
11120
cdefc0469f4d Extended the pip cleanup script to remove some additional temporary directories on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11105
diff changeset
4 # Copyright (c) 2025 Detlev Offenbach <detlev@die-offenbachs.de>
11091
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5 #
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 """
11105
ec86fc991d28 Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11091
diff changeset
8 pipcleanup utility script.
11091
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 Script to delete all leftovers of upgrading packages currently in use. These
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 leftover directories are still located in the 'site-packages' directory and
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 their names start with a '~' character.
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 """
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 import glob
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 import os
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 import shutil
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 import sys
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 import sysconfig
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
11105
ec86fc991d28 Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11091
diff changeset
21
11091
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 def main():
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 Function implementing the main logic.
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 sitepackages = sysconfig.get_path("platlib")
11105
ec86fc991d28 Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11091
diff changeset
27 leftovers = glob.glob("~*", root_dir=sitepackages)
11091
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 for leftover in leftovers:
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 directory = os.path.join(sitepackages, leftover)
11148
15e30f0c76a8 Adjusted the code to the modified issue codes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11120
diff changeset
30 print(f"Removing '{directory}'.") # noqa: M-801
11091
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 shutil.rmtree(directory, ignore_errors=True)
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 # check again for leftovers and report via exit code
11105
ec86fc991d28 Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11091
diff changeset
34 leftovers = glob.glob("~*", root_dir=sitepackages)
11120
cdefc0469f4d Extended the pip cleanup script to remove some additional temporary directories on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11105
diff changeset
35
cdefc0469f4d Extended the pip cleanup script to remove some additional temporary directories on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11105
diff changeset
36 # delete more uninstall directories on Windows machines
cdefc0469f4d Extended the pip cleanup script to remove some additional temporary directories on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11105
diff changeset
37 if sys.platform.startswith("win"):
cdefc0469f4d Extended the pip cleanup script to remove some additional temporary directories on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11105
diff changeset
38 tempDir = os.path.expanduser("~\\AppData\\Local\\Temp")
cdefc0469f4d Extended the pip cleanup script to remove some additional temporary directories on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11105
diff changeset
39 win_leftovers = glob.glob("pip-uninstall-*", root_dir=tempDir)
cdefc0469f4d Extended the pip cleanup script to remove some additional temporary directories on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11105
diff changeset
40 for leftover in win_leftovers:
cdefc0469f4d Extended the pip cleanup script to remove some additional temporary directories on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11105
diff changeset
41 directory = os.path.join(tempDir, leftover)
11148
15e30f0c76a8 Adjusted the code to the modified issue codes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11120
diff changeset
42 print(f"Removing '{directory}'.") # noqa: M-801
11120
cdefc0469f4d Extended the pip cleanup script to remove some additional temporary directories on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11105
diff changeset
43 shutil.rmtree(directory, ignore_errors=True)
cdefc0469f4d Extended the pip cleanup script to remove some additional temporary directories on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11105
diff changeset
44
cdefc0469f4d Extended the pip cleanup script to remove some additional temporary directories on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11105
diff changeset
45 # check again for leftovers and report via exit code
cdefc0469f4d Extended the pip cleanup script to remove some additional temporary directories on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11105
diff changeset
46 win_leftovers = glob.glob("pip-uninstall-*", root_dir=tempDir)
cdefc0469f4d Extended the pip cleanup script to remove some additional temporary directories on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11105
diff changeset
47 else:
cdefc0469f4d Extended the pip cleanup script to remove some additional temporary directories on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11105
diff changeset
48 win_leftovers = []
cdefc0469f4d Extended the pip cleanup script to remove some additional temporary directories on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11105
diff changeset
49
cdefc0469f4d Extended the pip cleanup script to remove some additional temporary directories on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11105
diff changeset
50 sys.exit(1 if bool(leftovers) or bool(win_leftovers) else 0)
11091
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51
11105
ec86fc991d28 Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11091
diff changeset
52
11091
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 if __name__ == "__main__":
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 main()

eric ide

mercurial