pavement.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. import sys
  2. from paver.easy import *
  3. from paver import doctools
  4. from paver.setuputils import setup
  5. PYCOMPILE_CACHES = ["*.pyc", "*$py.class"]
  6. options(
  7. sphinx=Bunch(builddir=".build"),
  8. )
  9. def sphinx_builddir(options):
  10. return path("docs") / options.sphinx.builddir / "html"
  11. @task
  12. def clean_docs(options):
  13. sphinx_builddir(options).rmtree()
  14. @task
  15. @needs("clean_docs", "paver.doctools.html")
  16. def html(options):
  17. destdir = path("Documentation")
  18. destdir.rmtree()
  19. builtdocs = sphinx_builddir(options)
  20. builtdocs.move(destdir)
  21. @task
  22. @needs("paver.doctools.html")
  23. def qhtml(options):
  24. destdir = path("Documentation")
  25. builtdocs = sphinx_builddir(options)
  26. sh("rsync -az %s/ %s" % (builtdocs, destdir))
  27. @task
  28. @needs("clean_docs", "paver.doctools.html")
  29. def ghdocs(options):
  30. builtdocs = sphinx_builddir(options)
  31. sh("git checkout gh-pages && \
  32. cp -r %s/* . && \
  33. git commit . -m 'Rendered documentation for Github Pages.' && \
  34. git push origin gh-pages && \
  35. git checkout master" % builtdocs)
  36. @task
  37. @needs("clean_docs", "paver.doctools.html")
  38. def upload_pypi_docs(options):
  39. builtdocs = path("docs") / options.builddir / "html"
  40. sh("%s setup.py upload_sphinx --upload-dir='%s'" % (
  41. sys.executable, builtdocs))
  42. @task
  43. @needs("upload_pypi_docs", "ghdocs")
  44. def upload_docs(options):
  45. pass
  46. @task
  47. def autodoc(options):
  48. sh("contrib/release/doc4allmods celery")
  49. @task
  50. def verifyindex(options):
  51. sh("contrib/release/verify-reference-index.sh")
  52. @task
  53. def verifyconfigref(options):
  54. sh("PYTHONPATH=. %s contrib/release/verify_config_reference.py \
  55. docs/configuration.rst" % (sys.executable, ))
  56. @task
  57. @cmdopts([
  58. ("noerror", "E", "Ignore errors"),
  59. ])
  60. def flake8(options):
  61. noerror = getattr(options, "noerror", False)
  62. complexity = getattr(options, "complexity", 22)
  63. sh("""flake8 celery | perl -mstrict -mwarnings -nle'
  64. my $ignore = m/too complex \((\d+)\)/ && $1 le %s;
  65. if (! $ignore) { print STDERR; our $FOUND_FLAKE = 1 }
  66. }{exit $FOUND_FLAKE;
  67. '""" % (complexity, ), ignore_error=noerror)
  68. @task
  69. @cmdopts([
  70. ("noerror", "E", "Ignore errors"),
  71. ])
  72. def flakeplus(options):
  73. noerror = getattr(options, "noerror", False)
  74. sh("python contrib/release/flakeplus.py celery",
  75. ignore_error=noerror)
  76. @task
  77. @cmdopts([
  78. ("noerror", "E", "Ignore errors")
  79. ])
  80. def flakes(options):
  81. flake8(options)
  82. flakeplus(options)
  83. @task
  84. def clean_readme(options):
  85. path("README").unlink()
  86. path("README.rst").unlink()
  87. @task
  88. @needs("clean_readme")
  89. def readme(options):
  90. sh("%s contrib/release/sphinx-to-rst.py docs/templates/readme.txt \
  91. > README.rst" % (sys.executable, ))
  92. sh("ln -sf README.rst README")
  93. @task
  94. def bump(options):
  95. sh("contrib/release/bump_version.py \
  96. celery/__init__.py docs/includes/introduction.txt \
  97. --before-commit='paver readme'")
  98. @task
  99. @cmdopts([
  100. ("coverage", "c", "Enable coverage"),
  101. ("quick", "q", "Quick test"),
  102. ("verbose", "V", "Make more noise"),
  103. ])
  104. def test(options):
  105. cmd = "CELERY_LOADER=default nosetests"
  106. if getattr(options, "coverage", False):
  107. cmd += " --with-coverage3"
  108. if getattr(options, "quick", False):
  109. cmd = "QUICKTEST=1 SKIP_RLIMITS=1 %s" % cmd
  110. if getattr(options, "verbose", False):
  111. cmd += " --verbosity=2"
  112. sh(cmd)
  113. @task
  114. @cmdopts([
  115. ("noerror", "E", "Ignore errors"),
  116. ])
  117. def pep8(options):
  118. noerror = getattr(options, "noerror", False)
  119. return sh("""find . -name "*.py" | xargs pep8 | perl -nle'\
  120. print; $a=1 if $_}{exit($a)'""", ignore_error=noerror)
  121. @task
  122. def removepyc(options):
  123. sh("find . -type f -a \\( %s \\) | xargs rm" % (
  124. " -o ".join("-name '%s'" % (pat, ) for pat in PYCOMPILE_CACHES), ))
  125. @task
  126. @needs("removepyc")
  127. def gitclean(options):
  128. sh("git clean -xdn")
  129. @task
  130. @needs("removepyc")
  131. def gitcleanforce(options):
  132. sh("git clean -xdf")
  133. @task
  134. @needs("flakes", "autodoc", "verifyindex",
  135. "verifyconfigref", "test", "gitclean")
  136. def releaseok(options):
  137. pass
  138. @task
  139. @needs("releaseok", "removepyc", "upload_docs")
  140. def release(options):
  141. pass
  142. @task
  143. def coreloc(options):
  144. sh("xargs sloccount < contrib/release/core-modules.txt")
  145. @task
  146. def testloc(options):
  147. sh("sloccount celery/tests")
  148. @task
  149. def loc(options):
  150. sh("sloccount celery")