Show a cover letter.

GET /api/covers/100/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 100,
    "url": "http://patchwork.dpdk.org/api/covers/100/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/cover/20230831100407.59865-1-juraj.linkes@pantheon.tech/",
    "project": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20230831100407.59865-1-juraj.linkes@pantheon.tech>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230831100407.59865-1-juraj.linkes@pantheon.tech",
    "date": "2023-08-31T10:04:03",
    "name": "[RFC,v4,0/4] dts: add dts api docs",
    "submitter": {
        "id": 1626,
        "url": "http://patchwork.dpdk.org/api/people/1626/?format=api",
        "name": "Juraj Linkeš",
        "email": "juraj.linkes@pantheon.tech"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/cover/20230831100407.59865-1-juraj.linkes@pantheon.tech/mbox/",
    "series": [
        {
            "id": 29384,
            "url": "http://patchwork.dpdk.org/api/series/29384/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=29384",
            "date": "2023-08-31T10:04:03",
            "name": "dts: add dts api docs",
            "version": 4,
            "mbox": "http://patchwork.dpdk.org/series/29384/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/covers/100/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id C7B4341FDB;\n\tThu, 31 Aug 2023 12:04:10 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id C653A40293;\n\tThu, 31 Aug 2023 12:04:10 +0200 (CEST)",
            "from mail-ej1-f47.google.com (mail-ej1-f47.google.com\n [209.85.218.47]) by mails.dpdk.org (Postfix) with ESMTP id 0442840293\n for <dev@dpdk.org>; Thu, 31 Aug 2023 12:04:10 +0200 (CEST)",
            "by mail-ej1-f47.google.com with SMTP id\n a640c23a62f3a-98377c5d53eso68544466b.0\n for <dev@dpdk.org>; Thu, 31 Aug 2023 03:04:09 -0700 (PDT)",
            "from jlinkes-PT-Latitude-5530.. (ip-46.34.238.3.o2inet.sk.\n [46.34.238.3]) by smtp.gmail.com with ESMTPSA id\n l18-20020a1709066b9200b0099bc08862b6sm587513ejr.171.2023.08.31.03.04.08\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 31 Aug 2023 03:04:09 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=pantheon.tech; s=google; t=1693476249; x=1694081049; darn=dpdk.org;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=o7+E5OHIuW2FE6e33x1a8u1uDIiDBLBA4VfMAcXmnh4=;\n b=L//moGfYmQiZIPvEhu8j2HVUy/6ZvmpbAAQljiyUnmwuUMOxpjJeJkTHPfCx8vMHfL\n +dS2QD4xLXGwMmDIvMiA6WmFKyGTO819HneVVmGdF+NeeuYFC50c8AYMjaTedvfKUNzs\n f7jE8Y9zrbWDdlSCI3jOsDK77NQnLZYfuqrXUzcLm7B1OKrsj69AuE2SmYoQjAsiI0bL\n Ryrn8LRqy7gAbuo2bJ8tZ3ph4qGAiwBEy8WtOJFk6KzGR9g0xl0RvQwYHCjn7zn2cXLK\n IB1HqJGsMQxCCRtNMxBHAmeMgr7iSySJvTswwMzmtIQ6a9iQHhoYfJ6riqP0mjTef83H\n /1ag==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20221208; t=1693476249; x=1694081049;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc\n :subject:date:message-id:reply-to;\n bh=o7+E5OHIuW2FE6e33x1a8u1uDIiDBLBA4VfMAcXmnh4=;\n b=Y+OajxEAABYkjVx9W8P3lutr1ch8uIUhx1SD5dPSlLjU+Uv2ToTngIy2eBCeOgvv+S\n IW7CAirba50oF/yYDidZpl3AVo6aAASVH1CRVk5bKfwnkL5C0HVlYbxe4X4ZUJuYgQeb\n JkZlerSwG4j4Ugdsm+VbMEWROmb+Eo3Gm2IKhEjBF7HgDNn5GrJeNMxoZQKlpgazHqA2\n MhaOhTgwccnxTgf1JQg3rvElkkvnCtJ8nZLqEx0IQkX6Sp07PzfetDVTosV4V8HzN2u/\n JVyrTitX2K1/l3rqb7ppbnPraMATlDS3uGAvd17AiPdhVkDElgHVQnCImz5K5D6Iov3A\n wvxw==",
        "X-Gm-Message-State": "AOJu0YzfpTWzlO209EctalS6HZ2Y43jNsMytz5hIEH2koFkmkyRXEdpZ\n l3MsePwnf7Ts2diTgPBYjR7DNQ==",
        "X-Google-Smtp-Source": "\n AGHT+IFn77gh3d2tQc6Gg0r9Z+5nXWEOtsSD9tVKyeio2n54kU+si2ytVfmhjRVFDOuudsQAf+6L4w==",
        "X-Received": "by 2002:a17:906:24f:b0:9a2:1b05:24c6 with SMTP id\n 15-20020a170906024f00b009a21b0524c6mr3706243ejl.22.1693476249643;\n Thu, 31 Aug 2023 03:04:09 -0700 (PDT)",
        "From": "=?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech>",
        "To": "thomas@monjalon.net, Honnappa.Nagarahalli@arm.com, lijuan.tu@intel.com,\n bruce.richardson@intel.com, jspewock@iol.unh.edu, probb@iol.unh.edu",
        "Cc": "dev@dpdk.org, =?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech>",
        "Subject": "[RFC PATCH v4 0/4] dts: add dts api docs",
        "Date": "Thu, 31 Aug 2023 12:04:03 +0200",
        "Message-Id": "<20230831100407.59865-1-juraj.linkes@pantheon.tech>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20230511091408.236638-1-juraj.linkes@pantheon.tech>",
        "References": "<20230511091408.236638-1-juraj.linkes@pantheon.tech>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "Augment the meson build system with dts api generation. The api docs are\ngenerated from Python docstrings in DTS using Sphinx. The format of\nchoice is the Google format [0].\n\nThe guides html sphinx configuration is used to preserve the same style,\nexcept the sidebar is configured to allow unlimited depth and better\ncollapsing.\n\nThe build requires the same Python version and dependencies as DTS,\nbecause Sphinx imports the Python modules. The modules are imported\nindividually, requiring code refactoring. Dependencies are installed\nusing Poetry from the dts directory:\n\npoetry install --with docs\n\nAfter installing, enter the Poetry shell:\n\npoetry shell\n\nAnd then run the build:\nninja -C <meson_build_dir> dts/doc\n\nThere's only one properly documented module that serves as a\ndemonstration of the style - framework.testbed_model.node. When we agree\non the docstring format, all docstrings will be reformatted.\n\n[0] https://google.github.io/styleguide/pyguide.html#s3.8.4-comments-in-classes\n\nJuraj Linkeš (4):\n  dts: code adjustments for sphinx\n  dts: add doc generation dependencies\n  dts: add doc generation\n  dts: format docstrigs to google format\n\n buildtools/call-sphinx-build.py               |  29 +-\n doc/api/meson.build                           |   1 +\n doc/guides/conf.py                            |  32 +-\n doc/guides/meson.build                        |   1 +\n doc/guides/tools/dts.rst                      |  29 ++\n dts/doc/doc-index.rst                         |  17 +\n dts/doc/meson.build                           |  50 ++\n dts/framework/config/__init__.py              |   3 -\n dts/framework/dts.py                          |  34 +-\n dts/framework/remote_session/__init__.py      |  41 +-\n .../interactive_remote_session.py             |   0\n .../{remote => }/interactive_shell.py         |   0\n .../{remote => }/python_shell.py              |   0\n .../remote_session/remote/__init__.py         |  27 --\n .../{remote => }/remote_session.py            |   0\n .../{remote => }/ssh_session.py               |   0\n .../{remote => }/testpmd_shell.py             |   0\n dts/framework/settings.py                     |  92 ++--\n dts/framework/test_suite.py                   |   3 +-\n dts/framework/testbed_model/__init__.py       |  12 +-\n dts/framework/testbed_model/common.py         |  29 ++\n dts/framework/testbed_model/{hw => }/cpu.py   |  13 +\n dts/framework/testbed_model/hw/__init__.py    |  27 --\n .../linux_session.py                          |   4 +-\n dts/framework/testbed_model/node.py           | 193 +++++---\n .../os_session.py                             |  14 +-\n dts/framework/testbed_model/{hw => }/port.py  |   0\n .../posix_session.py                          |   2 +-\n dts/framework/testbed_model/sut_node.py       |   8 +-\n dts/framework/testbed_model/tg_node.py        |  30 +-\n .../traffic_generator/__init__.py             |  24 +\n .../capturing_traffic_generator.py            |   2 +-\n .../{ => traffic_generator}/scapy.py          |  17 +-\n .../traffic_generator.py                      |  16 +-\n .../testbed_model/{hw => }/virtual_device.py  |   0\n dts/framework/utils.py                        |  53 +--\n dts/main.py                                   |   3 +-\n dts/meson.build                               |  16 +\n dts/poetry.lock                               | 447 +++++++++++++++++-\n dts/pyproject.toml                            |   7 +\n meson.build                                   |   1 +\n 41 files changed, 961 insertions(+), 316 deletions(-)\n create mode 100644 dts/doc/doc-index.rst\n create mode 100644 dts/doc/meson.build\n rename dts/framework/remote_session/{remote => }/interactive_remote_session.py (100%)\n rename dts/framework/remote_session/{remote => }/interactive_shell.py (100%)\n rename dts/framework/remote_session/{remote => }/python_shell.py (100%)\n delete mode 100644 dts/framework/remote_session/remote/__init__.py\n rename dts/framework/remote_session/{remote => }/remote_session.py (100%)\n rename dts/framework/remote_session/{remote => }/ssh_session.py (100%)\n rename dts/framework/remote_session/{remote => }/testpmd_shell.py (100%)\n create mode 100644 dts/framework/testbed_model/common.py\n rename dts/framework/testbed_model/{hw => }/cpu.py (95%)\n delete mode 100644 dts/framework/testbed_model/hw/__init__.py\n rename dts/framework/{remote_session => testbed_model}/linux_session.py (98%)\n rename dts/framework/{remote_session => testbed_model}/os_session.py (97%)\n rename dts/framework/testbed_model/{hw => }/port.py (100%)\n rename dts/framework/{remote_session => testbed_model}/posix_session.py (99%)\n create mode 100644 dts/framework/testbed_model/traffic_generator/__init__.py\n rename dts/framework/testbed_model/{ => traffic_generator}/capturing_traffic_generator.py (99%)\n rename dts/framework/testbed_model/{ => traffic_generator}/scapy.py (96%)\n rename dts/framework/testbed_model/{ => traffic_generator}/traffic_generator.py (80%)\n rename dts/framework/testbed_model/{hw => }/virtual_device.py (100%)\n create mode 100644 dts/meson.build"
}