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.
Files changed (488) hide show
  1. data/{build/README → README} +1 -1
  2. data/egg/egg/build.yml +11 -49
  3. data/egg/egg.yml +19 -27
  4. data/egg/http/build.erb +32 -36
  5. data/egg/http/libhttp.py +102 -0
  6. data/egg/http/pylint.cfg +236 -0
  7. data/egg/http/server.py +7 -0
  8. data/egg/http/test.erb +32 -0
  9. data/egg/http.yml +33 -29
  10. data/egg/mysql/mysql.py +8 -9
  11. data/egg/project/build.erb +21 -53
  12. data/egg/project/pylint.cfg +236 -0
  13. data/egg/project/test.py +2 -2
  14. data/egg/project.yml +23 -31
  15. data/egg/script/build.erb +18 -23
  16. data/egg/script/pylint.cfg +236 -0
  17. data/egg/script.yml +22 -18
  18. data/egg/source/source.py +6 -6
  19. data/egg/test/test.py +1 -1
  20. data/lib/bee_task_python.rb +3 -34
  21. data/python.yml +123 -0
  22. metadata +61 -503
  23. data/test/build.yml +0 -16
  24. data/test/tc_bee_task_python.rb +0 -27
  25. data/test/test_build.rb +0 -26
  26. data/test/test_build_listener.rb +0 -110
  27. data/test/ts_bee_python.rb +0 -26
  28. data/tools/common/__init__.py +0 -5
  29. data/tools/common/common/__init__.py +0 -140
  30. data/tools/common/common/__pkginfo__.py +0 -43
  31. data/tools/common/common/adbh.py +0 -35
  32. data/tools/common/common/cache.py +0 -114
  33. data/tools/common/common/changelog.py +0 -234
  34. data/tools/common/common/clcommands.py +0 -181
  35. data/tools/common/common/cli.py +0 -212
  36. data/tools/common/common/compat.py +0 -328
  37. data/tools/common/common/configuration.py +0 -1087
  38. data/tools/common/common/contexts.py +0 -58
  39. data/tools/common/common/corbautils.py +0 -117
  40. data/tools/common/common/daemon.py +0 -171
  41. data/tools/common/common/date.py +0 -279
  42. data/tools/common/common/db.py +0 -49
  43. data/tools/common/common/dbf.py +0 -229
  44. data/tools/common/common/debugger.py +0 -208
  45. data/tools/common/common/decorators.py +0 -190
  46. data/tools/common/common/deprecation.py +0 -118
  47. data/tools/common/common/fileutils.py +0 -409
  48. data/tools/common/common/graph.py +0 -259
  49. data/tools/common/common/html.py +0 -142
  50. data/tools/common/common/interface.py +0 -76
  51. data/tools/common/common/logging_ext.py +0 -166
  52. data/tools/common/common/modutils.py +0 -670
  53. data/tools/common/common/optik_ext.py +0 -383
  54. data/tools/common/common/optparser.py +0 -92
  55. data/tools/common/common/pdf_ext.py +0 -111
  56. data/tools/common/common/proc.py +0 -276
  57. data/tools/common/common/pyro_ext.py +0 -146
  58. data/tools/common/common/pytest.py +0 -754
  59. data/tools/common/common/shellutils.py +0 -383
  60. data/tools/common/common/sphinx_ext.py +0 -87
  61. data/tools/common/common/sphinxutils.py +0 -122
  62. data/tools/common/common/sqlgen.py +0 -31
  63. data/tools/common/common/table.py +0 -930
  64. data/tools/common/common/tasksqueue.py +0 -97
  65. data/tools/common/common/test/__init__.py +0 -1
  66. data/tools/common/common/test/data/ChangeLog +0 -184
  67. data/tools/common/common/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
  68. data/tools/common/common/test/data/__init__.py +0 -1
  69. data/tools/common/common/test/data/content_differ_dir/NOTHING +0 -0
  70. data/tools/common/common/test/data/content_differ_dir/README +0 -1
  71. data/tools/common/common/test/data/content_differ_dir/subdir/coin +0 -1
  72. data/tools/common/common/test/data/content_differ_dir/subdir/toto.txt +0 -53
  73. data/tools/common/common/test/data/file_differ_dir/NOTHING +0 -0
  74. data/tools/common/common/test/data/file_differ_dir/README +0 -1
  75. data/tools/common/common/test/data/file_differ_dir/subdir/toto.txt +0 -53
  76. data/tools/common/common/test/data/file_differ_dir/subdirtwo/Hello +0 -0
  77. data/tools/common/common/test/data/find_test/__init__.py +0 -0
  78. data/tools/common/common/test/data/find_test/foo.txt +0 -0
  79. data/tools/common/common/test/data/find_test/module.py +0 -0
  80. data/tools/common/common/test/data/find_test/module2.py +0 -0
  81. data/tools/common/common/test/data/find_test/newlines.txt +0 -0
  82. data/tools/common/common/test/data/find_test/noendingnewline.py +0 -0
  83. data/tools/common/common/test/data/find_test/nonregr.py +0 -0
  84. data/tools/common/common/test/data/find_test/normal_file.txt +0 -0
  85. data/tools/common/common/test/data/find_test/spam.txt +0 -0
  86. data/tools/common/common/test/data/find_test/sub/doc.txt +0 -0
  87. data/tools/common/common/test/data/find_test/sub/momo.py +0 -0
  88. data/tools/common/common/test/data/find_test/test.ini +0 -0
  89. data/tools/common/common/test/data/find_test/test1.msg +0 -0
  90. data/tools/common/common/test/data/find_test/test2.msg +0 -0
  91. data/tools/common/common/test/data/find_test/write_protected_file.txt +0 -0
  92. data/tools/common/common/test/data/foo.txt +0 -9
  93. data/tools/common/common/test/data/module.py +0 -88
  94. data/tools/common/common/test/data/module2.py +0 -77
  95. data/tools/common/common/test/data/newlines.txt +0 -3
  96. data/tools/common/common/test/data/noendingnewline.py +0 -36
  97. data/tools/common/common/test/data/nonregr.py +0 -14
  98. data/tools/common/common/test/data/normal_file.txt +0 -0
  99. data/tools/common/common/test/data/reference_dir/NOTHING +0 -0
  100. data/tools/common/common/test/data/reference_dir/README +0 -1
  101. data/tools/common/common/test/data/reference_dir/subdir/coin +0 -1
  102. data/tools/common/common/test/data/reference_dir/subdir/toto.txt +0 -53
  103. data/tools/common/common/test/data/same_dir/NOTHING +0 -0
  104. data/tools/common/common/test/data/same_dir/README +0 -1
  105. data/tools/common/common/test/data/same_dir/subdir/coin +0 -1
  106. data/tools/common/common/test/data/same_dir/subdir/toto.txt +0 -53
  107. data/tools/common/common/test/data/spam.txt +0 -9
  108. data/tools/common/common/test/data/sub/doc.txt +0 -1
  109. data/tools/common/common/test/data/sub/momo.py +0 -1
  110. data/tools/common/common/test/data/subdir_differ_dir/NOTHING +0 -0
  111. data/tools/common/common/test/data/subdir_differ_dir/README +0 -1
  112. data/tools/common/common/test/data/subdir_differ_dir/subdir/coin +0 -1
  113. data/tools/common/common/test/data/subdir_differ_dir/subdir/toto.txt +0 -53
  114. data/tools/common/common/test/data/test.ini +0 -20
  115. data/tools/common/common/test/data/test1.msg +0 -30
  116. data/tools/common/common/test/data/test2.msg +0 -42
  117. data/tools/common/common/test/data/write_protected_file.txt +0 -0
  118. data/tools/common/common/test/foomod.py +0 -17
  119. data/tools/common/common/test/unittest_cache.py +0 -129
  120. data/tools/common/common/test/unittest_changelog.py +0 -37
  121. data/tools/common/common/test/unittest_compat.py +0 -239
  122. data/tools/common/common/test/unittest_configuration.py +0 -348
  123. data/tools/common/common/test/unittest_date.py +0 -154
  124. data/tools/common/common/test/unittest_decorators.py +0 -62
  125. data/tools/common/common/test/unittest_deprecation.py +0 -76
  126. data/tools/common/common/test/unittest_fileutils.py +0 -133
  127. data/tools/common/common/test/unittest_graph.py +0 -50
  128. data/tools/common/common/test/unittest_html.py +0 -76
  129. data/tools/common/common/test/unittest_interface.py +0 -87
  130. data/tools/common/common/test/unittest_modutils.py +0 -244
  131. data/tools/common/common/test/unittest_pytest.py +0 -50
  132. data/tools/common/common/test/unittest_shellutils.py +0 -248
  133. data/tools/common/common/test/unittest_table.py +0 -448
  134. data/tools/common/common/test/unittest_taskqueue.py +0 -71
  135. data/tools/common/common/test/unittest_testlib.py +0 -956
  136. data/tools/common/common/test/unittest_textutils.py +0 -247
  137. data/tools/common/common/test/unittest_tree.py +0 -248
  138. data/tools/common/common/test/unittest_umessage.py +0 -55
  139. data/tools/common/common/test/unittest_ureports_html.py +0 -64
  140. data/tools/common/common/test/unittest_ureports_text.py +0 -105
  141. data/tools/common/common/test/unittest_xmlutils.py +0 -75
  142. data/tools/common/common/test/utils.py +0 -87
  143. data/tools/common/common/testlib.py +0 -1927
  144. data/tools/common/common/textutils.py +0 -476
  145. data/tools/common/common/tree.py +0 -372
  146. data/tools/common/common/umessage.py +0 -161
  147. data/tools/common/common/ureports/__init__.py +0 -174
  148. data/tools/common/common/ureports/docbook_writer.py +0 -139
  149. data/tools/common/common/ureports/html_writer.py +0 -131
  150. data/tools/common/common/ureports/nodes.py +0 -201
  151. data/tools/common/common/ureports/text_writer.py +0 -140
  152. data/tools/common/common/vcgutils.py +0 -216
  153. data/tools/common/common/visitor.py +0 -107
  154. data/tools/common/common/xmlrpcutils.py +0 -136
  155. data/tools/common/common/xmlutils.py +0 -61
  156. data/tools/coverage/coverage.py +0 -602
  157. data/tools/epydoc/__init__.py +0 -227
  158. data/tools/epydoc/__init__.pyc +0 -0
  159. data/tools/epydoc/apidoc.py +0 -2203
  160. data/tools/epydoc/apidoc.pyc +0 -0
  161. data/tools/epydoc/checker.py +0 -349
  162. data/tools/epydoc/checker.pyc +0 -0
  163. data/tools/epydoc/cli.py +0 -1470
  164. data/tools/epydoc/cli.pyc +0 -0
  165. data/tools/epydoc/compat.py +0 -250
  166. data/tools/epydoc/compat.pyc +0 -0
  167. data/tools/epydoc/docbuilder.py +0 -1358
  168. data/tools/epydoc/docbuilder.pyc +0 -0
  169. data/tools/epydoc/docintrospecter.py +0 -1056
  170. data/tools/epydoc/docintrospecter.pyc +0 -0
  171. data/tools/epydoc/docparser.py +0 -2113
  172. data/tools/epydoc/docparser.pyc +0 -0
  173. data/tools/epydoc/docstringparser.py +0 -1111
  174. data/tools/epydoc/docstringparser.pyc +0 -0
  175. data/tools/epydoc/docwriter/__init__.py +0 -12
  176. data/tools/epydoc/docwriter/__init__.pyc +0 -0
  177. data/tools/epydoc/docwriter/dotgraph.py +0 -1351
  178. data/tools/epydoc/docwriter/dotgraph.pyc +0 -0
  179. data/tools/epydoc/docwriter/html.py +0 -3491
  180. data/tools/epydoc/docwriter/html.pyc +0 -0
  181. data/tools/epydoc/docwriter/html_colorize.py +0 -909
  182. data/tools/epydoc/docwriter/html_colorize.pyc +0 -0
  183. data/tools/epydoc/docwriter/html_css.py +0 -550
  184. data/tools/epydoc/docwriter/html_css.pyc +0 -0
  185. data/tools/epydoc/docwriter/html_help.py +0 -190
  186. data/tools/epydoc/docwriter/html_help.pyc +0 -0
  187. data/tools/epydoc/docwriter/latex.py +0 -1187
  188. data/tools/epydoc/docwriter/latex.pyc +0 -0
  189. data/tools/epydoc/docwriter/plaintext.py +0 -276
  190. data/tools/epydoc/docwriter/plaintext.pyc +0 -0
  191. data/tools/epydoc/docwriter/xlink.py +0 -505
  192. data/tools/epydoc/docwriter/xlink.pyc +0 -0
  193. data/tools/epydoc/gui.py +0 -1148
  194. data/tools/epydoc/gui.pyc +0 -0
  195. data/tools/epydoc/log.py +0 -204
  196. data/tools/epydoc/log.pyc +0 -0
  197. data/tools/epydoc/markup/__init__.py +0 -623
  198. data/tools/epydoc/markup/__init__.pyc +0 -0
  199. data/tools/epydoc/markup/doctest.py +0 -311
  200. data/tools/epydoc/markup/doctest.pyc +0 -0
  201. data/tools/epydoc/markup/epytext.py +0 -2116
  202. data/tools/epydoc/markup/epytext.pyc +0 -0
  203. data/tools/epydoc/markup/javadoc.py +0 -250
  204. data/tools/epydoc/markup/javadoc.pyc +0 -0
  205. data/tools/epydoc/markup/plaintext.py +0 -78
  206. data/tools/epydoc/markup/plaintext.pyc +0 -0
  207. data/tools/epydoc/markup/pyval_repr.py +0 -532
  208. data/tools/epydoc/markup/pyval_repr.pyc +0 -0
  209. data/tools/epydoc/markup/restructuredtext.py +0 -906
  210. data/tools/epydoc/markup/restructuredtext.pyc +0 -0
  211. data/tools/epydoc/test/__init__.py +0 -97
  212. data/tools/epydoc/test/__init__.pyc +0 -0
  213. data/tools/epydoc/test/util.py +0 -226
  214. data/tools/epydoc/test/util.pyc +0 -0
  215. data/tools/epydoc/util.py +0 -289
  216. data/tools/epydoc/util.pyc +0 -0
  217. data/tools/logilab/logilab/__init__.py +0 -5
  218. data/tools/logilab/logilab/astng/__init__.py +0 -82
  219. data/tools/logilab/logilab/astng/__pkginfo__.py +0 -76
  220. data/tools/logilab/logilab/astng/_exceptions.py +0 -64
  221. data/tools/logilab/logilab/astng/_nodes_ast.py +0 -667
  222. data/tools/logilab/logilab/astng/_nodes_compiler.py +0 -758
  223. data/tools/logilab/logilab/astng/bases.py +0 -608
  224. data/tools/logilab/logilab/astng/builder.py +0 -239
  225. data/tools/logilab/logilab/astng/inference.py +0 -426
  226. data/tools/logilab/logilab/astng/inspector.py +0 -289
  227. data/tools/logilab/logilab/astng/manager.py +0 -421
  228. data/tools/logilab/logilab/astng/mixins.py +0 -165
  229. data/tools/logilab/logilab/astng/node_classes.py +0 -848
  230. data/tools/logilab/logilab/astng/nodes.py +0 -85
  231. data/tools/logilab/logilab/astng/nodes_as_string.py +0 -389
  232. data/tools/logilab/logilab/astng/patchcomptransformer.py +0 -159
  233. data/tools/logilab/logilab/astng/protocols.py +0 -333
  234. data/tools/logilab/logilab/astng/raw_building.py +0 -212
  235. data/tools/logilab/logilab/astng/rebuilder.py +0 -307
  236. data/tools/logilab/logilab/astng/scoped_nodes.py +0 -951
  237. data/tools/logilab/logilab/astng/test/__init__.py +0 -19
  238. data/tools/logilab/logilab/astng/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
  239. data/tools/logilab/logilab/astng/test/data/MyPyPa-0.1.0-py2.5.zip +0 -0
  240. data/tools/logilab/logilab/astng/test/data/SSL1/Connection1.py +0 -33
  241. data/tools/logilab/logilab/astng/test/data/SSL1/__init__.py +0 -20
  242. data/tools/logilab/logilab/astng/test/data/__init__.py +0 -20
  243. data/tools/logilab/logilab/astng/test/data/all.py +0 -29
  244. data/tools/logilab/logilab/astng/test/data/appl/__init__.py +0 -23
  245. data/tools/logilab/logilab/astng/test/data/appl/myConnection.py +0 -30
  246. data/tools/logilab/logilab/astng/test/data/format.py +0 -34
  247. data/tools/logilab/logilab/astng/test/data/module.py +0 -90
  248. data/tools/logilab/logilab/astng/test/data/module2.py +0 -112
  249. data/tools/logilab/logilab/astng/test/data/noendingnewline.py +0 -57
  250. data/tools/logilab/logilab/astng/test/data/nonregr.py +0 -76
  251. data/tools/logilab/logilab/astng/test/data/notall.py +0 -28
  252. data/tools/logilab/logilab/astng/test/data2/__init__.py +0 -20
  253. data/tools/logilab/logilab/astng/test/data2/clientmodule_test.py +0 -51
  254. data/tools/logilab/logilab/astng/test/data2/suppliermodule_test.py +0 -32
  255. data/tools/logilab/logilab/astng/test/regrtest.py +0 -135
  256. data/tools/logilab/logilab/astng/test/regrtest_data/absimport.py +0 -22
  257. data/tools/logilab/logilab/astng/test/regrtest_data/descriptor_crash.py +0 -31
  258. data/tools/logilab/logilab/astng/test/regrtest_data/import_package_subpackage_module.py +0 -68
  259. data/tools/logilab/logilab/astng/test/regrtest_data/package/__init__.py +0 -24
  260. data/tools/logilab/logilab/astng/test/regrtest_data/package/subpackage/__init__.py +0 -20
  261. data/tools/logilab/logilab/astng/test/regrtest_data/package/subpackage/module.py +0 -20
  262. data/tools/logilab/logilab/astng/test/unittest_builder.py +0 -684
  263. data/tools/logilab/logilab/astng/test/unittest_inference.py +0 -1112
  264. data/tools/logilab/logilab/astng/test/unittest_inspector.py +0 -105
  265. data/tools/logilab/logilab/astng/test/unittest_lookup.py +0 -302
  266. data/tools/logilab/logilab/astng/test/unittest_manager.py +0 -98
  267. data/tools/logilab/logilab/astng/test/unittest_nodes.py +0 -302
  268. data/tools/logilab/logilab/astng/test/unittest_scoped_nodes.py +0 -501
  269. data/tools/logilab/logilab/astng/test/unittest_utils.py +0 -104
  270. data/tools/logilab/logilab/astng/utils.py +0 -342
  271. data/tools/logilab/logilab/common/__init__.py +0 -140
  272. data/tools/logilab/logilab/common/__pkginfo__.py +0 -43
  273. data/tools/logilab/logilab/common/adbh.py +0 -35
  274. data/tools/logilab/logilab/common/cache.py +0 -114
  275. data/tools/logilab/logilab/common/changelog.py +0 -234
  276. data/tools/logilab/logilab/common/clcommands.py +0 -181
  277. data/tools/logilab/logilab/common/cli.py +0 -212
  278. data/tools/logilab/logilab/common/compat.py +0 -328
  279. data/tools/logilab/logilab/common/configuration.py +0 -1087
  280. data/tools/logilab/logilab/common/contexts.py +0 -58
  281. data/tools/logilab/logilab/common/corbautils.py +0 -117
  282. data/tools/logilab/logilab/common/daemon.py +0 -171
  283. data/tools/logilab/logilab/common/date.py +0 -279
  284. data/tools/logilab/logilab/common/db.py +0 -49
  285. data/tools/logilab/logilab/common/dbf.py +0 -229
  286. data/tools/logilab/logilab/common/debugger.py +0 -208
  287. data/tools/logilab/logilab/common/decorators.py +0 -190
  288. data/tools/logilab/logilab/common/deprecation.py +0 -118
  289. data/tools/logilab/logilab/common/fileutils.py +0 -409
  290. data/tools/logilab/logilab/common/graph.py +0 -259
  291. data/tools/logilab/logilab/common/html.py +0 -142
  292. data/tools/logilab/logilab/common/interface.py +0 -76
  293. data/tools/logilab/logilab/common/logging_ext.py +0 -166
  294. data/tools/logilab/logilab/common/modutils.py +0 -670
  295. data/tools/logilab/logilab/common/optik_ext.py +0 -383
  296. data/tools/logilab/logilab/common/optparser.py +0 -92
  297. data/tools/logilab/logilab/common/pdf_ext.py +0 -111
  298. data/tools/logilab/logilab/common/proc.py +0 -276
  299. data/tools/logilab/logilab/common/pyro_ext.py +0 -146
  300. data/tools/logilab/logilab/common/pytest.py +0 -754
  301. data/tools/logilab/logilab/common/shellutils.py +0 -383
  302. data/tools/logilab/logilab/common/sphinx_ext.py +0 -87
  303. data/tools/logilab/logilab/common/sphinxutils.py +0 -122
  304. data/tools/logilab/logilab/common/sqlgen.py +0 -31
  305. data/tools/logilab/logilab/common/table.py +0 -930
  306. data/tools/logilab/logilab/common/tasksqueue.py +0 -97
  307. data/tools/logilab/logilab/common/test/__init__.py +0 -1
  308. data/tools/logilab/logilab/common/test/data/ChangeLog +0 -184
  309. data/tools/logilab/logilab/common/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
  310. data/tools/logilab/logilab/common/test/data/__init__.py +0 -1
  311. data/tools/logilab/logilab/common/test/data/content_differ_dir/NOTHING +0 -0
  312. data/tools/logilab/logilab/common/test/data/content_differ_dir/README +0 -1
  313. data/tools/logilab/logilab/common/test/data/content_differ_dir/subdir/coin +0 -1
  314. data/tools/logilab/logilab/common/test/data/content_differ_dir/subdir/toto.txt +0 -53
  315. data/tools/logilab/logilab/common/test/data/file_differ_dir/NOTHING +0 -0
  316. data/tools/logilab/logilab/common/test/data/file_differ_dir/README +0 -1
  317. data/tools/logilab/logilab/common/test/data/file_differ_dir/subdir/toto.txt +0 -53
  318. data/tools/logilab/logilab/common/test/data/file_differ_dir/subdirtwo/Hello +0 -0
  319. data/tools/logilab/logilab/common/test/data/find_test/__init__.py +0 -0
  320. data/tools/logilab/logilab/common/test/data/find_test/foo.txt +0 -0
  321. data/tools/logilab/logilab/common/test/data/find_test/module.py +0 -0
  322. data/tools/logilab/logilab/common/test/data/find_test/module2.py +0 -0
  323. data/tools/logilab/logilab/common/test/data/find_test/newlines.txt +0 -0
  324. data/tools/logilab/logilab/common/test/data/find_test/noendingnewline.py +0 -0
  325. data/tools/logilab/logilab/common/test/data/find_test/nonregr.py +0 -0
  326. data/tools/logilab/logilab/common/test/data/find_test/normal_file.txt +0 -0
  327. data/tools/logilab/logilab/common/test/data/find_test/spam.txt +0 -0
  328. data/tools/logilab/logilab/common/test/data/find_test/sub/doc.txt +0 -0
  329. data/tools/logilab/logilab/common/test/data/find_test/sub/momo.py +0 -0
  330. data/tools/logilab/logilab/common/test/data/find_test/test.ini +0 -0
  331. data/tools/logilab/logilab/common/test/data/find_test/test1.msg +0 -0
  332. data/tools/logilab/logilab/common/test/data/find_test/test2.msg +0 -0
  333. data/tools/logilab/logilab/common/test/data/find_test/write_protected_file.txt +0 -0
  334. data/tools/logilab/logilab/common/test/data/foo.txt +0 -9
  335. data/tools/logilab/logilab/common/test/data/module.py +0 -88
  336. data/tools/logilab/logilab/common/test/data/module2.py +0 -77
  337. data/tools/logilab/logilab/common/test/data/newlines.txt +0 -3
  338. data/tools/logilab/logilab/common/test/data/noendingnewline.py +0 -36
  339. data/tools/logilab/logilab/common/test/data/nonregr.py +0 -14
  340. data/tools/logilab/logilab/common/test/data/normal_file.txt +0 -0
  341. data/tools/logilab/logilab/common/test/data/reference_dir/NOTHING +0 -0
  342. data/tools/logilab/logilab/common/test/data/reference_dir/README +0 -1
  343. data/tools/logilab/logilab/common/test/data/reference_dir/subdir/coin +0 -1
  344. data/tools/logilab/logilab/common/test/data/reference_dir/subdir/toto.txt +0 -53
  345. data/tools/logilab/logilab/common/test/data/same_dir/NOTHING +0 -0
  346. data/tools/logilab/logilab/common/test/data/same_dir/README +0 -1
  347. data/tools/logilab/logilab/common/test/data/same_dir/subdir/coin +0 -1
  348. data/tools/logilab/logilab/common/test/data/same_dir/subdir/toto.txt +0 -53
  349. data/tools/logilab/logilab/common/test/data/spam.txt +0 -9
  350. data/tools/logilab/logilab/common/test/data/sub/doc.txt +0 -1
  351. data/tools/logilab/logilab/common/test/data/sub/momo.py +0 -1
  352. data/tools/logilab/logilab/common/test/data/subdir_differ_dir/NOTHING +0 -0
  353. data/tools/logilab/logilab/common/test/data/subdir_differ_dir/README +0 -1
  354. data/tools/logilab/logilab/common/test/data/subdir_differ_dir/subdir/coin +0 -1
  355. data/tools/logilab/logilab/common/test/data/subdir_differ_dir/subdir/toto.txt +0 -53
  356. data/tools/logilab/logilab/common/test/data/test.ini +0 -20
  357. data/tools/logilab/logilab/common/test/data/test1.msg +0 -30
  358. data/tools/logilab/logilab/common/test/data/test2.msg +0 -42
  359. data/tools/logilab/logilab/common/test/data/write_protected_file.txt +0 -0
  360. data/tools/logilab/logilab/common/test/foomod.py +0 -17
  361. data/tools/logilab/logilab/common/test/unittest_cache.py +0 -129
  362. data/tools/logilab/logilab/common/test/unittest_changelog.py +0 -37
  363. data/tools/logilab/logilab/common/test/unittest_compat.py +0 -239
  364. data/tools/logilab/logilab/common/test/unittest_configuration.py +0 -348
  365. data/tools/logilab/logilab/common/test/unittest_date.py +0 -154
  366. data/tools/logilab/logilab/common/test/unittest_decorators.py +0 -62
  367. data/tools/logilab/logilab/common/test/unittest_deprecation.py +0 -76
  368. data/tools/logilab/logilab/common/test/unittest_fileutils.py +0 -133
  369. data/tools/logilab/logilab/common/test/unittest_graph.py +0 -50
  370. data/tools/logilab/logilab/common/test/unittest_html.py +0 -76
  371. data/tools/logilab/logilab/common/test/unittest_interface.py +0 -87
  372. data/tools/logilab/logilab/common/test/unittest_modutils.py +0 -244
  373. data/tools/logilab/logilab/common/test/unittest_pytest.py +0 -50
  374. data/tools/logilab/logilab/common/test/unittest_shellutils.py +0 -248
  375. data/tools/logilab/logilab/common/test/unittest_table.py +0 -448
  376. data/tools/logilab/logilab/common/test/unittest_taskqueue.py +0 -71
  377. data/tools/logilab/logilab/common/test/unittest_testlib.py +0 -956
  378. data/tools/logilab/logilab/common/test/unittest_textutils.py +0 -247
  379. data/tools/logilab/logilab/common/test/unittest_tree.py +0 -248
  380. data/tools/logilab/logilab/common/test/unittest_umessage.py +0 -55
  381. data/tools/logilab/logilab/common/test/unittest_ureports_html.py +0 -64
  382. data/tools/logilab/logilab/common/test/unittest_ureports_text.py +0 -105
  383. data/tools/logilab/logilab/common/test/unittest_xmlutils.py +0 -75
  384. data/tools/logilab/logilab/common/test/utils.py +0 -87
  385. data/tools/logilab/logilab/common/testlib.py +0 -1927
  386. data/tools/logilab/logilab/common/textutils.py +0 -476
  387. data/tools/logilab/logilab/common/tree.py +0 -372
  388. data/tools/logilab/logilab/common/umessage.py +0 -161
  389. data/tools/logilab/logilab/common/ureports/__init__.py +0 -174
  390. data/tools/logilab/logilab/common/ureports/docbook_writer.py +0 -139
  391. data/tools/logilab/logilab/common/ureports/html_writer.py +0 -131
  392. data/tools/logilab/logilab/common/ureports/nodes.py +0 -201
  393. data/tools/logilab/logilab/common/ureports/text_writer.py +0 -140
  394. data/tools/logilab/logilab/common/vcgutils.py +0 -216
  395. data/tools/logilab/logilab/common/visitor.py +0 -107
  396. data/tools/logilab/logilab/common/xmlrpcutils.py +0 -136
  397. data/tools/logilab/logilab/common/xmlutils.py +0 -61
  398. data/tools/pychecker/COPYRIGHT +0 -31
  399. data/tools/pychecker/ChangeLog +0 -349
  400. data/tools/pychecker/CodeChecks.py +0 -1969
  401. data/tools/pychecker/CodeChecks.pyc +0 -0
  402. data/tools/pychecker/CodeChecks.pyo +0 -0
  403. data/tools/pychecker/Config.py +0 -475
  404. data/tools/pychecker/Config.pyc +0 -0
  405. data/tools/pychecker/Config.pyo +0 -0
  406. data/tools/pychecker/KNOWN_BUGS +0 -100
  407. data/tools/pychecker/MAINTAINERS +0 -81
  408. data/tools/pychecker/NEWS +0 -406
  409. data/tools/pychecker/OP.py +0 -131
  410. data/tools/pychecker/OP.pyc +0 -0
  411. data/tools/pychecker/OP.pyo +0 -0
  412. data/tools/pychecker/OptionTypes.py +0 -117
  413. data/tools/pychecker/OptionTypes.pyc +0 -0
  414. data/tools/pychecker/OptionTypes.pyo +0 -0
  415. data/tools/pychecker/README +0 -152
  416. data/tools/pychecker/Stack.py +0 -115
  417. data/tools/pychecker/Stack.pyc +0 -0
  418. data/tools/pychecker/Stack.pyo +0 -0
  419. data/tools/pychecker/TODO +0 -101
  420. data/tools/pychecker/VERSION +0 -1
  421. data/tools/pychecker/Warning.py +0 -50
  422. data/tools/pychecker/Warning.pyc +0 -0
  423. data/tools/pychecker/Warning.pyo +0 -0
  424. data/tools/pychecker/__init__.py +0 -17
  425. data/tools/pychecker/__init__.pyc +0 -0
  426. data/tools/pychecker/__init__.pyo +0 -0
  427. data/tools/pychecker/checker.py +0 -961
  428. data/tools/pychecker/checker.pyc +0 -0
  429. data/tools/pychecker/checker.pyo +0 -0
  430. data/tools/pychecker/function.py +0 -159
  431. data/tools/pychecker/function.pyc +0 -0
  432. data/tools/pychecker/function.pyo +0 -0
  433. data/tools/pychecker/msgs.py +0 -175
  434. data/tools/pychecker/msgs.pyc +0 -0
  435. data/tools/pychecker/msgs.pyo +0 -0
  436. data/tools/pychecker/options.py +0 -275
  437. data/tools/pychecker/options.pyc +0 -0
  438. data/tools/pychecker/options.pyo +0 -0
  439. data/tools/pychecker/pcmodules.py +0 -19
  440. data/tools/pychecker/pcmodules.pyc +0 -0
  441. data/tools/pychecker/pcmodules.pyo +0 -0
  442. data/tools/pychecker/printer.py +0 -47
  443. data/tools/pychecker/printer.pyc +0 -0
  444. data/tools/pychecker/printer.pyo +0 -0
  445. data/tools/pychecker/python.py +0 -427
  446. data/tools/pychecker/python.pyc +0 -0
  447. data/tools/pychecker/python.pyo +0 -0
  448. data/tools/pychecker/utils.py +0 -102
  449. data/tools/pychecker/utils.pyc +0 -0
  450. data/tools/pychecker/utils.pyo +0 -0
  451. data/tools/pychecker/warn.py +0 -778
  452. data/tools/pychecker/warn.pyc +0 -0
  453. data/tools/pychecker/warn.pyo +0 -0
  454. data/tools/pylint2/pylint/__init__.py +0 -16
  455. data/tools/pylint2/pylint/__pkginfo__.py +0 -67
  456. data/tools/pylint2/pylint/checkers/__init__.py +0 -155
  457. data/tools/pylint2/pylint/checkers/base.py +0 -749
  458. data/tools/pylint2/pylint/checkers/classes.py +0 -527
  459. data/tools/pylint2/pylint/checkers/design_analysis.py +0 -344
  460. data/tools/pylint2/pylint/checkers/exceptions.py +0 -183
  461. data/tools/pylint2/pylint/checkers/format.py +0 -367
  462. data/tools/pylint2/pylint/checkers/imports.py +0 -379
  463. data/tools/pylint2/pylint/checkers/logging.py +0 -98
  464. data/tools/pylint2/pylint/checkers/misc.py +0 -128
  465. data/tools/pylint2/pylint/checkers/newstyle.py +0 -107
  466. data/tools/pylint2/pylint/checkers/raw_metrics.py +0 -125
  467. data/tools/pylint2/pylint/checkers/similar.py +0 -333
  468. data/tools/pylint2/pylint/checkers/string_format.py +0 -239
  469. data/tools/pylint2/pylint/checkers/typecheck.py +0 -364
  470. data/tools/pylint2/pylint/checkers/utils.py +0 -208
  471. data/tools/pylint2/pylint/checkers/variables.py +0 -498
  472. data/tools/pylint2/pylint/config.py +0 -149
  473. data/tools/pylint2/pylint/epylint.py +0 -149
  474. data/tools/pylint2/pylint/gui.py +0 -433
  475. data/tools/pylint2/pylint/interfaces.py +0 -98
  476. data/tools/pylint2/pylint/lint.py +0 -914
  477. data/tools/pylint2/pylint/pyreverse/__init__.py +0 -5
  478. data/tools/pylint2/pylint/pyreverse/diadefslib.py +0 -229
  479. data/tools/pylint2/pylint/pyreverse/diagrams.py +0 -247
  480. data/tools/pylint2/pylint/pyreverse/main.py +0 -123
  481. data/tools/pylint2/pylint/pyreverse/utils.py +0 -131
  482. data/tools/pylint2/pylint/pyreverse/writer.py +0 -196
  483. data/tools/pylint2/pylint/reporters/__init__.py +0 -67
  484. data/tools/pylint2/pylint/reporters/guireporter.py +0 -36
  485. data/tools/pylint2/pylint/reporters/html.py +0 -69
  486. data/tools/pylint2/pylint/reporters/text.py +0 -156
  487. data/tools/pylint2/pylint/utils.py +0 -518
  488. data/tools/pylint2/pylint.py +0 -16
