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,276 +0,0 @@
|
|
1
|
-
# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
|
2
|
-
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
|
3
|
-
#
|
4
|
-
# This file is part of logilab-common.
|
5
|
-
#
|
6
|
-
# logilab-common is free software: you can redistribute it and/or modify it under
|
7
|
-
# the terms of the GNU Lesser General Public License as published by the Free
|
8
|
-
# Software Foundation, either version 2.1 of the License, or (at your option) any
|
9
|
-
# later version.
|
10
|
-
#
|
11
|
-
# logilab-common is distributed in the hope that it will be useful, but WITHOUT
|
12
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
13
|
-
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
14
|
-
# details.
|
15
|
-
#
|
16
|
-
# You should have received a copy of the GNU Lesser General Public License along
|
17
|
-
# with logilab-common. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
"""module providing:
|
19
|
-
* process information (linux specific: rely on /proc)
|
20
|
-
* a class for resource control (memory / time / cpu time)
|
21
|
-
|
22
|
-
This module doesn't work on windows platforms (only tested on linux)
|
23
|
-
|
24
|
-
:organization: Logilab
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
"""
|
29
|
-
__docformat__ = "restructuredtext en"
|
30
|
-
|
31
|
-
import os
|
32
|
-
import stat
|
33
|
-
from resource import getrlimit, setrlimit, RLIMIT_CPU, RLIMIT_AS
|
34
|
-
from signal import signal, SIGXCPU, SIGKILL, SIGUSR2, SIGUSR1
|
35
|
-
from threading import Timer, currentThread, Thread, Event
|
36
|
-
from time import time
|
37
|
-
|
38
|
-
from logilab.common.tree import Node
|
39
|
-
|
40
|
-
class NoSuchProcess(Exception): pass
|
41
|
-
|
42
|
-
def proc_exists(pid):
|
43
|
-
"""check the a pid is registered in /proc
|
44
|
-
raise NoSuchProcess exception if not
|
45
|
-
"""
|
46
|
-
if not os.path.exists('/proc/%s' % pid):
|
47
|
-
raise NoSuchProcess()
|
48
|
-
|
49
|
-
PPID = 3
|
50
|
-
UTIME = 13
|
51
|
-
STIME = 14
|
52
|
-
CUTIME = 15
|
53
|
-
CSTIME = 16
|
54
|
-
VSIZE = 22
|
55
|
-
|
56
|
-
class ProcInfo(Node):
|
57
|
-
"""provide access to process information found in /proc"""
|
58
|
-
|
59
|
-
def __init__(self, pid):
|
60
|
-
self.pid = int(pid)
|
61
|
-
Node.__init__(self, self.pid)
|
62
|
-
proc_exists(self.pid)
|
63
|
-
self.file = '/proc/%s/stat' % self.pid
|
64
|
-
self.ppid = int(self.status()[PPID])
|
65
|
-
|
66
|
-
def memory_usage(self):
|
67
|
-
"""return the memory usage of the process in Ko"""
|
68
|
-
try :
|
69
|
-
return int(self.status()[VSIZE])
|
70
|
-
except IOError:
|
71
|
-
return 0
|
72
|
-
|
73
|
-
def lineage_memory_usage(self):
|
74
|
-
return self.memory_usage() + sum(child.lineage_memory_usage() for child in self.children)
|
75
|
-
|
76
|
-
def time(self, children=0):
|
77
|
-
"""return the number of jiffies that this process has been scheduled
|
78
|
-
in user and kernel mode"""
|
79
|
-
status = self.status()
|
80
|
-
time = int(status[UTIME]) + int(status[STIME])
|
81
|
-
if children:
|
82
|
-
time += int(status[CUTIME]) + int(status[CSTIME])
|
83
|
-
return time
|
84
|
-
|
85
|
-
def status(self):
|
86
|
-
"""return the list of fields found in /proc/<pid>/stat"""
|
87
|
-
return open(self.file).read().split()
|
88
|
-
|
89
|
-
def name(self):
|
90
|
-
"""return the process name found in /proc/<pid>/stat
|
91
|
-
"""
|
92
|
-
return self.status()[1].strip('()')
|
93
|
-
|
94
|
-
def age(self):
|
95
|
-
"""return the age of the process
|
96
|
-
"""
|
97
|
-
return os.stat(self.file)[stat.ST_MTIME]
|
98
|
-
|
99
|
-
class ProcInfoLoader:
|
100
|
-
"""manage process information"""
|
101
|
-
|
102
|
-
def __init__(self):
|
103
|
-
self._loaded = {}
|
104
|
-
|
105
|
-
def list_pids(self):
|
106
|
-
"""return a list of existent process ids"""
|
107
|
-
for subdir in os.listdir('/proc'):
|
108
|
-
if subdir.isdigit():
|
109
|
-
yield int(subdir)
|
110
|
-
|
111
|
-
def load(self, pid):
|
112
|
-
"""get a ProcInfo object for a given pid"""
|
113
|
-
pid = int(pid)
|
114
|
-
try:
|
115
|
-
return self._loaded[pid]
|
116
|
-
except KeyError:
|
117
|
-
procinfo = ProcInfo(pid)
|
118
|
-
procinfo.manager = self
|
119
|
-
self._loaded[pid] = procinfo
|
120
|
-
return procinfo
|
121
|
-
|
122
|
-
|
123
|
-
def load_all(self):
|
124
|
-
"""load all processes information"""
|
125
|
-
for pid in self.list_pids():
|
126
|
-
try:
|
127
|
-
procinfo = self.load(pid)
|
128
|
-
if procinfo.parent is None and procinfo.ppid:
|
129
|
-
pprocinfo = self.load(procinfo.ppid)
|
130
|
-
pprocinfo.append(procinfo)
|
131
|
-
except NoSuchProcess:
|
132
|
-
pass
|
133
|
-
|
134
|
-
|
135
|
-
try:
|
136
|
-
class ResourceError(BaseException):
|
137
|
-
"""Error raise when resource limit is reached"""
|
138
|
-
limit = "Unknown Resource Limit"
|
139
|
-
except NameError:
|
140
|
-
class ResourceError(Exception):
|
141
|
-
"""Error raise when resource limit is reached"""
|
142
|
-
limit = "Unknown Resource Limit"
|
143
|
-
|
144
|
-
|
145
|
-
class XCPUError(ResourceError):
|
146
|
-
"""Error raised when CPU Time limit is reached"""
|
147
|
-
limit = "CPU Time"
|
148
|
-
|
149
|
-
class LineageMemoryError(ResourceError):
|
150
|
-
"""Error raised when the total amount of memory used by a process and
|
151
|
-
it's child is reached"""
|
152
|
-
limit = "Lineage total Memory"
|
153
|
-
|
154
|
-
class TimeoutError(ResourceError):
|
155
|
-
"""Error raised when the process is running for to much time"""
|
156
|
-
limit = "Real Time"
|
157
|
-
|
158
|
-
# Can't use subclass because the StandardError MemoryError raised
|
159
|
-
RESOURCE_LIMIT_EXCEPTION = (ResourceError, MemoryError)
|
160
|
-
|
161
|
-
|
162
|
-
class MemorySentinel(Thread):
|
163
|
-
"""A class checking a process don't use too much memory in a separated
|
164
|
-
daemonic thread
|
165
|
-
"""
|
166
|
-
def __init__(self, interval, memory_limit, gpid=os.getpid()):
|
167
|
-
Thread.__init__(self, target=self._run, name="Test.Sentinel")
|
168
|
-
self.memory_limit = memory_limit
|
169
|
-
self._stop = Event()
|
170
|
-
self.interval = interval
|
171
|
-
self.setDaemon(True)
|
172
|
-
self.gpid = gpid
|
173
|
-
|
174
|
-
def stop(self):
|
175
|
-
"""stop ap"""
|
176
|
-
self._stop.set()
|
177
|
-
|
178
|
-
def _run(self):
|
179
|
-
pil = ProcInfoLoader()
|
180
|
-
while not self._stop.isSet():
|
181
|
-
if self.memory_limit <= pil.load(self.gpid).lineage_memory_usage():
|
182
|
-
os.killpg(self.gpid, SIGUSR1)
|
183
|
-
self._stop.wait(self.interval)
|
184
|
-
|
185
|
-
|
186
|
-
class ResourceController:
|
187
|
-
|
188
|
-
def __init__(self, max_cpu_time=None, max_time=None, max_memory=None,
|
189
|
-
max_reprieve=60):
|
190
|
-
if SIGXCPU == -1:
|
191
|
-
raise RuntimeError("Unsupported platform")
|
192
|
-
self.max_time = max_time
|
193
|
-
self.max_memory = max_memory
|
194
|
-
self.max_cpu_time = max_cpu_time
|
195
|
-
self._reprieve = max_reprieve
|
196
|
-
self._timer = None
|
197
|
-
self._msentinel = None
|
198
|
-
self._old_max_memory = None
|
199
|
-
self._old_usr1_hdlr = None
|
200
|
-
self._old_max_cpu_time = None
|
201
|
-
self._old_usr2_hdlr = None
|
202
|
-
self._old_sigxcpu_hdlr = None
|
203
|
-
self._limit_set = 0
|
204
|
-
self._abort_try = 0
|
205
|
-
self._start_time = None
|
206
|
-
self._elapse_time = 0
|
207
|
-
|
208
|
-
def _hangle_sig_timeout(self, sig, frame):
|
209
|
-
raise TimeoutError()
|
210
|
-
|
211
|
-
def _hangle_sig_memory(self, sig, frame):
|
212
|
-
if self._abort_try < self._reprieve:
|
213
|
-
self._abort_try += 1
|
214
|
-
raise LineageMemoryError("Memory limit reached")
|
215
|
-
else:
|
216
|
-
os.killpg(os.getpid(), SIGKILL)
|
217
|
-
|
218
|
-
def _handle_sigxcpu(self, sig, frame):
|
219
|
-
if self._abort_try < self._reprieve:
|
220
|
-
self._abort_try += 1
|
221
|
-
raise XCPUError("Soft CPU time limit reached")
|
222
|
-
else:
|
223
|
-
os.killpg(os.getpid(), SIGKILL)
|
224
|
-
|
225
|
-
def _time_out(self):
|
226
|
-
if self._abort_try < self._reprieve:
|
227
|
-
self._abort_try += 1
|
228
|
-
os.killpg(os.getpid(), SIGUSR2)
|
229
|
-
if self._limit_set > 0:
|
230
|
-
self._timer = Timer(1, self._time_out)
|
231
|
-
self._timer.start()
|
232
|
-
else:
|
233
|
-
os.killpg(os.getpid(), SIGKILL)
|
234
|
-
|
235
|
-
def setup_limit(self):
|
236
|
-
"""set up the process limit"""
|
237
|
-
assert currentThread().getName() == 'MainThread'
|
238
|
-
os.setpgrp()
|
239
|
-
if self._limit_set <= 0:
|
240
|
-
if self.max_time is not None:
|
241
|
-
self._old_usr2_hdlr = signal(SIGUSR2, self._hangle_sig_timeout)
|
242
|
-
self._timer = Timer(max(1, int(self.max_time) - self._elapse_time),
|
243
|
-
self._time_out)
|
244
|
-
self._start_time = int(time())
|
245
|
-
self._timer.start()
|
246
|
-
if self.max_cpu_time is not None:
|
247
|
-
self._old_max_cpu_time = getrlimit(RLIMIT_CPU)
|
248
|
-
cpu_limit = (int(self.max_cpu_time), self._old_max_cpu_time[1])
|
249
|
-
self._old_sigxcpu_hdlr = signal(SIGXCPU, self._handle_sigxcpu)
|
250
|
-
setrlimit(RLIMIT_CPU, cpu_limit)
|
251
|
-
if self.max_memory is not None:
|
252
|
-
self._msentinel = MemorySentinel(1, int(self.max_memory) )
|
253
|
-
self._old_max_memory = getrlimit(RLIMIT_AS)
|
254
|
-
self._old_usr1_hdlr = signal(SIGUSR1, self._hangle_sig_memory)
|
255
|
-
as_limit = (int(self.max_memory), self._old_max_memory[1])
|
256
|
-
setrlimit(RLIMIT_AS, as_limit)
|
257
|
-
self._msentinel.start()
|
258
|
-
self._limit_set += 1
|
259
|
-
|
260
|
-
def clean_limit(self):
|
261
|
-
"""reinstall the old process limit"""
|
262
|
-
if self._limit_set > 0:
|
263
|
-
if self.max_time is not None:
|
264
|
-
self._timer.cancel()
|
265
|
-
self._elapse_time += int(time())-self._start_time
|
266
|
-
self._timer = None
|
267
|
-
signal(SIGUSR2, self._old_usr2_hdlr)
|
268
|
-
if self.max_cpu_time is not None:
|
269
|
-
setrlimit(RLIMIT_CPU, self._old_max_cpu_time)
|
270
|
-
signal(SIGXCPU, self._old_sigxcpu_hdlr)
|
271
|
-
if self.max_memory is not None:
|
272
|
-
self._msentinel.stop()
|
273
|
-
self._msentinel = None
|
274
|
-
setrlimit(RLIMIT_AS, self._old_max_memory)
|
275
|
-
signal(SIGUSR1, self._old_usr1_hdlr)
|
276
|
-
self._limit_set -= 1
|
@@ -1,146 +0,0 @@
|
|
1
|
-
# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
|
2
|
-
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
|
3
|
-
#
|
4
|
-
# This file is part of logilab-common.
|
5
|
-
#
|
6
|
-
# logilab-common is free software: you can redistribute it and/or modify it under
|
7
|
-
# the terms of the GNU Lesser General Public License as published by the Free
|
8
|
-
# Software Foundation, either version 2.1 of the License, or (at your option) any
|
9
|
-
# later version.
|
10
|
-
#
|
11
|
-
# logilab-common is distributed in the hope that it will be useful, but WITHOUT
|
12
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
13
|
-
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
14
|
-
# details.
|
15
|
-
#
|
16
|
-
# You should have received a copy of the GNU Lesser General Public License along
|
17
|
-
# with logilab-common. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
"""Python Remote Object utilities
|
19
|
-
|
20
|
-
Main functions available:
|
21
|
-
|
22
|
-
* `register_object` to expose arbitrary object through pyro using delegation
|
23
|
-
approach and register it in the nameserver.
|
24
|
-
* `ns_unregister` unregister an object identifier from the nameserver.
|
25
|
-
* `ns_get_proxy` get a pyro proxy from a nameserver object identifier.
|
26
|
-
|
27
|
-
:organization: Logilab
|
28
|
-
|
29
|
-
|
30
|
-
"""
|
31
|
-
__docformat__ = "restructuredtext en"
|
32
|
-
|
33
|
-
import logging
|
34
|
-
import tempfile
|
35
|
-
|
36
|
-
from Pyro import core, naming, errors, util, config
|
37
|
-
|
38
|
-
_LOGGER = logging.getLogger('pyro')
|
39
|
-
_MARKER = object()
|
40
|
-
|
41
|
-
config.PYRO_STORAGE = tempfile.gettempdir()
|
42
|
-
|
43
|
-
def ns_group_and_id(idstr, defaultnsgroup=_MARKER):
|
44
|
-
try:
|
45
|
-
nsgroup, nsid = idstr.rsplit('.', 1)
|
46
|
-
except ValueError:
|
47
|
-
if defaultnsgroup is _MARKER:
|
48
|
-
nsgroup = config.PYRO_NS_DEFAULTGROUP
|
49
|
-
else:
|
50
|
-
nsgroup = defaultnsgroup
|
51
|
-
nsid = idstr
|
52
|
-
if nsgroup is not None and not nsgroup.startswith(':'):
|
53
|
-
nsgroup = ':' + nsgroup
|
54
|
-
return nsgroup, nsid
|
55
|
-
|
56
|
-
def host_and_port(hoststr):
|
57
|
-
if not hoststr:
|
58
|
-
return None, None
|
59
|
-
try:
|
60
|
-
hoststr, port = hoststr.split(':')
|
61
|
-
except ValueError:
|
62
|
-
port = None
|
63
|
-
else:
|
64
|
-
port = int(port)
|
65
|
-
return hoststr, port
|
66
|
-
|
67
|
-
_DAEMONS = {}
|
68
|
-
def _get_daemon(daemonhost, start=True):
|
69
|
-
if not daemonhost in _DAEMONS:
|
70
|
-
if not start:
|
71
|
-
raise Exception('no daemon for %s' % daemonhost)
|
72
|
-
if not _DAEMONS:
|
73
|
-
core.initServer(banner=0)
|
74
|
-
host, port = host_and_port(daemonhost)
|
75
|
-
daemon = core.Daemon(host=host, port=port)
|
76
|
-
_DAEMONS[daemonhost] = daemon
|
77
|
-
return _DAEMONS[daemonhost]
|
78
|
-
|
79
|
-
|
80
|
-
def locate_ns(nshost):
|
81
|
-
"""locate and return the pyro name server to the daemon"""
|
82
|
-
core.initClient(banner=False)
|
83
|
-
return naming.NameServerLocator().getNS(*host_and_port(nshost))
|
84
|
-
|
85
|
-
|
86
|
-
def register_object(object, nsid, defaultnsgroup=_MARKER,
|
87
|
-
daemonhost=None, nshost=None):
|
88
|
-
"""expose the object as a pyro object and register it in the name-server
|
89
|
-
|
90
|
-
return the pyro daemon object
|
91
|
-
"""
|
92
|
-
nsgroup, nsid = ns_group_and_id(nsid, defaultnsgroup)
|
93
|
-
daemon = _get_daemon(daemonhost)
|
94
|
-
nsd = locate_ns(nshost)
|
95
|
-
# make sure our namespace group exists
|
96
|
-
try:
|
97
|
-
nsd.createGroup(nsgroup)
|
98
|
-
except errors.NamingError:
|
99
|
-
pass
|
100
|
-
daemon.useNameServer(nsd)
|
101
|
-
# use Delegation approach
|
102
|
-
impl = core.ObjBase()
|
103
|
-
impl.delegateTo(object)
|
104
|
-
daemon.connect(impl, '%s.%s' % (nsgroup, nsid))
|
105
|
-
_LOGGER.info('registered %s a pyro object using group %s and id %s',
|
106
|
-
object, nsgroup, nsid)
|
107
|
-
return daemon
|
108
|
-
|
109
|
-
|
110
|
-
def ns_unregister(nsid, defaultnsgroup=_MARKER, nshost=None):
|
111
|
-
"""unregister the object with the given nsid from the pyro name server"""
|
112
|
-
nsgroup, nsid = ns_group_and_id(nsid, defaultnsgroup)
|
113
|
-
try:
|
114
|
-
nsd = locate_ns(nshost)
|
115
|
-
except errors.PyroError, ex:
|
116
|
-
# name server not responding
|
117
|
-
_LOGGER.error('can\'t locate pyro name server: %s', ex)
|
118
|
-
else:
|
119
|
-
try:
|
120
|
-
nsd.unregister('%s.%s' % (nsgroup, nsid))
|
121
|
-
_LOGGER.info('%s unregistered from pyro name server', nsid)
|
122
|
-
except errors.NamingError:
|
123
|
-
_LOGGER.warning('%s not registered in pyro name server', nsid)
|
124
|
-
|
125
|
-
|
126
|
-
def ns_get_proxy(nsid, defaultnsgroup=_MARKER, nshost=None):
|
127
|
-
nsgroup, nsid = ns_group_and_id(nsid, defaultnsgroup)
|
128
|
-
# resolve the Pyro object
|
129
|
-
try:
|
130
|
-
nsd = locate_ns(nshost)
|
131
|
-
pyrouri = nsd.resolve('%s.%s' % (nsgroup, nsid))
|
132
|
-
except errors.ProtocolError, ex:
|
133
|
-
raise errors.PyroError(
|
134
|
-
'Could not connect to the Pyro name server (host: %s)' % nshost)
|
135
|
-
except errors.NamingError:
|
136
|
-
raise errors.PyroError(
|
137
|
-
'Could not get proxy for %s (not registered in Pyro), '
|
138
|
-
'you may have to restart your server-side application' % nsid)
|
139
|
-
return core.getProxyForURI(pyrouri)
|
140
|
-
|
141
|
-
|
142
|
-
def set_pyro_log_threshold(level):
|
143
|
-
pyrologger = logging.getLogger('Pyro.%s' % str(id(util.Log)))
|
144
|
-
# remove handlers so only the root handler is used
|
145
|
-
pyrologger.handlers = []
|
146
|
-
pyrologger.setLevel(level)
|