Python-based project scripting.
Python PowerShell Batchfile
Latest commit 133969e Aug 14, 2016 @jstasiak jstasiak committed with Almad Don't crash on tasks with annotations (#170)
We've been adding type hints to our Python code for a while now, we'd
also like to annotate functions in pavement files but we can't currently.

Let's have a sample pavement file:

    from paver.easy import task

    def say_hello() -> None:

Before this patch running "paver say_hello" would result in:

    % paver say_hello
    Traceback (most recent call last):
      File "/Volumes/smarkets/paver/paver/", line 2, in <module>
      File "/Volumes/smarkets/paver/paver/", line 886, in main
      File "/Volumes/smarkets/paver/paver/", line 866, in _launch_pavement
        _process_commands(args, auto_pending=auto_pending)
      File "/Volumes/smarkets/paver/paver/", line 817, in _process_commands
      File "/Volumes/smarkets/paver/paver/", line 329, in __call__
        retval = environment._run_task(, self.needs, self.func)
      File "/Volumes/smarkets/paver/paver/", line 159, in _run_task
        (funcargs, varargs, varkw, defaults) = inspect.getargspec(func)
      File "/usr/local/Cellar/python3/3.5.2/Frameworks/Python.framework/Versions/3.5/lib/python3.5/", line 1045, in getargspec
        raise ValueError("Function has keyword-only arguments or annotations"
    ValueError: Function has keyword-only arguments or annotations, use getfullargspec() API which can support them


Paver - Easy Scripting for Software Projects

Keywords:build, scripting, make alternative, svn, git,, documentation, automation, tasks, virtualenv, integration


Paver is a Python-based software project scripting tool along the lines of Make or Rake. It is not designed to handle the dependency tracking requirements of, for example, a C program. It is designed to help out with all of your other repetitive tasks (run documentation generators, moving files about, downloading things), all with the convenience of Python’s syntax and massive library of code.


Current build status:

Documentation is hosted on PyPI (docs for development version are on GitHub).


You can install Paver either via the Python Package Index (PyPI) or from source.

To install a PyPI release using pip:

$ pip install -U Paver

… or alternatively from source (github master):

$ pip install -e git+

To install using easy_install:

$ easy_install -U Paver


Reference test suite can be run using Docker:

sudo docker run -it paver/paver

When developing locally, build it first:

sudo docker build -t  paver/paver . && sudo docker run -it paver/paver

When trying to debug inside the dev environment, run:

sudo docker run -it paver/paver /bin/bash

Alternatively, on your computer without any virtualization to catch environment-specific bugs:

$ virtualenv paver-venv
$ source paver-venv/bin/activate
(paver-venv) $ pip install -r test-requirements.txt
(paver-venv) $ python test

Getting Help

Mailing list

For any discussion about usage or development of Paver, you are welcomed to join the paver mailing list .


Come chat with us on IRC. The #paver channel is located at the Freenode network.

Bug tracker

If you have any suggestions, bug reports or annoyances please report them to GitHub issue tracker.