@@ -1,234 +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
- """Manipulation of upstream change log files.
19
-
20
- The upstream change log files format handled is simpler than the one
21
- often used such as those generated by the default Emacs changelog mode.
22
-
23
- Sample ChangeLog format::
24
-
25
- Change log for project Yoo
26
- ==========================
27
-
28
- --
29
- * add a new functionality
30
-
31
- 2002-02-01 -- 0.1.1
32
- * fix bug #435454
33
- * fix bug #434356
34
-
35
- 2002-01-01 -- 0.1
36
- * initial release
37
-
38
-
39
- There is 3 entries in this change log, one for each released version and one
40
- for the next version (i.e. the current entry).
41
- Each entry contains a set of messages corresponding to changes done in this
42
- release.
43
- All the non empty lines before the first entry are considered as the change
44
- log title.
45
-
46
-
47
-
48
-
49
- """
50
- __docformat__ = "restructuredtext en"
51
-
52
- import sys
53
- from stat import S_IWRITE
54
-
55
- BULLET = '*'
56
- SUBBULLET = '-'
57
- INDENT = ' ' * 4
58
-
59
- class NoEntry(Exception):
60
- """raised when we are unable to find an entry"""
61
-
62
- class EntryNotFound(Exception):
63
- """raised when we are unable to find a given entry"""
64
-
65
- class Version(tuple):
66
- """simple class to handle soft version number has a tuple while
67
- correctly printing it as X.Y.Z
68
- """
69
- def __new__(klass, versionstr):
70
- if isinstance(versionstr, basestring):
71
- versionstr = versionstr.strip(' :')
72
- try:
73
- parsed = [int(i) for i in versionstr.split('.')]
74
- except ValueError, ex:
75
- raise ValueError("invalid literal for version '%s' (%s)"%(versionstr,ex))
76
- else:
77
- parsed = versionstr
78
- return tuple.__new__(klass, parsed)
79
-
80
- def __str__(self):
81
- return '.'.join([str(i) for i in self])
82
-
83
- # upstream change log #########################################################
84
-
85
- class ChangeLogEntry(object):
86
- """a change log entry, i.e. a set of messages associated to a version and
87
- its release date
88
- """
89
- version_class = Version
90
-
91
- def __init__(self, date=None, version=None, **kwargs):
92
- self.__dict__.update(kwargs)
93
- if version:
94
- self.version = self.version_class(version)
95
- else:
96
- self.version = None
97
- self.date = date
98
- self.messages = []
99
-
100
- def add_message(self, msg):
101
- """add a new message"""
102
- self.messages.append(([msg],[]))
103
-
104
- def complete_latest_message(self, msg_suite):
105
- """complete the latest added message
106
- """
107
- if not self.messages:
108
- raise ValueError('unable to complete last message as there is no previous message)')
109
- if self.messages[-1][1]: # sub messages
110
- self.messages[-1][1][-1].append(msg_suite)
111
- else: # message
112
- self.messages[-1][0].append(msg_suite)
113
-
114
- def add_sub_message(self, sub_msg, key=None):
115
- if not self.messages:
116
- raise ValueError('unable to complete last message as there is no previous message)')
117
- if key is None:
118
- self.messages[-1][1].append([sub_msg])
119
- else:
120
- raise NotImplementedError("sub message to specific key are not implemented yet")
121
-
122
- def write(self, stream=sys.stdout):
123
- """write the entry to file """
124
- stream.write('%s -- %s\n' % (self.date or '', self.version or ''))
125
- for msg, sub_msgs in self.messages:
126
- stream.write('%s%s %s\n' % (INDENT, BULLET, msg[0]))
127
- stream.write(''.join(msg[1:]))
128
- if sub_msgs:
129
- stream.write('\n')
130
- for sub_msg in sub_msgs:
131
- stream.write('%s%s %s\n' % (INDENT * 2, SUBBULLET, sub_msg[0]))
132
- stream.write(''.join(sub_msg[1:]))
133
- stream.write('\n')
134
-
135
- stream.write('\n\n')
136
-
137
- class ChangeLog(object):
138
- """object representation of a whole ChangeLog file"""
139
-
140
- entry_class = ChangeLogEntry
141
-
142
- def __init__(self, changelog_file, title=''):
143
- self.file = changelog_file
144
- self.title = title
145
- self.additional_content = ''
146
- self.entries = []
147
- self.load()
148
-
149
- def __repr__(self):
150
- return '<ChangeLog %s at %s (%s entries)>' % (self.file, id(self),
151
- len(self.entries))
152
-
153
- def add_entry(self, entry):
154
- """add a new entry to the change log"""
155
- self.entries.append(entry)
156
-
157
- def get_entry(self, version='', create=None):
158
- """ return a given changelog entry
159
- if version is omitted, return the current entry
160
- """
161
- if not self.entries:
162
- if version or not create:
163
- raise NoEntry()
164
- self.entries.append(self.entry_class())
165
- if not version:
166
- if self.entries[0].version and create is not None:
167
- self.entries.insert(0, self.entry_class())
168
- return self.entries[0]
169
- version = self.version_class(version)
170
- for entry in self.entries:
171
- if entry.version == version:
172
- return entry
173
- raise EntryNotFound()
174
-
175
- def add(self, msg, create=None):
176
- """add a new message to the latest opened entry"""
177
- entry = self.get_entry(create=create)
178
- entry.add_message(msg)
179
-
180
- def load(self):
181
- """ read a logilab's ChangeLog from file """
182
- try:
183
- stream = open(self.file)
184
- except IOError:
185
- return
186
- last = None
187
- expect_sub = False
188
- for line in stream.readlines():
189
- sline = line.strip()
190
- words = sline.split()
191
- # if new entry
192
- if len(words) == 1 and words[0] == '--':
193
- expect_sub = False
194
- last = self.entry_class()
195
- self.add_entry(last)
196
- # if old entry
197
- elif len(words) == 3 and words[1] == '--':
198
- expect_sub = False
199
- last = self.entry_class(words[0], words[2])
200
- self.add_entry(last)
201
- # if title
202
- elif sline and last is None:
203
- self.title = '%s%s' % (self.title, line)
204
- # if new entry
205
- elif sline and sline[0] == BULLET:
206
- expect_sub = False
207
- last.add_message(sline[1:].strip())
208
- # if new sub_entry
209
- elif expect_sub and sline and sline[0] == SUBBULLET:
210
- last.add_sub_message(sline[1:].strip())
211
- # if new line for current entry
212
- elif sline and last.messages:
213
- last.complete_latest_message(line)
214
- else:
215
- expect_sub = True
216
- self.additional_content += line
217
- stream.close()
218
-
219
- def format_title(self):
220
- return '%s\n\n' % self.title.strip()
221
-
222
- def save(self):
223
- """write back change log"""
224
- # filetutils isn't importable in appengine, so import locally
225
- from logilab.common.fileutils import ensure_fs_mode
226
- ensure_fs_mode(self.file, S_IWRITE)
227
- self.write(open(self.file, 'w'))
228
-
229
- def write(self, stream=sys.stdout):
230
- """write changelog to stream"""
231
- stream.write(self.format_title())
232
- for entry in self.entries:
233
- entry.write(stream)
234
-
@@ -1,181 +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
- """Helper functions to support command line tools providing more than
19
- one command.
20
-
21
- e.g called as "tool command [options] args..." where <options> and <args> are
22
- command'specific
23
-
24
-
25
-
26
-
27
- """
28
- __docformat__ = "restructuredtext en"
29
-
30
- # XXX : merge with optparser ?
31
- import sys
32
- from os.path import basename
33
-
34
- from logilab.common.configuration import Configuration
35
-
36
-
37
- DEFAULT_COPYRIGHT = '''\
38
- Copyright (c) 2004-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
39
- http://www.logilab.fr/ -- mailto:contact@logilab.fr'''
40
-
41
-
42
- DEFAULT_DOC = '''\
43
- Type "%prog <command> --help" for more information about a specific
44
- command. Available commands are :\n'''
45
-
46
- class BadCommandUsage(Exception):
47
- """Raised when an unknown command is used or when a command is not
48
- correctly used.
49
- """
50
-
51
-
52
- class Command(Configuration):
53
- """Base class for command line commands."""
54
- arguments = ''
55
- name = ''
56
- # hidden from help ?
57
- hidden = False
58
- # max/min args, None meaning unspecified
59
- min_args = None
60
- max_args = None
61
- def __init__(self, __doc__=None, version=None):
62
- if __doc__:
63
- usage = __doc__ % (self.name, self.arguments,
64
- self.__doc__.replace(' ', ''))
65
- else:
66
- usage = self.__doc__.replace(' ', '')
67
- Configuration.__init__(self, usage=usage, version=version)
68
-
69
- def check_args(self, args):
70
- """check command's arguments are provided"""
71
- if self.min_args is not None and len(args) < self.min_args:
72
- raise BadCommandUsage('missing argument')
73
- if self.max_args is not None and len(args) > self.max_args:
74
- raise BadCommandUsage('too many arguments')
75
-
76
- def run(self, args):
77
- """run the command with its specific arguments"""
78
- raise NotImplementedError()
79
-
80
-
81
- def pop_arg(args_list, expected_size_after=0, msg="Missing argument"):
82
- """helper function to get and check command line arguments"""
83
- try:
84
- value = args_list.pop(0)
85
- except IndexError:
86
- raise BadCommandUsage(msg)
87
- if expected_size_after is not None and len(args_list) > expected_size_after:
88
- raise BadCommandUsage('too many arguments')
89
- return value
90
-
91
-
92
- _COMMANDS = {}
93
-
94
- def register_commands(commands):
95
- """register existing commands"""
96
- for command_klass in commands:
97
- _COMMANDS[command_klass.name] = command_klass
98
-
99
-
100
- def main_usage(status=0, doc=DEFAULT_DOC, copyright=DEFAULT_COPYRIGHT):
101
- """display usage for the main program (i.e. when no command supplied)
102
- and exit
103
- """
104
- commands = _COMMANDS.keys()
105
- commands.sort()
106
- if doc != DEFAULT_DOC:
107
- try:
108
- doc = doc % ('<command>', '<command arguments>',
109
- '''\
110
- Type "%prog <command> --help" for more information about a specific
111
- command. Available commands are :\n''')
112
- except TypeError:
113
- print 'could not find the "command", "arguments" and "default" slots'
114
- doc = doc.replace('%prog', basename(sys.argv[0]))
115
- print 'usage:', doc
116
- max_len = max([len(cmd) for cmd in commands]) # list comprehension for py 2.3 support
117
- padding = ' '*max_len
118
- for command in commands:
119
- cmd = _COMMANDS[command]
120
- if not cmd.hidden:
121
- title = cmd.__doc__.split('.')[0]
122
- print ' ', (command+padding)[:max_len], title
123
- if copyright:
124
- print '\n', copyright
125
- sys.exit(status)
126
-
127
-
128
- def cmd_run(cmdname, *args):
129
- try:
130
- command = _COMMANDS[cmdname](__doc__='%%prog %s %s\n\n%s')
131
- except KeyError:
132
- raise BadCommandUsage('no %s command' % cmdname)
133
- args = command.load_command_line_configuration(args)
134
- command.check_args(args)
135
- try:
136
- command.run(args)
137
- except KeyboardInterrupt:
138
- print 'interrupted'
139
- except BadCommandUsage, err:
140
- print 'ERROR: ', err
141
- print command.help()
142
-
143
-
144
- def main_run(args, doc=DEFAULT_DOC, copyright=DEFAULT_COPYRIGHT):
145
- """command line tool"""
146
- try:
147
- arg = args.pop(0)
148
- except IndexError:
149
- main_usage(status=1, doc=doc, copyright=copyright)
150
- if arg in ('-h', '--help'):
151
- main_usage(doc=doc, copyright=copyright)
152
- try:
153
- cmd_run(arg, *args)
154
- except BadCommandUsage, err:
155
- print 'ERROR: ', err
156
- main_usage(1, doc=doc, copyright=copyright)
157
-
158
-
159
- class ListCommandsCommand(Command):
160
- """list available commands, useful for bash completion."""
161
- name = 'listcommands'
162
- arguments = '[command]'
163
- hidden = True
164
-
165
- def run(self, args):
166
- """run the command with its specific arguments"""
167
- if args:
168
- command = pop_arg(args)
169
- cmd = _COMMANDS[command]
170
- for optname, optdict in cmd.options:
171
- print '--help'
172
- print '--' + optname
173
- else:
174
- commands = _COMMANDS.keys()
175
- commands.sort()
176
- for command in commands:
177
- cmd = _COMMANDS[command]
178
- if not cmd.hidden:
179
- print command
180
-
181
- register_commands([ListCommandsCommand])
@@ -1,212 +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
- """Command line interface helper classes.
19
-
20
- It provides some default commands, a help system, a default readline
21
- configuration with completion and persistent history.
22
-
23
- Example::
24
-
25
- class BookShell(CLIHelper):
26
-
27
- def __init__(self):
28
- # quit and help are builtins
29
- # CMD_MAP keys are commands, values are topics
30
- self.CMD_MAP['pionce'] = _("Sommeil")
31
- self.CMD_MAP['ronfle'] = _("Sommeil")
32
- CLIHelper.__init__(self)
33
-
34
- help_do_pionce = ("pionce", "pionce duree", _("met ton corps en veille"))
35
- def do_pionce(self):
36
- print 'nap is good'
37
-
38
- help_do_ronfle = ("ronfle", "ronfle volume", _("met les autres en veille"))
39
- def do_ronfle(self):
40
- print 'fuuuuuuuuuuuu rhhhhhrhrhrrh'
41
-
42
- cl = BookShell()
43
-
44
-
45
-
46
-
47
- """
48
- __docformat__ = "restructuredtext en"
49
-
50
- import __builtin__
51
- if not hasattr(__builtin__, '_'):
52
- __builtin__._ = str
53
-
54
-
55
- def init_readline(complete_method, histfile=None):
56
- """Init the readline library if available."""
57
- try:
58
- import readline
59
- readline.parse_and_bind("tab: complete")
60
- readline.set_completer(complete_method)
61
- string = readline.get_completer_delims().replace(':', '')
62
- readline.set_completer_delims(string)
63
- if histfile is not None:
64
- try:
65
- readline.read_history_file(histfile)
66
- except IOError:
67
- pass
68
- import atexit
69
- atexit.register(readline.write_history_file, histfile)
70
- except:
71
- print 'readline is not available :-('
72
-
73
-
74
- class Completer :
75
- """Readline completer."""
76
-
77
- def __init__(self, commands):
78
- self.list = commands
79
-
80
- def complete(self, text, state):
81
- """Hook called by readline when <tab> is pressed."""
82
- n = len(text)
83
- matches = []
84
- for cmd in self.list :
85
- if cmd[:n] == text :
86
- matches.append(cmd)
87
- try:
88
- return matches[state]
89
- except IndexError:
90
- return None
91
-
92
-
93
- class CLIHelper:
94
- """An abstract command line interface client which recognize commands
95
- and provide an help system.
96
- """
97
-
98
- CMD_MAP = {'help' : _("Others"),
99
- 'quit' : _("Others"),
100
- }
101
- CMD_PREFIX = ''
102
-
103
- def __init__(self, histfile=None) :
104
- self._topics = {}
105
- self.commands = None
106
- self._completer = Completer(self._register_commands())
107
- init_readline(self._completer.complete, histfile)
108
-
109
- def run(self):
110
- """loop on user input, exit on EOF"""
111
- while 1:
112
- try:
113
- line = raw_input('>>> ')
114
- except EOFError:
115
- print
116
- break
117
- s_line = line.strip()
118
- if not s_line:
119
- continue
120
- args = s_line.split()
121
- if args[0] in self.commands:
122
- try:
123
- cmd = 'do_%s' % self.commands[args[0]]
124
- getattr(self, cmd)(*args[1:])
125
- except EOFError:
126
- break
127
- except:
128
- import traceback
129
- traceback.print_exc()
130
- else:
131
- try:
132
- self.handle_line(s_line)
133
- except:
134
- import traceback
135
- traceback.print_exc()
136
-
137
- def handle_line(self, stripped_line):
138
- """Method to overload in the concrete class (should handle
139
- lines which are not commands).
140
- """
141
- raise NotImplementedError()
142
-
143
-
144
- # private methods #########################################################
145
-
146
- def _register_commands(self):
147
- """ register available commands method and return the list of
148
- commands name
149
- """
150
- self.commands = {}
151
- self._command_help = {}
152
- commands = [attr[3:] for attr in dir(self) if attr[:3] == 'do_']
153
- for command in commands:
154
- topic = self.CMD_MAP[command]
155
- help_method = getattr(self, 'help_do_%s' % command)
156
- self._topics.setdefault(topic, []).append(help_method)
157
- self.commands[self.CMD_PREFIX + command] = command
158
- self._command_help[command] = help_method
159
- return self.commands.keys()
160
-
161
- def _print_help(self, cmd, syntax, explanation):
162
- print _('Command %s') % cmd
163
- print _('Syntax: %s') % syntax
164
- print '\t', explanation
165
- print
166
-
167
-
168
- # predefined commands #####################################################
169
-
170
- def do_help(self, command=None) :
171
- """base input of the help system"""
172
- if command in self._command_help:
173
- self._print_help(*self._command_help[command])
174
- elif command is None or command not in self._topics:
175
- print _("Use help <topic> or help <command>.")
176
- print _("Available topics are:")
177
- topics = self._topics.keys()
178
- topics.sort()
179
- for topic in topics:
180
- print '\t', topic
181
- print
182
- print _("Available commands are:")
183
- commands = self.commands.keys()
184
- commands.sort()
185
- for command in commands:
186
- print '\t', command[len(self.CMD_PREFIX):]
187
-
188
- else:
189
- print _('Available commands about %s:') % command
190
- print
191
- for command_help_method in self._topics[command]:
192
- try:
193
- if callable(command_help_method):
194
- self._print_help(*command_help_method())
195
- else:
196
- self._print_help(*command_help_method)
197
- except:
198
- import traceback
199
- traceback.print_exc()
200
- print 'ERROR in help method %s'% (
201
- command_help_method.func_name)
202
-
203
- help_do_help = ("help", "help [topic|command]",
204
- _("print help message for the given topic/command or \
205
- available topics when no argument"))
206
-
207
- def do_quit(self):
208
- """quit the CLI"""
209
- raise EOFError()
210
-
211
- def help_do_quit(self):
212
- return ("quit", "quit", _("quit the application"))