[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38472] trunk/blender: script to report deprecated functions of text and their age in days.

Campbell Barton ideasman42 at gmail.com
Mon Jul 18 11:49:27 CEST 2011


Revision: 38472
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38472
Author:   campbellbarton
Date:     2011-07-18 09:49:26 +0000 (Mon, 18 Jul 2011)
Log Message:
-----------
script to report deprecated functions of text and their age in days.

Modified Paths:
--------------
    trunk/blender/GNUmakefile
    trunk/blender/source/blender/python/generic/bgl.c
    trunk/blender/source/blender/python/intern/bpy_rna.c

Added Paths:
-----------
    trunk/blender/source/tests/check_deprecated.py

Modified: trunk/blender/GNUmakefile
===================================================================
--- trunk/blender/GNUmakefile	2011-07-18 07:38:44 UTC (rev 38471)
+++ trunk/blender/GNUmakefile	2011-07-18 09:49:26 UTC (rev 38472)
@@ -99,14 +99,18 @@
 
 # run pep8 check check on scripts we distribute.
 test_pep8:
-	python source/tests/pep8.py > test_pep8.log 2>&1
+	python3 source/tests/pep8.py > test_pep8.log 2>&1
 	@echo "written: test_pep8.log"
 
 # run some checks on our cmakefiles.
 test_cmake:
-	python build_files/cmake/cmake_consistency_check.py > test_cmake_consistency.log 2>&1
+	python3 build_files/cmake/cmake_consistency_check.py > test_cmake_consistency.log 2>&1
 	@echo "written: test_cmake_consistency.log"
 
+# run deprecation tests, see if we have anything to remove.
+test_deprecated:
+	python3 source/tests/check_deprecated.py
+
 clean:
 	make -C $(BUILD_DIR) clean
 

Modified: trunk/blender/source/blender/python/generic/bgl.c
===================================================================
--- trunk/blender/source/blender/python/generic/bgl.c	2011-07-18 07:38:44 UTC (rev 38471)
+++ trunk/blender/source/blender/python/generic/bgl.c	2011-07-18 09:49:26 UTC (rev 38472)
@@ -114,7 +114,7 @@
 	return list;
 }
 
-/* deprecate */
+/* *DEPRECATED* 2011/7/17 bgl.Buffer.list */
 static PyObject *Buffer_list(Buffer *self, void *UNUSED(arg))
 {
 	fprintf(stderr, "Warning: 'Buffer.list' deprecated, use '[:]' instead\n");

Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c	2011-07-18 07:38:44 UTC (rev 38471)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c	2011-07-18 09:49:26 UTC (rev 38472)
@@ -4548,7 +4548,7 @@
 	NULL,                       /* printfunc tp_print; */
 	NULL,						/* getattrfunc tp_getattr; */
 	NULL,						/* setattrfunc tp_setattr; */
-	NULL,						/* tp_compare */ /* DEPRECATED in python 3.0! */
+	NULL,						/* tp_compare */ /* deprecated in python 3.0! */
 	NULL,						/* tp_repr */
 
 	/* Method suites for standard classes */

Added: trunk/blender/source/tests/check_deprecated.py
===================================================================
--- trunk/blender/source/tests/check_deprecated.py	                        (rev 0)
+++ trunk/blender/source/tests/check_deprecated.py	2011-07-18 09:49:26 UTC (rev 38472)
@@ -0,0 +1,144 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software Foundation,
+#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+# <pep8 compliant>
+
+import os
+from os.path import splitext
+
+DEPRECATE_DAYS = 120
+
+SKIP_DIRS = ("extern",
+             "scons",
+             os.path.join("source", "tests"),  # not this dir
+             )
+
+def is_c_header(filename):
+    ext = splitext(filename)[1]
+    return (ext in (".h", ".hpp", ".hxx"))
+
+
+def is_c(filename):
+    ext = splitext(filename)[1]
+    return (ext in (".c", ".cpp", ".cxx", ".m", ".mm", ".rc"))
+
+
+def is_c_any(filename):
+    return is_c(filename) or is_c_header(filename)
+
+def is_py(filename):
+    ext = splitext(filename)[1]
+    return (ext == ".py")
+
+def is_source_any(filename):
+    return is_c_any(filename) or is_py(filename)
+
+def source_list(path, filename_check=None):
+    for dirpath, dirnames, filenames in os.walk(path):
+
+        # skip '.svn'
+        if dirpath.startswith("."):
+            continue
+
+        for filename in filenames:
+            if filename_check is None or filename_check(filename):
+                yield os.path.join(dirpath, filename)
+
+
+def deprecations():
+    """
+    Searches out source code for lines like
+
+    /* *DEPRECATED* 2011/7/17 bgl.Buffer.list info text */
+
+    Or...
+    
+    # *DEPRECATED* 2010/12/22 some.py.func more info */
+
+    """
+    import datetime
+    SOURCE_DIR = os.path.normpath(os.path.abspath(os.path.normpath(os.path.join(os.path.dirname(__file__), "..", ".."))))
+
+    SKIP_DIRS_ABS = [os.path.join(SOURCE_DIR, p) for p in SKIP_DIRS]
+
+    deprecations_ls = []
+
+    scan_tot = 0
+
+    print("scanning in %r for '*DEPRECATED* YYYY/MM/DD info'" % SOURCE_DIR)
+
+    for fn in source_list(SOURCE_DIR, is_source_any):
+        # print(fn)
+        skip = False
+        for p in SKIP_DIRS_ABS:
+            if fn.startswith(p):
+                skip = True
+                break
+        if skip:
+            continue
+
+        file = open(fn, 'r', encoding="utf8")
+        for i, l in enumerate(file):
+            # logic for deprecation warnings
+            if '*DEPRECATED*' in l:
+                try:
+                    l = l.strip()
+                    data = l.split('*DEPRECATED*', 1)[-1].strip().strip()
+                    data = [w.strip() for w in data.split('/', 2)]
+                    data[-1], info = data[-1].split(' ', 1)
+                    info = info.split("*/", 1)[0]
+                    if len(data) != 3:
+                        print("    poorly formatting line:\n"
+                              "    %r:%d\n"
+                              "    %s"%
+                              (fn, i + 1, l)
+                              )
+                    else:
+                        data = datetime.datetime(*tuple([int(w) for w in data]))
+                        
+                        deprecations_ls.append((data, (fn, i + 1), info))
+                except:
+                    print("Error file - %r:%d" % (fn, i + 1))
+                    import traceback
+                    traceback.print_exc()
+
+        scan_tot += 1
+
+    print("    scanned %d files" % scan_tot)
+
+    return deprecations_ls
+
+def main():
+    import datetime
+    now = datetime.datetime.now()\
+    
+    deps = deprecations()
+
+    print("\nAll deprecations...")
+    for data, fileinfo, info in deps:
+        days_old = (now - data).days
+        if days_old > DEPRECATE_DAYS:
+            info = "*** REMOVE! *** " + info
+        print("   %r, days-old(%.2d), %s:%d - %s" % (data, days_old, fileinfo[0], fileinfo[1], info))
+    if deps:
+        print("\ndone!")
+    else:
+        print("\nnone found!")
+
+if __name__ == '__main__':
+    main()




More information about the Bf-blender-cvs mailing list