Control: tags -1 +patch

The attached patch adds a special case for files in
*/python3/dist-packages directories to py3clean.

--
Dmitry Shachnev
Author: Dmitry Shachnev <[email protected]>
Description: Don't remove *.py[co] files of foreign packages
Bug: http://bugs.debian.org/685167
=== modified file 'py3clean'
--- py3clean	2012-07-13 04:52:23 +0000
+++ py3clean	2012-09-13 09:51:28 +0000
@@ -26,7 +26,7 @@
 import sys
 from glob import glob1
 from os import environ, remove, rmdir
-from os.path import dirname, exists, join
+from os.path import dirname, basename, exists, join
 sys.path.insert(1, '/usr/share/python3/')
 from debpython import files as dpf
 from debpython.version import SUPPORTED, getver, vrepr
@@ -78,10 +78,14 @@
     :type magic_tag: None or False or str"""
     if magic_tag is None:
 
-        # remove all files in __pycache__ directory
+        # remove compiled files in __pycache__ directory
         def find_files_to_remove(pyfile):
-            directory = "%s/__pycache__/" % dirname(pyfile)
-            for fn in glob1(directory, '*'):
+            directory = dirname(pyfile)
+            fnames = "*"
+            if directory.endswith("python3/dist-packages"):
+                fnames = basename(pyfile)[:-3] + ".*"
+            directory += "/__pycache__/"
+            for fn in glob1(directory, fnames):
                 yield join(directory, fn)
             # remove "classic" .pyc files as well
             for filename in ("%sc" % pyfile, "%so" % pyfile):
@@ -98,8 +102,12 @@
 
         # remove .pyc files for no longer needed magic tags
         def find_files_to_remove(pyfile):
-            directory = "%s/__pycache__/" % dirname(pyfile)
-            for fn in glob1(directory, "*.%s.py[co]" % magic_tag):
+            directory = dirname(pyfile)
+            fnames = "*"
+            if directory.endswith("python3/dist-packages"):
+                fnames = basename(pyfile)[:-3]
+            directory += "/__pycache__/"
+            for fn in glob1(directory, "%s.%s.py[co]" % (fnames, magic_tag)):
                 yield join(directory, fn)
 
     def myremove(fname):

Reply via email to