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,342 +0,0 @@
1
- # This program is free software; you can redistribute it and/or modify
2
- # it under the terms of the GNU Lesser General Public License as published by
3
- # the Free Software Foundation; either version 2 of the License, or
4
- # (at your option) any later version.
5
- #
6
- # This program is distributed in the hope that it will be useful, but WITHOUT
7
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
8
- # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
9
- #
10
- # You should have received a copy of the GNU Lesser General Public License along with
11
- # this program; if not, write to the Free Software Foundation, Inc.,
12
- # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
13
- # copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
14
- # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
15
- # copyright 2003-2010 Sylvain Thenault, all rights reserved.
16
- # contact mailto:thenault@gmail.com
17
- #
18
- # This file is part of logilab-astng.
19
- #
20
- # logilab-astng is free software: you can redistribute it and/or modify it
21
- # under the terms of the GNU Lesser General Public License as published by the
22
- # Free Software Foundation, either version 2.1 of the License, or (at your
23
- # option) any later version.
24
- #
25
- # logilab-astng is distributed in the hope that it will be useful, but
26
- # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
27
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
28
- # for more details.
29
- #
30
- # You should have received a copy of the GNU Lesser General Public License along
31
- # with logilab-astng. If not, see <http://www.gnu.org/licenses/>.
32
- """this module contains some utilities to navigate in the tree or to
33
- extract information from it
34
-
35
- """
36
-
37
- __docformat__ = "restructuredtext en"
38
-
39
- from logilab.astng._exceptions import IgnoreChild, ASTNGBuildingException
40
-
41
-
42
- class ASTVisitor(object):
43
- """Abstract Base Class for Python AST Visitors.
44
-
45
- Visitors inheriting from ASTVisitors could visit
46
- compiler.ast, _ast or astng trees.
47
-
48
- Not all methods will have to be implemented;
49
- so some methods are just empty interfaces for catching
50
- cases where we don't want to do anything on the
51
- concerned node.
52
- """
53
-
54
- def visit_arguments(self, node):
55
- """dummy method for visiting an Arguments node"""
56
-
57
- def visit_assattr(self, node):
58
- """dummy method for visiting an AssAttr node"""
59
-
60
- def visit_assert(self, node):
61
- """dummy method for visiting an Assert node"""
62
-
63
- def visit_assign(self, node):
64
- """dummy method for visiting an Assign node"""
65
-
66
- def visit_assname(self, node):
67
- """dummy method for visiting an AssName node"""
68
-
69
- def visit_augassign(self, node):
70
- """dummy method for visiting an AugAssign node"""
71
-
72
- def visit_backquote(self, node):
73
- """dummy method for visiting an Backquote node"""
74
-
75
- def visit_binop(self, node):
76
- """dummy method for visiting an BinOp node"""
77
-
78
- def visit_boolop(self, node):
79
- """dummy method for visiting an BoolOp node"""
80
-
81
- def visit_break(self, node):
82
- """dummy method for visiting an Break node"""
83
-
84
- def visit_callfunc(self, node):
85
- """dummy method for visiting an CallFunc node"""
86
-
87
- def visit_class(self, node):
88
- """dummy method for visiting an Class node"""
89
-
90
- def visit_compare(self, node):
91
- """dummy method for visiting an Compare node"""
92
-
93
- def visit_comprehension(self, node):
94
- """dummy method for visiting an Comprehension node"""
95
-
96
- def visit_const(self, node):
97
- """dummy method for visiting an Const node"""
98
-
99
- def visit_continue(self, node):
100
- """dummy method for visiting an Continue node"""
101
-
102
- def visit_decorators(self, node):
103
- """dummy method for visiting an Decorators node"""
104
-
105
- def visit_delattr(self, node):
106
- """dummy method for visiting an DelAttr node"""
107
-
108
- def visit_delete(self, node):
109
- """dummy method for visiting an Delete node"""
110
-
111
- def visit_delname(self, node):
112
- """dummy method for visiting an DelName node"""
113
-
114
- def visit_dict(self, node):
115
- """dummy method for visiting an Dict node"""
116
-
117
- def visit_discard(self, node):
118
- """dummy method for visiting an Discard node"""
119
-
120
- def visit_emptynode(self, node):
121
- """dummy method for visiting an EmptyNode node"""
122
-
123
- def visit_excepthandler(self, node):
124
- """dummy method for visiting an ExceptHandler node"""
125
-
126
- def visit_ellipsis(self, node):
127
- """dummy method for visiting an Ellipsis node"""
128
-
129
- def visit_empty(self, node):
130
- """dummy method for visiting an Empty node"""
131
-
132
- def visit_exec(self, node):
133
- """dummy method for visiting an Exec node"""
134
-
135
- def visit_extslice(self, node):
136
- """dummy method for visiting an ExtSlice node"""
137
-
138
- def visit_for(self, node):
139
- """dummy method for visiting an For node"""
140
-
141
- def visit_from(self, node):
142
- """dummy method for visiting an From node"""
143
-
144
- def visit_function(self, node):
145
- """dummy method for visiting an Function node"""
146
-
147
- def visit_genexpr(self, node):
148
- """dummy method for visiting an ListComp node"""
149
-
150
- def visit_getattr(self, node):
151
- """dummy method for visiting an Getattr node"""
152
-
153
- def visit_global(self, node):
154
- """dummy method for visiting an Global node"""
155
-
156
- def visit_if(self, node):
157
- """dummy method for visiting an If node"""
158
-
159
- def visit_ifexp(self, node):
160
- """dummy method for visiting an IfExp node"""
161
-
162
- def visit_import(self, node):
163
- """dummy method for visiting an Import node"""
164
-
165
- def visit_index(self, node):
166
- """dummy method for visiting an Index node"""
167
-
168
- def visit_keyword(self, node):
169
- """dummy method for visiting an Keyword node"""
170
-
171
- def visit_lambda(self, node):
172
- """dummy method for visiting an Lambda node"""
173
-
174
- def visit_list(self, node):
175
- """dummy method for visiting an List node"""
176
-
177
- def visit_listcomp(self, node):
178
- """dummy method for visiting an ListComp node"""
179
-
180
- def visit_module(self, node):
181
- """dummy method for visiting an Module node"""
182
-
183
- def visit_name(self, node):
184
- """dummy method for visiting an Name node"""
185
-
186
- def visit_pass(self, node):
187
- """dummy method for visiting an Pass node"""
188
-
189
- def visit_print(self, node):
190
- """dummy method for visiting an Print node"""
191
-
192
- def visit_raise(self, node):
193
- """dummy method for visiting an Raise node"""
194
-
195
- def visit_return(self, node):
196
- """dummy method for visiting an Return node"""
197
-
198
- def visit_slice(self, node):
199
- """dummy method for visiting an Slice node"""
200
-
201
- def visit_subscript(self, node):
202
- """dummy method for visiting an Subscript node"""
203
-
204
- def visit_tryexcept(self, node):
205
- """dummy method for visiting an TryExcept node"""
206
-
207
- def visit_tryfinally(self, node):
208
- """dummy method for visiting an TryFinally node"""
209
-
210
- def visit_tuple(self, node):
211
- """dummy method for visiting an Tuple node"""
212
-
213
- def visit_unaryop(self, node):
214
- """dummy method for visiting an UnaryOp node"""
215
-
216
- def visit_while(self, node):
217
- """dummy method for visiting an While node"""
218
-
219
- def visit_with(self, node):
220
- """dummy method for visiting an With node"""
221
-
222
- def visit_yield(self, node):
223
- """dummy method for visiting an Yield node"""
224
-
225
-
226
- class ASTWalker:
227
- """a walker visiting a tree in preorder, calling on the handler:
228
-
229
- * visit_<class name> on entering a node, where class name is the class of
230
- the node in lower case
231
-
232
- * leave_<class name> on leaving a node, where class name is the class of
233
- the node in lower case
234
- """
235
-
236
- def __init__(self, handler):
237
- self.handler = handler
238
- self._cache = {}
239
-
240
- def walk(self, node, _done=None):
241
- """walk on the tree from <node>, getting callbacks from handler"""
242
- if _done is None:
243
- _done = set()
244
- if node in _done:
245
- raise AssertionError((id(node), node, node.parent))
246
- _done.add(node)
247
- try:
248
- self.visit(node)
249
- except IgnoreChild:
250
- pass
251
- else:
252
- try:
253
- for child_node in node.get_children():
254
- self.handler.set_context(node, child_node)
255
- assert child_node is not node
256
- self.walk(child_node, _done)
257
- except AttributeError:
258
- print node.__class__, id(node.__class__)
259
- raise
260
- self.leave(node)
261
- assert node.parent is not node
262
-
263
- def get_callbacks(self, node):
264
- """get callbacks from handler for the visited node"""
265
- klass = node.__class__
266
- methods = self._cache.get(klass)
267
- if methods is None:
268
- handler = self.handler
269
- kid = klass.__name__.lower()
270
- e_method = getattr(handler, 'visit_%s' % kid,
271
- getattr(handler, 'visit_default', None))
272
- l_method = getattr(handler, 'leave_%s' % kid,
273
- getattr(handler, 'leave_default', None))
274
- self._cache[klass] = (e_method, l_method)
275
- else:
276
- e_method, l_method = methods
277
- return e_method, l_method
278
-
279
- def visit(self, node):
280
- """walk on the tree from <node>, getting callbacks from handler"""
281
- method = self.get_callbacks(node)[0]
282
- if method is not None:
283
- method(node)
284
-
285
- def leave(self, node):
286
- """walk on the tree from <node>, getting callbacks from handler"""
287
- method = self.get_callbacks(node)[1]
288
- if method is not None:
289
- method(node)
290
-
291
-
292
- class LocalsVisitor(ASTWalker):
293
- """visit a project by traversing the locals dictionary"""
294
- def __init__(self):
295
- ASTWalker.__init__(self, self)
296
- self._visited = {}
297
-
298
- def visit(self, node):
299
- """launch the visit starting from the given node"""
300
- if self._visited.has_key(node):
301
- return
302
- self._visited[node] = 1 # FIXME: use set ?
303
- methods = self.get_callbacks(node)
304
- recurse = 1
305
- if methods[0] is not None:
306
- try:
307
- methods[0](node)
308
- except IgnoreChild:
309
- recurse = 0
310
- if recurse:
311
- if 'locals' in node.__dict__: # skip Instance and other proxy
312
- for name, local_node in node.items():
313
- self.visit(local_node)
314
- if methods[1] is not None:
315
- return methods[1](node)
316
-
317
-
318
- def _check_children(node):
319
- """a helper function to check children - parent relations"""
320
- for child in node.get_children():
321
- ok = False
322
- if child is None:
323
- print "Hm, child of %s is None" % node
324
- continue
325
- if not hasattr(child, 'parent'):
326
- print " ERROR: %s has child %s %x with no parent" % (node, child, id(child))
327
- elif not child.parent:
328
- print " ERROR: %s has child %s %x with parent %r" % (node, child, id(child), child.parent)
329
- elif child.parent is not node:
330
- print " ERROR: %s %x has child %s %x with wrong parent %s" % (node,
331
- id(node), child, id(child), child.parent)
332
- else:
333
- ok = True
334
- if not ok:
335
- print "lines;", node.lineno, child.lineno
336
- print "of module", node.root(), node.root().name
337
- raise ASTNGBuildingException
338
- _check_children(child)
339
-
340
-
341
- __all__ = ('LocalsVisitor', 'ASTWalker', 'ASTVisitor',)
342
-
@@ -1,140 +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
- """Logilab common library (aka Logilab's extension to the standard library).
19
-
20
- :type STD_BLACKLIST: tuple
21
- :var STD_BLACKLIST: directories ignored by default by the functions in
22
- this package which have to recurse into directories
23
-
24
- :type IGNORED_EXTENSIONS: tuple
25
- :var IGNORED_EXTENSIONS: file extensions that may usually be ignored
26
- """
27
- __docformat__ = "restructuredtext en"
28
- from logilab.common.__pkginfo__ import version as __version__
29
-
30
- STD_BLACKLIST = ('CVS', '.svn', '.hg', 'debian', 'dist', 'build')
31
-
32
- IGNORED_EXTENSIONS = ('.pyc', '.pyo', '.elc', '~')
33
-
34
- # set this to False if you've mx DateTime installed but you don't want your db
35
- # adapter to use it (should be set before you got a connection)
36
- USE_MX_DATETIME = True
37
-
38
-
39
- class attrdict(dict):
40
- """A dictionary for which keys are also accessible as attributes."""
41
- def __getattr__(self, attr):
42
- try:
43
- return self[attr]
44
- except KeyError:
45
- raise AttributeError(attr)
46
-
47
- class dictattr(dict):
48
- def __init__(self, proxy):
49
- self.__proxy = proxy
50
-
51
- def __getitem__(self, attr):
52
- try:
53
- return getattr(self.__proxy, attr)
54
- except AttributeError:
55
- raise KeyError(attr)
56
-
57
- class nullobject(object):
58
- def __repr__(self):
59
- return '<nullobject>'
60
- def __nonzero__(self):
61
- return False
62
-
63
- # flatten -----
64
- # XXX move in a specific module and use yield instead
65
- # do not mix flatten and translate
66
- #
67
- # def iterable(obj):
68
- # try: iter(obj)
69
- # except: return False
70
- # return True
71
- #
72
- # def is_string_like(obj):
73
- # try: obj +''
74
- # except (TypeError, ValueError): return False
75
- # return True
76
- #
77
- #def is_scalar(obj):
78
- # return is_string_like(obj) or not iterable(obj)
79
- #
80
- #def flatten(seq):
81
- # for item in seq:
82
- # if is_scalar(item):
83
- # yield item
84
- # else:
85
- # for subitem in flatten(item):
86
- # yield subitem
87
-
88
- def flatten(iterable, tr_func=None, results=None):
89
- """Flatten a list of list with any level.
90
-
91
- If tr_func is not None, it should be a one argument function that'll be called
92
- on each final element.
93
-
94
- :rtype: list
95
-
96
- >>> flatten([1, [2, 3]])
97
- [1, 2, 3]
98
- """
99
- if results is None:
100
- results = []
101
- for val in iterable:
102
- if isinstance(val, (list, tuple)):
103
- flatten(val, tr_func, results)
104
- elif tr_func is None:
105
- results.append(val)
106
- else:
107
- results.append(tr_func(val))
108
- return results
109
-
110
-
111
- # XXX is function below still used ?
112
-
113
- def make_domains(lists):
114
- """
115
- Given a list of lists, return a list of domain for each list to produce all
116
- combinations of possibles values.
117
-
118
- :rtype: list
119
-
120
- Example:
121
-
122
- >>> make_domains(['a', 'b'], ['c','d', 'e'])
123
- [['a', 'b', 'a', 'b', 'a', 'b'], ['c', 'c', 'd', 'd', 'e', 'e']]
124
- """
125
- domains = []
126
- for iterable in lists:
127
- new_domain = iterable[:]
128
- for i in range(len(domains)):
129
- domains[i] = domains[i]*len(iterable)
130
- if domains:
131
- missing = (len(domains[0]) - len(iterable)) / len(iterable)
132
- i = 0
133
- for j in range(len(iterable)):
134
- value = iterable[j]
135
- for dummy in range(missing):
136
- new_domain.insert(i, value)
137
- i += 1
138
- i += 1
139
- domains.append(new_domain)
140
- return domains
@@ -1,43 +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
- """logilab.common packaging information"""
19
- __docformat__ = "restructuredtext en"
20
-
21
- distname = 'logilab-common'
22
- modname = 'common'
23
-
24
- numversion = (0, 50, 3)
25
- version = '.'.join([str(num) for num in numversion])
26
-
27
- license = 'LGPL' # 2.1 or later
28
-
29
- author = "Logilab"
30
- author_email = "devel@logilab.fr"
31
-
32
- description = "collection of low-level Python packages and modules used by Logilab projects"
33
- web = "http://www.logilab.org/project/%s" % distname
34
- ftp = "ftp://ftp.logilab.org/pub/%s" % modname
35
- mailinglist = "mailto://python-projects@lists.logilab.org"
36
-
37
- subpackage_of = 'logilab'
38
- subpackage_master = True
39
-
40
- scripts = ('bin/pytest',)
41
- from os.path import join
42
- include_dirs = [join('test', 'data')]
43
- pyversions = ['2.4', '2.5', '2.6']
@@ -1,35 +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
- """Helpers for DBMS specific (advanced or non standard) functionalities.
19
- """
20
- __docformat__ = "restructuredtext en"
21
-
22
- from warnings import warn
23
- warn('this module is deprecated, use logilab.database instead',
24
- DeprecationWarning, stacklevel=1)
25
-
26
- from logilab.database import (FunctionDescr, get_db_helper as get_adv_func_helper,
27
- _GenericAdvFuncHelper,
28
- _ADV_FUNC_HELPER_DIRECTORY as ADV_FUNC_HELPER_DIRECTORY)
29
- from logilab.common.decorators import monkeypatch
30
-
31
- @monkeypatch(_GenericAdvFuncHelper, 'func_sqlname')
32
- @classmethod
33
- def func_sqlname(cls, funcname):
34
- funcdef = cls.function_description(funcname)
35
- return funcdef.name_mapping.get(cls.backend_name, funcname)
@@ -1,114 +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
- """Cache module, with a least recently used algorithm for the management of the
19
- deletion of entries.
20
-
21
-
22
-
23
-
24
- """
25
- __docformat__ = "restructuredtext en"
26
-
27
- from threading import Lock
28
-
29
- from logilab.common.decorators import locked
30
-
31
- _marker = object()
32
-
33
- class Cache(dict):
34
- """A dictionary like cache.
35
-
36
- inv:
37
- len(self._usage) <= self.size
38
- len(self.data) <= self.size
39
- """
40
-
41
- def __init__(self, size=100):
42
- """ Warning : Cache.__init__() != dict.__init__().
43
- Constructor does not take any arguments beside size.
44
- """
45
- assert size >= 0, 'cache size must be >= 0 (0 meaning no caching)'
46
- self.size = size
47
- self._usage = []
48
- self._lock = Lock()
49
- super(Cache, self).__init__()
50
-
51
- def _acquire(self):
52
- self._lock.acquire()
53
-
54
- def _release(self):
55
- self._lock.release()
56
-
57
- def _update_usage(self, key):
58
- if not self._usage:
59
- self._usage.append(key)
60
- elif self._usage[-1] != key:
61
- try:
62
- self._usage.remove(key)
63
- except ValueError:
64
- # we are inserting a new key
65
- # check the size of the dictionary
66
- # and remove the oldest item in the cache
67
- if self.size and len(self._usage) >= self.size:
68
- super(Cache, self).__delitem__(self._usage[0])
69
- del self._usage[0]
70
- self._usage.append(key)
71
- else:
72
- pass # key is already the most recently used key
73
-
74
- def __getitem__(self, key):
75
- value = super(Cache, self).__getitem__(key)
76
- self._update_usage(key)
77
- return value
78
- __getitem__ = locked(_acquire, _release)(__getitem__)
79
-
80
- def __setitem__(self, key, item):
81
- # Just make sure that size > 0 before inserting a new item in the cache
82
- if self.size > 0:
83
- super(Cache, self).__setitem__(key, item)
84
- self._update_usage(key)
85
- __setitem__ = locked(_acquire, _release)(__setitem__)
86
-
87
- def __delitem__(self, key):
88
- super(Cache, self).__delitem__(key)
89
- self._usage.remove(key)
90
- __delitem__ = locked(_acquire, _release)(__delitem__)
91
-
92
- def clear(self):
93
- super(Cache, self).clear()
94
- self._usage = []
95
- clear = locked(_acquire, _release)(clear)
96
-
97
- def pop(self, key, default=_marker):
98
- if key in self:
99
- self._usage.remove(key)
100
- #if default is _marker:
101
- # return super(Cache, self).pop(key)
102
- return super(Cache, self).pop(key, default)
103
- pop = locked(_acquire, _release)(pop)
104
-
105
- def popitem(self):
106
- raise NotImplementedError()
107
-
108
- def setdefault(self, key, default=None):
109
- raise NotImplementedError()
110
-
111
- def update(self, other):
112
- raise NotImplementedError()
113
-
114
-