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,58 +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
|
-
"""A few useful context managers
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
"""
|
24
|
-
__docformat__ = "restructuredtext en"
|
25
|
-
|
26
|
-
import sys
|
27
|
-
|
28
|
-
if sys.version_info < (2, 5):
|
29
|
-
raise ImportError("python >= 2.5 is required to import logilab.common.contexts")
|
30
|
-
|
31
|
-
import os
|
32
|
-
import tempfile
|
33
|
-
import shutil
|
34
|
-
|
35
|
-
class tempdir(object):
|
36
|
-
|
37
|
-
def __enter__(self):
|
38
|
-
self.path = tempfile.mkdtemp()
|
39
|
-
return self.path
|
40
|
-
|
41
|
-
def __exit__(self, exctype, value, traceback):
|
42
|
-
# rmtree in all cases
|
43
|
-
shutil.rmtree(self.path)
|
44
|
-
return traceback is None
|
45
|
-
|
46
|
-
|
47
|
-
class pushd(object):
|
48
|
-
def __init__(self, directory):
|
49
|
-
self.directory = directory
|
50
|
-
|
51
|
-
def __enter__(self):
|
52
|
-
self.cwd = os.getcwd()
|
53
|
-
os.chdir(self.directory)
|
54
|
-
return self.directory
|
55
|
-
|
56
|
-
def __exit__(self, exctype, value, traceback):
|
57
|
-
os.chdir(self.cwd)
|
58
|
-
|
@@ -1,117 +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
|
-
"""A set of utility function to ease the use of OmniORBpy.
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
"""
|
24
|
-
__docformat__ = "restructuredtext en"
|
25
|
-
|
26
|
-
from omniORB import CORBA, PortableServer
|
27
|
-
import CosNaming
|
28
|
-
|
29
|
-
orb = None
|
30
|
-
|
31
|
-
def get_orb():
|
32
|
-
"""
|
33
|
-
returns a reference to the ORB.
|
34
|
-
The first call to the method initialized the ORB
|
35
|
-
This method is mainly used internally in the module.
|
36
|
-
"""
|
37
|
-
|
38
|
-
global orb
|
39
|
-
if orb is None:
|
40
|
-
import sys
|
41
|
-
orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID)
|
42
|
-
return orb
|
43
|
-
|
44
|
-
def get_root_context():
|
45
|
-
"""
|
46
|
-
returns a reference to the NameService object.
|
47
|
-
This method is mainly used internally in the module.
|
48
|
-
"""
|
49
|
-
|
50
|
-
orb = get_orb()
|
51
|
-
nss = orb.resolve_initial_references("NameService")
|
52
|
-
rootContext = nss._narrow(CosNaming.NamingContext)
|
53
|
-
assert rootContext is not None,"Failed to narrow root naming context"
|
54
|
-
return rootContext
|
55
|
-
|
56
|
-
def register_object_name(object, namepath):
|
57
|
-
"""
|
58
|
-
Registers a object in the NamingService.
|
59
|
-
The name path is a list of 2-uples (id,kind) giving the path.
|
60
|
-
|
61
|
-
For instance if the path of an object is [('foo',''),('bar','')],
|
62
|
-
it is possible to get a reference to the object using the URL
|
63
|
-
'corbaname::hostname#foo/bar'.
|
64
|
-
[('logilab','rootmodule'),('chatbot','application'),('chatter','server')]
|
65
|
-
is mapped to
|
66
|
-
'corbaname::hostname#logilab.rootmodule/chatbot.application/chatter.server'
|
67
|
-
|
68
|
-
The get_object_reference() function can be used to resolve such a URL.
|
69
|
-
"""
|
70
|
-
context = get_root_context()
|
71
|
-
for id, kind in namepath[:-1]:
|
72
|
-
name = [CosNaming.NameComponent(id, kind)]
|
73
|
-
try:
|
74
|
-
context = context.bind_new_context(name)
|
75
|
-
except CosNaming.NamingContext.AlreadyBound, ex:
|
76
|
-
context = context.resolve(name)._narrow(CosNaming.NamingContext)
|
77
|
-
assert context is not None, \
|
78
|
-
'test context exists but is not a NamingContext'
|
79
|
-
|
80
|
-
id,kind = namepath[-1]
|
81
|
-
name = [CosNaming.NameComponent(id, kind)]
|
82
|
-
try:
|
83
|
-
context.bind(name, object._this())
|
84
|
-
except CosNaming.NamingContext.AlreadyBound, ex:
|
85
|
-
context.rebind(name, object._this())
|
86
|
-
|
87
|
-
def activate_POA():
|
88
|
-
"""
|
89
|
-
This methods activates the Portable Object Adapter.
|
90
|
-
You need to call it to enable the reception of messages in your code,
|
91
|
-
on both the client and the server.
|
92
|
-
"""
|
93
|
-
orb = get_orb()
|
94
|
-
poa = orb.resolve_initial_references('RootPOA')
|
95
|
-
poaManager = poa._get_the_POAManager()
|
96
|
-
poaManager.activate()
|
97
|
-
|
98
|
-
def run_orb():
|
99
|
-
"""
|
100
|
-
Enters the ORB mainloop on the server.
|
101
|
-
You should not call this method on the client.
|
102
|
-
"""
|
103
|
-
get_orb().run()
|
104
|
-
|
105
|
-
def get_object_reference(url):
|
106
|
-
"""
|
107
|
-
Resolves a corbaname URL to an object proxy.
|
108
|
-
See register_object_name() for examples URLs
|
109
|
-
"""
|
110
|
-
return get_orb().string_to_object(url)
|
111
|
-
|
112
|
-
def get_object_string(host, namepath):
|
113
|
-
"""given an host name and a name path as described in register_object_name,
|
114
|
-
return a corba string identifier
|
115
|
-
"""
|
116
|
-
strname = '/'.join(['.'.join(path_elt) for path_elt in namepath])
|
117
|
-
return 'corbaname::%s#%s' % (host, strname)
|
@@ -1,171 +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
|
-
"""A daemonize function (for Unices) and daemon mix-in class"""
|
19
|
-
|
20
|
-
__docformat__ = "restructuredtext en"
|
21
|
-
|
22
|
-
import os
|
23
|
-
import errno
|
24
|
-
import signal
|
25
|
-
import sys
|
26
|
-
import time
|
27
|
-
import warnings
|
28
|
-
|
29
|
-
|
30
|
-
def daemonize(pidfile):
|
31
|
-
# See http://www.erlenstar.demon.co.uk/unix/faq_toc.html#TOC16
|
32
|
-
# XXX unix specific
|
33
|
-
#
|
34
|
-
# fork so the parent can exit
|
35
|
-
if os.fork(): # launch child and...
|
36
|
-
return 1
|
37
|
-
# deconnect from tty and create a new session
|
38
|
-
os.setsid()
|
39
|
-
# fork again so the parent, (the session group leader), can exit.
|
40
|
-
# as a non-session group leader, we can never regain a controlling
|
41
|
-
# terminal.
|
42
|
-
if os.fork(): # launch child again.
|
43
|
-
return 1
|
44
|
-
# move to the root to avoit mount pb
|
45
|
-
os.chdir('/')
|
46
|
-
# set paranoid umask
|
47
|
-
os.umask(077)
|
48
|
-
# redirect standard descriptors
|
49
|
-
null = os.open('/dev/null', os.O_RDWR)
|
50
|
-
for i in range(3):
|
51
|
-
try:
|
52
|
-
os.dup2(null, i)
|
53
|
-
except OSError, e:
|
54
|
-
if e.errno != errno.EBADF:
|
55
|
-
raise
|
56
|
-
os.close(null)
|
57
|
-
# filter warnings
|
58
|
-
warnings.filterwarnings('ignore')
|
59
|
-
# write pid in a file
|
60
|
-
if pidfile:
|
61
|
-
# ensure the directory where the pid-file should be set exists (for
|
62
|
-
# instance /var/run/cubicweb may be deleted on computer restart)
|
63
|
-
piddir = os.path.dirname(pidfile)
|
64
|
-
if not os.path.exists(piddir):
|
65
|
-
os.makedirs(piddir)
|
66
|
-
f = file(pidfile, 'w')
|
67
|
-
f.write(str(os.getpid()))
|
68
|
-
f.close()
|
69
|
-
return None
|
70
|
-
|
71
|
-
|
72
|
-
class DaemonMixIn:
|
73
|
-
"""Mixin to make a daemon from watchers/queriers.
|
74
|
-
"""
|
75
|
-
|
76
|
-
def __init__(self, configmod) :
|
77
|
-
self.delay = configmod.DELAY
|
78
|
-
self.name = str(self.__class__).split('.')[-1]
|
79
|
-
self._pid_file = os.path.join('/tmp', '%s.pid'%self.name)
|
80
|
-
if os.path.exists(self._pid_file):
|
81
|
-
raise Exception('''Another instance of %s must be running.
|
82
|
-
If it i not the case, remove the file %s''' % (self.name, self._pid_file))
|
83
|
-
self._alive = 1
|
84
|
-
self._sleeping = 0
|
85
|
-
self.config = configmod
|
86
|
-
|
87
|
-
def _daemonize(self):
|
88
|
-
if not self.config.NODETACH:
|
89
|
-
if daemonize(self._pid_file) is None:
|
90
|
-
# put signal handler
|
91
|
-
signal.signal(signal.SIGTERM, self.signal_handler)
|
92
|
-
signal.signal(signal.SIGHUP, self.signal_handler)
|
93
|
-
else:
|
94
|
-
return -1
|
95
|
-
|
96
|
-
def run(self):
|
97
|
-
""" optionally go in daemon mode and
|
98
|
-
do what concrete class has to do and pauses for delay between runs
|
99
|
-
If self.delay is negative, do a pause before starting
|
100
|
-
"""
|
101
|
-
if self._daemonize() == -1:
|
102
|
-
return
|
103
|
-
if self.delay < 0:
|
104
|
-
self.delay = -self.delay
|
105
|
-
time.sleep(self.delay)
|
106
|
-
while 1:
|
107
|
-
try:
|
108
|
-
self._run()
|
109
|
-
except Exception, ex:
|
110
|
-
# display for info, sleep, and hope the problem will be solved
|
111
|
-
# later.
|
112
|
-
self.config.exception('Internal error: %s', ex)
|
113
|
-
if not self._alive:
|
114
|
-
break
|
115
|
-
try:
|
116
|
-
self._sleeping = 1
|
117
|
-
time.sleep(self.delay)
|
118
|
-
self._sleeping = 0
|
119
|
-
except SystemExit:
|
120
|
-
break
|
121
|
-
self.config.info('%s instance exited', self.name)
|
122
|
-
# remove pid file
|
123
|
-
os.remove(self._pid_file)
|
124
|
-
|
125
|
-
def signal_handler(self, sig_num, stack_frame):
|
126
|
-
if sig_num == signal.SIGTERM:
|
127
|
-
if self._sleeping:
|
128
|
-
# we are sleeping so we can exit without fear
|
129
|
-
self.config.debug('exit on SIGTERM')
|
130
|
-
sys.exit(0)
|
131
|
-
else:
|
132
|
-
self.config.debug('exit on SIGTERM (on next turn)')
|
133
|
-
self._alive = 0
|
134
|
-
elif sig_num == signal.SIGHUP:
|
135
|
-
self.config.info('reloading configuration on SIGHUP')
|
136
|
-
reload(self.config)
|
137
|
-
|
138
|
-
def _run(self):
|
139
|
-
"""should be overridden in the mixed class"""
|
140
|
-
raise NotImplementedError()
|
141
|
-
|
142
|
-
|
143
|
-
import logging
|
144
|
-
from logilab.common.logging_ext import set_log_methods
|
145
|
-
set_log_methods(DaemonMixIn, logging.getLogger('lgc.daemon'))
|
146
|
-
|
147
|
-
## command line utilities ######################################################
|
148
|
-
|
149
|
-
L_OPTIONS = ["help", "log=", "delay=", 'no-detach']
|
150
|
-
S_OPTIONS = 'hl:d:n'
|
151
|
-
|
152
|
-
def print_help(modconfig):
|
153
|
-
print """ --help or -h
|
154
|
-
displays this message
|
155
|
-
--log <log_level>
|
156
|
-
log treshold (7 record everything, 0 record only emergency.)
|
157
|
-
Defaults to %s
|
158
|
-
--delay <delay>
|
159
|
-
the number of seconds between two runs.
|
160
|
-
Defaults to %s""" % (modconfig.LOG_TRESHOLD, modconfig.DELAY)
|
161
|
-
|
162
|
-
def handle_option(modconfig, opt_name, opt_value, help_meth):
|
163
|
-
if opt_name in ('-h','--help'):
|
164
|
-
help_meth()
|
165
|
-
sys.exit(0)
|
166
|
-
elif opt_name in ('-l','--log'):
|
167
|
-
modconfig.LOG_TRESHOLD = int(opt_value)
|
168
|
-
elif opt_name in ('-d', '--delay'):
|
169
|
-
modconfig.DELAY = int(opt_value)
|
170
|
-
elif opt_name in ('-n', '--no-detach'):
|
171
|
-
modconfig.NODETACH = 1
|
data/tools/common/common/date.py
DELETED
@@ -1,279 +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
|
-
"""Date manipulation helper functions.
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
"""
|
24
|
-
__docformat__ = "restructuredtext en"
|
25
|
-
|
26
|
-
import math
|
27
|
-
from locale import getpreferredencoding
|
28
|
-
from datetime import date, time, datetime, timedelta
|
29
|
-
from time import strptime as time_strptime
|
30
|
-
from calendar import monthrange, timegm
|
31
|
-
|
32
|
-
try:
|
33
|
-
from mx.DateTime import RelativeDateTime, Date, DateTimeType
|
34
|
-
except ImportError:
|
35
|
-
from warnings import warn
|
36
|
-
warn("mxDateTime not found, endOfMonth won't be available")
|
37
|
-
endOfMonth = None
|
38
|
-
DateTimeType = datetime
|
39
|
-
else:
|
40
|
-
endOfMonth = RelativeDateTime(months=1, day=-1)
|
41
|
-
|
42
|
-
# NOTE: should we implement a compatibility layer between date representations
|
43
|
-
# as we have in lgc.db ?
|
44
|
-
|
45
|
-
FRENCH_FIXED_HOLIDAYS = {
|
46
|
-
'jour_an' : '%s-01-01',
|
47
|
-
'fete_travail' : '%s-05-01',
|
48
|
-
'armistice1945' : '%s-05-08',
|
49
|
-
'fete_nat' : '%s-07-14',
|
50
|
-
'assomption' : '%s-08-15',
|
51
|
-
'toussaint' : '%s-11-01',
|
52
|
-
'armistice1918' : '%s-11-11',
|
53
|
-
'noel' : '%s-12-25',
|
54
|
-
}
|
55
|
-
|
56
|
-
FRENCH_MOBILE_HOLIDAYS = {
|
57
|
-
'paques2004' : '2004-04-12',
|
58
|
-
'ascension2004' : '2004-05-20',
|
59
|
-
'pentecote2004' : '2004-05-31',
|
60
|
-
|
61
|
-
'paques2005' : '2005-03-28',
|
62
|
-
'ascension2005' : '2005-05-05',
|
63
|
-
'pentecote2005' : '2005-05-16',
|
64
|
-
|
65
|
-
'paques2006' : '2006-04-17',
|
66
|
-
'ascension2006' : '2006-05-25',
|
67
|
-
'pentecote2006' : '2006-06-05',
|
68
|
-
|
69
|
-
'paques2007' : '2007-04-09',
|
70
|
-
'ascension2007' : '2007-05-17',
|
71
|
-
'pentecote2007' : '2007-05-28',
|
72
|
-
|
73
|
-
'paques2008' : '2008-03-24',
|
74
|
-
'ascension2008' : '2008-05-01',
|
75
|
-
'pentecote2008' : '2008-05-12',
|
76
|
-
|
77
|
-
'paques2009' : '2009-04-13',
|
78
|
-
'ascension2009' : '2009-05-21',
|
79
|
-
'pentecote2009' : '2009-06-01',
|
80
|
-
|
81
|
-
'paques2010' : '2010-04-05',
|
82
|
-
'ascension2010' : '2010-05-13',
|
83
|
-
'pentecote2010' : '2010-05-24',
|
84
|
-
|
85
|
-
'paques2011' : '2011-04-25',
|
86
|
-
'ascension2011' : '2011-06-02',
|
87
|
-
'pentecote2011' : '2011-06-13',
|
88
|
-
|
89
|
-
'paques2012' : '2012-04-09',
|
90
|
-
'ascension2012' : '2012-05-17',
|
91
|
-
'pentecote2012' : '2012-05-28',
|
92
|
-
}
|
93
|
-
|
94
|
-
# XXX this implementation cries for multimethod dispatching
|
95
|
-
|
96
|
-
def get_step(dateobj, nbdays=1):
|
97
|
-
# assume date is either a python datetime or a mx.DateTime object
|
98
|
-
if isinstance(dateobj, date):
|
99
|
-
return ONEDAY * nbdays
|
100
|
-
return nbdays # mx.DateTime is ok with integers
|
101
|
-
|
102
|
-
def datefactory(year, month, day, sampledate):
|
103
|
-
# assume date is either a python datetime or a mx.DateTime object
|
104
|
-
if isinstance(sampledate, datetime):
|
105
|
-
return datetime(year, month, day)
|
106
|
-
if isinstance(sampledate, date):
|
107
|
-
return date(year, month, day)
|
108
|
-
return Date(year, month, day)
|
109
|
-
|
110
|
-
def weekday(dateobj):
|
111
|
-
# assume date is either a python datetime or a mx.DateTime object
|
112
|
-
if isinstance(dateobj, date):
|
113
|
-
return dateobj.weekday()
|
114
|
-
return dateobj.day_of_week
|
115
|
-
|
116
|
-
def str2date(datestr, sampledate):
|
117
|
-
# NOTE: datetime.strptime is not an option until we drop py2.4 compat
|
118
|
-
year, month, day = [int(chunk) for chunk in datestr.split('-')]
|
119
|
-
return datefactory(year, month, day, sampledate)
|
120
|
-
|
121
|
-
def days_between(start, end):
|
122
|
-
if isinstance(start, date):
|
123
|
-
delta = end - start
|
124
|
-
# datetime.timedelta.days is always an integer (floored)
|
125
|
-
if delta.seconds:
|
126
|
-
return delta.days + 1
|
127
|
-
return delta.days
|
128
|
-
else:
|
129
|
-
return int(math.ceil((end - start).days))
|
130
|
-
|
131
|
-
def get_national_holidays(begin, end):
|
132
|
-
"""return french national days off between begin and end"""
|
133
|
-
begin = datefactory(begin.year, begin.month, begin.day, begin)
|
134
|
-
end = datefactory(end.year, end.month, end.day, end)
|
135
|
-
holidays = [str2date(datestr, begin)
|
136
|
-
for datestr in FRENCH_MOBILE_HOLIDAYS.values()]
|
137
|
-
for year in xrange(begin.year, end.year+1):
|
138
|
-
for datestr in FRENCH_FIXED_HOLIDAYS.values():
|
139
|
-
date = str2date(datestr % year, begin)
|
140
|
-
if date not in holidays:
|
141
|
-
holidays.append(date)
|
142
|
-
return [day for day in holidays if begin <= day < end]
|
143
|
-
|
144
|
-
def add_days_worked(start, days):
|
145
|
-
"""adds date but try to only take days worked into account"""
|
146
|
-
step = get_step(start)
|
147
|
-
weeks, plus = divmod(days, 5)
|
148
|
-
end = start + ((weeks * 7) + plus) * step
|
149
|
-
if weekday(end) >= 5: # saturday or sunday
|
150
|
-
end += (2 * step)
|
151
|
-
end += len([x for x in get_national_holidays(start, end + step)
|
152
|
-
if weekday(x) < 5]) * step
|
153
|
-
if weekday(end) >= 5: # saturday or sunday
|
154
|
-
end += (2 * step)
|
155
|
-
return end
|
156
|
-
|
157
|
-
def nb_open_days(start, end):
|
158
|
-
assert start <= end
|
159
|
-
step = get_step(start)
|
160
|
-
days = days_between(start, end)
|
161
|
-
weeks, plus = divmod(days, 7)
|
162
|
-
if weekday(start) > weekday(end):
|
163
|
-
plus -= 2
|
164
|
-
elif weekday(end) == 6:
|
165
|
-
plus -= 1
|
166
|
-
open_days = weeks * 5 + plus
|
167
|
-
nb_week_holidays = len([x for x in get_national_holidays(start, end+step)
|
168
|
-
if weekday(x) < 5 and x < end])
|
169
|
-
open_days -= nb_week_holidays
|
170
|
-
if open_days < 0:
|
171
|
-
return 0
|
172
|
-
return open_days
|
173
|
-
|
174
|
-
def date_range(begin, end, incday=None, incmonth=None):
|
175
|
-
"""yields each date between begin and end
|
176
|
-
|
177
|
-
:param begin: the start date
|
178
|
-
:param end: the end date
|
179
|
-
:param incr: the step to use to iterate over dates. Default is
|
180
|
-
one day.
|
181
|
-
:param include: None (means no exclusion) or a function taking a
|
182
|
-
date as parameter, and returning True if the date
|
183
|
-
should be included.
|
184
|
-
|
185
|
-
When using mx datetime, you should *NOT* use incmonth argument, use instead
|
186
|
-
oneDay, oneHour, oneMinute, oneSecond, oneWeek or endOfMonth (to enumerate
|
187
|
-
months) as `incday` argument
|
188
|
-
"""
|
189
|
-
assert not (incday and incmonth)
|
190
|
-
begin = todate(begin)
|
191
|
-
end = todate(end)
|
192
|
-
if incmonth:
|
193
|
-
while begin < end:
|
194
|
-
begin = next_month(begin, incmonth)
|
195
|
-
yield begin
|
196
|
-
else:
|
197
|
-
incr = get_step(begin, incday or 1)
|
198
|
-
while begin < end:
|
199
|
-
yield begin
|
200
|
-
begin += incr
|
201
|
-
|
202
|
-
# makes py datetime usable #####################################################
|
203
|
-
|
204
|
-
ONEDAY = timedelta(days=1)
|
205
|
-
ONEWEEK = timedelta(days=7)
|
206
|
-
|
207
|
-
try:
|
208
|
-
strptime = datetime.strptime
|
209
|
-
except AttributeError: # py < 2.5
|
210
|
-
from time import strptime as time_strptime
|
211
|
-
def strptime(value, format):
|
212
|
-
return datetime(*time_strptime(value, format)[:6])
|
213
|
-
|
214
|
-
def strptime_time(value, format='%H:%M'):
|
215
|
-
return time(*time_strptime(value, format)[3:6])
|
216
|
-
|
217
|
-
def todate(somedate):
|
218
|
-
"""return a date from a date (leaving unchanged) or a datetime"""
|
219
|
-
if isinstance(somedate, datetime):
|
220
|
-
return date(somedate.year, somedate.month, somedate.day)
|
221
|
-
assert isinstance(somedate, (date, DateTimeType)), repr(somedate)
|
222
|
-
return somedate
|
223
|
-
|
224
|
-
def totime(somedate):
|
225
|
-
"""return a time from a time (leaving unchanged), date or datetime"""
|
226
|
-
# XXX mx compat
|
227
|
-
if not isinstance(somedate, time):
|
228
|
-
return time(somedate.hour, somedate.minute, somedate.second)
|
229
|
-
assert isinstance(somedate, (time)), repr(somedate)
|
230
|
-
return somedate
|
231
|
-
|
232
|
-
def todatetime(somedate):
|
233
|
-
"""return a date from a date (leaving unchanged) or a datetime"""
|
234
|
-
# take care, datetime is a subclass of date
|
235
|
-
if isinstance(somedate, datetime):
|
236
|
-
return somedate
|
237
|
-
assert isinstance(somedate, (date, DateTimeType)), repr(somedate)
|
238
|
-
return datetime(somedate.year, somedate.month, somedate.day)
|
239
|
-
|
240
|
-
def datetime2ticks(somedate):
|
241
|
-
return timegm(somedate.timetuple()) * 1000
|
242
|
-
|
243
|
-
def days_in_month(somedate):
|
244
|
-
return monthrange(somedate.year, somedate.month)[1]
|
245
|
-
|
246
|
-
def days_in_year(somedate):
|
247
|
-
feb = date(somedate.year, 2, 1)
|
248
|
-
if days_in_month(feb) == 29:
|
249
|
-
return 366
|
250
|
-
else:
|
251
|
-
return 365
|
252
|
-
|
253
|
-
def previous_month(somedate, nbmonth=1):
|
254
|
-
while nbmonth:
|
255
|
-
somedate = first_day(somedate) - ONEDAY
|
256
|
-
nbmonth -= 1
|
257
|
-
return somedate
|
258
|
-
|
259
|
-
def next_month(somedate, nbmonth=1):
|
260
|
-
while nbmonth:
|
261
|
-
somedate = last_day(somedate) + ONEDAY
|
262
|
-
nbmonth -= 1
|
263
|
-
return somedate
|
264
|
-
|
265
|
-
def first_day(somedate):
|
266
|
-
return date(somedate.year, somedate.month, 1)
|
267
|
-
|
268
|
-
def last_day(somedate):
|
269
|
-
return date(somedate.year, somedate.month, days_in_month(somedate))
|
270
|
-
|
271
|
-
def ustrftime(somedate, fmt='%Y-%m-%d'):
|
272
|
-
"""like strftime, but returns a unicode string instead of an encoded
|
273
|
-
string which' may be problematic with localized date.
|
274
|
-
|
275
|
-
encoding is guessed by locale.getpreferredencoding()
|
276
|
-
"""
|
277
|
-
# date format may depend on the locale
|
278
|
-
encoding = getpreferredencoding(do_setlocale=False) or 'UTF-8'
|
279
|
-
return unicode(somedate.strftime(str(fmt)), encoding)
|
data/tools/common/common/db.py
DELETED
@@ -1,49 +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
|
-
"""Wrappers to get actually replaceable DBAPI2 compliant modules and
|
19
|
-
database connection whatever the database and client lib used.
|
20
|
-
|
21
|
-
Currently support:
|
22
|
-
|
23
|
-
- postgresql (pgdb, psycopg, psycopg2, pyPgSQL)
|
24
|
-
- mysql (MySQLdb)
|
25
|
-
- sqlite (pysqlite2, sqlite, sqlite3)
|
26
|
-
|
27
|
-
just use the `get_connection` function from this module to get a
|
28
|
-
wrapped connection. If multiple drivers for a database are available,
|
29
|
-
you can control which one you want to use using the
|
30
|
-
`set_prefered_driver` function.
|
31
|
-
|
32
|
-
Additional helpers are also provided for advanced functionalities such
|
33
|
-
as listing existing users or databases, creating database... Get the
|
34
|
-
helper for your database using the `get_adv_func_helper` function.
|
35
|
-
"""
|
36
|
-
__docformat__ = "restructuredtext en"
|
37
|
-
|
38
|
-
from warnings import warn
|
39
|
-
warn('this module is deprecated, use logilab.database instead',
|
40
|
-
DeprecationWarning, stacklevel=1)
|
41
|
-
|
42
|
-
from logilab.database import (get_connection, set_prefered_driver,
|
43
|
-
get_dbapi_compliant_module as _gdcm,
|
44
|
-
get_db_helper as _gdh)
|
45
|
-
|
46
|
-
def get_dbapi_compliant_module(driver, *args, **kwargs):
|
47
|
-
module = _gdcm(driver, *args, **kwargs)
|
48
|
-
module.adv_func_helper = _gdh(driver)
|
49
|
-
return module
|