bee_python 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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,229 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
3
- # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
4
- #
5
- # This file is part of logilab-common.
6
- #
7
- # logilab-common is free software: you can redistribute it and/or modify it under
8
- # the terms of the GNU Lesser General Public License as published by the Free
9
- # Software Foundation, either version 2.1 of the License, or (at your option) any
10
- # later version.
11
- #
12
- # logilab-common is distributed in the hope that it will be useful, but WITHOUT
13
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14
- # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
15
- # details.
16
- #
17
- # You should have received a copy of the GNU Lesser General Public License along
18
- # with logilab-common. If not, see <http://www.gnu.org/licenses/>.
19
- """This is a DBF reader which reads Visual Fox Pro DBF format with Memo field
20
-
21
- Usage:
22
-
23
- >>> rec = readDbf('test.dbf')
24
- >>> for line in rec:
25
- >>> print line['name']
26
-
27
-
28
- :date: 13/07/2007
29
-
30
- http://www.physics.ox.ac.uk/users/santoso/Software.Repository.html
31
- page says code is "available as is without any warranty or support".
32
- """
33
-
34
- import struct
35
- import os, os.path
36
- import sys
37
- import csv
38
- import tempfile
39
- import ConfigParser
40
-
41
- class Dbase:
42
- def __init__(self):
43
- self.fdb = None
44
- self.fmemo = None
45
- self.db_data = None
46
- self.memo_data = None
47
- self.fields = None
48
- self.num_records = 0
49
- self.header = None
50
- self.memo_file = ''
51
- self.memo_header = None
52
- self.memo_block_size = 0
53
- self.memo_header_len = 0
54
-
55
- def _drop_after_NULL(self, txt):
56
- for i in range(0, len(txt)):
57
- if ord(struct.unpack('c', txt[i])[0])==0:
58
- return txt[:i]
59
- return txt
60
-
61
- def _reverse_endian(self, num):
62
- if not len(num):
63
- return 0
64
- val = struct.unpack('<L', num)
65
- val = struct.pack('>L', val[0])
66
- val = struct.unpack('>L', val)
67
- return val[0]
68
-
69
- def _assign_ids(self, lst, ids):
70
- result = {}
71
- idx = 0
72
- for item in lst:
73
- id = ids[idx]
74
- result[id] = item
75
- idx += 1
76
- return result
77
-
78
- def open(self, db_name):
79
- filesize = os.path.getsize(db_name)
80
- if filesize <= 68:
81
- raise IOError, 'The file is not large enough to be a dbf file'
82
-
83
- self.fdb = open(db_name, 'rb')
84
-
85
- self.memo_file = ''
86
- if os.path.isfile(db_name[0:-1] + 't'):
87
- self.memo_file = db_name[0:-1] + 't'
88
- elif os.path.isfile(db_name[0:-3] + 'fpt'):
89
- self.memo_file = db_name[0:-3] + 'fpt'
90
-
91
- if self.memo_file:
92
- #Read memo file
93
- self.fmemo = open(self.memo_file, 'rb')
94
- self.memo_data = self.fmemo.read()
95
- self.memo_header = self._assign_ids(struct.unpack('>6x1H', self.memo_data[:8]), ['Block size'])
96
- block_size = self.memo_header['Block size']
97
- if not block_size:
98
- block_size = 512
99
- self.memo_block_size = block_size
100
- self.memo_header_len = block_size
101
- memo_size = os.path.getsize(self.memo_file)
102
-
103
- #Start reading data file
104
- data = self.fdb.read(32)
105
- self.header = self._assign_ids(struct.unpack('<B 3B L 2H 20x', data), ['id', 'Year', 'Month', 'Day', '# of Records', 'Header Size', 'Record Size'])
106
- self.header['id'] = hex(self.header['id'])
107
-
108
- self.num_records = self.header['# of Records']
109
- data = self.fdb.read(self.header['Header Size']-34)
110
- self.fields = {}
111
- x = 0
112
- header_pattern = '<11s c 4x B B 14x'
113
- ids = ['Field Name', 'Field Type', 'Field Length', 'Field Precision']
114
- pattern_len = 32
115
- for offset in range(0, len(data), 32):
116
- if ord(data[offset])==0x0d:
117
- break
118
- x += 1
119
- data_subset = data[offset: offset+pattern_len]
120
- if len(data_subset) < pattern_len:
121
- data_subset += ' '*(pattern_len-len(data_subset))
122
- self.fields[x] = self._assign_ids(struct.unpack(header_pattern, data_subset), ids)
123
- self.fields[x]['Field Name'] = self._drop_after_NULL(self.fields[x]['Field Name'])
124
-
125
- self.fdb.read(3)
126
- if self.header['# of Records']:
127
- data_size = (self.header['# of Records'] * self.header['Record Size']) - 1
128
- self.db_data = self.fdb.read(data_size)
129
- else:
130
- self.db_data = ''
131
- self.row_format = '<'
132
- self.row_ids = []
133
- self.row_len = 0
134
- for key in self.fields:
135
- field = self.fields[key]
136
- self.row_format += '%ds ' % (field['Field Length'])
137
- self.row_ids.append(field['Field Name'])
138
- self.row_len += field['Field Length']
139
-
140
- def close(self):
141
- if self.fdb:
142
- self.fdb.close()
143
- if self.fmemo:
144
- self.fmemo.close()
145
-
146
- def get_numrecords(self):
147
- return self.num_records
148
-
149
- def get_record_with_names(self, rec_no):
150
- """
151
- This function accept record number from 0 to N-1
152
- """
153
- if rec_no < 0 or rec_no > self.num_records:
154
- raise Exception, 'Unable to extract data outside the range'
155
-
156
- offset = self.header['Record Size'] * rec_no
157
- data = self.db_data[offset:offset+self.row_len]
158
- record = self._assign_ids(struct.unpack(self.row_format, data), self.row_ids)
159
-
160
- if self.memo_file:
161
- for key in self.fields:
162
- field = self.fields[key]
163
- f_type = field['Field Type']
164
- f_name = field['Field Name']
165
- c_data = record[f_name]
166
-
167
- if f_type=='M' or f_type=='G' or f_type=='B' or f_type=='P':
168
- c_data = self._reverse_endian(c_data)
169
- if c_data:
170
- record[f_name] = self.read_memo(c_data-1).strip()
171
- else:
172
- record[f_name] = c_data.strip()
173
- return record
174
-
175
- def read_memo_record(self, num, in_length):
176
- """
177
- Read the record of given number. The second parameter is the length of
178
- the record to read. It can be undefined, meaning read the whole record,
179
- and it can be negative, meaning at most the length
180
- """
181
- if in_length < 0:
182
- in_length = -self.memo_block_size
183
-
184
- offset = self.memo_header_len + num * self.memo_block_size
185
- self.fmemo.seek(offset)
186
- if in_length<0:
187
- in_length = -in_length
188
- if in_length==0:
189
- return ''
190
- return self.fmemo.read(in_length)
191
-
192
- def read_memo(self, num):
193
- result = ''
194
- buffer = self.read_memo_record(num, -1)
195
- if len(buffer)<=0:
196
- return ''
197
- length = struct.unpack('>L', buffer[4:4+4])[0] + 8
198
-
199
- block_size = self.memo_block_size
200
- if length < block_size:
201
- return buffer[8:length]
202
- rest_length = length - block_size
203
- rest_data = self.read_memo_record(num+1, rest_length)
204
- if len(rest_data)<=0:
205
- return ''
206
- return buffer[8:] + rest_data
207
-
208
- def readDbf(filename):
209
- """
210
- Read the DBF file specified by the filename and
211
- return the records as a list of dictionary.
212
-
213
- :param: filename File name of the DBF
214
- :return: List of rows
215
- """
216
- db = Dbase()
217
- db.open(filename)
218
- num = db.get_numrecords()
219
- rec = []
220
- for i in range(0, num):
221
- record = db.get_record_with_names(i)
222
- rec.append(record)
223
- db.close()
224
- return rec
225
-
226
- if __name__=='__main__':
227
- rec = readDbf('dbf/sptable.dbf')
228
- for line in rec:
229
- print '%s %s' % (line['GENUS'].strip(), line['SPECIES'].strip())
@@ -1,208 +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
- """Customized version of pdb's default debugger.
19
-
20
- - sets up a history file
21
- - uses ipython if available to colorize lines of code
22
- - overrides list command to search for current block instead
23
- of using 5 lines of context
24
-
25
-
26
-
27
-
28
- """
29
- __docformat__ = "restructuredtext en"
30
-
31
- try:
32
- import readline
33
- except ImportError:
34
- readline = None
35
- import os
36
- import os.path as osp
37
- import sys
38
- from pdb import Pdb
39
- from cStringIO import StringIO
40
- import inspect
41
-
42
- try:
43
- from IPython import PyColorize
44
- except ImportError:
45
- def colorize(source, *args):
46
- """fallback colorize function"""
47
- return source
48
- def colorize_source(source, *args):
49
- return source
50
- else:
51
- def colorize(source, start_lineno, curlineno):
52
- """colorize and annotate source with linenos
53
- (as in pdb's list command)
54
- """
55
- parser = PyColorize.Parser()
56
- output = StringIO()
57
- parser.format(source, output)
58
- annotated = []
59
- for index, line in enumerate(output.getvalue().splitlines()):
60
- lineno = index + start_lineno
61
- if lineno == curlineno:
62
- annotated.append('%4s\t->\t%s' % (lineno, line))
63
- else:
64
- annotated.append('%4s\t\t%s' % (lineno, line))
65
- return '\n'.join(annotated)
66
-
67
- def colorize_source(source):
68
- """colorize given source"""
69
- parser = PyColorize.Parser()
70
- output = StringIO()
71
- parser.format(source, output)
72
- return output.getvalue()
73
-
74
-
75
- def getsource(obj):
76
- """Return the text of the source code for an object.
77
-
78
- The argument may be a module, class, method, function, traceback, frame,
79
- or code object. The source code is returned as a single string. An
80
- IOError is raised if the source code cannot be retrieved."""
81
- lines, lnum = inspect.getsourcelines(obj)
82
- return ''.join(lines), lnum
83
-
84
-
85
- ################################################################
86
- class Debugger(Pdb):
87
- """custom debugger
88
-
89
- - sets up a history file
90
- - uses ipython if available to colorize lines of code
91
- - overrides list command to search for current block instead
92
- of using 5 lines of context
93
- """
94
- def __init__(self, tcbk=None):
95
- Pdb.__init__(self)
96
- self.reset()
97
- if tcbk:
98
- while tcbk.tb_next is not None:
99
- tcbk = tcbk.tb_next
100
- self._tcbk = tcbk
101
- self._histfile = osp.join(os.environ["HOME"], ".pdbhist")
102
-
103
- def setup_history_file(self):
104
- """if readline is available, read pdb history file
105
- """
106
- if readline is not None:
107
- try:
108
- readline.read_history_file(self._histfile)
109
- except IOError:
110
- pass
111
-
112
- def start(self):
113
- """starts the interactive mode"""
114
- self.interaction(self._tcbk.tb_frame, self._tcbk)
115
-
116
- def setup(self, frame, tcbk):
117
- """setup hook: set up history file"""
118
- self.setup_history_file()
119
- Pdb.setup(self, frame, tcbk)
120
-
121
- def set_quit(self):
122
- """quit hook: save commands in the history file"""
123
- if readline is not None:
124
- readline.write_history_file(self._histfile)
125
- Pdb.set_quit(self)
126
-
127
- def complete_p(self, text, line, begin_idx, end_idx):
128
- """provide variable names completion for the ``p`` command"""
129
- namespace = dict(self.curframe.f_globals)
130
- namespace.update(self.curframe.f_locals)
131
- if '.' in text:
132
- return self.attr_matches(text, namespace)
133
- return [varname for varname in namespace if varname.startswith(text)]
134
-
135
-
136
- def attr_matches(self, text, namespace):
137
- """implementation coming from rlcompleter.Completer.attr_matches
138
- Compute matches when text contains a dot.
139
-
140
- Assuming the text is of the form NAME.NAME....[NAME], and is
141
- evaluatable in self.namespace, it will be evaluated and its attributes
142
- (as revealed by dir()) are used as possible completions. (For class
143
- instances, class members are also considered.)
144
-
145
- WARNING: this can still invoke arbitrary C code, if an object
146
- with a __getattr__ hook is evaluated.
147
-
148
- """
149
- import re
150
- m = re.match(r"(\w+(\.\w+)*)\.(\w*)", text)
151
- if not m:
152
- return
153
- expr, attr = m.group(1, 3)
154
- object = eval(expr, namespace)
155
- words = dir(object)
156
- if hasattr(object,'__class__'):
157
- words.append('__class__')
158
- words = words + self.get_class_members(object.__class__)
159
- matches = []
160
- n = len(attr)
161
- for word in words:
162
- if word[:n] == attr and word != "__builtins__":
163
- matches.append("%s.%s" % (expr, word))
164
- return matches
165
-
166
- def get_class_members(self, klass):
167
- """implementation coming from rlcompleter.get_class_members"""
168
- ret = dir(klass)
169
- if hasattr(klass,'__bases__'):
170
- for base in klass.__bases__:
171
- ret = ret + self.get_class_members(base)
172
- return ret
173
-
174
- ## specific / overridden commands
175
- def do_list(self, arg):
176
- """overrides default list command to display the surrounding block
177
- instead of 5 lines of context
178
- """
179
- self.lastcmd = 'list'
180
- if not arg:
181
- try:
182
- source, start_lineno = getsource(self.curframe)
183
- print colorize(''.join(source), start_lineno,
184
- self.curframe.f_lineno)
185
- except KeyboardInterrupt:
186
- pass
187
- except IOError:
188
- Pdb.do_list(self, arg)
189
- else:
190
- Pdb.do_list(self, arg)
191
- do_l = do_list
192
-
193
- def do_open(self, arg):
194
- """opens source file corresponding to the current stack level"""
195
- filename = self.curframe.f_code.co_filename
196
- lineno = self.curframe.f_lineno
197
- cmd = 'emacsclient --no-wait +%s %s' % (lineno, filename)
198
- os.system(cmd)
199
-
200
- do_o = do_open
201
-
202
- def pm():
203
- """use our custom debugger"""
204
- dbg = Debugger(sys.last_traceback)
205
- dbg.start()
206
-
207
- def set_trace():
208
- Debugger().set_trace(sys._getframe().f_back)
@@ -1,190 +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 function/method decorators.
19
-
20
-
21
-
22
-
23
- """
24
- __docformat__ = "restructuredtext en"
25
-
26
- from types import MethodType
27
- from time import clock, time
28
- import sys, re
29
-
30
- # XXX rewrite so we can use the decorator syntax when keyarg has to be specified
31
-
32
- def cached(callableobj, keyarg=None):
33
- """Simple decorator to cache result of method call."""
34
- if callableobj.func_code.co_argcount == 1 or keyarg == 0:
35
-
36
- def cache_wrapper1(self, *args):
37
- cache = '_%s_cache_' % callableobj.__name__
38
- #print 'cache1?', cache
39
- try:
40
- return self.__dict__[cache]
41
- except KeyError:
42
- #print 'miss'
43
- value = callableobj(self, *args)
44
- setattr(self, cache, value)
45
- return value
46
- cache_wrapper1.__doc__ = callableobj.__doc__
47
- return cache_wrapper1
48
-
49
- elif keyarg:
50
-
51
- def cache_wrapper2(self, *args, **kwargs):
52
- cache = '_%s_cache_' % callableobj.__name__
53
- key = args[keyarg-1]
54
- #print 'cache2?', cache, self, key
55
- try:
56
- _cache = self.__dict__[cache]
57
- except KeyError:
58
- #print 'init'
59
- _cache = {}
60
- setattr(self, cache, _cache)
61
- try:
62
- return _cache[key]
63
- except KeyError:
64
- #print 'miss', self, cache, key
65
- _cache[key] = callableobj(self, *args, **kwargs)
66
- return _cache[key]
67
- cache_wrapper2.__doc__ = callableobj.__doc__
68
- return cache_wrapper2
69
-
70
- def cache_wrapper3(self, *args):
71
- cache = '_%s_cache_' % callableobj.__name__
72
- #print 'cache3?', cache, self, args
73
- try:
74
- _cache = self.__dict__[cache]
75
- except KeyError:
76
- #print 'init'
77
- _cache = {}
78
- setattr(self, cache, _cache)
79
- try:
80
- return _cache[args]
81
- except KeyError:
82
- #print 'miss'
83
- _cache[args] = callableobj(self, *args)
84
- return _cache[args]
85
- cache_wrapper3.__doc__ = callableobj.__doc__
86
- return cache_wrapper3
87
-
88
- def clear_cache(obj, funcname):
89
- """Function to clear a cache handled by the cached decorator."""
90
- try:
91
- del obj.__dict__['_%s_cache_' % funcname]
92
- except KeyError:
93
- pass
94
-
95
- def copy_cache(obj, funcname, cacheobj):
96
- """Copy cache for <funcname> from cacheobj to obj."""
97
- cache = '_%s_cache_' % funcname
98
- try:
99
- setattr(obj, cache, cacheobj.__dict__[cache])
100
- except KeyError:
101
- pass
102
-
103
- class wproperty(object):
104
- """Simple descriptor expecting to take a modifier function as first argument
105
- and looking for a _<function name> to retrieve the attribute.
106
- """
107
- def __init__(self, setfunc):
108
- self.setfunc = setfunc
109
- self.attrname = '_%s' % setfunc.__name__
110
-
111
- def __set__(self, obj, value):
112
- self.setfunc(obj, value)
113
-
114
- def __get__(self, obj, cls):
115
- assert obj is not None
116
- return getattr(obj, self.attrname)
117
-
118
-
119
- class classproperty(object):
120
- """this is a simple property-like class but for class attributes.
121
- """
122
- def __init__(self, get):
123
- self.get = get
124
- def __get__(self, inst, cls):
125
- return self.get(cls)
126
-
127
-
128
- class iclassmethod(object):
129
- '''Descriptor for method which should be available as class method if called
130
- on the class or instance method if called on an instance.
131
- '''
132
- def __init__(self, func):
133
- self.func = func
134
- def __get__(self, instance, objtype):
135
- if instance is None:
136
- return MethodType(self.func, objtype, objtype.__class__)
137
- return MethodType(self.func, instance, objtype)
138
- def __set__(self, instance, value):
139
- raise AttributeError("can't set attribute")
140
-
141
-
142
- def timed(f):
143
- def wrap(*args, **kwargs):
144
- t = time()
145
- c = clock()
146
- res = f(*args, **kwargs)
147
- print '%s clock: %.9f / time: %.9f' % (f.__name__,
148
- clock() - c, time() - t)
149
- return res
150
- return wrap
151
-
152
-
153
- def locked(acquire, release):
154
- """Decorator taking two methods to acquire/release a lock as argument,
155
- returning a decorator function which will call the inner method after
156
- having called acquire(self) et will call release(self) afterwards.
157
- """
158
- def decorator(f):
159
- def wrapper(self, *args, **kwargs):
160
- acquire(self)
161
- try:
162
- return f(self, *args, **kwargs)
163
- finally:
164
- release(self)
165
- return wrapper
166
- return decorator
167
-
168
-
169
- def monkeypatch(klass, methodname=None):
170
- """Decorator extending class with the decorated function
171
- >>> class A:
172
- ... pass
173
- >>> @monkeypatch(A)
174
- ... def meth(self):
175
- ... return 12
176
- ...
177
- >>> a = A()
178
- >>> a.meth()
179
- 12
180
- >>> @monkeypatch(A, 'foo')
181
- ... def meth(self):
182
- ... return 12
183
- ...
184
- >>> a.foo()
185
- 12
186
- """
187
- def decorator(func):
188
- setattr(klass, methodname or func.__name__, func)
189
- return func
190
- return decorator