{"id":10022,"library":"paver","title":"Paver Build and Deployment Scripting","description":"Paver is a Python-based build and task management system, designed to simplify scripting for development, distribution, and deployment. Its last stable release, 1.3.4, was in 2017. The project appears to be unmaintained and is not recommended for new development.","status":"abandoned","version":"1.3.4","language":"en","source_language":"en","source_url":"https://github.com/paver/paver","tags":["build system","task runner","automation","development tools","legacy"],"install":[{"cmd":"pip install paver","lang":"bash","label":"Install latest stable version"}],"dependencies":[{"reason":"Required for package building and distribution tasks.","package":"setuptools","optional":false}],"imports":[{"note":"Paver tasks and utilities are typically imported using 'from paver.easy import *' to make decorators like '@task' and functions like 'path()' directly available.","symbol":"*","correct":"from paver.easy import *"}],"quickstart":{"code":"from paver.easy import *\n\n@task\ndef hello():\n    print(\"Hello from Paver!\")\n\n@task\n@needs('hello')\ndef world():\n    print(\"World! This task depends on 'hello'.\")\n\n# To run:\n# Save this as 'pavement.py'\n# Then execute in terminal: 'paver hello' or 'paver world'","lang":"python","description":"This quickstart demonstrates defining simple tasks using the '@task' decorator and managing task dependencies with '@needs'. Save the code as `pavement.py` in your project root and run `paver <task_name>` from your terminal."},"warnings":[{"fix":"For new projects, consider modern alternatives like 'invoke', 'poetry', 'flit', or `setuptools` based scripting. For existing projects, be aware of potential compatibility issues with newer Python versions or libraries.","message":"The Paver project is no longer actively maintained. Its last release was in 2017, and there have been no significant updates since. Using it for new projects is strongly discouraged.","severity":"breaking","affected_versions":"All versions"},{"fix":"Thoroughly test existing Paver setups when migrating to newer Python 3 versions. Be prepared to refactor problematic parts or consider migrating to a more actively maintained build system.","message":"While Paver 1.3.4 aims for Python 3 compatibility, complex setups, especially those relying on older `distutils` or `setuptools` integrations, may encounter unexpected behavior or errors on newer Python 3 versions.","severity":"gotcha","affected_versions":"1.x"},{"fix":"Always explicitly define dependencies using `@needs('task_name')`. For complex graphs, trace the execution path or use a debugger to ensure tasks are invoked as intended. Avoid circular dependencies.","message":"Paver's dependency management for tasks, using `@needs`, defines a strict ordering. Misunderstanding how dependencies are resolved can lead to tasks not running in the expected sequence or skipped entirely.","severity":"gotcha","affected_versions":"1.x"}],"env_vars":null,"last_verified":"2026-04-17T00:00:00.000Z","next_check":"2026-07-16T00:00:00.000Z","problems":[{"fix":"Run `pip install paver` to install the library.","cause":"The Paver library is not installed in the current Python environment.","error":"ImportError: No module named paver"},{"fix":"Ensure `from paver.easy import *` is present at the top of your `pavement.py` file.","cause":"The '@task' decorator (and other Paver utilities) were not correctly imported.","error":"NameError: name 'task' is not defined"},{"fix":"Double-check the task name provided to `paver <task_name>` against the `@task` definitions in `pavement.py`. Ensure the task function is correctly decorated.","cause":"The task specified on the command line does not exist or is misspelled in the `pavement.py` file.","error":"No such task: <task_name>"}]}