bee_python 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +202 -0
- data/build/README +23 -0
- data/egg/egg/build.yml +70 -0
- data/egg/egg/ez_setup.py +280 -0
- data/egg/egg/script.py +12 -0
- data/egg/egg/setup.erb +11 -0
- data/egg/egg/suite.py +37 -0
- data/egg/egg/test.py +31 -0
- data/egg/egg.yml +69 -0
- data/egg/http/build.erb +53 -0
- data/egg/http/server.py +34 -0
- data/egg/http.yml +50 -0
- data/egg/mysql/mysql.py +43 -0
- data/egg/mysql.yml +44 -0
- data/egg/project/build.erb +77 -0
- data/egg/project/script.py +42 -0
- data/egg/project/test.py +31 -0
- data/egg/project.yml +59 -0
- data/egg/script/build.erb +35 -0
- data/egg/script/script.py +42 -0
- data/egg/script.yml +50 -0
- data/egg/soap/build.erb +52 -0
- data/egg/soap/client.py +18 -0
- data/egg/soap/server.py +30 -0
- data/egg/soap.yml +58 -0
- data/egg/source/source.py +42 -0
- data/egg/source.yml +47 -0
- data/egg/test/test.py +28 -0
- data/egg/test.yml +44 -0
- data/egg/xmlrpc/build.erb +52 -0
- data/egg/xmlrpc/client.py +22 -0
- data/egg/xmlrpc/server.py +24 -0
- data/egg/xmlrpc.yml +51 -0
- data/lib/bee_task_python.rb +390 -0
- data/test/build.yml +16 -0
- data/test/tc_bee_task_python.rb +27 -0
- data/test/test_build.rb +26 -0
- data/test/test_build_listener.rb +62 -0
- data/test/ts_bee_python.rb +26 -0
- data/tools/common/__init__.py +5 -0
- data/tools/common/common/__init__.py +140 -0
- data/tools/common/common/__pkginfo__.py +43 -0
- data/tools/common/common/adbh.py +35 -0
- data/tools/common/common/cache.py +114 -0
- data/tools/common/common/changelog.py +234 -0
- data/tools/common/common/clcommands.py +181 -0
- data/tools/common/common/cli.py +212 -0
- data/tools/common/common/compat.py +328 -0
- data/tools/common/common/configuration.py +1087 -0
- data/tools/common/common/contexts.py +58 -0
- data/tools/common/common/corbautils.py +117 -0
- data/tools/common/common/daemon.py +171 -0
- data/tools/common/common/date.py +279 -0
- data/tools/common/common/db.py +49 -0
- data/tools/common/common/dbf.py +229 -0
- data/tools/common/common/debugger.py +208 -0
- data/tools/common/common/decorators.py +190 -0
- data/tools/common/common/deprecation.py +118 -0
- data/tools/common/common/fileutils.py +409 -0
- data/tools/common/common/graph.py +259 -0
- data/tools/common/common/html.py +142 -0
- data/tools/common/common/interface.py +76 -0
- data/tools/common/common/logging_ext.py +166 -0
- data/tools/common/common/modutils.py +670 -0
- data/tools/common/common/optik_ext.py +383 -0
- data/tools/common/common/optparser.py +92 -0
- data/tools/common/common/pdf_ext.py +111 -0
- data/tools/common/common/proc.py +276 -0
- data/tools/common/common/pyro_ext.py +146 -0
- data/tools/common/common/pytest.py +754 -0
- data/tools/common/common/shellutils.py +383 -0
- data/tools/common/common/sphinx_ext.py +87 -0
- data/tools/common/common/sphinxutils.py +122 -0
- data/tools/common/common/sqlgen.py +31 -0
- data/tools/common/common/table.py +930 -0
- data/tools/common/common/tasksqueue.py +97 -0
- data/tools/common/common/test/__init__.py +1 -0
- data/tools/common/common/test/data/ChangeLog +184 -0
- data/tools/common/common/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
- data/tools/common/common/test/data/__init__.py +1 -0
- data/tools/common/common/test/data/content_differ_dir/NOTHING +0 -0
- data/tools/common/common/test/data/content_differ_dir/README +1 -0
- data/tools/common/common/test/data/content_differ_dir/subdir/coin +1 -0
- data/tools/common/common/test/data/content_differ_dir/subdir/toto.txt +53 -0
- data/tools/common/common/test/data/file_differ_dir/NOTHING +0 -0
- data/tools/common/common/test/data/file_differ_dir/README +1 -0
- data/tools/common/common/test/data/file_differ_dir/subdir/toto.txt +53 -0
- data/tools/common/common/test/data/file_differ_dir/subdirtwo/Hello +0 -0
- data/tools/common/common/test/data/find_test/__init__.py +0 -0
- data/tools/common/common/test/data/find_test/foo.txt +0 -0
- data/tools/common/common/test/data/find_test/module.py +0 -0
- data/tools/common/common/test/data/find_test/module2.py +0 -0
- data/tools/common/common/test/data/find_test/newlines.txt +0 -0
- data/tools/common/common/test/data/find_test/noendingnewline.py +0 -0
- data/tools/common/common/test/data/find_test/nonregr.py +0 -0
- data/tools/common/common/test/data/find_test/normal_file.txt +0 -0
- data/tools/common/common/test/data/find_test/spam.txt +0 -0
- data/tools/common/common/test/data/find_test/sub/doc.txt +0 -0
- data/tools/common/common/test/data/find_test/sub/momo.py +0 -0
- data/tools/common/common/test/data/find_test/test.ini +0 -0
- data/tools/common/common/test/data/find_test/test1.msg +0 -0
- data/tools/common/common/test/data/find_test/test2.msg +0 -0
- data/tools/common/common/test/data/find_test/write_protected_file.txt +0 -0
- data/tools/common/common/test/data/foo.txt +9 -0
- data/tools/common/common/test/data/module.py +88 -0
- data/tools/common/common/test/data/module2.py +77 -0
- data/tools/common/common/test/data/newlines.txt +3 -0
- data/tools/common/common/test/data/noendingnewline.py +36 -0
- data/tools/common/common/test/data/nonregr.py +14 -0
- data/tools/common/common/test/data/normal_file.txt +0 -0
- data/tools/common/common/test/data/reference_dir/NOTHING +0 -0
- data/tools/common/common/test/data/reference_dir/README +1 -0
- data/tools/common/common/test/data/reference_dir/subdir/coin +1 -0
- data/tools/common/common/test/data/reference_dir/subdir/toto.txt +53 -0
- data/tools/common/common/test/data/same_dir/NOTHING +0 -0
- data/tools/common/common/test/data/same_dir/README +1 -0
- data/tools/common/common/test/data/same_dir/subdir/coin +1 -0
- data/tools/common/common/test/data/same_dir/subdir/toto.txt +53 -0
- data/tools/common/common/test/data/spam.txt +9 -0
- data/tools/common/common/test/data/sub/doc.txt +1 -0
- data/tools/common/common/test/data/sub/momo.py +1 -0
- data/tools/common/common/test/data/subdir_differ_dir/NOTHING +0 -0
- data/tools/common/common/test/data/subdir_differ_dir/README +1 -0
- data/tools/common/common/test/data/subdir_differ_dir/subdir/coin +1 -0
- data/tools/common/common/test/data/subdir_differ_dir/subdir/toto.txt +53 -0
- data/tools/common/common/test/data/test.ini +20 -0
- data/tools/common/common/test/data/test1.msg +30 -0
- data/tools/common/common/test/data/test2.msg +42 -0
- data/tools/common/common/test/data/write_protected_file.txt +0 -0
- data/tools/common/common/test/foomod.py +17 -0
- data/tools/common/common/test/unittest_cache.py +129 -0
- data/tools/common/common/test/unittest_changelog.py +37 -0
- data/tools/common/common/test/unittest_compat.py +239 -0
- data/tools/common/common/test/unittest_configuration.py +348 -0
- data/tools/common/common/test/unittest_date.py +154 -0
- data/tools/common/common/test/unittest_decorators.py +62 -0
- data/tools/common/common/test/unittest_deprecation.py +76 -0
- data/tools/common/common/test/unittest_fileutils.py +133 -0
- data/tools/common/common/test/unittest_graph.py +50 -0
- data/tools/common/common/test/unittest_html.py +76 -0
- data/tools/common/common/test/unittest_interface.py +87 -0
- data/tools/common/common/test/unittest_modutils.py +244 -0
- data/tools/common/common/test/unittest_pytest.py +50 -0
- data/tools/common/common/test/unittest_shellutils.py +248 -0
- data/tools/common/common/test/unittest_table.py +448 -0
- data/tools/common/common/test/unittest_taskqueue.py +71 -0
- data/tools/common/common/test/unittest_testlib.py +956 -0
- data/tools/common/common/test/unittest_textutils.py +247 -0
- data/tools/common/common/test/unittest_tree.py +248 -0
- data/tools/common/common/test/unittest_umessage.py +55 -0
- data/tools/common/common/test/unittest_ureports_html.py +64 -0
- data/tools/common/common/test/unittest_ureports_text.py +105 -0
- data/tools/common/common/test/unittest_xmlutils.py +75 -0
- data/tools/common/common/test/utils.py +87 -0
- data/tools/common/common/testlib.py +1927 -0
- data/tools/common/common/textutils.py +476 -0
- data/tools/common/common/tree.py +372 -0
- data/tools/common/common/umessage.py +161 -0
- data/tools/common/common/ureports/__init__.py +174 -0
- data/tools/common/common/ureports/docbook_writer.py +139 -0
- data/tools/common/common/ureports/html_writer.py +131 -0
- data/tools/common/common/ureports/nodes.py +201 -0
- data/tools/common/common/ureports/text_writer.py +140 -0
- data/tools/common/common/vcgutils.py +216 -0
- data/tools/common/common/visitor.py +107 -0
- data/tools/common/common/xmlrpcutils.py +136 -0
- data/tools/common/common/xmlutils.py +61 -0
- data/tools/compile/compile.py +16 -0
- data/tools/coverage/coverage.py +602 -0
- data/tools/epydoc/__init__.py +227 -0
- data/tools/epydoc/__init__.pyc +0 -0
- data/tools/epydoc/apidoc.py +2203 -0
- data/tools/epydoc/apidoc.pyc +0 -0
- data/tools/epydoc/checker.py +349 -0
- data/tools/epydoc/checker.pyc +0 -0
- data/tools/epydoc/cli.py +1470 -0
- data/tools/epydoc/cli.pyc +0 -0
- data/tools/epydoc/compat.py +250 -0
- data/tools/epydoc/compat.pyc +0 -0
- data/tools/epydoc/docbuilder.py +1358 -0
- data/tools/epydoc/docbuilder.pyc +0 -0
- data/tools/epydoc/docintrospecter.py +1056 -0
- data/tools/epydoc/docintrospecter.pyc +0 -0
- data/tools/epydoc/docparser.py +2113 -0
- data/tools/epydoc/docparser.pyc +0 -0
- data/tools/epydoc/docstringparser.py +1111 -0
- data/tools/epydoc/docstringparser.pyc +0 -0
- data/tools/epydoc/docwriter/__init__.py +12 -0
- data/tools/epydoc/docwriter/__init__.pyc +0 -0
- data/tools/epydoc/docwriter/dotgraph.py +1351 -0
- data/tools/epydoc/docwriter/dotgraph.pyc +0 -0
- data/tools/epydoc/docwriter/html.py +3491 -0
- data/tools/epydoc/docwriter/html.pyc +0 -0
- data/tools/epydoc/docwriter/html_colorize.py +909 -0
- data/tools/epydoc/docwriter/html_colorize.pyc +0 -0
- data/tools/epydoc/docwriter/html_css.py +550 -0
- data/tools/epydoc/docwriter/html_css.pyc +0 -0
- data/tools/epydoc/docwriter/html_help.py +190 -0
- data/tools/epydoc/docwriter/html_help.pyc +0 -0
- data/tools/epydoc/docwriter/latex.py +1187 -0
- data/tools/epydoc/docwriter/latex.pyc +0 -0
- data/tools/epydoc/docwriter/plaintext.py +276 -0
- data/tools/epydoc/docwriter/plaintext.pyc +0 -0
- data/tools/epydoc/docwriter/xlink.py +505 -0
- data/tools/epydoc/docwriter/xlink.pyc +0 -0
- data/tools/epydoc/gui.py +1148 -0
- data/tools/epydoc/gui.pyc +0 -0
- data/tools/epydoc/log.py +204 -0
- data/tools/epydoc/log.pyc +0 -0
- data/tools/epydoc/markup/__init__.py +623 -0
- data/tools/epydoc/markup/__init__.pyc +0 -0
- data/tools/epydoc/markup/doctest.py +311 -0
- data/tools/epydoc/markup/doctest.pyc +0 -0
- data/tools/epydoc/markup/epytext.py +2116 -0
- data/tools/epydoc/markup/epytext.pyc +0 -0
- data/tools/epydoc/markup/javadoc.py +250 -0
- data/tools/epydoc/markup/javadoc.pyc +0 -0
- data/tools/epydoc/markup/plaintext.py +78 -0
- data/tools/epydoc/markup/plaintext.pyc +0 -0
- data/tools/epydoc/markup/pyval_repr.py +532 -0
- data/tools/epydoc/markup/pyval_repr.pyc +0 -0
- data/tools/epydoc/markup/restructuredtext.py +906 -0
- data/tools/epydoc/markup/restructuredtext.pyc +0 -0
- data/tools/epydoc/test/__init__.py +97 -0
- data/tools/epydoc/test/__init__.pyc +0 -0
- data/tools/epydoc/test/util.py +226 -0
- data/tools/epydoc/test/util.pyc +0 -0
- data/tools/epydoc/util.py +289 -0
- data/tools/epydoc/util.pyc +0 -0
- data/tools/logilab/logilab/__init__.py +5 -0
- data/tools/logilab/logilab/astng/__init__.py +82 -0
- data/tools/logilab/logilab/astng/__pkginfo__.py +76 -0
- data/tools/logilab/logilab/astng/_exceptions.py +64 -0
- data/tools/logilab/logilab/astng/_nodes_ast.py +667 -0
- data/tools/logilab/logilab/astng/_nodes_compiler.py +758 -0
- data/tools/logilab/logilab/astng/bases.py +608 -0
- data/tools/logilab/logilab/astng/builder.py +239 -0
- data/tools/logilab/logilab/astng/inference.py +426 -0
- data/tools/logilab/logilab/astng/inspector.py +289 -0
- data/tools/logilab/logilab/astng/manager.py +421 -0
- data/tools/logilab/logilab/astng/mixins.py +165 -0
- data/tools/logilab/logilab/astng/node_classes.py +848 -0
- data/tools/logilab/logilab/astng/nodes.py +85 -0
- data/tools/logilab/logilab/astng/nodes_as_string.py +389 -0
- data/tools/logilab/logilab/astng/patchcomptransformer.py +159 -0
- data/tools/logilab/logilab/astng/protocols.py +333 -0
- data/tools/logilab/logilab/astng/raw_building.py +212 -0
- data/tools/logilab/logilab/astng/rebuilder.py +307 -0
- data/tools/logilab/logilab/astng/scoped_nodes.py +951 -0
- data/tools/logilab/logilab/astng/test/__init__.py +19 -0
- data/tools/logilab/logilab/astng/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
- data/tools/logilab/logilab/astng/test/data/MyPyPa-0.1.0-py2.5.zip +0 -0
- data/tools/logilab/logilab/astng/test/data/SSL1/Connection1.py +33 -0
- data/tools/logilab/logilab/astng/test/data/SSL1/__init__.py +20 -0
- data/tools/logilab/logilab/astng/test/data/__init__.py +20 -0
- data/tools/logilab/logilab/astng/test/data/all.py +29 -0
- data/tools/logilab/logilab/astng/test/data/appl/__init__.py +23 -0
- data/tools/logilab/logilab/astng/test/data/appl/myConnection.py +30 -0
- data/tools/logilab/logilab/astng/test/data/format.py +34 -0
- data/tools/logilab/logilab/astng/test/data/module.py +90 -0
- data/tools/logilab/logilab/astng/test/data/module2.py +112 -0
- data/tools/logilab/logilab/astng/test/data/noendingnewline.py +57 -0
- data/tools/logilab/logilab/astng/test/data/nonregr.py +76 -0
- data/tools/logilab/logilab/astng/test/data/notall.py +28 -0
- data/tools/logilab/logilab/astng/test/data2/__init__.py +20 -0
- data/tools/logilab/logilab/astng/test/data2/clientmodule_test.py +51 -0
- data/tools/logilab/logilab/astng/test/data2/suppliermodule_test.py +32 -0
- data/tools/logilab/logilab/astng/test/regrtest.py +135 -0
- data/tools/logilab/logilab/astng/test/regrtest_data/absimport.py +22 -0
- data/tools/logilab/logilab/astng/test/regrtest_data/descriptor_crash.py +31 -0
- data/tools/logilab/logilab/astng/test/regrtest_data/import_package_subpackage_module.py +68 -0
- data/tools/logilab/logilab/astng/test/regrtest_data/package/__init__.py +24 -0
- data/tools/logilab/logilab/astng/test/regrtest_data/package/subpackage/__init__.py +20 -0
- data/tools/logilab/logilab/astng/test/regrtest_data/package/subpackage/module.py +20 -0
- data/tools/logilab/logilab/astng/test/unittest_builder.py +684 -0
- data/tools/logilab/logilab/astng/test/unittest_inference.py +1112 -0
- data/tools/logilab/logilab/astng/test/unittest_inspector.py +105 -0
- data/tools/logilab/logilab/astng/test/unittest_lookup.py +302 -0
- data/tools/logilab/logilab/astng/test/unittest_manager.py +98 -0
- data/tools/logilab/logilab/astng/test/unittest_nodes.py +302 -0
- data/tools/logilab/logilab/astng/test/unittest_scoped_nodes.py +501 -0
- data/tools/logilab/logilab/astng/test/unittest_utils.py +104 -0
- data/tools/logilab/logilab/astng/utils.py +342 -0
- data/tools/logilab/logilab/common/__init__.py +140 -0
- data/tools/logilab/logilab/common/__pkginfo__.py +43 -0
- data/tools/logilab/logilab/common/adbh.py +35 -0
- data/tools/logilab/logilab/common/cache.py +114 -0
- data/tools/logilab/logilab/common/changelog.py +234 -0
- data/tools/logilab/logilab/common/clcommands.py +181 -0
- data/tools/logilab/logilab/common/cli.py +212 -0
- data/tools/logilab/logilab/common/compat.py +328 -0
- data/tools/logilab/logilab/common/configuration.py +1087 -0
- data/tools/logilab/logilab/common/contexts.py +58 -0
- data/tools/logilab/logilab/common/corbautils.py +117 -0
- data/tools/logilab/logilab/common/daemon.py +171 -0
- data/tools/logilab/logilab/common/date.py +279 -0
- data/tools/logilab/logilab/common/db.py +49 -0
- data/tools/logilab/logilab/common/dbf.py +229 -0
- data/tools/logilab/logilab/common/debugger.py +208 -0
- data/tools/logilab/logilab/common/decorators.py +190 -0
- data/tools/logilab/logilab/common/deprecation.py +118 -0
- data/tools/logilab/logilab/common/fileutils.py +409 -0
- data/tools/logilab/logilab/common/graph.py +259 -0
- data/tools/logilab/logilab/common/html.py +142 -0
- data/tools/logilab/logilab/common/interface.py +76 -0
- data/tools/logilab/logilab/common/logging_ext.py +166 -0
- data/tools/logilab/logilab/common/modutils.py +670 -0
- data/tools/logilab/logilab/common/optik_ext.py +383 -0
- data/tools/logilab/logilab/common/optparser.py +92 -0
- data/tools/logilab/logilab/common/pdf_ext.py +111 -0
- data/tools/logilab/logilab/common/proc.py +276 -0
- data/tools/logilab/logilab/common/pyro_ext.py +146 -0
- data/tools/logilab/logilab/common/pytest.py +754 -0
- data/tools/logilab/logilab/common/shellutils.py +383 -0
- data/tools/logilab/logilab/common/sphinx_ext.py +87 -0
- data/tools/logilab/logilab/common/sphinxutils.py +122 -0
- data/tools/logilab/logilab/common/sqlgen.py +31 -0
- data/tools/logilab/logilab/common/table.py +930 -0
- data/tools/logilab/logilab/common/tasksqueue.py +97 -0
- data/tools/logilab/logilab/common/test/__init__.py +1 -0
- data/tools/logilab/logilab/common/test/data/ChangeLog +184 -0
- data/tools/logilab/logilab/common/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
- data/tools/logilab/logilab/common/test/data/__init__.py +1 -0
- data/tools/logilab/logilab/common/test/data/content_differ_dir/NOTHING +0 -0
- data/tools/logilab/logilab/common/test/data/content_differ_dir/README +1 -0
- data/tools/logilab/logilab/common/test/data/content_differ_dir/subdir/coin +1 -0
- data/tools/logilab/logilab/common/test/data/content_differ_dir/subdir/toto.txt +53 -0
- data/tools/logilab/logilab/common/test/data/file_differ_dir/NOTHING +0 -0
- data/tools/logilab/logilab/common/test/data/file_differ_dir/README +1 -0
- data/tools/logilab/logilab/common/test/data/file_differ_dir/subdir/toto.txt +53 -0
- data/tools/logilab/logilab/common/test/data/file_differ_dir/subdirtwo/Hello +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/__init__.py +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/foo.txt +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/module.py +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/module2.py +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/newlines.txt +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/noendingnewline.py +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/nonregr.py +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/normal_file.txt +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/spam.txt +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/sub/doc.txt +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/sub/momo.py +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/test.ini +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/test1.msg +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/test2.msg +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/write_protected_file.txt +0 -0
- data/tools/logilab/logilab/common/test/data/foo.txt +9 -0
- data/tools/logilab/logilab/common/test/data/module.py +88 -0
- data/tools/logilab/logilab/common/test/data/module2.py +77 -0
- data/tools/logilab/logilab/common/test/data/newlines.txt +3 -0
- data/tools/logilab/logilab/common/test/data/noendingnewline.py +36 -0
- data/tools/logilab/logilab/common/test/data/nonregr.py +14 -0
- data/tools/logilab/logilab/common/test/data/normal_file.txt +0 -0
- data/tools/logilab/logilab/common/test/data/reference_dir/NOTHING +0 -0
- data/tools/logilab/logilab/common/test/data/reference_dir/README +1 -0
- data/tools/logilab/logilab/common/test/data/reference_dir/subdir/coin +1 -0
- data/tools/logilab/logilab/common/test/data/reference_dir/subdir/toto.txt +53 -0
- data/tools/logilab/logilab/common/test/data/same_dir/NOTHING +0 -0
- data/tools/logilab/logilab/common/test/data/same_dir/README +1 -0
- data/tools/logilab/logilab/common/test/data/same_dir/subdir/coin +1 -0
- data/tools/logilab/logilab/common/test/data/same_dir/subdir/toto.txt +53 -0
- data/tools/logilab/logilab/common/test/data/spam.txt +9 -0
- data/tools/logilab/logilab/common/test/data/sub/doc.txt +1 -0
- data/tools/logilab/logilab/common/test/data/sub/momo.py +1 -0
- data/tools/logilab/logilab/common/test/data/subdir_differ_dir/NOTHING +0 -0
- data/tools/logilab/logilab/common/test/data/subdir_differ_dir/README +1 -0
- data/tools/logilab/logilab/common/test/data/subdir_differ_dir/subdir/coin +1 -0
- data/tools/logilab/logilab/common/test/data/subdir_differ_dir/subdir/toto.txt +53 -0
- data/tools/logilab/logilab/common/test/data/test.ini +20 -0
- data/tools/logilab/logilab/common/test/data/test1.msg +30 -0
- data/tools/logilab/logilab/common/test/data/test2.msg +42 -0
- data/tools/logilab/logilab/common/test/data/write_protected_file.txt +0 -0
- data/tools/logilab/logilab/common/test/foomod.py +17 -0
- data/tools/logilab/logilab/common/test/unittest_cache.py +129 -0
- data/tools/logilab/logilab/common/test/unittest_changelog.py +37 -0
- data/tools/logilab/logilab/common/test/unittest_compat.py +239 -0
- data/tools/logilab/logilab/common/test/unittest_configuration.py +348 -0
- data/tools/logilab/logilab/common/test/unittest_date.py +154 -0
- data/tools/logilab/logilab/common/test/unittest_decorators.py +62 -0
- data/tools/logilab/logilab/common/test/unittest_deprecation.py +76 -0
- data/tools/logilab/logilab/common/test/unittest_fileutils.py +133 -0
- data/tools/logilab/logilab/common/test/unittest_graph.py +50 -0
- data/tools/logilab/logilab/common/test/unittest_html.py +76 -0
- data/tools/logilab/logilab/common/test/unittest_interface.py +87 -0
- data/tools/logilab/logilab/common/test/unittest_modutils.py +244 -0
- data/tools/logilab/logilab/common/test/unittest_pytest.py +50 -0
- data/tools/logilab/logilab/common/test/unittest_shellutils.py +248 -0
- data/tools/logilab/logilab/common/test/unittest_table.py +448 -0
- data/tools/logilab/logilab/common/test/unittest_taskqueue.py +71 -0
- data/tools/logilab/logilab/common/test/unittest_testlib.py +956 -0
- data/tools/logilab/logilab/common/test/unittest_textutils.py +247 -0
- data/tools/logilab/logilab/common/test/unittest_tree.py +248 -0
- data/tools/logilab/logilab/common/test/unittest_umessage.py +55 -0
- data/tools/logilab/logilab/common/test/unittest_ureports_html.py +64 -0
- data/tools/logilab/logilab/common/test/unittest_ureports_text.py +105 -0
- data/tools/logilab/logilab/common/test/unittest_xmlutils.py +75 -0
- data/tools/logilab/logilab/common/test/utils.py +87 -0
- data/tools/logilab/logilab/common/testlib.py +1927 -0
- data/tools/logilab/logilab/common/textutils.py +476 -0
- data/tools/logilab/logilab/common/tree.py +372 -0
- data/tools/logilab/logilab/common/umessage.py +161 -0
- data/tools/logilab/logilab/common/ureports/__init__.py +174 -0
- data/tools/logilab/logilab/common/ureports/docbook_writer.py +139 -0
- data/tools/logilab/logilab/common/ureports/html_writer.py +131 -0
- data/tools/logilab/logilab/common/ureports/nodes.py +201 -0
- data/tools/logilab/logilab/common/ureports/text_writer.py +140 -0
- data/tools/logilab/logilab/common/vcgutils.py +216 -0
- data/tools/logilab/logilab/common/visitor.py +107 -0
- data/tools/logilab/logilab/common/xmlrpcutils.py +136 -0
- data/tools/logilab/logilab/common/xmlutils.py +61 -0
- data/tools/pychecker/COPYRIGHT +31 -0
- data/tools/pychecker/ChangeLog +349 -0
- data/tools/pychecker/CodeChecks.py +1969 -0
- data/tools/pychecker/CodeChecks.pyc +0 -0
- data/tools/pychecker/CodeChecks.pyo +0 -0
- data/tools/pychecker/Config.py +475 -0
- data/tools/pychecker/Config.pyc +0 -0
- data/tools/pychecker/Config.pyo +0 -0
- data/tools/pychecker/KNOWN_BUGS +100 -0
- data/tools/pychecker/MAINTAINERS +81 -0
- data/tools/pychecker/NEWS +406 -0
- data/tools/pychecker/OP.py +131 -0
- data/tools/pychecker/OP.pyc +0 -0
- data/tools/pychecker/OP.pyo +0 -0
- data/tools/pychecker/OptionTypes.py +117 -0
- data/tools/pychecker/OptionTypes.pyc +0 -0
- data/tools/pychecker/OptionTypes.pyo +0 -0
- data/tools/pychecker/README +152 -0
- data/tools/pychecker/Stack.py +115 -0
- data/tools/pychecker/Stack.pyc +0 -0
- data/tools/pychecker/Stack.pyo +0 -0
- data/tools/pychecker/TODO +101 -0
- data/tools/pychecker/VERSION +1 -0
- data/tools/pychecker/Warning.py +50 -0
- data/tools/pychecker/Warning.pyc +0 -0
- data/tools/pychecker/Warning.pyo +0 -0
- data/tools/pychecker/__init__.py +17 -0
- data/tools/pychecker/__init__.pyc +0 -0
- data/tools/pychecker/__init__.pyo +0 -0
- data/tools/pychecker/checker.py +961 -0
- data/tools/pychecker/checker.pyc +0 -0
- data/tools/pychecker/checker.pyo +0 -0
- data/tools/pychecker/function.py +159 -0
- data/tools/pychecker/function.pyc +0 -0
- data/tools/pychecker/function.pyo +0 -0
- data/tools/pychecker/msgs.py +175 -0
- data/tools/pychecker/msgs.pyc +0 -0
- data/tools/pychecker/msgs.pyo +0 -0
- data/tools/pychecker/options.py +275 -0
- data/tools/pychecker/options.pyc +0 -0
- data/tools/pychecker/options.pyo +0 -0
- data/tools/pychecker/pcmodules.py +19 -0
- data/tools/pychecker/pcmodules.pyc +0 -0
- data/tools/pychecker/pcmodules.pyo +0 -0
- data/tools/pychecker/printer.py +47 -0
- data/tools/pychecker/printer.pyc +0 -0
- data/tools/pychecker/printer.pyo +0 -0
- data/tools/pychecker/python.py +427 -0
- data/tools/pychecker/python.pyc +0 -0
- data/tools/pychecker/python.pyo +0 -0
- data/tools/pychecker/utils.py +102 -0
- data/tools/pychecker/utils.pyc +0 -0
- data/tools/pychecker/utils.pyo +0 -0
- data/tools/pychecker/warn.py +778 -0
- data/tools/pychecker/warn.pyc +0 -0
- data/tools/pychecker/warn.pyo +0 -0
- data/tools/pylint2/pylint/__init__.py +16 -0
- data/tools/pylint2/pylint/__pkginfo__.py +67 -0
- data/tools/pylint2/pylint/checkers/__init__.py +155 -0
- data/tools/pylint2/pylint/checkers/base.py +749 -0
- data/tools/pylint2/pylint/checkers/classes.py +527 -0
- data/tools/pylint2/pylint/checkers/design_analysis.py +344 -0
- data/tools/pylint2/pylint/checkers/exceptions.py +183 -0
- data/tools/pylint2/pylint/checkers/format.py +367 -0
- data/tools/pylint2/pylint/checkers/imports.py +379 -0
- data/tools/pylint2/pylint/checkers/logging.py +98 -0
- data/tools/pylint2/pylint/checkers/misc.py +128 -0
- data/tools/pylint2/pylint/checkers/newstyle.py +107 -0
- data/tools/pylint2/pylint/checkers/raw_metrics.py +125 -0
- data/tools/pylint2/pylint/checkers/similar.py +333 -0
- data/tools/pylint2/pylint/checkers/string_format.py +239 -0
- data/tools/pylint2/pylint/checkers/typecheck.py +364 -0
- data/tools/pylint2/pylint/checkers/utils.py +208 -0
- data/tools/pylint2/pylint/checkers/variables.py +498 -0
- data/tools/pylint2/pylint/config.py +149 -0
- data/tools/pylint2/pylint/epylint.py +149 -0
- data/tools/pylint2/pylint/gui.py +433 -0
- data/tools/pylint2/pylint/interfaces.py +98 -0
- data/tools/pylint2/pylint/lint.py +914 -0
- data/tools/pylint2/pylint/pyreverse/__init__.py +5 -0
- data/tools/pylint2/pylint/pyreverse/diadefslib.py +229 -0
- data/tools/pylint2/pylint/pyreverse/diagrams.py +247 -0
- data/tools/pylint2/pylint/pyreverse/main.py +123 -0
- data/tools/pylint2/pylint/pyreverse/utils.py +131 -0
- data/tools/pylint2/pylint/pyreverse/writer.py +196 -0
- data/tools/pylint2/pylint/reporters/__init__.py +67 -0
- data/tools/pylint2/pylint/reporters/guireporter.py +36 -0
- data/tools/pylint2/pylint/reporters/html.py +69 -0
- data/tools/pylint2/pylint/reporters/text.py +156 -0
- data/tools/pylint2/pylint/utils.py +518 -0
- data/tools/pylint2/pylint.py +16 -0
- data/tools/test/suite.py +35 -0
- metadata +566 -0
@@ -0,0 +1,406 @@
|
|
1
|
+
Version 0.8.18 - XXX
|
2
|
+
* Fixed SF Bug [ 1827412 ] pychecker.bat only handles 9 cmdline args
|
3
|
+
* Fix warning about comparison checking with bool false alert for 'in' and 'not in'
|
4
|
+
* Add warning for using __set__, __get__, and __delete__ in an old-style class
|
5
|
+
* Fix spurious warning about __set__, __get__, and __delete__ not being special
|
6
|
+
methods.
|
7
|
+
* Fix inability to disable Warning about constant setattr()/getattr()
|
8
|
+
* Fix spurious warning on min/max not accepting kwarg of key in Python 2.5
|
9
|
+
* Add some __special__ pickling methods that were missing
|
10
|
+
* Add --missingattrs option to ignore some (but not all) attribute names
|
11
|
+
* Fix crash when using keyword arguments with builtin methods
|
12
|
+
* Add --keepgoing option to ignore import errors
|
13
|
+
* Add --findevil option to make it easier to find objects that crash the interpreter
|
14
|
+
* Add support for Python 2.5
|
15
|
+
|
16
|
+
Version 0.8.17 - 3 February 2006
|
17
|
+
* Fix spurious warning for Statement with no effect using bit shifts
|
18
|
+
* Add -#/--limit command line option to set the max # of warnings to show
|
19
|
+
* Remove broken command line options: -e/--errors, --complexity
|
20
|
+
* Add -e/--level command line options which allows the error level
|
21
|
+
to be specified: error, security, warning, unused, deprecated, style.
|
22
|
+
These names map to numbers: 90, 90, 70, 50, 40, 10 (error == security).
|
23
|
+
Specifying a value means all levels equal to or greater than it.
|
24
|
+
* Add --only option which displays warnings only for files specified
|
25
|
+
on the command line
|
26
|
+
* Add --evil option for users to prevent the interpreter from crashing
|
27
|
+
due to broken C extensions
|
28
|
+
* Fix wrong file name when warning about returning values from
|
29
|
+
__init__ functions. (#1291116)
|
30
|
+
* Fix a few more glitches with setup.py.
|
31
|
+
* Suppress warning about integer division when the code is: int(x / y)
|
32
|
+
* Add code to skip testing objects from extension modules that are
|
33
|
+
known to crash the interpreter. Currently, the list includes old versions of
|
34
|
+
matplotlib.axes.BinOpType and wx.TheClipboard.
|
35
|
+
* Support ROT_THREE and ROT_FOUR opcodes
|
36
|
+
|
37
|
+
Version 0.8.16 - 4 September 2005
|
38
|
+
* Fix problems installing on Windows and running setup.py build
|
39
|
+
|
40
|
+
Version 0.8.15 - 31 August 2005
|
41
|
+
* Fix spurious warning about catching string exceptions
|
42
|
+
* Don't barf if there is # -*- encoding: ... -*- lines and unicode strings
|
43
|
+
* setup.py was rewritten to honor --root, --home, etc options
|
44
|
+
* Fix internal error on processing nested scopes
|
45
|
+
* Fix constant tuples in Python 2.4
|
46
|
+
* Don't warn about implicit/explicit returns in Python 2.4, we can't tell
|
47
|
+
* Fix crash when __slots__ was an instance w/o __len__
|
48
|
+
* Fix bug that declared {}.pop to only take one argument, it takes 1 or 2
|
49
|
+
* Fix spurious warning when using tuples for exceptions
|
50
|
+
* Fix spurious warning <stack> / <stack>
|
51
|
+
* Fix spurious warnings for sets module about __cmp__, __hash__
|
52
|
+
* Changed abstract check to require raising NotImplementedError
|
53
|
+
rather than raising any error
|
54
|
+
* Fix spurious warnings in Python 2.4 for Using is (not) None warnings
|
55
|
+
* Fix spurious warnings for some instances of No class attribute found
|
56
|
+
* Fix spurious warnings for implicit returns when using nested functions
|
57
|
+
|
58
|
+
Version 0.8.14 - 6 June 2004
|
59
|
+
* Fix spurious warning in Python 2.3+ when doing a,b = 1,2
|
60
|
+
* Add warning to check for "if s.find(str):"
|
61
|
+
this should be "if s.find(str) >= 0:" when s is a string
|
62
|
+
* Fix spurious warning when using augmented assignment (e.g., x += x)
|
63
|
+
* Fix spurious warning when doing x = not x
|
64
|
+
* Fix spurious warning for invalid arg count when calling a staticmethod
|
65
|
+
* Fix spurious warning for setting a variable to itself when: x, y, z = x
|
66
|
+
* Fix spurious warning when doing some binary operations: self.a ^ self.b
|
67
|
+
* Fix crash in STORE_ATTR with some list comprehensions in Python 2.2
|
68
|
+
e.g., a.a = [x for x in range(2) if x > 1]
|
69
|
+
* Support Tk 8.4 and above in the GUI (change col= to column=)
|
70
|
+
|
71
|
+
Version 0.8.13 - 18 November 2003
|
72
|
+
* Add -s/--shadowbuiltin option to warn when overriding a builtin
|
73
|
+
* Add warning when assigning a variable to itself
|
74
|
+
* Add warning when dividing a variable by itself
|
75
|
+
* Add warnings when using a bit-wise operator with the same variable (a & a)
|
76
|
+
* Add warning when passing a constant string to getattr()/setattr()
|
77
|
+
* Add --special option to check for __special__ (reserved) method names
|
78
|
+
and that their signature (argument count) is correct
|
79
|
+
* Add warning for using __getattribute__ in an old-style class
|
80
|
+
* Suppress 'self as first argument' warning for static and class methods
|
81
|
+
* Add --classmethodargs option to specify first argument name
|
82
|
+
for class methods
|
83
|
+
|
84
|
+
Version 0.8.12 - 23 December 2002
|
85
|
+
* Add --isliteral option to warn when using is/is not against literal
|
86
|
+
(e.g., XXX is 5 YYY is not 'abcdef', etc)
|
87
|
+
* Add --modulo1 option to warn when using (expr % 1),
|
88
|
+
which is constant when expr is an integer or string
|
89
|
+
* Add -4/--noeffect option to disable warnings for 'Statement has no effect'
|
90
|
+
* self is not first argument warning can be disabled with -S/--self ''
|
91
|
+
* Don't print duplicate warnings when importing pychecker
|
92
|
+
* Fix other spurious warnings when importing pychecker
|
93
|
+
* Fix bug for spurious invalid arguments when passing a dict inline
|
94
|
+
* Fix bug for spurious Statement has no effect when print >> x, ... ,
|
95
|
+
* Add @option_file command line argument to read options from a file
|
96
|
+
(used on platforms which can't have too many options, ie Windows)
|
97
|
+
* Fix several crashes
|
98
|
+
* Line numbers should be close for Python 2.3 and if run on optimized code
|
99
|
+
|
100
|
+
Version 0.8.11 - 06 June 2002
|
101
|
+
* Improve error message for syntax errors from user files
|
102
|
+
* Fix pychecker.bat so it should work now
|
103
|
+
* Add a warning for using __coerce__ in new-style classes
|
104
|
+
* Add --deprecated option for using deprecated modules or functions
|
105
|
+
* Add a warning for using functions with security problems (os.t[e]mpnam)
|
106
|
+
* Add a warning for comparing against True/False or defining True/False
|
107
|
+
* Add --badexcept option to warn when using string exceptions or
|
108
|
+
classes not derived from Exception to raise/catch exceptions
|
109
|
+
* Fix spurious warnings from using (test and 'true' or 'false)
|
110
|
+
|
111
|
+
Version 0.8.10 - 20 March 2002
|
112
|
+
* Add --unpack option to warn when unpacking a non-sequence
|
113
|
+
* Add --unpacklen option to warn when unpacking sequence of wrong size
|
114
|
+
* Add --changetypes option to warn when setting a variable to different types
|
115
|
+
* Add --stringiter option to warn when iterating over a string
|
116
|
+
* Add --input option to warn when using input()
|
117
|
+
* Fix crash with checking properties or deriving from objects (2.2 only)
|
118
|
+
* Fix crash with nested scopes and lambdas
|
119
|
+
* Fix spurious warnings for constant conditionals when using ('%s' % value)
|
120
|
+
* Fix spurious warnings for unused identifiers caused by from XXX import *
|
121
|
+
* Add more information when module cannot be imported
|
122
|
+
* Fix spurious warnings for implicit returns when using while 1:
|
123
|
+
* Fix spurious warnings for implicit returns when using try/finally:
|
124
|
+
* Fix spurious warning with globals that start w/__
|
125
|
+
* Fix spurious warnings for modifying default arguments
|
126
|
+
when calling {}.get(), {}.has_key(), [].index(), [].count(), etc.
|
127
|
+
* Fix spurious warnings in Python 1.5.2 when using from/import
|
128
|
+
|
129
|
+
Version 0.8.9 - 02 February 2002
|
130
|
+
* Add -3/--properties warning when using properties with classic classes
|
131
|
+
* Add more warnings for statements with no effect
|
132
|
+
* Fix crash due to import module problems
|
133
|
+
* Fix crash with nested scopes
|
134
|
+
* Fix spurious warnings about module attributes and importing
|
135
|
+
* Fix spurious warnings in Python 2.2 when using builtin classes (eg, socket)
|
136
|
+
* Fix spurious warning for format string problem when using % at module scope
|
137
|
+
* Fix spurious warning for implicit returns when doing while 1:
|
138
|
+
* Fix spurious warning for inconsistent return types
|
139
|
+
when objects are subclasses
|
140
|
+
* Don't warn about inconsistent return types from __getattr[ibute]__
|
141
|
+
* Always assume readline module is used if input/raw_input is used
|
142
|
+
|
143
|
+
Version 0.8.8 - 13 January 2002
|
144
|
+
* Add -F/--config option to specify pycheckrc file to use
|
145
|
+
Always read $HOME/.pycheckrc, .pycheckrc, and -F options in that order
|
146
|
+
* Add -0/--abstract option to warn that subclass should override
|
147
|
+
a base class whose method(s) only raise exceptions
|
148
|
+
* Add -6/--exec option to warn when using the exec statement
|
149
|
+
* Add -7/--slots option to warn about __slots__ usage problems
|
150
|
+
* Add --emptyslots option to warn about empty __slots__
|
151
|
+
* Add check if __getattr[ibute]__ returns None, should raise an exception
|
152
|
+
* Allow pychecker to be imported (in your code do: import pychecker.check)
|
153
|
+
* Using vars() for format string argument works like locals()
|
154
|
+
* Make unusedNames a prefix, so emptyVal, unusedVal, etc are also ignored
|
155
|
+
* Fix -a/--initattr warning to actually warn when attributes
|
156
|
+
are set outside of __init__(), but not in __init__()
|
157
|
+
* Fix case where an implicit return did not generate a warning
|
158
|
+
* Fix spurious warnings when using nested scopes, code should be checked now
|
159
|
+
* Fix spurious warnings for unreachable code (not enough to enable, yet)
|
160
|
+
* Fix spurious warnings for integer division from: (x + 100.0) / 10
|
161
|
+
* Fix spurious warnings for implicit returns when raise in except: clause
|
162
|
+
* Fix various spurious warnings when using Python 2.2
|
163
|
+
* Fix spurious warning for overridden method mismatch when using exec
|
164
|
+
* Fix spurious warning when doing len(filter(lambda x: ..., ...))
|
165
|
+
* Fix spurious warnings from some from ... import ... and deriving classes
|
166
|
+
|
167
|
+
Version 0.8.7 - 05 January 2002
|
168
|
+
* Add -2/--constcond option to warn if using a constant
|
169
|
+
in a conditional statement (if '': ; while 'str': ; etc)
|
170
|
+
* Add -1/--constant1 option to warn when using if 1: or while 1: etc.
|
171
|
+
* Add -8/--unreachable option to warn about unreachable code
|
172
|
+
* Add -9/--members option to warn about unused data members
|
173
|
+
* Add -w/--shadow for local variable shadowing global variable
|
174
|
+
* Add warning statements with no effect (load var, but do nothing)
|
175
|
+
* Handle string multiplication (helps format strings)
|
176
|
+
code like this doesn't generate a warning now: '%d ' * 3 % (1, 2, 3)
|
177
|
+
* Fix -C/--implicitreturns option so it works, turn it on by default
|
178
|
+
* Fix spurious warning when accessing 'static' class members that are methods
|
179
|
+
(e.g. class C(B): __super_init = B.__init__) (still a problem w/2.2)
|
180
|
+
* Fix some strange spurious warnings and exceptions
|
181
|
+
* Handle nested scopes better, includes fixing a crash and
|
182
|
+
eliminating some spurious warnings
|
183
|
+
|
184
|
+
Version 0.8.6 - 16 November 2001
|
185
|
+
* Add -5/--maxrefs for maximum # of identifier references (Law of Demeter)
|
186
|
+
* Fix problem where user defined classes weren't checked for valid attributes
|
187
|
+
* Allow use of __pychecker__ in class scope
|
188
|
+
* Fix a lot of global function arg counts for Python 2.2
|
189
|
+
(many constructors can take no arguments now)
|
190
|
+
* Fix spurious warning (Function return types are inconsistent)
|
191
|
+
when multiple returns w/a constant & a local variable of same type
|
192
|
+
* Fix spurious warning for format strings when using a dict local variable
|
193
|
+
* Rename pychecker.sh script to pychecker on Unix
|
194
|
+
|
195
|
+
Version 0.8.5 - 17 October 2001
|
196
|
+
* Add check for using builtin function/method const (None) return value
|
197
|
+
(e.g., not_a_new_list = [].sort())
|
198
|
+
* Add check for builtin object method calls for right # args
|
199
|
+
(e.g., [].count(), {}.keys(), file.seek(0))
|
200
|
+
* Add check for object method calls for right # args
|
201
|
+
(calling object when type is known, ie instatiated locally)
|
202
|
+
* Add check for modifying a parameter that has a default value
|
203
|
+
(e.g., def func(mutable = []): mutable.append(0))
|
204
|
+
* Add check for using future keywords (e.g., yield)
|
205
|
+
* Add check for using unary positive on variables (e.g., +x)
|
206
|
+
* Add check for recursive calls to __repr__ implementations (`self`)
|
207
|
+
* Add -X/--reimport option to turn off various module reimport warnings
|
208
|
+
* Add -V/--version option for printing PyChecker version
|
209
|
+
* Fix some spurious warnings for inconsistent return value types
|
210
|
+
* Fix spurious warning from calling functions like: zip(*args)
|
211
|
+
* Fix -F/--rcfile option so it really works
|
212
|
+
|
213
|
+
Version 0.8.4 - 24 September 2001
|
214
|
+
* Allow warning suppressions to be specified as regular expressions
|
215
|
+
* Add -z/--no-varargsused to ignore *args for functions w/variable args
|
216
|
+
* Add warning checks when deleting variables
|
217
|
+
* Add check for except Error1, Error2 : # should be except (Error1, Error2) :
|
218
|
+
* Fix spurious warning when using parameter as dict for format string
|
219
|
+
* Fix spurious warning when using lambda in __init__
|
220
|
+
* Add check that pychecker/checker.py is same version as other files
|
221
|
+
* Get setup.py to work on windows, etc. if don't have /tmp
|
222
|
+
|
223
|
+
Version 0.8.3 - 12 August 2001
|
224
|
+
* Fix internal errors when doing % on non-strings and other format problems
|
225
|
+
* Fix spurious warning when using a constant {} with a format mapping
|
226
|
+
|
227
|
+
Version 0.8.2 - 12 August 2001
|
228
|
+
* Check format strings even if using global & local constants
|
229
|
+
* Add check that [].append() only takes one argument
|
230
|
+
* Add check that # parameters are correct for builtin functions
|
231
|
+
* Add warnings for --, ++, ~~:
|
232
|
+
"Operator (%s) doesn't exist, statement has no effect"
|
233
|
+
* Add -Q/--quiet to be real quiet, only output warning msgs, nothing else
|
234
|
+
* Add -y/--classattr config option (warning was not configurable before)
|
235
|
+
(warn if class attribute doesn't exist)
|
236
|
+
* Add -x/--miximport config option (warning was not configurable before)
|
237
|
+
(warn if mixing: import/from ... import)
|
238
|
+
* Add -u/--callinit config option (warning was not configurable before)
|
239
|
+
(warn if Subclass.__init__() not called)
|
240
|
+
* Add constants together on stack when get + to avoid some spurious warnings
|
241
|
+
* Fix method and attribute checks for None and Ellipsis
|
242
|
+
* Fix spurious warnings when doing a local import and use module in lambda
|
243
|
+
* Fix spurious warnings when object attribute has same name as class
|
244
|
+
* Fix Object (x) has no attribute warnings for Python 2.2a1 built-in types
|
245
|
+
* Change default behaviour to not warn about missing doc strings
|
246
|
+
|
247
|
+
Version 0.8.1 - 9 August 2001
|
248
|
+
* Fix internal error when referencing a list constant: [1,2,3][1]
|
249
|
+
* Fix internal error for Python 1.5 not catching unicode syntax error
|
250
|
+
* Fix deprecation warning for Python 2.2a1 with xrange
|
251
|
+
* Fix spurious warning (No module attribute) when doing import x.y as y
|
252
|
+
* Fix spurious warning (Base __init__() not called) when using *args or **kw
|
253
|
+
* Fix 'No module attribute' warning when doing: import foo.bar as bar
|
254
|
+
* Spell overridden write
|
255
|
+
|
256
|
+
Version 0.8 - 6 August 2001
|
257
|
+
* Add check for accessing list as list[1,2], should be slice 1:2
|
258
|
+
* Add -J/maxargs to warn when using too many arguments
|
259
|
+
* Add -K/maxlocals to warn when using too many local variables
|
260
|
+
* Add -D/intdivide to warn when using integer division
|
261
|
+
* Add -O/objattrs to warn when using object.attribute that doesn't exist
|
262
|
+
* Add -M/reimportself to warn when a module imports itself
|
263
|
+
* Add -E/unusednames to provide a list of unused names to ignore
|
264
|
+
(default is: [ '_', 'empty', 'unused' ])
|
265
|
+
* Major refactoring of warn.py -> utils, msgs, Warning, CodeChecks
|
266
|
+
* Fix spurious warnings for No class attribute for dynamic classes
|
267
|
+
* Fix spurious warnings when using objects from blacklisted modules
|
268
|
+
(Instantiating object with arguments, but no constructor, etc)
|
269
|
+
* Fix spurious warnings when using lambdas
|
270
|
+
* Fix spurious warning (No global Y) when using: from X import Y
|
271
|
+
(problem in python 1.5/1.6 only)
|
272
|
+
|
273
|
+
Version 0.7.5 - 22 July 2001
|
274
|
+
* Suppress warnings on a per module/function/class/method basis
|
275
|
+
with new suppressions = {} in .pycheckrc
|
276
|
+
* Suppress warnings by setting __pychecker__ in source code
|
277
|
+
* Change long argument behaviour --arg sets arg to true,
|
278
|
+
--no-arg sets arg to false (also works for warning suppression)
|
279
|
+
* Add -U/--reuseattr check if function/class/method names are reused
|
280
|
+
* Add -T/--argsused check for unused method/function arguments
|
281
|
+
* Add -G/--selfused ignore if self is unused in a method
|
282
|
+
(requires --argsused)
|
283
|
+
* Add -q/--stdlib to disable warnings from the standard library
|
284
|
+
* Add -o/--override warning when a method has different signature
|
285
|
+
than one being overridden in a base class
|
286
|
+
* Add -F/--rcfile to generate a .pycheckrc file
|
287
|
+
* Fix checking files in standard library before local file
|
288
|
+
* Fix spurious warning when using from X import Y and imports in methods
|
289
|
+
(Module (m) re-imported)
|
290
|
+
* Fix spurious warning when doing: from X import Y, Z
|
291
|
+
* Fix spurious warning when deriving from Exception() and
|
292
|
+
instantiating object with multiple arguments
|
293
|
+
* Fix method argument checks when calling base class methods
|
294
|
+
* Fix error msg to base constructors (msg count was wrong)
|
295
|
+
* Fix access to builtin module attributes (e.g., sys.exc_value)
|
296
|
+
generating 'No attribute warnings'
|
297
|
+
* Fix tests (forgot to add : after line number in expected results)
|
298
|
+
|
299
|
+
Version 0.7 - 16 July 2001
|
300
|
+
* Improve import warning messages, add from checks
|
301
|
+
* checker.py -h prints defaults after processing .pycheckrc file
|
302
|
+
* Add config option -k/--pkgimport to disable unused imports from __init__.py
|
303
|
+
* Add warning for variable used before being set
|
304
|
+
* Improve format string checks/warnings
|
305
|
+
* Check arguments to constructors
|
306
|
+
* Check that self is first arg to base constructor
|
307
|
+
* Add -e/--errors option to only warn about likely errors
|
308
|
+
* Make 'self' configurable as the first argument to methods
|
309
|
+
* Add check that there is a c'tor when instantiating an object and
|
310
|
+
passing arguments
|
311
|
+
* Add config option (-N/--initreturn) to turn off warnings
|
312
|
+
when returning None from __init__()
|
313
|
+
* Fix internal error with python 2.1 which defines a new op: LOAD_DEREF
|
314
|
+
* Check in lambda functions for module/variable use
|
315
|
+
* Fix inability to evaluate { 1: 'a' } inline,
|
316
|
+
led to incorrect __init__() not called warnings
|
317
|
+
* Fix exception when class overrides __special__() methods & raise exception
|
318
|
+
* Fix check in format strings when using '%*g %*.*g', etc
|
319
|
+
* Add check for static class attributes
|
320
|
+
* Fix checking of module attributes
|
321
|
+
* Fix wrong filename in 'Base class (xxx) __init__() not called'
|
322
|
+
when doing a from X import *
|
323
|
+
* Fix 'No attribute found' for very dynamic classes
|
324
|
+
(may also work for classes that use __getattr__)
|
325
|
+
|
326
|
+
Version 0.6.1 - 27 June 2001
|
327
|
+
* Fix bug which caused an exception from some import code
|
328
|
+
* Fix bug in determining if there is an implicit return
|
329
|
+
|
330
|
+
Version 0.6 - 25 June 2001
|
331
|
+
* Check format strings: "%s %s %s" % (v1, v2, v3, v4) for arg counts
|
332
|
+
* Warn when format strings do: '%(var) %(var2)'
|
333
|
+
* Fix Local variable (xxx) not used, when have: "%(xxx)s" % locals()
|
334
|
+
* Warn when local variable (xxx) doesn't exist and have: "%(xxx)s" % locals()
|
335
|
+
* Install script in /usr/local/bin to invoke PyChecker
|
336
|
+
* Don't produce unused global warnings when using a module in parameters
|
337
|
+
* Don't produce unused global warnings when using a module in class variables
|
338
|
+
* Add check when using method as an attribute (if self.method and x == y:)
|
339
|
+
* Add check for right # of args to object construction
|
340
|
+
* Add check for right # of args to function calls in other modules
|
341
|
+
* Check for returning a value from __init__
|
342
|
+
* Fix using from XX import YY ; from XX import ZZ causing re-import warning
|
343
|
+
* Fix UNABLE TO IMPORT errors for files that don't end with a newline
|
344
|
+
* Support for checking consistent return values -- not complete
|
345
|
+
produces too many false positives
|
346
|
+
|
347
|
+
Version 0.5 - 29 May 2001
|
348
|
+
* Catch internal errors "gracefully" and turn into a warning
|
349
|
+
* Add checking of most module scoped code
|
350
|
+
* Add pychecker subdir to imports to prevent filename conflicts
|
351
|
+
* Don't produce unused local variable warning if variable name == '_'
|
352
|
+
* Add -g/--allglobals option to report all global warnings, not just first
|
353
|
+
* Add -V/--varlist option to selectively ignore variable not used warnings
|
354
|
+
* Add test script and expected results
|
355
|
+
* Print all instructions when using debug (-d/--debug)
|
356
|
+
* Overhaul internal stack handling so we can look for more problems
|
357
|
+
* Fix glob'ing problems (all args after glob were ignored)
|
358
|
+
* Fix spurious Base class __init__ not called
|
359
|
+
* Fix exception on code like: ['xxx'].index('xxx')
|
360
|
+
* Fix exception on code like: func(kw=(a < b))
|
361
|
+
* Fix line numbers for import statements
|
362
|
+
|
363
|
+
Version 0.4 - 23 April 2001
|
364
|
+
* Add .pycheckrc file processing to specify options (like on command line)
|
365
|
+
* Add new warning if module.Attribute doesn't exist
|
366
|
+
* Add new warning: Module (%s) re-imported locally
|
367
|
+
* Add glob'ing support for windows
|
368
|
+
* Handle apply(BaseClass.__init__(self, args))
|
369
|
+
* Fix command line handling so you can pass module, package, or filename
|
370
|
+
* Fix **kwArgs warning if named parameter is not first
|
371
|
+
* Don't exit from checker when import checker from interpreter
|
372
|
+
|
373
|
+
Version 0.3 - 17 April 2001
|
374
|
+
* Fix some checker crashes (oops)
|
375
|
+
* Add warnings for code complexity (lines/branches/returns per function)
|
376
|
+
* Add more configuration options
|
377
|
+
* Don't produce spurious warning for: x(y, { 'a': 'b' })
|
378
|
+
* Fix warnings that indicate they are from a base class file,
|
379
|
+
rather than real file
|
380
|
+
* Fix warnings for **kwArgs not allowed, but using named args
|
381
|
+
* Add configuration option for warning when using attribute as a function
|
382
|
+
(off by default, old behaviour was on)
|
383
|
+
|
384
|
+
Version 0.2.5 - 12 April 2001
|
385
|
+
* Add back support for Python 1.5.2 (again)
|
386
|
+
(I sure like 2.0 more with the [ for ] and string methods.)
|
387
|
+
* Add new warning for unused local variables
|
388
|
+
* Add command line switches
|
389
|
+
|
390
|
+
Version 0.2 - 10 April 2001
|
391
|
+
* Move tests into a sub-directory so import test doesn't import
|
392
|
+
pychecker/test
|
393
|
+
* Add more test files
|
394
|
+
* Add '.' to the python path so it doesn't need to be done in env't
|
395
|
+
* Print a warning at the end for each file that couldn't be import'ed
|
396
|
+
* Improve stack handling to improve error handling
|
397
|
+
* Try to get base class __init__ checking to work for both:
|
398
|
+
import X.Y
|
399
|
+
from X import Y
|
400
|
+
|
401
|
+
Version 0.1.1 - 8 April 2001
|
402
|
+
* Add support for Python 1.5.2
|
403
|
+
|
404
|
+
Version 0.1 - 7 April 2001
|
405
|
+
* Initial release
|
406
|
+
|
@@ -0,0 +1,131 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
|
3
|
+
# Copyright (c) 2001-2004, MetaSlash Inc. All rights reserved.
|
4
|
+
# Portions Copyright (c) 2005, Google, Inc. All rights reserved.
|
5
|
+
|
6
|
+
"""
|
7
|
+
Python byte code operations.
|
8
|
+
|
9
|
+
Very similar to the dis module, but dis does not exist in Jython,
|
10
|
+
so recreate the small portion we need here.
|
11
|
+
"""
|
12
|
+
|
13
|
+
def LINE_NUM(op): return op == 127
|
14
|
+
def LOAD_GLOBAL(op): return op == 116
|
15
|
+
def LOAD_CONST(op): return op == 100
|
16
|
+
def LOAD_FAST(op): return op == 124
|
17
|
+
def LOAD_ATTR(op): return op == 105
|
18
|
+
def LOAD_DEREF(op): return op == 136
|
19
|
+
def STORE_ATTR(op): return op == 95
|
20
|
+
def POP_TOP(op): return op == 1
|
21
|
+
def IMPORT_FROM(op): return op == 108
|
22
|
+
def IMPORT_STAR(op): return op == 84
|
23
|
+
def UNARY_POSITIVE(op): return op == 10
|
24
|
+
def UNARY_NEGATIVE(op): return op == 11
|
25
|
+
def UNARY_INVERT(op): return op == 15
|
26
|
+
def RETURN_VALUE(op): return op == 83
|
27
|
+
def JUMP_FORWARD(op): return op == 110
|
28
|
+
def JUMP_ABSOLUTE(op): return op == 113
|
29
|
+
def FOR_ITER(op): return op == 93
|
30
|
+
def FOR_LOOP(op): return op == 114
|
31
|
+
def SETUP_LOOP(op): return op == 120
|
32
|
+
def BREAK_LOOP(op): return op == 80
|
33
|
+
def RAISE_VARARGS(op): return op == 130
|
34
|
+
def POP_BLOCK(op): return op == 87
|
35
|
+
def END_FINALLY(op): return op == 88
|
36
|
+
def CALL_FUNCTION(op): return op == 131
|
37
|
+
|
38
|
+
def UNPACK_SEQUENCE(op) :
|
39
|
+
"Deal w/Python 1.5.2 (UNPACK_[LIST|TUPLE]) or 2.0 (UNPACK_SEQUENCE)"
|
40
|
+
return op in (92, 93,)
|
41
|
+
|
42
|
+
def IS_CONDITIONAL_JUMP(op):
|
43
|
+
return op in (111, 112)
|
44
|
+
|
45
|
+
def IS_NOT(op):
|
46
|
+
return op == 12
|
47
|
+
|
48
|
+
HAVE_ARGUMENT = 90
|
49
|
+
EXTENDED_ARG = 143
|
50
|
+
|
51
|
+
_HAS_NAME = (90, 91, 95, 96, 97, 98, 101, 105, 107, 108, 116,)
|
52
|
+
_HAS_LOCAL = (124, 125, 126,)
|
53
|
+
_HAS_CONST = (100,)
|
54
|
+
_HAS_COMPARE = (106,)
|
55
|
+
_HAS_JREL = (110, 111, 112, 114, 120, 121, 122,)
|
56
|
+
_HAS_JABS = (113, 119,)
|
57
|
+
|
58
|
+
_CMP_OP = ('<', '<=', '==', '!=', '>', '>=', 'in', 'not in', 'is',
|
59
|
+
'is not', 'exception match', 'BAD')
|
60
|
+
|
61
|
+
EXCEPT_COMPARISON = 10
|
62
|
+
IS_COMPARISON = 8
|
63
|
+
IN_COMPARISON = 6
|
64
|
+
NOT_IN_COMPARISON = 7
|
65
|
+
|
66
|
+
def getOperand(op, func_code, oparg) :
|
67
|
+
if op in _HAS_NAME :
|
68
|
+
return func_code.co_names[oparg]
|
69
|
+
elif op in _HAS_LOCAL :
|
70
|
+
return func_code.co_varnames[oparg]
|
71
|
+
elif op in _HAS_CONST :
|
72
|
+
return func_code.co_consts[oparg]
|
73
|
+
elif op in _HAS_COMPARE :
|
74
|
+
return _CMP_OP[oparg]
|
75
|
+
return None
|
76
|
+
|
77
|
+
def getLabel(op, oparg, i) :
|
78
|
+
if op in _HAS_JREL :
|
79
|
+
return i + oparg
|
80
|
+
elif op in _HAS_JABS :
|
81
|
+
return oparg
|
82
|
+
return None
|
83
|
+
|
84
|
+
def getInfo(code, index, extended_arg) :
|
85
|
+
"""Returns (op, oparg, index, extended_arg) based on code
|
86
|
+
this is a helper function while looping through byte code,
|
87
|
+
refer to the standard module dis.disassemble() for more info"""
|
88
|
+
|
89
|
+
# get the operation we are performing
|
90
|
+
op = ord(code[index])
|
91
|
+
index = index + 1
|
92
|
+
if op >= HAVE_ARGUMENT :
|
93
|
+
# get the argument to the operation
|
94
|
+
oparg = ord(code[index]) + ord(code[index+1])*256 + extended_arg
|
95
|
+
index = index + 2
|
96
|
+
extended_arg = 0
|
97
|
+
if op == EXTENDED_ARG :
|
98
|
+
extended_arg = oparg * 65536L
|
99
|
+
else :
|
100
|
+
oparg, extended_arg = 0, 0
|
101
|
+
return op, oparg, index, extended_arg
|
102
|
+
|
103
|
+
def initFuncCode(func) :
|
104
|
+
"""Returns (func_code, code, i, maxCode, extended_arg) based on func,
|
105
|
+
this is a helper function to setup looping through byte code"""
|
106
|
+
|
107
|
+
func_code = func.func_code
|
108
|
+
code = func_code.co_code
|
109
|
+
return func_code, code, 0, len(code), 0
|
110
|
+
|
111
|
+
def conditional(op):
|
112
|
+
"returns true if the code results in conditional execution"
|
113
|
+
return op in [83, # return
|
114
|
+
93, # for_iter
|
115
|
+
111, 112, 114, # conditional jump
|
116
|
+
121, # setup_exec
|
117
|
+
130 # raise_varargs
|
118
|
+
]
|
119
|
+
|
120
|
+
# this code is here for debugging purposes.
|
121
|
+
# Jython doesn't support dis, so don't rely on it
|
122
|
+
try :
|
123
|
+
import dis
|
124
|
+
name = dis.opname
|
125
|
+
except ImportError :
|
126
|
+
class Name:
|
127
|
+
'Turn name[x] into x'
|
128
|
+
def __getitem__(self, x):
|
129
|
+
from pychecker import utils
|
130
|
+
return utils.safestr(x)
|
131
|
+
name = Name()
|
Binary file
|
Binary file
|
@@ -0,0 +1,117 @@
|
|
1
|
+
import Tkinter
|
2
|
+
|
3
|
+
def bool(value):
|
4
|
+
if value:
|
5
|
+
return 1
|
6
|
+
return 0
|
7
|
+
|
8
|
+
class Base:
|
9
|
+
"Base class for all OptionTypes"
|
10
|
+
|
11
|
+
def __init__(self, name, default):
|
12
|
+
self._name = name
|
13
|
+
self._default = default
|
14
|
+
self._var = None
|
15
|
+
|
16
|
+
def name(self):
|
17
|
+
return self._name
|
18
|
+
|
19
|
+
def set(self, value):
|
20
|
+
self._var.set(value)
|
21
|
+
|
22
|
+
class Boolean(Base):
|
23
|
+
"A option type for editing boolean values"
|
24
|
+
|
25
|
+
def __init__(self, name, default):
|
26
|
+
Base.__init__(self, name, default)
|
27
|
+
|
28
|
+
def field(self, w):
|
29
|
+
self._var = Tkinter.BooleanVar()
|
30
|
+
if self._default:
|
31
|
+
self._var.set(1)
|
32
|
+
else:
|
33
|
+
self._var.set(0)
|
34
|
+
frame = Tkinter.Frame(w, name = self._name + "Frame")
|
35
|
+
result = Tkinter.Checkbutton(frame,
|
36
|
+
name=self._name,
|
37
|
+
text=self._name,
|
38
|
+
variable=self._var)
|
39
|
+
result.grid(sticky=Tkinter.W)
|
40
|
+
frame.columnconfigure(0, weight=1)
|
41
|
+
return frame
|
42
|
+
|
43
|
+
def arg(self):
|
44
|
+
if bool(self._var.get()) != bool(self._default):
|
45
|
+
if bool(self._var.get()):
|
46
|
+
return "--" + self._name
|
47
|
+
return "--no-" + self._name
|
48
|
+
return None
|
49
|
+
|
50
|
+
class Number(Base):
|
51
|
+
"OptionType for editing numbers"
|
52
|
+
|
53
|
+
def __init__(self, name, default):
|
54
|
+
Base.__init__(self, name, default)
|
55
|
+
|
56
|
+
def field(self, w):
|
57
|
+
self._var = Tkinter.IntVar()
|
58
|
+
self._var.set(self._default)
|
59
|
+
frame = Tkinter.Frame(w, name = self._name + "Frame")
|
60
|
+
label = Tkinter.Label(frame, text=self._name + ":")
|
61
|
+
label.grid(row=0, column=0, sticky=Tkinter.W)
|
62
|
+
entry = Tkinter.Entry(frame,
|
63
|
+
name=self._name,
|
64
|
+
textvariable=self._var,
|
65
|
+
width=4)
|
66
|
+
entry.grid(row=0, column=1, sticky=Tkinter.E)
|
67
|
+
for i in range(2):
|
68
|
+
frame.columnconfigure(i, weight=1)
|
69
|
+
return frame
|
70
|
+
|
71
|
+
def arg(self):
|
72
|
+
if self._var.get() != self._default:
|
73
|
+
return "--%s=%d" % (self._name, self._var.get())
|
74
|
+
return None
|
75
|
+
|
76
|
+
class Text(Base):
|
77
|
+
"OptionType for editing a little bit of text"
|
78
|
+
|
79
|
+
def __init__(self, name, default):
|
80
|
+
Base.__init__(self, name, default)
|
81
|
+
|
82
|
+
def width(self):
|
83
|
+
return int(min(15, len(self._default) * 1.20))
|
84
|
+
|
85
|
+
def field(self, w):
|
86
|
+
self._var = Tkinter.StringVar()
|
87
|
+
self._var.set(self._default)
|
88
|
+
frame = Tkinter.Frame(w, name = self._name + "Frame")
|
89
|
+
label = Tkinter.Label(frame, text=self._name + ":")
|
90
|
+
label.grid(row=0, column=0, sticky=Tkinter.W)
|
91
|
+
entry = Tkinter.Entry(frame,
|
92
|
+
name=self._name,
|
93
|
+
textvariable=self._var,
|
94
|
+
width=self.width())
|
95
|
+
entry.grid(row=0, column=1, sticky=Tkinter.E)
|
96
|
+
for i in range(2):
|
97
|
+
frame.columnconfigure(i, weight=1)
|
98
|
+
return frame
|
99
|
+
|
100
|
+
def arg(self):
|
101
|
+
if self._var.get() != self._default:
|
102
|
+
return "--%s=%s" % (self._name, self._var.get())
|
103
|
+
return None
|
104
|
+
|
105
|
+
def join(list):
|
106
|
+
import string
|
107
|
+
return string.join(list, ", ")
|
108
|
+
|
109
|
+
class List(Text):
|
110
|
+
"OptionType for editing a list of values"
|
111
|
+
|
112
|
+
def __init__(self, name, default):
|
113
|
+
Text.__init__(self, name, join(default))
|
114
|
+
|
115
|
+
def set(self, value):
|
116
|
+
self._var.set(join(value))
|
117
|
+
|
Binary file
|
Binary file
|