diff --git a/.github/workflows/build-and-push-demo-pipeline.yaml b/.github/workflows/build-and-push-demo-pipeline.yaml index 66f6acd0..043042dc 100644 --- a/.github/workflows/build-and-push-demo-pipeline.yaml +++ b/.github/workflows/build-and-push-demo-pipeline.yaml @@ -2,7 +2,7 @@ name: Build and push demo pipeline image on: schedule: - - cron: '0 4 * * *' # 04:00 AM UTC every day + - cron: '0 2 * * 0' # 02:00 AM UTC every Sunday jobs: build-and-push-demo: @@ -17,7 +17,7 @@ jobs: - name: Checkout code uses: actions/checkout@v3 with: - ref: develop # @TODO remove it later + ref: main - name: Get current date id: date diff --git a/.github/workflows/build-on-change-linux-bare.yaml b/.github/workflows/build-on-change-linux-bare.yaml index 1e7ccc2d..ea021452 100644 --- a/.github/workflows/build-on-change-linux-bare.yaml +++ b/.github/workflows/build-on-change-linux-bare.yaml @@ -5,7 +5,6 @@ on: pull_request: branches: - main - - develop # can be removed on main merge paths: # we only include paths critical for building to avoid unnecessary runs - src/** - include/** @@ -20,7 +19,6 @@ on: push: branches: - main - - develop # can be removed on main merge paths: # we only include paths critical for building to avoid unnecessary runs - src/** - include/** @@ -140,21 +138,21 @@ jobs: pip install -e ${{ github.workspace }}/qc_framework mkdir "/home/$(whoami)/odr_out" - pip install asam-qc-opendrive@git+https://github.com/asam-ev/qc-opendrive@develop + pip install asam-qc-opendrive@git+https://github.com/asam-ev/qc-opendrive@main qc_runtime --config="${{ github.workspace }}/.github/workflows/linux-files/odr_config.xml" --manifest="${{ github.workspace }}/.github/workflows/linux-manifest/framework.json" --working_dir="/home/$(whoami)/odr_out" if [ ! -f "/home/$(whoami)/odr_out/xodr_bundle_report.xqar" ]; then echo "Error: Odr output does not exist."; exit 1; fi if [ ! -f "/home/$(whoami)/odr_out/Result.xqar" ]; then echo "Error: Odr output does not exist."; exit 1; fi if [ ! -f "/home/$(whoami)/odr_out/Report.txt" ]; then echo "Error: Odr output does not exist."; exit 1; fi mkdir "/home/$(whoami)/osc_out" - pip install asam-qc-openscenarioxml@git+https://github.com/asam-ev/qc-openscenarioxml@develop + pip install asam-qc-openscenarioxml@git+https://github.com/asam-ev/qc-openscenarioxml@main qc_runtime --config="/home/$(whoami)/work/qc-framework/qc-framework/.github/workflows/linux-files/osc_config.xml" --manifest="/home/$(whoami)/work/qc-framework/qc-framework/.github/workflows/linux-manifest/framework.json" --working_dir="/home/$(whoami)/osc_out" if [ ! -f "/home/$(whoami)/osc_out/xosc_bundle_report.xqar" ]; then echo "Error: Osc output does not exist."; exit 1; fi if [ ! -f "/home/$(whoami)/osc_out/Result.xqar" ]; then echo "Error: Osc output does not exist."; exit 1; fi if [ ! -f "/home/$(whoami)/osc_out/Report.txt" ]; then echo "Error: Osc output does not exist."; exit 1; fi mkdir "/home/$(whoami)/otx_out" - pip install asam-qc-otx@git+https://github.com/asam-ev/qc-otx@develop + pip install asam-qc-otx@git+https://github.com/asam-ev/qc-otx@main qc_runtime --config="/home/$(whoami)/work/qc-framework/qc-framework/.github/workflows/linux-files/otx_config.xml" --manifest="/home/$(whoami)/work/qc-framework/qc-framework/.github/workflows/linux-manifest/framework.json" --working_dir="/home/$(whoami)/otx_out" if [ ! -f "/home/$(whoami)/otx_out/otx_bundle_report.xqar" ]; then echo "Error: Otx output does not exist."; exit 1; fi if [ ! -f "/home/$(whoami)/otx_out/Result.xqar" ]; then echo "Error: Otx output does not exist."; exit 1; fi diff --git a/.github/workflows/build-on-change-linux-docker.yaml b/.github/workflows/build-on-change-linux-docker.yaml index 68d01898..cfe08625 100644 --- a/.github/workflows/build-on-change-linux-docker.yaml +++ b/.github/workflows/build-on-change-linux-docker.yaml @@ -5,7 +5,6 @@ on: pull_request: branches: - main - - develop # can be removed on main merge paths: # we only include paths critical for building to avoid unnecessary runs - src/** - include/** @@ -20,7 +19,6 @@ on: push: branches: - main - - develop # can be removed on main merge paths: # we only include paths critical for building to avoid unnecessary runs - src/** - include/** diff --git a/.github/workflows/build-on-change-windows.yaml b/.github/workflows/build-on-change-windows.yaml index cd66be15..63191813 100644 --- a/.github/workflows/build-on-change-windows.yaml +++ b/.github/workflows/build-on-change-windows.yaml @@ -5,7 +5,6 @@ on: pull_request: branches: - main - - develop # can be removed on main merge paths: # we only include paths critical for building to avoid unnecessary runs - src/** - include/** @@ -20,7 +19,6 @@ on: push: branches: - main - - develop # can be removed on main merge paths: # we only include paths critical for building to avoid unnecessary runs - src/** - include/** @@ -77,7 +75,7 @@ jobs: run: | Write-Output "Setting up Xerces-C++..." $xercesZip = "$env:WORKING_PATH\xerces-c-3.2.5.zip" - Invoke-WebRequest -Uri "https://dlcdn.apache.org/xerces/c/3/sources/xerces-c-3.2.5.zip" -OutFile $xercesZip + Invoke-WebRequest -Uri "https://archive.apache.org/dist/xerces/c/3/sources/xerces-c-3.2.5.zip" -OutFile $xercesZip Expand-Archive -Path $xercesZip -DestinationPath "$env:WORKING_PATH" cd "$env:WORKING_PATH\xerces-c-3.2.5" mkdir build @@ -177,21 +175,21 @@ jobs: pip install -e $env:WORKING_PATH\qc-framework\qc-framework\qc_framework mkdir "$env:WORKING_PATH\odr_out" - pip install asam-qc-opendrive@git+https://github.com/asam-ev/qc-opendrive@develop + pip install asam-qc-opendrive@git+https://github.com/asam-ev/qc-opendrive@main qc_runtime --config="$env:WORKING_PATH\qc-framework\qc-framework\.github\workflows\windows-files\odr_config.xml" --manifest="$env:WORKING_PATH\qc-framework\qc-framework\.github\workflows\windows-manifest\framework.json" --working_dir="$env:WORKING_PATH\odr_out" if (-not (Test-Path "$env:WORKING_PATH\odr_out\xodr_bundle_report.xqar")) { Throw "Error: Odr output does not exist." } if (-not (Test-Path "$env:WORKING_PATH\odr_out\Result.xqar")) { Throw "Error: Odr output does not exist." } if (-not (Test-Path "$env:WORKING_PATH\odr_out\Report.txt")) { Throw "Error: Odr output does not exist." } mkdir "$env:WORKING_PATH\osc_out" - pip install asam-qc-openscenarioxml@git+https://github.com/asam-ev/qc-openscenarioxml@develop + pip install asam-qc-openscenarioxml@git+https://github.com/asam-ev/qc-openscenarioxml@main qc_runtime --config="$env:WORKING_PATH\qc-framework\qc-framework\.github\workflows\windows-files\osc_config.xml" --manifest="$env:WORKING_PATH\qc-framework\qc-framework\.github\workflows\windows-manifest\framework.json" --working_dir="$env:WORKING_PATH\osc_out" if (-not (Test-Path "$env:WORKING_PATH\osc_out\xosc_bundle_report.xqar")) { Throw "Error: Osc output does not exist." } if (-not (Test-Path "$env:WORKING_PATH\osc_out\Result.xqar")) { Throw "Error: Osc output does not exist." } if (-not (Test-Path "$env:WORKING_PATH\osc_out\Report.txt")) { Throw "Error: Odr output does not exist." } mkdir "$env:WORKING_PATH\otx_out" - pip install asam-qc-otx@git+https://github.com/asam-ev/qc-otx@develop + pip install asam-qc-otx@git+https://github.com/asam-ev/qc-otx@main qc_runtime --config="$env:WORKING_PATH\qc-framework\qc-framework\.github\workflows\windows-files\otx_config.xml" --manifest="$env:WORKING_PATH\qc-framework\qc-framework\.github\workflows\windows-manifest\framework.json" --working_dir="$env:WORKING_PATH\otx_out" if (-not (Test-Path "$env:WORKING_PATH\otx_out\otx_bundle_report.xqar")) { Throw "Error: Otx output does not exist." } if (-not (Test-Path "$env:WORKING_PATH\otx_out\Result.xqar")) { Throw "Error: Otx output does not exist." } diff --git a/.github/workflows/windows-manifest/framework.json b/.github/workflows/windows-manifest/framework.json index 721cc919..3e03b48d 100644 --- a/.github/workflows/windows-manifest/framework.json +++ b/.github/workflows/windows-manifest/framework.json @@ -6,4 +6,4 @@ "D:\\a\\qc-framework\\qc-framework\\.github\\workflows\\windows-manifest\\result_pooling.json", "D:\\a\\qc-framework\\qc-framework\\.github\\workflows\\windows-manifest\\text_report.json" ] -} +} \ No newline at end of file diff --git a/.github/workflows/windows-manifest/odr.json b/.github/workflows/windows-manifest/odr.json index beecc623..541cab0b 100644 --- a/.github/workflows/windows-manifest/odr.json +++ b/.github/workflows/windows-manifest/odr.json @@ -4,7 +4,7 @@ "name": "xodrBundle", "exec_type": "executable", "module_type": "checker_bundle", - "exec_command": "cd %ASAM_QC_FRAMEWORK_WORKING_DIR% && qc_opendrive -c %ASAM_QC_FRAMEWORK_CONFIG_FILE%" + "exec_command": "cd \"%ASAM_QC_FRAMEWORK_WORKING_DIR%\" && qc_opendrive -c \"%ASAM_QC_FRAMEWORK_CONFIG_FILE%\"" } ] -} +} \ No newline at end of file diff --git a/.github/workflows/windows-manifest/osc.json b/.github/workflows/windows-manifest/osc.json index 76f51a00..5a3f42b3 100644 --- a/.github/workflows/windows-manifest/osc.json +++ b/.github/workflows/windows-manifest/osc.json @@ -4,7 +4,7 @@ "name": "xoscBundle", "exec_type": "executable", "module_type": "checker_bundle", - "exec_command": "cd %ASAM_QC_FRAMEWORK_WORKING_DIR% && qc_openscenario -c %ASAM_QC_FRAMEWORK_CONFIG_FILE%" + "exec_command": "cd \"%ASAM_QC_FRAMEWORK_WORKING_DIR%\" && qc_openscenario -c \"%ASAM_QC_FRAMEWORK_CONFIG_FILE%\"" } ] -} +} \ No newline at end of file diff --git a/.github/workflows/windows-manifest/otx.json b/.github/workflows/windows-manifest/otx.json index 25f93158..1334de4c 100644 --- a/.github/workflows/windows-manifest/otx.json +++ b/.github/workflows/windows-manifest/otx.json @@ -4,7 +4,7 @@ "name": "otxBundle", "exec_type": "executable", "module_type": "checker_bundle", - "exec_command": "cd %ASAM_QC_FRAMEWORK_WORKING_DIR% && qc_otx -c %ASAM_QC_FRAMEWORK_CONFIG_FILE%" + "exec_command": "cd \"%ASAM_QC_FRAMEWORK_WORKING_DIR%\" && qc_otx -c \"%ASAM_QC_FRAMEWORK_CONFIG_FILE%\"" } ] -} +} \ No newline at end of file diff --git a/.github/workflows/windows-manifest/result_pooling.json b/.github/workflows/windows-manifest/result_pooling.json index c641b0d6..8c3adef4 100644 --- a/.github/workflows/windows-manifest/result_pooling.json +++ b/.github/workflows/windows-manifest/result_pooling.json @@ -4,7 +4,7 @@ "name": "ResultPooling", "exec_type": "executable", "module_type": "result_pooling", - "exec_command": "cd %ASAM_QC_FRAMEWORK_WORKING_DIR% && %ASAM_QC_FRAMEWORK_INSTALLATION_DIR%\\ResultPooling.exe %ASAM_QC_FRAMEWORK_WORKING_DIR% %ASAM_QC_FRAMEWORK_CONFIG_FILE%" + "exec_command": "cd \"%ASAM_QC_FRAMEWORK_WORKING_DIR%\" && %ASAM_QC_FRAMEWORK_INSTALLATION_DIR%\\ResultPooling.exe \"%ASAM_QC_FRAMEWORK_WORKING_DIR%\" \"%ASAM_QC_FRAMEWORK_CONFIG_FILE%\"" } ] -} +} \ No newline at end of file diff --git a/.github/workflows/windows-manifest/text_report.json b/.github/workflows/windows-manifest/text_report.json index 2a36e710..66371b73 100644 --- a/.github/workflows/windows-manifest/text_report.json +++ b/.github/workflows/windows-manifest/text_report.json @@ -4,7 +4,7 @@ "name": "TextReport", "exec_type": "executable", "module_type": "report_module", - "exec_command": "cd %ASAM_QC_FRAMEWORK_WORKING_DIR% && %ASAM_QC_FRAMEWORK_INSTALLATION_DIR%\\TextReport.exe %ASAM_QC_FRAMEWORK_CONFIG_FILE%" + "exec_command": "cd \"%ASAM_QC_FRAMEWORK_WORKING_DIR%\" && %ASAM_QC_FRAMEWORK_INSTALLATION_DIR%\\TextReport.exe \"%ASAM_QC_FRAMEWORK_CONFIG_FILE%\"" } ] -} +} \ No newline at end of file diff --git a/INSTALL.md b/INSTALL.md index 4496bdfd..7a977992 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -81,35 +81,145 @@ Binaries are tested on Ubuntu 20.04 and Ubuntu 22.04 ### Build on Windows -On Windows, an example build for the the dependency XercesC looks like this: +#### Prerequisites + +##### Install latest CMake + +https://www.google.com/search?client=firefox-b-d&q=cmake + +##### Install visual studio build tools + +From https://visualstudio.microsoft.com/it/downloads/?q=build+tools + +Based on the version downloaded at this step, you can use your build tools version in the commands below + +E.g. from `-G "Visual Studio 17 2022"` to `-G "Visual Studio 16 2019"` + +#### Install dependancies + + +##### Set environment variable + +``` +$env:WORKING_PATH="C:\Users\USER_WORKING_PATH" +``` + +##### Install gtest + +``` +Write-Output "Installing gtest..." + +git clone https://github.com/google/googletest.git -b release-1.10.0 +cd googletest +mkdir build +cd build +cmake -G "Visual Studio 17 2022" ` +-Dgtest_force_shared_crt=ON ` +-DCMAKE_INSTALL_PREFIX="$env:WORKING_PATH\gtest-Out" .. +cmake --build . --config Release +cmake --build . --config Release --target install + +Write-Output "Gtest installed." +``` + + +##### Install Xerces + + +``` +Write-Output "Setting up Xerces-C++..." -```bash -$env:WORKING_PATH=C:\Users\user\test $xercesZip = "$env:WORKING_PATH\xerces-c-3.2.5.zip" Invoke-WebRequest -Uri "https://dlcdn.apache.org/xerces/c/3/sources/xerces-c-3.2.5.zip" -OutFile $xercesZip Expand-Archive -Path $xercesZip -DestinationPath "$env:WORKING_PATH" cd "$env:WORKING_PATH\xerces-c-3.2.5" mkdir build cd build -cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="$env:WORKING_PATH\Xerces-Out" .. -cmake --build . --config Release -cmake --build . --config Release --target install +cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_INSTALL_PREFIX="$env:WORKING_PATH\Xerces-Out" .. +cmake --build . --config Debug +cmake --build . --config Debug --target install ``` -For Windows Visual Studio 16 2019 an example CMake call to build the framework -looks like this (call from the repository root): +#### Install qt -```bash -$ mkdir ../build -$ cmake -G "Visual Studio 16 2019" -A "x64" -B../build -S. ^ - -DCMAKE_INSTALL_PREFIX="" ^ - -DENABLE_FUNCTIONAL_TESTS=ON ^ - -DGTest_ROOT="" ^ - -DQt5_ROOT="" ^ - -DXercesC_ROOT="" -$ cmake --build ../build --target ALL_BUILD --config Release -$ ctest --test-dir ../build -C Release -$ cmake --install ../build +Download qt 15 source from + +https://www.qt.io/offline-installers + +And save its download location + +``` +$env:QT_DOWNLOAD_PATH=YOUR_DOWNLOAD_PATH +``` + +And extract it + +Then, following this - https://doc.qt.io/qt-5/windows-building.html + + +Create the file `qtvars.cmd` and place it in the qt5 download directory + +``` +REM Set up Microsoft Visual Studio 2017, where is amd64, x86, etc. +CALL "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64 +SET _ROOT="$env:QT_DOWNLOAD_PATH" +SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH% +REM Uncomment the below line when using a git checkout of the source repository +REM SET PATH=%_ROOT%\qtrepotools\bin;%PATH% +SET _ROOT= +``` + +Execute + +``` +cmd.exe /E:ON /V:ON /k "$env:QT_DOWNLOAD_PATH\qt5vars.cmd" +``` + +and + +``` +cd $env:QT_DOWNLOAD_PATH + +.\configure -prefix "$env:WORKING_PATH\Qt5-Out" -opensource -confirm-license -release -nomake tests -nomake examples -skip qt3d -skip qtcanvas3d -skip qtcharts -skip qtdatavis3d -skip qtdoc -skip qtgamepad -skip qtgraphicaleffects -skip qtimageformats -skip qtlocation -skip qtlottie -skip qtmacextras -skip qtmultimedia -skip qtnetworkauth -skip qtpurchasing -skip qtquick3d -skip qtquickcontrols -skip qtquickcontrols2 -skip qtremoteobjects -skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qtsvg -skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebglplugin -skip qtwebsockets -skip qtwebview -skip qtwinextras -skip qtx11extras -opengl desktop -no-icu -no-openssl -no-glib -no-dbus -no-sql-odbc -no-qml-debug -no-warnings-are-errors -no-iconv -optimize-size -ltcg -nomake examples +``` + +Now that the build configuration is done, you can build qt. To speed up the build process you can use `jom` tool [available here](https://wiki.qt.io/Jom). The tool can be downloaded from [this link](http://download.qt.io/official_releases/jom/jom.zip) + +To build with `jom` just run the command from the `$env:QT_DOWNLOAD_PATH` folder: + +``` +$env:JOM_DOWNLOAD_PATH/jom.exe +``` + +#### Build and install framework + +To build the framework you first need to clone the repo in a desired location: + +``` +$env:GIT_LOCATION=YOUR_DESIRED_GIT_CLONE_PATH +cd $env:GIT_LOCATION +git clone https://github.com/asam-ev/qc-framework.git +``` + +``` +Write-Output "Setting up QC-Framework..." + +cd "$env:GIT_LOCATION\qc-framework" +mkdir build + +cmake -H"$env:GIT_LOCATION\qc-framework" -S. -Bbuild ` +-G "Visual Studio 17 2022" -A x64 ` +-DCMAKE_INSTALL_PREFIX="$env:WORKING_PATH\QC-Framework-Out" ` +-DENABLE_FUNCTIONAL_TESTS="$env:TEST_ENABLED" ` +-DGTest_ROOT="$env:WORKING_PATH\gtest-Out" ` +-DQt5_ROOT="$env:WORKING_PATH\Qt5-Out" ` +-DXercesC_ROOT="$env:WORKING_PATH\Xerces-Out" + +cmake --build build --target ALL_BUILD --config Release + +cmake --install build + +Write-Output "All installations and setups are complete!" ``` With the following CMake values: @@ -160,11 +270,21 @@ conda activate .venv Python modules can be installed using `pip`. +**From PyPi** + ```bash -pip install asam-qc-framework@git+https://github.com/asam-ev/qc-framework@develop#subdirectory=qc_framework +pip install asam-qc-framework ``` -**Note:** The above command will install `asam-qc-framework` from the `develop` branch. If you want to install `asam-qc-framework` from another branch or tag, replace `@develop` with the desired branch or tag. It is also possible to install from a local directory. +**From GitHub repository** + +```bash +pip install asam-qc-framework@git+https://github.com/asam-ev/qc-framework@main#subdirectory=qc_framework +``` + +The above command will install `asam-qc-framework` from the `main` branch. If you want to install `asam-qc-framework` from another branch or tag, replace `@main` with the desired branch or tag. + +**From a local repository** ```bash pip install /home/user/qc-framework/qc_framework @@ -174,13 +294,23 @@ pip install /home/user/qc-framework/qc_framework Standard ASAM Checker Bundles are implemented in Python and can be installed using `pip`. -#### ASAM OpenDrive Checker Bundle +### ASAM OpenDrive Checker Bundle + +**From PyPi** ```bash -pip install asam-qc-opendrive@git+https://github.com/asam-ev/qc-opendrive@develop +pip install asam-qc-opendrive ``` -**Note:** The above command will install `asam-qc-opendrive` from the `develop` branch. If you want to install `asam-qc-opendrive` from another branch or tag, replace `@develop` with the desired branch or tag. It is also possible to install from a local directory. +**From GitHub repository** + +```bash +pip install asam-qc-opendrive@git+https://github.com/asam-ev/qc-opendrive@main +``` + +The above command will install `asam-qc-opendrive` from the `main` branch. If you want to install `asam-qc-opendrive` from another branch or tag, replace `@main` with the desired branch or tag. + +**From a local repository** ```bash pip install /home/user/qc-opendrive @@ -192,13 +322,23 @@ To test the installation: qc_opendrive --help ``` -#### ASAM OpenScenario XML Checker Bundle +### ASAM OpenScenario XML Checker Bundle + +**From PyPi** ```bash -pip install asam-qc-openscenarioxml@git+https://github.com/asam-ev/qc-openscenarioxml@develop +pip install asam-qc-openscenarioxml ``` -**Note:** The above command will install `asam-qc-openscenarioxml` from the `develop` branch. If you want to install `asam-qc-openscenarioxml` from another branch or tag, replace `@develop` with the desired branch or tag. It is also possible to install from a local directory. +**From GitHub repository** + +```bash +pip install asam-qc-openscenarioxml@git+https://github.com/asam-ev/qc-openscenarioxml@main +``` + +The above command will install `asam-qc-openscenarioxml` from the `main` branch. If you want to install `asam-qc-openscenarioxml` from another branch or tag, replace `@main` with the desired branch or tag. + +**From a local repository** ```bash pip install /home/user/qc-openscenarioxml @@ -210,13 +350,23 @@ To test the installation: qc_openscenario --help ``` -#### ASAM OTX Checker Bundle +### ASAM OTX Checker Bundle + +**From PyPi** ```bash -pip install asam-qc-otx@git+https://github.com/asam-ev/qc-otx@develop +pip install asam-qc-otx ``` -**Note:** The above command will install `asam-qc-otx` from the `develop` branch. If you want to install `asam-qc-otx` from another branch or tag, replace `@develop` with the desired branch or tag. It is also possible to install from a local directory. +**From GitHub repository** + +```bash +pip install asam-qc-otx@git+https://github.com/asam-ev/qc-otx@main +``` + +The above command will install `asam-qc-otx` from the `main` branch. If you want to install `asam-qc-otx` from another branch or tag, replace `@main` with the desired branch or tag. + +**From a local repository** ```bash pip install /home/user/qc-otx diff --git a/README.md b/README.md index 7632fcae..5ce79b62 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ with this file, You can obtain one at https://mozilla.org/MPL/2.0/. # ![Logo Image](doc/manual/images/qc_framework_logo.drawio.png) +**Disclaimer**: The current version is a release candidate. The first official release is expected to be in November. + The ASAM Quality Checker Framework is designed for quality assessment of the ASAM standards like [OpenDRIVE](https://www.asam.net/standards/detail/opendrive), @@ -76,8 +78,8 @@ An architecture overview and documentation is provided in the ## Using Docker-based demo pipeline A [Docker-based demo pipeline](doc/manual/demo_pipeline.md) is provided to help users try out the latest development -of the framework, as well as the [OpenDrive](https://github.com/asam-ev/qc-opendrive/tree/develop) -and [OpenScenario XML](https://github.com/asam-ev/qc-openscenarioxml/tree/develop) checker bundles. +of the framework, as well as the [OpenDrive](https://github.com/asam-ev/qc-opendrive) +and [OpenScenario XML](https://github.com/asam-ev/qc-openscenarioxml) checker bundles. ## Build and run the framework locally diff --git a/doc/changelog.txt b/doc/changelog.txt index bc38c89f..85cedc06 100644 --- a/doc/changelog.txt +++ b/doc/changelog.txt @@ -1,42 +1,22 @@ +ASAM Quality Checker Framework - Change Log File +============================================= + +v1.0.0-rc.1 +========================================== +- Configuration and result file formats for checker bundles. +- Python and C++ base libraries for implementing checker bundles. +- Manifest file mechanism to register checker bundles. +- Resul pooling to combine results from different checker bundles. +- Text report to generate human-readable report from result files. +- Report GUI to interact with result files. +- Esmini viewer integrated in Report GUI to visualize results from OpenDrive checker bundles. +- Runtime for executing the framework. + QC4OpenX QChecker for OpenX - Change Log File ============================================= This file tracks the changes made within the QC4OpenX project. -v2.0.0-beta -========================================== -- The QC Framework is now standards agnostic -- Remove unnecessary dependencies -- Add Python Base Library -- Update C++ Base Library -- Add CI/CD -- Add a demo pipeline -- Simplify the architecture by splitting runtime module and configuration GUI -- Add a new runtime module in Python -- Support the manifest file mechanism to register checker bundles in any programming language with the framework. -- Update configuration file format and result file format to include necessary information -- Support the rule UID concept in the framework -- Add new features to result pooling - - Order the results - - Support severity level - - Support result filtering - - Resolve naming conflict -- Improve ReportGUI - - Support arbitrary ASCII-based input files - - Remove the 5MB file size limit - - Improve usability (drag and drop to open, refresh after loading a new result file) - - Support domain specific information - - Add Esmini Viewer plugin to visualize issues in OpenDrive files -- Improve Text Report - - Add more information to Text Report - - Support domain-specific information -- Add support for automatic documentation generation in the Python Base Library -- Improve documentation -- Add three checker bundles - - OpenDrive checker bundle: https://github.com/asam-ev/qc-opendrive - - OpenScenario XML checker bundle: https://github.com/asam-ev/qc-openscenarioxml - - OTX checker bundle: https://github.com/asam-ev/qc-otx - v1.0.0 First open source compliant version ========================================== - ConfigGUI executable for checker configuration diff --git a/doc/manual/demo_pipeline.md b/doc/manual/demo_pipeline.md index 66aec641..0a828d77 100644 --- a/doc/manual/demo_pipeline.md +++ b/doc/manual/demo_pipeline.md @@ -145,7 +145,7 @@ Some OpenDrive and OpenScenario XML test files are available to try out. ### Update to the latest version -The demo pipeline is built every day at 4am UTC. To update the demo pipeline on your local machine, use the following command. +The demo pipeline is built every day at 2am UTC. To update the demo pipeline on your local machine, use the following command. ``` docker pull ghcr.io/asam-ev/qc-framework:demo-pipeline-latest diff --git a/doc/manual/esmini_viewer_plugin.md b/doc/manual/esmini_viewer_plugin.md index 381bce1b..59781aff 100644 --- a/doc/manual/esmini_viewer_plugin.md +++ b/doc/manual/esmini_viewer_plugin.md @@ -58,6 +58,12 @@ Note that not all issues contain a location. For example, issues related to XML ## Additional information +#### Camera control + +See [esmini documentation](https://esmini.github.io/#_replayer) for a complete list of camera models and how to switch between different camera models. + +For example, to navigate freely around the map, press 4 to switch to the Terrain camera model, and then hold down the middle mouse button to move around. Press 1 to return to the issue location.Press H for more help. + #### Which OpenDRIVE file to render In order to establish which OpenDRIVE file to render in esmini, the plugin reads the `InputFile` param from the result file: diff --git a/doc/manual/python_qc_framework.md b/doc/manual/python_qc_framework.md index 5b8a110e..1112c339 100644 --- a/doc/manual/python_qc_framework.md +++ b/doc/manual/python_qc_framework.md @@ -16,11 +16,21 @@ The runtime module execute the following steps: The ASAM QC Framework can be installed using pip. +**From PyPi** + +```bash +pip install asam-qc-framework +``` + +**From GitHub Repository** + ```bash -pip install asam-qc-framework@git+https://github.com/asam-ev/qc-framework@develop#subdirectory=qc_framework +pip install asam-qc-framework@git+https://github.com/asam-ev/qc-framework@main#subdirectory=qc_framework ``` -**Note:** The above command will install `asam-qc-framework` from the `develop` branch. If you want to install `asam-qc-framework` from another branch or tag, replace `@develop` with the desired branch or tag. It is also possible to install from a local directory. +The above command will install `asam-qc-framework` from the `main` branch. If you want to install `asam-qc-framework` from another branch or tag, replace `@main` with the desired branch or tag. + +**From a local repository** ```bash # From reporsitory root diff --git a/doc/manual/writing_user_defined_modules.md b/doc/manual/writing_user_defined_modules.md index 268f7325..9eeaa3ca 100644 --- a/doc/manual/writing_user_defined_modules.md +++ b/doc/manual/writing_user_defined_modules.md @@ -20,7 +20,7 @@ A Checker Bundle should accept a configuration file and output a result file (se It is recommended to use the Python Base Library if possible as it contains the most advanced development. The C++ Base Library is complete in terms of functionality, but it is not as easy to use as the Python Base Library. A minimal example of using the Python Base Library to implement a Checker Bundle: -* https://github.com/asam-ev/qc-baselib-py/tree/develop/examples/json_validator +* https://github.com/asam-ev/qc-baselib-py/tree/main/examples/json_validator A minimal example of using the C++ Base Library to implement a Checker Bundle: * https://github.com/asam-ev/qc-framework/tree/main/examples/checker_bundle_example @@ -62,7 +62,7 @@ A Report Module should accept a configuration file which define the result xqar Similar to Checker Bundle, it is recommended to use the [Python Base Library](https://github.com/asam-ev/qc-baselib-py) to implement a Report Module. A minimal example of using the Python Base Library to implement a Report Module: -* https://github.com/asam-ev/qc-baselib-py/tree/develop/examples/report_module_text +* https://github.com/asam-ev/qc-baselib-py/tree/main/examples/report_module_text Here are some other advanced example Report Modules using the C++ Base Library: * https://github.com/asam-ev/qc-framework/tree/main/src/report_modules/report_module_text diff --git a/docker/Dockerfile.linux b/docker/Dockerfile.linux index 6b9a72b5..dfe694e2 100644 --- a/docker/Dockerfile.linux +++ b/docker/Dockerfile.linux @@ -52,9 +52,9 @@ RUN echo "Building framework..." && \ RUN python3 -m pip install --no-cache-dir -r /app/demo_pipeline/requirements.txt && \ python3 -m pip install --no-cache-dir /app/framework/qc_framework && \ - python3 -m pip install asam-qc-opendrive@git+https://github.com/asam-ev/qc-opendrive@develop && \ - python3 -m pip install asam-qc-openscenarioxml@git+https://github.com/asam-ev/qc-openscenarioxml@develop && \ - python3 -m pip install asam-qc-otx@git+https://github.com/asam-ev/qc-otx@develop + python3 -m pip install asam-qc-opendrive@git+https://github.com/asam-ev/qc-opendrive@main && \ + python3 -m pip install asam-qc-openscenarioxml@git+https://github.com/asam-ev/qc-openscenarioxml@main && \ + python3 -m pip install asam-qc-otx@git+https://github.com/asam-ev/qc-otx@main # Framework test stage diff --git a/manifest_examples/windows/qc_opendrive.json b/manifest_examples/windows/qc_opendrive.json index e42c0dae..541cab0b 100755 --- a/manifest_examples/windows/qc_opendrive.json +++ b/manifest_examples/windows/qc_opendrive.json @@ -4,7 +4,7 @@ "name": "xodrBundle", "exec_type": "executable", "module_type": "checker_bundle", - "exec_command": "cd %ASAM_QC_FRAMEWORK_WORKING_DIR% && qc_opendrive -c %ASAM_QC_FRAMEWORK_CONFIG_FILE%" + "exec_command": "cd \"%ASAM_QC_FRAMEWORK_WORKING_DIR%\" && qc_opendrive -c \"%ASAM_QC_FRAMEWORK_CONFIG_FILE%\"" } ] } \ No newline at end of file diff --git a/manifest_examples/windows/qc_openscenarioxml.json b/manifest_examples/windows/qc_openscenarioxml.json index cb23d439..5a3f42b3 100755 --- a/manifest_examples/windows/qc_openscenarioxml.json +++ b/manifest_examples/windows/qc_openscenarioxml.json @@ -4,7 +4,7 @@ "name": "xoscBundle", "exec_type": "executable", "module_type": "checker_bundle", - "exec_command": "cd %ASAM_QC_FRAMEWORK_WORKING_DIR% && qc_openscenario -c %ASAM_QC_FRAMEWORK_CONFIG_FILE%" + "exec_command": "cd \"%ASAM_QC_FRAMEWORK_WORKING_DIR%\" && qc_openscenario -c \"%ASAM_QC_FRAMEWORK_CONFIG_FILE%\"" } ] } \ No newline at end of file diff --git a/manifest_examples/windows/qc_otx.json b/manifest_examples/windows/qc_otx.json index 12d96a84..1334de4c 100755 --- a/manifest_examples/windows/qc_otx.json +++ b/manifest_examples/windows/qc_otx.json @@ -4,7 +4,7 @@ "name": "otxBundle", "exec_type": "executable", "module_type": "checker_bundle", - "exec_command": "cd %ASAM_QC_FRAMEWORK_WORKING_DIR% && qc_otx -c %ASAM_QC_FRAMEWORK_CONFIG_FILE%" + "exec_command": "cd \"%ASAM_QC_FRAMEWORK_WORKING_DIR%\" && qc_otx -c \"%ASAM_QC_FRAMEWORK_CONFIG_FILE%\"" } ] } \ No newline at end of file diff --git a/manifest_examples/windows/report_gui.json b/manifest_examples/windows/report_gui.json index 851fc32b..15cec2e6 100755 --- a/manifest_examples/windows/report_gui.json +++ b/manifest_examples/windows/report_gui.json @@ -4,7 +4,7 @@ "name": "ReportGUI", "exec_type": "executable", "module_type": "report_module", - "exec_command": "cd %ASAM_QC_FRAMEWORK_WORKING_DIR% && C:\\Users\\asam\\QC-Framework-Out\\bin\\ReportGUI.exe %ASAM_QC_FRAMEWORK_CONFIG_FILE%" + "exec_command": "cd \"%ASAM_QC_FRAMEWORK_WORKING_DIR%\" && C:\\Users\\asam\\QC-Framework-Out\\bin\\ReportGUI.exe \"%ASAM_QC_FRAMEWORK_CONFIG_FILE%\"" } ] } \ No newline at end of file diff --git a/manifest_examples/windows/result_pooling.json b/manifest_examples/windows/result_pooling.json index 8230d0a8..8a826379 100755 --- a/manifest_examples/windows/result_pooling.json +++ b/manifest_examples/windows/result_pooling.json @@ -4,7 +4,7 @@ "name": "ResultPooling", "exec_type": "executable", "module_type": "result_pooling", - "exec_command": "cd %ASAM_QC_FRAMEWORK_WORKING_DIR% && C:\\Users\\asam\\QC-Framework-Out\\bin\\ResultPooling.exe %ASAM_QC_FRAMEWORK_WORKING_DIR% %ASAM_QC_FRAMEWORK_CONFIG_FILE%" + "exec_command": "cd \"%ASAM_QC_FRAMEWORK_WORKING_DIR%\" && C:\\Users\\asam\\QC-Framework-Out\\bin\\ResultPooling.exe \"%ASAM_QC_FRAMEWORK_WORKING_DIR%\" \"%ASAM_QC_FRAMEWORK_CONFIG_FILE%\"" } ] } \ No newline at end of file diff --git a/manifest_examples/windows/text_report.json b/manifest_examples/windows/text_report.json index 43222084..2620ae17 100755 --- a/manifest_examples/windows/text_report.json +++ b/manifest_examples/windows/text_report.json @@ -4,7 +4,7 @@ "name": "TextReport", "exec_type": "executable", "module_type": "report_module", - "exec_command": "cd %ASAM_QC_FRAMEWORK_WORKING_DIR% && C:\\Users\\asam\\QC-Framework-Out\\bin\\TextReport.exe %ASAM_QC_FRAMEWORK_CONFIG_FILE%" + "exec_command": "cd \"%ASAM_QC_FRAMEWORK_WORKING_DIR%\" && C:\\Users\\asam\\QC-Framework-Out\\bin\\TextReport.exe \"%ASAM_QC_FRAMEWORK_CONFIG_FILE%\"" } ] } \ No newline at end of file diff --git a/qc_framework/README.md b/qc_framework/README.md new file mode 100644 index 00000000..eb09a6cd --- /dev/null +++ b/qc_framework/README.md @@ -0,0 +1,5 @@ +# asam-qc-framework + +This is the Python package for the ASAM Quality Checker Framework. + +Visit the [main GitHub repository](https://github.com/asam-ev/qc-framework) for detailed documentation. diff --git a/qc_framework/poetry.lock b/qc_framework/poetry.lock index 772b7f53..24141e77 100644 --- a/qc_framework/poetry.lock +++ b/qc_framework/poetry.lock @@ -13,53 +13,49 @@ files = [ [[package]] name = "asam-qc-baselib" -version = "0.1.0" +version = "1.0.0rc1" description = "Python base library for ASAM Quality Checker Framework" optional = false -python-versions = "^3.10" -files = [] -develop = false +python-versions = "<4.0,>=3.10" +files = [ + {file = "asam_qc_baselib-1.0.0rc1-py3-none-any.whl", hash = "sha256:f946be44ccf31d94ba0e72d93e86888ed70925dc4d1d46287edf69c4b6c29581"}, + {file = "asam_qc_baselib-1.0.0rc1.tar.gz", hash = "sha256:6631bd0ca6b9126fe9244d4bd0092d1a108429c773afcb43a6e6dd3c78cde76f"}, +] [package.dependencies] -lxml = "^5.2.2" -pydantic = "^2.7.2" -pydantic-xml = "^2.11.0" - -[package.source] -type = "git" -url = "https://github.com/asam-ev/qc-baselib-py.git" -reference = "develop" -resolved_reference = "74f4d88c6ef07233dec5a381cbc5451aa841bbd4" +lxml = ">=5.2.2,<6.0.0" +pydantic = ">=2.7.2,<3.0.0" +pydantic-xml = ">=2.11.0,<3.0.0" [[package]] name = "black" -version = "24.8.0" +version = "24.10.0" description = "The uncompromising code formatter." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "black-24.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6"}, - {file = "black-24.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb"}, - {file = "black-24.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42"}, - {file = "black-24.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a"}, - {file = "black-24.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1"}, - {file = "black-24.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af"}, - {file = "black-24.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4"}, - {file = "black-24.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af"}, - {file = "black-24.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368"}, - {file = "black-24.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed"}, - {file = "black-24.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018"}, - {file = "black-24.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2"}, - {file = "black-24.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd"}, - {file = "black-24.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2"}, - {file = "black-24.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e"}, - {file = "black-24.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920"}, - {file = "black-24.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c"}, - {file = "black-24.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e"}, - {file = "black-24.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47"}, - {file = "black-24.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb"}, - {file = "black-24.8.0-py3-none-any.whl", hash = "sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed"}, - {file = "black-24.8.0.tar.gz", hash = "sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f"}, + {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, + {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, + {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, + {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, + {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, + {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, + {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, + {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, + {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, + {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, + {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, + {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, + {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, + {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, + {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, + {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, + {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, + {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, + {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, + {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, + {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, + {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, ] [package.dependencies] @@ -73,7 +69,7 @@ typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] +d = ["aiohttp (>=3.10)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] @@ -316,19 +312,19 @@ files = [ [[package]] name = "platformdirs" -version = "4.2.2" +version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, - {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] -type = ["mypy (>=1.8)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "pluggy" @@ -347,18 +343,18 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "pydantic" -version = "2.8.2" +version = "2.9.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.8.2-py3-none-any.whl", hash = "sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8"}, - {file = "pydantic-2.8.2.tar.gz", hash = "sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a"}, + {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, + {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, ] [package.dependencies] -annotated-types = ">=0.4.0" -pydantic-core = "2.20.1" +annotated-types = ">=0.6.0" +pydantic-core = "2.23.4" typing-extensions = [ {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, {version = ">=4.6.1", markers = "python_version < \"3.13\""}, @@ -366,103 +362,104 @@ typing-extensions = [ [package.extras] email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] [[package]] name = "pydantic-core" -version = "2.20.1" +version = "2.23.4" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3acae97ffd19bf091c72df4d726d552c473f3576409b2a7ca36b2f535ffff4a3"}, - {file = "pydantic_core-2.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41f4c96227a67a013e7de5ff8f20fb496ce573893b7f4f2707d065907bffdbd6"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f239eb799a2081495ea659d8d4a43a8f42cd1fe9ff2e7e436295c38a10c286a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53e431da3fc53360db73eedf6f7124d1076e1b4ee4276b36fb25514544ceb4a3"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1f62b2413c3a0e846c3b838b2ecd6c7a19ec6793b2a522745b0869e37ab5bc1"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d41e6daee2813ecceea8eda38062d69e280b39df793f5a942fa515b8ed67953"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d482efec8b7dc6bfaedc0f166b2ce349df0011f5d2f1f25537ced4cfc34fd98"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e93e1a4b4b33daed65d781a57a522ff153dcf748dee70b40c7258c5861e1768a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7c4ea22b6739b162c9ecaaa41d718dfad48a244909fe7ef4b54c0b530effc5a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4f2790949cf385d985a31984907fecb3896999329103df4e4983a4a41e13e840"}, - {file = "pydantic_core-2.20.1-cp310-none-win32.whl", hash = "sha256:5e999ba8dd90e93d57410c5e67ebb67ffcaadcea0ad973240fdfd3a135506250"}, - {file = "pydantic_core-2.20.1-cp310-none-win_amd64.whl", hash = "sha256:512ecfbefef6dac7bc5eaaf46177b2de58cdf7acac8793fe033b24ece0b9566c"}, - {file = "pydantic_core-2.20.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312"}, - {file = "pydantic_core-2.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37eee5b638f0e0dcd18d21f59b679686bbd18917b87db0193ae36f9c23c355fc"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25e9185e2d06c16ee438ed39bf62935ec436474a6ac4f9358524220f1b236e43"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:150906b40ff188a3260cbee25380e7494ee85048584998c1e66df0c7a11c17a6"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ad4aeb3e9a97286573c03df758fc7627aecdd02f1da04516a86dc159bf70121"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3f3ed29cd9f978c604708511a1f9c2fdcb6c38b9aae36a51905b8811ee5cbf1"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0dae11d8f5ded51699c74d9548dcc5938e0804cc8298ec0aa0da95c21fff57b"}, - {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:faa6b09ee09433b87992fb5a2859efd1c264ddc37280d2dd5db502126d0e7f27"}, - {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9dc1b507c12eb0481d071f3c1808f0529ad41dc415d0ca11f7ebfc666e66a18b"}, - {file = "pydantic_core-2.20.1-cp311-none-win32.whl", hash = "sha256:fa2fddcb7107e0d1808086ca306dcade7df60a13a6c347a7acf1ec139aa6789a"}, - {file = "pydantic_core-2.20.1-cp311-none-win_amd64.whl", hash = "sha256:40a783fb7ee353c50bd3853e626f15677ea527ae556429453685ae32280c19c2"}, - {file = "pydantic_core-2.20.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:595ba5be69b35777474fa07f80fc260ea71255656191adb22a8c53aba4479231"}, - {file = "pydantic_core-2.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a4f55095ad087474999ee28d3398bae183a66be4823f753cd7d67dd0153427c9"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9aa05d09ecf4c75157197f27cdc9cfaeb7c5f15021c6373932bf3e124af029f"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e97fdf088d4b31ff4ba35db26d9cc472ac7ef4a2ff2badeabf8d727b3377fc52"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc633a9fe1eb87e250b5c57d389cf28998e4292336926b0b6cdaee353f89a237"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d573faf8eb7e6b1cbbcb4f5b247c60ca8be39fe2c674495df0eb4318303137fe"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:33499e85e739a4b60c9dac710c20a08dc73cb3240c9a0e22325e671b27b70d24"}, - {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bebb4d6715c814597f85297c332297c6ce81e29436125ca59d1159b07f423eb1"}, - {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:516d9227919612425c8ef1c9b869bbbee249bc91912c8aaffb66116c0b447ebd"}, - {file = "pydantic_core-2.20.1-cp312-none-win32.whl", hash = "sha256:469f29f9093c9d834432034d33f5fe45699e664f12a13bf38c04967ce233d688"}, - {file = "pydantic_core-2.20.1-cp312-none-win_amd64.whl", hash = "sha256:035ede2e16da7281041f0e626459bcae33ed998cca6a0a007a5ebb73414ac72d"}, - {file = "pydantic_core-2.20.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0827505a5c87e8aa285dc31e9ec7f4a17c81a813d45f70b1d9164e03a813a686"}, - {file = "pydantic_core-2.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:19c0fa39fa154e7e0b7f82f88ef85faa2a4c23cc65aae2f5aea625e3c13c735a"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa223cd1e36b642092c326d694d8bf59b71ddddc94cdb752bbbb1c5c91d833b"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c336a6d235522a62fef872c6295a42ecb0c4e1d0f1a3e500fe949415761b8a19"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7eb6a0587eded33aeefea9f916899d42b1799b7b14b8f8ff2753c0ac1741edac"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70c8daf4faca8da5a6d655f9af86faf6ec2e1768f4b8b9d0226c02f3d6209703"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9fa4c9bf273ca41f940bceb86922a7667cd5bf90e95dbb157cbb8441008482c"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:11b71d67b4725e7e2a9f6e9c0ac1239bbc0c48cce3dc59f98635efc57d6dac83"}, - {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:270755f15174fb983890c49881e93f8f1b80f0b5e3a3cc1394a255706cabd203"}, - {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c81131869240e3e568916ef4c307f8b99583efaa60a8112ef27a366eefba8ef0"}, - {file = "pydantic_core-2.20.1-cp313-none-win32.whl", hash = "sha256:b91ced227c41aa29c672814f50dbb05ec93536abf8f43cd14ec9521ea09afe4e"}, - {file = "pydantic_core-2.20.1-cp313-none-win_amd64.whl", hash = "sha256:65db0f2eefcaad1a3950f498aabb4875c8890438bc80b19362cf633b87a8ab20"}, - {file = "pydantic_core-2.20.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4745f4ac52cc6686390c40eaa01d48b18997cb130833154801a442323cc78f91"}, - {file = "pydantic_core-2.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a8ad4c766d3f33ba8fd692f9aa297c9058970530a32c728a2c4bfd2616d3358b"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41e81317dd6a0127cabce83c0c9c3fbecceae981c8391e6f1dec88a77c8a569a"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04024d270cf63f586ad41fff13fde4311c4fc13ea74676962c876d9577bcc78f"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eaad4ff2de1c3823fddf82f41121bdf453d922e9a238642b1dedb33c4e4f98ad"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:26ab812fa0c845df815e506be30337e2df27e88399b985d0bb4e3ecfe72df31c"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c5ebac750d9d5f2706654c638c041635c385596caf68f81342011ddfa1e5598"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2aafc5a503855ea5885559eae883978c9b6d8c8993d67766ee73d82e841300dd"}, - {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4868f6bd7c9d98904b748a2653031fc9c2f85b6237009d475b1008bfaeb0a5aa"}, - {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa2f457b4af386254372dfa78a2eda2563680d982422641a85f271c859df1987"}, - {file = "pydantic_core-2.20.1-cp38-none-win32.whl", hash = "sha256:225b67a1f6d602de0ce7f6c1c3ae89a4aa25d3de9be857999e9124f15dab486a"}, - {file = "pydantic_core-2.20.1-cp38-none-win_amd64.whl", hash = "sha256:6b507132dcfc0dea440cce23ee2182c0ce7aba7054576efc65634f080dbe9434"}, - {file = "pydantic_core-2.20.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b03f7941783b4c4a26051846dea594628b38f6940a2fdc0df00b221aed39314c"}, - {file = "pydantic_core-2.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1eedfeb6089ed3fad42e81a67755846ad4dcc14d73698c120a82e4ccf0f1f9f6"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:635fee4e041ab9c479e31edda27fcf966ea9614fff1317e280d99eb3e5ab6fe2"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:77bf3ac639c1ff567ae3b47f8d4cc3dc20f9966a2a6dd2311dcc055d3d04fb8a"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ed1b0132f24beeec5a78b67d9388656d03e6a7c837394f99257e2d55b461611"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6514f963b023aeee506678a1cf821fe31159b925c4b76fe2afa94cc70b3222b"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d4204d8ca33146e761c79f83cc861df20e7ae9f6487ca290a97702daf56006"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2d036c7187b9422ae5b262badb87a20a49eb6c5238b2004e96d4da1231badef1"}, - {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9ebfef07dbe1d93efb94b4700f2d278494e9162565a54f124c404a5656d7ff09"}, - {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6b9d9bb600328a1ce523ab4f454859e9d439150abb0906c5a1983c146580ebab"}, - {file = "pydantic_core-2.20.1-cp39-none-win32.whl", hash = "sha256:784c1214cb6dd1e3b15dd8b91b9a53852aed16671cc3fbe4786f4f1db07089e2"}, - {file = "pydantic_core-2.20.1-cp39-none-win_amd64.whl", hash = "sha256:d2fe69c5434391727efa54b47a1e7986bb0186e72a41b203df8f5b0a19a4f669"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a45f84b09ac9c3d35dfcf6a27fd0634d30d183205230a0ebe8373a0e8cfa0906"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d02a72df14dfdbaf228424573a07af10637bd490f0901cee872c4f434a735b94"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b27e6af28f07e2f195552b37d7d66b150adbaa39a6d327766ffd695799780f"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084659fac3c83fd674596612aeff6041a18402f1e1bc19ca39e417d554468482"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:242b8feb3c493ab78be289c034a1f659e8826e2233786e36f2893a950a719bb6"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:38cf1c40a921d05c5edc61a785c0ddb4bed67827069f535d794ce6bcded919fc"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e0bbdd76ce9aa5d4209d65f2b27fc6e5ef1312ae6c5333c26db3f5ade53a1e99"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:254ec27fdb5b1ee60684f91683be95e5133c994cc54e86a0b0963afa25c8f8a6"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:407653af5617f0757261ae249d3fba09504d7a71ab36ac057c938572d1bc9331"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:c693e916709c2465b02ca0ad7b387c4f8423d1db7b4649c551f27a529181c5ad"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b5ff4911aea936a47d9376fd3ab17e970cc543d1b68921886e7f64bd28308d1"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177f55a886d74f1808763976ac4efd29b7ed15c69f4d838bbd74d9d09cf6fa86"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:964faa8a861d2664f0c7ab0c181af0bea66098b1919439815ca8803ef136fc4e"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4dd484681c15e6b9a977c785a345d3e378d72678fd5f1f3c0509608da24f2ac0"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f6d6cff3538391e8486a431569b77921adfcdef14eb18fbf19b7c0a5294d4e6a"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a6d511cc297ff0883bc3708b465ff82d7560193169a8b93260f74ecb0a5e08a7"}, - {file = "pydantic_core-2.20.1.tar.gz", hash = "sha256:26ca695eeee5f9f1aeeb211ffc12f10bcb6f71e2989988fda61dabd65db878d4"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, + {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, + {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, + {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, + {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, + {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, + {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, + {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, + {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, + {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, + {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, + {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, + {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, + {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, ] [package.dependencies] @@ -470,13 +467,13 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pydantic-xml" -version = "2.11.0" +version = "2.13.1" description = "pydantic xml extension" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_xml-2.11.0-py3-none-any.whl", hash = "sha256:033b2b997a99bdb18ab93d7ed66a5bc9ec490753afc011f084bd625ad2d0bdfd"}, - {file = "pydantic_xml-2.11.0.tar.gz", hash = "sha256:7fbe816b8251b45aabe0c11992fc52e2921afd8f46f256b3f60ed82f869361da"}, + {file = "pydantic_xml-2.13.1-py3-none-any.whl", hash = "sha256:f880394e090cef43e55aa848b285ea9807011f768d682188807a741b978d7326"}, + {file = "pydantic_xml-2.13.1.tar.gz", hash = "sha256:225d96ce8288abf84d34aa5c70cd4a834c389a7efb071f95301cbba41bfbec15"}, ] [package.dependencies] @@ -489,13 +486,13 @@ lxml = ["lxml (>=4.9.0)"] [[package]] name = "pytest" -version = "8.3.2" +version = "8.3.3" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.3.2-py3-none-any.whl", hash = "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5"}, - {file = "pytest-8.3.2.tar.gz", hash = "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce"}, + {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, + {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, ] [package.dependencies] @@ -511,13 +508,13 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] @@ -534,4 +531,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "f730c25ae48b4dd8955ac45518f376ea5dff5386c35e32964c1c55acf55d84fa" +content-hash = "6817d1bf10a5e8c2d9856169241376a4b716cfbc991086ee6bd63d085db0c911" diff --git a/qc_framework/pyproject.toml b/qc_framework/pyproject.toml index 980938e1..a3197788 100644 --- a/qc_framework/pyproject.toml +++ b/qc_framework/pyproject.toml @@ -1,17 +1,17 @@ [tool.poetry] name = "asam-qc-framework" -version = "0.1.0" +version = "1.0.0rc1" description = "Python ASAM Quality Checker Framework module. Executes bundles and creates result reports." authors = ["Danilo Romano ","Patrick Abrahão ","Tung Dinh "] license = "MPL-2.0" -readme = "../doc/manual/python_qc_framework.md" +readme = "README.md" packages = [ { include = "qc_framework" }, ] [tool.poetry.dependencies] python = "^3.10" -asam-qc-baselib = {git = "https://github.com/asam-ev/qc-baselib-py.git", rev = "develop"} +asam-qc-baselib = "^1.0.0rc1" pydantic = "^2.7.2" [tool.poetry.group.dev.dependencies] diff --git a/qc_framework/tests/test_data/windows/demo_checker_bundle_manifest.json b/qc_framework/tests/test_data/windows/demo_checker_bundle_manifest.json index 2f476462..d93376b9 100644 --- a/qc_framework/tests/test_data/windows/demo_checker_bundle_manifest.json +++ b/qc_framework/tests/test_data/windows/demo_checker_bundle_manifest.json @@ -4,7 +4,7 @@ "name": "DemoCheckerBundle", "exec_type": "executable", "module_type": "checker_bundle", - "exec_command": "cd %ASAM_QC_FRAMEWORK_WORKING_DIR% && ..\\..\\bin\\DemoCheckerBundle.exe %ASAM_QC_FRAMEWORK_CONFIG_FILE%" + "exec_command": "cd \"%ASAM_QC_FRAMEWORK_WORKING_DIR%\" && ..\\..\\bin\\DemoCheckerBundle.exe \"%ASAM_QC_FRAMEWORK_CONFIG_FILE%\"" } ] -} +} \ No newline at end of file diff --git a/qc_framework/tests/test_data/windows/result_pooling_manifest.json b/qc_framework/tests/test_data/windows/result_pooling_manifest.json index 6ef2fc7e..ccc7a12b 100644 --- a/qc_framework/tests/test_data/windows/result_pooling_manifest.json +++ b/qc_framework/tests/test_data/windows/result_pooling_manifest.json @@ -1,10 +1,10 @@ { - "module": [ - { - "name": "ResultPooling", - "exec_type": "executable", - "module_type": "result_pooling", - "exec_command": "cd %ASAM_QC_FRAMEWORK_WORKING_DIR% && ..\\..\\bin\\ResultPooling.exe %ASAM_QC_FRAMEWORK_WORKING_DIR% %ASAM_QC_FRAMEWORK_CONFIG_FILE%" - } - ] - } + "module": [ + { + "name": "ResultPooling", + "exec_type": "executable", + "module_type": "result_pooling", + "exec_command": "cd \"%ASAM_QC_FRAMEWORK_WORKING_DIR%\" && ..\\..\\bin\\ResultPooling.exe \"%ASAM_QC_FRAMEWORK_WORKING_DIR%\" \"%ASAM_QC_FRAMEWORK_CONFIG_FILE%\"" + } + ] +} \ No newline at end of file diff --git a/qc_framework/tests/test_data/windows/text_report_manifest.json b/qc_framework/tests/test_data/windows/text_report_manifest.json index ca2be181..1b39ba54 100644 --- a/qc_framework/tests/test_data/windows/text_report_manifest.json +++ b/qc_framework/tests/test_data/windows/text_report_manifest.json @@ -1,10 +1,10 @@ { - "module": [ - { - "name": "TextReport", - "exec_type": "executable", - "module_type": "report_module", - "exec_command": "cd %ASAM_QC_FRAMEWORK_WORKING_DIR% && ..\\..\\bin\\TextReport.exe %ASAM_QC_FRAMEWORK_CONFIG_FILE%" - } - ] - } + "module": [ + { + "name": "TextReport", + "exec_type": "executable", + "module_type": "report_module", + "exec_command": "cd \"%ASAM_QC_FRAMEWORK_WORKING_DIR%\" && ..\\..\\bin\\TextReport.exe \"%ASAM_QC_FRAMEWORK_CONFIG_FILE%\"" + } + ] +} \ No newline at end of file