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,333 +0,0 @@
|
|
1
|
-
# This program is free software; you can redistribute it and/or modify it under
|
2
|
-
# the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
9
|
-
#
|
10
|
-
# You should have received a copy of the GNU Lesser 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
|
-
# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
|
14
|
-
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
|
15
|
-
# copyright 2003-2010 Sylvain Thenault, all rights reserved.
|
16
|
-
# contact mailto:thenault@gmail.com
|
17
|
-
#
|
18
|
-
# This file is part of logilab-astng.
|
19
|
-
#
|
20
|
-
# logilab-astng is free software: you can redistribute it and/or modify it
|
21
|
-
# under the terms of the GNU Lesser General Public License as published by the
|
22
|
-
# Free Software Foundation, either version 2.1 of the License, or (at your
|
23
|
-
# option) any later version.
|
24
|
-
#
|
25
|
-
# logilab-astng is distributed in the hope that it will be useful, but
|
26
|
-
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
27
|
-
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
28
|
-
# for more details.
|
29
|
-
#
|
30
|
-
# You should have received a copy of the GNU Lesser General Public License along
|
31
|
-
# with logilab-astng. If not, see <http://www.gnu.org/licenses/>.
|
32
|
-
"""this module contains a set of functions to handle python protocols for nodes
|
33
|
-
where it makes sense.
|
34
|
-
|
35
|
-
"""
|
36
|
-
|
37
|
-
from __future__ import generators
|
38
|
-
|
39
|
-
__doctype__ = "restructuredtext en"
|
40
|
-
|
41
|
-
from logilab.astng import InferenceError, NoDefault
|
42
|
-
from logilab.astng.node_classes import unpack_infer
|
43
|
-
from logilab.astng.bases import copy_context, \
|
44
|
-
raise_if_nothing_infered, yes_if_nothing_infered, Instance, Generator, YES
|
45
|
-
from logilab.astng.nodes import const_factory
|
46
|
-
from logilab.astng import nodes
|
47
|
-
|
48
|
-
# unary operations ############################################################
|
49
|
-
|
50
|
-
def tl_infer_unary_op(self, operator):
|
51
|
-
if operator == 'not':
|
52
|
-
return const_factory(not bool(self.elts))
|
53
|
-
raise TypeError() # XXX log unsupported operation
|
54
|
-
nodes.Tuple.infer_unary_op = tl_infer_unary_op
|
55
|
-
nodes.List.infer_unary_op = tl_infer_unary_op
|
56
|
-
|
57
|
-
|
58
|
-
def dict_infer_unary_op(self, operator):
|
59
|
-
if operator == 'not':
|
60
|
-
return const_factory(not bool(self.items))
|
61
|
-
raise TypeError() # XXX log unsupported operation
|
62
|
-
nodes.Dict.infer_unary_op = dict_infer_unary_op
|
63
|
-
|
64
|
-
|
65
|
-
def const_infer_unary_op(self, operator):
|
66
|
-
if operator == 'not':
|
67
|
-
return const_factory(not self.value)
|
68
|
-
# XXX log potentially raised TypeError
|
69
|
-
elif operator == '+':
|
70
|
-
return const_factory(+self.value)
|
71
|
-
else: # operator == '-':
|
72
|
-
return const_factory(-self.value)
|
73
|
-
nodes.Const.infer_unary_op = const_infer_unary_op
|
74
|
-
|
75
|
-
|
76
|
-
# binary operations ###########################################################
|
77
|
-
|
78
|
-
BIN_OP_IMPL = {'+': lambda a, b: a + b,
|
79
|
-
'-': lambda a, b: a - b,
|
80
|
-
'/': lambda a, b: a / b,
|
81
|
-
'//': lambda a, b: a // b,
|
82
|
-
'*': lambda a, b: a * b,
|
83
|
-
'**': lambda a, b: a ** b,
|
84
|
-
'%': lambda a, b: a % b,
|
85
|
-
'&': lambda a, b: a & b,
|
86
|
-
'|': lambda a, b: a | b,
|
87
|
-
'^': lambda a, b: a ^ b,
|
88
|
-
'<<': lambda a, b: a << b,
|
89
|
-
'>>': lambda a, b: a >> b,
|
90
|
-
}
|
91
|
-
for key, impl in BIN_OP_IMPL.items():
|
92
|
-
BIN_OP_IMPL[key+'='] = impl
|
93
|
-
|
94
|
-
def const_infer_binary_op(self, operator, other, context):
|
95
|
-
for other in other.infer(context):
|
96
|
-
if isinstance(other, nodes.Const):
|
97
|
-
try:
|
98
|
-
impl = BIN_OP_IMPL[operator]
|
99
|
-
|
100
|
-
try:
|
101
|
-
yield const_factory(impl(self.value, other.value))
|
102
|
-
except StandardError:
|
103
|
-
# ArithmeticError is not enough: float >> float is a TypeError
|
104
|
-
# TODO : let pylint know about the problem
|
105
|
-
pass
|
106
|
-
except TypeError:
|
107
|
-
# XXX log TypeError
|
108
|
-
continue
|
109
|
-
elif other is YES:
|
110
|
-
yield other
|
111
|
-
else:
|
112
|
-
try:
|
113
|
-
for val in other.infer_binary_op(operator, self, context):
|
114
|
-
yield val
|
115
|
-
except AttributeError:
|
116
|
-
yield YES
|
117
|
-
nodes.Const.infer_binary_op = yes_if_nothing_infered(const_infer_binary_op)
|
118
|
-
|
119
|
-
|
120
|
-
def tl_infer_binary_op(self, operator, other, context):
|
121
|
-
for other in other.infer(context):
|
122
|
-
if isinstance(other, self.__class__) and operator == '+':
|
123
|
-
node = self.__class__()
|
124
|
-
elts = [n for elt in self.elts for n in elt.infer(context)
|
125
|
-
if not n is YES]
|
126
|
-
elts += [n for elt in other.elts for n in elt.infer(context)
|
127
|
-
if not n is YES]
|
128
|
-
node.elts = elts
|
129
|
-
yield node
|
130
|
-
elif isinstance(other, nodes.Const) and operator == '*':
|
131
|
-
node = self.__class__()
|
132
|
-
elts = [n for elt in self.elts for n in elt.infer(context)
|
133
|
-
if not n is YES] * other.value
|
134
|
-
node.elts = elts
|
135
|
-
yield node
|
136
|
-
elif isinstance(other, Instance) and not isinstance(other, nodes.Const):
|
137
|
-
yield YES
|
138
|
-
# XXX else log TypeError
|
139
|
-
nodes.Tuple.infer_binary_op = yes_if_nothing_infered(tl_infer_binary_op)
|
140
|
-
nodes.List.infer_binary_op = yes_if_nothing_infered(tl_infer_binary_op)
|
141
|
-
|
142
|
-
|
143
|
-
def dict_infer_binary_op(self, operator, other, context):
|
144
|
-
for other in other.infer(context):
|
145
|
-
if isinstance(other, Instance) and isinstance(other._proxied, nodes.Class):
|
146
|
-
yield YES
|
147
|
-
# XXX else log TypeError
|
148
|
-
nodes.Dict.infer_binary_op = yes_if_nothing_infered(dict_infer_binary_op)
|
149
|
-
|
150
|
-
|
151
|
-
# assignment ##################################################################
|
152
|
-
|
153
|
-
"""the assigned_stmts method is responsible to return the assigned statement
|
154
|
-
(e.g. not inferred) according to the assignment type.
|
155
|
-
|
156
|
-
The `asspath` argument is used to record the lhs path of the original node.
|
157
|
-
For instance if we want assigned statements for 'c' in 'a, (b,c)', asspath
|
158
|
-
will be [1, 1] once arrived to the Assign node.
|
159
|
-
|
160
|
-
The `context` argument is the current inference context which should be given
|
161
|
-
to any intermediary inference necessary.
|
162
|
-
"""
|
163
|
-
|
164
|
-
def _resolve_looppart(parts, asspath, context):
|
165
|
-
"""recursive function to resolve multiple assignments on loops"""
|
166
|
-
asspath = asspath[:]
|
167
|
-
index = asspath.pop(0)
|
168
|
-
for part in parts:
|
169
|
-
if part is YES:
|
170
|
-
continue
|
171
|
-
# XXX handle __iter__ and log potentially detected errors
|
172
|
-
if not hasattr(part, 'itered'):
|
173
|
-
continue
|
174
|
-
try:
|
175
|
-
itered = part.itered()
|
176
|
-
except TypeError:
|
177
|
-
continue # XXX log error
|
178
|
-
for stmt in itered:
|
179
|
-
try:
|
180
|
-
assigned = stmt.getitem(index, context)
|
181
|
-
except (AttributeError, IndexError):
|
182
|
-
continue
|
183
|
-
except TypeError, exc: # stmt is unsubscriptable Const
|
184
|
-
continue
|
185
|
-
if not asspath:
|
186
|
-
# we achieved to resolved the assignment path,
|
187
|
-
# don't infer the last part
|
188
|
-
yield assigned
|
189
|
-
elif assigned is YES:
|
190
|
-
break
|
191
|
-
else:
|
192
|
-
# we are not yet on the last part of the path
|
193
|
-
# search on each possibly inferred value
|
194
|
-
try:
|
195
|
-
for infered in _resolve_looppart(assigned.infer(context),
|
196
|
-
asspath, context):
|
197
|
-
yield infered
|
198
|
-
except InferenceError:
|
199
|
-
break
|
200
|
-
|
201
|
-
|
202
|
-
def for_assigned_stmts(self, node, context=None, asspath=None):
|
203
|
-
if asspath is None:
|
204
|
-
for lst in self.iter.infer(context):
|
205
|
-
if isinstance(lst, (nodes.Tuple, nodes.List)):
|
206
|
-
for item in lst.elts:
|
207
|
-
yield item
|
208
|
-
else:
|
209
|
-
for infered in _resolve_looppart(self.iter.infer(context),
|
210
|
-
asspath, context):
|
211
|
-
yield infered
|
212
|
-
|
213
|
-
nodes.For.assigned_stmts = raise_if_nothing_infered(for_assigned_stmts)
|
214
|
-
nodes.Comprehension.assigned_stmts = raise_if_nothing_infered(for_assigned_stmts)
|
215
|
-
|
216
|
-
|
217
|
-
def mulass_assigned_stmts(self, node, context=None, asspath=None):
|
218
|
-
if asspath is None:
|
219
|
-
asspath = []
|
220
|
-
asspath.insert(0, self.elts.index(node))
|
221
|
-
return self.parent.assigned_stmts(self, context, asspath)
|
222
|
-
nodes.Tuple.assigned_stmts = mulass_assigned_stmts
|
223
|
-
nodes.List.assigned_stmts = mulass_assigned_stmts
|
224
|
-
|
225
|
-
|
226
|
-
def assend_assigned_stmts(self, context=None):
|
227
|
-
return self.parent.assigned_stmts(self, context=context)
|
228
|
-
nodes.AssName.assigned_stmts = assend_assigned_stmts
|
229
|
-
nodes.AssAttr.assigned_stmts = assend_assigned_stmts
|
230
|
-
|
231
|
-
|
232
|
-
def _arguments_infer_argname(self, name, context):
|
233
|
-
# arguments information may be missing, in which case we can't do anything
|
234
|
-
# more
|
235
|
-
if not (self.args or self.vararg or self.kwarg):
|
236
|
-
yield YES
|
237
|
-
return
|
238
|
-
# first argument of instance/class method
|
239
|
-
if self.args and getattr(self.args[0], 'name', None) == name:
|
240
|
-
functype = self.parent.type
|
241
|
-
if functype == 'method':
|
242
|
-
yield Instance(self.parent.parent.frame())
|
243
|
-
return
|
244
|
-
if functype == 'classmethod':
|
245
|
-
yield self.parent.parent.frame()
|
246
|
-
return
|
247
|
-
if name == self.vararg:
|
248
|
-
yield const_factory(())
|
249
|
-
return
|
250
|
-
if name == self.kwarg:
|
251
|
-
yield const_factory({})
|
252
|
-
return
|
253
|
-
# if there is a default value, yield it. And then yield YES to reflect
|
254
|
-
# we can't guess given argument value
|
255
|
-
try:
|
256
|
-
context = copy_context(context)
|
257
|
-
for infered in self.default_value(name).infer(context):
|
258
|
-
yield infered
|
259
|
-
yield YES
|
260
|
-
except NoDefault:
|
261
|
-
yield YES
|
262
|
-
|
263
|
-
|
264
|
-
def arguments_assigned_stmts(self, node, context, asspath=None):
|
265
|
-
if context.callcontext:
|
266
|
-
# reset call context/name
|
267
|
-
callcontext = context.callcontext
|
268
|
-
context = copy_context(context)
|
269
|
-
context.callcontext = None
|
270
|
-
for infered in callcontext.infer_argument(self.parent, node.name, context):
|
271
|
-
yield infered
|
272
|
-
return
|
273
|
-
for infered in _arguments_infer_argname(self, node.name, context):
|
274
|
-
yield infered
|
275
|
-
nodes.Arguments.assigned_stmts = arguments_assigned_stmts
|
276
|
-
|
277
|
-
|
278
|
-
def assign_assigned_stmts(self, node, context=None, asspath=None):
|
279
|
-
if not asspath:
|
280
|
-
yield self.value
|
281
|
-
return
|
282
|
-
for infered in _resolve_asspart(self.value.infer(context), asspath, context):
|
283
|
-
yield infered
|
284
|
-
nodes.Assign.assigned_stmts = raise_if_nothing_infered(assign_assigned_stmts)
|
285
|
-
nodes.AugAssign.assigned_stmts = raise_if_nothing_infered(assign_assigned_stmts)
|
286
|
-
|
287
|
-
|
288
|
-
def _resolve_asspart(parts, asspath, context):
|
289
|
-
"""recursive function to resolve multiple assignments"""
|
290
|
-
asspath = asspath[:]
|
291
|
-
index = asspath.pop(0)
|
292
|
-
for part in parts:
|
293
|
-
if hasattr(part, 'getitem'):
|
294
|
-
try:
|
295
|
-
assigned = part.getitem(index, context)
|
296
|
-
# XXX raise a specific exception to avoid potential hiding of
|
297
|
-
# unexpected exception ?
|
298
|
-
except (TypeError, IndexError):
|
299
|
-
return
|
300
|
-
if not asspath:
|
301
|
-
# we achieved to resolved the assignment path, don't infer the
|
302
|
-
# last part
|
303
|
-
yield assigned
|
304
|
-
elif assigned is YES:
|
305
|
-
return
|
306
|
-
else:
|
307
|
-
# we are not yet on the last part of the path search on each
|
308
|
-
# possibly inferred value
|
309
|
-
try:
|
310
|
-
for infered in _resolve_asspart(assigned.infer(context),
|
311
|
-
asspath, context):
|
312
|
-
yield infered
|
313
|
-
except InferenceError:
|
314
|
-
return
|
315
|
-
|
316
|
-
|
317
|
-
def excepthandler_assigned_stmts(self, node, context=None, asspath=None):
|
318
|
-
for assigned in unpack_infer(self.type):
|
319
|
-
if isinstance(assigned, nodes.Class):
|
320
|
-
assigned = Instance(assigned)
|
321
|
-
yield assigned
|
322
|
-
nodes.ExceptHandler.assigned_stmts = raise_if_nothing_infered(excepthandler_assigned_stmts)
|
323
|
-
|
324
|
-
|
325
|
-
def with_assigned_stmts(self, node, context=None, asspath=None):
|
326
|
-
if asspath is None:
|
327
|
-
for lst in self.vars.infer(context):
|
328
|
-
if isinstance(lst, (nodes.Tuple, nodes.List)):
|
329
|
-
for item in lst.nodes:
|
330
|
-
yield item
|
331
|
-
nodes.With.assigned_stmts = raise_if_nothing_infered(with_assigned_stmts)
|
332
|
-
|
333
|
-
|
@@ -1,212 +0,0 @@
|
|
1
|
-
# This program is free software; you can redistribute it and/or modify it under
|
2
|
-
# the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
9
|
-
#
|
10
|
-
# You should have received a copy of the GNU Lesser 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
|
-
# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
|
14
|
-
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
|
15
|
-
# copyright 2003-2010 Sylvain Thenault, all rights reserved.
|
16
|
-
# contact mailto:thenault@gmail.com
|
17
|
-
#
|
18
|
-
# This file is part of logilab-astng.
|
19
|
-
#
|
20
|
-
# logilab-astng is free software: you can redistribute it and/or modify it
|
21
|
-
# under the terms of the GNU Lesser General Public License as published by the
|
22
|
-
# Free Software Foundation, either version 2.1 of the License, or (at your
|
23
|
-
# option) any later version.
|
24
|
-
#
|
25
|
-
# logilab-astng is distributed in the hope that it will be useful, but
|
26
|
-
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
27
|
-
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
28
|
-
# for more details.
|
29
|
-
#
|
30
|
-
# You should have received a copy of the GNU Lesser General Public License along
|
31
|
-
# with logilab-astng. If not, see <http://www.gnu.org/licenses/>.
|
32
|
-
"""this module contains a set of functions to create astng trees from scratch
|
33
|
-
(build_* functions) or from living object (object_build_* functions)
|
34
|
-
|
35
|
-
"""
|
36
|
-
|
37
|
-
__docformat__ = "restructuredtext en"
|
38
|
-
|
39
|
-
import sys
|
40
|
-
from inspect import getargspec
|
41
|
-
|
42
|
-
from logilab.astng import nodes
|
43
|
-
|
44
|
-
|
45
|
-
def _attach_local_node(parent, node, name):
|
46
|
-
node.name = name # needed by add_local_node
|
47
|
-
parent.add_local_node(node)
|
48
|
-
|
49
|
-
_marker = object()
|
50
|
-
|
51
|
-
def attach_dummy_node(node, name, object=_marker):
|
52
|
-
"""create a dummy node and register it in the locals of the given
|
53
|
-
node with the specified name
|
54
|
-
"""
|
55
|
-
enode = nodes.EmptyNode()
|
56
|
-
enode.object = object
|
57
|
-
_attach_local_node(node, enode, name)
|
58
|
-
|
59
|
-
nodes.EmptyNode.has_underlying_object = lambda self: self.object is not _marker
|
60
|
-
|
61
|
-
def attach_const_node(node, name, value):
|
62
|
-
"""create a Const node and register it in the locals of the given
|
63
|
-
node with the specified name
|
64
|
-
"""
|
65
|
-
if not name in node.special_attributes:
|
66
|
-
_attach_local_node(node, nodes.const_factory(value), name)
|
67
|
-
|
68
|
-
def attach_import_node(node, modname, membername):
|
69
|
-
"""create a From node and register it in the locals of the given
|
70
|
-
node with the specified name
|
71
|
-
"""
|
72
|
-
from_node = nodes.From(modname, [(membername, None)])
|
73
|
-
_attach_local_node(node, from_node, membername)
|
74
|
-
|
75
|
-
|
76
|
-
def build_module(name, doc=None):
|
77
|
-
"""create and initialize a astng Module node"""
|
78
|
-
node = nodes.Module(name, doc, pure_python=False)
|
79
|
-
node.package = False
|
80
|
-
node.parent = None
|
81
|
-
return node
|
82
|
-
|
83
|
-
def build_class(name, basenames=(), doc=None):
|
84
|
-
"""create and initialize a astng Class node"""
|
85
|
-
node = nodes.Class(name, doc)
|
86
|
-
for base in basenames:
|
87
|
-
basenode = nodes.Name()
|
88
|
-
basenode.name = base
|
89
|
-
node.bases.append(basenode)
|
90
|
-
basenode.parent = node
|
91
|
-
return node
|
92
|
-
|
93
|
-
def build_function(name, args=None, defaults=None, flag=0, doc=None):
|
94
|
-
"""create and initialize a astng Function node"""
|
95
|
-
args, defaults = args or [], defaults or []
|
96
|
-
# first argument is now a list of decorators
|
97
|
-
func = nodes.Function(name, doc)
|
98
|
-
func.args = argsnode = nodes.Arguments()
|
99
|
-
argsnode.args = []
|
100
|
-
for arg in args:
|
101
|
-
argsnode.args.append(nodes.Name())
|
102
|
-
argsnode.args[-1].name = arg
|
103
|
-
argsnode.args[-1].parent = argsnode
|
104
|
-
argsnode.defaults = []
|
105
|
-
for default in defaults:
|
106
|
-
argsnode.defaults.append(nodes.const_factory(default))
|
107
|
-
argsnode.defaults[-1].parent = argsnode
|
108
|
-
argsnode.kwarg = None
|
109
|
-
argsnode.vararg = None
|
110
|
-
argsnode.parent = func
|
111
|
-
if args:
|
112
|
-
register_arguments(func)
|
113
|
-
return func
|
114
|
-
|
115
|
-
|
116
|
-
# def build_name_assign(name, value):
|
117
|
-
# """create and initialize an astng Assign for a name assignment"""
|
118
|
-
# return nodes.Assign([nodes.AssName(name, 'OP_ASSIGN')], nodes.Const(value))
|
119
|
-
|
120
|
-
# def build_attr_assign(name, value, attr='self'):
|
121
|
-
# """create and initialize an astng Assign for an attribute assignment"""
|
122
|
-
# return nodes.Assign([nodes.AssAttr(nodes.Name(attr), name, 'OP_ASSIGN')],
|
123
|
-
# nodes.Const(value))
|
124
|
-
|
125
|
-
|
126
|
-
def build_from_import(fromname, names):
|
127
|
-
"""create and initialize an astng From import statement"""
|
128
|
-
return nodes.From(fromname, [(name, None) for name in names])
|
129
|
-
|
130
|
-
def register_arguments(func, args=None):
|
131
|
-
"""add given arguments to local
|
132
|
-
|
133
|
-
args is a list that may contains nested lists
|
134
|
-
(i.e. def func(a, (b, c, d)): ...)
|
135
|
-
"""
|
136
|
-
if args is None:
|
137
|
-
args = func.args.args
|
138
|
-
if func.args.vararg:
|
139
|
-
func.set_local(func.args.vararg, func.args)
|
140
|
-
if func.args.kwarg:
|
141
|
-
func.set_local(func.args.kwarg, func.args)
|
142
|
-
for arg in args:
|
143
|
-
if isinstance(arg, nodes.Name):
|
144
|
-
func.set_local(arg.name, arg)
|
145
|
-
else:
|
146
|
-
register_arguments(func, arg.elts)
|
147
|
-
|
148
|
-
def object_build_class(node, member, localname):
|
149
|
-
"""create astng for a living class object"""
|
150
|
-
basenames = [base.__name__ for base in member.__bases__]
|
151
|
-
return _base_class_object_build(node, member, basenames,
|
152
|
-
localname=localname)
|
153
|
-
|
154
|
-
def object_build_function(node, member, localname):
|
155
|
-
"""create astng for a living function object"""
|
156
|
-
args, varargs, varkw, defaults = getargspec(member)
|
157
|
-
if varargs is not None:
|
158
|
-
args.append(varargs)
|
159
|
-
if varkw is not None:
|
160
|
-
args.append(varkw)
|
161
|
-
func = build_function(getattr(member, '__name__', None) or localname, args,
|
162
|
-
defaults, member.func_code.co_flags, member.__doc__)
|
163
|
-
node.add_local_node(func, localname)
|
164
|
-
|
165
|
-
def object_build_datadescriptor(node, member, name):
|
166
|
-
"""create astng for a living data descriptor object"""
|
167
|
-
return _base_class_object_build(node, member, [], name)
|
168
|
-
|
169
|
-
def object_build_methoddescriptor(node, member, localname):
|
170
|
-
"""create astng for a living method descriptor object"""
|
171
|
-
# FIXME get arguments ?
|
172
|
-
func = build_function(getattr(member, '__name__', None) or localname,
|
173
|
-
doc=member.__doc__)
|
174
|
-
# set node's arguments to None to notice that we have no information, not
|
175
|
-
# and empty argument list
|
176
|
-
func.args.args = None
|
177
|
-
node.add_local_node(func, localname)
|
178
|
-
|
179
|
-
def _base_class_object_build(node, member, basenames, name=None, localname=None):
|
180
|
-
"""create astng for a living class object, with a given set of base names
|
181
|
-
(e.g. ancestors)
|
182
|
-
"""
|
183
|
-
klass = build_class(name or getattr(member, '__name__', None) or localname,
|
184
|
-
basenames, member.__doc__)
|
185
|
-
klass._newstyle = isinstance(member, type)
|
186
|
-
node.add_local_node(klass, localname)
|
187
|
-
try:
|
188
|
-
# limit the instantiation trick since it's too dangerous
|
189
|
-
# (such as infinite test execution...)
|
190
|
-
# this at least resolves common case such as Exception.args,
|
191
|
-
# OSError.errno
|
192
|
-
if issubclass(member, Exception):
|
193
|
-
instdict = member().__dict__
|
194
|
-
else:
|
195
|
-
raise TypeError
|
196
|
-
except:
|
197
|
-
pass
|
198
|
-
else:
|
199
|
-
for name, obj in instdict.items():
|
200
|
-
valnode = nodes.EmptyNode()
|
201
|
-
valnode.object = obj
|
202
|
-
valnode.parent = klass
|
203
|
-
valnode.lineno = 1
|
204
|
-
klass.instance_attrs[name] = [valnode]
|
205
|
-
return klass
|
206
|
-
|
207
|
-
|
208
|
-
__all__ = ('register_arguments', 'build_module',
|
209
|
-
'object_build_class', 'object_build_function',
|
210
|
-
'object_build_datadescriptor', 'object_build_methoddescriptor',
|
211
|
-
'attach_dummy_node',
|
212
|
-
'attach_const_node', 'attach_import_node')
|