bee_python 0.0.1

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 (503) hide show
  1. data/LICENSE +202 -0
  2. data/build/README +23 -0
  3. data/egg/egg/build.yml +70 -0
  4. data/egg/egg/ez_setup.py +280 -0
  5. data/egg/egg/script.py +12 -0
  6. data/egg/egg/setup.erb +11 -0
  7. data/egg/egg/suite.py +37 -0
  8. data/egg/egg/test.py +31 -0
  9. data/egg/egg.yml +69 -0
  10. data/egg/http/build.erb +53 -0
  11. data/egg/http/server.py +34 -0
  12. data/egg/http.yml +50 -0
  13. data/egg/mysql/mysql.py +43 -0
  14. data/egg/mysql.yml +44 -0
  15. data/egg/project/build.erb +77 -0
  16. data/egg/project/script.py +42 -0
  17. data/egg/project/test.py +31 -0
  18. data/egg/project.yml +59 -0
  19. data/egg/script/build.erb +35 -0
  20. data/egg/script/script.py +42 -0
  21. data/egg/script.yml +50 -0
  22. data/egg/soap/build.erb +52 -0
  23. data/egg/soap/client.py +18 -0
  24. data/egg/soap/server.py +30 -0
  25. data/egg/soap.yml +58 -0
  26. data/egg/source/source.py +42 -0
  27. data/egg/source.yml +47 -0
  28. data/egg/test/test.py +28 -0
  29. data/egg/test.yml +44 -0
  30. data/egg/xmlrpc/build.erb +52 -0
  31. data/egg/xmlrpc/client.py +22 -0
  32. data/egg/xmlrpc/server.py +24 -0
  33. data/egg/xmlrpc.yml +51 -0
  34. data/lib/bee_task_python.rb +390 -0
  35. data/test/build.yml +16 -0
  36. data/test/tc_bee_task_python.rb +27 -0
  37. data/test/test_build.rb +26 -0
  38. data/test/test_build_listener.rb +62 -0
  39. data/test/ts_bee_python.rb +26 -0
  40. data/tools/common/__init__.py +5 -0
  41. data/tools/common/common/__init__.py +140 -0
  42. data/tools/common/common/__pkginfo__.py +43 -0
  43. data/tools/common/common/adbh.py +35 -0
  44. data/tools/common/common/cache.py +114 -0
  45. data/tools/common/common/changelog.py +234 -0
  46. data/tools/common/common/clcommands.py +181 -0
  47. data/tools/common/common/cli.py +212 -0
  48. data/tools/common/common/compat.py +328 -0
  49. data/tools/common/common/configuration.py +1087 -0
  50. data/tools/common/common/contexts.py +58 -0
  51. data/tools/common/common/corbautils.py +117 -0
  52. data/tools/common/common/daemon.py +171 -0
  53. data/tools/common/common/date.py +279 -0
  54. data/tools/common/common/db.py +49 -0
  55. data/tools/common/common/dbf.py +229 -0
  56. data/tools/common/common/debugger.py +208 -0
  57. data/tools/common/common/decorators.py +190 -0
  58. data/tools/common/common/deprecation.py +118 -0
  59. data/tools/common/common/fileutils.py +409 -0
  60. data/tools/common/common/graph.py +259 -0
  61. data/tools/common/common/html.py +142 -0
  62. data/tools/common/common/interface.py +76 -0
  63. data/tools/common/common/logging_ext.py +166 -0
  64. data/tools/common/common/modutils.py +670 -0
  65. data/tools/common/common/optik_ext.py +383 -0
  66. data/tools/common/common/optparser.py +92 -0
  67. data/tools/common/common/pdf_ext.py +111 -0
  68. data/tools/common/common/proc.py +276 -0
  69. data/tools/common/common/pyro_ext.py +146 -0
  70. data/tools/common/common/pytest.py +754 -0
  71. data/tools/common/common/shellutils.py +383 -0
  72. data/tools/common/common/sphinx_ext.py +87 -0
  73. data/tools/common/common/sphinxutils.py +122 -0
  74. data/tools/common/common/sqlgen.py +31 -0
  75. data/tools/common/common/table.py +930 -0
  76. data/tools/common/common/tasksqueue.py +97 -0
  77. data/tools/common/common/test/__init__.py +1 -0
  78. data/tools/common/common/test/data/ChangeLog +184 -0
  79. data/tools/common/common/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
  80. data/tools/common/common/test/data/__init__.py +1 -0
  81. data/tools/common/common/test/data/content_differ_dir/NOTHING +0 -0
  82. data/tools/common/common/test/data/content_differ_dir/README +1 -0
  83. data/tools/common/common/test/data/content_differ_dir/subdir/coin +1 -0
  84. data/tools/common/common/test/data/content_differ_dir/subdir/toto.txt +53 -0
  85. data/tools/common/common/test/data/file_differ_dir/NOTHING +0 -0
  86. data/tools/common/common/test/data/file_differ_dir/README +1 -0
  87. data/tools/common/common/test/data/file_differ_dir/subdir/toto.txt +53 -0
  88. data/tools/common/common/test/data/file_differ_dir/subdirtwo/Hello +0 -0
  89. data/tools/common/common/test/data/find_test/__init__.py +0 -0
  90. data/tools/common/common/test/data/find_test/foo.txt +0 -0
  91. data/tools/common/common/test/data/find_test/module.py +0 -0
  92. data/tools/common/common/test/data/find_test/module2.py +0 -0
  93. data/tools/common/common/test/data/find_test/newlines.txt +0 -0
  94. data/tools/common/common/test/data/find_test/noendingnewline.py +0 -0
  95. data/tools/common/common/test/data/find_test/nonregr.py +0 -0
  96. data/tools/common/common/test/data/find_test/normal_file.txt +0 -0
  97. data/tools/common/common/test/data/find_test/spam.txt +0 -0
  98. data/tools/common/common/test/data/find_test/sub/doc.txt +0 -0
  99. data/tools/common/common/test/data/find_test/sub/momo.py +0 -0
  100. data/tools/common/common/test/data/find_test/test.ini +0 -0
  101. data/tools/common/common/test/data/find_test/test1.msg +0 -0
  102. data/tools/common/common/test/data/find_test/test2.msg +0 -0
  103. data/tools/common/common/test/data/find_test/write_protected_file.txt +0 -0
  104. data/tools/common/common/test/data/foo.txt +9 -0
  105. data/tools/common/common/test/data/module.py +88 -0
  106. data/tools/common/common/test/data/module2.py +77 -0
  107. data/tools/common/common/test/data/newlines.txt +3 -0
  108. data/tools/common/common/test/data/noendingnewline.py +36 -0
  109. data/tools/common/common/test/data/nonregr.py +14 -0
  110. data/tools/common/common/test/data/normal_file.txt +0 -0
  111. data/tools/common/common/test/data/reference_dir/NOTHING +0 -0
  112. data/tools/common/common/test/data/reference_dir/README +1 -0
  113. data/tools/common/common/test/data/reference_dir/subdir/coin +1 -0
  114. data/tools/common/common/test/data/reference_dir/subdir/toto.txt +53 -0
  115. data/tools/common/common/test/data/same_dir/NOTHING +0 -0
  116. data/tools/common/common/test/data/same_dir/README +1 -0
  117. data/tools/common/common/test/data/same_dir/subdir/coin +1 -0
  118. data/tools/common/common/test/data/same_dir/subdir/toto.txt +53 -0
  119. data/tools/common/common/test/data/spam.txt +9 -0
  120. data/tools/common/common/test/data/sub/doc.txt +1 -0
  121. data/tools/common/common/test/data/sub/momo.py +1 -0
  122. data/tools/common/common/test/data/subdir_differ_dir/NOTHING +0 -0
  123. data/tools/common/common/test/data/subdir_differ_dir/README +1 -0
  124. data/tools/common/common/test/data/subdir_differ_dir/subdir/coin +1 -0
  125. data/tools/common/common/test/data/subdir_differ_dir/subdir/toto.txt +53 -0
  126. data/tools/common/common/test/data/test.ini +20 -0
  127. data/tools/common/common/test/data/test1.msg +30 -0
  128. data/tools/common/common/test/data/test2.msg +42 -0
  129. data/tools/common/common/test/data/write_protected_file.txt +0 -0
  130. data/tools/common/common/test/foomod.py +17 -0
  131. data/tools/common/common/test/unittest_cache.py +129 -0
  132. data/tools/common/common/test/unittest_changelog.py +37 -0
  133. data/tools/common/common/test/unittest_compat.py +239 -0
  134. data/tools/common/common/test/unittest_configuration.py +348 -0
  135. data/tools/common/common/test/unittest_date.py +154 -0
  136. data/tools/common/common/test/unittest_decorators.py +62 -0
  137. data/tools/common/common/test/unittest_deprecation.py +76 -0
  138. data/tools/common/common/test/unittest_fileutils.py +133 -0
  139. data/tools/common/common/test/unittest_graph.py +50 -0
  140. data/tools/common/common/test/unittest_html.py +76 -0
  141. data/tools/common/common/test/unittest_interface.py +87 -0
  142. data/tools/common/common/test/unittest_modutils.py +244 -0
  143. data/tools/common/common/test/unittest_pytest.py +50 -0
  144. data/tools/common/common/test/unittest_shellutils.py +248 -0
  145. data/tools/common/common/test/unittest_table.py +448 -0
  146. data/tools/common/common/test/unittest_taskqueue.py +71 -0
  147. data/tools/common/common/test/unittest_testlib.py +956 -0
  148. data/tools/common/common/test/unittest_textutils.py +247 -0
  149. data/tools/common/common/test/unittest_tree.py +248 -0
  150. data/tools/common/common/test/unittest_umessage.py +55 -0
  151. data/tools/common/common/test/unittest_ureports_html.py +64 -0
  152. data/tools/common/common/test/unittest_ureports_text.py +105 -0
  153. data/tools/common/common/test/unittest_xmlutils.py +75 -0
  154. data/tools/common/common/test/utils.py +87 -0
  155. data/tools/common/common/testlib.py +1927 -0
  156. data/tools/common/common/textutils.py +476 -0
  157. data/tools/common/common/tree.py +372 -0
  158. data/tools/common/common/umessage.py +161 -0
  159. data/tools/common/common/ureports/__init__.py +174 -0
  160. data/tools/common/common/ureports/docbook_writer.py +139 -0
  161. data/tools/common/common/ureports/html_writer.py +131 -0
  162. data/tools/common/common/ureports/nodes.py +201 -0
  163. data/tools/common/common/ureports/text_writer.py +140 -0
  164. data/tools/common/common/vcgutils.py +216 -0
  165. data/tools/common/common/visitor.py +107 -0
  166. data/tools/common/common/xmlrpcutils.py +136 -0
  167. data/tools/common/common/xmlutils.py +61 -0
  168. data/tools/compile/compile.py +16 -0
  169. data/tools/coverage/coverage.py +602 -0
  170. data/tools/epydoc/__init__.py +227 -0
  171. data/tools/epydoc/__init__.pyc +0 -0
  172. data/tools/epydoc/apidoc.py +2203 -0
  173. data/tools/epydoc/apidoc.pyc +0 -0
  174. data/tools/epydoc/checker.py +349 -0
  175. data/tools/epydoc/checker.pyc +0 -0
  176. data/tools/epydoc/cli.py +1470 -0
  177. data/tools/epydoc/cli.pyc +0 -0
  178. data/tools/epydoc/compat.py +250 -0
  179. data/tools/epydoc/compat.pyc +0 -0
  180. data/tools/epydoc/docbuilder.py +1358 -0
  181. data/tools/epydoc/docbuilder.pyc +0 -0
  182. data/tools/epydoc/docintrospecter.py +1056 -0
  183. data/tools/epydoc/docintrospecter.pyc +0 -0
  184. data/tools/epydoc/docparser.py +2113 -0
  185. data/tools/epydoc/docparser.pyc +0 -0
  186. data/tools/epydoc/docstringparser.py +1111 -0
  187. data/tools/epydoc/docstringparser.pyc +0 -0
  188. data/tools/epydoc/docwriter/__init__.py +12 -0
  189. data/tools/epydoc/docwriter/__init__.pyc +0 -0
  190. data/tools/epydoc/docwriter/dotgraph.py +1351 -0
  191. data/tools/epydoc/docwriter/dotgraph.pyc +0 -0
  192. data/tools/epydoc/docwriter/html.py +3491 -0
  193. data/tools/epydoc/docwriter/html.pyc +0 -0
  194. data/tools/epydoc/docwriter/html_colorize.py +909 -0
  195. data/tools/epydoc/docwriter/html_colorize.pyc +0 -0
  196. data/tools/epydoc/docwriter/html_css.py +550 -0
  197. data/tools/epydoc/docwriter/html_css.pyc +0 -0
  198. data/tools/epydoc/docwriter/html_help.py +190 -0
  199. data/tools/epydoc/docwriter/html_help.pyc +0 -0
  200. data/tools/epydoc/docwriter/latex.py +1187 -0
  201. data/tools/epydoc/docwriter/latex.pyc +0 -0
  202. data/tools/epydoc/docwriter/plaintext.py +276 -0
  203. data/tools/epydoc/docwriter/plaintext.pyc +0 -0
  204. data/tools/epydoc/docwriter/xlink.py +505 -0
  205. data/tools/epydoc/docwriter/xlink.pyc +0 -0
  206. data/tools/epydoc/gui.py +1148 -0
  207. data/tools/epydoc/gui.pyc +0 -0
  208. data/tools/epydoc/log.py +204 -0
  209. data/tools/epydoc/log.pyc +0 -0
  210. data/tools/epydoc/markup/__init__.py +623 -0
  211. data/tools/epydoc/markup/__init__.pyc +0 -0
  212. data/tools/epydoc/markup/doctest.py +311 -0
  213. data/tools/epydoc/markup/doctest.pyc +0 -0
  214. data/tools/epydoc/markup/epytext.py +2116 -0
  215. data/tools/epydoc/markup/epytext.pyc +0 -0
  216. data/tools/epydoc/markup/javadoc.py +250 -0
  217. data/tools/epydoc/markup/javadoc.pyc +0 -0
  218. data/tools/epydoc/markup/plaintext.py +78 -0
  219. data/tools/epydoc/markup/plaintext.pyc +0 -0
  220. data/tools/epydoc/markup/pyval_repr.py +532 -0
  221. data/tools/epydoc/markup/pyval_repr.pyc +0 -0
  222. data/tools/epydoc/markup/restructuredtext.py +906 -0
  223. data/tools/epydoc/markup/restructuredtext.pyc +0 -0
  224. data/tools/epydoc/test/__init__.py +97 -0
  225. data/tools/epydoc/test/__init__.pyc +0 -0
  226. data/tools/epydoc/test/util.py +226 -0
  227. data/tools/epydoc/test/util.pyc +0 -0
  228. data/tools/epydoc/util.py +289 -0
  229. data/tools/epydoc/util.pyc +0 -0
  230. data/tools/logilab/logilab/__init__.py +5 -0
  231. data/tools/logilab/logilab/astng/__init__.py +82 -0
  232. data/tools/logilab/logilab/astng/__pkginfo__.py +76 -0
  233. data/tools/logilab/logilab/astng/_exceptions.py +64 -0
  234. data/tools/logilab/logilab/astng/_nodes_ast.py +667 -0
  235. data/tools/logilab/logilab/astng/_nodes_compiler.py +758 -0
  236. data/tools/logilab/logilab/astng/bases.py +608 -0
  237. data/tools/logilab/logilab/astng/builder.py +239 -0
  238. data/tools/logilab/logilab/astng/inference.py +426 -0
  239. data/tools/logilab/logilab/astng/inspector.py +289 -0
  240. data/tools/logilab/logilab/astng/manager.py +421 -0
  241. data/tools/logilab/logilab/astng/mixins.py +165 -0
  242. data/tools/logilab/logilab/astng/node_classes.py +848 -0
  243. data/tools/logilab/logilab/astng/nodes.py +85 -0
  244. data/tools/logilab/logilab/astng/nodes_as_string.py +389 -0
  245. data/tools/logilab/logilab/astng/patchcomptransformer.py +159 -0
  246. data/tools/logilab/logilab/astng/protocols.py +333 -0
  247. data/tools/logilab/logilab/astng/raw_building.py +212 -0
  248. data/tools/logilab/logilab/astng/rebuilder.py +307 -0
  249. data/tools/logilab/logilab/astng/scoped_nodes.py +951 -0
  250. data/tools/logilab/logilab/astng/test/__init__.py +19 -0
  251. data/tools/logilab/logilab/astng/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
  252. data/tools/logilab/logilab/astng/test/data/MyPyPa-0.1.0-py2.5.zip +0 -0
  253. data/tools/logilab/logilab/astng/test/data/SSL1/Connection1.py +33 -0
  254. data/tools/logilab/logilab/astng/test/data/SSL1/__init__.py +20 -0
  255. data/tools/logilab/logilab/astng/test/data/__init__.py +20 -0
  256. data/tools/logilab/logilab/astng/test/data/all.py +29 -0
  257. data/tools/logilab/logilab/astng/test/data/appl/__init__.py +23 -0
  258. data/tools/logilab/logilab/astng/test/data/appl/myConnection.py +30 -0
  259. data/tools/logilab/logilab/astng/test/data/format.py +34 -0
  260. data/tools/logilab/logilab/astng/test/data/module.py +90 -0
  261. data/tools/logilab/logilab/astng/test/data/module2.py +112 -0
  262. data/tools/logilab/logilab/astng/test/data/noendingnewline.py +57 -0
  263. data/tools/logilab/logilab/astng/test/data/nonregr.py +76 -0
  264. data/tools/logilab/logilab/astng/test/data/notall.py +28 -0
  265. data/tools/logilab/logilab/astng/test/data2/__init__.py +20 -0
  266. data/tools/logilab/logilab/astng/test/data2/clientmodule_test.py +51 -0
  267. data/tools/logilab/logilab/astng/test/data2/suppliermodule_test.py +32 -0
  268. data/tools/logilab/logilab/astng/test/regrtest.py +135 -0
  269. data/tools/logilab/logilab/astng/test/regrtest_data/absimport.py +22 -0
  270. data/tools/logilab/logilab/astng/test/regrtest_data/descriptor_crash.py +31 -0
  271. data/tools/logilab/logilab/astng/test/regrtest_data/import_package_subpackage_module.py +68 -0
  272. data/tools/logilab/logilab/astng/test/regrtest_data/package/__init__.py +24 -0
  273. data/tools/logilab/logilab/astng/test/regrtest_data/package/subpackage/__init__.py +20 -0
  274. data/tools/logilab/logilab/astng/test/regrtest_data/package/subpackage/module.py +20 -0
  275. data/tools/logilab/logilab/astng/test/unittest_builder.py +684 -0
  276. data/tools/logilab/logilab/astng/test/unittest_inference.py +1112 -0
  277. data/tools/logilab/logilab/astng/test/unittest_inspector.py +105 -0
  278. data/tools/logilab/logilab/astng/test/unittest_lookup.py +302 -0
  279. data/tools/logilab/logilab/astng/test/unittest_manager.py +98 -0
  280. data/tools/logilab/logilab/astng/test/unittest_nodes.py +302 -0
  281. data/tools/logilab/logilab/astng/test/unittest_scoped_nodes.py +501 -0
  282. data/tools/logilab/logilab/astng/test/unittest_utils.py +104 -0
  283. data/tools/logilab/logilab/astng/utils.py +342 -0
  284. data/tools/logilab/logilab/common/__init__.py +140 -0
  285. data/tools/logilab/logilab/common/__pkginfo__.py +43 -0
  286. data/tools/logilab/logilab/common/adbh.py +35 -0
  287. data/tools/logilab/logilab/common/cache.py +114 -0
  288. data/tools/logilab/logilab/common/changelog.py +234 -0
  289. data/tools/logilab/logilab/common/clcommands.py +181 -0
  290. data/tools/logilab/logilab/common/cli.py +212 -0
  291. data/tools/logilab/logilab/common/compat.py +328 -0
  292. data/tools/logilab/logilab/common/configuration.py +1087 -0
  293. data/tools/logilab/logilab/common/contexts.py +58 -0
  294. data/tools/logilab/logilab/common/corbautils.py +117 -0
  295. data/tools/logilab/logilab/common/daemon.py +171 -0
  296. data/tools/logilab/logilab/common/date.py +279 -0
  297. data/tools/logilab/logilab/common/db.py +49 -0
  298. data/tools/logilab/logilab/common/dbf.py +229 -0
  299. data/tools/logilab/logilab/common/debugger.py +208 -0
  300. data/tools/logilab/logilab/common/decorators.py +190 -0
  301. data/tools/logilab/logilab/common/deprecation.py +118 -0
  302. data/tools/logilab/logilab/common/fileutils.py +409 -0
  303. data/tools/logilab/logilab/common/graph.py +259 -0
  304. data/tools/logilab/logilab/common/html.py +142 -0
  305. data/tools/logilab/logilab/common/interface.py +76 -0
  306. data/tools/logilab/logilab/common/logging_ext.py +166 -0
  307. data/tools/logilab/logilab/common/modutils.py +670 -0
  308. data/tools/logilab/logilab/common/optik_ext.py +383 -0
  309. data/tools/logilab/logilab/common/optparser.py +92 -0
  310. data/tools/logilab/logilab/common/pdf_ext.py +111 -0
  311. data/tools/logilab/logilab/common/proc.py +276 -0
  312. data/tools/logilab/logilab/common/pyro_ext.py +146 -0
  313. data/tools/logilab/logilab/common/pytest.py +754 -0
  314. data/tools/logilab/logilab/common/shellutils.py +383 -0
  315. data/tools/logilab/logilab/common/sphinx_ext.py +87 -0
  316. data/tools/logilab/logilab/common/sphinxutils.py +122 -0
  317. data/tools/logilab/logilab/common/sqlgen.py +31 -0
  318. data/tools/logilab/logilab/common/table.py +930 -0
  319. data/tools/logilab/logilab/common/tasksqueue.py +97 -0
  320. data/tools/logilab/logilab/common/test/__init__.py +1 -0
  321. data/tools/logilab/logilab/common/test/data/ChangeLog +184 -0
  322. data/tools/logilab/logilab/common/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
  323. data/tools/logilab/logilab/common/test/data/__init__.py +1 -0
  324. data/tools/logilab/logilab/common/test/data/content_differ_dir/NOTHING +0 -0
  325. data/tools/logilab/logilab/common/test/data/content_differ_dir/README +1 -0
  326. data/tools/logilab/logilab/common/test/data/content_differ_dir/subdir/coin +1 -0
  327. data/tools/logilab/logilab/common/test/data/content_differ_dir/subdir/toto.txt +53 -0
  328. data/tools/logilab/logilab/common/test/data/file_differ_dir/NOTHING +0 -0
  329. data/tools/logilab/logilab/common/test/data/file_differ_dir/README +1 -0
  330. data/tools/logilab/logilab/common/test/data/file_differ_dir/subdir/toto.txt +53 -0
  331. data/tools/logilab/logilab/common/test/data/file_differ_dir/subdirtwo/Hello +0 -0
  332. data/tools/logilab/logilab/common/test/data/find_test/__init__.py +0 -0
  333. data/tools/logilab/logilab/common/test/data/find_test/foo.txt +0 -0
  334. data/tools/logilab/logilab/common/test/data/find_test/module.py +0 -0
  335. data/tools/logilab/logilab/common/test/data/find_test/module2.py +0 -0
  336. data/tools/logilab/logilab/common/test/data/find_test/newlines.txt +0 -0
  337. data/tools/logilab/logilab/common/test/data/find_test/noendingnewline.py +0 -0
  338. data/tools/logilab/logilab/common/test/data/find_test/nonregr.py +0 -0
  339. data/tools/logilab/logilab/common/test/data/find_test/normal_file.txt +0 -0
  340. data/tools/logilab/logilab/common/test/data/find_test/spam.txt +0 -0
  341. data/tools/logilab/logilab/common/test/data/find_test/sub/doc.txt +0 -0
  342. data/tools/logilab/logilab/common/test/data/find_test/sub/momo.py +0 -0
  343. data/tools/logilab/logilab/common/test/data/find_test/test.ini +0 -0
  344. data/tools/logilab/logilab/common/test/data/find_test/test1.msg +0 -0
  345. data/tools/logilab/logilab/common/test/data/find_test/test2.msg +0 -0
  346. data/tools/logilab/logilab/common/test/data/find_test/write_protected_file.txt +0 -0
  347. data/tools/logilab/logilab/common/test/data/foo.txt +9 -0
  348. data/tools/logilab/logilab/common/test/data/module.py +88 -0
  349. data/tools/logilab/logilab/common/test/data/module2.py +77 -0
  350. data/tools/logilab/logilab/common/test/data/newlines.txt +3 -0
  351. data/tools/logilab/logilab/common/test/data/noendingnewline.py +36 -0
  352. data/tools/logilab/logilab/common/test/data/nonregr.py +14 -0
  353. data/tools/logilab/logilab/common/test/data/normal_file.txt +0 -0
  354. data/tools/logilab/logilab/common/test/data/reference_dir/NOTHING +0 -0
  355. data/tools/logilab/logilab/common/test/data/reference_dir/README +1 -0
  356. data/tools/logilab/logilab/common/test/data/reference_dir/subdir/coin +1 -0
  357. data/tools/logilab/logilab/common/test/data/reference_dir/subdir/toto.txt +53 -0
  358. data/tools/logilab/logilab/common/test/data/same_dir/NOTHING +0 -0
  359. data/tools/logilab/logilab/common/test/data/same_dir/README +1 -0
  360. data/tools/logilab/logilab/common/test/data/same_dir/subdir/coin +1 -0
  361. data/tools/logilab/logilab/common/test/data/same_dir/subdir/toto.txt +53 -0
  362. data/tools/logilab/logilab/common/test/data/spam.txt +9 -0
  363. data/tools/logilab/logilab/common/test/data/sub/doc.txt +1 -0
  364. data/tools/logilab/logilab/common/test/data/sub/momo.py +1 -0
  365. data/tools/logilab/logilab/common/test/data/subdir_differ_dir/NOTHING +0 -0
  366. data/tools/logilab/logilab/common/test/data/subdir_differ_dir/README +1 -0
  367. data/tools/logilab/logilab/common/test/data/subdir_differ_dir/subdir/coin +1 -0
  368. data/tools/logilab/logilab/common/test/data/subdir_differ_dir/subdir/toto.txt +53 -0
  369. data/tools/logilab/logilab/common/test/data/test.ini +20 -0
  370. data/tools/logilab/logilab/common/test/data/test1.msg +30 -0
  371. data/tools/logilab/logilab/common/test/data/test2.msg +42 -0
  372. data/tools/logilab/logilab/common/test/data/write_protected_file.txt +0 -0
  373. data/tools/logilab/logilab/common/test/foomod.py +17 -0
  374. data/tools/logilab/logilab/common/test/unittest_cache.py +129 -0
  375. data/tools/logilab/logilab/common/test/unittest_changelog.py +37 -0
  376. data/tools/logilab/logilab/common/test/unittest_compat.py +239 -0
  377. data/tools/logilab/logilab/common/test/unittest_configuration.py +348 -0
  378. data/tools/logilab/logilab/common/test/unittest_date.py +154 -0
  379. data/tools/logilab/logilab/common/test/unittest_decorators.py +62 -0
  380. data/tools/logilab/logilab/common/test/unittest_deprecation.py +76 -0
  381. data/tools/logilab/logilab/common/test/unittest_fileutils.py +133 -0
  382. data/tools/logilab/logilab/common/test/unittest_graph.py +50 -0
  383. data/tools/logilab/logilab/common/test/unittest_html.py +76 -0
  384. data/tools/logilab/logilab/common/test/unittest_interface.py +87 -0
  385. data/tools/logilab/logilab/common/test/unittest_modutils.py +244 -0
  386. data/tools/logilab/logilab/common/test/unittest_pytest.py +50 -0
  387. data/tools/logilab/logilab/common/test/unittest_shellutils.py +248 -0
  388. data/tools/logilab/logilab/common/test/unittest_table.py +448 -0
  389. data/tools/logilab/logilab/common/test/unittest_taskqueue.py +71 -0
  390. data/tools/logilab/logilab/common/test/unittest_testlib.py +956 -0
  391. data/tools/logilab/logilab/common/test/unittest_textutils.py +247 -0
  392. data/tools/logilab/logilab/common/test/unittest_tree.py +248 -0
  393. data/tools/logilab/logilab/common/test/unittest_umessage.py +55 -0
  394. data/tools/logilab/logilab/common/test/unittest_ureports_html.py +64 -0
  395. data/tools/logilab/logilab/common/test/unittest_ureports_text.py +105 -0
  396. data/tools/logilab/logilab/common/test/unittest_xmlutils.py +75 -0
  397. data/tools/logilab/logilab/common/test/utils.py +87 -0
  398. data/tools/logilab/logilab/common/testlib.py +1927 -0
  399. data/tools/logilab/logilab/common/textutils.py +476 -0
  400. data/tools/logilab/logilab/common/tree.py +372 -0
  401. data/tools/logilab/logilab/common/umessage.py +161 -0
  402. data/tools/logilab/logilab/common/ureports/__init__.py +174 -0
  403. data/tools/logilab/logilab/common/ureports/docbook_writer.py +139 -0
  404. data/tools/logilab/logilab/common/ureports/html_writer.py +131 -0
  405. data/tools/logilab/logilab/common/ureports/nodes.py +201 -0
  406. data/tools/logilab/logilab/common/ureports/text_writer.py +140 -0
  407. data/tools/logilab/logilab/common/vcgutils.py +216 -0
  408. data/tools/logilab/logilab/common/visitor.py +107 -0
  409. data/tools/logilab/logilab/common/xmlrpcutils.py +136 -0
  410. data/tools/logilab/logilab/common/xmlutils.py +61 -0
  411. data/tools/pychecker/COPYRIGHT +31 -0
  412. data/tools/pychecker/ChangeLog +349 -0
  413. data/tools/pychecker/CodeChecks.py +1969 -0
  414. data/tools/pychecker/CodeChecks.pyc +0 -0
  415. data/tools/pychecker/CodeChecks.pyo +0 -0
  416. data/tools/pychecker/Config.py +475 -0
  417. data/tools/pychecker/Config.pyc +0 -0
  418. data/tools/pychecker/Config.pyo +0 -0
  419. data/tools/pychecker/KNOWN_BUGS +100 -0
  420. data/tools/pychecker/MAINTAINERS +81 -0
  421. data/tools/pychecker/NEWS +406 -0
  422. data/tools/pychecker/OP.py +131 -0
  423. data/tools/pychecker/OP.pyc +0 -0
  424. data/tools/pychecker/OP.pyo +0 -0
  425. data/tools/pychecker/OptionTypes.py +117 -0
  426. data/tools/pychecker/OptionTypes.pyc +0 -0
  427. data/tools/pychecker/OptionTypes.pyo +0 -0
  428. data/tools/pychecker/README +152 -0
  429. data/tools/pychecker/Stack.py +115 -0
  430. data/tools/pychecker/Stack.pyc +0 -0
  431. data/tools/pychecker/Stack.pyo +0 -0
  432. data/tools/pychecker/TODO +101 -0
  433. data/tools/pychecker/VERSION +1 -0
  434. data/tools/pychecker/Warning.py +50 -0
  435. data/tools/pychecker/Warning.pyc +0 -0
  436. data/tools/pychecker/Warning.pyo +0 -0
  437. data/tools/pychecker/__init__.py +17 -0
  438. data/tools/pychecker/__init__.pyc +0 -0
  439. data/tools/pychecker/__init__.pyo +0 -0
  440. data/tools/pychecker/checker.py +961 -0
  441. data/tools/pychecker/checker.pyc +0 -0
  442. data/tools/pychecker/checker.pyo +0 -0
  443. data/tools/pychecker/function.py +159 -0
  444. data/tools/pychecker/function.pyc +0 -0
  445. data/tools/pychecker/function.pyo +0 -0
  446. data/tools/pychecker/msgs.py +175 -0
  447. data/tools/pychecker/msgs.pyc +0 -0
  448. data/tools/pychecker/msgs.pyo +0 -0
  449. data/tools/pychecker/options.py +275 -0
  450. data/tools/pychecker/options.pyc +0 -0
  451. data/tools/pychecker/options.pyo +0 -0
  452. data/tools/pychecker/pcmodules.py +19 -0
  453. data/tools/pychecker/pcmodules.pyc +0 -0
  454. data/tools/pychecker/pcmodules.pyo +0 -0
  455. data/tools/pychecker/printer.py +47 -0
  456. data/tools/pychecker/printer.pyc +0 -0
  457. data/tools/pychecker/printer.pyo +0 -0
  458. data/tools/pychecker/python.py +427 -0
  459. data/tools/pychecker/python.pyc +0 -0
  460. data/tools/pychecker/python.pyo +0 -0
  461. data/tools/pychecker/utils.py +102 -0
  462. data/tools/pychecker/utils.pyc +0 -0
  463. data/tools/pychecker/utils.pyo +0 -0
  464. data/tools/pychecker/warn.py +778 -0
  465. data/tools/pychecker/warn.pyc +0 -0
  466. data/tools/pychecker/warn.pyo +0 -0
  467. data/tools/pylint2/pylint/__init__.py +16 -0
  468. data/tools/pylint2/pylint/__pkginfo__.py +67 -0
  469. data/tools/pylint2/pylint/checkers/__init__.py +155 -0
  470. data/tools/pylint2/pylint/checkers/base.py +749 -0
  471. data/tools/pylint2/pylint/checkers/classes.py +527 -0
  472. data/tools/pylint2/pylint/checkers/design_analysis.py +344 -0
  473. data/tools/pylint2/pylint/checkers/exceptions.py +183 -0
  474. data/tools/pylint2/pylint/checkers/format.py +367 -0
  475. data/tools/pylint2/pylint/checkers/imports.py +379 -0
  476. data/tools/pylint2/pylint/checkers/logging.py +98 -0
  477. data/tools/pylint2/pylint/checkers/misc.py +128 -0
  478. data/tools/pylint2/pylint/checkers/newstyle.py +107 -0
  479. data/tools/pylint2/pylint/checkers/raw_metrics.py +125 -0
  480. data/tools/pylint2/pylint/checkers/similar.py +333 -0
  481. data/tools/pylint2/pylint/checkers/string_format.py +239 -0
  482. data/tools/pylint2/pylint/checkers/typecheck.py +364 -0
  483. data/tools/pylint2/pylint/checkers/utils.py +208 -0
  484. data/tools/pylint2/pylint/checkers/variables.py +498 -0
  485. data/tools/pylint2/pylint/config.py +149 -0
  486. data/tools/pylint2/pylint/epylint.py +149 -0
  487. data/tools/pylint2/pylint/gui.py +433 -0
  488. data/tools/pylint2/pylint/interfaces.py +98 -0
  489. data/tools/pylint2/pylint/lint.py +914 -0
  490. data/tools/pylint2/pylint/pyreverse/__init__.py +5 -0
  491. data/tools/pylint2/pylint/pyreverse/diadefslib.py +229 -0
  492. data/tools/pylint2/pylint/pyreverse/diagrams.py +247 -0
  493. data/tools/pylint2/pylint/pyreverse/main.py +123 -0
  494. data/tools/pylint2/pylint/pyreverse/utils.py +131 -0
  495. data/tools/pylint2/pylint/pyreverse/writer.py +196 -0
  496. data/tools/pylint2/pylint/reporters/__init__.py +67 -0
  497. data/tools/pylint2/pylint/reporters/guireporter.py +36 -0
  498. data/tools/pylint2/pylint/reporters/html.py +69 -0
  499. data/tools/pylint2/pylint/reporters/text.py +156 -0
  500. data/tools/pylint2/pylint/utils.py +518 -0
  501. data/tools/pylint2/pylint.py +16 -0
  502. data/tools/test/suite.py +35 -0
  503. metadata +566 -0
