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,421 +0,0 @@
1
- # This program is free software; you can redistribute it and/or modify it under
2
- # the terms of the GNU Lesser General Public License as published by the Free Software
3
- # Foundation; either version 2 of the License, or (at your option) any later
4
- # 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
- """astng manager: avoid multiple astng build of a same module when
33
- possible by providing a class responsible to get astng representation
34
- from various source and using a cache of built modules)
35
-
36
- """
37
-
38
- __docformat__ = "restructuredtext en"
39
-
40
- import sys
41
- import os
42
- from os.path import dirname, basename, abspath, join, isdir, exists
43
-
44
- from logilab.common.modutils import NoSourceFile, is_python_source, \
45
- file_from_modpath, load_module_from_name, modpath_from_file, \
46
- get_module_files, get_source_file, zipimport
47
- from logilab.common.configuration import OptionsProviderMixIn
48
-
49
- from logilab.astng._exceptions import ASTNGBuildingException
50
-
51
- def astng_wrapper(func, modname):
52
- """wrapper to give to ASTNGManager.project_from_files"""
53
- print 'parsing %s...' % modname
54
- try:
55
- return func(modname)
56
- except ASTNGBuildingException, exc:
57
- print exc
58
- except KeyboardInterrupt:
59
- raise
60
- except Exception, exc:
61
- import traceback
62
- traceback.print_exc()
63
-
64
- def safe_repr(obj):
65
- try:
66
- return repr(obj)
67
- except:
68
- return '???'
69
-
70
- def zip_import_data(filepath):
71
- if zipimport is None:
72
- return None, None
73
- for ext in ('.zip', '.egg'):
74
- try:
75
- eggpath, resource = filepath.split(ext + '/', 1)
76
- except ValueError:
77
- continue
78
- try:
79
- importer = zipimport.zipimporter(eggpath + ext)
80
- return importer.get_source(resource), resource.replace('/', '.')
81
- except:
82
- continue
83
- return None, None
84
-
85
-
86
- class ASTNGManager(OptionsProviderMixIn):
87
- """the astng manager, responsible to build astng from files
88
- or modules.
89
-
90
- Use the Borg pattern.
91
- """
92
-
93
- name = 'astng loader'
94
- options = (("ignore",
95
- {'type' : "csv", 'metavar' : "<file>",
96
- 'dest' : "black_list", "default" : ('CVS',),
97
- 'help' : "add <file> (may be a directory) to the black list\
98
- . It should be a base name, not a path. You may set this option multiple times\
99
- ."}),
100
- ("project",
101
- {'default': "No Name", 'type' : 'string', 'short': 'p',
102
- 'metavar' : '<project name>',
103
- 'help' : 'set the project name.'}),
104
- )
105
- brain = {}
106
- def __init__(self, borg=True):
107
- if borg:
108
- self.__dict__ = ASTNGManager.brain
109
- if not self.__dict__:
110
- OptionsProviderMixIn.__init__(self)
111
- self.load_defaults()
112
- # NOTE: cache entries are added by the [re]builder
113
- self._cache = {} #Cache(cache_size)
114
- self._mod_file_cache = {}
115
-
116
- def reset_cache(self):
117
- self._cache = {} #Cache(cache_size)
118
- self._mod_file_cache = {}
119
-
120
- def from_directory(self, directory, modname=None):
121
- """given a module name, return the astng object"""
122
- modname = modname or basename(directory)
123
- directory = abspath(directory)
124
- return Package(directory, modname, self)
125
-
126
- def astng_from_file(self, filepath, modname=None, fallback=True):
127
- """given a module name, return the astng object"""
128
- try:
129
- filepath = get_source_file(filepath, include_no_ext=True)
130
- source = True
131
- except NoSourceFile:
132
- source = False
133
- if modname is None:
134
- modname = '.'.join(modpath_from_file(filepath))
135
- if modname in self._cache:
136
- return self._cache[modname]
137
- if source:
138
- try:
139
- from logilab.astng.builder import ASTNGBuilder
140
- return ASTNGBuilder(self).file_build(filepath, modname)
141
- except (SyntaxError, KeyboardInterrupt, SystemExit):
142
- raise
143
- except Exception, ex:
144
- raise
145
- if __debug__:
146
- print 'error while building astng for', filepath
147
- import traceback
148
- traceback.print_exc()
149
- msg = 'Unable to load module %s (%s)' % (modname, ex)
150
- raise ASTNGBuildingException(msg), None, sys.exc_info()[-1]
151
- elif fallback and modname:
152
- return self.astng_from_module_name(modname)
153
- raise ASTNGBuildingException('unable to get astng for file %s' %
154
- filepath)
155
-
156
- def astng_from_module_name(self, modname, context_file=None):
157
- """given a module name, return the astng object"""
158
- if modname in self._cache:
159
- return self._cache[modname]
160
- old_cwd = os.getcwd()
161
- if context_file:
162
- os.chdir(dirname(context_file))
163
- try:
164
- filepath = self.file_from_module_name(modname, context_file)
165
- if filepath is not None and not is_python_source(filepath):
166
- data, zmodname = zip_import_data(filepath)
167
- if data is not None:
168
- from logilab.astng.builder import ASTNGBuilder
169
- try:
170
- return ASTNGBuilder(self).string_build(data, zmodname,
171
- filepath)
172
- except (SyntaxError, KeyboardInterrupt, SystemExit):
173
- raise
174
- if filepath is None or not is_python_source(filepath):
175
- try:
176
- module = load_module_from_name(modname)
177
- # catch SystemError as well, we may get that on badly
178
- # initialized C-module
179
- except (SystemError, ImportError), ex:
180
- msg = 'Unable to load module %s (%s)' % (modname, ex)
181
- raise ASTNGBuildingException(msg)
182
- return self.astng_from_module(module, modname)
183
- return self.astng_from_file(filepath, modname, fallback=False)
184
- finally:
185
- os.chdir(old_cwd)
186
-
187
- def file_from_module_name(self, modname, contextfile):
188
- try:
189
- value = self._mod_file_cache[(modname, contextfile)]
190
- except KeyError:
191
- try:
192
- value = file_from_modpath(modname.split('.'),
193
- context_file=contextfile)
194
- except ImportError, ex:
195
- msg = 'Unable to load module %s (%s)' % (modname, ex)
196
- value = ASTNGBuildingException(msg)
197
- self._mod_file_cache[(modname, contextfile)] = value
198
- if isinstance(value, ASTNGBuildingException):
199
- raise value
200
- return value
201
-
202
- def astng_from_module(self, module, modname=None):
203
- """given an imported module, return the astng object"""
204
- modname = modname or module.__name__
205
- if modname in self._cache:
206
- return self._cache[modname]
207
- try:
208
- # some builtin modules don't have __file__ attribute
209
- filepath = module.__file__
210
- if is_python_source(filepath):
211
- return self.astng_from_file(filepath, modname)
212
- except AttributeError:
213
- pass
214
- from logilab.astng.builder import ASTNGBuilder
215
- return ASTNGBuilder(self).module_build(module, modname)
216
-
217
- def astng_from_class(self, klass, modname=None):
218
- """get astng for the given class"""
219
- if modname is None:
220
- try:
221
- modname = klass.__module__
222
- except AttributeError:
223
- raise ASTNGBuildingException(
224
- 'Unable to get module for class %s' % safe_repr(klass))
225
- modastng = self.astng_from_module_name(modname)
226
- return modastng.getattr(klass.__name__)[0] # XXX
227
-
228
-
229
- def infer_astng_from_something(self, obj, modname=None, context=None):
230
- """infer astng for the given class"""
231
- if hasattr(obj, '__class__') and not isinstance(obj, type):
232
- klass = obj.__class__
233
- else:
234
- klass = obj
235
- if modname is None:
236
- try:
237
- modname = klass.__module__
238
- except AttributeError:
239
- raise ASTNGBuildingException(
240
- 'Unable to get module for %s' % safe_repr(klass))
241
- except Exception, ex:
242
- raise ASTNGBuildingException(
243
- 'Unexpected error while retrieving module for %s: %s'
244
- % (safe_repr(klass), ex))
245
- try:
246
- name = klass.__name__
247
- except AttributeError:
248
- raise ASTNGBuildingException(
249
- 'Unable to get name for %s' % safe_repr(klass))
250
- except Exception, ex:
251
- raise ASTNGBuildingException(
252
- 'Unexpected error while retrieving name for %s: %s'
253
- % (safe_repr(klass), ex))
254
- # take care, on living object __module__ is regularly wrong :(
255
- modastng = self.astng_from_module_name(modname)
256
- if klass is obj:
257
- for infered in modastng.igetattr(name, context):
258
- yield infered
259
- else:
260
- for infered in modastng.igetattr(name, context):
261
- yield infered.instanciate_class()
262
-
263
- def project_from_files(self, files, func_wrapper=astng_wrapper,
264
- project_name=None, black_list=None):
265
- """return a Project from a list of files or modules"""
266
- # insert current working directory to the python path to have a correct
267
- # behaviour
268
- sys.path.insert(0, os.getcwd())
269
- try:
270
- # build the project representation
271
- project_name = project_name or self.config.project
272
- black_list = black_list or self.config.black_list
273
- project = Project(project_name)
274
- for something in files:
275
- if not exists(something):
276
- fpath = file_from_modpath(something.split('.'))
277
- elif isdir(something):
278
- fpath = join(something, '__init__.py')
279
- else:
280
- fpath = something
281
- astng = func_wrapper(self.astng_from_file, fpath)
282
- if astng is None:
283
- continue
284
- project.path = project.path or astng.file
285
- project.add_module(astng)
286
- base_name = astng.name
287
- # recurse in package except if __init__ was explicitly given
288
- if astng.package and something.find('__init__') == -1:
289
- # recurse on others packages / modules if this is a package
290
- for fpath in get_module_files(dirname(astng.file),
291
- black_list):
292
- astng = func_wrapper(self.astng_from_file, fpath)
293
- if astng is None or astng.name == base_name:
294
- continue
295
- project.add_module(astng)
296
- return project
297
- finally:
298
- sys.path.pop(0)
299
-
300
-
301
-
302
- class Package:
303
- """a package using a dictionary like interface
304
-
305
- load submodules lazily, as they are needed
306
- """
307
-
308
- def __init__(self, path, name, manager):
309
- self.name = name
310
- self.path = abspath(path)
311
- self.manager = manager
312
- self.parent = None
313
- self.lineno = 0
314
- self.__keys = None
315
- self.__subobjects = None
316
-
317
- def fullname(self):
318
- """return the full name of the package (i.e. prefix by the full name
319
- of the parent package if any
320
- """
321
- if self.parent is None:
322
- return self.name
323
- return '%s.%s' % (self.parent.fullname(), self.name)
324
-
325
- def get_subobject(self, name):
326
- """method used to get sub-objects lazily : sub package or module are
327
- only build once they are requested
328
- """
329
- if self.__subobjects is None:
330
- try:
331
- self.__subobjects = dict.fromkeys(self.keys())
332
- except AttributeError:
333
- # python <= 2.3
334
- self.__subobjects = dict([(k, None) for k in self.keys()])
335
- obj = self.__subobjects[name]
336
- if obj is None:
337
- objpath = join(self.path, name)
338
- if isdir(objpath):
339
- obj = Package(objpath, name, self.manager)
340
- obj.parent = self
341
- else:
342
- modname = '%s.%s' % (self.fullname(), name)
343
- obj = self.manager.astng_from_file(objpath + '.py', modname)
344
- self.__subobjects[name] = obj
345
- return obj
346
-
347
- def get_module(self, modname):
348
- """return the Module or Package object with the given name if any
349
- """
350
- path = modname.split('.')
351
- if path[0] != self.name:
352
- raise KeyError(modname)
353
- obj = self
354
- for part in path[1:]:
355
- obj = obj.get_subobject(part)
356
- return obj
357
-
358
- def keys(self):
359
- if self.__keys is None:
360
- self.__keys = []
361
- for fname in os.listdir(self.path):
362
- if fname.endswith('.py'):
363
- self.__keys.append(fname[:-3])
364
- continue
365
- fpath = join(self.path, fname)
366
- if isdir(fpath) and exists(join(fpath, '__init__.py')):
367
- self.__keys.append(fname)
368
- self.__keys.sort()
369
- return self.__keys[:]
370
-
371
- def values(self):
372
- return [self.get_subobject(name) for name in self.keys()]
373
-
374
- def items(self):
375
- return zip(self.keys(), self.values())
376
-
377
- def has_key(self, name):
378
- return bool(self.get(name))
379
-
380
- def get(self, name, default=None):
381
- try:
382
- return self.get_subobject(name)
383
- except KeyError:
384
- return default
385
-
386
- def __getitem__(self, name):
387
- return self.get_subobject(name)
388
- def __contains__(self, name):
389
- return self.has_key(name)
390
- def __iter__(self):
391
- return iter(self.keys())
392
-
393
-
394
- class Project:
395
- """a project handle a set of modules / packages"""
396
- def __init__(self, name=''):
397
- self.name = name
398
- self.path = None
399
- self.modules = []
400
- self.locals = {}
401
- self.__getitem__ = self.locals.__getitem__
402
- self.__iter__ = self.locals.__iter__
403
- self.values = self.locals.values
404
- self.keys = self.locals.keys
405
- self.items = self.locals.items
406
- self.has_key = self.locals.has_key
407
-
408
- def add_module(self, node):
409
- self.locals[node.name] = node
410
- self.modules.append(node)
411
-
412
- def get_module(self, name):
413
- return self.locals[name]
414
-
415
- def get_children(self):
416
- return self.modules
417
-
418
- def __repr__(self):
419
- return '<Project %r at %s (%s modules)>' % (self.name, id(self),
420
- len(self.modules))
421
-
@@ -1,165 +0,0 @@
1
- # This program is free software; you can redistribute it and/or modify it under
2
- # the terms of the GNU Lesser General Public License as published by the Free Software
3
- # Foundation; either version 2 of the License, or (at your option) any later
4
- # 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 mixins for the different nodes.
33
-
34
- """
35
-
36
- from logilab.astng import (ASTNGBuildingException, InferenceError,
37
- NotFoundError)
38
- from logilab.astng.bases import BaseClass
39
-
40
- # /!\ We cannot build a StmtNode(NodeNG) class since modifying "__bases__"
41
- # in "nodes.py" has to work *both* for old-style and new-style classes,
42
- # but we need the StmtMixIn for scoped nodes
43
-
44
- class StmtMixIn(BaseClass):
45
- """StmtMixIn used only for a adding a few attributes"""
46
- is_statement = True
47
-
48
- def replace(self, child, newchild):
49
- sequence = self.child_sequence(child)
50
- newchild.parent = self
51
- child.parent = None
52
- sequence[sequence.index(child)] = newchild
53
-
54
- def next_sibling(self):
55
- """return the next sibling statement"""
56
- stmts = self.parent.child_sequence(self)
57
- index = stmts.index(self)
58
- try:
59
- return stmts[index +1]
60
- except IndexError:
61
- pass
62
-
63
- def previous_sibling(self):
64
- """return the previous sibling statement"""
65
- stmts = self.parent.child_sequence(self)
66
- index = stmts.index(self)
67
- if index >= 1:
68
- return stmts[index -1]
69
-
70
-
71
- class BlockRangeMixIn(BaseClass):
72
- """override block range """
73
- def set_line_info(self, lastchild):
74
- self.fromlineno = self.lineno
75
- self.tolineno = lastchild.tolineno
76
- self.blockstart_tolineno = self._blockstart_toline()
77
-
78
- def _elsed_block_range(self, lineno, orelse, last=None):
79
- """handle block line numbers range for try/finally, for, if and while
80
- statements
81
- """
82
- if lineno == self.fromlineno:
83
- return lineno, lineno
84
- if orelse:
85
- if lineno >= orelse[0].fromlineno:
86
- return lineno, orelse[-1].tolineno
87
- return lineno, orelse[0].fromlineno - 1
88
- return lineno, last or self.tolineno
89
-
90
- class FilterStmtsMixin(object):
91
- """Mixin for statement filtering and assignment type"""
92
-
93
- def _get_filtered_stmts(self, _, node, _stmts, mystmt):
94
- """method used in _filter_stmts to get statemtents and trigger break"""
95
- if self.statement() is mystmt:
96
- # original node's statement is the assignment, only keep
97
- # current node (gen exp, list comp)
98
- return [node], True
99
- return _stmts, False
100
-
101
- def ass_type(self):
102
- return self
103
-
104
-
105
- class AssignTypeMixin(object):
106
-
107
- def ass_type(self):
108
- return self
109
-
110
- def _get_filtered_stmts(self, lookup_node, node, _stmts, mystmt):
111
- """method used in filter_stmts"""
112
- if self is mystmt:
113
- return _stmts, True
114
- if self.statement() is mystmt:
115
- # original node's statement is the assignment, only keep
116
- # current node (gen exp, list comp)
117
- return [node], True
118
- return _stmts, False
119
-
120
-
121
- class ParentAssignTypeMixin(AssignTypeMixin):
122
-
123
- def ass_type(self):
124
- return self.parent.ass_type()
125
-
126
-
127
-
128
- class FromImportMixIn(BaseClass, FilterStmtsMixin):
129
- """MixIn for From and Import Nodes"""
130
-
131
- def _infer_name(self, frame, name):
132
- return name
133
-
134
- def do_import_module(self, modname):
135
- """return the ast for a module whose name is <modname> imported by <self>
136
- """
137
- # handle special case where we are on a package node importing a module
138
- # using the same name as the package, which may end in an infinite loop
139
- # on relative imports
140
- # XXX: no more needed ?
141
- mymodule = self.root()
142
- level = getattr(self, 'level', None) # Import as no level
143
- if mymodule.absolute_modname(modname, level) == mymodule.name:
144
- # FIXME: I don't know what to do here...
145
- raise InferenceError('module importing itself: %s' % modname)
146
- try:
147
- return mymodule.import_module(modname, level=level)
148
- except (ASTNGBuildingException, SyntaxError):
149
- raise InferenceError(modname)
150
-
151
- def real_name(self, asname):
152
- """get name from 'as' name"""
153
- for index in range(len(self.names)):
154
- name, _asname = self.names[index]
155
- if name == '*':
156
- return asname
157
- if not _asname:
158
- name = name.split('.', 1)[0]
159
- _asname = name
160
- if asname == _asname:
161
- return name
162
- raise NotFoundError(asname)
163
-
164
-
165
-