get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2223064,
    "url": "http://patchwork.ozlabs.org/api/1.0/patches/2223064/?format=api",
    "project": {
        "id": 27,
        "url": "http://patchwork.ozlabs.org/api/1.0/projects/27/?format=api",
        "name": "Buildroot development",
        "link_name": "buildroot",
        "list_id": "buildroot.buildroot.org",
        "list_email": "buildroot@buildroot.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20260414095841.445592-1-mooz@blockos.org>",
    "date": "2026-04-14T09:56:25",
    "name": "[v2] package/python-ncclient: new package",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "3a971f6e0bb75ce7f44777714f9437b99d125cf5",
    "submitter": {
        "id": 92650,
        "url": "http://patchwork.ozlabs.org/api/1.0/people/92650/?format=api",
        "name": "Vincent Cruz",
        "email": "mooz@blockos.org"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/buildroot/patch/20260414095841.445592-1-mooz@blockos.org/mbox/",
    "series": [
        {
            "id": 499812,
            "url": "http://patchwork.ozlabs.org/api/1.0/series/499812/?format=api",
            "date": "2026-04-14T09:56:25",
            "name": "[v2] package/python-ncclient: new package",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/499812/mbox/"
        }
    ],
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2223064/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<buildroot-bounces@buildroot.org>",
        "X-Original-To": [
            "incoming-buildroot@patchwork.ozlabs.org",
            "buildroot@buildroot.org"
        ],
        "Delivered-To": [
            "patchwork-incoming-buildroot@legolas.ozlabs.org",
            "buildroot@buildroot.org"
        ],
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=buildroot.org header.i=@buildroot.org\n header.a=rsa-sha256 header.s=default header.b=fwaPLWTV;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=buildroot.org\n (client-ip=2605:bc80:3010::137; helo=smtp4.osuosl.org;\n envelope-from=buildroot-bounces@buildroot.org; receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fw0LJ4YmZz1y2d\n\tfor <incoming-buildroot@patchwork.ozlabs.org>;\n Tue, 14 Apr 2026 20:06:46 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id B83144292C;\n\tTue, 14 Apr 2026 10:06:44 +0000 (UTC)",
            "from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id 7YdatBA0Gqxl; Tue, 14 Apr 2026 10:06:43 +0000 (UTC)",
            "from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id A29CB42965;\n\tTue, 14 Apr 2026 10:06:43 +0000 (UTC)",
            "from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n by lists1.osuosl.org (Postfix) with ESMTP id 65792375\n for <buildroot@buildroot.org>; Tue, 14 Apr 2026 10:06:42 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n by smtp4.osuosl.org (Postfix) with ESMTP id 635BB42965\n for <buildroot@buildroot.org>; Tue, 14 Apr 2026 10:06:42 +0000 (UTC)",
            "from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id af4_g597TDjl for <buildroot@buildroot.org>;\n Tue, 14 Apr 2026 10:06:41 +0000 (UTC)",
            "from 11.mo534.mail-out.ovh.net (11.mo534.mail-out.ovh.net\n [46.105.33.174])\n by smtp4.osuosl.org (Postfix) with ESMTPS id 894C14292C\n for <buildroot@buildroot.org>; Tue, 14 Apr 2026 10:06:39 +0000 (UTC)",
            "from director2.derp.mail-out.ovh.net\n (director2.derp.mail-out.ovh.net [79.137.60.36])\n by mo534.mail-out.ovh.net (Postfix) with ESMTPS id 4fw0935MMfz6Myt;\n Tue, 14 Apr 2026 09:58:47 +0000 (UTC)",
            "from director2.derp.mail-out.ovh.net\n (director2.derp.mail-out.ovh.net. [127.0.0.1])\n by director2.derp.mail-out.ovh.net (inspect_sender_mail_agent) with SMTP\n for <mooz@blockos.org>; Tue, 14 Apr 2026 09:58:47 +0000 (UTC)",
            "from mta3.priv.ovhmail-u1.ea.mail.ovh.net (unknown [10.109.249.197])\n by director2.derp.mail-out.ovh.net (Postfix) with ESMTPS id\n 4fw0934TpPz1yhZ; Tue, 14 Apr 2026 09:58:47 +0000 (UTC)",
            "from blockos.org (unknown [10.1.6.6])\n (Authenticated sender: mooz@blockos.org)\n by mta3.priv.ovhmail-u1.ea.mail.ovh.net (Postfix) with ESMTPSA id\n 975709415D0;\n Tue, 14 Apr 2026 09:58:46 +0000 (UTC)"
        ],
        "X-Virus-Scanned": [
            "amavis at osuosl.org",
            "amavis at osuosl.org"
        ],
        "X-Comment": "SPF check N/A for local connections - client-ip=140.211.166.142;\n helo=lists1.osuosl.org; envelope-from=buildroot-bounces@buildroot.org;\n receiver=<UNKNOWN> ",
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 smtp4.osuosl.org A29CB42965",
            "OpenDKIM Filter v2.11.0 smtp4.osuosl.org 894C14292C"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=buildroot.org;\n\ts=default; t=1776161203;\n\tbh=3ai/M5q6+FB8yuzj81RhFKYHTPDoMVbwjVB6QyTRqh4=;\n\th=From:To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:\n\t List-Post:List-Help:List-Subscribe:Cc:From;\n\tb=fwaPLWTV3JUZFum7C5XbQO3QuyE/xyPhSgzIskyW8JwrMNA/vWF4SokBd3spSLFHL\n\t irsoFFZE59Jtny77YFXyse38B/919dCltk9li7soSrLSuGx13MmozlA5FcGg3BmgWK\n\t yYZL6p9Gs6CgqN+IPBn8V8Z/ms3ryWgF++QwC7YOzvH2uO5ttQyApvxeE3Z1cf+ko6\n\t HBQToTvD9qhZggQ0liLE+0rBnXbZHKABnVZ18Ewkw2m2SwZ9xkQvkCTqOg3/rKJNzl\n\t HfUnn2Nse0+n6bIEP6e1J+NYNR0iSm6yVLzr1+kjoGoRpWRKiSDNsTu9noiEobItLj\n\t 5jyWU6GwIFnBg==",
        "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=46.105.33.174;\n helo=11.mo534.mail-out.ovh.net; envelope-from=mooz@blockos.org;\n receiver=<UNKNOWN>",
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp4.osuosl.org 894C14292C",
        "X-OVh-ClientIp": "213.36.7.12",
        "From": "Vincent Cruz <mooz@blockos.org>",
        "To": "buildroot@buildroot.org",
        "Date": "Tue, 14 Apr 2026 11:56:25 +0200",
        "Message-ID": "<20260414095841.445592-1-mooz@blockos.org>",
        "X-Mailer": "git-send-email 2.51.0",
        "MIME-Version": "1.0",
        "x-ovh-tracer-id": "1141381033407269794",
        "X-VR-SPAMSTATE": "OK",
        "X-VR-SPAMSCORE": "-100",
        "X-VR-SPAMCAUSE": "\n dmFkZTGEleDuZF7qvu0gLVn/pVN8l9+YpV6dI/ZnfmQl7tidSt7o3X/WNldqb5C2J3dwlsfeR7D3qGmJmG93lzU9KezHgh3oMNm8fPjFi90UDjjvcLXUp4W4M18NWXzKVaQaBVRmGYlMvhss3n/YbOJinF/5Xy0eXpfKG9HiuZBINLqDEvjIfKCgI35sTf8qoSiEC+zBw8LxcBgPxQQUxlezO3dM1KLgg0MMlfkk/Zat0IBqu1wNPZj223U4gXff5uF3W+fC0NHEa2G3jlNIdfO19HmFj0v9Kf6KfDweuepIEgaCCbWDPTITj6sUt7YRCU6Io+8Y5/N/dfYiIwZZykj1NkESXoSLvbdXbujp3f3wR1PRukGxhw/FOnWeDtOlkmt6X2lmlOwkSIS1/SZBMKE2xkWik7LY2bjyy8BDwz01cOuN51QJDWeaQ6P5EO0FMfn/1DVdcJ/R8vS5WrWhm6DycWcjGja40GyA8fVrzt9HxvQz9u2Ybx5fIuE4dPjMxL3KUNKFH7MN2H0YQGqczFXcyTqYmPd2H3472R6PfqZ/ycPPIWBWlZdg8EgY/MHbwCsXmK1xH8Uov5hAjWoPkBUTMQfytj8oS4myHOxsB+8q6w0T9CyNrshyKnqDt+5HzkxVynQLu0vgDW4JXE/FUt2HjGIs8I5h6QVK4qG43R1kRz9wfA",
        "X-Mailman-Original-Authentication-Results": [
            "smtp4.osuosl.org;\n dmarc=none (p=none dis=none)\n header.from=blockos.org",
            "garm.ovh; auth=pass\n (GARM-112S006b408b295-a44a-4060-8526-0a27c1b58b97,\n 57EC06D2F55947E19987155D42FF0DD2D92A6C82) smtp.auth=mooz@blockos.org"
        ],
        "Subject": "[Buildroot] [PATCH v2] package/python-ncclient: new package",
        "X-BeenThere": "buildroot@buildroot.org",
        "X-Mailman-Version": "2.1.30",
        "Precedence": "list",
        "List-Id": "Discussion and development of buildroot <buildroot.buildroot.org>",
        "List-Unsubscribe": "<https://lists.buildroot.org/mailman/options/buildroot>,\n <mailto:buildroot-request@buildroot.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.buildroot.org/pipermail/buildroot/>",
        "List-Post": "<mailto:buildroot@buildroot.org>",
        "List-Help": "<mailto:buildroot-request@buildroot.org?subject=help>",
        "List-Subscribe": "<https://lists.buildroot.org/mailman/listinfo/buildroot>,\n <mailto:buildroot-request@buildroot.org?subject=subscribe>",
        "Cc": "Vincent Jardin <vjardin@free.fr>,\n James Hilliard <james.hilliard1@gmail.com>,\n Thomas Petazzoni <thomas.petazzoni@bootlin.com>,\n Vincent Cruz <mooz@blockos.org>",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Errors-To": "buildroot-bounces@buildroot.org",
        "Sender": "\"buildroot\" <buildroot-bounces@buildroot.org>"
    },
    "content": "From: Vincent Jardin <vjardin@free.fr>\n\nncclient is a Python library for NETCONF clients. It facilitates\nclient-side scripting and application development around NETCONF.\n\nhttps://github.com/ncclient/ncclient\nSigned-off-by: Vincent Jardin <vjardin@free.fr>\nSigned-off-by: Vincent Cruz <mooz@blockos.org>\n\n---\nChanges v1 -> v2:\n  - Bump version to 0.7.1\n  - Add test\n\nSigned-off-by: Vincent Cruz <mooz@blockos.org>\n---\n DEVELOPERS                                    |  1 +\n package/Config.in                             |  1 +\n package/python-ncclient/Config.in             | 13 +++++++\n package/python-ncclient/python-ncclient.hash  |  5 +++\n package/python-ncclient/python-ncclient.mk    | 17 ++++++++\n .../tests/package/sample_python_ncclient.py   | 19 +++++++++\n .../tests/package/test_python_ncclient.py     | 39 +++++++++++++++++++\n .../rootfs-overlay/root/add_root.xml          | 35 +++++++++++++++++\n 8 files changed, 130 insertions(+)\n create mode 100644 package/python-ncclient/Config.in\n create mode 100644 package/python-ncclient/python-ncclient.hash\n create mode 100644 package/python-ncclient/python-ncclient.mk\n create mode 100644 support/testing/tests/package/sample_python_ncclient.py\n create mode 100644 support/testing/tests/package/test_python_ncclient.py\n create mode 100644 support/testing/tests/package/test_python_ncclient/rootfs-overlay/root/add_root.xml",
    "diff": "diff --git a/DEVELOPERS b/DEVELOPERS\nindex 1ad64e876e..4a4a25e2c8 100644\n--- a/DEVELOPERS\n+++ b/DEVELOPERS\n@@ -3369,6 +3369,7 @@ F:\tpackage/dpdk/\n F:\tpackage/libecoli/\n F:\tpackage/libnss-ato/\n F:\tpackage/libyang-cpp/\n+F:\tpackage/python-ncclient/\n F:\tpackage/sysrepo-cpp/\n \n N:\tVincent Prince <vincent.prince.fr@gmail.com>\ndiff --git a/package/Config.in b/package/Config.in\nindex 71501cea53..4eeac53563 100644\n--- a/package/Config.in\n+++ b/package/Config.in\n@@ -1250,6 +1250,7 @@ menu \"External python modules\"\n \tsource \"package/python-mwscrape2slob/Config.in\"\n \tsource \"package/python-mypy/Config.in\"\n \tsource \"package/python-mypy-extensions/Config.in\"\n+\tsource \"package/python-ncclient/Config.in\"\n \tsource \"package/python-nested-dict/Config.in\"\n \tsource \"package/python-netaddr/Config.in\"\n \tsource \"package/python-netifaces/Config.in\"\ndiff --git a/package/python-ncclient/Config.in b/package/python-ncclient/Config.in\nnew file mode 100644\nindex 0000000000..7cad899ca2\n--- /dev/null\n+++ b/package/python-ncclient/Config.in\n@@ -0,0 +1,13 @@\n+config BR2_PACKAGE_PYTHON_NCCLIENT\n+\tbool \"python-ncclient\"\n+\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-paramiko\n+\tselect BR2_PACKAGE_PYTHON3_PYEXPAT # runtimeq\n+\tselect BR2_PACKAGE_PYTHON_LXML # runtime\n+\tselect BR2_PACKAGE_PYTHON_PARAMIKO # runtime\n+\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n+\thelp\n+\t  ncclient is a Python library for NETCONF clients. It\n+\t  facilitates client-side scripting and application\n+\t  development around NETCONF.\n+\n+\t  https://github.com/ncclient/ncclient\ndiff --git a/package/python-ncclient/python-ncclient.hash b/package/python-ncclient/python-ncclient.hash\nnew file mode 100644\nindex 0000000000..5901cb0ddc\n--- /dev/null\n+++ b/package/python-ncclient/python-ncclient.hash\n@@ -0,0 +1,5 @@\n+# From https://pypi.org/pypi/ncclient/0.7.1/json\n+sha256  60dabb6ac1a2d84fbc3349cb104ef7d0c5d12cf8eee43fefc715410d70410ddc  ncclient-0.7.1.tar.gz\n+\n+# Locally computed\n+sha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\ndiff --git a/package/python-ncclient/python-ncclient.mk b/package/python-ncclient/python-ncclient.mk\nnew file mode 100644\nindex 0000000000..36223e835a\n--- /dev/null\n+++ b/package/python-ncclient/python-ncclient.mk\n@@ -0,0 +1,17 @@\n+################################################################################\n+#\n+# python-ncclient\n+#\n+################################################################################\n+\n+PYTHON_NCCLIENT_VERSION = 0.7.1\n+PYTHON_NCCLIENT_SOURCE = ncclient-$(PYTHON_NCCLIENT_VERSION).tar.gz\n+PYTHON_NCCLIENT_SITE = https://files.pythonhosted.org/packages/source/n/ncclient\n+\n+PYTHON_NCCLIENT_LICENSE = Apache-2.0\n+PYTHON_NCCLIENT_LICENSE_FILES = LICENSE\n+\n+PYTHON_NCCLIENT_SETUP_TYPE = hatch\n+PYTHON_NCCLIENT_DEPENDENCIES = host-python-hatch-vcs\n+\n+$(eval $(python-package))\ndiff --git a/support/testing/tests/package/sample_python_ncclient.py b/support/testing/tests/package/sample_python_ncclient.py\nnew file mode 100644\nindex 0000000000..cfd4e260e8\n--- /dev/null\n+++ b/support/testing/tests/package/sample_python_ncclient.py\n@@ -0,0 +1,19 @@\n+import os\n+from ncclient import manager\n+\n+filter = \"\"\"\n+<filter xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">\n+    <netconf-state xmlns=\"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring\">\n+        <sessions/>\n+    </netconf-state>\n+</filter>\n+\"\"\"\n+\n+with manager.connect(host='localhost',\n+                     port=830,\n+                     username=os.getenv(\"USER\"),\n+                     key_filename='/root/.ssh/dummy_key',\n+                     hostkey_verify=False,\n+                     allow_agent=False,\n+                     look_for_keys=False) as m:\n+    print(m.get(filter=filter).data_xml)\ndiff --git a/support/testing/tests/package/test_python_ncclient.py b/support/testing/tests/package/test_python_ncclient.py\nnew file mode 100644\nindex 0000000000..ca77b2080c\n--- /dev/null\n+++ b/support/testing/tests/package/test_python_ncclient.py\n@@ -0,0 +1,39 @@\n+import os\n+import infra\n+from xml.etree import ElementTree\n+from tests.package.test_python import TestPythonPackageBase\n+\n+\n+class TestPythonNCClient(TestPythonPackageBase):\n+    rootfs_overlay = infra.filepath(\"tests/package/test_python_ncclient/rootfs-overlay\")\n+\n+    __test__ = True\n+    config = TestPythonPackageBase.config + \\\n+        f\"\"\"\n+        BR2_INSTALL_LIBSTDCPP=y\n+        BR2_PACKAGE_OPENSSH=y\n+        BR2_PACKAGE_NETOPEER2=y\n+        BR2_PACKAGE_NETOPEER2_CLI=y\n+        BR2_PACKAGE_PYTHON3=y\n+        BR2_PACKAGE_PYTHON_NCCLIENT=y\n+        BR2_ROOTFS_OVERLAY=\"{rootfs_overlay}\"\n+        \"\"\"\n+    sample_scripts = [\"tests/package/sample_python_ncclient.py\"]\n+\n+    def test_run(self):\n+        self.login()\n+        self.check_sample_scripts_exist()\n+\n+        self.assertRunOk('mkdir -p /root/.ssh')\n+        self.assertRunOk('ssh-keygen -t ed25519 -f /root/.ssh/dummy_key -N \"\"')\n+        self.assertRunOk('cat /root/.ssh/dummy_key.pub > /root/.ssh/authorized_keys')\n+\n+        self.assertRunOk('sysrepocfg -f xml -I ./add_root.xml -d running -m ietf-netconf-server')\n+\n+        cmd = \"%s %s\" % (self.interpreter, os.path.basename(self.sample_scripts[0]))\n+        output, exit_code = self.emulator.run(cmd, timeout=15)\n+        self.assertEqual(exit_code, 0)\n+\n+        tree = ElementTree.fromstringlist(output)\n+        self.assertEqual(tree.tag, '{urn:ietf:params:xml:ns:netconf:base:1.0}data')\n+        self.assertEqual(tree.find('.//{*}username').text, 'root')\ndiff --git a/support/testing/tests/package/test_python_ncclient/rootfs-overlay/root/add_root.xml b/support/testing/tests/package/test_python_ncclient/rootfs-overlay/root/add_root.xml\nnew file mode 100644\nindex 0000000000..4f48be2483\n--- /dev/null\n+++ b/support/testing/tests/package/test_python_ncclient/rootfs-overlay/root/add_root.xml\n@@ -0,0 +1,35 @@\n+<?xml version=\"1.0\"?>\n+<netconf-server xmlns=\"urn:ietf:params:xml:ns:yang:ietf-netconf-server\">\n+  <listen>\n+    <endpoints>\n+      <endpoint>\n+        <name>default-ssh</name>\n+        <ssh>\n+          <tcp-server-parameters>\n+            <local-address>0.0.0.0</local-address>\n+          </tcp-server-parameters>\n+          <ssh-server-parameters>\n+            <server-identity>\n+              <host-key>\n+                <name>default-key</name>\n+                <public-key>\n+                  <central-keystore-reference>genkey</central-keystore-reference>\n+                </public-key>\n+              </host-key>\n+            </server-identity>\n+            <client-authentication>\n+              <users>\n+                <user>\n+                  <name>root</name>\n+                  <public-keys>\n+                    <use-system-keys xmlns=\"urn:cesnet:libnetconf2-netconf-server\"/>\n+                  </public-keys>\n+                </user>\n+              </users>\n+            </client-authentication>\n+          </ssh-server-parameters>\n+        </ssh>\n+      </endpoint>\n+    </endpoints>\n+  </listen>\n+</netconf-server>\n",
    "prefixes": [
        "v2"
    ]
}