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,367 +0,0 @@
|
|
1
|
-
# Copyright (c) 2003-2010 Sylvain Thenault (thenault@gmail.com).
|
2
|
-
# Copyright (c) 2003-2010 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
|
-
"""Python code format's checker.
|
16
|
-
|
17
|
-
By default try to follow Guido's style guide :
|
18
|
-
|
19
|
-
http://www.python.org/doc/essays/styleguide.html
|
20
|
-
|
21
|
-
Some parts of the process_token method is based from The Tab Nanny std module.
|
22
|
-
"""
|
23
|
-
|
24
|
-
import re
|
25
|
-
import tokenize
|
26
|
-
if not hasattr(tokenize, 'NL'):
|
27
|
-
raise ValueError("tokenize.NL doesn't exist -- tokenize module too old")
|
28
|
-
|
29
|
-
from logilab.common.textutils import pretty_match
|
30
|
-
from logilab.astng import nodes
|
31
|
-
|
32
|
-
from pylint.interfaces import IRawChecker, IASTNGChecker
|
33
|
-
from pylint.checkers import BaseRawChecker
|
34
|
-
from pylint.checkers.misc import guess_encoding, is_ascii
|
35
|
-
|
36
|
-
MSGS = {
|
37
|
-
'C0301': ('Line too long (%s/%s)',
|
38
|
-
'Used when a line is longer than a given number of characters.'),
|
39
|
-
'C0302': ('Too many lines in module (%s)', # was W0302
|
40
|
-
'Used when a module has too much lines, reducing its readability.'
|
41
|
-
),
|
42
|
-
|
43
|
-
'W0311': ('Bad indentation. Found %s %s, expected %s',
|
44
|
-
'Used when an unexpected number of indentation\'s tabulations or '
|
45
|
-
'spaces has been found.'),
|
46
|
-
'W0312': ('Found indentation with %ss instead of %ss',
|
47
|
-
'Used when there are some mixed tabs and spaces in a module.'),
|
48
|
-
'W0301': ('Unnecessary semicolon', # was W0106
|
49
|
-
'Used when a statement is ended by a semi-colon (";"), which \
|
50
|
-
isn\'t necessary (that\'s python, not C ;).'),
|
51
|
-
|
52
|
-
'F0321': ('Format detection error in %r',
|
53
|
-
'Used when an unexpected error occurred in bad format detection.'
|
54
|
-
'Please report the error if it occurs.'),
|
55
|
-
'C0321': ('More than one statement on a single line',
|
56
|
-
'Used when more than on statement are found on the same line.'),
|
57
|
-
'C0322': ('Operator not preceded by a space\n%s',
|
58
|
-
'Used when one of the following operator (!= | <= | == | >= | < '
|
59
|
-
'| > | = | \+= | -= | \*= | /= | %) is not preceded by a space.'),
|
60
|
-
'C0323': ('Operator not followed by a space\n%s',
|
61
|
-
'Used when one of the following operator (!= | <= | == | >= | < '
|
62
|
-
'| > | = | \+= | -= | \*= | /= | %) is not followed by a space.'),
|
63
|
-
'C0324': ('Comma not followed by a space\n%s',
|
64
|
-
'Used when a comma (",") is not followed by a space.'),
|
65
|
-
|
66
|
-
'W0331': ('Use of the <> operator',
|
67
|
-
'Used when the deprecated "<>" operator is used instead \
|
68
|
-
of "!=".'),
|
69
|
-
'W0332': ('Use l as long integer identifier',
|
70
|
-
'Used when a lower case "l" is used to mark a long integer. You '
|
71
|
-
'should use a upper case "L" since the letter "l" looks too much '
|
72
|
-
'like the digit "1"'),
|
73
|
-
'W0333': ('Use of the `` operator',
|
74
|
-
'Used when the deprecated "``" (backtick) operator is used '
|
75
|
-
'instead of the str() function.'),
|
76
|
-
}
|
77
|
-
|
78
|
-
# simple quoted string rgx
|
79
|
-
SQSTRING_RGX = r'"([^"\\]|\\.)*?"'
|
80
|
-
# simple apostrophed rgx
|
81
|
-
SASTRING_RGX = r"'([^'\\]|\\.)*?'"
|
82
|
-
# triple quoted string rgx
|
83
|
-
TQSTRING_RGX = r'"""([^"]|("(?!"")))*?(""")'
|
84
|
-
# triple apostrophed string rgx # FIXME english please
|
85
|
-
TASTRING_RGX = r"'''([^']|('(?!'')))*?(''')"
|
86
|
-
|
87
|
-
# finally, the string regular expression
|
88
|
-
STRING_RGX = re.compile('(%s)|(%s)|(%s)|(%s)' % (TQSTRING_RGX, TASTRING_RGX,
|
89
|
-
SQSTRING_RGX, SASTRING_RGX),
|
90
|
-
re.MULTILINE|re.DOTALL)
|
91
|
-
|
92
|
-
COMMENT_RGX = re.compile("#.*$", re.M)
|
93
|
-
|
94
|
-
OPERATORS = r'!=|<=|==|>=|<|>|=|\+=|-=|\*=|/=|%'
|
95
|
-
|
96
|
-
OP_RGX_MATCH_1 = r'[^(]*(?<!\s|\^|<|>|=|\+|-|\*|/|!|%%|&|\|)(%s).*' % OPERATORS
|
97
|
-
OP_RGX_SEARCH_1 = r'(?<!\s|\^|<|>|=|\+|-|\*|/|!|%%|&|\|)(%s)' % OPERATORS
|
98
|
-
|
99
|
-
OP_RGX_MATCH_2 = r'[^(]*(%s)(?!\s|=|>|<).*' % OPERATORS
|
100
|
-
OP_RGX_SEARCH_2 = r'(%s)(?!\s|=|>)' % OPERATORS
|
101
|
-
|
102
|
-
BAD_CONSTRUCT_RGXS = (
|
103
|
-
|
104
|
-
(re.compile(OP_RGX_MATCH_1, re.M),
|
105
|
-
re.compile(OP_RGX_SEARCH_1, re.M),
|
106
|
-
'C0322'),
|
107
|
-
|
108
|
-
(re.compile(OP_RGX_MATCH_2, re.M),
|
109
|
-
re.compile(OP_RGX_SEARCH_2, re.M),
|
110
|
-
'C0323'),
|
111
|
-
|
112
|
-
(re.compile(r'.*,[^(\s|\]|}|\))].*', re.M),
|
113
|
-
re.compile(r',[^\s)]', re.M),
|
114
|
-
'C0324'),
|
115
|
-
)
|
116
|
-
|
117
|
-
|
118
|
-
def get_string_coords(line):
|
119
|
-
"""return a list of string positions (tuple (start, end)) in the line
|
120
|
-
"""
|
121
|
-
result = []
|
122
|
-
for match in re.finditer(STRING_RGX, line):
|
123
|
-
result.append( (match.start(), match.end()) )
|
124
|
-
return result
|
125
|
-
|
126
|
-
def in_coords(match, string_coords):
|
127
|
-
"""return true if the match is in the string coord"""
|
128
|
-
mstart = match.start()
|
129
|
-
for start, end in string_coords:
|
130
|
-
if mstart >= start and mstart < end:
|
131
|
-
return True
|
132
|
-
return False
|
133
|
-
|
134
|
-
def check_line(line, writer):
|
135
|
-
"""check a line for a bad construction
|
136
|
-
if it founds one, return a message describing the problem
|
137
|
-
else return None
|
138
|
-
"""
|
139
|
-
cleanstr = COMMENT_RGX.sub('', STRING_RGX.sub('', line))
|
140
|
-
for rgx_match, rgx_search, msg_id in BAD_CONSTRUCT_RGXS:
|
141
|
-
if rgx_match.match(cleanstr):
|
142
|
-
string_positions = get_string_coords(line)
|
143
|
-
for match in re.finditer(rgx_search, line):
|
144
|
-
if not in_coords(match, string_positions):
|
145
|
-
return msg_id, pretty_match(match, line.rstrip())
|
146
|
-
#writer.add_message('F0321', line=line, args=line)
|
147
|
-
|
148
|
-
|
149
|
-
class FormatChecker(BaseRawChecker):
|
150
|
-
"""checks for :
|
151
|
-
* unauthorized constructions
|
152
|
-
* strict indentation
|
153
|
-
* line length
|
154
|
-
* use of <> instead of !=
|
155
|
-
"""
|
156
|
-
|
157
|
-
__implements__ = (IRawChecker, IASTNGChecker)
|
158
|
-
|
159
|
-
# configuration section name
|
160
|
-
name = 'format'
|
161
|
-
# messages
|
162
|
-
msgs = MSGS
|
163
|
-
# configuration options
|
164
|
-
# for available dict keys/values see the optik parser 'add_option' method
|
165
|
-
options = (('max-line-length',
|
166
|
-
{'default' : 80, 'type' : "int", 'metavar' : '<int>',
|
167
|
-
'help' : 'Maximum number of characters on a single line.'}),
|
168
|
-
('max-module-lines',
|
169
|
-
{'default' : 1000, 'type' : 'int', 'metavar' : '<int>',
|
170
|
-
'help': 'Maximum number of lines in a module'}
|
171
|
-
),
|
172
|
-
('indent-string',
|
173
|
-
{'default' : ' ', 'type' : "string", 'metavar' : '<string>',
|
174
|
-
'help' : 'String used as indentation unit. This is usually \
|
175
|
-
" " (4 spaces) or "\\t" (1 tab).'}),
|
176
|
-
)
|
177
|
-
def __init__(self, linter=None):
|
178
|
-
BaseRawChecker.__init__(self, linter)
|
179
|
-
self._lines = None
|
180
|
-
self._visited_lines = None
|
181
|
-
|
182
|
-
def process_module(self, stream):
|
183
|
-
"""extracts encoding from the stream and
|
184
|
-
decodes each line, so that international
|
185
|
-
text's lenght properly calculated.
|
186
|
-
"""
|
187
|
-
data = stream.read()
|
188
|
-
line_generator = stream.readline
|
189
|
-
|
190
|
-
ascii, lineno = is_ascii(data)
|
191
|
-
if not ascii:
|
192
|
-
encoding = guess_encoding(data)
|
193
|
-
if encoding is not None:
|
194
|
-
line_generator = lambda: stream.readline().decode(encoding,
|
195
|
-
'replace')
|
196
|
-
del data
|
197
|
-
|
198
|
-
stream.seek(0)
|
199
|
-
self.process_tokens(tokenize.generate_tokens(line_generator))
|
200
|
-
|
201
|
-
def new_line(self, tok_type, line, line_num, junk):
|
202
|
-
"""a new line has been encountered, process it if necessary"""
|
203
|
-
if not tok_type in junk:
|
204
|
-
self._lines[line_num] = line.split('\n')[0]
|
205
|
-
self.check_lines(line, line_num)
|
206
|
-
|
207
|
-
def process_tokens(self, tokens):
|
208
|
-
"""process tokens and search for :
|
209
|
-
|
210
|
-
_ non strict indentation (i.e. not always using the <indent> parameter as
|
211
|
-
indent unit)
|
212
|
-
_ too long lines (i.e. longer than <max_chars>)
|
213
|
-
_ optionally bad construct (if given, bad_construct must be a compiled
|
214
|
-
regular expression).
|
215
|
-
"""
|
216
|
-
indent = tokenize.INDENT
|
217
|
-
dedent = tokenize.DEDENT
|
218
|
-
newline = tokenize.NEWLINE
|
219
|
-
junk = (tokenize.COMMENT, tokenize.NL)
|
220
|
-
indents = [0]
|
221
|
-
check_equal = 0
|
222
|
-
line_num = 0
|
223
|
-
previous = None
|
224
|
-
self._lines = {}
|
225
|
-
self._visited_lines = {}
|
226
|
-
for (tok_type, token, start, _, line) in tokens:
|
227
|
-
if start[0] != line_num:
|
228
|
-
if previous is not None and previous[0] == tokenize.OP and previous[1] == ';':
|
229
|
-
self.add_message('W0301', line=previous[2])
|
230
|
-
previous = None
|
231
|
-
line_num = start[0]
|
232
|
-
self.new_line(tok_type, line, line_num, junk)
|
233
|
-
if tok_type not in (indent, dedent, newline) + junk:
|
234
|
-
previous = tok_type, token, start[0]
|
235
|
-
|
236
|
-
if tok_type == tokenize.OP:
|
237
|
-
if token == '<>':
|
238
|
-
self.add_message('W0331', line=line_num)
|
239
|
-
elif tok_type == tokenize.NUMBER:
|
240
|
-
if token.endswith('l'):
|
241
|
-
self.add_message('W0332', line=line_num)
|
242
|
-
|
243
|
-
elif tok_type == newline:
|
244
|
-
# a program statement, or ENDMARKER, will eventually follow,
|
245
|
-
# after some (possibly empty) run of tokens of the form
|
246
|
-
# (NL | COMMENT)* (INDENT | DEDENT+)?
|
247
|
-
# If an INDENT appears, setting check_equal is wrong, and will
|
248
|
-
# be undone when we see the INDENT.
|
249
|
-
check_equal = 1
|
250
|
-
|
251
|
-
elif tok_type == indent:
|
252
|
-
check_equal = 0
|
253
|
-
self.check_indent_level(token, indents[-1]+1, line_num)
|
254
|
-
indents.append(indents[-1]+1)
|
255
|
-
|
256
|
-
elif tok_type == dedent:
|
257
|
-
# there's nothing we need to check here! what's important is
|
258
|
-
# that when the run of DEDENTs ends, the indentation of the
|
259
|
-
# program statement (or ENDMARKER) that triggered the run is
|
260
|
-
# equal to what's left at the top of the indents stack
|
261
|
-
check_equal = 1
|
262
|
-
if len(indents) > 1:
|
263
|
-
del indents[-1]
|
264
|
-
|
265
|
-
elif check_equal and tok_type not in junk:
|
266
|
-
# this is the first "real token" following a NEWLINE, so it
|
267
|
-
# must be the first token of the next program statement, or an
|
268
|
-
# ENDMARKER; the "line" argument exposes the leading whitespace
|
269
|
-
# for this statement; in the case of ENDMARKER, line is an empty
|
270
|
-
# string, so will properly match the empty string with which the
|
271
|
-
# "indents" stack was seeded
|
272
|
-
check_equal = 0
|
273
|
-
self.check_indent_level(line, indents[-1], line_num)
|
274
|
-
|
275
|
-
line_num -= 1 # to be ok with "wc -l"
|
276
|
-
if line_num > self.config.max_module_lines:
|
277
|
-
self.add_message('C0302', args=line_num, line=1)
|
278
|
-
|
279
|
-
def visit_default(self, node):
|
280
|
-
"""check the node line number and check it if not yet done"""
|
281
|
-
if not node.is_statement:
|
282
|
-
return
|
283
|
-
if not node.root().pure_python:
|
284
|
-
return # XXX block visit of child nodes
|
285
|
-
prev_sibl = node.previous_sibling()
|
286
|
-
if prev_sibl is not None:
|
287
|
-
prev_line = prev_sibl.fromlineno
|
288
|
-
else:
|
289
|
-
prev_line = node.parent.statement().fromlineno
|
290
|
-
line = node.fromlineno
|
291
|
-
assert line, node
|
292
|
-
if prev_line == line and self._visited_lines.get(line) != 2:
|
293
|
-
# py2.5 try: except: finally:
|
294
|
-
if not (isinstance(node, nodes.TryExcept)
|
295
|
-
and isinstance(node.parent, nodes.TryFinally)
|
296
|
-
and node.fromlineno == node.parent.fromlineno):
|
297
|
-
self.add_message('C0321', node=node)
|
298
|
-
self._visited_lines[line] = 2
|
299
|
-
return
|
300
|
-
if self._visited_lines.has_key(line):
|
301
|
-
return
|
302
|
-
try:
|
303
|
-
tolineno = node.blockstart_tolineno
|
304
|
-
except AttributeError:
|
305
|
-
tolineno = node.tolineno
|
306
|
-
assert tolineno, node
|
307
|
-
lines = []
|
308
|
-
for line in xrange(line, tolineno + 1):
|
309
|
-
self._visited_lines[line] = 1
|
310
|
-
try:
|
311
|
-
lines.append(self._lines[line].rstrip())
|
312
|
-
except KeyError:
|
313
|
-
lines.append('')
|
314
|
-
try:
|
315
|
-
msg_def = check_line('\n'.join(lines), self)
|
316
|
-
if msg_def:
|
317
|
-
self.add_message(msg_def[0], node=node, args=msg_def[1])
|
318
|
-
except KeyError:
|
319
|
-
# FIXME: internal error !
|
320
|
-
pass
|
321
|
-
|
322
|
-
def visit_backquote(self, node):
|
323
|
-
self.add_message('W0333', node=node)
|
324
|
-
|
325
|
-
def check_lines(self, lines, i):
|
326
|
-
"""check lines have less than a maximum number of characters
|
327
|
-
"""
|
328
|
-
max_chars = self.config.max_line_length
|
329
|
-
for line in lines.splitlines():
|
330
|
-
if len(line) > max_chars:
|
331
|
-
self.add_message('C0301', line=i, args=(len(line), max_chars))
|
332
|
-
i += 1
|
333
|
-
|
334
|
-
def check_indent_level(self, string, expected, line_num):
|
335
|
-
"""return the indent level of the string
|
336
|
-
"""
|
337
|
-
indent = self.config.indent_string
|
338
|
-
if indent == '\\t': # \t is not interpreted in the configuration file
|
339
|
-
indent = '\t'
|
340
|
-
level = 0
|
341
|
-
unit_size = len(indent)
|
342
|
-
while string[:unit_size] == indent:
|
343
|
-
string = string[unit_size:]
|
344
|
-
level += 1
|
345
|
-
suppl = ''
|
346
|
-
while string and string[0] in ' \t':
|
347
|
-
if string[0] != indent[0]:
|
348
|
-
if string[0] == '\t':
|
349
|
-
args = ('tab', 'space')
|
350
|
-
else:
|
351
|
-
args = ('space', 'tab')
|
352
|
-
self.add_message('W0312', args=args, line=line_num)
|
353
|
-
return level
|
354
|
-
suppl += string[0]
|
355
|
-
string = string [1:]
|
356
|
-
if level != expected or suppl:
|
357
|
-
i_type = 'spaces'
|
358
|
-
if indent[0] == '\t':
|
359
|
-
i_type = 'tabs'
|
360
|
-
self.add_message('W0311', line=line_num,
|
361
|
-
args=(level * unit_size + len(suppl), i_type,
|
362
|
-
expected * unit_size))
|
363
|
-
|
364
|
-
|
365
|
-
def register(linter):
|
366
|
-
"""required method to auto register this checker """
|
367
|
-
linter.register_checker(FormatChecker(linter))
|