インストールレポート

バージョン22.2で追加されました。

バージョン23.0で変更されました: version1に更新され、形式が安定版として宣言されました。

pip installコマンドの--reportオプションは、インストールされた内容(--dry-runオプションを使用した場合、インストールされる内容)の詳細なJSONレポートを生成します。

注記

ユースケースを検討する際には、

  • --reportオプションは要件ロックツールの実装(その他のユースケースも含む)に使用できますが、この形式自体はロックファイル形式を意図したものではありません。

  • installdownload、またはwheelコマンドの入力としてインストールレポートを受け入れる計画はありません。

  • --reportオプションとこの形式はサポートされているpip機能ですが、PyPA相互運用性標準ではなく、その進化はpipプロセスによって管理され、PyPA標準化プロセスによって管理されるものではありません。

仕様

レポートは、次のプロパティを持つJSONオブジェクトです。

  • version: 文字列1。下位互換性のない変更(必須フィールドの削除、既存フィールドのセマンティクスまたはデータ型の変更など)が導入された場合にのみ変更されます。下位互換性のない変更の導入は、非推奨サイクルや機能フラグなどの通常のpipプロセスに従います。ツールは、対応するバージョンをサポートしていることを確認するために、このフィールドをチェックする必要があります。

  • pip_version: レポートの作成に使用されたpipのバージョンを示す文字列。

  • install: インストールされる(またはされる予定の)配布パッケージを表すInstallationReportItemの配列。

  • environment: インストールレポートが生成された環境を記述するオブジェクト。PEP 508環境マーカーの詳細については、こちらを参照してください。値は文字列型です。

InstallationReportItemは、インストールされる(またはされる予定の)配布パッケージを記述するオブジェクトで、次のプロパティを持ちます。

  • metadata: PEP 566変換に従ってJSONオブジェクトに変換された配布物のメタデータ。

  • is_direct: 要件が直接的なURL参照として提供された場合、または直接的なURL参照に制約された場合はtrue。要件が名前とバージョン指定子として提供された場合はfalse

  • is_yanked: 要件がインデックスから削除されたが、PEP 592に従ってpipによって選択された場合はtrue

  • download_info: 直接URLデータ構造を使用して、インストールのためにダウンロードされる(またはされる予定の)アーティファクトに関する情報。is_directtrueの場合、このフィールドはdirect_url.jsonメタデータと同じですが、そうでない場合は、インデックスまたは--find-linksから取得されたアーティファクトのURLを表します。

    注記

    ソースアーカイブの場合、要件がホイールキャッシュからインストールされ、キャッシュエントリがダウンロードされたアーティファクトの元のURLを記録しなかった古いバージョンのpipによって設定された場合、download_info.archive_info.hashesが存在しない場合があります。

  • requested: 要件がコマンドライン引数によって直接、または要件ファイルによって間接的に、ユーザーによって明示的に提供された場合true。要件が別の要件の依存関係としてインストールされた場合はfalse

  • requested_extras: ユーザーが要求したエクストラ。このフィールドは、requestedフィールドがtrueの場合にのみ存在します。

次のコマンド

pip install \
  --ignore-installed --dry-run --quiet \
  --report - \
  "pydantic>=1.9" git+https://github.com/pypa/packaging@main

は、次のような出力になります(メタデータは簡略化されています)。

{
  "version": "1",
  "pip_version": "22.2",
  "install": [
    {
      "download_info": {
        "url": "https://files.pythonhosted.org/packages/a4/0c/fbaa7319dcb5eecd3484686eb5a5c5702a6445adb566f01aee6de3369bc4/pydantic-1.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
        "archive_info": {
          "hashes": {
            "sha256": "18f3e912f9ad1bdec27fb06b8198a2ccc32f201e24174cec1b3424dda605a310"
          }
        }
      },
      "is_direct": false,
      "is_yanked": false,
      "requested": true,
      "metadata": {
        "name": "pydantic",
        "version": "1.9.1",
        "requires_dist": [
          "typing-extensions (>=3.7.4.3)",
          "dataclasses (>=0.6) ; python_version < \"3.7\"",
          "python-dotenv (>=0.10.4) ; extra == 'dotenv'",
          "email-validator (>=1.0.3) ; extra == 'email'"
        ],
        "requires_python": ">=3.6.1",
        "provides_extra": [
          "dotenv",
          "email"
        ]
      }
    },
    {
      "download_info": {
        "url": "https://github.com/pypa/packaging",
        "vcs_info": {
          "vcs": "git",
          "requested_revision": "main",
          "commit_id": "4f42225e91a0be634625c09e84dd29ea82b85e27"
        }
      },
      "is_direct": true,
      "is_yanked": false,
      "requested": true,
      "metadata": {
        "name": "packaging",
        "version": "21.4.dev0",
        "requires_dist": [
          "pyparsing (!=3.0.5,>=2.0.2)"
        ],
        "requires_python": ">=3.7"
      }
    },
    {
      "download_info": {
        "url": "https://files.pythonhosted.org/packages/6c/10/a7d0fa5baea8fe7b50f448ab742f26f52b80bfca85ac2be9d35cdd9a3246/pyparsing-3.0.9-py3-none-any.whl",
        "archive_info": {
          "hashes": {
            "sha256": "5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"
          }
        }
      },
      "is_direct": false,
      "requested": false,
      "metadata": {
        "name": "pyparsing",
        "version": "3.0.9",
        "requires_dist": [
          "railroad-diagrams ; extra == \"diagrams\"",
          "jinja2 ; extra == \"diagrams\""
        ],
        "requires_python": ">=3.6.8"
      }
    },
    {
      "download_info": {
        "url": "https://files.pythonhosted.org/packages/75/e1/932e06004039dd670c9d5e1df0cd606bf46e29a28e65d5bb28e894ea29c9/typing_extensions-4.2.0-py3-none-any.whl",
        "archive_info": {
          "hashes": {
            "sha256": "6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"
          }
        }
      },
      "is_direct": false,
      "requested": false,
      "metadata": {
        "name": "typing_extensions",
        "version": "4.2.0",
        "requires_python": ">=3.7"
      }
    }
  ],
  "environment": {
    "implementation_name": "cpython",
    "implementation_version": "3.10.5",
    "os_name": "posix",
    "platform_machine": "x86_64",
    "platform_release": "5.13-generic",
    "platform_system": "Linux",
    "platform_version": "...",
    "python_full_version": "3.10.5",
    "platform_python_implementation": "CPython",
    "python_version": "3.10",
    "sys_platform": "linux"
  }
}