@@ -0,0 +1,152 @@
1
+
2
+ PyChecker is a tool for finding bugs in python source code.
3
+ It finds problems that are typically caught by a compiler for less
4
+ dynamic languages, like C and C++. It is similar to lint.
5
+ Because of the dynamic nature of python, some warnings
6
+ may be incorrect; however, spurious warnings should be fairly infrequent.
7
+
8
+ PyChecker works in a combination of ways. First, it imports each
9
+ module. If there is an import error, the module cannot be processed.
10
+ The import provides some basic information about the module. The code
11
+ for each function, class, and method is checked for possible problems.
12
+
13
+ Types of problems that can be found include:
14
+
15
+ * No global found (e.g., using a module without importing it)
16
+ * Passing the wrong number of parameters to functions/methods/constructors
17
+ * Passing the wrong number of parameters to builtin functions & methods
18
+ * Using format strings that don't match arguments
19
+ * Using class methods and attributes that don't exist
20
+ * Changing signature when overriding a method
21
+ * Redefining a function/class/method in the same scope
22
+ * Using a variable before setting it
23
+ * self not the first parameter to a method
24
+ * Unused globals and locals (module or variable)
25
+ * Unused function/method arguments (can ignore self)
26
+ * No doc strings in modules, classes, functions, and methods
27
+
28
+ Using PyChecker
29
+ ---------------
30
+ To use PyChecker, pass the python source files you want to check
31
+ on the command line:
32
+
33
+ pychecker file1.py file2.py ...
34
+
35
+ Note: On Windows, use pychecker.bat. You may also need to add
36
+ python/scripts to your PATH.
37
+
38
+ pychecker and pychecker.bat will only exist if pychecker has been
39
+ installed. To install, do: python setup.py install
40
+
41
+ Note: If you haven't installed pychecker, it can be run by doing:
42
+ python pychecker/checker.py
43
+
44
+ An alternate way to use PyChecker is to import it in your code.
45
+ See 'Importing PyChecker' below for more details.
46
+
47
+ If there are import dependencies in your source files, you should
48
+ import those files first on the command line in order to get as many
49
+ files checked as possible.
50
+
51
+ PyChecker works with Python 2.0 through 2.3.
52
+ Some features don't work on earlier versions of Python.
53
+ I only regularly test with versions 2.2 and 2.3.
54
+
55
+ You can use the test files as examples:
56
+
57
+ pychecker [options] test_input/*.py
58
+
59
+ If you want to change the default behaviour, you can pass command line options
60
+ or define a .pycheckrc file. For an example, look at pycheckrc.
61
+
62
+ To show the available options, do:
63
+
64
+ pychecker -h
65
+
66
+ Some of the most common options are:
67
+
68
+ --only only warn about files passed on the command line [off]
69
+ -#, --limit the maximum number of warnings to be displayed [10]
70
+ -s, --shadowbuiltin check if a variable shadows a builtin [on]
71
+ -q, --stdlib ignore warnings from files under standard library [off]
72
+ -T, --argsused unused method/function arguments [on]
73
+
74
+ There is a simple GUI which is not maintained much. It is good
75
+ for showing all the options and also allows you to run pychecker.
76
+ To run options, you will need to start it manually:
77
+
78
+ python pychecker/options.py
79
+
80
+ If you want to suppress warnings on a module/function/class/method,
81
+ you can define a suppressions dictionary in .pycheckrc.
82
+ Examples of keys are: 'module', 'module.function',
83
+ 'module.class', 'module.class.method', etc.
84
+
85
+ You can also define suppressions in your code by doing:
86
+
87
+ __pychecker__ = 'no-namedargs maxreturns=0 unusednames=foo,bar'
88
+
89
+ The format for __pychecker__ values and values in the suppressions dictionary
90
+ are the same. Dashes (--) are optional when preceding long option names.
91
+
92
+ Importing PyChecker
93
+ -------------------
94
+ You can import PyChecker in your code's main module, by doing:
95
+
96
+ import pychecker.checker
97
+
98
+ This will allow each module imported after PyChecker to be checked
99
+ (other than the main module). NOTE: Modules imported before PyChecker
100
+ will not be checked. Warnings will be displayed on stdout
101
+ (ie, PyChecker uses print).
102
+
103
+ Since you can't pass command line parameters, you can do:
104
+
105
+ os.environ['PYCHECKER'] = 'command line options here'
106
+
107
+ This is equivalent of setting PYCHECKER in the shell environment:
108
+
109
+ PYCHECKER='no-namedargs maxreturns=0' /path/to/your/program
110
+
111
+ If you want to disable the warnings (and processing done by PyChecker),
112
+ prior to importing PyChecker, do:
113
+
114
+ os.environ['PYCHECKER_DISABLED'] = 1
115
+
116
+ This is equivalent of setting PYCHECKER_DISABLED in the shell environment:
117
+
118
+ PYCHECKER_DISABLED=1 /path/to/your/program
119
+
120
+ Internal Errors
121
+ ---------------
122
+ If you find a bug in PyChecker, meaning you see something like:
123
+
124
+ pychecker myfile.py
125
+
126
+ myfile.py:13 INTERNAL ERROR -- STOPPED PROCESSING FUNCTION --
127
+ Traceback (most recent call last):
128
+ File "./pychecker/warn.py", line 364, in _checkFunction
129
+ stack, oparg, lastLineNum)
130
+ File "./pychecker/warn.py", line 195, in _handleFunctionCall
131
+ kwArgs.append(stack[i].data)
132
+ IndexError: list index out of range
133
+
134
+ Please post a bug in the SourceForge Tracker
135
+ (https://sourceforge.net/tracker/?atid=382217&group_id=24686&func=browse)
136
+ or send mail indicating the version of PyChecker, *your source file*
137
+ which broke PyChecker (myfile.py in the example above), and the traceback.
138
+ It is very helpful to provide a simple test case to demonstrate the problem.
139
+ It helps to have the entire file and all the dependencies if you cannot
140
+ produce a simple test case. But if you can't provide a test case nor
141
+ the file(s), I may be able to figure out the problem with just the line
142
+ which broke PyChecker (myfile.py:13 in the example above).
143
+
144
+ Good Luck! As always, feedback is greatly appreciated.
145
+
146
+ Neal
147
+ pychecker-list@lists.sourceforge.net
148
+
149
+ PyChecker can be found on SourceForge at:
150
+ http://pychecker.sourceforge.net/
151
+ http://sourceforge.net/projects/pychecker
152
+
@@ -0,0 +1,115 @@
1
+ #!/usr/bin/env python
2
+
3
+ # Copyright (c) 2001-2002, MetaSlash Inc. All rights reserved.
4
+
5
+ """
6
+ Module to hold manipulation of elements on the stack.
7
+ """
8
+
9
+ import types
10
+ from pychecker import utils
11
+
12
+ DATA_UNKNOWN = "-unknown-"
13
+ LOCALS = 'locals'
14
+
15
+ # These should really be defined by subclasses
16
+ TYPE_UNKNOWN = "-unknown-"
17
+ TYPE_FUNC_RETURN = "-return-value-"
18
+ TYPE_ATTRIBUTE = "-attribute-"
19
+ TYPE_COMPARISON = "-comparison-"
20
+ TYPE_GLOBAL = "-global-"
21
+ TYPE_EXCEPT = "-except-"
22
+
23
+ class Item :
24
+ "Representation of data on the stack"
25
+
26
+ def __init__(self, data, dataType, const = 0, length = 0) :
27
+ self.data = data
28
+ self.type = dataType
29
+ self.const = const
30
+ self.length = length
31
+ self.is_really_string = 0
32
+
33
+ def __str__(self) :
34
+ if type(self.data) == types.TupleType :
35
+ value = '('
36
+ for item in self.data :
37
+ value = value + utils.safestr(item) + ', '
38
+ # strip off the ', ' for multiple items
39
+ if len(self.data) > 1 :
40
+ value = value[:-2]
41
+ return value + ')'
42
+ return utils.safestr(self.data)
43
+
44
+ def __repr__(self):
45
+ return 'Stack Item: (%r, %r, %d)' % (self.data, self.type, self.const)
46
+
47
+ def isNone(self) :
48
+ return (self.type != TYPE_UNKNOWN and self.data is None or
49
+ (self.data == 'None' and not self.const))
50
+
51
+ def isImplicitNone(self) :
52
+ return self.data is None and self.const
53
+
54
+ def isMethodCall(self, c, methodArgName):
55
+ return self.type == TYPE_ATTRIBUTE and c != None and \
56
+ len(self.data) == 2 and self.data[0] == methodArgName
57
+
58
+ def isLocals(self) :
59
+ return self.type == types.DictType and self.data == LOCALS
60
+
61
+ def setStringType(self, value = types.StringType):
62
+ self.is_really_string = value == types.StringType
63
+
64
+ def getType(self, typeMap) :
65
+ if self.type != types.StringType or self.is_really_string:
66
+ return self.type
67
+ if self.const :
68
+ return type(self.data)
69
+ if type(self.data) == types.StringType :
70
+ localTypes = typeMap.get(self.data, [])
71
+ if len(localTypes) == 1 :
72
+ return localTypes[0]
73
+ return TYPE_UNKNOWN
74
+
75
+ def getName(self) :
76
+ if self.type == TYPE_ATTRIBUTE and type(self.data) != types.StringType:
77
+ strValue = ""
78
+ # convert the tuple into a string ('self', 'data') -> self.data
79
+ for item in self.data :
80
+ strValue = '%s.%s' % (strValue, utils.safestr(item))
81
+ return strValue[1:]
82
+ return utils.safestr(self.data)
83
+
84
+ def addAttribute(self, attr) :
85
+ if type(self.data) == types.TupleType :
86
+ self.data = self.data + (attr,)
87
+ else :
88
+ self.data = (self.data, attr)
89
+ self.type = TYPE_ATTRIBUTE
90
+
91
+
92
+ def makeDict(values = (), const = 1) :
93
+ values = tuple(values)
94
+ if not values:
95
+ values = ('<on-stack>',)
96
+ return Item(values, types.DictType, const, len(values))
97
+
98
+ def makeTuple(values = (), const = 1) :
99
+ return Item(tuple(values), types.TupleType, const, len(values))
100
+
101
+ def makeList(values = [], const = 1) :
102
+ return Item(values, types.ListType, const, len(values))
103
+
104
+ def makeFuncReturnValue(stackValue, argCount) :
105
+ data = DATA_UNKNOWN
106
+ # vars() without params == locals()
107
+ if stackValue.type == TYPE_GLOBAL and \
108
+ (stackValue.data == LOCALS or
109
+ (argCount == 0 and stackValue.data == 'vars')) :
110
+ data = LOCALS
111
+ return Item(data, TYPE_FUNC_RETURN)
112
+
113
+ def makeComparison(stackItems, comparison) :
114
+ return Item((stackItems[0], comparison, stackItems[1]), TYPE_COMPARISON)
115
+
Binary file
Binary file
@@ -0,0 +1,101 @@
1
+ Goals for next minor release:
2
+ -----------------------------
3
+ * Add warning for duplicated elif conditions
4
+ * Check for "if s.find(str):" s/b "if s.find(str) >= 0:" where s is a string
5
+ * Add warning for: x % x is always 0
6
+ * Add warning when using listcomp variable (x) outside of [... for x in ...]
7
+ * Add warning for import overriding builtin (from os import *)
8
+ * Add warning if defining a module name that's also in the stdlib
9
+ * Add decorator so you can do:
10
+
11
+ @pychecker(maxlocals=42)
12
+ def myfunc():
13
+
14
+ * Support function attributes in addition to __pychecker__
15
+ * Add warning when iterating over a dict (keys, values, items) and mutating it
16
+ * Add warning for __special_ or __special or _special__ etc.
17
+ * Add warning about redefining a function/method with different signatures
18
+ * Add warning when base class has similar name and same signature:
19
+
20
+ class Base:
21
+ def foobar():
22
+ class Sub(Base):
23
+ def foobaz(): # damn, I wanted to override foobar
24
+
25
+ * If unknown name, suggest similar names
26
+
27
+ * Check for return from finally (disables exception, default off?)
28
+ * Add another boolean warning for: if bool(xxx):
29
+ * Need way to configure broken (and non-broken) versions of evil C extensions
30
+ * Add estimated difficulty to research/fix error
31
+ * Shouldn't warn about using return value for generators
32
+ * Suppress argument (self) name warnings if func has no impl?
33
+ * Add warning for a variable that is constant
34
+ ie, initialized and used, but never changed
35
+
36
+ * Add warning for catching AttributeError when there is no attr access
37
+ ZeroDivisionError w/no division?
38
+ KeyError UnboundLocalError IndexError IndentationError ImportError
39
+ * Add warning for a import b & b import a (import loops)
40
+ * Check that classes with __slots__ don't get/set any other attributes
41
+ * Expectations of __methods__, constness (don't modify in __nonzero__)
42
+ * Add warning if dict has duplicate keys when creating from literals
43
+ * __new__ should use cls, not self???
44
+
45
+ * If arg has default value of None, check that arg is assigned some value
46
+
47
+ * check if returning self from __str__()
48
+ * check for str1 in str2 == otherValue
49
+ * Fix dependancy problem w/checkReturnValues & checkImplicitReturns
50
+ * check for use of self.attr before setting self.attr in __init__ method
51
+ * Handle sys.exit() as non-returnable condition
52
+ * Warn about non-escaping backslashes???
53
+ * vars() should use locals, like locals(), hmmm, it should already ...
54
+
55
+ Goals for next major release (0.9):
56
+ -----------------------------------
57
+ * Improve handling when importing packages (ie, don't import modules)
58
+ - Make a base class to handle stack operations
59
+ - Override base class with classes to handle module scope, functions, etc.
60
+ - Process module and create Module/Class/Function objects w/o dir(), etc.
61
+ - Finish tests: 44
62
+ * Add a config option to ignore certain cantankerous modules
63
+
64
+ * Add warning for global statement inside a conditional
65
+ * Fix spurious warnings for unreachable code checks
66
+ * Fix most of the FIXMEs
67
+ * Add check for import module (from within package p-should be import p.module)
68
+ - don't use relative imports, should always use absolute paths
69
+
70
+ Longer Term goals:
71
+ ------------------
72
+ * Add check for magic #s/consts
73
+ (need dict of consts, count, max count, consts to ignore)
74
+ * Add check for unsupported operand type(s) for * + / etc
75
+ * Store types of globals, class attributes, function & method return values
76
+ * Output stats about pychecker's job, good, bad, otherwise...
77
+ annotate code for problem areas, well checked areas, etc.
78
+ * Add original line warnings for those that refer to another place
79
+ (e.g., overridden method doesn't match signature)
80
+ * Add capability to check features from a specified version of python
81
+ which is different from runtime interpreter
82
+ * Security checks for known issues. Adrian Likins @redhat recommends
83
+ looking at http://www.securesw.com/rats/
84
+ * Make check for 'self' a list instead of a string
85
+ * Check function return values - partially complete
86
+ * Add check that private functions are used in module/class
87
+ * Add check for using object members outside of class
88
+ * Add portability checks for win32/unix
89
+ * Add check for except: pass
90
+ * Spell check doc strings
91
+
92
+ # need to read source code for these:
93
+ * Add warning for unnecessary global stmts
94
+ * Add check for implicit string concatentation
95
+ * Add check for creating tuple when don't want a tuple, like: 1,
96
+ or not creating tuple when want one, like: (1)
97
+ * Warn when using () with statements (assert, print, del, if, while)
98
+ * Add check for <>, should use !=
99
+ * Find lines that end w/semi-colons (;)
100
+ * inconsistent camel-case
101
+
@@ -0,0 +1 @@
1
+ 0.8.18
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env python
2
+
3
+ # Copyright (c) 2001, MetaSlash Inc. All rights reserved.
4
+ # Portions Copyright (c) 2005, Google, Inc. All rights reserved.
5
+
6
+ """
7
+ Warning class to hold info about each warning.
8
+ """
9
+
10
+
11
+ class Warning :
12
+ "Class which holds error information."
13
+
14
+ def __init__(self, file, line, err) :
15
+ if hasattr(file, "function") :
16
+ file = file.function.func_code.co_filename
17
+ elif hasattr(file, "co_filename") :
18
+ file = file.co_filename
19
+ elif hasattr(line, "co_filename") :
20
+ file = line.co_filename
21
+ if file[:2] == './' :
22
+ file = file[2:]
23
+ self.file = file
24
+
25
+ if hasattr(line, "co_firstlineno") :
26
+ line = line.co_firstlineno
27
+ if line == None :
28
+ line = 1
29
+ self.line = line
30
+ self.err = err
31
+ self.level = err.level
32
+
33
+ def __cmp__(self, warn) :
34
+ if warn == None :
35
+ return 1
36
+ if not self.file and not self.line:
37
+ return 1
38
+ if self.file != warn.file :
39
+ return cmp(self.file, warn.file)
40
+ if self.line != warn.line :
41
+ return cmp(self.line, warn.line)
42
+ return cmp(self.err, warn.err)
43
+
44
+ def format(self) :
45
+ if not self.file and not self.line:
46
+ return str(self.err)
47
+ return "%s:%d: %s" % (self.file, self.line, self.err)
48
+
49
+ def output(self, stream) :
50
+ stream.write(self.format() + "\n")
Binary file
Binary file
@@ -0,0 +1,17 @@
1
+ """
2
+ Copyright (c) 2001, MetaSlash Inc. All rights reserved.
3
+
4
+ PyChecker is a tool for finding common bugs in python source code.
5
+ It finds problems that are typically caught by a compiler for less
6
+ dynamic languages, like C and C++. It is also similar to lint.
7
+
8
+ Contact Info:
9
+ http://pychecker.sourceforge.net/
10
+ pychecker-list@lists.sourceforge.net
11
+ """
12
+
13
+ # A version # to check against in the main module (checker.py)
14
+ # this will allow us to check if there are two versions of checker
15
+ # in site-packages and local dir
16
+ MAIN_MODULE_VERSION = 3
17
+
Binary file
Binary file