bee_python 0.0.3 → 0.0.4

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 (488) hide show
  1. data/{build/README → README} +1 -1
  2. data/egg/egg/build.yml +11 -49
  3. data/egg/egg.yml +19 -27
  4. data/egg/http/build.erb +32 -36
  5. data/egg/http/libhttp.py +102 -0
  6. data/egg/http/pylint.cfg +236 -0
  7. data/egg/http/server.py +7 -0
  8. data/egg/http/test.erb +32 -0
  9. data/egg/http.yml +33 -29
  10. data/egg/mysql/mysql.py +8 -9
  11. data/egg/project/build.erb +21 -53
  12. data/egg/project/pylint.cfg +236 -0
  13. data/egg/project/test.py +2 -2
  14. data/egg/project.yml +23 -31
  15. data/egg/script/build.erb +18 -23
  16. data/egg/script/pylint.cfg +236 -0
  17. data/egg/script.yml +22 -18
  18. data/egg/source/source.py +6 -6
  19. data/egg/test/test.py +1 -1
  20. data/lib/bee_task_python.rb +3 -34
  21. data/python.yml +123 -0
  22. metadata +61 -503
  23. data/test/build.yml +0 -16
  24. data/test/tc_bee_task_python.rb +0 -27
  25. data/test/test_build.rb +0 -26
  26. data/test/test_build_listener.rb +0 -110
  27. data/test/ts_bee_python.rb +0 -26
  28. data/tools/common/__init__.py +0 -5
  29. data/tools/common/common/__init__.py +0 -140
  30. data/tools/common/common/__pkginfo__.py +0 -43
  31. data/tools/common/common/adbh.py +0 -35
  32. data/tools/common/common/cache.py +0 -114
  33. data/tools/common/common/changelog.py +0 -234
  34. data/tools/common/common/clcommands.py +0 -181
  35. data/tools/common/common/cli.py +0 -212
  36. data/tools/common/common/compat.py +0 -328
  37. data/tools/common/common/configuration.py +0 -1087
  38. data/tools/common/common/contexts.py +0 -58
  39. data/tools/common/common/corbautils.py +0 -117
  40. data/tools/common/common/daemon.py +0 -171
  41. data/tools/common/common/date.py +0 -279
  42. data/tools/common/common/db.py +0 -49
  43. data/tools/common/common/dbf.py +0 -229
  44. data/tools/common/common/debugger.py +0 -208
  45. data/tools/common/common/decorators.py +0 -190
  46. data/tools/common/common/deprecation.py +0 -118
  47. data/tools/common/common/fileutils.py +0 -409
  48. data/tools/common/common/graph.py +0 -259
  49. data/tools/common/common/html.py +0 -142
  50. data/tools/common/common/interface.py +0 -76
  51. data/tools/common/common/logging_ext.py +0 -166
  52. data/tools/common/common/modutils.py +0 -670
  53. data/tools/common/common/optik_ext.py +0 -383
  54. data/tools/common/common/optparser.py +0 -92
  55. data/tools/common/common/pdf_ext.py +0 -111
  56. data/tools/common/common/proc.py +0 -276
  57. data/tools/common/common/pyro_ext.py +0 -146
  58. data/tools/common/common/pytest.py +0 -754
  59. data/tools/common/common/shellutils.py +0 -383
  60. data/tools/common/common/sphinx_ext.py +0 -87
  61. data/tools/common/common/sphinxutils.py +0 -122
  62. data/tools/common/common/sqlgen.py +0 -31
  63. data/tools/common/common/table.py +0 -930
  64. data/tools/common/common/tasksqueue.py +0 -97
  65. data/tools/common/common/test/__init__.py +0 -1
  66. data/tools/common/common/test/data/ChangeLog +0 -184
  67. data/tools/common/common/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
  68. data/tools/common/common/test/data/__init__.py +0 -1
  69. data/tools/common/common/test/data/content_differ_dir/NOTHING +0 -0
  70. data/tools/common/common/test/data/content_differ_dir/README +0 -1
  71. data/tools/common/common/test/data/content_differ_dir/subdir/coin +0 -1
  72. data/tools/common/common/test/data/content_differ_dir/subdir/toto.txt +0 -53
  73. data/tools/common/common/test/data/file_differ_dir/NOTHING +0 -0
  74. data/tools/common/common/test/data/file_differ_dir/README +0 -1
  75. data/tools/common/common/test/data/file_differ_dir/subdir/toto.txt +0 -53
  76. data/tools/common/common/test/data/file_differ_dir/subdirtwo/Hello +0 -0
  77. data/tools/common/common/test/data/find_test/__init__.py +0 -0
  78. data/tools/common/common/test/data/find_test/foo.txt +0 -0
  79. data/tools/common/common/test/data/find_test/module.py +0 -0
  80. data/tools/common/common/test/data/find_test/module2.py +0 -0
  81. data/tools/common/common/test/data/find_test/newlines.txt +0 -0
  82. data/tools/common/common/test/data/find_test/noendingnewline.py +0 -0
  83. data/tools/common/common/test/data/find_test/nonregr.py +0 -0
  84. data/tools/common/common/test/data/find_test/normal_file.txt +0 -0
  85. data/tools/common/common/test/data/find_test/spam.txt +0 -0
  86. data/tools/common/common/test/data/find_test/sub/doc.txt +0 -0
  87. data/tools/common/common/test/data/find_test/sub/momo.py +0 -0
  88. data/tools/common/common/test/data/find_test/test.ini +0 -0
  89. data/tools/common/common/test/data/find_test/test1.msg +0 -0
  90. data/tools/common/common/test/data/find_test/test2.msg +0 -0
  91. data/tools/common/common/test/data/find_test/write_protected_file.txt +0 -0
  92. data/tools/common/common/test/data/foo.txt +0 -9
  93. data/tools/common/common/test/data/module.py +0 -88
  94. data/tools/common/common/test/data/module2.py +0 -77
  95. data/tools/common/common/test/data/newlines.txt +0 -3
  96. data/tools/common/common/test/data/noendingnewline.py +0 -36
  97. data/tools/common/common/test/data/nonregr.py +0 -14
  98. data/tools/common/common/test/data/normal_file.txt +0 -0
  99. data/tools/common/common/test/data/reference_dir/NOTHING +0 -0
  100. data/tools/common/common/test/data/reference_dir/README +0 -1
  101. data/tools/common/common/test/data/reference_dir/subdir/coin +0 -1
  102. data/tools/common/common/test/data/reference_dir/subdir/toto.txt +0 -53
  103. data/tools/common/common/test/data/same_dir/NOTHING +0 -0
  104. data/tools/common/common/test/data/same_dir/README +0 -1
  105. data/tools/common/common/test/data/same_dir/subdir/coin +0 -1
  106. data/tools/common/common/test/data/same_dir/subdir/toto.txt +0 -53
  107. data/tools/common/common/test/data/spam.txt +0 -9
  108. data/tools/common/common/test/data/sub/doc.txt +0 -1
  109. data/tools/common/common/test/data/sub/momo.py +0 -1
  110. data/tools/common/common/test/data/subdir_differ_dir/NOTHING +0 -0
  111. data/tools/common/common/test/data/subdir_differ_dir/README +0 -1
  112. data/tools/common/common/test/data/subdir_differ_dir/subdir/coin +0 -1
  113. data/tools/common/common/test/data/subdir_differ_dir/subdir/toto.txt +0 -53
  114. data/tools/common/common/test/data/test.ini +0 -20
  115. data/tools/common/common/test/data/test1.msg +0 -30
  116. data/tools/common/common/test/data/test2.msg +0 -42
  117. data/tools/common/common/test/data/write_protected_file.txt +0 -0
  118. data/tools/common/common/test/foomod.py +0 -17
  119. data/tools/common/common/test/unittest_cache.py +0 -129
  120. data/tools/common/common/test/unittest_changelog.py +0 -37
  121. data/tools/common/common/test/unittest_compat.py +0 -239
  122. data/tools/common/common/test/unittest_configuration.py +0 -348
  123. data/tools/common/common/test/unittest_date.py +0 -154
  124. data/tools/common/common/test/unittest_decorators.py +0 -62
  125. data/tools/common/common/test/unittest_deprecation.py +0 -76
  126. data/tools/common/common/test/unittest_fileutils.py +0 -133
  127. data/tools/common/common/test/unittest_graph.py +0 -50
  128. data/tools/common/common/test/unittest_html.py +0 -76
  129. data/tools/common/common/test/unittest_interface.py +0 -87
  130. data/tools/common/common/test/unittest_modutils.py +0 -244
  131. data/tools/common/common/test/unittest_pytest.py +0 -50
  132. data/tools/common/common/test/unittest_shellutils.py +0 -248
  133. data/tools/common/common/test/unittest_table.py +0 -448
  134. data/tools/common/common/test/unittest_taskqueue.py +0 -71
  135. data/tools/common/common/test/unittest_testlib.py +0 -956
  136. data/tools/common/common/test/unittest_textutils.py +0 -247
  137. data/tools/common/common/test/unittest_tree.py +0 -248
  138. data/tools/common/common/test/unittest_umessage.py +0 -55
  139. data/tools/common/common/test/unittest_ureports_html.py +0 -64
  140. data/tools/common/common/test/unittest_ureports_text.py +0 -105
  141. data/tools/common/common/test/unittest_xmlutils.py +0 -75
  142. data/tools/common/common/test/utils.py +0 -87
  143. data/tools/common/common/testlib.py +0 -1927
  144. data/tools/common/common/textutils.py +0 -476
  145. data/tools/common/common/tree.py +0 -372
  146. data/tools/common/common/umessage.py +0 -161
  147. data/tools/common/common/ureports/__init__.py +0 -174
  148. data/tools/common/common/ureports/docbook_writer.py +0 -139
  149. data/tools/common/common/ureports/html_writer.py +0 -131
  150. data/tools/common/common/ureports/nodes.py +0 -201
  151. data/tools/common/common/ureports/text_writer.py +0 -140
  152. data/tools/common/common/vcgutils.py +0 -216
  153. data/tools/common/common/visitor.py +0 -107
  154. data/tools/common/common/xmlrpcutils.py +0 -136
  155. data/tools/common/common/xmlutils.py +0 -61
  156. data/tools/coverage/coverage.py +0 -602
  157. data/tools/epydoc/__init__.py +0 -227
  158. data/tools/epydoc/__init__.pyc +0 -0
  159. data/tools/epydoc/apidoc.py +0 -2203
  160. data/tools/epydoc/apidoc.pyc +0 -0
  161. data/tools/epydoc/checker.py +0 -349
  162. data/tools/epydoc/checker.pyc +0 -0
  163. data/tools/epydoc/cli.py +0 -1470
  164. data/tools/epydoc/cli.pyc +0 -0
  165. data/tools/epydoc/compat.py +0 -250
  166. data/tools/epydoc/compat.pyc +0 -0
  167. data/tools/epydoc/docbuilder.py +0 -1358
  168. data/tools/epydoc/docbuilder.pyc +0 -0
  169. data/tools/epydoc/docintrospecter.py +0 -1056
  170. data/tools/epydoc/docintrospecter.pyc +0 -0
  171. data/tools/epydoc/docparser.py +0 -2113
  172. data/tools/epydoc/docparser.pyc +0 -0
  173. data/tools/epydoc/docstringparser.py +0 -1111
  174. data/tools/epydoc/docstringparser.pyc +0 -0
  175. data/tools/epydoc/docwriter/__init__.py +0 -12
  176. data/tools/epydoc/docwriter/__init__.pyc +0 -0
  177. data/tools/epydoc/docwriter/dotgraph.py +0 -1351
  178. data/tools/epydoc/docwriter/dotgraph.pyc +0 -0
  179. data/tools/epydoc/docwriter/html.py +0 -3491
  180. data/tools/epydoc/docwriter/html.pyc +0 -0
  181. data/tools/epydoc/docwriter/html_colorize.py +0 -909
  182. data/tools/epydoc/docwriter/html_colorize.pyc +0 -0
  183. data/tools/epydoc/docwriter/html_css.py +0 -550
  184. data/tools/epydoc/docwriter/html_css.pyc +0 -0
  185. data/tools/epydoc/docwriter/html_help.py +0 -190
  186. data/tools/epydoc/docwriter/html_help.pyc +0 -0
  187. data/tools/epydoc/docwriter/latex.py +0 -1187
  188. data/tools/epydoc/docwriter/latex.pyc +0 -0
  189. data/tools/epydoc/docwriter/plaintext.py +0 -276
  190. data/tools/epydoc/docwriter/plaintext.pyc +0 -0
  191. data/tools/epydoc/docwriter/xlink.py +0 -505
  192. data/tools/epydoc/docwriter/xlink.pyc +0 -0
  193. data/tools/epydoc/gui.py +0 -1148
  194. data/tools/epydoc/gui.pyc +0 -0
  195. data/tools/epydoc/log.py +0 -204
  196. data/tools/epydoc/log.pyc +0 -0
  197. data/tools/epydoc/markup/__init__.py +0 -623
  198. data/tools/epydoc/markup/__init__.pyc +0 -0
  199. data/tools/epydoc/markup/doctest.py +0 -311
  200. data/tools/epydoc/markup/doctest.pyc +0 -0
  201. data/tools/epydoc/markup/epytext.py +0 -2116
  202. data/tools/epydoc/markup/epytext.pyc +0 -0
  203. data/tools/epydoc/markup/javadoc.py +0 -250
  204. data/tools/epydoc/markup/javadoc.pyc +0 -0
  205. data/tools/epydoc/markup/plaintext.py +0 -78
  206. data/tools/epydoc/markup/plaintext.pyc +0 -0
  207. data/tools/epydoc/markup/pyval_repr.py +0 -532
  208. data/tools/epydoc/markup/pyval_repr.pyc +0 -0
  209. data/tools/epydoc/markup/restructuredtext.py +0 -906
  210. data/tools/epydoc/markup/restructuredtext.pyc +0 -0
  211. data/tools/epydoc/test/__init__.py +0 -97
  212. data/tools/epydoc/test/__init__.pyc +0 -0
  213. data/tools/epydoc/test/util.py +0 -226
  214. data/tools/epydoc/test/util.pyc +0 -0
  215. data/tools/epydoc/util.py +0 -289
  216. data/tools/epydoc/util.pyc +0 -0
  217. data/tools/logilab/logilab/__init__.py +0 -5
  218. data/tools/logilab/logilab/astng/__init__.py +0 -82
  219. data/tools/logilab/logilab/astng/__pkginfo__.py +0 -76
  220. data/tools/logilab/logilab/astng/_exceptions.py +0 -64
  221. data/tools/logilab/logilab/astng/_nodes_ast.py +0 -667
  222. data/tools/logilab/logilab/astng/_nodes_compiler.py +0 -758
  223. data/tools/logilab/logilab/astng/bases.py +0 -608
  224. data/tools/logilab/logilab/astng/builder.py +0 -239
  225. data/tools/logilab/logilab/astng/inference.py +0 -426
  226. data/tools/logilab/logilab/astng/inspector.py +0 -289
  227. data/tools/logilab/logilab/astng/manager.py +0 -421
  228. data/tools/logilab/logilab/astng/mixins.py +0 -165
  229. data/tools/logilab/logilab/astng/node_classes.py +0 -848
  230. data/tools/logilab/logilab/astng/nodes.py +0 -85
  231. data/tools/logilab/logilab/astng/nodes_as_string.py +0 -389
  232. data/tools/logilab/logilab/astng/patchcomptransformer.py +0 -159
  233. data/tools/logilab/logilab/astng/protocols.py +0 -333
  234. data/tools/logilab/logilab/astng/raw_building.py +0 -212
  235. data/tools/logilab/logilab/astng/rebuilder.py +0 -307
  236. data/tools/logilab/logilab/astng/scoped_nodes.py +0 -951
  237. data/tools/logilab/logilab/astng/test/__init__.py +0 -19
  238. data/tools/logilab/logilab/astng/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
  239. data/tools/logilab/logilab/astng/test/data/MyPyPa-0.1.0-py2.5.zip +0 -0
  240. data/tools/logilab/logilab/astng/test/data/SSL1/Connection1.py +0 -33
  241. data/tools/logilab/logilab/astng/test/data/SSL1/__init__.py +0 -20
  242. data/tools/logilab/logilab/astng/test/data/__init__.py +0 -20
  243. data/tools/logilab/logilab/astng/test/data/all.py +0 -29
  244. data/tools/logilab/logilab/astng/test/data/appl/__init__.py +0 -23
  245. data/tools/logilab/logilab/astng/test/data/appl/myConnection.py +0 -30
  246. data/tools/logilab/logilab/astng/test/data/format.py +0 -34
  247. data/tools/logilab/logilab/astng/test/data/module.py +0 -90
  248. data/tools/logilab/logilab/astng/test/data/module2.py +0 -112
  249. data/tools/logilab/logilab/astng/test/data/noendingnewline.py +0 -57
  250. data/tools/logilab/logilab/astng/test/data/nonregr.py +0 -76
  251. data/tools/logilab/logilab/astng/test/data/notall.py +0 -28
  252. data/tools/logilab/logilab/astng/test/data2/__init__.py +0 -20
  253. data/tools/logilab/logilab/astng/test/data2/clientmodule_test.py +0 -51
  254. data/tools/logilab/logilab/astng/test/data2/suppliermodule_test.py +0 -32
  255. data/tools/logilab/logilab/astng/test/regrtest.py +0 -135
  256. data/tools/logilab/logilab/astng/test/regrtest_data/absimport.py +0 -22
  257. data/tools/logilab/logilab/astng/test/regrtest_data/descriptor_crash.py +0 -31
  258. data/tools/logilab/logilab/astng/test/regrtest_data/import_package_subpackage_module.py +0 -68
  259. data/tools/logilab/logilab/astng/test/regrtest_data/package/__init__.py +0 -24
  260. data/tools/logilab/logilab/astng/test/regrtest_data/package/subpackage/__init__.py +0 -20
  261. data/tools/logilab/logilab/astng/test/regrtest_data/package/subpackage/module.py +0 -20
  262. data/tools/logilab/logilab/astng/test/unittest_builder.py +0 -684
  263. data/tools/logilab/logilab/astng/test/unittest_inference.py +0 -1112
  264. data/tools/logilab/logilab/astng/test/unittest_inspector.py +0 -105
  265. data/tools/logilab/logilab/astng/test/unittest_lookup.py +0 -302
  266. data/tools/logilab/logilab/astng/test/unittest_manager.py +0 -98
  267. data/tools/logilab/logilab/astng/test/unittest_nodes.py +0 -302
  268. data/tools/logilab/logilab/astng/test/unittest_scoped_nodes.py +0 -501
  269. data/tools/logilab/logilab/astng/test/unittest_utils.py +0 -104
  270. data/tools/logilab/logilab/astng/utils.py +0 -342
  271. data/tools/logilab/logilab/common/__init__.py +0 -140
  272. data/tools/logilab/logilab/common/__pkginfo__.py +0 -43
  273. data/tools/logilab/logilab/common/adbh.py +0 -35
  274. data/tools/logilab/logilab/common/cache.py +0 -114
  275. data/tools/logilab/logilab/common/changelog.py +0 -234
  276. data/tools/logilab/logilab/common/clcommands.py +0 -181
  277. data/tools/logilab/logilab/common/cli.py +0 -212
  278. data/tools/logilab/logilab/common/compat.py +0 -328
  279. data/tools/logilab/logilab/common/configuration.py +0 -1087
  280. data/tools/logilab/logilab/common/contexts.py +0 -58
  281. data/tools/logilab/logilab/common/corbautils.py +0 -117
  282. data/tools/logilab/logilab/common/daemon.py +0 -171
  283. data/tools/logilab/logilab/common/date.py +0 -279
  284. data/tools/logilab/logilab/common/db.py +0 -49
  285. data/tools/logilab/logilab/common/dbf.py +0 -229
  286. data/tools/logilab/logilab/common/debugger.py +0 -208
  287. data/tools/logilab/logilab/common/decorators.py +0 -190
  288. data/tools/logilab/logilab/common/deprecation.py +0 -118
  289. data/tools/logilab/logilab/common/fileutils.py +0 -409
  290. data/tools/logilab/logilab/common/graph.py +0 -259
  291. data/tools/logilab/logilab/common/html.py +0 -142
  292. data/tools/logilab/logilab/common/interface.py +0 -76
  293. data/tools/logilab/logilab/common/logging_ext.py +0 -166
  294. data/tools/logilab/logilab/common/modutils.py +0 -670
  295. data/tools/logilab/logilab/common/optik_ext.py +0 -383
  296. data/tools/logilab/logilab/common/optparser.py +0 -92
  297. data/tools/logilab/logilab/common/pdf_ext.py +0 -111
  298. data/tools/logilab/logilab/common/proc.py +0 -276
  299. data/tools/logilab/logilab/common/pyro_ext.py +0 -146
  300. data/tools/logilab/logilab/common/pytest.py +0 -754
  301. data/tools/logilab/logilab/common/shellutils.py +0 -383
  302. data/tools/logilab/logilab/common/sphinx_ext.py +0 -87
  303. data/tools/logilab/logilab/common/sphinxutils.py +0 -122
  304. data/tools/logilab/logilab/common/sqlgen.py +0 -31
  305. data/tools/logilab/logilab/common/table.py +0 -930
  306. data/tools/logilab/logilab/common/tasksqueue.py +0 -97
  307. data/tools/logilab/logilab/common/test/__init__.py +0 -1
  308. data/tools/logilab/logilab/common/test/data/ChangeLog +0 -184
  309. data/tools/logilab/logilab/common/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
  310. data/tools/logilab/logilab/common/test/data/__init__.py +0 -1
  311. data/tools/logilab/logilab/common/test/data/content_differ_dir/NOTHING +0 -0
  312. data/tools/logilab/logilab/common/test/data/content_differ_dir/README +0 -1
  313. data/tools/logilab/logilab/common/test/data/content_differ_dir/subdir/coin +0 -1
  314. data/tools/logilab/logilab/common/test/data/content_differ_dir/subdir/toto.txt +0 -53
  315. data/tools/logilab/logilab/common/test/data/file_differ_dir/NOTHING +0 -0
  316. data/tools/logilab/logilab/common/test/data/file_differ_dir/README +0 -1
  317. data/tools/logilab/logilab/common/test/data/file_differ_dir/subdir/toto.txt +0 -53
  318. data/tools/logilab/logilab/common/test/data/file_differ_dir/subdirtwo/Hello +0 -0
  319. data/tools/logilab/logilab/common/test/data/find_test/__init__.py +0 -0
  320. data/tools/logilab/logilab/common/test/data/find_test/foo.txt +0 -0
  321. data/tools/logilab/logilab/common/test/data/find_test/module.py +0 -0
  322. data/tools/logilab/logilab/common/test/data/find_test/module2.py +0 -0
  323. data/tools/logilab/logilab/common/test/data/find_test/newlines.txt +0 -0
  324. data/tools/logilab/logilab/common/test/data/find_test/noendingnewline.py +0 -0
  325. data/tools/logilab/logilab/common/test/data/find_test/nonregr.py +0 -0
  326. data/tools/logilab/logilab/common/test/data/find_test/normal_file.txt +0 -0
  327. data/tools/logilab/logilab/common/test/data/find_test/spam.txt +0 -0
  328. data/tools/logilab/logilab/common/test/data/find_test/sub/doc.txt +0 -0
  329. data/tools/logilab/logilab/common/test/data/find_test/sub/momo.py +0 -0
  330. data/tools/logilab/logilab/common/test/data/find_test/test.ini +0 -0
  331. data/tools/logilab/logilab/common/test/data/find_test/test1.msg +0 -0
  332. data/tools/logilab/logilab/common/test/data/find_test/test2.msg +0 -0
  333. data/tools/logilab/logilab/common/test/data/find_test/write_protected_file.txt +0 -0
  334. data/tools/logilab/logilab/common/test/data/foo.txt +0 -9
  335. data/tools/logilab/logilab/common/test/data/module.py +0 -88
  336. data/tools/logilab/logilab/common/test/data/module2.py +0 -77
  337. data/tools/logilab/logilab/common/test/data/newlines.txt +0 -3
  338. data/tools/logilab/logilab/common/test/data/noendingnewline.py +0 -36
  339. data/tools/logilab/logilab/common/test/data/nonregr.py +0 -14
  340. data/tools/logilab/logilab/common/test/data/normal_file.txt +0 -0
  341. data/tools/logilab/logilab/common/test/data/reference_dir/NOTHING +0 -0
  342. data/tools/logilab/logilab/common/test/data/reference_dir/README +0 -1
  343. data/tools/logilab/logilab/common/test/data/reference_dir/subdir/coin +0 -1
  344. data/tools/logilab/logilab/common/test/data/reference_dir/subdir/toto.txt +0 -53
  345. data/tools/logilab/logilab/common/test/data/same_dir/NOTHING +0 -0
  346. data/tools/logilab/logilab/common/test/data/same_dir/README +0 -1
  347. data/tools/logilab/logilab/common/test/data/same_dir/subdir/coin +0 -1
  348. data/tools/logilab/logilab/common/test/data/same_dir/subdir/toto.txt +0 -53
  349. data/tools/logilab/logilab/common/test/data/spam.txt +0 -9
  350. data/tools/logilab/logilab/common/test/data/sub/doc.txt +0 -1
  351. data/tools/logilab/logilab/common/test/data/sub/momo.py +0 -1
  352. data/tools/logilab/logilab/common/test/data/subdir_differ_dir/NOTHING +0 -0
  353. data/tools/logilab/logilab/common/test/data/subdir_differ_dir/README +0 -1
  354. data/tools/logilab/logilab/common/test/data/subdir_differ_dir/subdir/coin +0 -1
  355. data/tools/logilab/logilab/common/test/data/subdir_differ_dir/subdir/toto.txt +0 -53
  356. data/tools/logilab/logilab/common/test/data/test.ini +0 -20
  357. data/tools/logilab/logilab/common/test/data/test1.msg +0 -30
  358. data/tools/logilab/logilab/common/test/data/test2.msg +0 -42
  359. data/tools/logilab/logilab/common/test/data/write_protected_file.txt +0 -0
  360. data/tools/logilab/logilab/common/test/foomod.py +0 -17
  361. data/tools/logilab/logilab/common/test/unittest_cache.py +0 -129
  362. data/tools/logilab/logilab/common/test/unittest_changelog.py +0 -37
  363. data/tools/logilab/logilab/common/test/unittest_compat.py +0 -239
  364. data/tools/logilab/logilab/common/test/unittest_configuration.py +0 -348
  365. data/tools/logilab/logilab/common/test/unittest_date.py +0 -154
  366. data/tools/logilab/logilab/common/test/unittest_decorators.py +0 -62
  367. data/tools/logilab/logilab/common/test/unittest_deprecation.py +0 -76
  368. data/tools/logilab/logilab/common/test/unittest_fileutils.py +0 -133
  369. data/tools/logilab/logilab/common/test/unittest_graph.py +0 -50
  370. data/tools/logilab/logilab/common/test/unittest_html.py +0 -76
  371. data/tools/logilab/logilab/common/test/unittest_interface.py +0 -87
  372. data/tools/logilab/logilab/common/test/unittest_modutils.py +0 -244
  373. data/tools/logilab/logilab/common/test/unittest_pytest.py +0 -50
  374. data/tools/logilab/logilab/common/test/unittest_shellutils.py +0 -248
  375. data/tools/logilab/logilab/common/test/unittest_table.py +0 -448
  376. data/tools/logilab/logilab/common/test/unittest_taskqueue.py +0 -71
  377. data/tools/logilab/logilab/common/test/unittest_testlib.py +0 -956
  378. data/tools/logilab/logilab/common/test/unittest_textutils.py +0 -247
  379. data/tools/logilab/logilab/common/test/unittest_tree.py +0 -248
  380. data/tools/logilab/logilab/common/test/unittest_umessage.py +0 -55
  381. data/tools/logilab/logilab/common/test/unittest_ureports_html.py +0 -64
  382. data/tools/logilab/logilab/common/test/unittest_ureports_text.py +0 -105
  383. data/tools/logilab/logilab/common/test/unittest_xmlutils.py +0 -75
  384. data/tools/logilab/logilab/common/test/utils.py +0 -87
  385. data/tools/logilab/logilab/common/testlib.py +0 -1927
  386. data/tools/logilab/logilab/common/textutils.py +0 -476
  387. data/tools/logilab/logilab/common/tree.py +0 -372
  388. data/tools/logilab/logilab/common/umessage.py +0 -161
  389. data/tools/logilab/logilab/common/ureports/__init__.py +0 -174
  390. data/tools/logilab/logilab/common/ureports/docbook_writer.py +0 -139
  391. data/tools/logilab/logilab/common/ureports/html_writer.py +0 -131
  392. data/tools/logilab/logilab/common/ureports/nodes.py +0 -201
  393. data/tools/logilab/logilab/common/ureports/text_writer.py +0 -140
  394. data/tools/logilab/logilab/common/vcgutils.py +0 -216
  395. data/tools/logilab/logilab/common/visitor.py +0 -107
  396. data/tools/logilab/logilab/common/xmlrpcutils.py +0 -136
  397. data/tools/logilab/logilab/common/xmlutils.py +0 -61
  398. data/tools/pychecker/COPYRIGHT +0 -31
  399. data/tools/pychecker/ChangeLog +0 -349
  400. data/tools/pychecker/CodeChecks.py +0 -1969
  401. data/tools/pychecker/CodeChecks.pyc +0 -0
  402. data/tools/pychecker/CodeChecks.pyo +0 -0
  403. data/tools/pychecker/Config.py +0 -475
  404. data/tools/pychecker/Config.pyc +0 -0
  405. data/tools/pychecker/Config.pyo +0 -0
  406. data/tools/pychecker/KNOWN_BUGS +0 -100
  407. data/tools/pychecker/MAINTAINERS +0 -81
  408. data/tools/pychecker/NEWS +0 -406
  409. data/tools/pychecker/OP.py +0 -131
  410. data/tools/pychecker/OP.pyc +0 -0
  411. data/tools/pychecker/OP.pyo +0 -0
  412. data/tools/pychecker/OptionTypes.py +0 -117
  413. data/tools/pychecker/OptionTypes.pyc +0 -0
  414. data/tools/pychecker/OptionTypes.pyo +0 -0
  415. data/tools/pychecker/README +0 -152
  416. data/tools/pychecker/Stack.py +0 -115
  417. data/tools/pychecker/Stack.pyc +0 -0
  418. data/tools/pychecker/Stack.pyo +0 -0
  419. data/tools/pychecker/TODO +0 -101
  420. data/tools/pychecker/VERSION +0 -1
  421. data/tools/pychecker/Warning.py +0 -50
  422. data/tools/pychecker/Warning.pyc +0 -0
  423. data/tools/pychecker/Warning.pyo +0 -0
  424. data/tools/pychecker/__init__.py +0 -17
  425. data/tools/pychecker/__init__.pyc +0 -0
  426. data/tools/pychecker/__init__.pyo +0 -0
  427. data/tools/pychecker/checker.py +0 -961
  428. data/tools/pychecker/checker.pyc +0 -0
  429. data/tools/pychecker/checker.pyo +0 -0
  430. data/tools/pychecker/function.py +0 -159
  431. data/tools/pychecker/function.pyc +0 -0
  432. data/tools/pychecker/function.pyo +0 -0
  433. data/tools/pychecker/msgs.py +0 -175
  434. data/tools/pychecker/msgs.pyc +0 -0
  435. data/tools/pychecker/msgs.pyo +0 -0
  436. data/tools/pychecker/options.py +0 -275
  437. data/tools/pychecker/options.pyc +0 -0
  438. data/tools/pychecker/options.pyo +0 -0
  439. data/tools/pychecker/pcmodules.py +0 -19
  440. data/tools/pychecker/pcmodules.pyc +0 -0
  441. data/tools/pychecker/pcmodules.pyo +0 -0
  442. data/tools/pychecker/printer.py +0 -47
  443. data/tools/pychecker/printer.pyc +0 -0
  444. data/tools/pychecker/printer.pyo +0 -0
  445. data/tools/pychecker/python.py +0 -427
  446. data/tools/pychecker/python.pyc +0 -0
  447. data/tools/pychecker/python.pyo +0 -0
  448. data/tools/pychecker/utils.py +0 -102
  449. data/tools/pychecker/utils.pyc +0 -0
  450. data/tools/pychecker/utils.pyo +0 -0
  451. data/tools/pychecker/warn.py +0 -778
  452. data/tools/pychecker/warn.pyc +0 -0
  453. data/tools/pychecker/warn.pyo +0 -0
  454. data/tools/pylint2/pylint/__init__.py +0 -16
  455. data/tools/pylint2/pylint/__pkginfo__.py +0 -67
  456. data/tools/pylint2/pylint/checkers/__init__.py +0 -155
  457. data/tools/pylint2/pylint/checkers/base.py +0 -749
  458. data/tools/pylint2/pylint/checkers/classes.py +0 -527
  459. data/tools/pylint2/pylint/checkers/design_analysis.py +0 -344
  460. data/tools/pylint2/pylint/checkers/exceptions.py +0 -183
  461. data/tools/pylint2/pylint/checkers/format.py +0 -367
  462. data/tools/pylint2/pylint/checkers/imports.py +0 -379
  463. data/tools/pylint2/pylint/checkers/logging.py +0 -98
  464. data/tools/pylint2/pylint/checkers/misc.py +0 -128
  465. data/tools/pylint2/pylint/checkers/newstyle.py +0 -107
  466. data/tools/pylint2/pylint/checkers/raw_metrics.py +0 -125
  467. data/tools/pylint2/pylint/checkers/similar.py +0 -333
  468. data/tools/pylint2/pylint/checkers/string_format.py +0 -239
  469. data/tools/pylint2/pylint/checkers/typecheck.py +0 -364
  470. data/tools/pylint2/pylint/checkers/utils.py +0 -208
  471. data/tools/pylint2/pylint/checkers/variables.py +0 -498
  472. data/tools/pylint2/pylint/config.py +0 -149
  473. data/tools/pylint2/pylint/epylint.py +0 -149
  474. data/tools/pylint2/pylint/gui.py +0 -433
  475. data/tools/pylint2/pylint/interfaces.py +0 -98
  476. data/tools/pylint2/pylint/lint.py +0 -914
  477. data/tools/pylint2/pylint/pyreverse/__init__.py +0 -5
  478. data/tools/pylint2/pylint/pyreverse/diadefslib.py +0 -229
  479. data/tools/pylint2/pylint/pyreverse/diagrams.py +0 -247
  480. data/tools/pylint2/pylint/pyreverse/main.py +0 -123
  481. data/tools/pylint2/pylint/pyreverse/utils.py +0 -131
  482. data/tools/pylint2/pylint/pyreverse/writer.py +0 -196
  483. data/tools/pylint2/pylint/reporters/__init__.py +0 -67
  484. data/tools/pylint2/pylint/reporters/guireporter.py +0 -36
  485. data/tools/pylint2/pylint/reporters/html.py +0 -69
  486. data/tools/pylint2/pylint/reporters/text.py +0 -156
  487. data/tools/pylint2/pylint/utils.py +0 -518
  488. data/tools/pylint2/pylint.py +0 -16
