From: thmsdt Date: Tue, 10 Feb 2026 10:29:38 +0000 (+0100) Subject: Remove stale/outdated dependencies that break with modern python X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=3ebcae4f578beee56831e6c7048998790db425eb;p=doc.git Remove stale/outdated dependencies that break with modern python Issue-ID: DOC-831 Change-Id: Iad964941f556e099d787ef45d60d4c9ca8001c1b Signed-off-by: thmsdt --- diff --git a/docs/conf.py b/docs/conf.py index cde9011b3..a626f4bf1 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -43,7 +43,7 @@ extensions = [ 'sphinxcontrib.plantuml', 'sphinxcontrib.seqdiag', 'sphinxcontrib.spelling' , - 'sphinxcontrib.swaggerdoc', + 'sphinxcontrib.openapi', 'sphinx_toolbox.collapse' ] diff --git a/docs/guides/onap-documentation/api-swagger-guide.rst b/docs/guides/onap-documentation/api-swagger-guide.rst index 3083225ab..d56dfa45a 100644 --- a/docs/guides/onap-documentation/api-swagger-guide.rst +++ b/docs/guides/onap-documentation/api-swagger-guide.rst @@ -7,6 +7,29 @@ API Documentation ================= + +.. note:: + **API Documentation Update** + + The API documentation has been migrated from Swagger 2.0 to OpenAPI 3.x specification. + + **What changed:** + + - The ``sphinxcontrib-swaggerdoc`` extension has been replaced with ``sphinxcontrib-openapi`` + - All ``.. swaggerv2doc::`` directives have been updated to ``.. openapi::`` + - OpenAPI 3.x provides better support for modern API features and is actively maintained + + **For readers:** The API documentation content and functionality remain the same. OpenAPI is + the successor to Swagger and offers the same capabilities with improved specification support. + + **For contributors:** When adding new API documentation, use the ``.. openapi::`` directive + instead of the deprecated ``.. swaggerv2doc::`` directive. + +.. seealso:: + - `OpenAPI Specification `_ + - `Swagger vs OpenAPI `_ + + Swagger ------- @@ -72,18 +95,18 @@ For each API, the ``swaggerv2doc`` directive must be used as follows: myAPI1 ...... - .. swaggerv2doc:: myAPI1.json + .. openapi:: myAPI1.json myAPI2 ...... - .. swaggerv2doc:: myAPI2.json + .. openapi:: myAPI2.json It will produce the following output: myAPI1 ...... -.. swaggerv2doc:: media/myAPI1.json +.. openapi:: media/myAPI1.json myAPI2 ...... -.. swaggerv2doc:: media/myAPI2.json +.. openapi:: media/myAPI2.json diff --git a/docs/guides/onap-documentation/index.rst b/docs/guides/onap-documentation/index.rst index 20cf74839..0797dd218 100644 --- a/docs/guides/onap-documentation/index.rst +++ b/docs/guides/onap-documentation/index.rst @@ -13,7 +13,6 @@ contribute to the ONAP documentation project. :maxdepth: 1 introduction - setting-up setup-of-a-doc-dev-system style-guide-content creating-rst diff --git a/docs/guides/onap-documentation/setting-up.rst b/docs/guides/onap-documentation/setting-up.rst deleted file mode 100644 index 0b7c6224e..000000000 --- a/docs/guides/onap-documentation/setting-up.rst +++ /dev/null @@ -1,303 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 -.. International License. http://creativecommons.org/licenses/by/4.0 -.. Copyright 2017 AT&T Intellectual Property. All rights reserved. -.. Copyright 2022 ONAP - -.. _setting-up: - -Setting Up -========== - -.. warning:: This guide describes the concept of using 'submodules' for - documentation. Submodules are no longer supported and have been removed. - This guide is partly outdated and needs an update. - - The aggregation of individual project documentation to a coherent set of - ONAP release documentation is now done in ReadTheDocs using the ONAP 'doc' - project as its root. - -ONAP documentation is stored in git repositories, changes are managed -with gerrit reviews, and published documents generated when there is a -change in any source used to build the documentation. - -Authors create source for documents in reStructured Text (RST) that is -rendered to HTML and published on Readthedocs.io. -The developer Wiki or other web sites can reference these rendered -documents directly allowing projects to easily maintain current release -documentation. - -Some initial set up is required to connect a project with -the master document structure and enable automated publishing of -changes as summarized in the following diagram and description below -below. - -.. seqdiag:: - :height: 700 - :width: 1000 - - seqdiag { - DA [label = "Doc Project\nAuthor/Committer", color=lightblue]; - DR [label = "Doc Gerrit Repo" , color=pink]; - PR [label = "Other Project\nGerrit Repo", color=pink ]; - PA [label = "Other Project\nAuthor/Committer", color=lightblue]; - - PA -> DR [label = "Add project repo as\ngit submodule" ]; - DR -> DA [label = "Review & Plan to\nIntegrate Content with\nTocTree Structure" ]; - DR <-- DA [label = "Vote +2/Merge" ]; - PA <-- DR [label = "Merge Notification" ]; - PA -> PR [label = "Create in project repo\ntop level directory and index.rst" ]; - PR -> DA [label = "Add as Reviewer" ]; - PR <-- DA [label = "Approve and Integrate" ]; - PA <-- PR [label = "Merge" ]; - } - -Setup project repositories --------------------------- -These steps are performed for each project repository that -provides documentation. - -1. Set two variables that will be used in the subsequent steps. -Set *reponame* to the project repository you are setting up -just as it appears in the **Project Name** column of -the Gerrit projects page. -Set *lfid* to your Linux Foundation identity that you use to -login to gerrit or for git clone requests over ssh. - -.. code-block:: bash - - reponame= - lfid= - -2. Add a directory in the doc project where your -project will be included as a submodule and at least one reference -from the doc project to the documentation index in your repository. -The following sequence will do this over ssh. Please note that the -reference to your project in *repolist.rst* should be considered -temporary and removed when you reference it from more appropriate -place. - -.. caution:: - - If your access network restricts ssh, you will need to use equivalent - git commands and HTTP Passwords. See ONAP Wiki. - -.. caution:: - - Don't replace ../ in *git submodule add* with any relative path on - your local file system. It refers to the location of your repository - on the server. - -.. code-block:: bash - - git clone ssh://$lfid@gerrit.onap.org:29418/doc - cd doc - mkdir -p `dirname docs/submodules/$reponame` - git submodule add ../$reponame docs/submodules/$reponame.git - git submodule init docs/submodules/$reponame.git - git submodule update docs/submodules/$reponame.git - - echo " $reponame <../submodules/$reponame.git/docs/index>" >> docs/release/repolist.rst - - git add . - git commit -s - git review - -.. caution:: - Wait for the above change to be merged before any merge to the - project repository that you have just added as a submodule. - If the project repository added as submodule changes before the - doc project merge, git may not automatically update the submodule - reference on changes and/or the verify job will fail in the step below. - - -1. Create a docs directory in your repository with -an index.rst file. The following sequence will complete the minimum -required over ssh. As you have time to convert or add new content you -can update the index and add files under the docs folder. - -.. hint:: - If you have additional content, you can include it by editing the - index.rst file and/or adding other files before the git commit. - Check "Templates and Examples" section in :ref:`setting-up` and - :ref:`converting-to-rst` for more information. - - -.. code-block:: bash - - git clone ssh://$lfid@gerrit.onap.org:29418/$reponame - cd $reponame - mkdir docs - echo ".. This work is licensed under a Creative Commons Attribution 4.0 International License. - - TODO Add files to toctree and delete this header - ------------------------------------------------ - .. toctree:: - :maxdepth: 1 - - " > docs/index.rst - - git add . - git commit -s - git review - - -The diagram below illustrates what is accomplished in the setup steps -above from the perspective of a file structure created for a local test, -a jenkins verify job, and/or published release documentation including: - -- ONAP gerrit project repositories, - -- doc project repository master document index.rst, templates, - configuration, and other documents - -- submodules directory where other project repositories and - directories/files are referenced - -- file structure: directories (ellipses), files(boxes) - -- references: directory/files (solid edges), git submodule - (dotted edges), sphinx toctree (dashed edges) - -.. graphviz:: - - - digraph docstructure { - size="8,12"; - node [fontname = "helvetica"]; - // Align gerrit repos and docs directories - {rank=same doc aaf aai reponame repoelipse vnfsdk vvp} - {rank=same confpy release templates masterindex submodules otherdocdocumentelipse} - {rank=same releasedocumentindex releaserepolist} - - //Illustrate Gerrit Repos and provide URL/Link for complete repo list - gerrit [label="gerrit.onap.org/r", href="https://gerrit.onap.org/r/#/admin/projects/" ]; - doc [href="https://gerrit.onap.org/r/gitweb?p=doc.git;a=tree"]; - gerrit -> doc; - gerrit -> aaf; - gerrit -> aai; - gerrit -> reponame; - gerrit -> repoelipse; - repoelipse [label=". . . ."]; - gerrit -> vnfsdk; - gerrit -> vvp; - - //Show example of local reponame instance of component info - reponame -> reponamedocsdir; - reponamesm -> reponamedocsdir; - reponamedocsdir [label="docs"]; - reponamedocsdir -> repnamedocsdirindex; - repnamedocsdirindex [label="index.rst", shape=box]; - - //Show detail structure of a portion of doc/docs - doc -> docs; - docs -> confpy; - confpy [label="conf.py",shape=box]; - docs -> masterindex; - masterindex [label="Master\nindex.rst", shape=box]; - docs -> release; - docs -> templates; - docs -> otherdocdocumentelipse; - otherdocdocumentelipse [label="...other\ndocuments"]; - docs -> submodules - - masterindex -> releasedocumentindex [style=dashed, label="sphinx\ntoctree\nreference"]; - - //Show submodule linkage to docs directory - submodules -> reponamesm [style=dotted,label="git\nsubmodule\nreference"]; - reponamesm [label="reponame.git"]; - - //Example Release document index that references component info provided in other project repo - release -> releasedocumentindex; - releasedocumentindex [label="index.rst", shape=box]; - releasedocumentindex -> releaserepolist [style=dashed, label="sphinx\ntoctree\nreference"]; - releaserepolist [label="repolist.rst", shape=box]; - release -> releaserepolist; - releaserepolist -> repnamedocsdirindex [style=dashed, label="sphinx\ntoctree\nreference"]; - - } - -Branches in the DOC Project ---------------------------- - -The DOC project 'master' branch aggregates the 'latest' content -from all ONAP project repositories contributing documentation into a -single tree file structure as described in the previous section. This -branch is continuously integrated and deployed at Read The -Docs as the 'latest' ONAP Documentation by: - -* Jenkins doc-verify-rtd and doc-merge-rtd jobs triggered whenever patches on - contributing repositories contain rst files at or below a top level - 'docs' folder. - -* Subscription in the DOC project to changes in submodule repositories. - These changes appear in the DOC project as commits with title - 'Updated git submodules' when a change to a contributing project - repository is merged. No DOC project code review occurs, only a - submodule repository commit hash is updated to track the head of each - contributing master branch. - -For each ONAP named release the DOC project creates a branch with the -release name. The timing of the release branch is determined by -work needed in the DOC project to prepare the release branch and the -amount of change unrelated to the release in the master branch. -For example contributing projects that create named release branches -early to begin work on the next release and/or contributing projects -to the master that are not yet part of the named release would result -in an earlier named release branch to cleanly separate work to stabilize -a release from other changes in the master branch. - -A named release branch is integrated and deployed at Read The Docs -as the 'named release' by aggregating content from contributing -project repositories. A contributing project repository can -choose one of the following for the 'named release' branch: - -* Remove the contributing project repository submodule and RST - references when not part of the named release. - -* Provide a commit hash or tag for the contributing project master - branch to be used for the life of the release branch or until a - request is submitted to change the commit hash or tag. - -* Provide the commit hash for the head of a named release branch - created in the contributing project repository. This option - may be appropriate if frequent changes are expected over the - life of the named release and work the same way as the continuous - integration and deployment described for the master branch. - -The decision on option for each contributing project repository -can be made or changed before the final release is approved. The -amount of change and expected differences between master and a -named release branch for each repository should drive the choice of -option and timing. - -About GIT branches ------------------- - -GIT is a powerful tool allowing many actions, but without respecting some rules -the GIT structure can be quickly hard to maintain. - -Here are some conventions about GIT branches: - - - ALWAYS create a local branch to edit or create any file. This local branch - will be considered as a topic in Gerrit and allow contributors to - work at the same time on the same project. - - - 1 feature = 1 branch. In the case of documentation, a new chapter - or page about a new code feature can be considered as a 'doc feature' - - - 1 bug = 1 branch. In the case of documentation, a correction on an - existing sentence can be considered as a 'doc bug' - - - the master branch is considered as "unstable", containing new features that - will converge to a stable situation for the release date. - -The day of the release, the repository owner will create a new branch to -fix the code and documentation. This will represent the 'stable' code of the -release. In this context: - - - NEVER push a new feature on a stable branch - - - Only bug correction are authorized on a stable branch using - cherry pick method - -.. image:: media/git_branches.png diff --git a/docs/guides/onap-documentation/templates/collections/platform-component.rst b/docs/guides/onap-documentation/templates/collections/platform-component.rst index e776c7ff6..fc728ce9a 100644 --- a/docs/guides/onap-documentation/templates/collections/platform-component.rst +++ b/docs/guides/onap-documentation/templates/collections/platform-component.rst @@ -13,7 +13,6 @@ Platform Component ../sections/architecture.rst ../sections/offeredapis.rst ../sections/consumedapis.rst - ../sections/delivery.rst ../sections/design.rst ../sections/logging.rst ../sections/installation.rst diff --git a/docs/guides/onap-documentation/templates/collections/sdk.rst b/docs/guides/onap-documentation/templates/collections/sdk.rst index 83fbbe2ee..4c1855eba 100644 --- a/docs/guides/onap-documentation/templates/collections/sdk.rst +++ b/docs/guides/onap-documentation/templates/collections/sdk.rst @@ -11,7 +11,6 @@ SDK ../sections/architecture.rst ../sections/offeredapis.rst - ../sections/delivery.rst ../sections/logging.rst ../sections/build.rst ../sections/release-notes.rst diff --git a/docs/guides/onap-documentation/templates/sections/delivery.rst b/docs/guides/onap-documentation/templates/sections/delivery.rst deleted file mode 100644 index 32f8450cc..000000000 --- a/docs/guides/onap-documentation/templates/sections/delivery.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 -.. Copyright 2021 ONAP contributors, Nokia - -Delivery -======== - -.. - * This section is used to describe the delivery of a software component. - For a run-time component, this might be executable images, containers, etc. - For an SDK, this might be libraries. - - * This section is typically provided for a platform-component and sdk; - and referenced in developer and user guides. - -Process -------- -.. - If needed, describe the steps of the delivery pictured on the block diagram. - -.. blockdiag:: - - - blockdiag layers { - orientation = portrait - a -> m; - b -> n; - c -> x; - m -> y; - m -> z; - group l1 { - shape = line; - color = "#07819B"; - x; y; z; - } - group l2 { - shape = line; - color = "#1a3d6f"; - m; n; - } - group l3 { - shape = line; - color = "#5dbeba"; - a; b; c; - } - - } - -Deliverables ------------- - -.. - List the deliverables in the package here. diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 5d3ccefe5..680e465a6 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,11 +1,23 @@ -sphinx>=4.2.0 # BSD -sphinx-rtd-theme>=1.0.0 # MIT -sphinxcontrib-blockdiag # BSD -sphinxcontrib-seqdiag # BSD -sphinxcontrib-swaggerdoc -sphinxcontrib-spelling -sphinxcontrib-plantuml -sphinx_toolbox -autopep8 -pylint -six +# Compatibility +setuptools>=65.0.0 +Pillow>=10.1.0 + +# Core Sphinx +sphinx>=7.2.0 +sphinx-rtd-theme>=2.0.0 + +# Diagram extensions +sphinxcontrib-blockdiag>=3.0.0 +sphinxcontrib-seqdiag>=3.0.0 +sphinxcontrib-plantuml>=0.27 + +# API documentation +sphinxcontrib-openapi>=0.8.4 + +# Quality & tooling +sphinxcontrib-spelling>=8.0.0 +sphinx-toolbox>=3.5.0 + +# Code quality tools +autopep8>=2.0.0 +pylint>=3.0.0 diff --git a/docs/tox.ini b/docs/tox.ini index fcac2d305..34f7dd223 100644 --- a/docs/tox.ini +++ b/docs/tox.ini @@ -4,10 +4,10 @@ envlist = docs,docs-linkcheck,docs-spellcheck skipsdist = true [testenv:docs] -basepython = python3.8 +basepython = python3.12 deps = + setuptools>=65.0.0 -r{toxinidir}/requirements-docs.txt - -chttps://releases.openstack.org/constraints/upper/yoga -c{toxinidir}/../etc/upper-constraints.onap.txt commands = sphinx-build -W -q -b html -n -d {envtmpdir}/doctrees {toxinidir} {toxinidir}/_build/html @@ -16,18 +16,18 @@ allowlist_externals = sh [testenv:docs-linkcheck] -basepython = python3.8 +basepython = python3.12 deps = + setuptools>=65.0.0 -r{toxinidir}/requirements-docs.txt - -chttps://releases.openstack.org/constraints/upper/yoga -c{toxinidir}/../etc/upper-constraints.onap.txt commands = sphinx-build -W -q -b linkcheck -d {envtmpdir}/doctrees {toxinidir} {toxinidir}/_build/linkcheck [testenv:docs-spellcheck] -basepython = python3.8 +basepython = python3.12 deps = + setuptools>=65.0.0 -r{toxinidir}/requirements-docs.txt - -chttps://releases.openstack.org/constraints/upper/yoga -c{toxinidir}/../etc/upper-constraints.onap.txt commands = sphinx-build -b spelling -d {envtmpdir}/doctrees {toxinidir} {toxinidir}/_build/spellcheck diff --git a/etc/upper-constraints.onap.txt b/etc/upper-constraints.onap.txt index f7326c458..04d958723 100644 --- a/etc/upper-constraints.onap.txt +++ b/etc/upper-constraints.onap.txt @@ -1,10 +1,23 @@ -lfdocs-conf===0.8.0 -sphinxcontrib-needs===0.7.9 -sphinxcontrib.plantuml===0.24 -sphinx_toolbox==3.2.0 -sphinxcontrib.nwdiag===2.0.0 -sphinx-rtd-theme===1.0.0 -autopep8==1.7.0 -gitlint-core==0.17.0 -pyenchant==3.2.2 -pylint==2.15.0 +# Compatibility +setuptools===69.0.3 +Pillow===10.4.0 + +# Core Sphinx +sphinx===7.2.6 +sphinx-rtd-theme===2.0.0 + +# Diagram extensions +sphinxcontrib-blockdiag===3.0.0 +sphinxcontrib-seqdiag===3.0.0 +sphinxcontrib-plantuml===0.29 + +# API documentation +sphinxcontrib-openapi===0.8.4 + +# Quality & tooling +sphinxcontrib-spelling===8.0.0 +sphinx-toolbox===3.5.0 + +# Code quality tools +autopep8===2.3.1 +pylint===3.0.3 diff --git a/etc/upper-constraints.os.txt b/etc/upper-constraints.os.txt deleted file mode 100644 index 1b1fbe893..000000000 --- a/etc/upper-constraints.os.txt +++ /dev/null @@ -1,643 +0,0 @@ -ntlm-auth===1.5.0 -voluptuous===0.12.2 -chardet===4.0.0 -enum-compat===0.0.3 -rsa===4.8 -restructuredtext-lint===1.4.0 -netmiko===3.4.0 -sshtunnel===0.4.0 -PasteDeploy===2.1.1 -typing===3.7.4.3 -python-saharaclient===3.5.0 -Routes===2.5.1 -rtslib-fb===2.1.74 -oslo.limit===1.5.1 -tzdata===2021.5 -smmap===5.0.0 -confget===4.1.0 -XStatic-Angular-Bootstrap===2.5.0.0 -WebOb===1.8.7 -sphinxcontrib-actdiag===2.0.0;python_version=='3.6' -sphinxcontrib-actdiag===3.0.0;python_version=='3.8' -pecan===1.4.1 -ryu===4.34 -os-api-ref===2.3.0 -python-ldap===3.4.0 -oslo.concurrency===4.5.0 -websocket-client===1.2.3 -osprofiler===3.4.2 -os-resource-classes===1.1.0 -tabulate===0.8.9 -python-ironic-inspector-client===4.7.1 -lxml===4.8.0 -vintage===0.4.1 -ntc-templates===3.0.0 -rst2txt===1.1.0 -setproctitle===1.2.2 -pytest===7.0.1 -python-slugify===6.1.0 -cursive===0.2.2 -oslo.service===2.8.0 -django-appconf===1.0.5 -sphinxcontrib-nwdiag===2.0.0 -rbd-iscsi-client===0.1.8 -requests-aws===0.1.8 -alabaster===0.7.12 -pbr===5.8.1 -munch===2.5.0 -waiting===1.4.1 -attrs===21.4.0 -microversion-parse===1.0.1 -Pint===0.17;python_version=='3.6' -Pint===0.18;python_version=='3.8' -oslo.i18n===5.1.0 -jsonpath-rw-ext===1.2.2 -python-mistralclient===4.4.0 -oslo.context===4.1.0 -python-senlinclient===2.4.0 -rcssmin===1.0.6 -pycadf===3.1.1 -types-enum34===1.1.8 -grpcio===1.44.0 -pysendfile===2.0.1 -sniffio===1.2.0 -fixtures===3.0.0 -neutron===20.2.0 -neutron-lib===2.20.0 -XStatic-FileSaver===1.3.2.0 -oslo.metrics===0.4.0 -storage-interfaces===1.0.4 -persist-queue===0.7.0 -pystache===0.6.0 -XStatic-Font-Awesome===4.7.0.0 -nose===1.3.7 -nosehtmloutput===0.0.7 -waitress===2.0.0 -os-refresh-config===13.0.1 -pysnmp===4.4.12 -Mako===1.1.6 -pyScss===1.3.7 -sphinxcontrib-htmlhelp===2.0.0 -XStatic-jQuery===1.12.4.1 -ddt===1.4.4 -XStatic-Graphlib===2.1.7.0 -pyserial===3.5 -moto===3.0.4 -infi.dtypes.wwn===0.1.1 -python-freezerclient===4.4.0 -os-xenapi===0.3.4 -python-vitrageclient===4.5.0 -nosexcover===1.0.11 -krest===1.3.2 -psycopg2===2.9.3 -networkx===2.5.1;python_version=='3.6' -networkx===2.6.3;python_version=='3.8' -bashate===2.1.0 -XStatic-Angular===1.5.8.0 -pyngus===2.3.1 -Pillow===8.4.0;python_version=='3.6' -Pillow===9.0.1;python_version=='3.8' -zuul-sphinx===0.6.0 -tripleo-common===16.3.0 -Tempita===0.5.2 -ply===3.11 -google-api-core===2.5.0 -requests-toolbelt===0.9.1 -simplejson===3.17.6 -suds-jurko===0.6 -types-paramiko===2.8.13 -immutables===0.16 -python-swiftclient===3.13.1 -pyOpenSSL===22.0.0 -monasca-common===3.5.0 -zeroconf===0.37.0;python_version=='3.6' -zeroconf===0.38.3;python_version=='3.8' -scipy===1.5.4;python_version=='3.6' -scipy===1.8.0;python_version=='3.8' -python-gnupg===0.4.8 -mypy-extensions===0.4.3 -rsd-lib===1.2.0 -XStatic-Jasmine===2.4.1.2 -googleapis-common-protos===1.55.0 -python-glanceclient===3.6.0 -pyinotify===0.9.6 -debtcollector===2.5.0 -requests-unixsocket===0.3.0 -responses===0.17.0;python_version=='3.6' -responses===0.18.0;python_version=='3.8' -croniter===1.3.4 -horizon===22.1.0 -octavia-lib===2.5.0 -python-watcherclient===3.4.0 -MarkupSafe===2.0.1;python_version=='3.6' -MarkupSafe===2.1.0;python_version=='3.8' -pypowervm===1.1.24 -ruamel.yaml.clib===0.2.6 -doc8===0.10.1 -pymongo===4.0.1 -python-cloudkittyclient===4.5.0 -soupsieve===2.3.1 -sqlparse===0.4.2 -oslotest===4.5.0 -jsonpointer===2.2 -defusedxml===0.7.1 -netaddr===0.8.0 -pyghmi===1.5.34 -sphinxcontrib-blockdiag===2.0.0;python_version=='3.6' -sphinxcontrib-blockdiag===3.0.0;python_version=='3.8' -thrift===0.15.0 -gnocchiclient===7.0.7 -wcwidth===0.2.5 -sphinxcontrib.datatemplates===0.9.1 -jsonpath-rw===1.4.0 -prettytable===2.5.0;python_version=='3.6' -prettytable===3.1.1;python_version=='3.8' -vine===5.0.0 -pyroute2.nftables===0.6.6 -taskflow===4.6.4 -traceback2===1.4.0 -arrow===1.2.2 -semantic-version===2.9.0 -virtualbmc===2.2.1 -deprecation===2.1.0 -SQLAlchemy===1.4.31 -pyroute2===0.6.6 -google-auth===2.6.0 -kazoo===2.8.0 -pyspnego===0.5.0 -pyroute2.ethtool===0.6.6 -XStatic-roboto-fontface===0.5.0.0 -pyudev===0.23.2 -eventlet===0.33.0 -openstack-doc-tools===3.3.0 -oslo.messaging===12.13.0 -jira===3.1.1 -extras===1.0.0 -PyJWT===2.3.0 -typing_extensions===4.1.1 -XStatic-lodash===4.16.4.2 -zVMCloudConnector===1.4.1 -paramiko===2.8.1 -ifaddr===0.1.7 -reno===3.5.0 -imagesize===1.3.0 -pydot===1.4.2 -urllib3===1.26.8 -graphviz===0.19.1 -PyKMIP===0.10.0 -whereto===0.4.0 -pywbem===1.4.1 -python-subunit===1.4.0 -tornado===6.1 -pycparser===2.21 -mock===4.0.3 -PyYAML===6.0 -beautifulsoup4===4.10.0 -cached-property===1.5.2;python_version=='3.6' -os-net-config===15.1.0 -ovs===2.16.0 -cryptography===36.0.1 -httpcore===0.14.7 -URLObject===2.4.3 -nocasedict===1.0.2 -task-core===0.2.1 -psycopg2-binary===2.9.3 -openstack-release-test===3.3.1 -validations-libs===1.6.0 -pylxd===2.3.1 -pycryptodomex===3.14.1 -anyjson===0.3.3 -requests-mock===1.9.3 -os-apply-config===13.1.0 -prometheus-client===0.13.1 -oslosphinx===4.18.0 -gunicorn===20.1.0 -storpool===7.0.0 -textfsm===1.1.2 -python-3parclient===4.2.12 -unittest2===1.1.0 -django-compressor===2.4.1 -libvirt-python===8.0.0 -python-zunclient===4.4.0 -tzlocal===4.1 -sphinxcontrib-jsmath===1.0.1 -python-novaclient===17.7.0 -pact===1.12.0 -bcrypt===3.2.0 -os-client-config===2.1.0 -XStatic-Angular-Gettext===2.4.1.0 -Deprecated===1.2.13 -h11===0.12.0 -Pygments===2.11.2 -XStatic-Hogan===2.0.0.3 -XStatic-objectpath===1.2.1.0 -python-manilaclient===3.3.1 -sphinxcontrib-serializinghtml===1.1.5 -requests===2.27.1 -snowballstemmer===2.2.0 -Jinja2===3.0.3 -XStatic-Bootstrap-SCSS===3.4.1.0 -pyzabbix===1.0.0 -ptyprocess===0.7.0 -threadloop===1.0.2 -amqp===5.0.9 -ruamel.yaml===0.17.21 -websockify===0.10.0 -gssapi===1.7.3 -XStatic-JQuery.quicksearch===2.0.3.2 -mpmath===1.2.1 -python-binary-memcached===0.31.1 -django-debreach===2.0.1;python_version=='3.6' -django-debreach===2.1.0;python_version=='3.8' -sphinx-feature-classification===1.1.0 -django-pymemcache===1.0.0 -XStatic-JQuery-Migrate===1.2.1.2 -pytest-html===3.1.1 -appdirs===1.4.4 -tinyrpc===1.1.4 -google-auth-httplib2===0.1.0 -daiquiri===3.0.1 -influxdb===5.3.1 -# differs from https://github.com/openstack/requirements/blob/stable/yoga/upper-constraints.txt -funcparserlib===1.0.0a0 -passlib===1.7.4 -dib-utils===0.0.11 -cliff===3.10.1 -os-brick===5.2.2 -ansible-runner===2.1.2 -pytz-deprecation-shim===0.1.0.post0 -scp===0.14.4 -python-zaqarclient===2.3.0 -lockfile===0.12.2 -ldappool===3.0.0 -termcolor===1.1.0 -joblib===1.1.0 -google-api-python-client===2.38.0 -castellan===3.10.2 -oslo.versionedobjects===2.6.0 -ssh-python===0.9.0 -enmerkar===0.7.1 -webcolors===1.11.1 -aodhclient===2.4.1 -autobahn===21.2.1;python_version=='3.6' -autobahn===22.2.2;python_version=='3.8' -SQLAlchemy-Utils===0.38.2 -retryz===0.1.9 -pluggy===1.0.0 -coverage===6.2;python_version=='3.6' -coverage===6.3.2;python_version=='3.8' -freezegun===1.1.0 -toml===0.10.2 -pycdlib===1.12.0 -pyperclip===1.8.2 -cassandra-driver===3.25.0 -XStatic-Angular-Schema-Form===0.8.13.0 -gabbi===2.4.0 -nwdiag===2.0.0;python_version=='3.6' -nwdiag===3.0.0;python_version=='3.8' -XStatic-bootswatch===3.3.7.0 -pytest-xdist===2.5.0 -XStatic-JS-Yaml===3.8.1.0 -XStatic-term.js===0.0.7.0 -oslo.log===4.7.0 -nodeenv===1.6.0 -gossip===2.4.0 -suds-community===1.0.0 -importlib-metadata===4.11.1;python_version=='3.8' -importlib-metadata===4.8.3;python_version=='3.6' -oslo.middleware===4.5.1 -XStatic-mdi===1.6.50.2 -django-pyscss===2.0.2 -uritemplate===4.1.1 -docutils===0.17.1 -threadpoolctl===3.1.0 -os-ken===2.3.1 -ujson===4.3.0;python_version=='3.6' -ujson===5.1.0;python_version=='3.8' -selenium===3.141.0 -mypy===0.931 -mistral-lib===2.6.0 -dogtag-pki===10.7.4.1 -types-ipaddress===1.0.8 -XStatic-Angular-UUID===0.0.4.0 -purestorage===1.19.0 -sphinxcontrib-seqdiag===2.0.0;python_version=='3.6' -sphinxcontrib-seqdiag===3.0.0;python_version=='3.8' -os-win===5.6.0 -capacity===1.3.14 -retrying===1.3.3 -XStatic-Dagre===0.6.4.1 -platformdirs===2.4.0;python_version=='3.6' -platformdirs===2.5.1;python_version=='3.8' -pydotplus===2.0.2 -boto3===1.21.7 -jeepney===0.7.1 -stestr===3.2.1 -oslo.serialization===4.3.0 -warlock===1.3.3 -exabgp===4.2.17 -sphinxcontrib-httpdomain===1.8.0 -metalsmith===1.6.2 -s3transfer===0.5.2 -text-unidecode===1.3 -sphinxcontrib-svg2pdfconverter===1.2.0 -murano-pkg-check===0.3.0 -oslo.vmware===3.10.0 -XStatic-moment===2.8.4.3 -autopage===0.5.0 -sqlalchemy-migrate===0.13.0 -gitdb===4.0.9 -python-monascaclient===2.5.0 -ldap3===2.9.1 -requests-ntlm===1.1.0 -sphinx-rtd-theme===1.0.0 -automaton===2.5.0 -os-service-types===1.7.0 -keyring===23.4.1;python_version=='3.6' -keyring===23.5.0;python_version=='3.8' -elementpath===2.4.0 -testscenarios===0.5.0 -sphinxcontrib-pecanwsme===0.10.0 -sadisplay===0.4.9 -infinisdk===185.1.1 -packaging===21.3 -XStatic-Dagre-D3===0.4.17.0 -nose-exclude===0.5.0 -psutil===5.9.0 -py===1.11.0 -txaio===22.2.1 -elasticsearch===2.4.1 -django-nose===1.4.7 -asgiref===3.4.1;python_version=='3.6' -asgiref===3.5.0;python_version=='3.8' -XStatic-JQuery.TableSorter===2.14.5.2 -pifpaf===3.1.5 -pysmi===0.3.4 -blockdiag===2.0.1;python_version=='3.6' -blockdiag===3.0.0;python_version=='3.8' -testtools===2.5.0 -infi.dtypes.iqn===0.4.0 -XStatic-tv4===1.2.7.0 -XStatic-JSEncrypt===2.3.1.1 -python-cinderclient===8.3.0 -keystonemiddleware===9.4.0 -django-formtools===2.3 -XStatic-Spin===1.2.5.3 -tap-as-a-service===9.0.0 -os-traits===2.7.0 -typepy===1.3.0 -SecretStorage===3.3.1 -opentracing===2.4.0 -XStatic-Rickshaw===1.5.1.0 -iso8601===1.0.2 -tooz===2.10.1 -linecache2===1.0.0 -oauth2client===4.1.3 -idna===3.3 -yamlloader===1.1.0 -protobuf===3.19.4 -sushy===4.1.1 -python-neutronclient===7.8.0 -pika===1.2.0 -oslo.cache===2.10.1 -WebTest===3.0.0 -openstack.nose-plugin===0.11 -os-collect-config===13.1.0 -edgegrid-python===1.2.1 -python-qpid-proton===0.36.0 -python-octaviaclient===2.5.0 -pysaml2===7.1.1 -requests-oauthlib===1.3.1 -oslo.reports===2.3.0 -bitmath===1.3.3.1 -ceilometermiddleware===2.4.1 -python-nss===1.0.1 -testrepository===0.0.20 -sympy===1.9 -Logbook===1.5.3 -PyNaCl===1.5.0 -osc-lib===2.5.0 -async-generator===1.10;python_version=='3.6' -python-consul===1.1.0 -seqdiag===2.0.0;python_version=='3.6' -seqdiag===3.0.0;python_version=='3.8' -numpy===1.19.5;python_version=='3.6' -numpy===1.22.2;python_version=='3.8' -msgpack===1.0.3 -Sphinx===4.4.0 -oslo.config===8.8.0 -openstackdocstheme===2.4.0 -osc-placement===3.2.0 -zake===0.2.2 -python-rsdclient===1.0.2 -flux===1.3.5 -python-solumclient===3.5.0 -krb5===0.3.0 -PyMySQL===1.0.2 -uhashring===2.1 -kubernetes===22.6.0 -httplib2===0.20.4 -betamax===0.8.1 -construct===2.10.68 -pytest-metadata===1.11.0 -pyparsing===3.0.7 -geomet===0.2.1.post1 -distlib===0.3.4 -XStatic-Moment-Timezone===0.5.22.0 -dogpile.cache===1.1.5 -python-barbicanclient===5.3.0 -salt===3004 -api-object-schema===2.0.0 -WSME===0.11.0 -tomli===1.2.3;python_version=='3.6' -tomli===2.0.1;python_version=='3.8' -proboscis===1.2.6.0 -backports.zoneinfo===0.2.1 -oslo.upgradecheck===1.5.0 -stevedore===3.5.0 -pywinrm===0.4.2 -botocore===1.24.7 -xmltodict===0.12.0 -pyasn1===0.4.8 -directord===0.12.0 -oslo.rootwrap===6.3.1 -pyroute2.nslink===0.6.6 -Django===3.2.12 -pexpect===4.8.0 -contextvars===2.4 -cmd2===2.4.0 -python-json-logger===2.0.2 -redis===4.1.4 -jmespath===0.10.0 -click===8.0.4 -XStatic-smart-table===1.4.13.2 -kuryr-lib===2.5.0 -scrypt===0.8.20 -jsonpatch===1.32 -python-daemon===2.3.0 -types-cryptography===3.3.15 -typed-ast===1.5.2;python_version=='3.6' -os-testr===2.0.1 -cotyledon===1.7.3 -xattr===0.9.9 -systemd-python===234 -python-memcached===1.59 -openstacksdk===0.61.0 -six===1.16.0 -dulwich===0.20.32 -dfs-sdk===1.2.27 -sentinels===1.0.0 -kombu===5.1.0;python_version=='3.6' -kombu===5.2.3;python_version=='3.8' -pyroute2.ndb===0.6.6 -distro===1.7.0 -zstd===1.5.1.0 -yaql===2.0.0 -requestsexceptions===1.4.0 -testresources===2.0.1 -falcon===3.0.1 -etcd3gw===1.0.1 -Flask-RESTful===0.3.9 -GitPython===3.1.18;python_version=='3.6' -GitPython===3.1.27;python_version=='3.8' -python-ironicclient===4.11.0 -XStatic===1.0.2 -XStatic-Angular-FileUpload===12.0.4.0 -python-openstackclient===5.8.0 -pyzmq===21.0.2 -nocaselist===1.0.4 -oslo.db===11.2.0 -simplegeneric===0.8.1 -python-pcre===0.7 -yappi===1.3.3 -mbstrdecoder===1.1.0 -dataclasses===0.8;python_version=='3.6' -abclient===0.2.3 -pymemcache===3.5.1 -wrapt===1.13.3 -oslo.privsep===2.7.0 -sphinxcontrib-apidoc===0.3.0 -oslo.policy===3.11.0 -python-muranoclient===2.4.1 -hvac===0.11.2 -pyeclib===1.6.0 -wsgi-intercept===1.9.3 -ndg-httpsclient===0.5.1 -pyrsistent===0.18.0;python_version=='3.6' -pyrsistent===0.18.1;python_version=='3.8' -repoze.lru===0.7 -rfc3986===1.5.0 -tenacity===6.3.1 -pyroute2.core===0.6.6 -python-designateclient===4.5.1 -pyroute2.ipdb===0.6.6 -future===0.18.2 -Paste===3.5.0 -pytest-django===4.5.2 -jaeger-client===4.6.1;python_version=='3.6' -jaeger-client===4.8.0;python_version=='3.8' -XStatic-Json2yaml===0.1.1.0 -pyroute2.ipset===0.6.6 -boto===2.49.0 -os-vif===2.7.1 -hyperlink===21.0.0 -mitba===1.1.1 -python-masakariclient===7.2.0 -Werkzeug===2.0.3 -pyasn1-modules===0.2.8 -APScheduler===3.9.0.post1 -monotonic===1.6 -xmlschema===1.9.2 -python-troveclient===7.2.0 -etcd3===0.12.0 -cachez===0.1.2 -XStatic-Bootstrap-Datepicker===1.4.0.0 -CouchDB===1.2 -netifaces===0.11.0 -cachetools===4.2.4;python_version=='3.6' -cachetools===5.0.0;python_version=='3.8' -ws4py===0.5.1 -sphinxcontrib-qthelp===1.0.3 -keystoneauth1===4.5.0 -statsd===3.3.0 -XenAPI===2.14 -importlib-resources===5.4.0 -python-keystoneclient===4.4.0 -ceilometer===18.0.0 -diskimage-builder===3.20.3 -heat-translator===2.5.0 -python-magnumclient===3.6.0 -docker===5.0.3 -storops===1.2.10 -anyio===3.5.0 -XStatic-Angular-lrdragndrop===1.0.2.4 -ovsdbapp===1.15.2 -aniso8601===9.0.1 -rjsmin===1.1.0 -icalendar===4.0.9 -decorator===4.4.2;python_version=='3.6' -decorator===5.1.1;python_version=='3.8' -DateTimeRange===1.2.0 -cffi===1.15.0 -python-cyborgclient===1.7.0 -futurist===2.4.0 -jsonschema===3.2.0 -sphinxcontrib-devhelp===1.0.2 -python-blazarclient===3.4.1 -alembic===1.7.6 -execnet===1.9.0 -glance-store===3.0.0 -sphinxcontrib-programoutput===0.17 -storpool.spopenstack===3.1.0 -sphinx-testing===1.0.1 -dnspython===2.1.0 -oauthlib===3.2.0 -Babel===2.9.1 -logutils===0.3.5 -zipp===3.6.0;python_version=='3.6' -zipp===3.7.0;python_version=='3.8' -greenlet===1.1.2 -XStatic-Angular-Vis===4.16.0.0 -iniconfig===1.1.1 -confluent-kafka===1.8.2 -xvfbwrapper===0.2.9 -futures===3.0.5;python_version=='3.6' -tosca-parser===2.5.1 -charset-normalizer===2.0.12 -Flask===2.0.3 -httpx===0.22.0 -sqlalchemy-filters===0.12.0 -marathon===0.13.0 -sphinxcontrib-runcmd===0.2.0 -confspirator===0.3.0 -fasteners===0.17.3 -sortedcontainers===2.4.0 -python-linstor===1.13.0 -filelock===3.4.1;python_version=='3.6' -filelock===3.6.0;python_version=='3.8' -python-tackerclient===1.10.0 -python-heatclient===2.5.1 -kafka-python===2.0.2 -oslo.utils===4.12.3 -gitdb2===4.0.2 -requests-kerberos===0.14.0 -itsdangerous===2.0.1;python_version=='3.6' -itsdangerous===2.1.0;python_version=='3.8' -XStatic-jquery-ui===1.13.0.1 -monasca-statsd===2.4.0 -python-dateutil===2.8.2 -virtualenv===20.13.2 -colorama===0.4.4 -confetti===2.5.3 -ironic-lib===5.2.0 -pytz===2021.3 -pytest-forked===1.4.0 -XStatic-D3===3.5.17.0 -actdiag===2.0.0;python_version=='3.6' -actdiag===3.0.0;python_version=='3.8' -sysv-ipc===1.1.0 -sphinxcontrib-applehelp===1.0.2 -scikit-learn===0.24.2;python_version=='3.6' -scikit-learn===1.0.2;python_version=='3.8' -setuptools===59.6.0;python_version=='3.6' -setuptools===60.9.3;python_version=='3.8'