From patchwork Mon Jun 24 14:25:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Juraj_Linke=C5=A1?= X-Patchwork-Id: 141576 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 06A54454E2; Mon, 24 Jun 2024 16:25:57 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DB87B40E30; Mon, 24 Jun 2024 16:25:50 +0200 (CEST) Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by mails.dpdk.org (Postfix) with ESMTP id 1F06340E03 for ; Mon, 24 Jun 2024 16:25:48 +0200 (CEST) Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-a72477a60fbso157670466b.2 for ; Mon, 24 Jun 2024 07:25:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pantheon.tech; s=google; t=1719239148; x=1719843948; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LwaQnrtHI21+U9shWpbacDSGYdi1qS0GV2KpGbcXNSM=; b=nTopeFKPgFdmg3Yy8IjgJkAc/5+yLUKE8mMmzBWg5+Y5Vy74z/bHKr7rEr0bnJSb9a GPtyKA8+kYfTn8eiS/G7QeLrv7XO5ZOfXGetdz/3OEB0TX5wFEr9Fp1kkmsY52VdVIsN FIkclMgx0qf3BhdzVlvSkO8aY00r64pL33tx3caBVymEQ5P8nierhRMpu2UYIbXwPfVr ir5HSnKcDZWh3DlzqZCXox7NnwLS+kX+px2t/WLjUZPiguJrv1JjzuPG2F6srNKHK9dz CZJ8XUyaArSVclywhvWHaCZ+hpE2G5/802tYRyrTC6sKRI/kS5TBVXbOn8Bo4wQrqAYb k6BQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719239148; x=1719843948; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LwaQnrtHI21+U9shWpbacDSGYdi1qS0GV2KpGbcXNSM=; b=lusTIVXv72LjiYqSNliyunurBCOf5805lVAn4YHThS5A5eQQcjSyC9Nmg+bb7Tlc5S sW/wd/AGPnENjKRiDwb4Q/tTQijpbNuYEdW8FBUgvwJ24vlqPbljcTL63jOIii6HHy96 SXAli19vRbQYTv9o2w/NXCS/fVYb7r6aFLWPbl9XVd1dhBDvuTrsZ00zo5z1MEQbg639 dY48gt6IbVFSx1+Ladws1ilFu/vjZmpfGI//zMPoa4ltP3evST0BICule5bAkA17sNmT WICk8N/e1R85uZQ+gEGJ7d2aFzRXuCFC2SZoZgBjWJE2q6Vd72E/3pEUFs2giOYiHJ3C WbfA== X-Gm-Message-State: AOJu0YxJM784/Fi7awgcarDx8dWd1gtKeSmclnw1O5jK/R6s1wm0OWxV Z6tpmpjxlhotpCNNubkMjJDQAtJgEZzdsFewzFQX10DxshM8H2ae5GhSm2dwoAg= X-Google-Smtp-Source: AGHT+IEi6ojzA6dA7kFrlZoDGgt0Wb0gPIf3Tr0LzD9LKopktNEBg6Dn7XdUTvpoRqJ6jSKo0LZOzQ== X-Received: by 2002:a17:907:8e93:b0:a6f:392d:51a9 with SMTP id a640c23a62f3a-a7245b6db4fmr297956066b.14.1719239147834; Mon, 24 Jun 2024 07:25:47 -0700 (PDT) Received: from localhost.localdomain ([84.245.121.236]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a72521c9514sm136964566b.6.2024.06.24.07.25.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Jun 2024 07:25:47 -0700 (PDT) From: =?utf-8?q?Juraj_Linke=C5=A1?= To: thomas@monjalon.net, Honnappa.Nagarahalli@arm.com, bruce.richardson@intel.com, jspewock@iol.unh.edu, probb@iol.unh.edu, paul.szczepanek@arm.com, Luca.Vizzarro@arm.com, npratte@iol.unh.edu Cc: dev@dpdk.org, =?utf-8?q?Juraj_Linke=C5=A1?= , luca.vizzarro@arm.com Subject: [PATCH v7 1/4] dts: update params and parser docstrings Date: Mon, 24 Jun 2024 16:25:41 +0200 Message-Id: <20240624142544.35644-2-juraj.linkes@pantheon.tech> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240624142544.35644-1-juraj.linkes@pantheon.tech> References: <20231115133606.42081-1-juraj.linkes@pantheon.tech> <20240624142544.35644-1-juraj.linkes@pantheon.tech> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Address a few errors reported by Sphinx when generating documentation: framework/params/__init__.py:docstring of framework.params.modify_str:3: WARNING: Inline interpreted text or phrase reference start-string without end-string. framework/params/eal.py:docstring of framework.params.eal.EalParams:35: WARNING: Definition list ends without a blank line; unexpected unindent. framework/params/types.py:docstring of framework.params.types:8: WARNING: Inline strong start-string without end-string. framework/params/types.py:docstring of framework.params.types:9: WARNING: Inline strong start-string without end-string. framework/parser.py:docstring of framework.parser.TextParser:33: ERROR: Unexpected indentation. framework/parser.py:docstring of framework.parser.TextParser:43: ERROR: Unexpected indentation. framework/parser.py:docstring of framework.parser.TextParser:49: ERROR: Unexpected indentation. framework/parser.py:docstring of framework.parser.TextParser.wrap:8: ERROR: Unexpected indentation. framework/parser.py:docstring of framework.parser.TextParser.wrap:9: WARNING: Block quote ends without a blank line; unexpected unindent. Fixes: 87ba4cdc0dbb ("dts: use Unpack for type checking and hinting") Fixes: d70159cb62f5 ("dts: add params manipulation module") Fixes: 967fc62b0a43 ("dts: refactor EAL parameters class") Fixes: 818fe14e3422 ("dts: add parsing utility module") Cc: luca.vizzarro@arm.com Signed-off-by: Juraj Linkeš Reviewed-by: Luca Vizzarro --- dts/framework/params/__init__.py | 4 ++-- dts/framework/params/eal.py | 7 +++++-- dts/framework/params/types.py | 3 ++- dts/framework/parser.py | 4 ++-- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/dts/framework/params/__init__.py b/dts/framework/params/__init__.py index 5a6fd93053..1ae227d7b4 100644 --- a/dts/framework/params/__init__.py +++ b/dts/framework/params/__init__.py @@ -53,9 +53,9 @@ def reduced_fn(value): def modify_str(*funcs: FnPtr) -> Callable[[T], T]: - """Class decorator modifying the ``__str__`` method with a function created from its arguments. + r"""Class decorator modifying the ``__str__`` method with a function created from its arguments. - The :attr:`FnPtr`s fed to the decorator are executed from left to right in the arguments list + The :attr:`FnPtr`\s fed to the decorator are executed from left to right in the arguments list order. Args: diff --git a/dts/framework/params/eal.py b/dts/framework/params/eal.py index 8d7766fefc..cf1594353a 100644 --- a/dts/framework/params/eal.py +++ b/dts/framework/params/eal.py @@ -26,13 +26,16 @@ class EalParams(Params): prefix: Set the file prefix string with which to start DPDK, e.g.: ``prefix="vf"``. no_pci: Switch to disable PCI bus, e.g.: ``no_pci=True``. vdevs: Virtual devices, e.g.:: + vdevs=[ VirtualDevice('net_ring0'), VirtualDevice('net_ring1') ] + ports: The list of ports to allow. - other_eal_param: user defined DPDK EAL parameters, e.g.: - ``other_eal_param='--single-file-segments'`` + other_eal_param: user defined DPDK EAL parameters, e.g.:: + + ``other_eal_param='--single-file-segments'`` """ lcore_list: LogicalCoreList | None = field(default=None, metadata=Params.short("l")) diff --git a/dts/framework/params/types.py b/dts/framework/params/types.py index e668f658d8..d77c4625fb 100644 --- a/dts/framework/params/types.py +++ b/dts/framework/params/types.py @@ -6,7 +6,8 @@ TypedDicts can be used in conjunction with Unpack and kwargs for type hinting on function calls. Example: - ..code:: python + .. code:: python + def create_testpmd(**kwargs: Unpack[TestPmdParamsDict]): params = TestPmdParams(**kwargs) """ diff --git a/dts/framework/parser.py b/dts/framework/parser.py index 741dfff821..7254c75b71 100644 --- a/dts/framework/parser.py +++ b/dts/framework/parser.py @@ -46,7 +46,7 @@ class TextParser(ABC): Example: The following example makes use of and demonstrates every parser function available: - ..code:: python + .. code:: python from dataclasses import dataclass, field from enum import Enum @@ -90,7 +90,7 @@ def wrap(parser_fn: ParserFn, wrapper_fn: Callable) -> ParserFn: """Makes a wrapped parser function. `parser_fn` is called and if a non-None value is returned, `wrapper_function` is called with - it. Otherwise the function returns early with None. In pseudo-code: + it. Otherwise the function returns early with None. In pseudo-code:: intermediate_value := parser_fn(input) if intermediary_value is None then From patchwork Mon Jun 24 14:25:42 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Juraj_Linke=C5=A1?= X-Patchwork-Id: 141577 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id DA9D3454E2; Mon, 24 Jun 2024 16:26:16 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CB17540E32; Mon, 24 Jun 2024 16:26:16 +0200 (CEST) Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) by mails.dpdk.org (Postfix) with ESMTP id EC30E40E37 for ; Mon, 24 Jun 2024 16:25:58 +0200 (CEST) Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-a724b3a32d2so154213866b.2 for ; Mon, 24 Jun 2024 07:25:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pantheon.tech; s=google; t=1719239158; x=1719843958; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TBkTWt69xcFFrxd8aT4kyZkoPu8B6yEzpx+7j3o6YWI=; b=UqF8coUkc1hdTjmJ44tL+d4MwCSNS53ajr5VVkPEu5S95g78CtQJT2q0XeB+qB2Hqh HY4LDdzkIJTCndXRSLjS4CNchPSQl3PsHFM/Ek9/OUWcvj035zgrIVls21I6dqIu5Xhu 9BOtBxUpmbvbHveeqdFPutPUgBuR/DebO2s8s1NS2bMyc/Yi49Ya9KlgPkZ91+nLa0ke JwwbdebosuQTJRPPP2VrD1BrQeaKQ0xFadUaD8yybJOHTdRCpcrMcSOo8OgSHNuahclY VkSswQ+lzc5jCrRzPBUniOFJA+DQ0DT2hp3qDp9inRyxomu6Dl3DRhhT5faG6xe127gr JckA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719239158; x=1719843958; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TBkTWt69xcFFrxd8aT4kyZkoPu8B6yEzpx+7j3o6YWI=; b=paoxWJ/aPRn3CeQqKDqlpvMa/4LeHf54A8D+BHhyC3EgBxlakU8FhH7epGkVtN1q2E j/EHYOdY7M9rVz3r2GkQH1mVDqiYCchEhTkb7F/dk9PuLc4d96OmGbDR050FUrZoBjlx mswxCZuhyp7Sj4gsPTvVXn6Ca+PdhKEP7TZcHcPlF95sx5s4tYAfvcT2IbiVadPbi03E WO0QCatDoxc26iHzQpCSH+1BmZI9iTJGe83YTLQhu94l90URNX78MzhLJ+F2kyUJgJ7H lGmTTXR8eIYcftNY8lHOi8RicKV6XJVzZUnrojrMYqVPCvN6ii+uB8vEuY/7uGAGGN9I rVvg== X-Gm-Message-State: AOJu0YxswfUIY+SQKwxfO2u6ZJmG/RcfIXgxmwBZ/BGr3D8438lyvWZB z/LmaKkcn9nyIFVdb+b192GPOM/DrZgD5Lo23ESY1NFIN6d4awUFgFn1qfkQZMw= X-Google-Smtp-Source: AGHT+IHahK2pESL29YRurAbr0ic8RJa3ZP0DrzS26j1W8i+Xg9gxFBmVtq7n2RB2oByZxIKfzsa6Nw== X-Received: by 2002:a17:907:a707:b0:a72:4f3a:b58c with SMTP id a640c23a62f3a-a724f3abcf5mr175210866b.5.1719239158242; Mon, 24 Jun 2024 07:25:58 -0700 (PDT) Received: from localhost.localdomain ([84.245.121.236]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a72521c9514sm136964566b.6.2024.06.24.07.25.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Jun 2024 07:25:57 -0700 (PDT) From: =?utf-8?q?Juraj_Linke=C5=A1?= To: thomas@monjalon.net, Honnappa.Nagarahalli@arm.com, bruce.richardson@intel.com, jspewock@iol.unh.edu, probb@iol.unh.edu, paul.szczepanek@arm.com, Luca.Vizzarro@arm.com, npratte@iol.unh.edu Cc: dev@dpdk.org, =?utf-8?q?Juraj_Linke=C5=A1?= , Luca Vizzarro Subject: [PATCH v7 2/4] dts: add doc generation dependencies Date: Mon, 24 Jun 2024 16:25:42 +0200 Message-Id: <20240624142544.35644-3-juraj.linkes@pantheon.tech> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240624142544.35644-1-juraj.linkes@pantheon.tech> References: <20231115133606.42081-1-juraj.linkes@pantheon.tech> <20240624142544.35644-1-juraj.linkes@pantheon.tech> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sphinx imports every Python module when generating documentation from docstrings, meaning all DTS dependencies, including Python version, must be satisfied. By adding Sphinx to DTS dependencies we provide a convenient way to generate the DTS API docs which satisfies all dependencies. Signed-off-by: Juraj Linkeš Reviewed-by: Luca Vizzarro Reviewed-by: Jeremy Spewock Tested-by: Luca Vizzarro --- dts/poetry.lock | 510 +++++++++++++++++++++++++++++++++++++++++++-- dts/pyproject.toml | 7 + 2 files changed, 505 insertions(+), 12 deletions(-) diff --git a/dts/poetry.lock b/dts/poetry.lock index 5f8fa03933..b6e27f8f38 100644 --- a/dts/poetry.lock +++ b/dts/poetry.lock @@ -1,5 +1,16 @@ # This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +[[package]] +name = "alabaster" +version = "0.7.13" +description = "A configurable sidebar-enabled Sphinx theme" +optional = false +python-versions = ">=3.6" +files = [ + {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"}, + {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, +] + [[package]] name = "attrs" version = "23.1.0" @@ -18,6 +29,23 @@ docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib- tests = ["attrs[tests-no-zope]", "zope-interface"] tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +[[package]] +name = "babel" +version = "2.13.1" +description = "Internationalization utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Babel-2.13.1-py3-none-any.whl", hash = "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed"}, + {file = "Babel-2.13.1.tar.gz", hash = "sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900"}, +] + +[package.dependencies] +setuptools = {version = "*", markers = "python_version >= \"3.12\""} + +[package.extras] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] + [[package]] name = "bcrypt" version = "4.0.1" @@ -86,6 +114,17 @@ d = ["aiohttp (>=3.7.4)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] +[[package]] +name = "certifi" +version = "2023.7.22" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, + {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, +] + [[package]] name = "cffi" version = "1.15.1" @@ -162,6 +201,105 @@ files = [ [package.dependencies] pycparser = "*" +[[package]] +name = "charset-normalizer" +version = "3.3.2" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, +] + [[package]] name = "click" version = "8.1.6" @@ -232,6 +370,17 @@ ssh = ["bcrypt (>=3.1.5)"] test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] +[[package]] +name = "docutils" +version = "0.18.1" +description = "Docutils -- Python Documentation Utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "docutils-0.18.1-py2.py3-none-any.whl", hash = "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c"}, + {file = "docutils-0.18.1.tar.gz", hash = "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06"}, +] + [[package]] name = "fabric" version = "2.7.1" @@ -252,6 +401,28 @@ pathlib2 = "*" pytest = ["mock (>=2.0.0,<3.0)", "pytest (>=3.2.5,<4.0)"] testing = ["mock (>=2.0.0,<3.0)"] +[[package]] +name = "idna" +version = "3.4" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, +] + +[[package]] +name = "imagesize" +version = "1.4.1" +description = "Getting image size from png/jpeg/jpeg2000/gif file" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, + {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, +] + [[package]] name = "invoke" version = "1.7.3" @@ -280,6 +451,23 @@ pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib" plugins = ["setuptools"] requirements-deprecated-finder = ["pip-api", "pipreqs"] +[[package]] +name = "jinja2" +version = "3.1.2" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + [[package]] name = "jsonpatch" version = "1.33" @@ -340,6 +528,65 @@ files = [ [package.dependencies] referencing = ">=0.28.0" +[[package]] +name = "markupsafe" +version = "2.1.3" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, + {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, +] + [[package]] name = "mccabe" version = "0.7.0" @@ -409,6 +656,17 @@ files = [ {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] +[[package]] +name = "packaging" +version = "23.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, +] + [[package]] name = "paramiko" version = "3.2.0" @@ -520,6 +778,20 @@ files = [ {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, ] +[[package]] +name = "pygments" +version = "2.16.1" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.7" +files = [ + {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, + {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"}, +] + +[package.extras] +plugins = ["importlib-metadata"] + [[package]] name = "pylama" version = "8.4.1" @@ -585,7 +857,6 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -593,16 +864,8 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -619,7 +882,6 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -627,7 +889,6 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -648,6 +909,27 @@ files = [ attrs = ">=22.2.0" rpds-py = ">=0.7.0" +[[package]] +name = "requests" +version = "2.31.0" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.7" +files = [ + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + [[package]] name = "rpds-py" version = "0.9.2" @@ -769,6 +1051,22 @@ basic = ["ipython"] complete = ["cryptography (>=2.0)", "ipython", "matplotlib", "pyx"] docs = ["sphinx (>=3.0.0)", "sphinx_rtd_theme (>=0.4.3)", "tox (>=3.0.0)"] +[[package]] +name = "setuptools" +version = "68.2.2" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, + {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + [[package]] name = "six" version = "1.16.0" @@ -791,6 +1089,177 @@ files = [ {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, ] +[[package]] +name = "sphinx" +version = "7.0.0" +description = "Python documentation generator" +optional = false +python-versions = ">=3.8" +files = [ + {file = "Sphinx-7.0.0.tar.gz", hash = "sha256:283c44aa28922bb4223777b44ac0d59af50a279ac7690dfe945bb2b9575dc41b"}, + {file = "sphinx-7.0.0-py3-none-any.whl", hash = "sha256:3cfc1c6756ef1b132687b813ec6ea2214cb7a7e5d1dcb2772006cb895a0fa469"}, +] + +[package.dependencies] +alabaster = ">=0.7,<0.8" +babel = ">=2.9" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} +docutils = ">=0.18.1,<0.20" +imagesize = ">=1.3" +Jinja2 = ">=3.0" +packaging = ">=21.0" +Pygments = ">=2.13" +requests = ">=2.25.0" +snowballstemmer = ">=2.0" +sphinxcontrib-applehelp = "*" +sphinxcontrib-devhelp = "*" +sphinxcontrib-htmlhelp = ">=2.0.0" +sphinxcontrib-jsmath = "*" +sphinxcontrib-qthelp = "*" +sphinxcontrib-serializinghtml = ">=1.1.5" + +[package.extras] +docs = ["sphinxcontrib-websupport"] +lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-simplify", "isort", "mypy (>=0.990)", "ruff", "sphinx-lint", "types-requests"] +test = ["cython", "filelock", "html5lib", "pytest (>=4.6)"] + +[[package]] +name = "sphinx-rtd-theme" +version = "2.0.0" +description = "Read the Docs theme for Sphinx" +optional = false +python-versions = ">=3.6" +files = [ + {file = "sphinx_rtd_theme-2.0.0-py2.py3-none-any.whl", hash = "sha256:ec93d0856dc280cf3aee9a4c9807c60e027c7f7b461b77aeffed682e68f0e586"}, + {file = "sphinx_rtd_theme-2.0.0.tar.gz", hash = "sha256:bd5d7b80622406762073a04ef8fadc5f9151261563d47027de09910ce03afe6b"}, +] + +[package.dependencies] +docutils = "<0.21" +sphinx = ">=5,<8" +sphinxcontrib-jquery = ">=4,<5" + +[package.extras] +dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] + +[[package]] +name = "sphinxcontrib-applehelp" +version = "1.0.7" +description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_applehelp-1.0.7-py3-none-any.whl", hash = "sha256:094c4d56209d1734e7d252f6e0b3ccc090bd52ee56807a5d9315b19c122ab15d"}, + {file = "sphinxcontrib_applehelp-1.0.7.tar.gz", hash = "sha256:39fdc8d762d33b01a7d8f026a3b7d71563ea3b72787d5f00ad8465bd9d6dfbfa"}, +] + +[package.dependencies] +Sphinx = ">=5" + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-devhelp" +version = "1.0.5" +description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_devhelp-1.0.5-py3-none-any.whl", hash = "sha256:fe8009aed765188f08fcaadbb3ea0d90ce8ae2d76710b7e29ea7d047177dae2f"}, + {file = "sphinxcontrib_devhelp-1.0.5.tar.gz", hash = "sha256:63b41e0d38207ca40ebbeabcf4d8e51f76c03e78cd61abe118cf4435c73d4212"}, +] + +[package.dependencies] +Sphinx = ">=5" + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-htmlhelp" +version = "2.0.4" +description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_htmlhelp-2.0.4-py3-none-any.whl", hash = "sha256:8001661c077a73c29beaf4a79968d0726103c5605e27db92b9ebed8bab1359e9"}, + {file = "sphinxcontrib_htmlhelp-2.0.4.tar.gz", hash = "sha256:6c26a118a05b76000738429b724a0568dbde5b72391a688577da08f11891092a"}, +] + +[package.dependencies] +Sphinx = ">=5" + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +test = ["html5lib", "pytest"] + +[[package]] +name = "sphinxcontrib-jquery" +version = "4.1" +description = "Extension to include jQuery on newer Sphinx releases" +optional = false +python-versions = ">=2.7" +files = [ + {file = "sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a"}, + {file = "sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae"}, +] + +[package.dependencies] +Sphinx = ">=1.8" + +[[package]] +name = "sphinxcontrib-jsmath" +version = "1.0.1" +description = "A sphinx extension which renders display math in HTML via JavaScript" +optional = false +python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, + {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, +] + +[package.extras] +test = ["flake8", "mypy", "pytest"] + +[[package]] +name = "sphinxcontrib-qthelp" +version = "1.0.6" +description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_qthelp-1.0.6-py3-none-any.whl", hash = "sha256:bf76886ee7470b934e363da7a954ea2825650013d367728588732c7350f49ea4"}, + {file = "sphinxcontrib_qthelp-1.0.6.tar.gz", hash = "sha256:62b9d1a186ab7f5ee3356d906f648cacb7a6bdb94d201ee7adf26db55092982d"}, +] + +[package.dependencies] +Sphinx = ">=5" + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-serializinghtml" +version = "1.1.9" +description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_serializinghtml-1.1.9-py3-none-any.whl", hash = "sha256:9b36e503703ff04f20e9675771df105e58aa029cfcbc23b8ed716019b7416ae1"}, + {file = "sphinxcontrib_serializinghtml-1.1.9.tar.gz", hash = "sha256:0c64ff898339e1fac29abd2bf5f11078f3ec413cfe9c046d3120d7ca65530b54"}, +] + +[package.dependencies] +Sphinx = ">=5" + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +test = ["pytest"] + [[package]] name = "toml" version = "0.10.2" @@ -835,6 +1304,23 @@ files = [ {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, ] +[[package]] +name = "urllib3" +version = "2.0.7" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.7" +files = [ + {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, + {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + [[package]] name = "warlock" version = "2.0.1" @@ -853,4 +1339,4 @@ jsonschema = ">=4,<5" [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "4af4dd49c59e5bd6ed99e8c19c6756aaf00125339d26cfad2ef98551dc765f8b" +content-hash = "8b9d9363fa0130186f2d72392de6b9d74696c7b1250a4f346f6264c8c07318a0" diff --git a/dts/pyproject.toml b/dts/pyproject.toml index 0b9b09805a..31c7824204 100644 --- a/dts/pyproject.toml +++ b/dts/pyproject.toml @@ -35,6 +35,13 @@ pylama = "^8.4.1" pyflakes = "^2.5.0" toml = "^0.10.2" +[tool.poetry.group.docs] +optional = true + +[tool.poetry.group.docs.dependencies] +sphinx = "<=7" +sphinx-rtd-theme = ">=1.2.2" + [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" From patchwork Mon Jun 24 14:25:43 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Juraj_Linke=C5=A1?= X-Patchwork-Id: 141578 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 3CFA2454E2; Mon, 24 Jun 2024 16:26:23 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C1E3F40E4F; Mon, 24 Jun 2024 16:26:17 +0200 (CEST) Received: from mail-lj1-f182.google.com (mail-lj1-f182.google.com [209.85.208.182]) by mails.dpdk.org (Postfix) with ESMTP id 317D940E38 for ; Mon, 24 Jun 2024 16:26:00 +0200 (CEST) Received: by mail-lj1-f182.google.com with SMTP id 38308e7fff4ca-2eaae2a6dc1so71953521fa.0 for ; Mon, 24 Jun 2024 07:26:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pantheon.tech; s=google; t=1719239159; x=1719843959; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9QgqLV6nUu3aoeRfDZq9bScDQhJXKy+kDLe7uopd/yI=; b=tnO9gag8RYHoGSI9pcPSc/fjv03gEm7TSUhKjoXcwnBynYB95XQaH2jhm2LMhgzE3m yfaebjZCzNNeYbmPt6aqkgxcaMWgRtcJA5Vo+YUvuoA3AFkaC+b8ol8ZBULvioGlbL8q QmxRizA8owyAJnFVLJ1tyKCRil1+AEJZp1nXKfUs//wHr20zOyBXwXvXcP/kg+1GryYk aS+BZQuyisAF56vjcHxgTx5m1QuXXW0f8xL/PprqO8j+i1XzQZo2jW5tAMrAS/nBgOlt CK4ZJBvYZkrCRC7TztUbypq92PokMdhbOJtVL9z7fmhETSSh2RDIwCytxYox2eaaGMZQ 0InQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719239159; x=1719843959; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9QgqLV6nUu3aoeRfDZq9bScDQhJXKy+kDLe7uopd/yI=; b=TuLAfz8gsKvhdXJoMtG00qzYHIIQdGD8c2BqHEKVXGARPmiWFqp9p28sfAPMPz4+30 bqtTAx0LygVk4hxtisaXktRQaCchS+sVA4unVtQdf+p/RhfHgD1dkJVcPO1r7LE5xDI7 aGlilWwL1pEEevQUmEfTQK6ed+6Qx9JeQHgyg69tavjiIIL3uvRumF4zBdycbVz7/AR3 OIq76sYDfnsPprLK0mK+FX74ua+QF6oo4NeL4VMZ3E5fuTx/jHaukYHyq1Ek/h473Yg2 B494Mi7w05KVBvZ9lQ7NREwA9oAWR/FEZ7H2iTB/Gol08GPXRQZqDswUY7w2sPMttU8P Orfw== X-Gm-Message-State: AOJu0YzKOMRRJVwo92EVECWULauavPCp5IFAHasH3p/IQbu70RCLoTbI CcIQgSa8ISMFdm5Hfmz9NHdZYtvYpc4lH1Hl9vVJecQH18amDyVd8HtTecJGMoJixf/edDlYb4T UpH4= X-Google-Smtp-Source: AGHT+IFTaVdO6JrVvgfNTkGnyQO6FCHAoPy8juKbj5F/Wfnt0VgKROLB5GWv1pJ6ivwydYsgMYN4ww== X-Received: by 2002:a2e:9057:0:b0:2ec:18bc:c455 with SMTP id 38308e7fff4ca-2ec5b2c4dbdmr37503651fa.10.1719239159532; Mon, 24 Jun 2024 07:25:59 -0700 (PDT) Received: from localhost.localdomain ([84.245.121.236]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a72521c9514sm136964566b.6.2024.06.24.07.25.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Jun 2024 07:25:59 -0700 (PDT) From: =?utf-8?q?Juraj_Linke=C5=A1?= To: thomas@monjalon.net, Honnappa.Nagarahalli@arm.com, bruce.richardson@intel.com, jspewock@iol.unh.edu, probb@iol.unh.edu, paul.szczepanek@arm.com, Luca.Vizzarro@arm.com, npratte@iol.unh.edu Cc: dev@dpdk.org, =?utf-8?q?Juraj_Linke=C5=A1?= , Luca Vizzarro Subject: [PATCH v7 3/4] dts: add API doc sources Date: Mon, 24 Jun 2024 16:25:43 +0200 Message-Id: <20240624142544.35644-4-juraj.linkes@pantheon.tech> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240624142544.35644-1-juraj.linkes@pantheon.tech> References: <20231115133606.42081-1-juraj.linkes@pantheon.tech> <20240624142544.35644-1-juraj.linkes@pantheon.tech> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org These sources could be generated with the sphinx-apidoc utility, but that doesn't give us enough flexibility, such as sorting the order of modules or changing the headers of the modules. The sources included in this patch were in fact generated by said utility, but modified to improve the look of the documentation. The improvements are mainly in toctree definitions and the titles of the modules/packages. These were made with specific Sphinx config options in mind. Signed-off-by: Juraj Linkeš Reviewed-by: Luca Vizzarro Reviewed-by: Jeremy Spewock Tested-by: Luca Vizzarro --- dts/doc/conf_yaml_schema.json | 1 + dts/doc/framework.config.rst | 12 ++++++ dts/doc/framework.config.types.rst | 6 +++ dts/doc/framework.exception.rst | 6 +++ dts/doc/framework.logger.rst | 6 +++ dts/doc/framework.params.eal.rst | 6 +++ dts/doc/framework.params.rst | 14 ++++++ dts/doc/framework.params.testpmd.rst | 6 +++ dts/doc/framework.params.types.rst | 6 +++ dts/doc/framework.parser.rst | 6 +++ .../framework.remote_session.dpdk_shell.rst | 6 +++ ...ote_session.interactive_remote_session.rst | 6 +++ ...ework.remote_session.interactive_shell.rst | 6 +++ .../framework.remote_session.python_shell.rst | 6 +++ ...ramework.remote_session.remote_session.rst | 6 +++ dts/doc/framework.remote_session.rst | 18 ++++++++ .../framework.remote_session.ssh_session.rst | 6 +++ ...framework.remote_session.testpmd_shell.rst | 6 +++ dts/doc/framework.runner.rst | 6 +++ dts/doc/framework.settings.rst | 6 +++ dts/doc/framework.test_result.rst | 6 +++ dts/doc/framework.test_suite.rst | 6 +++ dts/doc/framework.testbed_model.cpu.rst | 6 +++ .../framework.testbed_model.linux_session.rst | 6 +++ dts/doc/framework.testbed_model.node.rst | 6 +++ .../framework.testbed_model.os_session.rst | 6 +++ dts/doc/framework.testbed_model.port.rst | 6 +++ .../framework.testbed_model.posix_session.rst | 6 +++ dts/doc/framework.testbed_model.rst | 26 +++++++++++ dts/doc/framework.testbed_model.sut_node.rst | 6 +++ dts/doc/framework.testbed_model.tg_node.rst | 6 +++ ..._generator.capturing_traffic_generator.rst | 6 +++ ...mework.testbed_model.traffic_generator.rst | 14 ++++++ ....testbed_model.traffic_generator.scapy.rst | 6 +++ ...el.traffic_generator.traffic_generator.rst | 6 +++ ...framework.testbed_model.virtual_device.rst | 6 +++ dts/doc/framework.utils.rst | 6 +++ dts/doc/index.rst | 43 +++++++++++++++++++ 38 files changed, 314 insertions(+) create mode 120000 dts/doc/conf_yaml_schema.json create mode 100644 dts/doc/framework.config.rst create mode 100644 dts/doc/framework.config.types.rst create mode 100644 dts/doc/framework.exception.rst create mode 100644 dts/doc/framework.logger.rst create mode 100644 dts/doc/framework.params.eal.rst create mode 100644 dts/doc/framework.params.rst create mode 100644 dts/doc/framework.params.testpmd.rst create mode 100644 dts/doc/framework.params.types.rst create mode 100644 dts/doc/framework.parser.rst create mode 100644 dts/doc/framework.remote_session.dpdk_shell.rst create mode 100644 dts/doc/framework.remote_session.interactive_remote_session.rst create mode 100644 dts/doc/framework.remote_session.interactive_shell.rst create mode 100644 dts/doc/framework.remote_session.python_shell.rst create mode 100644 dts/doc/framework.remote_session.remote_session.rst create mode 100644 dts/doc/framework.remote_session.rst create mode 100644 dts/doc/framework.remote_session.ssh_session.rst create mode 100644 dts/doc/framework.remote_session.testpmd_shell.rst create mode 100644 dts/doc/framework.runner.rst create mode 100644 dts/doc/framework.settings.rst create mode 100644 dts/doc/framework.test_result.rst create mode 100644 dts/doc/framework.test_suite.rst create mode 100644 dts/doc/framework.testbed_model.cpu.rst create mode 100644 dts/doc/framework.testbed_model.linux_session.rst create mode 100644 dts/doc/framework.testbed_model.node.rst create mode 100644 dts/doc/framework.testbed_model.os_session.rst create mode 100644 dts/doc/framework.testbed_model.port.rst create mode 100644 dts/doc/framework.testbed_model.posix_session.rst create mode 100644 dts/doc/framework.testbed_model.rst create mode 100644 dts/doc/framework.testbed_model.sut_node.rst create mode 100644 dts/doc/framework.testbed_model.tg_node.rst create mode 100644 dts/doc/framework.testbed_model.traffic_generator.capturing_traffic_generator.rst create mode 100644 dts/doc/framework.testbed_model.traffic_generator.rst create mode 100644 dts/doc/framework.testbed_model.traffic_generator.scapy.rst create mode 100644 dts/doc/framework.testbed_model.traffic_generator.traffic_generator.rst create mode 100644 dts/doc/framework.testbed_model.virtual_device.rst create mode 100644 dts/doc/framework.utils.rst create mode 100644 dts/doc/index.rst diff --git a/dts/doc/conf_yaml_schema.json b/dts/doc/conf_yaml_schema.json new file mode 120000 index 0000000000..d89eb81b72 --- /dev/null +++ b/dts/doc/conf_yaml_schema.json @@ -0,0 +1 @@ +../framework/config/conf_yaml_schema.json \ No newline at end of file diff --git a/dts/doc/framework.config.rst b/dts/doc/framework.config.rst new file mode 100644 index 0000000000..f765ef0e32 --- /dev/null +++ b/dts/doc/framework.config.rst @@ -0,0 +1,12 @@ +config - Configuration Package +============================== + +.. automodule:: framework.config + :members: + :show-inheritance: + +.. toctree:: + :hidden: + :maxdepth: 1 + + framework.config.types diff --git a/dts/doc/framework.config.types.rst b/dts/doc/framework.config.types.rst new file mode 100644 index 0000000000..ed52bf5d3e --- /dev/null +++ b/dts/doc/framework.config.types.rst @@ -0,0 +1,6 @@ +config.types - Configuration Types +================================== + +.. automodule:: framework.config.types + :members: + :show-inheritance: diff --git a/dts/doc/framework.exception.rst b/dts/doc/framework.exception.rst new file mode 100644 index 0000000000..ad58bd15de --- /dev/null +++ b/dts/doc/framework.exception.rst @@ -0,0 +1,6 @@ +exception - Exceptions +====================== + +.. automodule:: framework.exception + :members: + :show-inheritance: diff --git a/dts/doc/framework.logger.rst b/dts/doc/framework.logger.rst new file mode 100644 index 0000000000..3c25b34819 --- /dev/null +++ b/dts/doc/framework.logger.rst @@ -0,0 +1,6 @@ +logger - Logging Facility +========================= + +.. automodule:: framework.logger + :members: + :show-inheritance: diff --git a/dts/doc/framework.params.eal.rst b/dts/doc/framework.params.eal.rst new file mode 100644 index 0000000000..3908f6d471 --- /dev/null +++ b/dts/doc/framework.params.eal.rst @@ -0,0 +1,6 @@ +eal - EAL Parameters Modelling +============================== + +.. automodule:: framework.params.eal + :members: + :show-inheritance: diff --git a/dts/doc/framework.params.rst b/dts/doc/framework.params.rst new file mode 100644 index 0000000000..a273b6378a --- /dev/null +++ b/dts/doc/framework.params.rst @@ -0,0 +1,14 @@ +params - Command Line Parameters Modelling +========================================== + +.. automodule:: framework.params + :members: + :show-inheritance: + +.. toctree:: + :hidden: + :maxdepth: 1 + + framework.params.eal + framework.params.testpmd + framework.params.types diff --git a/dts/doc/framework.params.testpmd.rst b/dts/doc/framework.params.testpmd.rst new file mode 100644 index 0000000000..5f25ed5528 --- /dev/null +++ b/dts/doc/framework.params.testpmd.rst @@ -0,0 +1,6 @@ +testpmd - TestPMD Parameters Modelling +====================================== + +.. automodule:: framework.params.testpmd + :members: + :show-inheritance: diff --git a/dts/doc/framework.params.types.rst b/dts/doc/framework.params.types.rst new file mode 100644 index 0000000000..9c68a7fab8 --- /dev/null +++ b/dts/doc/framework.params.types.rst @@ -0,0 +1,6 @@ +params.types - Parameters Modelling Types +========================================= + +.. automodule:: framework.params.types + :members: + :show-inheritance: diff --git a/dts/doc/framework.parser.rst b/dts/doc/framework.parser.rst new file mode 100644 index 0000000000..a5e3264f35 --- /dev/null +++ b/dts/doc/framework.parser.rst @@ -0,0 +1,6 @@ +parser - Text Parsing Utilities +=============================== + +.. automodule:: framework.parser + :members: + :show-inheritance: diff --git a/dts/doc/framework.remote_session.dpdk_shell.rst b/dts/doc/framework.remote_session.dpdk_shell.rst new file mode 100644 index 0000000000..4402eba4fd --- /dev/null +++ b/dts/doc/framework.remote_session.dpdk_shell.rst @@ -0,0 +1,6 @@ +dpdk\_shell - DPDK Interactive Remote Shell +=========================================== + +.. automodule:: framework.remote_session.dpdk_shell + :members: + :show-inheritance: diff --git a/dts/doc/framework.remote_session.interactive_remote_session.rst b/dts/doc/framework.remote_session.interactive_remote_session.rst new file mode 100644 index 0000000000..35dc5c4b03 --- /dev/null +++ b/dts/doc/framework.remote_session.interactive_remote_session.rst @@ -0,0 +1,6 @@ +interactive\_remote\_session - SSH Interactive Remote Session +============================================================= + +.. automodule:: framework.remote_session.interactive_remote_session + :members: + :show-inheritance: diff --git a/dts/doc/framework.remote_session.interactive_shell.rst b/dts/doc/framework.remote_session.interactive_shell.rst new file mode 100644 index 0000000000..8a59db7b6e --- /dev/null +++ b/dts/doc/framework.remote_session.interactive_shell.rst @@ -0,0 +1,6 @@ +interactive\_shell - Base Interactive Remote Shell +================================================== + +.. automodule:: framework.remote_session.interactive_shell + :members: + :show-inheritance: diff --git a/dts/doc/framework.remote_session.python_shell.rst b/dts/doc/framework.remote_session.python_shell.rst new file mode 100644 index 0000000000..a8ec06f281 --- /dev/null +++ b/dts/doc/framework.remote_session.python_shell.rst @@ -0,0 +1,6 @@ +python\_shell - Python Interactive Remote Shell +=============================================== + +.. automodule:: framework.remote_session.python_shell + :members: + :show-inheritance: diff --git a/dts/doc/framework.remote_session.remote_session.rst b/dts/doc/framework.remote_session.remote_session.rst new file mode 100644 index 0000000000..58b0960d07 --- /dev/null +++ b/dts/doc/framework.remote_session.remote_session.rst @@ -0,0 +1,6 @@ +remote\_session - Remote Session ABC +==================================== + +.. automodule:: framework.remote_session.remote_session + :members: + :show-inheritance: diff --git a/dts/doc/framework.remote_session.rst b/dts/doc/framework.remote_session.rst new file mode 100644 index 0000000000..4e755b1fe3 --- /dev/null +++ b/dts/doc/framework.remote_session.rst @@ -0,0 +1,18 @@ +remote\_session - Node Connections Package +========================================== + +.. automodule:: framework.remote_session + :members: + :show-inheritance: + +.. toctree:: + :hidden: + :maxdepth: 1 + + framework.remote_session.remote_session + framework.remote_session.ssh_session + framework.remote_session.interactive_remote_session + framework.remote_session.interactive_shell + framework.remote_session.dpdk_shell + framework.remote_session.testpmd_shell + framework.remote_session.python_shell diff --git a/dts/doc/framework.remote_session.ssh_session.rst b/dts/doc/framework.remote_session.ssh_session.rst new file mode 100644 index 0000000000..05b019bc7c --- /dev/null +++ b/dts/doc/framework.remote_session.ssh_session.rst @@ -0,0 +1,6 @@ +ssh\_session - SSH Remote Session +================================= + +.. automodule:: framework.remote_session.ssh_session + :members: + :show-inheritance: diff --git a/dts/doc/framework.remote_session.testpmd_shell.rst b/dts/doc/framework.remote_session.testpmd_shell.rst new file mode 100644 index 0000000000..14510afb2b --- /dev/null +++ b/dts/doc/framework.remote_session.testpmd_shell.rst @@ -0,0 +1,6 @@ +testpmd\_shell - Testpmd Interactive Remote Shell +================================================= + +.. automodule:: framework.remote_session.testpmd_shell + :members: + :show-inheritance: diff --git a/dts/doc/framework.runner.rst b/dts/doc/framework.runner.rst new file mode 100644 index 0000000000..a1708f0002 --- /dev/null +++ b/dts/doc/framework.runner.rst @@ -0,0 +1,6 @@ +runner - Testbed Setup and Test Suite Runner +============================================ + +.. automodule:: framework.runner + :members: + :show-inheritance: diff --git a/dts/doc/framework.settings.rst b/dts/doc/framework.settings.rst new file mode 100644 index 0000000000..96bf194923 --- /dev/null +++ b/dts/doc/framework.settings.rst @@ -0,0 +1,6 @@ +settings - Command Line Arguments and Environment Variables +=========================================================== + +.. automodule:: framework.settings + :members: + :show-inheritance: diff --git a/dts/doc/framework.test_result.rst b/dts/doc/framework.test_result.rst new file mode 100644 index 0000000000..527357a04a --- /dev/null +++ b/dts/doc/framework.test_result.rst @@ -0,0 +1,6 @@ +test\_result - Test Results Records +=================================== + +.. automodule:: framework.test_result + :members: + :show-inheritance: diff --git a/dts/doc/framework.test_suite.rst b/dts/doc/framework.test_suite.rst new file mode 100644 index 0000000000..96f893e465 --- /dev/null +++ b/dts/doc/framework.test_suite.rst @@ -0,0 +1,6 @@ +test\_suite - Common Test Suite Features +======================================== + +.. automodule:: framework.test_suite + :members: + :show-inheritance: diff --git a/dts/doc/framework.testbed_model.cpu.rst b/dts/doc/framework.testbed_model.cpu.rst new file mode 100644 index 0000000000..dd2baf09fb --- /dev/null +++ b/dts/doc/framework.testbed_model.cpu.rst @@ -0,0 +1,6 @@ +cpu - CPU Representation and Utilities +====================================== + +.. automodule:: framework.testbed_model.cpu + :members: + :show-inheritance: diff --git a/dts/doc/framework.testbed_model.linux_session.rst b/dts/doc/framework.testbed_model.linux_session.rst new file mode 100644 index 0000000000..141f3f49e3 --- /dev/null +++ b/dts/doc/framework.testbed_model.linux_session.rst @@ -0,0 +1,6 @@ +linux\_session - Linux Remote Session +===================================== + +.. automodule:: framework.testbed_model.linux_session + :members: + :show-inheritance: diff --git a/dts/doc/framework.testbed_model.node.rst b/dts/doc/framework.testbed_model.node.rst new file mode 100644 index 0000000000..2133dd604b --- /dev/null +++ b/dts/doc/framework.testbed_model.node.rst @@ -0,0 +1,6 @@ +node - Base Node +================ + +.. automodule:: framework.testbed_model.node + :members: + :show-inheritance: diff --git a/dts/doc/framework.testbed_model.os_session.rst b/dts/doc/framework.testbed_model.os_session.rst new file mode 100644 index 0000000000..f3574e939a --- /dev/null +++ b/dts/doc/framework.testbed_model.os_session.rst @@ -0,0 +1,6 @@ +os\_session - OS-aware Remote Session ABC +========================================= + +.. automodule:: framework.testbed_model.os_session + :members: + :show-inheritance: diff --git a/dts/doc/framework.testbed_model.port.rst b/dts/doc/framework.testbed_model.port.rst new file mode 100644 index 0000000000..17bd391e63 --- /dev/null +++ b/dts/doc/framework.testbed_model.port.rst @@ -0,0 +1,6 @@ +port - NIC Port Representation +============================== + +.. automodule:: framework.testbed_model.port + :members: + :show-inheritance: diff --git a/dts/doc/framework.testbed_model.posix_session.rst b/dts/doc/framework.testbed_model.posix_session.rst new file mode 100644 index 0000000000..308c051ae5 --- /dev/null +++ b/dts/doc/framework.testbed_model.posix_session.rst @@ -0,0 +1,6 @@ +posix\_session - Posix Remote Session +===================================== + +.. automodule:: framework.testbed_model.posix_session + :members: + :show-inheritance: diff --git a/dts/doc/framework.testbed_model.rst b/dts/doc/framework.testbed_model.rst new file mode 100644 index 0000000000..4b024e47e6 --- /dev/null +++ b/dts/doc/framework.testbed_model.rst @@ -0,0 +1,26 @@ +testbed\_model - Testbed Modelling Package +========================================== + +.. automodule:: framework.testbed_model + :members: + :show-inheritance: + +.. toctree:: + :hidden: + :maxdepth: 2 + + framework.testbed_model.traffic_generator + +.. toctree:: + :hidden: + :maxdepth: 1 + + framework.testbed_model.os_session + framework.testbed_model.linux_session + framework.testbed_model.posix_session + framework.testbed_model.node + framework.testbed_model.sut_node + framework.testbed_model.tg_node + framework.testbed_model.cpu + framework.testbed_model.port + framework.testbed_model.virtual_device diff --git a/dts/doc/framework.testbed_model.sut_node.rst b/dts/doc/framework.testbed_model.sut_node.rst new file mode 100644 index 0000000000..7e12b6c87e --- /dev/null +++ b/dts/doc/framework.testbed_model.sut_node.rst @@ -0,0 +1,6 @@ +sut\_node - System Under Test Node +================================== + +.. automodule:: framework.testbed_model.sut_node + :members: + :show-inheritance: diff --git a/dts/doc/framework.testbed_model.tg_node.rst b/dts/doc/framework.testbed_model.tg_node.rst new file mode 100644 index 0000000000..e56db8e782 --- /dev/null +++ b/dts/doc/framework.testbed_model.tg_node.rst @@ -0,0 +1,6 @@ +tg\_node - Traffic Generator Node +================================= + +.. automodule:: framework.testbed_model.tg_node + :members: + :show-inheritance: diff --git a/dts/doc/framework.testbed_model.traffic_generator.capturing_traffic_generator.rst b/dts/doc/framework.testbed_model.traffic_generator.capturing_traffic_generator.rst new file mode 100644 index 0000000000..06c087155a --- /dev/null +++ b/dts/doc/framework.testbed_model.traffic_generator.capturing_traffic_generator.rst @@ -0,0 +1,6 @@ +capturing\_traffic\_generator - Base Capturing TG ABC +===================================================== + +.. automodule:: framework.testbed_model.traffic_generator.capturing_traffic_generator + :members: + :show-inheritance: diff --git a/dts/doc/framework.testbed_model.traffic_generator.rst b/dts/doc/framework.testbed_model.traffic_generator.rst new file mode 100644 index 0000000000..18b6f1b98b --- /dev/null +++ b/dts/doc/framework.testbed_model.traffic_generator.rst @@ -0,0 +1,14 @@ +traffic\_generator Subpackage +============================= + +.. automodule:: framework.testbed_model.traffic_generator + :members: + :show-inheritance: + +.. toctree:: + :hidden: + :maxdepth: 1 + + framework.testbed_model.traffic_generator.traffic_generator + framework.testbed_model.traffic_generator.capturing_traffic_generator + framework.testbed_model.traffic_generator.scapy diff --git a/dts/doc/framework.testbed_model.traffic_generator.scapy.rst b/dts/doc/framework.testbed_model.traffic_generator.scapy.rst new file mode 100644 index 0000000000..7062914ec3 --- /dev/null +++ b/dts/doc/framework.testbed_model.traffic_generator.scapy.rst @@ -0,0 +1,6 @@ +scapy - Capturing Traffic Generator +=================================== + +.. automodule:: framework.testbed_model.traffic_generator.scapy + :members: + :show-inheritance: diff --git a/dts/doc/framework.testbed_model.traffic_generator.traffic_generator.rst b/dts/doc/framework.testbed_model.traffic_generator.traffic_generator.rst new file mode 100644 index 0000000000..e366d7f222 --- /dev/null +++ b/dts/doc/framework.testbed_model.traffic_generator.traffic_generator.rst @@ -0,0 +1,6 @@ +traffic\_generator - Base TG ABC +================================ + +.. automodule:: framework.testbed_model.traffic_generator.traffic_generator + :members: + :show-inheritance: diff --git a/dts/doc/framework.testbed_model.virtual_device.rst b/dts/doc/framework.testbed_model.virtual_device.rst new file mode 100644 index 0000000000..38e6c1d0bc --- /dev/null +++ b/dts/doc/framework.testbed_model.virtual_device.rst @@ -0,0 +1,6 @@ +virtual\_device - Virtual Devices +================================= + +.. automodule:: framework.testbed_model.virtual_device + :members: + :show-inheritance: diff --git a/dts/doc/framework.utils.rst b/dts/doc/framework.utils.rst new file mode 100644 index 0000000000..0e7bb80666 --- /dev/null +++ b/dts/doc/framework.utils.rst @@ -0,0 +1,6 @@ +utils - Various Utilities +========================= + +.. automodule:: framework.utils + :members: + :show-inheritance: diff --git a/dts/doc/index.rst b/dts/doc/index.rst new file mode 100644 index 0000000000..e83fa33e7d --- /dev/null +++ b/dts/doc/index.rst @@ -0,0 +1,43 @@ +.. DPDK Test Suite documentation. + +Welcome to DPDK Test Suite's API documentation! +=============================================== + +.. automodule:: framework + :members: + :show-inheritance: + +Packages +-------- + +.. toctree:: + :includehidden: + :maxdepth: 1 + + framework.testbed_model + framework.remote_session + framework.params + framework.config + +Modules +------- + +.. toctree:: + :maxdepth: 1 + + framework.runner + framework.test_suite + framework.test_result + framework.settings + framework.logger + framework.parser + framework.utils + framework.exception + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` From patchwork Mon Jun 24 14:25:44 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Juraj_Linke=C5=A1?= X-Patchwork-Id: 141579 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 85674454E2; Mon, 24 Jun 2024 16:26:31 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B6EDC40E72; Mon, 24 Jun 2024 16:26:18 +0200 (CEST) Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) by mails.dpdk.org (Postfix) with ESMTP id 6107940E38 for ; Mon, 24 Jun 2024 16:26:01 +0200 (CEST) Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-a72477a60fbso157697366b.2 for ; Mon, 24 Jun 2024 07:26:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pantheon.tech; s=google; t=1719239161; x=1719843961; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vVO2NHYcEoyh+UYm0OPgbKbrTAkWT9quXLXl8igdYns=; b=tLG10rycnjC/lGAMQVUg7H4Y4dTuRp4WnUvjla/xAd4SquEAa27wmNV1AHBGd356XD pUsLCcy7JH1cviyoz79omwv9eE15CB4e5ksFoqr/mQNbjPvgWPEEmoMX0YvCLe1lcI+s Pblv8pJvtdX4nH43T9bgmJ2F6G/LDs+vOwzcJb65j0jqxicb/KP8a6IKiWpKtc9SNQwg u/cxtJIIccp5bHlR7bpYOObXNbfo0xkboXwmJLSne0LXG6ay5ZaVIBBk3HTPCFqi87zC JCKpCkhTM5T3T1tfTExObu245D2wWFBgOc887ipbPtEmJ+Imv2E3NveVd8vjrJRBNMwz ysKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719239161; x=1719843961; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vVO2NHYcEoyh+UYm0OPgbKbrTAkWT9quXLXl8igdYns=; b=tmiCn1pzvhqaQlwJD7guavQx2f6jBXrtv5G+gSDlqF4HA30CFKeK+gWjIn877iiywH b8+uAMq69+0L2qqjj02ZLr1uEwqz/lAq9hLye8doaKr6VHoOvVg7QJgTCR/jAgMDMyNy gqiusGxBXzPfF39iTXb6nnpFTWZz7KnV25TFtEdHk30SjUnGx/jzkz8SVr6CWLIseBlG BF/Kvbh0k3a/DCx4gb6osVk1uTbkCj2i9fEgCL3elvNTE2aikS+AU8dj8hh9wW1ozYfD TmHJnyAyfCEo6WT6ZX/21aqk+q01lVSywOIUrRNaqIdOgdQoeCI1EkWFR+GqjQnmwqOD Cz0w== X-Gm-Message-State: AOJu0YyfK4MTan8kFYsn8Xmx001rFLLFwAwBkTWcA6b8QPPngV+SX4wZ 2j+wkml0YtEg05M7Cx8eOApLhyl3UqzcNdMCiDJ2kM/ea4cHSZHAzvu5NW2JERo= X-Google-Smtp-Source: AGHT+IH3lTnVKQog3/BRA0JEmujKYbdHOPa6FJP2zKZKWlt6COPs/ZxZuXExlmt4UbRiAgV+xL7LWg== X-Received: by 2002:a17:906:2711:b0:a6f:b3af:2add with SMTP id a640c23a62f3a-a7245badbf4mr279620466b.45.1719239160782; Mon, 24 Jun 2024 07:26:00 -0700 (PDT) Received: from localhost.localdomain ([84.245.121.236]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a72521c9514sm136964566b.6.2024.06.24.07.25.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Jun 2024 07:26:00 -0700 (PDT) From: =?utf-8?q?Juraj_Linke=C5=A1?= To: thomas@monjalon.net, Honnappa.Nagarahalli@arm.com, bruce.richardson@intel.com, jspewock@iol.unh.edu, probb@iol.unh.edu, paul.szczepanek@arm.com, Luca.Vizzarro@arm.com, npratte@iol.unh.edu Cc: dev@dpdk.org, =?utf-8?q?Juraj_Linke=C5=A1?= , Luca Vizzarro Subject: [PATCH v7 4/4] dts: add API doc generation Date: Mon, 24 Jun 2024 16:25:44 +0200 Message-Id: <20240624142544.35644-5-juraj.linkes@pantheon.tech> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240624142544.35644-1-juraj.linkes@pantheon.tech> References: <20231115133606.42081-1-juraj.linkes@pantheon.tech> <20240624142544.35644-1-juraj.linkes@pantheon.tech> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The tool used to generate DTS API docs is Sphinx, which is already in use in DPDK. The same configuration is used to preserve style with one DTS-specific configuration (so that the DPDK docs are unchanged) that modifies how the sidebar displays the content. Sphinx generates the documentation from Python docstrings. The docstring format is the Google format [0] which requires the sphinx.ext.napoleon extension. The other extension, sphinx.ext.intersphinx, enables linking to object in external documentations, such as the Python documentation. There are two requirements for building DTS docs: * The same Python version as DTS or higher, because Sphinx imports the code. * Also the same Python packages as DTS, for the same reason. [0] https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings Signed-off-by: Juraj Linkeš Reviewed-by: Luca Vizzarro Reviewed-by: Jeremy Spewock Acked-by: Bruce Richardson Tested-by: Luca Vizzarro Tested-by: Nicholas Pratte --- buildtools/call-sphinx-build.py | 31 ++++++++++++++++++-------- doc/api/doxy-api-index.md | 3 +++ doc/api/doxy-api.conf.in | 2 ++ doc/api/meson.build | 11 +++++++--- doc/guides/conf.py | 39 ++++++++++++++++++++++++++++----- doc/guides/meson.build | 1 + doc/guides/tools/dts.rst | 34 +++++++++++++++++++++++++++- dts/doc/meson.build | 27 +++++++++++++++++++++++ dts/meson.build | 16 ++++++++++++++ meson.build | 1 + 10 files changed, 147 insertions(+), 18 deletions(-) create mode 100644 dts/doc/meson.build create mode 100644 dts/meson.build diff --git a/buildtools/call-sphinx-build.py b/buildtools/call-sphinx-build.py index da19e950c9..dff8471560 100755 --- a/buildtools/call-sphinx-build.py +++ b/buildtools/call-sphinx-build.py @@ -3,31 +3,44 @@ # Copyright(c) 2019 Intel Corporation # +import argparse import sys import os from os.path import join from subprocess import run -# assign parameters to variables -(sphinx, version, src, dst, *extra_args) = sys.argv[1:] +parser = argparse.ArgumentParser() +parser.add_argument('sphinx') +parser.add_argument('version') +parser.add_argument('src') +parser.add_argument('dst') +parser.add_argument('--dts-root', default=None) +args, extra_args = parser.parse_known_args() # set the version in environment for sphinx to pick up -os.environ['DPDK_VERSION'] = version +os.environ['DPDK_VERSION'] = args.version +if args.dts_root: + os.environ['DTS_ROOT'] = args.dts_root -sphinx_cmd = [sphinx] + extra_args +sphinx_cmd = [args.sphinx] + extra_args # find all the files sphinx will process so we can write them as dependencies srcfiles = [] -for root, dirs, files in os.walk(src): +for root, dirs, files in os.walk(args.src): srcfiles.extend([join(root, f) for f in files]) +if not os.path.exists(args.dst): + os.makedirs(args.dst) + # run sphinx, putting the html output in a "html" directory -with open(join(dst, 'sphinx_html.out'), 'w') as out: - process = run(sphinx_cmd + ['-b', 'html', src, join(dst, 'html')], - stdout=out) +with open(join(args.dst, 'sphinx_html.out'), 'w') as out: + process = run( + sphinx_cmd + ['-b', 'html', args.src, join(args.dst, 'html')], + stdout=out + ) # create a gcc format .d file giving all the dependencies of this doc build -with open(join(dst, '.html.d'), 'w') as d: +with open(join(args.dst, '.html.d'), 'w') as d: d.write('html: ' + ' '.join(srcfiles) + '\n') sys.exit(process.returncode) diff --git a/doc/api/doxy-api-index.md b/doc/api/doxy-api-index.md index f9283154f8..cc214ede46 100644 --- a/doc/api/doxy-api-index.md +++ b/doc/api/doxy-api-index.md @@ -244,3 +244,6 @@ The public API headers are grouped by topics: [experimental APIs](@ref rte_compat.h), [ABI versioning](@ref rte_function_versioning.h), [version](@ref rte_version.h) + +- **tests**: + [**DTS**](@dts_api_main_page) diff --git a/doc/api/doxy-api.conf.in b/doc/api/doxy-api.conf.in index a8823c046f..c94f02d411 100644 --- a/doc/api/doxy-api.conf.in +++ b/doc/api/doxy-api.conf.in @@ -124,6 +124,8 @@ SEARCHENGINE = YES SORT_MEMBER_DOCS = NO SOURCE_BROWSER = YES +ALIASES = "dts_api_main_page=@DTS_API_MAIN_PAGE@" + EXAMPLE_PATH = @TOPDIR@/examples EXAMPLE_PATTERNS = *.c EXAMPLE_RECURSIVE = YES diff --git a/doc/api/meson.build b/doc/api/meson.build index 5b50692df9..ffc75d7b5a 100644 --- a/doc/api/meson.build +++ b/doc/api/meson.build @@ -1,6 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Luca Boccassi +doc_api_build_dir = meson.current_build_dir() doxygen = find_program('doxygen', required: get_option('enable_docs')) if not doxygen.found() @@ -32,14 +33,18 @@ example = custom_target('examples.dox', # set up common Doxygen configuration cdata = configuration_data() cdata.set('VERSION', meson.project_version()) -cdata.set('API_EXAMPLES', join_paths(dpdk_build_root, 'doc', 'api', 'examples.dox')) -cdata.set('OUTPUT', join_paths(dpdk_build_root, 'doc', 'api')) +cdata.set('API_EXAMPLES', join_paths(doc_api_build_dir, 'examples.dox')) +cdata.set('OUTPUT', doc_api_build_dir) cdata.set('TOPDIR', dpdk_source_root) -cdata.set('STRIP_FROM_PATH', ' '.join([dpdk_source_root, join_paths(dpdk_build_root, 'doc', 'api')])) +cdata.set('STRIP_FROM_PATH', ' '.join([dpdk_source_root, doc_api_build_dir])) cdata.set('WARN_AS_ERROR', 'NO') if get_option('werror') cdata.set('WARN_AS_ERROR', 'YES') endif +# A local reference must be relative to the main index.html page +# The path below can't be taken from the DTS meson file as that would +# require recursive subdir traversal (doc, dts, then doc again) +cdata.set('DTS_API_MAIN_PAGE', join_paths('..', 'dts', 'html', 'index.html')) # configure HTML Doxygen run html_cdata = configuration_data() diff --git a/doc/guides/conf.py b/doc/guides/conf.py index 0f7ff5282d..b442a1f76c 100644 --- a/doc/guides/conf.py +++ b/doc/guides/conf.py @@ -7,10 +7,9 @@ from sphinx import __version__ as sphinx_version from os import listdir from os import environ -from os.path import basename -from os.path import dirname +from os.path import basename, dirname from os.path import join as path_join -from sys import argv, stderr +from sys import argv, stderr, path import configparser @@ -24,6 +23,37 @@ file=stderr) pass +# Napoleon enables the Google format of Python doscstrings, used in DTS +# Intersphinx allows linking to external projects, such as Python docs, also used in DTS +extensions = ['sphinx.ext.napoleon', 'sphinx.ext.intersphinx'] + +# DTS Python docstring options +autodoc_default_options = { + 'members': True, + 'member-order': 'bysource', + 'show-inheritance': True, +} +autodoc_class_signature = 'separated' +autodoc_typehints = 'both' +autodoc_typehints_format = 'short' +autodoc_typehints_description_target = 'documented' +napoleon_numpy_docstring = False +napoleon_attr_annotations = True +napoleon_preprocess_types = True +add_module_names = False +toc_object_entries = True +toc_object_entries_show_parents = 'hide' +intersphinx_mapping = {'python': ('https://docs.python.org/3', None)} + +dts_root = environ.get('DTS_ROOT') +if dts_root: + path.append(dts_root) + # DTS Sidebar config + html_theme_options = { + 'collapse_navigation': False, + 'navigation_depth': -1, + } + stop_on_error = ('-W' in argv) project = 'Data Plane Development Kit' @@ -35,8 +65,7 @@ html_show_copyright = False highlight_language = 'none' -release = environ.setdefault('DPDK_VERSION', "None") -version = release +version = environ.setdefault('DPDK_VERSION', "None") master_doc = 'index' diff --git a/doc/guides/meson.build b/doc/guides/meson.build index 51f81da2e3..8933d75f6b 100644 --- a/doc/guides/meson.build +++ b/doc/guides/meson.build @@ -1,6 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Intel Corporation +doc_guides_source_dir = meson.current_source_dir() sphinx = find_program('sphinx-build', required: get_option('enable_docs')) if not sphinx.found() diff --git a/doc/guides/tools/dts.rst b/doc/guides/tools/dts.rst index 515b15e4d8..77df7a0378 100644 --- a/doc/guides/tools/dts.rst +++ b/doc/guides/tools/dts.rst @@ -292,7 +292,12 @@ and try not to divert much from it. The :ref:`DTS developer tools ` will issue warnings when some of the basics are not met. -The code must be properly documented with docstrings. +The API documentation, which is a helpful reference when developing, may be accessed +in the code directly or generated with the :ref:`API docs build steps `. +When adding new files or modifying the directory structure, +the corresponding changes must be made to DTS api doc sources in ``dts/doc``. + +Speaking of which, the code must be properly documented with docstrings. The style must conform to the `Google style `_. See an example of the style `here @@ -427,6 +432,33 @@ the DTS code check and format script. Refer to the script for usage: ``devtools/dts-check-format.sh -h``. +.. _building_api_docs: + +Building DTS API docs +--------------------- + +To build DTS API docs, install the dependencies with Poetry, then enter its shell: + +.. code-block:: console + + poetry install --no-root --with docs + poetry shell + +The documentation is built using the standard DPDK build system. +After executing the meson command and entering Poetry's shell, build the documentation with: + +.. code-block:: console + + ninja -C build dts-doc + +The output is generated in ``build/doc/api/dts/html``. + +.. Note:: + + Make sure to fix any Sphinx warnings when adding or updating docstrings, + and also run the ``devtools/dts-check-format.sh`` script and address any issues it finds. + + Configuration Schema -------------------- diff --git a/dts/doc/meson.build b/dts/doc/meson.build new file mode 100644 index 0000000000..01b7b51034 --- /dev/null +++ b/dts/doc/meson.build @@ -0,0 +1,27 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2023 PANTHEON.tech s.r.o. + +sphinx = find_program('sphinx-build', required: false) +sphinx_apidoc = find_program('sphinx-apidoc', required: false) + +if not sphinx.found() or not sphinx_apidoc.found() + subdir_done() +endif + +dts_doc_api_build_dir = join_paths(doc_api_build_dir, 'dts') + +extra_sphinx_args = ['-E', '-c', doc_guides_source_dir, '--dts-root', dts_dir] +if get_option('werror') + extra_sphinx_args += '-W' +endif + +htmldir = join_paths(get_option('datadir'), 'doc', 'dpdk', 'dts') +dts_api_html = custom_target('dts_api_html', + output: 'html', + command: [sphinx_wrapper, sphinx, meson.project_version(), + meson.current_source_dir(), dts_doc_api_build_dir, extra_sphinx_args], + build_by_default: false, + install: get_option('enable_docs'), + install_dir: htmldir) +doc_targets += dts_api_html +doc_target_names += 'DTS_API_HTML' diff --git a/dts/meson.build b/dts/meson.build new file mode 100644 index 0000000000..e8ce0f06ac --- /dev/null +++ b/dts/meson.build @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2023 PANTHEON.tech s.r.o. + +doc_targets = [] +doc_target_names = [] +dts_dir = meson.current_source_dir() + +subdir('doc') + +if doc_targets.length() == 0 + message = 'No docs targets found' +else + message = 'Built docs:' +endif +run_target('dts-doc', command: [echo, message, doc_target_names], + depends: doc_targets) diff --git a/meson.build b/meson.build index 8b248d4505..835973a0ce 100644 --- a/meson.build +++ b/meson.build @@ -87,6 +87,7 @@ subdir('app') # build docs subdir('doc') +subdir('dts') # build any examples explicitly requested - useful for developers - and # install any example code into the appropriate install path