@@ -1,58 +0,0 @@
1
- # copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
2
- # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
3
- #
4
- # This file is part of logilab-common.
5
- #
6
- # logilab-common is free software: you can redistribute it and/or modify it under
7
- # the terms of the GNU Lesser General Public License as published by the Free
8
- # Software Foundation, either version 2.1 of the License, or (at your option) any
9
- # later version.
10
- #
11
- # logilab-common is distributed in the hope that it will be useful, but WITHOUT
12
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13
- # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
14
- # details.
15
- #
16
- # You should have received a copy of the GNU Lesser General Public License along
17
- # with logilab-common. If not, see <http://www.gnu.org/licenses/>.
18
- """A few useful context managers
19
-
20
-
21
-
22
-
23
- """
24
- __docformat__ = "restructuredtext en"
25
-
26
- import sys
27
-
28
- if sys.version_info < (2, 5):
29
- raise ImportError("python >= 2.5 is required to import logilab.common.contexts")
30
-
31
- import os
32
- import tempfile
33
- import shutil
34
-
35
- class tempdir(object):
36
-
37
- def __enter__(self):
38
- self.path = tempfile.mkdtemp()
39
- return self.path
40
-
41
- def __exit__(self, exctype, value, traceback):
42
- # rmtree in all cases
43
- shutil.rmtree(self.path)
44
- return traceback is None
45
-
46
-
47
- class pushd(object):
48
- def __init__(self, directory):
49
- self.directory = directory
50
-
51
- def __enter__(self):
52
- self.cwd = os.getcwd()
53
- os.chdir(self.directory)
54
- return self.directory
55
-
56
- def __exit__(self, exctype, value, traceback):
57
- os.chdir(self.cwd)
58
-
@@ -1,117 +0,0 @@
1
- # copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
2
- # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
3
- #
4
- # This file is part of logilab-common.
5
- #
6
- # logilab-common is free software: you can redistribute it and/or modify it under
7
- # the terms of the GNU Lesser General Public License as published by the Free
8
- # Software Foundation, either version 2.1 of the License, or (at your option) any
9
- # later version.
10
- #
11
- # logilab-common is distributed in the hope that it will be useful, but WITHOUT
12
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13
- # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
14
- # details.
15
- #
16
- # You should have received a copy of the GNU Lesser General Public License along
17
- # with logilab-common. If not, see <http://www.gnu.org/licenses/>.
18
- """A set of utility function to ease the use of OmniORBpy.
19
-
20
-
21
-
22
-
23
- """
24
- __docformat__ = "restructuredtext en"
25
-
26
- from omniORB import CORBA, PortableServer
27
- import CosNaming
28
-
29
- orb = None
30
-
31
- def get_orb():
32
- """
33
- returns a reference to the ORB.
34
- The first call to the method initialized the ORB
35
- This method is mainly used internally in the module.
36
- """
37
-
38
- global orb
39
- if orb is None:
40
- import sys
41
- orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID)
42
- return orb
43
-
44
- def get_root_context():
45
- """
46
- returns a reference to the NameService object.
47
- This method is mainly used internally in the module.
48
- """
49
-
50
- orb = get_orb()
51
- nss = orb.resolve_initial_references("NameService")
52
- rootContext = nss._narrow(CosNaming.NamingContext)
53
- assert rootContext is not None,"Failed to narrow root naming context"
54
- return rootContext
55
-
56
- def register_object_name(object, namepath):
57
- """
58
- Registers a object in the NamingService.
59
- The name path is a list of 2-uples (id,kind) giving the path.
60
-
61
- For instance if the path of an object is [('foo',''),('bar','')],
62
- it is possible to get a reference to the object using the URL
63
- 'corbaname::hostname#foo/bar'.
64
- [('logilab','rootmodule'),('chatbot','application'),('chatter','server')]
65
- is mapped to
66
- 'corbaname::hostname#logilab.rootmodule/chatbot.application/chatter.server'
67
-
68
- The get_object_reference() function can be used to resolve such a URL.
69
- """
70
- context = get_root_context()
71
- for id, kind in namepath[:-1]:
72
- name = [CosNaming.NameComponent(id, kind)]
73
- try:
74
- context = context.bind_new_context(name)
75
- except CosNaming.NamingContext.AlreadyBound, ex:
76
- context = context.resolve(name)._narrow(CosNaming.NamingContext)
77
- assert context is not None, \
78
- 'test context exists but is not a NamingContext'
79
-
80
- id,kind = namepath[-1]
81
- name = [CosNaming.NameComponent(id, kind)]
82
- try:
83
- context.bind(name, object._this())
84
- except CosNaming.NamingContext.AlreadyBound, ex:
85
- context.rebind(name, object._this())
86
-
87
- def activate_POA():
88
- """
89
- This methods activates the Portable Object Adapter.
90
- You need to call it to enable the reception of messages in your code,
91
- on both the client and the server.
92
- """
93
- orb = get_orb()
94
- poa = orb.resolve_initial_references('RootPOA')
95
- poaManager = poa._get_the_POAManager()
96
- poaManager.activate()
97
-
98
- def run_orb():
99
- """
100
- Enters the ORB mainloop on the server.
101
- You should not call this method on the client.
102
- """
103
- get_orb().run()
104
-
105
- def get_object_reference(url):
106
- """
107
- Resolves a corbaname URL to an object proxy.
108
- See register_object_name() for examples URLs
109
- """
110
- return get_orb().string_to_object(url)
111
-
112
- def get_object_string(host, namepath):
113
- """given an host name and a name path as described in register_object_name,
114
- return a corba string identifier
115
- """
116
- strname = '/'.join(['.'.join(path_elt) for path_elt in namepath])
117
- return 'corbaname::%s#%s' % (host, strname)
@@ -1,171 +0,0 @@
1
- # copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
2
- # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
3
- #
4
- # This file is part of logilab-common.
5
- #
6
- # logilab-common is free software: you can redistribute it and/or modify it under
7
- # the terms of the GNU Lesser General Public License as published by the Free
8
- # Software Foundation, either version 2.1 of the License, or (at your option) any
9
- # later version.
10
- #
11
- # logilab-common is distributed in the hope that it will be useful, but WITHOUT
12
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13
- # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
14
- # details.
15
- #
16
- # You should have received a copy of the GNU Lesser General Public License along
17
- # with logilab-common. If not, see <http://www.gnu.org/licenses/>.
18
- """A daemonize function (for Unices) and daemon mix-in class"""
19
-
20
- __docformat__ = "restructuredtext en"
21
-
22
- import os
23
- import errno
24
- import signal
25
- import sys
26
- import time
27
- import warnings
28
-
29
-
30
- def daemonize(pidfile):
31
- # See http://www.erlenstar.demon.co.uk/unix/faq_toc.html#TOC16
32
- # XXX unix specific
33
- #
34
- # fork so the parent can exit
35
- if os.fork(): # launch child and...
36
- return 1
37
- # deconnect from tty and create a new session
38
- os.setsid()
39
- # fork again so the parent, (the session group leader), can exit.
40
- # as a non-session group leader, we can never regain a controlling
41
- # terminal.
42
- if os.fork(): # launch child again.
43
- return 1
44
- # move to the root to avoit mount pb
45
- os.chdir('/')
46
- # set paranoid umask
47
- os.umask(077)
48
- # redirect standard descriptors
49
- null = os.open('/dev/null', os.O_RDWR)
50
- for i in range(3):
51
- try:
52
- os.dup2(null, i)
53
- except OSError, e:
54
- if e.errno != errno.EBADF:
55
- raise
56
- os.close(null)
57
- # filter warnings
58
- warnings.filterwarnings('ignore')
59
- # write pid in a file
60
- if pidfile:
61
- # ensure the directory where the pid-file should be set exists (for
62
- # instance /var/run/cubicweb may be deleted on computer restart)
63
- piddir = os.path.dirname(pidfile)
64
- if not os.path.exists(piddir):
65
- os.makedirs(piddir)
66
- f = file(pidfile, 'w')
67
- f.write(str(os.getpid()))
68
- f.close()
69
- return None
70
-
71
-
72
- class DaemonMixIn:
73
- """Mixin to make a daemon from watchers/queriers.
74
- """
75
-
76
- def __init__(self, configmod) :
77
- self.delay = configmod.DELAY
78
- self.name = str(self.__class__).split('.')[-1]
79
- self._pid_file = os.path.join('/tmp', '%s.pid'%self.name)
80
- if os.path.exists(self._pid_file):
81
- raise Exception('''Another instance of %s must be running.
82
- If it i not the case, remove the file %s''' % (self.name, self._pid_file))
83
- self._alive = 1
84
- self._sleeping = 0
85
- self.config = configmod
86
-
87
- def _daemonize(self):
88
- if not self.config.NODETACH:
89
- if daemonize(self._pid_file) is None:
90
- # put signal handler
91
- signal.signal(signal.SIGTERM, self.signal_handler)
92
- signal.signal(signal.SIGHUP, self.signal_handler)
93
- else:
94
- return -1
95
-
96
- def run(self):
97
- """ optionally go in daemon mode and
98
- do what concrete class has to do and pauses for delay between runs
99
- If self.delay is negative, do a pause before starting
100
- """
101
- if self._daemonize() == -1:
102
- return
103
- if self.delay < 0:
104
- self.delay = -self.delay
105
- time.sleep(self.delay)
106
- while 1:
107
- try:
108
- self._run()
109
- except Exception, ex:
110
- # display for info, sleep, and hope the problem will be solved
111
- # later.
112
- self.config.exception('Internal error: %s', ex)
113
- if not self._alive:
114
- break
115
- try:
116
- self._sleeping = 1
117
- time.sleep(self.delay)
118
- self._sleeping = 0
119
- except SystemExit:
120
- break
121
- self.config.info('%s instance exited', self.name)
122
- # remove pid file
123
- os.remove(self._pid_file)
124
-
125
- def signal_handler(self, sig_num, stack_frame):
126
- if sig_num == signal.SIGTERM:
127
- if self._sleeping:
128
- # we are sleeping so we can exit without fear
129
- self.config.debug('exit on SIGTERM')
130
- sys.exit(0)
131
- else:
132
- self.config.debug('exit on SIGTERM (on next turn)')
133
- self._alive = 0
134
- elif sig_num == signal.SIGHUP:
135
- self.config.info('reloading configuration on SIGHUP')
136
- reload(self.config)
137
-
138
- def _run(self):
139
- """should be overridden in the mixed class"""
140
- raise NotImplementedError()
141
-
142
-
143
- import logging
144
- from logilab.common.logging_ext import set_log_methods
145
- set_log_methods(DaemonMixIn, logging.getLogger('lgc.daemon'))
146
-
147
- ## command line utilities ######################################################
148
-
149
- L_OPTIONS = ["help", "log=", "delay=", 'no-detach']
150
- S_OPTIONS = 'hl:d:n'
151
-
152
- def print_help(modconfig):
153
- print """ --help or -h
154
- displays this message
155
- --log <log_level>
156
- log treshold (7 record everything, 0 record only emergency.)
157
- Defaults to %s
158
- --delay <delay>
159
- the number of seconds between two runs.
160
- Defaults to %s""" % (modconfig.LOG_TRESHOLD, modconfig.DELAY)
161
-
162
- def handle_option(modconfig, opt_name, opt_value, help_meth):
163
- if opt_name in ('-h','--help'):
164
- help_meth()
165
- sys.exit(0)
166
- elif opt_name in ('-l','--log'):
167
- modconfig.LOG_TRESHOLD = int(opt_value)
168
- elif opt_name in ('-d', '--delay'):
169
- modconfig.DELAY = int(opt_value)
170
- elif opt_name in ('-n', '--no-detach'):
171
- modconfig.NODETACH = 1
@@ -1,279 +0,0 @@
1
- # copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
2
- # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
3
- #
4
- # This file is part of logilab-common.
5
- #
6
- # logilab-common is free software: you can redistribute it and/or modify it under
7
- # the terms of the GNU Lesser General Public License as published by the Free
8
- # Software Foundation, either version 2.1 of the License, or (at your option) any
9
- # later version.
10
- #
11
- # logilab-common is distributed in the hope that it will be useful, but WITHOUT
12
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13
- # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
14
- # details.
15
- #
16
- # You should have received a copy of the GNU Lesser General Public License along
17
- # with logilab-common. If not, see <http://www.gnu.org/licenses/>.
18
- """Date manipulation helper functions.
19
-
20
-
21
-
22
-
23
- """
24
- __docformat__ = "restructuredtext en"
25
-
26
- import math
27
- from locale import getpreferredencoding
28
- from datetime import date, time, datetime, timedelta
29
- from time import strptime as time_strptime
30
- from calendar import monthrange, timegm
31
-
32
- try:
33
- from mx.DateTime import RelativeDateTime, Date, DateTimeType
34
- except ImportError:
35
- from warnings import warn
36
- warn("mxDateTime not found, endOfMonth won't be available")
37
- endOfMonth = None
38
- DateTimeType = datetime
39
- else:
40
- endOfMonth = RelativeDateTime(months=1, day=-1)
41
-
42
- # NOTE: should we implement a compatibility layer between date representations
43
- # as we have in lgc.db ?
44
-
45
- FRENCH_FIXED_HOLIDAYS = {
46
- 'jour_an' : '%s-01-01',
47
- 'fete_travail' : '%s-05-01',
48
- 'armistice1945' : '%s-05-08',
49
- 'fete_nat' : '%s-07-14',
50
- 'assomption' : '%s-08-15',
51
- 'toussaint' : '%s-11-01',
52
- 'armistice1918' : '%s-11-11',
53
- 'noel' : '%s-12-25',
54
- }
55
-
56
- FRENCH_MOBILE_HOLIDAYS = {
57
- 'paques2004' : '2004-04-12',
58
- 'ascension2004' : '2004-05-20',
59
- 'pentecote2004' : '2004-05-31',
60
-
61
- 'paques2005' : '2005-03-28',
62
- 'ascension2005' : '2005-05-05',
63
- 'pentecote2005' : '2005-05-16',
64
-
65
- 'paques2006' : '2006-04-17',
66
- 'ascension2006' : '2006-05-25',
67
- 'pentecote2006' : '2006-06-05',
68
-
69
- 'paques2007' : '2007-04-09',
70
- 'ascension2007' : '2007-05-17',
71
- 'pentecote2007' : '2007-05-28',
72
-
73
- 'paques2008' : '2008-03-24',
74
- 'ascension2008' : '2008-05-01',
75
- 'pentecote2008' : '2008-05-12',
76
-
77
- 'paques2009' : '2009-04-13',
78
- 'ascension2009' : '2009-05-21',
79
- 'pentecote2009' : '2009-06-01',
80
-
81
- 'paques2010' : '2010-04-05',
82
- 'ascension2010' : '2010-05-13',
83
- 'pentecote2010' : '2010-05-24',
84
-
85
- 'paques2011' : '2011-04-25',
86
- 'ascension2011' : '2011-06-02',
87
- 'pentecote2011' : '2011-06-13',
88
-
89
- 'paques2012' : '2012-04-09',
90
- 'ascension2012' : '2012-05-17',
91
- 'pentecote2012' : '2012-05-28',
92
- }
93
-
94
- # XXX this implementation cries for multimethod dispatching
95
-
96
- def get_step(dateobj, nbdays=1):
97
- # assume date is either a python datetime or a mx.DateTime object
98
- if isinstance(dateobj, date):
99
- return ONEDAY * nbdays
100
- return nbdays # mx.DateTime is ok with integers
101
-
102
- def datefactory(year, month, day, sampledate):
103
- # assume date is either a python datetime or a mx.DateTime object
104
- if isinstance(sampledate, datetime):
105
- return datetime(year, month, day)
106
- if isinstance(sampledate, date):
107
- return date(year, month, day)
108
- return Date(year, month, day)
109
-
110
- def weekday(dateobj):
111
- # assume date is either a python datetime or a mx.DateTime object
112
- if isinstance(dateobj, date):
113
- return dateobj.weekday()
114
- return dateobj.day_of_week
115
-
116
- def str2date(datestr, sampledate):
117
- # NOTE: datetime.strptime is not an option until we drop py2.4 compat
118
- year, month, day = [int(chunk) for chunk in datestr.split('-')]
119
- return datefactory(year, month, day, sampledate)
120
-
121
- def days_between(start, end):
122
- if isinstance(start, date):
123
- delta = end - start
124
- # datetime.timedelta.days is always an integer (floored)
125
- if delta.seconds:
126
- return delta.days + 1
127
- return delta.days
128
- else:
129
- return int(math.ceil((end - start).days))
130
-
131
- def get_national_holidays(begin, end):
132
- """return french national days off between begin and end"""
133
- begin = datefactory(begin.year, begin.month, begin.day, begin)
134
- end = datefactory(end.year, end.month, end.day, end)
135
- holidays = [str2date(datestr, begin)
136
- for datestr in FRENCH_MOBILE_HOLIDAYS.values()]
137
- for year in xrange(begin.year, end.year+1):
138
- for datestr in FRENCH_FIXED_HOLIDAYS.values():
139
- date = str2date(datestr % year, begin)
140
- if date not in holidays:
141
- holidays.append(date)
142
- return [day for day in holidays if begin <= day < end]
143
-
144
- def add_days_worked(start, days):
145
- """adds date but try to only take days worked into account"""
146
- step = get_step(start)
147
- weeks, plus = divmod(days, 5)
148
- end = start + ((weeks * 7) + plus) * step
149
- if weekday(end) >= 5: # saturday or sunday
150
- end += (2 * step)
151
- end += len([x for x in get_national_holidays(start, end + step)
152
- if weekday(x) < 5]) * step
153
- if weekday(end) >= 5: # saturday or sunday
154
- end += (2 * step)
155
- return end
156
-
157
- def nb_open_days(start, end):
158
- assert start <= end
159
- step = get_step(start)
160
- days = days_between(start, end)
161
- weeks, plus = divmod(days, 7)
162
- if weekday(start) > weekday(end):
163
- plus -= 2
164
- elif weekday(end) == 6:
165
- plus -= 1
166
- open_days = weeks * 5 + plus
167
- nb_week_holidays = len([x for x in get_national_holidays(start, end+step)
168
- if weekday(x) < 5 and x < end])
169
- open_days -= nb_week_holidays
170
- if open_days < 0:
171
- return 0
172
- return open_days
173
-
174
- def date_range(begin, end, incday=None, incmonth=None):
175
- """yields each date between begin and end
176
-
177
- :param begin: the start date
178
- :param end: the end date
179
- :param incr: the step to use to iterate over dates. Default is
180
- one day.
181
- :param include: None (means no exclusion) or a function taking a
182
- date as parameter, and returning True if the date
183
- should be included.
184
-
185
- When using mx datetime, you should *NOT* use incmonth argument, use instead
186
- oneDay, oneHour, oneMinute, oneSecond, oneWeek or endOfMonth (to enumerate
187
- months) as `incday` argument
188
- """
189
- assert not (incday and incmonth)
190
- begin = todate(begin)
191
- end = todate(end)
192
- if incmonth:
193
- while begin < end:
194
- begin = next_month(begin, incmonth)
195
- yield begin
196
- else:
197
- incr = get_step(begin, incday or 1)
198
- while begin < end:
199
- yield begin
200
- begin += incr
201
-
202
- # makes py datetime usable #####################################################
203
-
204
- ONEDAY = timedelta(days=1)
205
- ONEWEEK = timedelta(days=7)
206
-
207
- try:
208
- strptime = datetime.strptime
209
- except AttributeError: # py < 2.5
210
- from time import strptime as time_strptime
211
- def strptime(value, format):
212
- return datetime(*time_strptime(value, format)[:6])
213
-
214
- def strptime_time(value, format='%H:%M'):
215
- return time(*time_strptime(value, format)[3:6])
216
-
217
- def todate(somedate):
218
- """return a date from a date (leaving unchanged) or a datetime"""
219
- if isinstance(somedate, datetime):
220
- return date(somedate.year, somedate.month, somedate.day)
221
- assert isinstance(somedate, (date, DateTimeType)), repr(somedate)
222
- return somedate
223
-
224
- def totime(somedate):
225
- """return a time from a time (leaving unchanged), date or datetime"""
226
- # XXX mx compat
227
- if not isinstance(somedate, time):
228
- return time(somedate.hour, somedate.minute, somedate.second)
229
- assert isinstance(somedate, (time)), repr(somedate)
230
- return somedate
231
-
232
- def todatetime(somedate):
233
- """return a date from a date (leaving unchanged) or a datetime"""
234
- # take care, datetime is a subclass of date
235
- if isinstance(somedate, datetime):
236
- return somedate
237
- assert isinstance(somedate, (date, DateTimeType)), repr(somedate)
238
- return datetime(somedate.year, somedate.month, somedate.day)
239
-
240
- def datetime2ticks(somedate):
241
- return timegm(somedate.timetuple()) * 1000
242
-
243
- def days_in_month(somedate):
244
- return monthrange(somedate.year, somedate.month)[1]
245
-
246
- def days_in_year(somedate):
247
- feb = date(somedate.year, 2, 1)
248
- if days_in_month(feb) == 29:
249
- return 366
250
- else:
251
- return 365
252
-
253
- def previous_month(somedate, nbmonth=1):
254
- while nbmonth:
255
- somedate = first_day(somedate) - ONEDAY
256
- nbmonth -= 1
257
- return somedate
258
-
259
- def next_month(somedate, nbmonth=1):
260
- while nbmonth:
261
- somedate = last_day(somedate) + ONEDAY
262
- nbmonth -= 1
263
- return somedate
264
-
265
- def first_day(somedate):
266
- return date(somedate.year, somedate.month, 1)
267
-
268
- def last_day(somedate):
269
- return date(somedate.year, somedate.month, days_in_month(somedate))
270
-
271
- def ustrftime(somedate, fmt='%Y-%m-%d'):
272
- """like strftime, but returns a unicode string instead of an encoded
273
- string which' may be problematic with localized date.
274
-
275
- encoding is guessed by locale.getpreferredencoding()
276
- """
277
- # date format may depend on the locale
278
- encoding = getpreferredencoding(do_setlocale=False) or 'UTF-8'
279
- return unicode(somedate.strftime(str(fmt)), encoding)
@@ -1,49 +0,0 @@
1
- # copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
2
- # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
3
- #
4
- # This file is part of logilab-common.
5
- #
6
- # logilab-common is free software: you can redistribute it and/or modify it under
7
- # the terms of the GNU Lesser General Public License as published by the Free
8
- # Software Foundation, either version 2.1 of the License, or (at your option) any
9
- # later version.
10
- #
11
- # logilab-common is distributed in the hope that it will be useful, but WITHOUT
12
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13
- # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
14
- # details.
15
- #
16
- # You should have received a copy of the GNU Lesser General Public License along
17
- # with logilab-common. If not, see <http://www.gnu.org/licenses/>.
18
- """Wrappers to get actually replaceable DBAPI2 compliant modules and
19
- database connection whatever the database and client lib used.
20
-
21
- Currently support:
22
-
23
- - postgresql (pgdb, psycopg, psycopg2, pyPgSQL)
24
- - mysql (MySQLdb)
25
- - sqlite (pysqlite2, sqlite, sqlite3)
26
-
27
- just use the `get_connection` function from this module to get a
28
- wrapped connection. If multiple drivers for a database are available,
29
- you can control which one you want to use using the
30
- `set_prefered_driver` function.
31
-
32
- Additional helpers are also provided for advanced functionalities such
33
- as listing existing users or databases, creating database... Get the
34
- helper for your database using the `get_adv_func_helper` function.
35
- """
36
- __docformat__ = "restructuredtext en"
37
-
38
- from warnings import warn
39
- warn('this module is deprecated, use logilab.database instead',
40
- DeprecationWarning, stacklevel=1)
41
-
42
- from logilab.database import (get_connection, set_prefered_driver,
43
- get_dbapi_compliant_module as _gdcm,
44
- get_db_helper as _gdh)
45
-
46
- def get_dbapi_compliant_module(driver, *args, **kwargs):
47
- module = _gdcm(driver, *args, **kwargs)
48
- module.adv_func_helper = _gdh(driver)
49
- return module