bee_python 0.0.3 → 0.0.4
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/{build/README → README} +1 -1
- data/egg/egg/build.yml +11 -49
- data/egg/egg.yml +19 -27
- data/egg/http/build.erb +32 -36
- data/egg/http/libhttp.py +102 -0
- data/egg/http/pylint.cfg +236 -0
- data/egg/http/server.py +7 -0
- data/egg/http/test.erb +32 -0
- data/egg/http.yml +33 -29
- data/egg/mysql/mysql.py +8 -9
- data/egg/project/build.erb +21 -53
- data/egg/project/pylint.cfg +236 -0
- data/egg/project/test.py +2 -2
- data/egg/project.yml +23 -31
- data/egg/script/build.erb +18 -23
- data/egg/script/pylint.cfg +236 -0
- data/egg/script.yml +22 -18
- data/egg/source/source.py +6 -6
- data/egg/test/test.py +1 -1
- data/lib/bee_task_python.rb +3 -34
- data/python.yml +123 -0
- metadata +61 -503
- data/test/build.yml +0 -16
- data/test/tc_bee_task_python.rb +0 -27
- data/test/test_build.rb +0 -26
- data/test/test_build_listener.rb +0 -110
- data/test/ts_bee_python.rb +0 -26
- data/tools/common/__init__.py +0 -5
- data/tools/common/common/__init__.py +0 -140
- data/tools/common/common/__pkginfo__.py +0 -43
- data/tools/common/common/adbh.py +0 -35
- data/tools/common/common/cache.py +0 -114
- data/tools/common/common/changelog.py +0 -234
- data/tools/common/common/clcommands.py +0 -181
- data/tools/common/common/cli.py +0 -212
- data/tools/common/common/compat.py +0 -328
- data/tools/common/common/configuration.py +0 -1087
- data/tools/common/common/contexts.py +0 -58
- data/tools/common/common/corbautils.py +0 -117
- data/tools/common/common/daemon.py +0 -171
- data/tools/common/common/date.py +0 -279
- data/tools/common/common/db.py +0 -49
- data/tools/common/common/dbf.py +0 -229
- data/tools/common/common/debugger.py +0 -208
- data/tools/common/common/decorators.py +0 -190
- data/tools/common/common/deprecation.py +0 -118
- data/tools/common/common/fileutils.py +0 -409
- data/tools/common/common/graph.py +0 -259
- data/tools/common/common/html.py +0 -142
- data/tools/common/common/interface.py +0 -76
- data/tools/common/common/logging_ext.py +0 -166
- data/tools/common/common/modutils.py +0 -670
- data/tools/common/common/optik_ext.py +0 -383
- data/tools/common/common/optparser.py +0 -92
- data/tools/common/common/pdf_ext.py +0 -111
- data/tools/common/common/proc.py +0 -276
- data/tools/common/common/pyro_ext.py +0 -146
- data/tools/common/common/pytest.py +0 -754
- data/tools/common/common/shellutils.py +0 -383
- data/tools/common/common/sphinx_ext.py +0 -87
- data/tools/common/common/sphinxutils.py +0 -122
- data/tools/common/common/sqlgen.py +0 -31
- data/tools/common/common/table.py +0 -930
- data/tools/common/common/tasksqueue.py +0 -97
- data/tools/common/common/test/__init__.py +0 -1
- data/tools/common/common/test/data/ChangeLog +0 -184
- data/tools/common/common/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
- data/tools/common/common/test/data/__init__.py +0 -1
- data/tools/common/common/test/data/content_differ_dir/NOTHING +0 -0
- data/tools/common/common/test/data/content_differ_dir/README +0 -1
- data/tools/common/common/test/data/content_differ_dir/subdir/coin +0 -1
- data/tools/common/common/test/data/content_differ_dir/subdir/toto.txt +0 -53
- data/tools/common/common/test/data/file_differ_dir/NOTHING +0 -0
- data/tools/common/common/test/data/file_differ_dir/README +0 -1
- data/tools/common/common/test/data/file_differ_dir/subdir/toto.txt +0 -53
- 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 +0 -9
- data/tools/common/common/test/data/module.py +0 -88
- data/tools/common/common/test/data/module2.py +0 -77
- data/tools/common/common/test/data/newlines.txt +0 -3
- data/tools/common/common/test/data/noendingnewline.py +0 -36
- data/tools/common/common/test/data/nonregr.py +0 -14
- 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 +0 -1
- data/tools/common/common/test/data/reference_dir/subdir/coin +0 -1
- data/tools/common/common/test/data/reference_dir/subdir/toto.txt +0 -53
- data/tools/common/common/test/data/same_dir/NOTHING +0 -0
- data/tools/common/common/test/data/same_dir/README +0 -1
- data/tools/common/common/test/data/same_dir/subdir/coin +0 -1
- data/tools/common/common/test/data/same_dir/subdir/toto.txt +0 -53
- data/tools/common/common/test/data/spam.txt +0 -9
- data/tools/common/common/test/data/sub/doc.txt +0 -1
- data/tools/common/common/test/data/sub/momo.py +0 -1
- data/tools/common/common/test/data/subdir_differ_dir/NOTHING +0 -0
- data/tools/common/common/test/data/subdir_differ_dir/README +0 -1
- data/tools/common/common/test/data/subdir_differ_dir/subdir/coin +0 -1
- data/tools/common/common/test/data/subdir_differ_dir/subdir/toto.txt +0 -53
- data/tools/common/common/test/data/test.ini +0 -20
- data/tools/common/common/test/data/test1.msg +0 -30
- data/tools/common/common/test/data/test2.msg +0 -42
- data/tools/common/common/test/data/write_protected_file.txt +0 -0
- data/tools/common/common/test/foomod.py +0 -17
- data/tools/common/common/test/unittest_cache.py +0 -129
- data/tools/common/common/test/unittest_changelog.py +0 -37
- data/tools/common/common/test/unittest_compat.py +0 -239
- data/tools/common/common/test/unittest_configuration.py +0 -348
- data/tools/common/common/test/unittest_date.py +0 -154
- data/tools/common/common/test/unittest_decorators.py +0 -62
- data/tools/common/common/test/unittest_deprecation.py +0 -76
- data/tools/common/common/test/unittest_fileutils.py +0 -133
- data/tools/common/common/test/unittest_graph.py +0 -50
- data/tools/common/common/test/unittest_html.py +0 -76
- data/tools/common/common/test/unittest_interface.py +0 -87
- data/tools/common/common/test/unittest_modutils.py +0 -244
- data/tools/common/common/test/unittest_pytest.py +0 -50
- data/tools/common/common/test/unittest_shellutils.py +0 -248
- data/tools/common/common/test/unittest_table.py +0 -448
- data/tools/common/common/test/unittest_taskqueue.py +0 -71
- data/tools/common/common/test/unittest_testlib.py +0 -956
- data/tools/common/common/test/unittest_textutils.py +0 -247
- data/tools/common/common/test/unittest_tree.py +0 -248
- data/tools/common/common/test/unittest_umessage.py +0 -55
- data/tools/common/common/test/unittest_ureports_html.py +0 -64
- data/tools/common/common/test/unittest_ureports_text.py +0 -105
- data/tools/common/common/test/unittest_xmlutils.py +0 -75
- data/tools/common/common/test/utils.py +0 -87
- data/tools/common/common/testlib.py +0 -1927
- data/tools/common/common/textutils.py +0 -476
- data/tools/common/common/tree.py +0 -372
- data/tools/common/common/umessage.py +0 -161
- data/tools/common/common/ureports/__init__.py +0 -174
- data/tools/common/common/ureports/docbook_writer.py +0 -139
- data/tools/common/common/ureports/html_writer.py +0 -131
- data/tools/common/common/ureports/nodes.py +0 -201
- data/tools/common/common/ureports/text_writer.py +0 -140
- data/tools/common/common/vcgutils.py +0 -216
- data/tools/common/common/visitor.py +0 -107
- data/tools/common/common/xmlrpcutils.py +0 -136
- data/tools/common/common/xmlutils.py +0 -61
- data/tools/coverage/coverage.py +0 -602
- data/tools/epydoc/__init__.py +0 -227
- data/tools/epydoc/__init__.pyc +0 -0
- data/tools/epydoc/apidoc.py +0 -2203
- data/tools/epydoc/apidoc.pyc +0 -0
- data/tools/epydoc/checker.py +0 -349
- data/tools/epydoc/checker.pyc +0 -0
- data/tools/epydoc/cli.py +0 -1470
- data/tools/epydoc/cli.pyc +0 -0
- data/tools/epydoc/compat.py +0 -250
- data/tools/epydoc/compat.pyc +0 -0
- data/tools/epydoc/docbuilder.py +0 -1358
- data/tools/epydoc/docbuilder.pyc +0 -0
- data/tools/epydoc/docintrospecter.py +0 -1056
- data/tools/epydoc/docintrospecter.pyc +0 -0
- data/tools/epydoc/docparser.py +0 -2113
- data/tools/epydoc/docparser.pyc +0 -0
- data/tools/epydoc/docstringparser.py +0 -1111
- data/tools/epydoc/docstringparser.pyc +0 -0
- data/tools/epydoc/docwriter/__init__.py +0 -12
- data/tools/epydoc/docwriter/__init__.pyc +0 -0
- data/tools/epydoc/docwriter/dotgraph.py +0 -1351
- data/tools/epydoc/docwriter/dotgraph.pyc +0 -0
- data/tools/epydoc/docwriter/html.py +0 -3491
- data/tools/epydoc/docwriter/html.pyc +0 -0
- data/tools/epydoc/docwriter/html_colorize.py +0 -909
- data/tools/epydoc/docwriter/html_colorize.pyc +0 -0
- data/tools/epydoc/docwriter/html_css.py +0 -550
- data/tools/epydoc/docwriter/html_css.pyc +0 -0
- data/tools/epydoc/docwriter/html_help.py +0 -190
- data/tools/epydoc/docwriter/html_help.pyc +0 -0
- data/tools/epydoc/docwriter/latex.py +0 -1187
- data/tools/epydoc/docwriter/latex.pyc +0 -0
- data/tools/epydoc/docwriter/plaintext.py +0 -276
- data/tools/epydoc/docwriter/plaintext.pyc +0 -0
- data/tools/epydoc/docwriter/xlink.py +0 -505
- data/tools/epydoc/docwriter/xlink.pyc +0 -0
- data/tools/epydoc/gui.py +0 -1148
- data/tools/epydoc/gui.pyc +0 -0
- data/tools/epydoc/log.py +0 -204
- data/tools/epydoc/log.pyc +0 -0
- data/tools/epydoc/markup/__init__.py +0 -623
- data/tools/epydoc/markup/__init__.pyc +0 -0
- data/tools/epydoc/markup/doctest.py +0 -311
- data/tools/epydoc/markup/doctest.pyc +0 -0
- data/tools/epydoc/markup/epytext.py +0 -2116
- data/tools/epydoc/markup/epytext.pyc +0 -0
- data/tools/epydoc/markup/javadoc.py +0 -250
- data/tools/epydoc/markup/javadoc.pyc +0 -0
- data/tools/epydoc/markup/plaintext.py +0 -78
- data/tools/epydoc/markup/plaintext.pyc +0 -0
- data/tools/epydoc/markup/pyval_repr.py +0 -532
- data/tools/epydoc/markup/pyval_repr.pyc +0 -0
- data/tools/epydoc/markup/restructuredtext.py +0 -906
- data/tools/epydoc/markup/restructuredtext.pyc +0 -0
- data/tools/epydoc/test/__init__.py +0 -97
- data/tools/epydoc/test/__init__.pyc +0 -0
- data/tools/epydoc/test/util.py +0 -226
- data/tools/epydoc/test/util.pyc +0 -0
- data/tools/epydoc/util.py +0 -289
- data/tools/epydoc/util.pyc +0 -0
- data/tools/logilab/logilab/__init__.py +0 -5
- data/tools/logilab/logilab/astng/__init__.py +0 -82
- data/tools/logilab/logilab/astng/__pkginfo__.py +0 -76
- data/tools/logilab/logilab/astng/_exceptions.py +0 -64
- data/tools/logilab/logilab/astng/_nodes_ast.py +0 -667
- data/tools/logilab/logilab/astng/_nodes_compiler.py +0 -758
- data/tools/logilab/logilab/astng/bases.py +0 -608
- data/tools/logilab/logilab/astng/builder.py +0 -239
- data/tools/logilab/logilab/astng/inference.py +0 -426
- data/tools/logilab/logilab/astng/inspector.py +0 -289
- data/tools/logilab/logilab/astng/manager.py +0 -421
- data/tools/logilab/logilab/astng/mixins.py +0 -165
- data/tools/logilab/logilab/astng/node_classes.py +0 -848
- data/tools/logilab/logilab/astng/nodes.py +0 -85
- data/tools/logilab/logilab/astng/nodes_as_string.py +0 -389
- data/tools/logilab/logilab/astng/patchcomptransformer.py +0 -159
- data/tools/logilab/logilab/astng/protocols.py +0 -333
- data/tools/logilab/logilab/astng/raw_building.py +0 -212
- data/tools/logilab/logilab/astng/rebuilder.py +0 -307
- data/tools/logilab/logilab/astng/scoped_nodes.py +0 -951
- data/tools/logilab/logilab/astng/test/__init__.py +0 -19
- 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 +0 -33
- data/tools/logilab/logilab/astng/test/data/SSL1/__init__.py +0 -20
- data/tools/logilab/logilab/astng/test/data/__init__.py +0 -20
- data/tools/logilab/logilab/astng/test/data/all.py +0 -29
- data/tools/logilab/logilab/astng/test/data/appl/__init__.py +0 -23
- data/tools/logilab/logilab/astng/test/data/appl/myConnection.py +0 -30
- data/tools/logilab/logilab/astng/test/data/format.py +0 -34
- data/tools/logilab/logilab/astng/test/data/module.py +0 -90
- data/tools/logilab/logilab/astng/test/data/module2.py +0 -112
- data/tools/logilab/logilab/astng/test/data/noendingnewline.py +0 -57
- data/tools/logilab/logilab/astng/test/data/nonregr.py +0 -76
- data/tools/logilab/logilab/astng/test/data/notall.py +0 -28
- data/tools/logilab/logilab/astng/test/data2/__init__.py +0 -20
- data/tools/logilab/logilab/astng/test/data2/clientmodule_test.py +0 -51
- data/tools/logilab/logilab/astng/test/data2/suppliermodule_test.py +0 -32
- data/tools/logilab/logilab/astng/test/regrtest.py +0 -135
- data/tools/logilab/logilab/astng/test/regrtest_data/absimport.py +0 -22
- data/tools/logilab/logilab/astng/test/regrtest_data/descriptor_crash.py +0 -31
- data/tools/logilab/logilab/astng/test/regrtest_data/import_package_subpackage_module.py +0 -68
- data/tools/logilab/logilab/astng/test/regrtest_data/package/__init__.py +0 -24
- data/tools/logilab/logilab/astng/test/regrtest_data/package/subpackage/__init__.py +0 -20
- data/tools/logilab/logilab/astng/test/regrtest_data/package/subpackage/module.py +0 -20
- data/tools/logilab/logilab/astng/test/unittest_builder.py +0 -684
- data/tools/logilab/logilab/astng/test/unittest_inference.py +0 -1112
- data/tools/logilab/logilab/astng/test/unittest_inspector.py +0 -105
- data/tools/logilab/logilab/astng/test/unittest_lookup.py +0 -302
- data/tools/logilab/logilab/astng/test/unittest_manager.py +0 -98
- data/tools/logilab/logilab/astng/test/unittest_nodes.py +0 -302
- data/tools/logilab/logilab/astng/test/unittest_scoped_nodes.py +0 -501
- data/tools/logilab/logilab/astng/test/unittest_utils.py +0 -104
- data/tools/logilab/logilab/astng/utils.py +0 -342
- data/tools/logilab/logilab/common/__init__.py +0 -140
- data/tools/logilab/logilab/common/__pkginfo__.py +0 -43
- data/tools/logilab/logilab/common/adbh.py +0 -35
- data/tools/logilab/logilab/common/cache.py +0 -114
- data/tools/logilab/logilab/common/changelog.py +0 -234
- data/tools/logilab/logilab/common/clcommands.py +0 -181
- data/tools/logilab/logilab/common/cli.py +0 -212
- data/tools/logilab/logilab/common/compat.py +0 -328
- data/tools/logilab/logilab/common/configuration.py +0 -1087
- data/tools/logilab/logilab/common/contexts.py +0 -58
- data/tools/logilab/logilab/common/corbautils.py +0 -117
- data/tools/logilab/logilab/common/daemon.py +0 -171
- data/tools/logilab/logilab/common/date.py +0 -279
- data/tools/logilab/logilab/common/db.py +0 -49
- data/tools/logilab/logilab/common/dbf.py +0 -229
- data/tools/logilab/logilab/common/debugger.py +0 -208
- data/tools/logilab/logilab/common/decorators.py +0 -190
- data/tools/logilab/logilab/common/deprecation.py +0 -118
- data/tools/logilab/logilab/common/fileutils.py +0 -409
- data/tools/logilab/logilab/common/graph.py +0 -259
- data/tools/logilab/logilab/common/html.py +0 -142
- data/tools/logilab/logilab/common/interface.py +0 -76
- data/tools/logilab/logilab/common/logging_ext.py +0 -166
- data/tools/logilab/logilab/common/modutils.py +0 -670
- data/tools/logilab/logilab/common/optik_ext.py +0 -383
- data/tools/logilab/logilab/common/optparser.py +0 -92
- data/tools/logilab/logilab/common/pdf_ext.py +0 -111
- data/tools/logilab/logilab/common/proc.py +0 -276
- data/tools/logilab/logilab/common/pyro_ext.py +0 -146
- data/tools/logilab/logilab/common/pytest.py +0 -754
- data/tools/logilab/logilab/common/shellutils.py +0 -383
- data/tools/logilab/logilab/common/sphinx_ext.py +0 -87
- data/tools/logilab/logilab/common/sphinxutils.py +0 -122
- data/tools/logilab/logilab/common/sqlgen.py +0 -31
- data/tools/logilab/logilab/common/table.py +0 -930
- data/tools/logilab/logilab/common/tasksqueue.py +0 -97
- data/tools/logilab/logilab/common/test/__init__.py +0 -1
- data/tools/logilab/logilab/common/test/data/ChangeLog +0 -184
- 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 +0 -1
- data/tools/logilab/logilab/common/test/data/content_differ_dir/NOTHING +0 -0
- data/tools/logilab/logilab/common/test/data/content_differ_dir/README +0 -1
- data/tools/logilab/logilab/common/test/data/content_differ_dir/subdir/coin +0 -1
- data/tools/logilab/logilab/common/test/data/content_differ_dir/subdir/toto.txt +0 -53
- data/tools/logilab/logilab/common/test/data/file_differ_dir/NOTHING +0 -0
- data/tools/logilab/logilab/common/test/data/file_differ_dir/README +0 -1
- data/tools/logilab/logilab/common/test/data/file_differ_dir/subdir/toto.txt +0 -53
- 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 +0 -9
- data/tools/logilab/logilab/common/test/data/module.py +0 -88
- data/tools/logilab/logilab/common/test/data/module2.py +0 -77
- data/tools/logilab/logilab/common/test/data/newlines.txt +0 -3
- data/tools/logilab/logilab/common/test/data/noendingnewline.py +0 -36
- data/tools/logilab/logilab/common/test/data/nonregr.py +0 -14
- 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 +0 -1
- data/tools/logilab/logilab/common/test/data/reference_dir/subdir/coin +0 -1
- data/tools/logilab/logilab/common/test/data/reference_dir/subdir/toto.txt +0 -53
- data/tools/logilab/logilab/common/test/data/same_dir/NOTHING +0 -0
- data/tools/logilab/logilab/common/test/data/same_dir/README +0 -1
- data/tools/logilab/logilab/common/test/data/same_dir/subdir/coin +0 -1
- data/tools/logilab/logilab/common/test/data/same_dir/subdir/toto.txt +0 -53
- data/tools/logilab/logilab/common/test/data/spam.txt +0 -9
- data/tools/logilab/logilab/common/test/data/sub/doc.txt +0 -1
- data/tools/logilab/logilab/common/test/data/sub/momo.py +0 -1
- data/tools/logilab/logilab/common/test/data/subdir_differ_dir/NOTHING +0 -0
- data/tools/logilab/logilab/common/test/data/subdir_differ_dir/README +0 -1
- data/tools/logilab/logilab/common/test/data/subdir_differ_dir/subdir/coin +0 -1
- data/tools/logilab/logilab/common/test/data/subdir_differ_dir/subdir/toto.txt +0 -53
- data/tools/logilab/logilab/common/test/data/test.ini +0 -20
- data/tools/logilab/logilab/common/test/data/test1.msg +0 -30
- data/tools/logilab/logilab/common/test/data/test2.msg +0 -42
- data/tools/logilab/logilab/common/test/data/write_protected_file.txt +0 -0
- data/tools/logilab/logilab/common/test/foomod.py +0 -17
- data/tools/logilab/logilab/common/test/unittest_cache.py +0 -129
- data/tools/logilab/logilab/common/test/unittest_changelog.py +0 -37
- data/tools/logilab/logilab/common/test/unittest_compat.py +0 -239
- data/tools/logilab/logilab/common/test/unittest_configuration.py +0 -348
- data/tools/logilab/logilab/common/test/unittest_date.py +0 -154
- data/tools/logilab/logilab/common/test/unittest_decorators.py +0 -62
- data/tools/logilab/logilab/common/test/unittest_deprecation.py +0 -76
- data/tools/logilab/logilab/common/test/unittest_fileutils.py +0 -133
- data/tools/logilab/logilab/common/test/unittest_graph.py +0 -50
- data/tools/logilab/logilab/common/test/unittest_html.py +0 -76
- data/tools/logilab/logilab/common/test/unittest_interface.py +0 -87
- data/tools/logilab/logilab/common/test/unittest_modutils.py +0 -244
- data/tools/logilab/logilab/common/test/unittest_pytest.py +0 -50
- data/tools/logilab/logilab/common/test/unittest_shellutils.py +0 -248
- data/tools/logilab/logilab/common/test/unittest_table.py +0 -448
- data/tools/logilab/logilab/common/test/unittest_taskqueue.py +0 -71
- data/tools/logilab/logilab/common/test/unittest_testlib.py +0 -956
- data/tools/logilab/logilab/common/test/unittest_textutils.py +0 -247
- data/tools/logilab/logilab/common/test/unittest_tree.py +0 -248
- data/tools/logilab/logilab/common/test/unittest_umessage.py +0 -55
- data/tools/logilab/logilab/common/test/unittest_ureports_html.py +0 -64
- data/tools/logilab/logilab/common/test/unittest_ureports_text.py +0 -105
- data/tools/logilab/logilab/common/test/unittest_xmlutils.py +0 -75
- data/tools/logilab/logilab/common/test/utils.py +0 -87
- data/tools/logilab/logilab/common/testlib.py +0 -1927
- data/tools/logilab/logilab/common/textutils.py +0 -476
- data/tools/logilab/logilab/common/tree.py +0 -372
- data/tools/logilab/logilab/common/umessage.py +0 -161
- data/tools/logilab/logilab/common/ureports/__init__.py +0 -174
- data/tools/logilab/logilab/common/ureports/docbook_writer.py +0 -139
- data/tools/logilab/logilab/common/ureports/html_writer.py +0 -131
- data/tools/logilab/logilab/common/ureports/nodes.py +0 -201
- data/tools/logilab/logilab/common/ureports/text_writer.py +0 -140
- data/tools/logilab/logilab/common/vcgutils.py +0 -216
- data/tools/logilab/logilab/common/visitor.py +0 -107
- data/tools/logilab/logilab/common/xmlrpcutils.py +0 -136
- data/tools/logilab/logilab/common/xmlutils.py +0 -61
- data/tools/pychecker/COPYRIGHT +0 -31
- data/tools/pychecker/ChangeLog +0 -349
- data/tools/pychecker/CodeChecks.py +0 -1969
- data/tools/pychecker/CodeChecks.pyc +0 -0
- data/tools/pychecker/CodeChecks.pyo +0 -0
- data/tools/pychecker/Config.py +0 -475
- data/tools/pychecker/Config.pyc +0 -0
- data/tools/pychecker/Config.pyo +0 -0
- data/tools/pychecker/KNOWN_BUGS +0 -100
- data/tools/pychecker/MAINTAINERS +0 -81
- data/tools/pychecker/NEWS +0 -406
- data/tools/pychecker/OP.py +0 -131
- data/tools/pychecker/OP.pyc +0 -0
- data/tools/pychecker/OP.pyo +0 -0
- data/tools/pychecker/OptionTypes.py +0 -117
- data/tools/pychecker/OptionTypes.pyc +0 -0
- data/tools/pychecker/OptionTypes.pyo +0 -0
- data/tools/pychecker/README +0 -152
- data/tools/pychecker/Stack.py +0 -115
- data/tools/pychecker/Stack.pyc +0 -0
- data/tools/pychecker/Stack.pyo +0 -0
- data/tools/pychecker/TODO +0 -101
- data/tools/pychecker/VERSION +0 -1
- data/tools/pychecker/Warning.py +0 -50
- data/tools/pychecker/Warning.pyc +0 -0
- data/tools/pychecker/Warning.pyo +0 -0
- data/tools/pychecker/__init__.py +0 -17
- data/tools/pychecker/__init__.pyc +0 -0
- data/tools/pychecker/__init__.pyo +0 -0
- data/tools/pychecker/checker.py +0 -961
- data/tools/pychecker/checker.pyc +0 -0
- data/tools/pychecker/checker.pyo +0 -0
- data/tools/pychecker/function.py +0 -159
- data/tools/pychecker/function.pyc +0 -0
- data/tools/pychecker/function.pyo +0 -0
- data/tools/pychecker/msgs.py +0 -175
- data/tools/pychecker/msgs.pyc +0 -0
- data/tools/pychecker/msgs.pyo +0 -0
- data/tools/pychecker/options.py +0 -275
- data/tools/pychecker/options.pyc +0 -0
- data/tools/pychecker/options.pyo +0 -0
- data/tools/pychecker/pcmodules.py +0 -19
- data/tools/pychecker/pcmodules.pyc +0 -0
- data/tools/pychecker/pcmodules.pyo +0 -0
- data/tools/pychecker/printer.py +0 -47
- data/tools/pychecker/printer.pyc +0 -0
- data/tools/pychecker/printer.pyo +0 -0
- data/tools/pychecker/python.py +0 -427
- data/tools/pychecker/python.pyc +0 -0
- data/tools/pychecker/python.pyo +0 -0
- data/tools/pychecker/utils.py +0 -102
- data/tools/pychecker/utils.pyc +0 -0
- data/tools/pychecker/utils.pyo +0 -0
- data/tools/pychecker/warn.py +0 -778
- data/tools/pychecker/warn.pyc +0 -0
- data/tools/pychecker/warn.pyo +0 -0
- data/tools/pylint2/pylint/__init__.py +0 -16
- data/tools/pylint2/pylint/__pkginfo__.py +0 -67
- data/tools/pylint2/pylint/checkers/__init__.py +0 -155
- data/tools/pylint2/pylint/checkers/base.py +0 -749
- data/tools/pylint2/pylint/checkers/classes.py +0 -527
- data/tools/pylint2/pylint/checkers/design_analysis.py +0 -344
- data/tools/pylint2/pylint/checkers/exceptions.py +0 -183
- data/tools/pylint2/pylint/checkers/format.py +0 -367
- data/tools/pylint2/pylint/checkers/imports.py +0 -379
- data/tools/pylint2/pylint/checkers/logging.py +0 -98
- data/tools/pylint2/pylint/checkers/misc.py +0 -128
- data/tools/pylint2/pylint/checkers/newstyle.py +0 -107
- data/tools/pylint2/pylint/checkers/raw_metrics.py +0 -125
- data/tools/pylint2/pylint/checkers/similar.py +0 -333
- data/tools/pylint2/pylint/checkers/string_format.py +0 -239
- data/tools/pylint2/pylint/checkers/typecheck.py +0 -364
- data/tools/pylint2/pylint/checkers/utils.py +0 -208
- data/tools/pylint2/pylint/checkers/variables.py +0 -498
- data/tools/pylint2/pylint/config.py +0 -149
- data/tools/pylint2/pylint/epylint.py +0 -149
- data/tools/pylint2/pylint/gui.py +0 -433
- data/tools/pylint2/pylint/interfaces.py +0 -98
- data/tools/pylint2/pylint/lint.py +0 -914
- data/tools/pylint2/pylint/pyreverse/__init__.py +0 -5
- data/tools/pylint2/pylint/pyreverse/diadefslib.py +0 -229
- data/tools/pylint2/pylint/pyreverse/diagrams.py +0 -247
- data/tools/pylint2/pylint/pyreverse/main.py +0 -123
- data/tools/pylint2/pylint/pyreverse/utils.py +0 -131
- data/tools/pylint2/pylint/pyreverse/writer.py +0 -196
- data/tools/pylint2/pylint/reporters/__init__.py +0 -67
- data/tools/pylint2/pylint/reporters/guireporter.py +0 -36
- data/tools/pylint2/pylint/reporters/html.py +0 -69
- data/tools/pylint2/pylint/reporters/text.py +0 -156
- data/tools/pylint2/pylint/utils.py +0 -518
- data/tools/pylint2/pylint.py +0 -16
@@ -1,131 +0,0 @@
|
|
1
|
-
# Copyright (c) 2002-2010 LOGILAB S.A. (Paris, FRANCE).
|
2
|
-
# http://www.logilab.fr/ -- mailto:contact@logilab.fr
|
3
|
-
#
|
4
|
-
# This program is free software; you can redistribute it and/or modify it under
|
5
|
-
# the terms of the GNU General Public License as published by the Free Software
|
6
|
-
# Foundation; either version 2 of the License, or (at your option) any later
|
7
|
-
# version.
|
8
|
-
#
|
9
|
-
# This program is distributed in the hope that it will be useful, but WITHOUT
|
10
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
11
|
-
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
12
|
-
#
|
13
|
-
# You should have received a copy of the GNU General Public License along with
|
14
|
-
# this program; if not, write to the Free Software Foundation, Inc.,
|
15
|
-
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
16
|
-
"""
|
17
|
-
generic classes/functions for pyreverse core/extensions
|
18
|
-
"""
|
19
|
-
|
20
|
-
import sys
|
21
|
-
import re
|
22
|
-
import os
|
23
|
-
|
24
|
-
########### pyreverse option utils ##############################
|
25
|
-
|
26
|
-
|
27
|
-
RCFILE = '.pyreverserc'
|
28
|
-
|
29
|
-
def get_default_options():
|
30
|
-
"""
|
31
|
-
Read config file and return list of options
|
32
|
-
"""
|
33
|
-
options = []
|
34
|
-
home = os.environ.get('HOME', '')
|
35
|
-
if home:
|
36
|
-
rcfile = os.path.join(home, RCFILE)
|
37
|
-
try:
|
38
|
-
options = open(rcfile).read().split()
|
39
|
-
except IOError:
|
40
|
-
pass # ignore if no config file found
|
41
|
-
return options
|
42
|
-
|
43
|
-
def insert_default_options():
|
44
|
-
"""insert default options to sys.argv
|
45
|
-
"""
|
46
|
-
options = get_default_options()
|
47
|
-
options.reverse()
|
48
|
-
for arg in options:
|
49
|
-
sys.argv.insert(1, arg)
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
# astng utilities ###########################################################
|
54
|
-
|
55
|
-
SPECIAL = re.compile('^__[A-Za-z0-9]+[A-Za-z0-9_]*__$')
|
56
|
-
PRIVATE = re.compile('^__[_A-Za-z0-9]*[A-Za-z0-9]+_?$')
|
57
|
-
PROTECTED = re.compile('^_[_A-Za-z0-9]*$')
|
58
|
-
|
59
|
-
def get_visibility(name):
|
60
|
-
"""return the visibility from a name: public, protected, private or special
|
61
|
-
"""
|
62
|
-
if SPECIAL.match(name):
|
63
|
-
visibility = 'special'
|
64
|
-
elif PRIVATE.match(name):
|
65
|
-
visibility = 'private'
|
66
|
-
elif PROTECTED.match(name):
|
67
|
-
visibility = 'protected'
|
68
|
-
|
69
|
-
else:
|
70
|
-
visibility = 'public'
|
71
|
-
return visibility
|
72
|
-
|
73
|
-
ABSTRACT = re.compile('^.*Abstract.*')
|
74
|
-
FINAL = re.compile('^[A-Z_]*$')
|
75
|
-
|
76
|
-
def is_abstract(node):
|
77
|
-
"""return true if the given class node correspond to an abstract class
|
78
|
-
definition
|
79
|
-
"""
|
80
|
-
return ABSTRACT.match(node.name)
|
81
|
-
|
82
|
-
def is_final(node):
|
83
|
-
"""return true if the given class/function node correspond to final
|
84
|
-
definition
|
85
|
-
"""
|
86
|
-
return FINAL.match(node.name)
|
87
|
-
|
88
|
-
def is_interface(node):
|
89
|
-
# bw compat
|
90
|
-
return node.type == 'interface'
|
91
|
-
|
92
|
-
def is_exception(node):
|
93
|
-
# bw compat
|
94
|
-
return node.type == 'exception'
|
95
|
-
|
96
|
-
|
97
|
-
# Helpers #####################################################################
|
98
|
-
|
99
|
-
_CONSTRUCTOR = 1
|
100
|
-
_SPECIAL = 2
|
101
|
-
_PROTECTED = 4
|
102
|
-
_PRIVATE = 8
|
103
|
-
MODES = {
|
104
|
-
'ALL' : 0,
|
105
|
-
'PUB_ONLY' : _SPECIAL + _PROTECTED + _PRIVATE,
|
106
|
-
'SPECIAL' : _SPECIAL,
|
107
|
-
'OTHER' : _PROTECTED + _PRIVATE,
|
108
|
-
}
|
109
|
-
VIS_MOD = {'special': _SPECIAL, 'protected': _PROTECTED, \
|
110
|
-
'private': _PRIVATE, 'public': 0 }
|
111
|
-
|
112
|
-
class FilterMixIn:
|
113
|
-
"""filter nodes according to a mode and nodes' visibility
|
114
|
-
"""
|
115
|
-
def __init__(self, mode):
|
116
|
-
"init filter modes"
|
117
|
-
__mode = 0
|
118
|
-
for nummod in mode.split('+'):
|
119
|
-
try:
|
120
|
-
__mode += MODES[nummod]
|
121
|
-
except KeyError, ex:
|
122
|
-
print >> sys.stderr, 'Unknown filter mode %s' % ex
|
123
|
-
self.__mode = __mode
|
124
|
-
|
125
|
-
|
126
|
-
def show_attr(self, node):
|
127
|
-
"""return true if the node should be treated
|
128
|
-
"""
|
129
|
-
visibility = get_visibility(getattr(node, 'name', node))
|
130
|
-
return not (self.__mode & VIS_MOD[visibility] )
|
131
|
-
|
@@ -1,196 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
# Copyright (c) 2008-2010 LOGILAB S.A. (Paris, FRANCE).
|
3
|
-
# http://www.logilab.fr/ -- mailto:contact@logilab.fr
|
4
|
-
#
|
5
|
-
# This program is free software; you can redistribute it and/or modify it under
|
6
|
-
# the terms of the GNU General Public License as published by the Free Software
|
7
|
-
# Foundation; either version 2 of the License, or (at your option) any later
|
8
|
-
# version.
|
9
|
-
#
|
10
|
-
# This program is distributed in the hope that it will be useful, but WITHOUT
|
11
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
12
|
-
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
13
|
-
#
|
14
|
-
# You should have received a copy of the GNU General Public License along with
|
15
|
-
# this program; if not, write to the Free Software Foundation, Inc.,
|
16
|
-
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
17
|
-
"""
|
18
|
-
Utilities for creating VCG and Dot diagrams.
|
19
|
-
"""
|
20
|
-
|
21
|
-
from logilab.common.vcgutils import VCGPrinter
|
22
|
-
from logilab.common.graph import DotBackend
|
23
|
-
|
24
|
-
from pylint.pyreverse.utils import is_exception
|
25
|
-
|
26
|
-
class DiagramWriter:
|
27
|
-
"""base class for writing project diagrams
|
28
|
-
"""
|
29
|
-
def __init__(self, config, styles):
|
30
|
-
self.config = config
|
31
|
-
self.pkg_edges, self.inh_edges, self.imp_edges, self.ass_edges = styles
|
32
|
-
self.printer = None # defined in set_printer
|
33
|
-
|
34
|
-
def write(self, diadefs):
|
35
|
-
"""write files for <project> according to <diadefs>
|
36
|
-
"""
|
37
|
-
for diagram in diadefs:
|
38
|
-
basename = diagram.title.strip().replace(' ', '_')
|
39
|
-
file_name = '%s.%s' % (basename, self.config.output_format)
|
40
|
-
self.set_printer(file_name, basename)
|
41
|
-
if diagram.TYPE == 'class':
|
42
|
-
self.write_classes(diagram)
|
43
|
-
else:
|
44
|
-
self.write_packages(diagram)
|
45
|
-
self.close_graph()
|
46
|
-
|
47
|
-
def write_packages(self, diagram):
|
48
|
-
"""write a package diagram"""
|
49
|
-
for obj in diagram.modules():
|
50
|
-
label = self.get_title(obj)
|
51
|
-
self.printer.emit_node(obj.fig_id, label=label, shape='box')
|
52
|
-
# package dependencies
|
53
|
-
for rel in diagram.relationships.get('depends', ()):
|
54
|
-
self.printer.emit_edge(rel.from_object.fig_id, rel.to_object.fig_id,
|
55
|
-
**self.pkg_edges)
|
56
|
-
|
57
|
-
def write_classes(self, diagram):
|
58
|
-
"""write a class diagram"""
|
59
|
-
for obj in diagram.objects:
|
60
|
-
self.printer.emit_node(obj.fig_id, **self.get_values(obj) )
|
61
|
-
# inheritance links
|
62
|
-
for rel in diagram.relationships.get('specialization', ()):
|
63
|
-
self.printer.emit_edge(rel.from_object.fig_id, rel.to_object.fig_id,
|
64
|
-
**self.inh_edges)
|
65
|
-
# implementation links
|
66
|
-
for rel in diagram.relationships.get('implements', ()):
|
67
|
-
self.printer.emit_edge(rel.from_object.fig_id, rel.to_object.fig_id,
|
68
|
-
**self.imp_edges)
|
69
|
-
# generate associations
|
70
|
-
for rel in diagram.relationships.get('association', ()):
|
71
|
-
self.printer.emit_edge(rel.from_object.fig_id, rel.to_object.fig_id,
|
72
|
-
label=rel.name, **self.ass_edges)
|
73
|
-
|
74
|
-
def set_printer(self, file_name, basename):
|
75
|
-
"""set printer"""
|
76
|
-
raise NotImplementedError
|
77
|
-
|
78
|
-
def get_title(self, obj):
|
79
|
-
"""get project title"""
|
80
|
-
raise NotImplementedError
|
81
|
-
|
82
|
-
def get_values(self, obj):
|
83
|
-
"""get label and shape for classes."""
|
84
|
-
raise NotImplementedError
|
85
|
-
|
86
|
-
def close_graph(self):
|
87
|
-
"""finalize the graph"""
|
88
|
-
raise NotImplementedError
|
89
|
-
|
90
|
-
|
91
|
-
class DotWriter(DiagramWriter):
|
92
|
-
"""write dot graphs from a diagram definition and a project
|
93
|
-
"""
|
94
|
-
|
95
|
-
def __init__(self, config):
|
96
|
-
styles = [dict(arrowtail='none', arrowhead="open"),
|
97
|
-
dict(arrowtail = "none", arrowhead='empty'),
|
98
|
-
dict(arrowtail="node", arrowhead='empty', style='dashed'),
|
99
|
-
dict(fontcolor='green', arrowtail='none',
|
100
|
-
arrowhead='diamond', style='solid') ]
|
101
|
-
DiagramWriter.__init__(self, config, styles)
|
102
|
-
|
103
|
-
def set_printer(self, file_name, basename):
|
104
|
-
"""initialize DotWriter and add options for layout.
|
105
|
-
"""
|
106
|
-
layout = dict(rankdir="BT")
|
107
|
-
self.printer = DotBackend(basename, additionnal_param=layout)
|
108
|
-
self.file_name = file_name
|
109
|
-
|
110
|
-
def get_title(self, obj):
|
111
|
-
"""get project title"""
|
112
|
-
return obj.title
|
113
|
-
|
114
|
-
def get_values(self, obj):
|
115
|
-
"""get label and shape for classes.
|
116
|
-
|
117
|
-
The label contains all attributes and methods
|
118
|
-
"""
|
119
|
-
label = obj.title
|
120
|
-
if obj.shape == 'interface':
|
121
|
-
label = "«interface»\\n%s" % label
|
122
|
-
if not self.config.only_classnames:
|
123
|
-
label = "%s|%s\l|" % (label, r"\l".join(obj.attrs) )
|
124
|
-
for func in obj.methods:
|
125
|
-
label = r'%s%s()\l' % (label, func.name)
|
126
|
-
label = '{%s}' % label
|
127
|
-
if is_exception(obj.node):
|
128
|
-
return dict(fontcolor="red", label=label, shape="record")
|
129
|
-
return dict(label=label, shape="record")
|
130
|
-
|
131
|
-
def close_graph(self):
|
132
|
-
"""print the dot graph into <file_name>"""
|
133
|
-
self.printer.generate(self.file_name)
|
134
|
-
|
135
|
-
|
136
|
-
class VCGWriter(DiagramWriter):
|
137
|
-
"""write vcg graphs from a diagram definition and a project
|
138
|
-
"""
|
139
|
-
def __init__(self, config):
|
140
|
-
styles = [dict(arrowstyle='solid', backarrowstyle='none',
|
141
|
-
backarrowsize=0),
|
142
|
-
dict(arrowstyle='solid', backarrowstyle='none',
|
143
|
-
backarrowsize=10),
|
144
|
-
dict(arrowstyle='solid', backarrowstyle='none',
|
145
|
-
linestyle='dotted', backarrowsize=10),
|
146
|
-
dict(arrowstyle='solid', backarrowstyle='none',
|
147
|
-
textcolor='green') ]
|
148
|
-
DiagramWriter.__init__(self, config, styles)
|
149
|
-
|
150
|
-
def set_printer(self, file_name, basename):
|
151
|
-
"""initialize VCGWriter for a UML graph"""
|
152
|
-
self.graph_file = open(file_name, 'w+')
|
153
|
-
self.printer = VCGPrinter(self.graph_file)
|
154
|
-
self.printer.open_graph(title=basename, layoutalgorithm='dfs',
|
155
|
-
late_edge_labels='yes', port_sharing='no',
|
156
|
-
manhattan_edges='yes')
|
157
|
-
self.printer.emit_node = self.printer.node
|
158
|
-
self.printer.emit_edge = self.printer.edge
|
159
|
-
|
160
|
-
def get_title(self, obj):
|
161
|
-
"""get project title in vcg format"""
|
162
|
-
return r'\fb%s\fn' % obj.title
|
163
|
-
|
164
|
-
def get_values(self, obj):
|
165
|
-
"""get label and shape for classes.
|
166
|
-
|
167
|
-
The label contains all attributes and methods
|
168
|
-
"""
|
169
|
-
if is_exception(obj.node):
|
170
|
-
label = r'\fb\f09%s\fn' % obj.title
|
171
|
-
else:
|
172
|
-
label = r'\fb%s\fn' % obj.title
|
173
|
-
if obj.shape == 'interface':
|
174
|
-
shape = 'ellipse'
|
175
|
-
else:
|
176
|
-
shape = 'box'
|
177
|
-
if not self.config.only_classnames:
|
178
|
-
attrs = obj.attrs
|
179
|
-
methods = [func.name for func in obj.methods]
|
180
|
-
# box width for UML like diagram
|
181
|
-
maxlen = max(len(name) for name in [obj.title] + methods + attrs)
|
182
|
-
line = "_" * (maxlen + 2)
|
183
|
-
label = r'%s\n\f%s' % (label, line)
|
184
|
-
for attr in attrs:
|
185
|
-
label = r'%s\n\f08%s' % (label, attr)
|
186
|
-
if attrs:
|
187
|
-
label = r'%s\n\f%s' % (label, line)
|
188
|
-
for func in methods:
|
189
|
-
label = r'%s\n\f10%s()' % (label, func)
|
190
|
-
return dict(label=label, shape=shape)
|
191
|
-
|
192
|
-
def close_graph(self):
|
193
|
-
"""close graph and file"""
|
194
|
-
self.printer.close_graph()
|
195
|
-
self.graph_file.close()
|
196
|
-
|
@@ -1,67 +0,0 @@
|
|
1
|
-
# This program is free software; you can redistribute it and/or modify it under
|
2
|
-
# the terms of the GNU General Public License as published by the Free Software
|
3
|
-
# Foundation; either version 2 of the License, or (at your option) any later
|
4
|
-
# version.
|
5
|
-
#
|
6
|
-
# This program is distributed in the hope that it will be useful, but WITHOUT
|
7
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
8
|
-
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
9
|
-
#
|
10
|
-
# You should have received a copy of the GNU General Public License along with
|
11
|
-
# this program; if not, write to the Free Software Foundation, Inc.,
|
12
|
-
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
13
|
-
"""utilities methods and classes for reporters
|
14
|
-
|
15
|
-
Copyright (c) 2000-2003 LOGILAB S.A. (Paris, FRANCE).
|
16
|
-
http://www.logilab.fr/ -- mailto:contact@logilab.fr
|
17
|
-
"""
|
18
|
-
|
19
|
-
import sys
|
20
|
-
|
21
|
-
CMPS = ['=', '-', '+']
|
22
|
-
|
23
|
-
def diff_string(old, new):
|
24
|
-
"""given a old and new int value, return a string representing the
|
25
|
-
difference
|
26
|
-
"""
|
27
|
-
diff = abs(old - new)
|
28
|
-
diff_str = "%s%s" % (CMPS[cmp(old, new)], diff and ('%.2f' % diff) or '')
|
29
|
-
return diff_str
|
30
|
-
|
31
|
-
|
32
|
-
class EmptyReport(Exception):
|
33
|
-
"""raised when a report is empty and so should not be displayed"""
|
34
|
-
|
35
|
-
class BaseReporter:
|
36
|
-
"""base class for reporters"""
|
37
|
-
|
38
|
-
extension = ''
|
39
|
-
|
40
|
-
def __init__(self, output=None):
|
41
|
-
self.linter = None
|
42
|
-
self.include_ids = None
|
43
|
-
self.section = 0
|
44
|
-
self.out = None
|
45
|
-
self.set_output(output)
|
46
|
-
|
47
|
-
def set_output(self, output=None):
|
48
|
-
"""set output stream"""
|
49
|
-
if output is None:
|
50
|
-
output = sys.stdout
|
51
|
-
self.out = output
|
52
|
-
|
53
|
-
def writeln(self, string=''):
|
54
|
-
"""write a line in the output buffer"""
|
55
|
-
print >> self.out, string
|
56
|
-
|
57
|
-
def display_results(self, layout):
|
58
|
-
"""display results encapsulated in the layout tree"""
|
59
|
-
self.section = 0
|
60
|
-
if self.include_ids and hasattr(layout, 'report_id'):
|
61
|
-
layout.children[0].children[0].data += ' (%s)' % layout.report_id
|
62
|
-
self._display(layout)
|
63
|
-
|
64
|
-
def _display(self, layout):
|
65
|
-
"""display the layout"""
|
66
|
-
raise NotImplementedError()
|
67
|
-
|
@@ -1,36 +0,0 @@
|
|
1
|
-
""" reporter used by gui.py """
|
2
|
-
|
3
|
-
import sys
|
4
|
-
|
5
|
-
from pylint.interfaces import IReporter
|
6
|
-
from pylint.reporters import BaseReporter
|
7
|
-
from logilab.common.ureports import TextWriter
|
8
|
-
|
9
|
-
|
10
|
-
class GUIReporter(BaseReporter):
|
11
|
-
"""saves messages"""
|
12
|
-
|
13
|
-
__implements__ = IReporter
|
14
|
-
extension = ''
|
15
|
-
|
16
|
-
def __init__(self, gui, output=sys.stdout):
|
17
|
-
"""init"""
|
18
|
-
BaseReporter.__init__(self, output)
|
19
|
-
self.msgs = []
|
20
|
-
self.gui = gui
|
21
|
-
|
22
|
-
def add_message(self, msg_id, location, msg):
|
23
|
-
"""manage message of different type and in the context of path"""
|
24
|
-
module, obj, line = location[1:]
|
25
|
-
if self.include_ids:
|
26
|
-
sigle = msg_id
|
27
|
-
else:
|
28
|
-
sigle = msg_id[0]
|
29
|
-
|
30
|
-
full_msg = [sigle, module, obj, str(line), msg]
|
31
|
-
self.msgs += [[sigle, module, obj, str(line)]]
|
32
|
-
self.gui.msg_queue.put(full_msg)
|
33
|
-
|
34
|
-
def _display(self, layout):
|
35
|
-
"""launch layouts display"""
|
36
|
-
TextWriter().format(layout, self.out)
|
@@ -1,69 +0,0 @@
|
|
1
|
-
# Copyright (c) 2003-2006 Sylvain Thenault (thenault@gmail.com).
|
2
|
-
# Copyright (c) 2003-2006 LOGILAB S.A. (Paris, FRANCE).
|
3
|
-
# This program is free software; you can redistribute it and/or modify it under
|
4
|
-
# the terms of the GNU General Public License as published by the Free Software
|
5
|
-
# Foundation; either version 2 of the License, or (at your option) any later
|
6
|
-
# version.
|
7
|
-
#
|
8
|
-
# This program is distributed in the hope that it will be useful, but WITHOUT
|
9
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
10
|
-
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
11
|
-
#
|
12
|
-
# You should have received a copy of the GNU General Public License along with
|
13
|
-
# this program; if not, write to the Free Software Foundation, Inc.,
|
14
|
-
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
15
|
-
"""HTML reporter"""
|
16
|
-
|
17
|
-
import sys
|
18
|
-
from cgi import escape
|
19
|
-
|
20
|
-
from logilab.common.ureports import HTMLWriter, Section, Table
|
21
|
-
|
22
|
-
from pylint.interfaces import IReporter
|
23
|
-
from pylint.reporters import BaseReporter
|
24
|
-
|
25
|
-
|
26
|
-
class HTMLReporter(BaseReporter):
|
27
|
-
"""report messages and layouts in HTML"""
|
28
|
-
|
29
|
-
__implements__ = IReporter
|
30
|
-
extension = 'html'
|
31
|
-
|
32
|
-
def __init__(self, output=sys.stdout):
|
33
|
-
BaseReporter.__init__(self, output)
|
34
|
-
self.msgs = []
|
35
|
-
|
36
|
-
def add_message(self, msg_id, location, msg):
|
37
|
-
"""manage message of different type and in the context of path"""
|
38
|
-
module, obj, line = location[1:]
|
39
|
-
if self.include_ids:
|
40
|
-
sigle = msg_id
|
41
|
-
else:
|
42
|
-
sigle = msg_id[0]
|
43
|
-
self.msgs += [sigle, module, obj, str(line), escape(msg)]
|
44
|
-
|
45
|
-
def set_output(self, output=None):
|
46
|
-
"""set output stream
|
47
|
-
|
48
|
-
messages buffered for old output is processed first"""
|
49
|
-
if self.out and self.msgs:
|
50
|
-
self._display(Section())
|
51
|
-
BaseReporter.set_output(self, output)
|
52
|
-
|
53
|
-
def _display(self, layout):
|
54
|
-
"""launch layouts display
|
55
|
-
|
56
|
-
overridden from BaseReporter to add insert the messages section
|
57
|
-
(in add_message, message is not displayed, just collected so it
|
58
|
-
can be displayed in an html table)
|
59
|
-
"""
|
60
|
-
if self.msgs:
|
61
|
-
# add stored messages to the layout
|
62
|
-
msgs = ['type', 'module', 'object', 'line', 'message']
|
63
|
-
msgs += self.msgs
|
64
|
-
sect = Section('Messages')
|
65
|
-
layout.append(sect)
|
66
|
-
sect.append(Table(cols=5, children=msgs, rheaders=1))
|
67
|
-
self.msgs = []
|
68
|
-
HTMLWriter().format(layout, self.out)
|
69
|
-
|
@@ -1,156 +0,0 @@
|
|
1
|
-
# Copyright (c) 2003-2007 Sylvain Thenault (thenault@gmail.com).
|
2
|
-
# Copyright (c) 2003-2007 LOGILAB S.A. (Paris, FRANCE).
|
3
|
-
# This program is free software; you can redistribute it and/or modify it under
|
4
|
-
# the terms of the GNU General Public License as published by the Free Software
|
5
|
-
# Foundation; either version 2 of the License, or (at your option) any later
|
6
|
-
# version.
|
7
|
-
#
|
8
|
-
# This program is distributed in the hope that it will be useful, but WITHOUT
|
9
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
10
|
-
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
11
|
-
#
|
12
|
-
# You should have received a copy of the GNU General Public License along with
|
13
|
-
# this program; if not, write to the Free Software Foundation, Inc.,
|
14
|
-
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
15
|
-
"""Plain text reporters:
|
16
|
-
|
17
|
-
:text: the default one grouping messages by module
|
18
|
-
:parseable:
|
19
|
-
standard parseable output with full module path on each message (for
|
20
|
-
editor integration)
|
21
|
-
:colorized: an ANSI colorized text reporter
|
22
|
-
|
23
|
-
"""
|
24
|
-
|
25
|
-
import os
|
26
|
-
import sys
|
27
|
-
|
28
|
-
from logilab.common.ureports import TextWriter
|
29
|
-
from logilab.common.textutils import colorize_ansi
|
30
|
-
|
31
|
-
from pylint.interfaces import IReporter
|
32
|
-
from pylint.reporters import BaseReporter
|
33
|
-
|
34
|
-
TITLE_UNDERLINES = ['', '=', '-', '.']
|
35
|
-
|
36
|
-
|
37
|
-
class TextReporter(BaseReporter):
|
38
|
-
"""reports messages and layouts in plain text
|
39
|
-
"""
|
40
|
-
|
41
|
-
__implements__ = IReporter
|
42
|
-
extension = 'txt'
|
43
|
-
|
44
|
-
def __init__(self, output=sys.stdout):
|
45
|
-
BaseReporter.__init__(self, output)
|
46
|
-
self._modules = {}
|
47
|
-
|
48
|
-
def add_message(self, msg_id, location, msg):
|
49
|
-
"""manage message of different type and in the context of path"""
|
50
|
-
module, obj, line = location[1:]
|
51
|
-
if not self._modules.has_key(module):
|
52
|
-
if module:
|
53
|
-
self.writeln('************* Module %s' % module)
|
54
|
-
self._modules[module] = 1
|
55
|
-
else:
|
56
|
-
self.writeln('************* %s' % module)
|
57
|
-
if obj:
|
58
|
-
obj = ':%s' % obj
|
59
|
-
if self.include_ids:
|
60
|
-
sigle = msg_id
|
61
|
-
else:
|
62
|
-
sigle = msg_id[0]
|
63
|
-
self.writeln('%s:%3s%s: %s' % (sigle, line, obj, msg))
|
64
|
-
|
65
|
-
def _display(self, layout):
|
66
|
-
"""launch layouts display"""
|
67
|
-
print >> self.out
|
68
|
-
TextWriter().format(layout, self.out)
|
69
|
-
|
70
|
-
|
71
|
-
class ParseableTextReporter(TextReporter):
|
72
|
-
"""a reporter very similar to TextReporter, but display messages in a form
|
73
|
-
recognized by most text editors :
|
74
|
-
|
75
|
-
<filename>:<linenum>:<msg>
|
76
|
-
"""
|
77
|
-
line_format = '%(path)s:%(line)s: [%(sigle)s%(obj)s] %(msg)s'
|
78
|
-
|
79
|
-
def __init__(self, output=sys.stdout, relative=True):
|
80
|
-
TextReporter.__init__(self, output)
|
81
|
-
if relative:
|
82
|
-
self._prefix = os.getcwd() + os.sep
|
83
|
-
else:
|
84
|
-
self._prefix = ''
|
85
|
-
|
86
|
-
def add_message(self, msg_id, location, msg):
|
87
|
-
"""manage message of different type and in the context of path"""
|
88
|
-
path, _, obj, line = location
|
89
|
-
if obj:
|
90
|
-
obj = ', %s' % obj
|
91
|
-
if self.include_ids:
|
92
|
-
sigle = msg_id
|
93
|
-
else:
|
94
|
-
sigle = msg_id[0]
|
95
|
-
if self._prefix:
|
96
|
-
path = path.replace(self._prefix, '')
|
97
|
-
self.writeln(self.line_format % locals())
|
98
|
-
|
99
|
-
class VSTextReporter(ParseableTextReporter):
|
100
|
-
"""Visual studio text reporter"""
|
101
|
-
line_format = '%(path)s(%(line)s): [%(sigle)s%(obj)s] %(msg)s'
|
102
|
-
|
103
|
-
class ColorizedTextReporter(TextReporter):
|
104
|
-
"""Simple TextReporter that colorizes text output"""
|
105
|
-
|
106
|
-
COLOR_MAPPING = {
|
107
|
-
"I" : ("green", None),
|
108
|
-
'C' : (None, "bold"),
|
109
|
-
'R' : ("magenta", "bold, italic"),
|
110
|
-
'W' : ("blue", None),
|
111
|
-
'E' : ("red", "bold"),
|
112
|
-
'F' : ("red", "bold, underline"),
|
113
|
-
'S' : ("yellow", "inverse"), # S stands for module Separator
|
114
|
-
}
|
115
|
-
|
116
|
-
def __init__(self, output=sys.stdout, color_mapping = None):
|
117
|
-
TextReporter.__init__(self, output)
|
118
|
-
self.color_mapping = color_mapping or \
|
119
|
-
dict(ColorizedTextReporter.COLOR_MAPPING)
|
120
|
-
|
121
|
-
|
122
|
-
def _get_decoration(self, msg_id):
|
123
|
-
"""Returns the tuple color, style associated with msg_id as defined
|
124
|
-
in self.color_mapping
|
125
|
-
"""
|
126
|
-
try:
|
127
|
-
return self.color_mapping[msg_id[0]]
|
128
|
-
except KeyError:
|
129
|
-
return None, None
|
130
|
-
|
131
|
-
def add_message(self, msg_id, location, msg):
|
132
|
-
"""manage message of different types, and colorize output
|
133
|
-
using ansi escape codes
|
134
|
-
"""
|
135
|
-
module, obj, line = location[1:]
|
136
|
-
if not self._modules.has_key(module):
|
137
|
-
color, style = self._get_decoration('S')
|
138
|
-
if module:
|
139
|
-
modsep = colorize_ansi('************* Module %s' % module,
|
140
|
-
color, style)
|
141
|
-
else:
|
142
|
-
modsep = colorize_ansi('************* %s' % module,
|
143
|
-
color, style)
|
144
|
-
self.writeln(modsep)
|
145
|
-
self._modules[module] = 1
|
146
|
-
if obj:
|
147
|
-
obj = ':%s' % obj
|
148
|
-
if self.include_ids:
|
149
|
-
sigle = msg_id
|
150
|
-
else:
|
151
|
-
sigle = msg_id[0]
|
152
|
-
color, style = self._get_decoration(sigle)
|
153
|
-
msg = colorize_ansi(msg, color, style)
|
154
|
-
sigle = colorize_ansi(sigle, color, style)
|
155
|
-
self.writeln('%s:%3s%s: %s' % (sigle, line, obj, msg))
|
156
|
-
|