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,406 @@
1
+ Version 0.8.18 - XXX
2
+ * Fixed SF Bug [ 1827412 ] pychecker.bat only handles 9 cmdline args
3
+ * Fix warning about comparison checking with bool false alert for 'in' and 'not in'
4
+ * Add warning for using __set__, __get__, and __delete__ in an old-style class
5
+ * Fix spurious warning about __set__, __get__, and __delete__ not being special
6
+ methods.
7
+ * Fix inability to disable Warning about constant setattr()/getattr()
8
+ * Fix spurious warning on min/max not accepting kwarg of key in Python 2.5
9
+ * Add some __special__ pickling methods that were missing
10
+ * Add --missingattrs option to ignore some (but not all) attribute names
11
+ * Fix crash when using keyword arguments with builtin methods
12
+ * Add --keepgoing option to ignore import errors
13
+ * Add --findevil option to make it easier to find objects that crash the interpreter
14
+ * Add support for Python 2.5
15
+
16
+ Version 0.8.17 - 3 February 2006
17
+ * Fix spurious warning for Statement with no effect using bit shifts
18
+ * Add -#/--limit command line option to set the max # of warnings to show
19
+ * Remove broken command line options: -e/--errors, --complexity
20
+ * Add -e/--level command line options which allows the error level
21
+ to be specified: error, security, warning, unused, deprecated, style.
22
+ These names map to numbers: 90, 90, 70, 50, 40, 10 (error == security).
23
+ Specifying a value means all levels equal to or greater than it.
24
+ * Add --only option which displays warnings only for files specified
25
+ on the command line
26
+ * Add --evil option for users to prevent the interpreter from crashing
27
+ due to broken C extensions
28
+ * Fix wrong file name when warning about returning values from
29
+ __init__ functions. (#1291116)
30
+ * Fix a few more glitches with setup.py.
31
+ * Suppress warning about integer division when the code is: int(x / y)
32
+ * Add code to skip testing objects from extension modules that are
33
+ known to crash the interpreter. Currently, the list includes old versions of
34
+ matplotlib.axes.BinOpType and wx.TheClipboard.
35
+ * Support ROT_THREE and ROT_FOUR opcodes
36
+
37
+ Version 0.8.16 - 4 September 2005
38
+ * Fix problems installing on Windows and running setup.py build
39
+
40
+ Version 0.8.15 - 31 August 2005
41
+ * Fix spurious warning about catching string exceptions
42
+ * Don't barf if there is # -*- encoding: ... -*- lines and unicode strings
43
+ * setup.py was rewritten to honor --root, --home, etc options
44
+ * Fix internal error on processing nested scopes
45
+ * Fix constant tuples in Python 2.4
46
+ * Don't warn about implicit/explicit returns in Python 2.4, we can't tell
47
+ * Fix crash when __slots__ was an instance w/o __len__
48
+ * Fix bug that declared {}.pop to only take one argument, it takes 1 or 2
49
+ * Fix spurious warning when using tuples for exceptions
50
+ * Fix spurious warning <stack> / <stack>
51
+ * Fix spurious warnings for sets module about __cmp__, __hash__
52
+ * Changed abstract check to require raising NotImplementedError
53
+ rather than raising any error
54
+ * Fix spurious warnings in Python 2.4 for Using is (not) None warnings
55
+ * Fix spurious warnings for some instances of No class attribute found
56
+ * Fix spurious warnings for implicit returns when using nested functions
57
+
58
+ Version 0.8.14 - 6 June 2004
59
+ * Fix spurious warning in Python 2.3+ when doing a,b = 1,2
60
+ * Add warning to check for "if s.find(str):"
61
+ this should be "if s.find(str) >= 0:" when s is a string
62
+ * Fix spurious warning when using augmented assignment (e.g., x += x)
63
+ * Fix spurious warning when doing x = not x
64
+ * Fix spurious warning for invalid arg count when calling a staticmethod
65
+ * Fix spurious warning for setting a variable to itself when: x, y, z = x
66
+ * Fix spurious warning when doing some binary operations: self.a ^ self.b
67
+ * Fix crash in STORE_ATTR with some list comprehensions in Python 2.2
68
+ e.g., a.a = [x for x in range(2) if x > 1]
69
+ * Support Tk 8.4 and above in the GUI (change col= to column=)
70
+
71
+ Version 0.8.13 - 18 November 2003
72
+ * Add -s/--shadowbuiltin option to warn when overriding a builtin
73
+ * Add warning when assigning a variable to itself
74
+ * Add warning when dividing a variable by itself
75
+ * Add warnings when using a bit-wise operator with the same variable (a & a)
76
+ * Add warning when passing a constant string to getattr()/setattr()
77
+ * Add --special option to check for __special__ (reserved) method names
78
+ and that their signature (argument count) is correct
79
+ * Add warning for using __getattribute__ in an old-style class
80
+ * Suppress 'self as first argument' warning for static and class methods
81
+ * Add --classmethodargs option to specify first argument name
82
+ for class methods
83
+
84
+ Version 0.8.12 - 23 December 2002
85
+ * Add --isliteral option to warn when using is/is not against literal
86
+ (e.g., XXX is 5 YYY is not 'abcdef', etc)
87
+ * Add --modulo1 option to warn when using (expr % 1),
88
+ which is constant when expr is an integer or string
89
+ * Add -4/--noeffect option to disable warnings for 'Statement has no effect'
90
+ * self is not first argument warning can be disabled with -S/--self ''
91
+ * Don't print duplicate warnings when importing pychecker
92
+ * Fix other spurious warnings when importing pychecker
93
+ * Fix bug for spurious invalid arguments when passing a dict inline
94
+ * Fix bug for spurious Statement has no effect when print >> x, ... ,
95
+ * Add @option_file command line argument to read options from a file
96
+ (used on platforms which can't have too many options, ie Windows)
97
+ * Fix several crashes
98
+ * Line numbers should be close for Python 2.3 and if run on optimized code
99
+
100
+ Version 0.8.11 - 06 June 2002
101
+ * Improve error message for syntax errors from user files
102
+ * Fix pychecker.bat so it should work now
103
+ * Add a warning for using __coerce__ in new-style classes
104
+ * Add --deprecated option for using deprecated modules or functions
105
+ * Add a warning for using functions with security problems (os.t[e]mpnam)
106
+ * Add a warning for comparing against True/False or defining True/False
107
+ * Add --badexcept option to warn when using string exceptions or
108
+ classes not derived from Exception to raise/catch exceptions
109
+ * Fix spurious warnings from using (test and 'true' or 'false)
110
+
111
+ Version 0.8.10 - 20 March 2002
112
+ * Add --unpack option to warn when unpacking a non-sequence
113
+ * Add --unpacklen option to warn when unpacking sequence of wrong size
114
+ * Add --changetypes option to warn when setting a variable to different types
115
+ * Add --stringiter option to warn when iterating over a string
116
+ * Add --input option to warn when using input()
117
+ * Fix crash with checking properties or deriving from objects (2.2 only)
118
+ * Fix crash with nested scopes and lambdas
119
+ * Fix spurious warnings for constant conditionals when using ('%s' % value)
120
+ * Fix spurious warnings for unused identifiers caused by from XXX import *
121
+ * Add more information when module cannot be imported
122
+ * Fix spurious warnings for implicit returns when using while 1:
123
+ * Fix spurious warnings for implicit returns when using try/finally:
124
+ * Fix spurious warning with globals that start w/__
125
+ * Fix spurious warnings for modifying default arguments
126
+ when calling {}.get(), {}.has_key(), [].index(), [].count(), etc.
127
+ * Fix spurious warnings in Python 1.5.2 when using from/import
128
+
129
+ Version 0.8.9 - 02 February 2002
130
+ * Add -3/--properties warning when using properties with classic classes
131
+ * Add more warnings for statements with no effect
132
+ * Fix crash due to import module problems
133
+ * Fix crash with nested scopes
134
+ * Fix spurious warnings about module attributes and importing
135
+ * Fix spurious warnings in Python 2.2 when using builtin classes (eg, socket)
136
+ * Fix spurious warning for format string problem when using % at module scope
137
+ * Fix spurious warning for implicit returns when doing while 1:
138
+ * Fix spurious warning for inconsistent return types
139
+ when objects are subclasses
140
+ * Don't warn about inconsistent return types from __getattr[ibute]__
141
+ * Always assume readline module is used if input/raw_input is used
142
+
143
+ Version 0.8.8 - 13 January 2002
144
+ * Add -F/--config option to specify pycheckrc file to use
145
+ Always read $HOME/.pycheckrc, .pycheckrc, and -F options in that order
146
+ * Add -0/--abstract option to warn that subclass should override
147
+ a base class whose method(s) only raise exceptions
148
+ * Add -6/--exec option to warn when using the exec statement
149
+ * Add -7/--slots option to warn about __slots__ usage problems
150
+ * Add --emptyslots option to warn about empty __slots__
151
+ * Add check if __getattr[ibute]__ returns None, should raise an exception
152
+ * Allow pychecker to be imported (in your code do: import pychecker.check)
153
+ * Using vars() for format string argument works like locals()
154
+ * Make unusedNames a prefix, so emptyVal, unusedVal, etc are also ignored
155
+ * Fix -a/--initattr warning to actually warn when attributes
156
+ are set outside of __init__(), but not in __init__()
157
+ * Fix case where an implicit return did not generate a warning
158
+ * Fix spurious warnings when using nested scopes, code should be checked now
159
+ * Fix spurious warnings for unreachable code (not enough to enable, yet)
160
+ * Fix spurious warnings for integer division from: (x + 100.0) / 10
161
+ * Fix spurious warnings for implicit returns when raise in except: clause
162
+ * Fix various spurious warnings when using Python 2.2
163
+ * Fix spurious warning for overridden method mismatch when using exec
164
+ * Fix spurious warning when doing len(filter(lambda x: ..., ...))
165
+ * Fix spurious warnings from some from ... import ... and deriving classes
166
+
167
+ Version 0.8.7 - 05 January 2002
168
+ * Add -2/--constcond option to warn if using a constant
169
+ in a conditional statement (if '': ; while 'str': ; etc)
170
+ * Add -1/--constant1 option to warn when using if 1: or while 1: etc.
171
+ * Add -8/--unreachable option to warn about unreachable code
172
+ * Add -9/--members option to warn about unused data members
173
+ * Add -w/--shadow for local variable shadowing global variable
174
+ * Add warning statements with no effect (load var, but do nothing)
175
+ * Handle string multiplication (helps format strings)
176
+ code like this doesn't generate a warning now: '%d ' * 3 % (1, 2, 3)
177
+ * Fix -C/--implicitreturns option so it works, turn it on by default
178
+ * Fix spurious warning when accessing 'static' class members that are methods
179
+ (e.g. class C(B): __super_init = B.__init__) (still a problem w/2.2)
180
+ * Fix some strange spurious warnings and exceptions
181
+ * Handle nested scopes better, includes fixing a crash and
182
+ eliminating some spurious warnings
183
+
184
+ Version 0.8.6 - 16 November 2001
185
+ * Add -5/--maxrefs for maximum # of identifier references (Law of Demeter)
186
+ * Fix problem where user defined classes weren't checked for valid attributes
187
+ * Allow use of __pychecker__ in class scope
188
+ * Fix a lot of global function arg counts for Python 2.2
189
+ (many constructors can take no arguments now)
190
+ * Fix spurious warning (Function return types are inconsistent)
191
+ when multiple returns w/a constant & a local variable of same type
192
+ * Fix spurious warning for format strings when using a dict local variable
193
+ * Rename pychecker.sh script to pychecker on Unix
194
+
195
+ Version 0.8.5 - 17 October 2001
196
+ * Add check for using builtin function/method const (None) return value
197
+ (e.g., not_a_new_list = [].sort())
198
+ * Add check for builtin object method calls for right # args
199
+ (e.g., [].count(), {}.keys(), file.seek(0))
200
+ * Add check for object method calls for right # args
201
+ (calling object when type is known, ie instatiated locally)
202
+ * Add check for modifying a parameter that has a default value
203
+ (e.g., def func(mutable = []): mutable.append(0))
204
+ * Add check for using future keywords (e.g., yield)
205
+ * Add check for using unary positive on variables (e.g., +x)
206
+ * Add check for recursive calls to __repr__ implementations (`self`)
207
+ * Add -X/--reimport option to turn off various module reimport warnings
208
+ * Add -V/--version option for printing PyChecker version
209
+ * Fix some spurious warnings for inconsistent return value types
210
+ * Fix spurious warning from calling functions like: zip(*args)
211
+ * Fix -F/--rcfile option so it really works
212
+
213
+ Version 0.8.4 - 24 September 2001
214
+ * Allow warning suppressions to be specified as regular expressions
215
+ * Add -z/--no-varargsused to ignore *args for functions w/variable args
216
+ * Add warning checks when deleting variables
217
+ * Add check for except Error1, Error2 : # should be except (Error1, Error2) :
218
+ * Fix spurious warning when using parameter as dict for format string
219
+ * Fix spurious warning when using lambda in __init__
220
+ * Add check that pychecker/checker.py is same version as other files
221
+ * Get setup.py to work on windows, etc. if don't have /tmp
222
+
223
+ Version 0.8.3 - 12 August 2001
224
+ * Fix internal errors when doing % on non-strings and other format problems
225
+ * Fix spurious warning when using a constant {} with a format mapping
226
+
227
+ Version 0.8.2 - 12 August 2001
228
+ * Check format strings even if using global & local constants
229
+ * Add check that [].append() only takes one argument
230
+ * Add check that # parameters are correct for builtin functions
231
+ * Add warnings for --, ++, ~~:
232
+ "Operator (%s) doesn't exist, statement has no effect"
233
+ * Add -Q/--quiet to be real quiet, only output warning msgs, nothing else
234
+ * Add -y/--classattr config option (warning was not configurable before)
235
+ (warn if class attribute doesn't exist)
236
+ * Add -x/--miximport config option (warning was not configurable before)
237
+ (warn if mixing: import/from ... import)
238
+ * Add -u/--callinit config option (warning was not configurable before)
239
+ (warn if Subclass.__init__() not called)
240
+ * Add constants together on stack when get + to avoid some spurious warnings
241
+ * Fix method and attribute checks for None and Ellipsis
242
+ * Fix spurious warnings when doing a local import and use module in lambda
243
+ * Fix spurious warnings when object attribute has same name as class
244
+ * Fix Object (x) has no attribute warnings for Python 2.2a1 built-in types
245
+ * Change default behaviour to not warn about missing doc strings
246
+
247
+ Version 0.8.1 - 9 August 2001
248
+ * Fix internal error when referencing a list constant: [1,2,3][1]
249
+ * Fix internal error for Python 1.5 not catching unicode syntax error
250
+ * Fix deprecation warning for Python 2.2a1 with xrange
251
+ * Fix spurious warning (No module attribute) when doing import x.y as y
252
+ * Fix spurious warning (Base __init__() not called) when using *args or **kw
253
+ * Fix 'No module attribute' warning when doing: import foo.bar as bar
254
+ * Spell overridden write
255
+
256
+ Version 0.8 - 6 August 2001
257
+ * Add check for accessing list as list[1,2], should be slice 1:2
258
+ * Add -J/maxargs to warn when using too many arguments
259
+ * Add -K/maxlocals to warn when using too many local variables
260
+ * Add -D/intdivide to warn when using integer division
261
+ * Add -O/objattrs to warn when using object.attribute that doesn't exist
262
+ * Add -M/reimportself to warn when a module imports itself
263
+ * Add -E/unusednames to provide a list of unused names to ignore
264
+ (default is: [ '_', 'empty', 'unused' ])
265
+ * Major refactoring of warn.py -> utils, msgs, Warning, CodeChecks
266
+ * Fix spurious warnings for No class attribute for dynamic classes
267
+ * Fix spurious warnings when using objects from blacklisted modules
268
+ (Instantiating object with arguments, but no constructor, etc)
269
+ * Fix spurious warnings when using lambdas
270
+ * Fix spurious warning (No global Y) when using: from X import Y
271
+ (problem in python 1.5/1.6 only)
272
+
273
+ Version 0.7.5 - 22 July 2001
274
+ * Suppress warnings on a per module/function/class/method basis
275
+ with new suppressions = {} in .pycheckrc
276
+ * Suppress warnings by setting __pychecker__ in source code
277
+ * Change long argument behaviour --arg sets arg to true,
278
+ --no-arg sets arg to false (also works for warning suppression)
279
+ * Add -U/--reuseattr check if function/class/method names are reused
280
+ * Add -T/--argsused check for unused method/function arguments
281
+ * Add -G/--selfused ignore if self is unused in a method
282
+ (requires --argsused)
283
+ * Add -q/--stdlib to disable warnings from the standard library
284
+ * Add -o/--override warning when a method has different signature
285
+ than one being overridden in a base class
286
+ * Add -F/--rcfile to generate a .pycheckrc file
287
+ * Fix checking files in standard library before local file
288
+ * Fix spurious warning when using from X import Y and imports in methods
289
+ (Module (m) re-imported)
290
+ * Fix spurious warning when doing: from X import Y, Z
291
+ * Fix spurious warning when deriving from Exception() and
292
+ instantiating object with multiple arguments
293
+ * Fix method argument checks when calling base class methods
294
+ * Fix error msg to base constructors (msg count was wrong)
295
+ * Fix access to builtin module attributes (e.g., sys.exc_value)
296
+ generating 'No attribute warnings'
297
+ * Fix tests (forgot to add : after line number in expected results)
298
+
299
+ Version 0.7 - 16 July 2001
300
+ * Improve import warning messages, add from checks
301
+ * checker.py -h prints defaults after processing .pycheckrc file
302
+ * Add config option -k/--pkgimport to disable unused imports from __init__.py
303
+ * Add warning for variable used before being set
304
+ * Improve format string checks/warnings
305
+ * Check arguments to constructors
306
+ * Check that self is first arg to base constructor
307
+ * Add -e/--errors option to only warn about likely errors
308
+ * Make 'self' configurable as the first argument to methods
309
+ * Add check that there is a c'tor when instantiating an object and
310
+ passing arguments
311
+ * Add config option (-N/--initreturn) to turn off warnings
312
+ when returning None from __init__()
313
+ * Fix internal error with python 2.1 which defines a new op: LOAD_DEREF
314
+ * Check in lambda functions for module/variable use
315
+ * Fix inability to evaluate { 1: 'a' } inline,
316
+ led to incorrect __init__() not called warnings
317
+ * Fix exception when class overrides __special__() methods & raise exception
318
+ * Fix check in format strings when using '%*g %*.*g', etc
319
+ * Add check for static class attributes
320
+ * Fix checking of module attributes
321
+ * Fix wrong filename in 'Base class (xxx) __init__() not called'
322
+ when doing a from X import *
323
+ * Fix 'No attribute found' for very dynamic classes
324
+ (may also work for classes that use __getattr__)
325
+
326
+ Version 0.6.1 - 27 June 2001
327
+ * Fix bug which caused an exception from some import code
328
+ * Fix bug in determining if there is an implicit return
329
+
330
+ Version 0.6 - 25 June 2001
331
+ * Check format strings: "%s %s %s" % (v1, v2, v3, v4) for arg counts
332
+ * Warn when format strings do: '%(var) %(var2)'
333
+ * Fix Local variable (xxx) not used, when have: "%(xxx)s" % locals()
334
+ * Warn when local variable (xxx) doesn't exist and have: "%(xxx)s" % locals()
335
+ * Install script in /usr/local/bin to invoke PyChecker
336
+ * Don't produce unused global warnings when using a module in parameters
337
+ * Don't produce unused global warnings when using a module in class variables
338
+ * Add check when using method as an attribute (if self.method and x == y:)
339
+ * Add check for right # of args to object construction
340
+ * Add check for right # of args to function calls in other modules
341
+ * Check for returning a value from __init__
342
+ * Fix using from XX import YY ; from XX import ZZ causing re-import warning
343
+ * Fix UNABLE TO IMPORT errors for files that don't end with a newline
344
+ * Support for checking consistent return values -- not complete
345
+ produces too many false positives
346
+
347
+ Version 0.5 - 29 May 2001
348
+ * Catch internal errors "gracefully" and turn into a warning
349
+ * Add checking of most module scoped code
350
+ * Add pychecker subdir to imports to prevent filename conflicts
351
+ * Don't produce unused local variable warning if variable name == '_'
352
+ * Add -g/--allglobals option to report all global warnings, not just first
353
+ * Add -V/--varlist option to selectively ignore variable not used warnings
354
+ * Add test script and expected results
355
+ * Print all instructions when using debug (-d/--debug)
356
+ * Overhaul internal stack handling so we can look for more problems
357
+ * Fix glob'ing problems (all args after glob were ignored)
358
+ * Fix spurious Base class __init__ not called
359
+ * Fix exception on code like: ['xxx'].index('xxx')
360
+ * Fix exception on code like: func(kw=(a < b))
361
+ * Fix line numbers for import statements
362
+
363
+ Version 0.4 - 23 April 2001
364
+ * Add .pycheckrc file processing to specify options (like on command line)
365
+ * Add new warning if module.Attribute doesn't exist
366
+ * Add new warning: Module (%s) re-imported locally
367
+ * Add glob'ing support for windows
368
+ * Handle apply(BaseClass.__init__(self, args))
369
+ * Fix command line handling so you can pass module, package, or filename
370
+ * Fix **kwArgs warning if named parameter is not first
371
+ * Don't exit from checker when import checker from interpreter
372
+
373
+ Version 0.3 - 17 April 2001
374
+ * Fix some checker crashes (oops)
375
+ * Add warnings for code complexity (lines/branches/returns per function)
376
+ * Add more configuration options
377
+ * Don't produce spurious warning for: x(y, { 'a': 'b' })
378
+ * Fix warnings that indicate they are from a base class file,
379
+ rather than real file
380
+ * Fix warnings for **kwArgs not allowed, but using named args
381
+ * Add configuration option for warning when using attribute as a function
382
+ (off by default, old behaviour was on)
383
+
384
+ Version 0.2.5 - 12 April 2001
385
+ * Add back support for Python 1.5.2 (again)
386
+ (I sure like 2.0 more with the [ for ] and string methods.)
387
+ * Add new warning for unused local variables
388
+ * Add command line switches
389
+
390
+ Version 0.2 - 10 April 2001
391
+ * Move tests into a sub-directory so import test doesn't import
392
+ pychecker/test
393
+ * Add more test files
394
+ * Add '.' to the python path so it doesn't need to be done in env't
395
+ * Print a warning at the end for each file that couldn't be import'ed
396
+ * Improve stack handling to improve error handling
397
+ * Try to get base class __init__ checking to work for both:
398
+ import X.Y
399
+ from X import Y
400
+
401
+ Version 0.1.1 - 8 April 2001
402
+ * Add support for Python 1.5.2
403
+
404
+ Version 0.1 - 7 April 2001
405
+ * Initial release
406
+
@@ -0,0 +1,131 @@
1
+ #!/usr/bin/env python
2
+
3
+ # Copyright (c) 2001-2004, MetaSlash Inc. All rights reserved.
4
+ # Portions Copyright (c) 2005, Google, Inc. All rights reserved.
5
+
6
+ """
7
+ Python byte code operations.
8
+
9
+ Very similar to the dis module, but dis does not exist in Jython,
10
+ so recreate the small portion we need here.
11
+ """
12
+
13
+ def LINE_NUM(op): return op == 127
14
+ def LOAD_GLOBAL(op): return op == 116
15
+ def LOAD_CONST(op): return op == 100
16
+ def LOAD_FAST(op): return op == 124
17
+ def LOAD_ATTR(op): return op == 105
18
+ def LOAD_DEREF(op): return op == 136
19
+ def STORE_ATTR(op): return op == 95
20
+ def POP_TOP(op): return op == 1
21
+ def IMPORT_FROM(op): return op == 108
22
+ def IMPORT_STAR(op): return op == 84
23
+ def UNARY_POSITIVE(op): return op == 10
24
+ def UNARY_NEGATIVE(op): return op == 11
25
+ def UNARY_INVERT(op): return op == 15
26
+ def RETURN_VALUE(op): return op == 83
27
+ def JUMP_FORWARD(op): return op == 110
28
+ def JUMP_ABSOLUTE(op): return op == 113
29
+ def FOR_ITER(op): return op == 93
30
+ def FOR_LOOP(op): return op == 114
31
+ def SETUP_LOOP(op): return op == 120
32
+ def BREAK_LOOP(op): return op == 80
33
+ def RAISE_VARARGS(op): return op == 130
34
+ def POP_BLOCK(op): return op == 87
35
+ def END_FINALLY(op): return op == 88
36
+ def CALL_FUNCTION(op): return op == 131
37
+
38
+ def UNPACK_SEQUENCE(op) :
39
+ "Deal w/Python 1.5.2 (UNPACK_[LIST|TUPLE]) or 2.0 (UNPACK_SEQUENCE)"
40
+ return op in (92, 93,)
41
+
42
+ def IS_CONDITIONAL_JUMP(op):
43
+ return op in (111, 112)
44
+
45
+ def IS_NOT(op):
46
+ return op == 12
47
+
48
+ HAVE_ARGUMENT = 90
49
+ EXTENDED_ARG = 143
50
+
51
+ _HAS_NAME = (90, 91, 95, 96, 97, 98, 101, 105, 107, 108, 116,)
52
+ _HAS_LOCAL = (124, 125, 126,)
53
+ _HAS_CONST = (100,)
54
+ _HAS_COMPARE = (106,)
55
+ _HAS_JREL = (110, 111, 112, 114, 120, 121, 122,)
56
+ _HAS_JABS = (113, 119,)
57
+
58
+ _CMP_OP = ('<', '<=', '==', '!=', '>', '>=', 'in', 'not in', 'is',
59
+ 'is not', 'exception match', 'BAD')
60
+
61
+ EXCEPT_COMPARISON = 10
62
+ IS_COMPARISON = 8
63
+ IN_COMPARISON = 6
64
+ NOT_IN_COMPARISON = 7
65
+
66
+ def getOperand(op, func_code, oparg) :
67
+ if op in _HAS_NAME :
68
+ return func_code.co_names[oparg]
69
+ elif op in _HAS_LOCAL :
70
+ return func_code.co_varnames[oparg]
71
+ elif op in _HAS_CONST :
72
+ return func_code.co_consts[oparg]
73
+ elif op in _HAS_COMPARE :
74
+ return _CMP_OP[oparg]
75
+ return None
76
+
77
+ def getLabel(op, oparg, i) :
78
+ if op in _HAS_JREL :
79
+ return i + oparg
80
+ elif op in _HAS_JABS :
81
+ return oparg
82
+ return None
83
+
84
+ def getInfo(code, index, extended_arg) :
85
+ """Returns (op, oparg, index, extended_arg) based on code
86
+ this is a helper function while looping through byte code,
87
+ refer to the standard module dis.disassemble() for more info"""
88
+
89
+ # get the operation we are performing
90
+ op = ord(code[index])
91
+ index = index + 1
92
+ if op >= HAVE_ARGUMENT :
93
+ # get the argument to the operation
94
+ oparg = ord(code[index]) + ord(code[index+1])*256 + extended_arg
95
+ index = index + 2
96
+ extended_arg = 0
97
+ if op == EXTENDED_ARG :
98
+ extended_arg = oparg * 65536L
99
+ else :
100
+ oparg, extended_arg = 0, 0
101
+ return op, oparg, index, extended_arg
102
+
103
+ def initFuncCode(func) :
104
+ """Returns (func_code, code, i, maxCode, extended_arg) based on func,
105
+ this is a helper function to setup looping through byte code"""
106
+
107
+ func_code = func.func_code
108
+ code = func_code.co_code
109
+ return func_code, code, 0, len(code), 0
110
+
111
+ def conditional(op):
112
+ "returns true if the code results in conditional execution"
113
+ return op in [83, # return
114
+ 93, # for_iter
115
+ 111, 112, 114, # conditional jump
116
+ 121, # setup_exec
117
+ 130 # raise_varargs
118
+ ]
119
+
120
+ # this code is here for debugging purposes.
121
+ # Jython doesn't support dis, so don't rely on it
122
+ try :
123
+ import dis
124
+ name = dis.opname
125
+ except ImportError :
126
+ class Name:
127
+ 'Turn name[x] into x'
128
+ def __getitem__(self, x):
129
+ from pychecker import utils
130
+ return utils.safestr(x)
131
+ name = Name()
Binary file
Binary file
@@ -0,0 +1,117 @@
1
+ import Tkinter
2
+
3
+ def bool(value):
4
+ if value:
5
+ return 1
6
+ return 0
7
+
8
+ class Base:
9
+ "Base class for all OptionTypes"
10
+
11
+ def __init__(self, name, default):
12
+ self._name = name
13
+ self._default = default
14
+ self._var = None
15
+
16
+ def name(self):
17
+ return self._name
18
+
19
+ def set(self, value):
20
+ self._var.set(value)
21
+
22
+ class Boolean(Base):
23
+ "A option type for editing boolean values"
24
+
25
+ def __init__(self, name, default):
26
+ Base.__init__(self, name, default)
27
+
28
+ def field(self, w):
29
+ self._var = Tkinter.BooleanVar()
30
+ if self._default:
31
+ self._var.set(1)
32
+ else:
33
+ self._var.set(0)
34
+ frame = Tkinter.Frame(w, name = self._name + "Frame")
35
+ result = Tkinter.Checkbutton(frame,
36
+ name=self._name,
37
+ text=self._name,
38
+ variable=self._var)
39
+ result.grid(sticky=Tkinter.W)
40
+ frame.columnconfigure(0, weight=1)
41
+ return frame
42
+
43
+ def arg(self):
44
+ if bool(self._var.get()) != bool(self._default):
45
+ if bool(self._var.get()):
46
+ return "--" + self._name
47
+ return "--no-" + self._name
48
+ return None
49
+
50
+ class Number(Base):
51
+ "OptionType for editing numbers"
52
+
53
+ def __init__(self, name, default):
54
+ Base.__init__(self, name, default)
55
+
56
+ def field(self, w):
57
+ self._var = Tkinter.IntVar()
58
+ self._var.set(self._default)
59
+ frame = Tkinter.Frame(w, name = self._name + "Frame")
60
+ label = Tkinter.Label(frame, text=self._name + ":")
61
+ label.grid(row=0, column=0, sticky=Tkinter.W)
62
+ entry = Tkinter.Entry(frame,
63
+ name=self._name,
64
+ textvariable=self._var,
65
+ width=4)
66
+ entry.grid(row=0, column=1, sticky=Tkinter.E)
67
+ for i in range(2):
68
+ frame.columnconfigure(i, weight=1)
69
+ return frame
70
+
71
+ def arg(self):
72
+ if self._var.get() != self._default:
73
+ return "--%s=%d" % (self._name, self._var.get())
74
+ return None
75
+
76
+ class Text(Base):
77
+ "OptionType for editing a little bit of text"
78
+
79
+ def __init__(self, name, default):
80
+ Base.__init__(self, name, default)
81
+
82
+ def width(self):
83
+ return int(min(15, len(self._default) * 1.20))
84
+
85
+ def field(self, w):
86
+ self._var = Tkinter.StringVar()
87
+ self._var.set(self._default)
88
+ frame = Tkinter.Frame(w, name = self._name + "Frame")
89
+ label = Tkinter.Label(frame, text=self._name + ":")
90
+ label.grid(row=0, column=0, sticky=Tkinter.W)
91
+ entry = Tkinter.Entry(frame,
92
+ name=self._name,
93
+ textvariable=self._var,
94
+ width=self.width())
95
+ entry.grid(row=0, column=1, sticky=Tkinter.E)
96
+ for i in range(2):
97
+ frame.columnconfigure(i, weight=1)
98
+ return frame
99
+
100
+ def arg(self):
101
+ if self._var.get() != self._default:
102
+ return "--%s=%s" % (self._name, self._var.get())
103
+ return None
104
+
105
+ def join(list):
106
+ import string
107
+ return string.join(list, ", ")
108
+
109
+ class List(Text):
110
+ "OptionType for editing a list of values"
111
+
112
+ def __init__(self, name, default):
113
+ Text.__init__(self, name, join(default))
114
+
115
+ def set(self, value):
116
+ self._var.set(join(value))
117
+
Binary file
Binary file