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
data/egg/egg.yml ADDED
@@ -0,0 +1,69 @@
1
+ - build: egg
2
+ default: all
3
+ description: "Generate a Python egg project"
4
+
5
+ - properties:
6
+ name: MyPackage
7
+ description: |
8
+ This script will create a template Python egg project. Generated build
9
+ file provides targets 'check' to check Python scripts syntax, 'test' to
10
+ run unit test suite, 'egg' to create distribution archive and 'clean' to
11
+ delete generated files.
12
+
13
+ - target: welcome
14
+ description: "Print information message"
15
+ script:
16
+ - print: :description
17
+
18
+ - target: prompt
19
+ depends: welcome
20
+ description: "Prompt for project information"
21
+ script:
22
+ - print: "Please answer following questions to generate the project:"
23
+ - prompt:
24
+ message: "What is the project's name?"
25
+ default: :name
26
+ property: name
27
+ - rb: "pkg = name.downcase"
28
+
29
+ - target: generate
30
+ depends: prompt
31
+ description: "Generate project"
32
+ script:
33
+ - print: "Generating project..."
34
+ - rb: |
35
+ error "A directory named '#{name}' already exists, aborting" if
36
+ File.exists?("#{here}/#{name}")
37
+ - mkdir: "#{here}/#{name}"
38
+ - mkdir: "#{here}/#{name}/#{pkg}"
39
+ - mkdir: "#{here}/#{name}/test"
40
+ - erb:
41
+ src: "#{base}/egg/build.yml"
42
+ dest: "#{here}/#{name}/build.yml"
43
+ - erb:
44
+ src: "#{base}/egg/script.py"
45
+ dest: "#{here}/#{name}/#{pkg}/#{pkg}.py"
46
+ - erb:
47
+ src: "#{base}/egg/test.py"
48
+ dest: "#{here}/#{name}/test/test_#{pkg}.py"
49
+ - cp:
50
+ src: "#{base}/egg/setup.erb"
51
+ dest: "#{here}/#{name}/setup.erb"
52
+ - cp:
53
+ src: "#{base}/egg/ez_setup.py"
54
+ dest: "#{here}/#{name}/ez_setup.py"
55
+ - cp:
56
+ src: "#{base}/egg/suite.py"
57
+ dest: "#{here}/#{name}/test/suite.py"
58
+
59
+ - target: customization
60
+ depends: generate
61
+ description: "Print information about project customization"
62
+ script:
63
+ - print: |
64
+ Project has been generated in directory '#{name}'. Type 'bee -b' in
65
+ the project directory to print information about generated build file.
66
+ Enjoy!
67
+
68
+ - target: all
69
+ depends: [welcome, prompt, generate, customization]
@@ -0,0 +1,53 @@
1
+ # Build information
2
+ - build: <%= name %>
3
+ default: all
4
+ description: Build project <%= name.capitalize %>
5
+
6
+ # Build properties
7
+ - properties:
8
+ name: <%= name %>
9
+ build: build
10
+ script: "#{name}.py"
11
+ zip: "#{build}/#{name}.zip"
12
+ clean_dirs: :build
13
+ clean_files: "**/*.pyc"
14
+
15
+ # Build targets
16
+ - target: check
17
+ description: Check Python script syntax
18
+ script:
19
+ - python.pychecker:
20
+ src: .
21
+
22
+ - target: run
23
+ depends: check
24
+ description: Run server
25
+ script:
26
+ - python.python: :script
27
+
28
+ - target: client
29
+ description: Perform a client call
30
+ script:
31
+ - get:
32
+ url: http://localhost:8000
33
+ prop: body
34
+ - print: :body
35
+
36
+ - target: zip
37
+ depends: check
38
+ description: Generate distribution archive
39
+ script:
40
+ - mkdir: :build
41
+ - zip:
42
+ includes: "**/*"
43
+ excludes: ["#{build}*", "**/*.pyc"]
44
+ dest: :zip
45
+
46
+ - target: clean
47
+ description: Clean generated files
48
+ script:
49
+ - rmdir: :clean_dirs
50
+ - rm: :clean_files
51
+
52
+ - target: all
53
+ depends: [clean, check, zip]
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env python
2
+ # coding=utf-8
3
+
4
+ """Multi-threaded HTTP server based on BaseHttpServer."""
5
+
6
+ import SocketServer
7
+ import BaseHTTPServer
8
+
9
+ HOST_NAME = "localhost"
10
+ PORT_NUMBER = 8000
11
+
12
+ class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
13
+ """Handler class for the HTTP server."""
14
+
15
+ def do_GET(self):
16
+ """Respond to a GET request."""
17
+ self.send_response(200)
18
+ self.send_header("Content-type", "text/html")
19
+ self.end_headers()
20
+ self.wfile.write("<html><body><p>Hello World!</p></body></html>")
21
+
22
+ class ThreadedHTTPServer(SocketServer.ThreadingMixIn,
23
+ BaseHTTPServer.HTTPServer):
24
+ """Handle requests in a separate thread."""
25
+
26
+ if __name__ == '__main__':
27
+ SERVER = ThreadedHTTPServer((HOST_NAME, PORT_NUMBER), Handler)
28
+ try:
29
+ print "Server started on port %s" % PORT_NUMBER
30
+ SERVER.serve_forever()
31
+ except KeyboardInterrupt:
32
+ SERVER.server_close()
33
+ print "Server stopped"
34
+
data/egg/http.yml ADDED
@@ -0,0 +1,50 @@
1
+ - build: http
2
+ default: all
3
+ description: "Generate a Python server project"
4
+
5
+ - properties:
6
+ name: test
7
+ description: |
8
+ This script will create a template project for a Python HTTP server.
9
+ Generated build file provides targets 'check' to check Python scripts
10
+ syntax, 'run' to start the server, 'zip' to create distribution archive
11
+ and 'clean' to delete generated files.
12
+
13
+ - target: welcome
14
+ description: "Print information message"
15
+ script:
16
+ - print: :description
17
+
18
+ - target: prompt
19
+ depends: welcome
20
+ description: "Prompt for project information"
21
+ script:
22
+ - print: "Please answer following questions to generate the project:"
23
+ - prompt:
24
+ message: "What is the project's name?"
25
+ default: :name
26
+ property: name
27
+
28
+ - target: generate
29
+ depends: prompt
30
+ description: "Generate project"
31
+ script:
32
+ - print: "Generating project..."
33
+ - rb: |
34
+ error "A directory named '#{name}' already exists, aborting" if
35
+ File.exists?("#{here}/#{name}")
36
+ - mkdir: "#{here}/#{name}"
37
+ - erb: { src: "#{base}/http/build.erb", dest: "#{here}/#{name}/build.yml" }
38
+ - cp: { src: "#{base}/http/server.py", dest: "#{here}/#{name}/#{name}.py" }
39
+
40
+ - target: customization
41
+ depends: generate
42
+ description: "Print information about project customization"
43
+ script:
44
+ - print: |
45
+ Project has been generated in directory '#{name}'. Type 'bee -b' in
46
+ the project directory to print information about generated build file.
47
+ Enjoy!
48
+
49
+ - target: all
50
+ depends: [welcome, prompt, generate, customization]
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env python
2
+ # coding=UTF-8
3
+
4
+ """Sample MySQL script. To run this script, install MySQL Python extension.
5
+ If you run Ubuntu type 'sudo apt-get install mysql-python'. You can find
6
+ a short introduction to Python MySQL module in Paul Dubois' article at
7
+ http://www.kitebird.com/articles/pydbapi.html."""
8
+
9
+ import MySQLdb
10
+
11
+ HOST = 'localhost'
12
+ USER = 'test'
13
+ PASSWORD = 'test'
14
+ DATABASE = 'test'
15
+ QUERY = 'SHOW DATABASES'
16
+
17
+ def run_query():
18
+ """Run a given query and return result as a tuple of tuples."""
19
+ cursor = None
20
+ connection = None
21
+ try:
22
+ connection = MySQLdb.connect(host = HOST,
23
+ user = USER,
24
+ passwd = PASSWORD,
25
+ db = DATABASE)
26
+ cursor = connection.cursor(MySQLdb.cursors.DictCursor)
27
+ cursor.execute(QUERY)
28
+ return cursor.fetchall()
29
+ finally:
30
+ if cursor:
31
+ cursor.close()
32
+ if connection:
33
+ connection.close()
34
+
35
+ def main():
36
+ """Main function."""
37
+ result = run_query()
38
+ for line in result:
39
+ print line
40
+
41
+ if __name__ == '__main__':
42
+ main()
43
+
data/egg/mysql.yml ADDED
@@ -0,0 +1,44 @@
1
+ - build: mysql
2
+ default: all
3
+ description: "Generate a Python MySQL script"
4
+
5
+ - properties:
6
+ name: mysql.py
7
+ description: |
8
+ This script will create a Python MySQL script.
9
+
10
+ - target: welcome
11
+ description: "Print information message"
12
+ script:
13
+ - print: :description
14
+
15
+ - target: prompt
16
+ depends: welcome
17
+ description: "Prompt for project information"
18
+ script:
19
+ - print: "Please answer following questions to generate the project:"
20
+ - prompt:
21
+ message: "What is the source file name?"
22
+ default: :name
23
+ property: name
24
+
25
+ - target: generate
26
+ depends: prompt
27
+ description: "Generate source"
28
+ script:
29
+ - print: "Generating source..."
30
+ - rb: |
31
+ error "A file named '#{name}' already exists, aborting" if
32
+ File.exists?("#{here}/#{name}")
33
+ - cp: { src: "#{base}/mysql/mysql.py", dest: "#{here}/#{name}" }
34
+
35
+ - target: customization
36
+ depends: generate
37
+ description: "Print information about project customization"
38
+ script:
39
+ - print: |
40
+ Source file has been generated in file '#{name}'.
41
+ Enjoy!
42
+
43
+ - target: all
44
+ depends: [welcome, prompt, generate, customization]
@@ -0,0 +1,77 @@
1
+ # Build information
2
+ - build: <%= name %>
3
+ default: all
4
+ description: Build project <%= name.capitalize %>
5
+
6
+ # Build properties
7
+ - properties:
8
+ name: <%= name %>
9
+ build: build
10
+ lib: "lib"
11
+ tst: "test"
12
+ coverage: "#{build}/coverage"
13
+ data: "#{build}/.coverage"
14
+ doc: "#{build}/doc"
15
+ zip: "#{build}/#{name}.zip"
16
+ clean_dirs: :build
17
+ clean_files: "**/*.pyc"
18
+
19
+ # Build targets
20
+ - target: check
21
+ description: Check Python script syntax
22
+ script:
23
+ - python.pychecker:
24
+ src: [:lib, :tst]
25
+
26
+ - target: test
27
+ description: Run unit tests
28
+ script:
29
+ - python.test: "#{tst}/test*.py"
30
+
31
+ - target: coverage
32
+ description: Generate test coverage documentation
33
+ script:
34
+ - mkdir: :coverage
35
+ - python.coverage:
36
+ src: :lib
37
+ test: "#{tst}/test*.py"
38
+ dir: :tst
39
+ dest: :coverage
40
+ data: :data
41
+
42
+ - target: doc
43
+ description: Generate documentation
44
+ script:
45
+ - python.epydoc:
46
+ src: :lib
47
+ dest: :doc
48
+
49
+ - target: zip
50
+ depends: [check, coverage, doc]
51
+ description: Generate distribution archive
52
+ script:
53
+ - mkdir: :build
54
+ - zip:
55
+ includes: "**/*"
56
+ excludes: ["#{build}/**/*", "**/*.pyc"]
57
+ dest: :zip
58
+ - zip:
59
+ root: :doc
60
+ includes: "**/*"
61
+ prefix: "doc"
62
+ dest: :zip
63
+ - zip:
64
+ root: :coverage
65
+ includes: "**/*"
66
+ prefix: "coverage"
67
+ dest: :zip
68
+
69
+ - target: clean
70
+ description: Clean generated files
71
+ script:
72
+ - rmdir: :clean_dirs
73
+ - rm: :clean_files
74
+
75
+ - target: all
76
+ depends: [clean, check, zip]
77
+
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env python
2
+ # coding=UTF-8
3
+
4
+ """Sample Hello World Python script."""
5
+
6
+ import sys
7
+ import getopt
8
+
9
+ # Command line help
10
+ HELP = """Usage: %s [-h] [-w who]
11
+ Say hello:
12
+ -h Print this help page.
13
+ -w Who to say hello to.""" % sys.argv[0]
14
+
15
+ def say_hello(person):
16
+ """Say hello.
17
+ - person: who to say hello to."""
18
+ return "Hello %s!" % person
19
+
20
+ # parse command line
21
+ if __name__ == '__main__':
22
+ who = "World"
23
+ try:
24
+ OPTS, ARGS = getopt.getopt(sys.argv[1:],
25
+ "hw:",
26
+ ["help", "who"])
27
+ except getopt.GetoptError, error:
28
+ print "ERROR: %s" % str(error)
29
+ print HELP
30
+ sys.exit(1)
31
+ for OPT, ARG in OPTS:
32
+ if OPT == "-h":
33
+ print HELP
34
+ sys.exit(0)
35
+ elif OPT == "-w":
36
+ who = ARG
37
+ else:
38
+ print "Unhandled option: %s" % OPT
39
+ print HELP
40
+ sys.exit(1)
41
+ print say_hello(who)
42
+
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env python
2
+ # coding=UTF-8
3
+
4
+ """Sample Python unit test."""
5
+
6
+ import os
7
+ import sys
8
+ import inspect
9
+ test_dir = os.path.dirname(inspect.currentframe().f_code.co_filename)
10
+ src_dir = os.path.join(test_dir, '../lib')
11
+ sys.path.insert(0, src_dir)
12
+ import <%= name %>
13
+ import unittest
14
+
15
+ class Test(unittest.TestCase):
16
+ """Test class."""
17
+
18
+ def setUp(self):
19
+ """Setup test. Runs before each test."""
20
+ pass
21
+
22
+ def test_say_hello(self):
23
+ """Test say_hello() function."""
24
+ actual = <%= name %>.say_hello("World")
25
+ expected = "Hello World!"
26
+ self.assertEquals(expected, actual)
27
+
28
+ # Run unit tests when started on command line
29
+ if __name__ == '__main__':
30
+ unittest.main()
31
+
data/egg/project.yml ADDED
@@ -0,0 +1,59 @@
1
+ - build: project
2
+ default: all
3
+ description: "Generate a Python project"
4
+
5
+ - properties:
6
+ name: test
7
+ description: |
8
+ This script will create a template Python project. Generated build file
9
+ provides targets 'check' to check Python scripts syntax, 'test' to run
10
+ unit test suite, 'zip' to create distribution archive and 'clean' to
11
+ delete generated files.
12
+
13
+ - target: welcome
14
+ description: "Print information message"
15
+ script:
16
+ - print: :description
17
+
18
+ - target: prompt
19
+ depends: welcome
20
+ description: "Prompt for project information"
21
+ script:
22
+ - print: "Please answer following questions to generate the project:"
23
+ - prompt:
24
+ message: "What is the project's name?"
25
+ default: :name
26
+ property: name
27
+
28
+ - target: generate
29
+ depends: prompt
30
+ description: "Generate project"
31
+ script:
32
+ - print: "Generating project..."
33
+ - rb: |
34
+ error "A directory named '#{name}' already exists, aborting" if
35
+ File.exists?("#{here}/#{name}")
36
+ - mkdir: "#{here}/#{name}"
37
+ - mkdir: "#{here}/#{name}/lib"
38
+ - mkdir: "#{here}/#{name}/test"
39
+ - erb:
40
+ src: "#{base}/project/build.erb"
41
+ dest: "#{here}/#{name}/build.yml"
42
+ - erb:
43
+ src: "#{base}/project/script.py"
44
+ dest: "#{here}/#{name}/lib/#{name}.py"
45
+ - erb:
46
+ src: "#{base}/project/test.py"
47
+ dest: "#{here}/#{name}/test/test_#{name}.py"
48
+
49
+ - target: customization
50
+ depends: generate
51
+ description: "Print information about project customization"
52
+ script:
53
+ - print: |
54
+ Project has been generated in directory '#{name}'. Type 'bee -b' in
55
+ the project directory to print information about generated build file.
56
+ Enjoy!
57
+
58
+ - target: all
59
+ depends: [welcome, prompt, generate, customization]
@@ -0,0 +1,35 @@
1
+ # Build information
2
+ - build: <%= name %>
3
+ default: all
4
+ description: Build project <%= name.capitalize %>
5
+
6
+ # Build properties
7
+ - properties:
8
+ name: <%= name %>
9
+ build: build
10
+ script: "#{name}.py"
11
+ zip: "#{build}/#{name}.zip"
12
+ clean_dirs: :build
13
+ clean_files: "**/*.pyc"
14
+
15
+ # Build targets
16
+ - target: check
17
+ description: Check Python script syntax
18
+ script:
19
+ - python.compile: "#{script}"
20
+
21
+ - target: zip
22
+ depends: check
23
+ description: Generate distribution archive
24
+ script:
25
+ - mkdir: :build
26
+ - zip: { includes: "**/*", excludes: ["#{build}*", "**/*.pyc"], dest: :zip }
27
+
28
+ - target: clean
29
+ description: Clean generated files
30
+ script:
31
+ - rmdir: :clean_dirs
32
+ - rm: :clean_files
33
+
34
+ - target: all
35
+ depends: [clean, check, zip]
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env python
2
+ # coding=UTF-8
3
+
4
+ """Sample Hello World Python script."""
5
+
6
+ import sys
7
+ import getopt
8
+
9
+ # Command line help
10
+ HELP = """Usage: %s [-h] [-w who]
11
+ Say hello:
12
+ -h Print this help page.
13
+ -w Who to say hello to.""" % sys.argv[0]
14
+
15
+ def say_hello(person):
16
+ """Say hello.
17
+ - person: who to say hello to."""
18
+ print "Hello %s!" % person
19
+
20
+ # parse command line
21
+ if __name__ == '__main__':
22
+ who = "World"
23
+ try:
24
+ OPTS, ARGS = getopt.getopt(sys.argv[1:],
25
+ "hw:",
26
+ ["help", "who"])
27
+ except getopt.GetoptError, error:
28
+ print "ERROR: %s" % str(error)
29
+ print HELP
30
+ sys.exit(1)
31
+ for OPT, ARG in OPTS:
32
+ if OPT == "-h":
33
+ print HELP
34
+ sys.exit(0)
35
+ elif OPT == "-w":
36
+ who = ARG
37
+ else:
38
+ print "Unhandled option: %s" % OPT
39
+ print HELP
40
+ sys.exit(1)
41
+ say_hello(who)
42
+
data/egg/script.yml ADDED
@@ -0,0 +1,50 @@
1
+ - build: script
2
+ default: all
3
+ description: "Generate a Python script project"
4
+
5
+ - properties:
6
+ name: test
7
+ description: |
8
+ This script will create a template project for a Python script. Generated
9
+ build file provides targets 'check' to check Python scripts syntax,
10
+ 'zip' to create distribution archive and 'clean' to delete generated
11
+ files.
12
+
13
+ - target: welcome
14
+ description: "Print information message"
15
+ script:
16
+ - print: :description
17
+
18
+ - target: prompt
19
+ depends: welcome
20
+ description: "Prompt for project information"
21
+ script:
22
+ - print: "Please answer following questions to generate the project:"
23
+ - prompt:
24
+ message: "What is the project's name?"
25
+ default: :name
26
+ property: name
27
+
28
+ - target: generate
29
+ depends: prompt
30
+ description: "Generate project"
31
+ script:
32
+ - print: "Generating project..."
33
+ - rb: |
34
+ error "A directory named '#{name}' already exists, aborting" if
35
+ File.exists?("#{here}/#{name}")
36
+ - mkdir: "#{here}/#{name}"
37
+ - erb: { src: "#{base}/script/build.erb", dest: "#{here}/#{name}/build.yml" }
38
+ - cp: { src: "#{base}/script/script.py", dest: "#{here}/#{name}/#{name}.py" }
39
+
40
+ - target: customization
41
+ depends: generate
42
+ description: "Print information about project customization"
43
+ script:
44
+ - print: |
45
+ Project has been generated in directory '#{name}'. Type 'bee -b' in
46
+ the project directory to print information about generated build file.
47
+ Enjoy!
48
+
49
+ - target: all
50
+ depends: [welcome, prompt, generate, customization]
@@ -0,0 +1,52 @@
1
+ # Build information
2
+ - build: <%= name %>
3
+ default: all
4
+ description: Build project <%= name.capitalize %>
5
+
6
+ # Build properties
7
+ - properties:
8
+ name: <%= name %>
9
+ version: "0.0.0"
10
+ build: "build"
11
+ server: "server.py"
12
+ client: "client.py"
13
+ zip: "#{build}/#{name}-#{version}.zip"
14
+ clean_dirs: :build
15
+ clean_files: "**/*.pyc"
16
+
17
+ # Build targets
18
+ - target: check
19
+ description: Check Python script syntax
20
+ script:
21
+ - python.pychecker:
22
+ src: "."
23
+ lenient: true
24
+
25
+ - target: server
26
+ description: Run server
27
+ script:
28
+ - python.python: :server
29
+
30
+ - target: client
31
+ description: Run client
32
+ script:
33
+ - python.python: :client
34
+
35
+ - target: zip
36
+ depends: check
37
+ description: Generate distribution archive
38
+ script:
39
+ - mkdir: :build
40
+ - zip:
41
+ includes: "**/*"
42
+ excludes: ["#{build}/**/*", "**/*.pyc"]
43
+ dest: :zip
44
+
45
+ - target: clean
46
+ description: Clean generated files
47
+ script:
48
+ - rmdir: :clean_dirs
49
+ - rm: :clean_files
50
+
51
+ - target: all
52
+ depends: [clean, check, zip]