Paver の機能

ファイルはただの Python プログラム

Python はとても簡潔で読み易い構文を持っています。わざわざビルドを記述するためのミニ言語を作成する必要がありません。こういったミニ言語は必要な機能がなくて不自由することがよくあるように思います。Python とその構文を使用することで、いつでも何でもやりたいことを簡単に表現できるということを保証できます。例えば for ループはただの for ループです。

for fn in ["f1.txt", "f2.txt", "f3.txt"]:
    p = path(fn)
    p.remove()

1つの構文で1つのファイル

今日 Python プロジェクトを構成する場合、ツールのあるコレクションを取得してそのジョブを行います。distutils や setuptools はパッケージを取得してまとめて配置するための標準的なツールです。zc.buildout や virtualenv は隔離したデプロイ環境にインストールするために使用されます。Sphinx は Python プロジェクトのドキュメントを書くための優れた方法を提供します。

システム全体を構成するためにこれらのツールが必要です。しかし、これらのツールはそれぞれ独自の方法で動作します。 Paver 標準ライブラリ の目的はもっと統合された感覚で使える共通ツールを作ることです。そのため、やりたいことを行う方法を推測する必要はありません。

今日では Paver は distutils と setuptools でしっかりと結合して、他のツールを簡単に取り付けられるように動作し、もっと簡単にスクリプトが書ける setup.py に置き換わるものです。

簡単なファイル操作

Paver は Jason Orendorff がカスタマイズした素晴らしい path.py モジュールを含みます。ファイルやディレクトリの操作がこれ以上簡単にはならないです。またそのメソッドは “dry run” 操作をサポートするように変更されています。

小さな作業をするのに小さな変更

Python コードだと5行でできることを行うことを想像してください。Paver が使用するツールだと、それは5行のコード以上に労力が必要になります。あなたは新たなコマンドを作るためにその API、レシピ、もしくはパッケージの拡張方法について調べなければなりません。Paver を使用する目的は5行で行えることは5行の変更で済むことです。

例えば ‘sdist’ が実行されるときに追加の作業を実行する必要があると仮定します。distutils で行うための最善の方法が解明できるようにがんばってください。Paver だと次のように記述するだけです。

@task
def sdist():
    # perform fancy file manipulations
    blah.blah.blah()

    # *now* run the sdist
    call_task("setuptools.command.sdist")

ライブラリは利用しますが依存はしません

Paver 標準ライブラリは多くの共通ツールのサポートを含みますが、そういった全てのツールは全てのプロジェクトで必要ありません。Paver はそれらのツールに依存せずに利用可能な場合に自動的に利用するように設計されています。