bee_python 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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