code: install_deps> python -I -m pip install boto3 coverage kubernetes mock pandas pytest pytest-cov code: freeze> python -m pip freeze --all code: boto3==1.43.9,botocore==1.43.9,certifi==2026.4.22,charset-normalizer==3.4.7,coverage==7.14.0,durationpy==0.10,exceptiongroup==1.3.1,idna==3.15,iniconfig==2.3.0,jmespath==1.1.0,kubernetes==35.0.0,mock==5.2.0,numpy==2.2.6,oauthlib==3.3.1,packaging==26.2,pandas==2.3.3,pip==26.1.1,pluggy==1.6.0,Pygments==2.20.0,pytest==9.0.3,pytest-cov==7.1.0,python-dateutil==2.9.0.post0,pytz==2026.2,PyYAML==6.0.3,requests==2.34.2,requests-oauthlib==2.0.0,s3transfer==0.17.0,setuptools==82.0.1,six==1.17.0,tomli==2.4.1,typing_extensions==4.15.0,tzdata==2026.2,urllib3==2.7.0,websocket-client==1.9.0 code: commands[0]> pip3 install /w/workspace/aiml-fw-athp-sdk-model-storage-pypi-verify-master Looking in indexes: https://nexus3.o-ran-sc.org/repository/PyPi/simple Processing ./. Installing build dependencies: started Installing build dependencies: finished with status 'done' Getting requirements to build wheel: started Getting requirements to build wheel: finished with status 'done' Preparing metadata (pyproject.toml): started Preparing metadata (pyproject.toml): finished with status 'done' Requirement already satisfied: boto3 in ./.tox/code/lib/python3.10/site-packages (from modelmetricsdk==0.4.0) (1.43.9) Requirement already satisfied: kubernetes in ./.tox/code/lib/python3.10/site-packages (from modelmetricsdk==0.4.0) (35.0.0) Requirement already satisfied: pyyaml in ./.tox/code/lib/python3.10/site-packages (from modelmetricsdk==0.4.0) (6.0.3) Requirement already satisfied: botocore<1.44.0,>=1.43.9 in ./.tox/code/lib/python3.10/site-packages (from boto3->modelmetricsdk==0.4.0) (1.43.9) Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in ./.tox/code/lib/python3.10/site-packages (from boto3->modelmetricsdk==0.4.0) (1.1.0) Requirement already satisfied: s3transfer<0.18.0,>=0.17.0 in ./.tox/code/lib/python3.10/site-packages (from boto3->modelmetricsdk==0.4.0) (0.17.0) Requirement already satisfied: python-dateutil<3.0.0,>=2.1 in ./.tox/code/lib/python3.10/site-packages (from botocore<1.44.0,>=1.43.9->boto3->modelmetricsdk==0.4.0) (2.9.0.post0) Requirement already satisfied: urllib3!=2.2.0,<3,>=1.25.4 in ./.tox/code/lib/python3.10/site-packages (from botocore<1.44.0,>=1.43.9->boto3->modelmetricsdk==0.4.0) (2.7.0) Requirement already satisfied: six>=1.5 in ./.tox/code/lib/python3.10/site-packages (from python-dateutil<3.0.0,>=2.1->botocore<1.44.0,>=1.43.9->boto3->modelmetricsdk==0.4.0) (1.17.0) Requirement already satisfied: certifi>=14.05.14 in ./.tox/code/lib/python3.10/site-packages (from kubernetes->modelmetricsdk==0.4.0) (2026.4.22) Requirement already satisfied: websocket-client!=0.40.0,!=0.41.*,!=0.42.*,>=0.32.0 in ./.tox/code/lib/python3.10/site-packages (from kubernetes->modelmetricsdk==0.4.0) (1.9.0) Requirement already satisfied: requests in ./.tox/code/lib/python3.10/site-packages (from kubernetes->modelmetricsdk==0.4.0) (2.34.2) Requirement already satisfied: requests-oauthlib in ./.tox/code/lib/python3.10/site-packages (from kubernetes->modelmetricsdk==0.4.0) (2.0.0) Requirement already satisfied: durationpy>=0.7 in ./.tox/code/lib/python3.10/site-packages (from kubernetes->modelmetricsdk==0.4.0) (0.10) Requirement already satisfied: charset_normalizer<4,>=2 in ./.tox/code/lib/python3.10/site-packages (from requests->kubernetes->modelmetricsdk==0.4.0) (3.4.7) Requirement already satisfied: idna<4,>=2.5 in ./.tox/code/lib/python3.10/site-packages (from requests->kubernetes->modelmetricsdk==0.4.0) (3.15) Requirement already satisfied: oauthlib>=3.0.0 in ./.tox/code/lib/python3.10/site-packages (from requests-oauthlib->kubernetes->modelmetricsdk==0.4.0) (3.3.1) Building wheels for collected packages: modelmetricsdk Building wheel for modelmetricsdk (pyproject.toml): started Building wheel for modelmetricsdk (pyproject.toml): finished with status 'done' Created wheel for modelmetricsdk: filename=modelmetricsdk-0.4.0-py3-none-any.whl size=15638 sha256=328af7977eca603e4de28dab605626203b4d650d24dee8ecddde86e9a8eebe38 Stored in directory: /home/jenkins/.cache/pip/wheels/85/75/0b/63953d427445a57d586cb6006f57b4ec8c6a5e18dd367ee907 Successfully built modelmetricsdk Installing collected packages: modelmetricsdk Successfully installed modelmetricsdk-0.4.0 code: commands[1]> pytest --cov-report term-missing --cov-report xml --cov-report html --cov-fail-under=30 --junitxml=/tmp/tests.xml --cov=/w/workspace/aiml-fw-athp-sdk-model-storage-pypi-verify-master/modelmetricsdk/ ============================= test session starts ============================== platform linux -- Python 3.10.6, pytest-9.0.3, pluggy-1.6.0 cachedir: .tox/code/.pytest_cache rootdir: /w/workspace/aiml-fw-athp-sdk-model-storage-pypi-verify-master configfile: pyproject.toml plugins: cov-7.1.0 collected 22 items test/test_model_metrics_sdk.py ...................... [100%] ---------------------- generated xml file: /tmp/tests.xml ---------------------- ================================ tests coverage ================================ _______________ coverage: platform linux, python 3.10.6-final-0 ________________ Name Stmts Miss Cover Missing ----------------------------------------------------------------------- modelmetricsdk/__init__.py 0 0 100% modelmetricsdk/adapters/__init__.py 0 0 100% modelmetricsdk/adapters/base_adapter.py 11 11 0% 18-94 modelmetricsdk/adapters/s3_adapter.py 61 61 0% 18-171 modelmetricsdk/artifact_manager.py 26 26 0% 18-99 modelmetricsdk/model_metrics_sdk.py 192 23 88% 102, 156-158, 163-165, 189-191, 197-199, 251, 253, 321-323, 354-355, 360-363 modelmetricsdk/sdk_exception.py 4 0 100% modelmetricsdk/singleton_manager.py 40 1 98% 81 modelmetricsdk/storage_factory.py 7 7 0% 18-53 ----------------------------------------------------------------------- TOTAL 341 129 62% Coverage HTML written to dir htmlcov Coverage XML written to file coverage.xml Required test coverage of 30% reached. Total coverage: 62.17% ============================== 22 passed in 2.66s ============================== code: commands[2]> coverage xml -i Wrote XML report to coverage.xml code: OK ✔ in 44.59 seconds docs: install_deps> python -I -m pip install -r /w/workspace/aiml-fw-athp-sdk-model-storage-pypi-verify-master/docs/requirements-docs.txt docs: freeze> python -m pip freeze --all docs: alabaster==1.0.0,attrs==26.1.0,babel==2.18.0,blockdiag==3.0.0,certifi==2026.4.22,charset-normalizer==3.4.7,contourpy==1.3.2,cycler==0.12.1,docutils==0.21.2,fonttools==4.63.0,funcparserlib==2.0.0a0,future==1.0.0,idna==3.15,imagesize==2.0.0,Jinja2==3.1.6,jsonschema==3.2.0,kiwisolver==1.5.0,lfdocs_conf==0.10.0,MarkupSafe==3.0.3,matplotlib==3.10.9,numpy==2.2.6,nwdiag==3.0.0,packaging==26.2,pillow==12.2.0,pip==26.1.1,Pygments==2.20.0,pyparsing==3.3.2,pyrsistent==0.20.0,python-dateutil==2.9.0.post0,PyYAML==6.0.3,requests==2.34.2,requests-file==1.5.1,seqdiag==3.0.0,setuptools==82.0.1,six==1.17.0,snowballstemmer==3.0.1,Sphinx==8.1.3,sphinx-bootstrap-theme==0.8.1,sphinx-data-viewer==0.1.5,sphinx-tabs==3.5.0,sphinx_rtd_theme==3.1.0,sphinxcontrib-applehelp==2.0.0,sphinxcontrib-blockdiag==3.0.0,sphinxcontrib-devhelp==2.0.0,sphinxcontrib-htmlhelp==2.1.0,sphinxcontrib-httpdomain==2.0.0,sphinxcontrib-jquery==4.1,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-needs==0.7.9,sphinxcontrib-nwdiag==2.0.0,sphinxcontrib-plantuml==0.31,sphinxcontrib-qthelp==2.0.0,sphinxcontrib-seqdiag==3.0.0,sphinxcontrib-serializinghtml==2.0.0,sphinxcontrib-swaggerdoc==0.1.7,tomli==2.4.1,urllib3==2.7.0,webcolors==25.10.0 docs: commands[0]> sphinx-build -W -b html -n -d /w/workspace/aiml-fw-athp-sdk-model-storage-pypi-verify-master/.tox/docs/tmp/doctrees ./docs/ /w/workspace/aiml-fw-athp-sdk-model-storage-pypi-verify-master/docs/_build/html Running Sphinx v8.1.3 loading translations [en]... done making output directory... done Converting `source_suffix = '.rst'` to `source_suffix = {'.rst': 'restructuredtext'}`. loading intersphinx inventory 'aimlfw-dep' from https://docs.o-ran-sc.org/projects/o-ran-sc-aiml-fw-aimlfw-dep/en/latest/objects.inv ... building [mo]: targets for 0 po files that are out of date writing output... building [html]: targets for 4 source files that are out of date updating environment: [new config] 4 added, 0 changed, 0 removed reading sources... [ 25%] index reading sources... [ 50%] installation-guide reading sources... [ 75%] overview reading sources... [100%] release-notes looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets... copying static files... Writing evaluated template result to /w/workspace/aiml-fw-athp-sdk-model-storage-pypi-verify-master/docs/_build/html/_static/documentation_options.js Writing evaluated template result to /w/workspace/aiml-fw-athp-sdk-model-storage-pypi-verify-master/docs/_build/html/_static/basic.css Writing evaluated template result to /w/workspace/aiml-fw-athp-sdk-model-storage-pypi-verify-master/docs/_build/html/_static/language_data.js Writing evaluated template result to /w/workspace/aiml-fw-athp-sdk-model-storage-pypi-verify-master/docs/_build/html/_static/js/versions.js copying static files: done copying extra files... copying extra files: done copying assets: done writing output... [ 25%] index writing output... [ 50%] installation-guide writing output... [ 75%] overview writing output... [100%] release-notes generating indices... genindex done highlighting module code... writing additional pages... search done dumping search index in English (code: en)... done dumping object inventory... done build succeeded. The HTML pages are in docs/_build/html. docs: commands[1]> echo 'Generated docs available in /w/workspace/aiml-fw-athp-sdk-model-storage-pypi-verify-master/docs/_build/html' Generated docs available in /w/workspace/aiml-fw-athp-sdk-model-storage-pypi-verify-master/docs/_build/html docs: OK ✔ in 36.81 seconds docs-linkcheck: install_deps> python -I -m pip install -r /w/workspace/aiml-fw-athp-sdk-model-storage-pypi-verify-master/docs/requirements-docs.txt docs-linkcheck: freeze> python -m pip freeze --all docs-linkcheck: alabaster==1.0.0,attrs==26.1.0,babel==2.18.0,blockdiag==3.0.0,certifi==2026.4.22,charset-normalizer==3.4.7,contourpy==1.3.2,cycler==0.12.1,docutils==0.21.2,fonttools==4.63.0,funcparserlib==2.0.0a0,future==1.0.0,idna==3.15,imagesize==2.0.0,Jinja2==3.1.6,jsonschema==3.2.0,kiwisolver==1.5.0,lfdocs_conf==0.10.0,MarkupSafe==3.0.3,matplotlib==3.10.9,numpy==2.2.6,nwdiag==3.0.0,packaging==26.2,pillow==12.2.0,pip==26.1.1,Pygments==2.20.0,pyparsing==3.3.2,pyrsistent==0.20.0,python-dateutil==2.9.0.post0,PyYAML==6.0.3,requests==2.34.2,requests-file==1.5.1,seqdiag==3.0.0,setuptools==82.0.1,six==1.17.0,snowballstemmer==3.0.1,Sphinx==8.1.3,sphinx-bootstrap-theme==0.8.1,sphinx-data-viewer==0.1.5,sphinx-tabs==3.5.0,sphinx_rtd_theme==3.1.0,sphinxcontrib-applehelp==2.0.0,sphinxcontrib-blockdiag==3.0.0,sphinxcontrib-devhelp==2.0.0,sphinxcontrib-htmlhelp==2.1.0,sphinxcontrib-httpdomain==2.0.0,sphinxcontrib-jquery==4.1,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-needs==0.7.9,sphinxcontrib-nwdiag==2.0.0,sphinxcontrib-plantuml==0.31,sphinxcontrib-qthelp==2.0.0,sphinxcontrib-seqdiag==3.0.0,sphinxcontrib-serializinghtml==2.0.0,sphinxcontrib-swaggerdoc==0.1.7,tomli==2.4.1,urllib3==2.7.0,webcolors==25.10.0 docs-linkcheck: commands[0]> sphinx-build -W -b linkcheck -d /w/workspace/aiml-fw-athp-sdk-model-storage-pypi-verify-master/.tox/docs-linkcheck/tmp/doctrees ./docs/ /w/workspace/aiml-fw-athp-sdk-model-storage-pypi-verify-master/docs/_build/linkcheck Running Sphinx v8.1.3 loading translations [en]... done making output directory... done Converting `source_suffix = '.rst'` to `source_suffix = {'.rst': 'restructuredtext'}`. loading intersphinx inventory 'aimlfw-dep' from https://docs.o-ran-sc.org/projects/o-ran-sc-aiml-fw-aimlfw-dep/en/latest/objects.inv ... building [mo]: targets for 0 po files that are out of date writing output... building [linkcheck]: targets for 4 source files that are out of date updating environment: [new config] 4 added, 0 changed, 0 removed reading sources... [ 25%] index reading sources... [ 50%] installation-guide reading sources... [ 75%] overview reading sources... [100%] release-notes looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets... copying assets: done writing output... [ 25%] index writing output... [ 50%] installation-guide writing output... [ 75%] overview writing output... [100%] release-notes (installation-guide: line 39) ok https://docs.o-ran-sc.org/projects/o-ran-sc-aiml-fw-aimlfw-dep/en/latest/index.html build succeeded. Look for any errors in the above output or in docs/_build/linkcheck/output.txt code: OK (44.59=setup[35.84]+cmd[4.43,4.03,0.30] seconds) docs: OK (36.81=setup[35.13]+cmd[1.67,0.01] seconds) docs-linkcheck: OK (31.02=setup[29.69]+cmd[1.33] seconds) congratulations :) (112.47 seconds)