Show a patch.

GET /api/patches/23752/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 23752,
    "url": "https://patchwork.libcamera.org/api/patches/23752/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/23752/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/projects/1/?format=api",
        "name": "libcamera",
        "link_name": "libcamera",
        "list_id": "libcamera_core",
        "list_email": "libcamera-devel@lists.libcamera.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20250707085520.39777-4-stefan.klug@ideasonboard.com>",
    "date": "2025-07-07T08:55:06",
    "name": "[v3,3/9] utils: gen-debug-controls: Improve log output",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "af197607eb5a128eba0698da9a340c2d5d77b756",
    "submitter": {
        "id": 184,
        "url": "https://patchwork.libcamera.org/api/people/184/?format=api",
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/23752/mbox/",
    "series": [
        {
            "id": 5273,
            "url": "https://patchwork.libcamera.org/api/series/5273/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5273",
            "date": "2025-07-07T08:55:03",
            "name": "Wdr preparations",
            "version": 3,
            "mbox": "https://patchwork.libcamera.org/series/5273/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/23752/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/23752/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>",
        "X-Original-To": "parsemail@patchwork.libcamera.org",
        "Delivered-To": "parsemail@patchwork.libcamera.org",
        "Received": [
            "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 16E76C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  7 Jul 2025 08:55:48 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B140068E8C;\n\tMon,  7 Jul 2025 10:55:47 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 461AD68E7F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  7 Jul 2025 10:55:43 +0200 (CEST)",
            "from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:c79f:85df:e7f5:4c31])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 87E21190D; \n\tMon,  7 Jul 2025 10:55:16 +0200 (CEST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"NtB3Hy/X\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1751878516;\n\tbh=C1MQ014R0VPNE4SJ8AWH6q4meRaMz4TkQggRdCowNLc=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=NtB3Hy/XcpspmtbauWBUhHGyyT41OoWmPtLKnnk6U/9AUaXZ1Ofm0r8BDXZRb1xtc\n\tjXEQxD8sEIYI0ky6hE3s1M9lG2Q1HtwCRyNuWcVaMCJqys6aVjx21W6UyqF1PMfAMy\n\tgIWT7od/Gvs2Mryyt7YuvaekkfzY2qQoPU1dmDVs=",
        "From": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Stefan Klug <stefan.klug@ideasonboard.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>,\n\tPaul Elder <paul.elder@ideasonboard.com>,\n\tIsaac Scott <isaac.scott@ideasonboard.com>",
        "Subject": "[PATCH v3 3/9] utils: gen-debug-controls: Improve log output",
        "Date": "Mon,  7 Jul 2025 10:55:06 +0200",
        "Message-ID": "<20250707085520.39777-4-stefan.klug@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.48.1",
        "In-Reply-To": "<20250707085520.39777-1-stefan.klug@ideasonboard.com>",
        "References": "<20250707085520.39777-1-stefan.klug@ideasonboard.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "libcamera-devel@lists.libcamera.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "<libcamera-devel.lists.libcamera.org>",
        "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>",
        "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>",
        "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>",
        "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>",
        "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "Add log statements for found controls and the file written. This makes\nit easier to understand what happens under the hood.\n\nWhile at it, create nice colored log out put using coloredlogs if\navailable.\n\nSigned-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\nAcked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\nReviewed-by: Isaac Scott <isaac.scott@ideasonboard.com>\n\n---\n\nChanges in v3:\n- Collected tags\n\nChanges in v2:\n- Collected tag\n---\n utils/gen-debug-controls.py | 15 +++++++++++++--\n 1 file changed, 13 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/utils/gen-debug-controls.py b/utils/gen-debug-controls.py\nindex ff22b986475e..a1c69bbd8294 100755\n--- a/utils/gen-debug-controls.py\n+++ b/utils/gen-debug-controls.py\n@@ -17,8 +17,13 @@ import sys\n from dataclasses import dataclass\n from pathlib import Path\n \n-logger = logging.getLogger(__name__)\n-logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')\n+fmt = '%(levelname)s: %(message)s'\n+try:\n+    import coloredlogs\n+    coloredlogs.install(level=logging.INFO, fmt=fmt)\n+except ImportError:\n+    logging.basicConfig(level=logging.INFO, format=fmt)\n+\n \n try:\n     import ruamel.yaml as ruyaml\n@@ -27,6 +32,8 @@ except:\n         f'Failed to import ruamel.yaml. Please install the ruamel.yaml package.')\n     sys.exit(1)\n \n+logger = logging.getLogger(__name__)\n+\n @dataclass\n class FoundMatch:\n     file: os.PathLike\n@@ -106,6 +113,7 @@ def main(argv):\n             continue\n \n         p = m.file.relative_to(root_dir)\n+        logger.info(f\"Found control {m.name} in {p}\")\n         desc = {'type': m.type,\n                 'direction': 'out',\n                 'description': f'Debug control {m.name} found in {p}'}\n@@ -165,6 +173,9 @@ def main(argv):\n                  \"#\\n\"))\n         yaml.dump(doc, f)\n \n+    p = ctrl_file.relative_to(Path.cwd(), walk_up=True)\n+    logger.info(f\"Sucessfully updated {p}\")\n+\n     return 0\n \n \n",
    "prefixes": [
        "v3",
        "3/9"
    ]
}