anncsu-sdk 0.0.9.dev28__tar.gz → 0.0.9.dev30__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/PKG-INFO +1 -1
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/CLI.md +49 -18
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdk-odonimi.md +58 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/bulk.py +5 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/coordinate.py +34 -25
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/odonimo.py +2 -11
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/models.py +21 -1
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/bulk/dryrun.py +33 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_coordinate.py +202 -40
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_odonimo.py +57 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/bulk/test_dryrun.py +105 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.devcontainer/README.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.devcontainer/devcontainer.json +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.devcontainer/setup.sh +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.gitattributes +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.github/workflows/README.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.github/workflows/ci.yml +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.github/workflows/publish.yml +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.gitignore +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.pre-commit-config.yaml +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.python-version +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.speakeasy/gen.lock +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.speakeasy/gen.yaml +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.speakeasy/out.accessi.openapi.yaml +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.speakeasy/out.coordinate.openapi.yaml +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.speakeasy/out.odonimi.openapi.yaml +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.speakeasy/out.openapi.yaml +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.speakeasy/workflow.lock +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.speakeasy/workflow.yaml +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.vscode/settings.json +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/CONTRIBUTING.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/LICENSE +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/README.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/USAGE.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/SECURITY.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/VALIDATION.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetpathparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetpathparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetpathparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetpathparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetpathparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetqueryparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetqueryparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetqueryparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetqueryparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetqueryparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessipostbadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessipostinternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessipostmethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessipostnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessipostunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetpathparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetpathparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetpathparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetpathparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetpathparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetqueryparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetqueryparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetqueryparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetqueryparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetqueryparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiprogpostbadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiprogpostinternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiprogpostmethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiprogpostnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiprogpostunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetpathparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetpathparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetpathparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetpathparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetpathparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetqueryparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetqueryparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetqueryparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetqueryparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetqueryparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimipostbadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimipostinternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimipostmethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimipostnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimipostunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetpathparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetpathparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetpathparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetpathparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetpathparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetqueryparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetqueryparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetqueryparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetqueryparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetqueryparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiprogpostbadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiprogpostinternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiprogpostmethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiprogpostnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiprogpostunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessogetpathparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessogetpathparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessogetpathparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessogetpathparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessogetqueryparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessogetqueryparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessogetqueryparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessogetqueryparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessopostbadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessopostinternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessopostmethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessopostunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimogetpathparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimogetpathparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimogetpathparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimogetpathparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimogetqueryparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimogetqueryparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimogetqueryparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimogetqueryparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimopostbadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimopostinternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimopostmethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimopostunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetpathparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetpathparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetpathparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetpathparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetpathparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetqueryparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetqueryparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetqueryparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetqueryparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetqueryparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccpostbadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccpostinternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccpostmethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccpostnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccpostunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetpathparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetpathparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetpathparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetpathparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetpathparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetqueryparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetqueryparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetqueryparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetqueryparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetqueryparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareapostbadrequesterror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareapostinternalservererror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareapostmethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareapostnotfounderror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareapostunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/serviceunavailableerror.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessigetpathparamdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessigetpathparamrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessigetpathparamresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessigetqueryparamdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessigetqueryparamrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessigetqueryparamresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessipostdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessipostrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessipostresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiproggetpathparamdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiproggetpathparamrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiproggetpathparamresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiproggetqueryparamdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiproggetqueryparamrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiproggetqueryparamresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiprogpostdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiprogpostrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiprogpostresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimigetpathparamdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimigetpathparamrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimigetpathparamresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimigetqueryparamdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimigetqueryparamrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimigetqueryparamresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimipostdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimipostrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimipostresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiproggetpathparamdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiproggetpathparamrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiproggetpathparamresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiproggetqueryparamdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiproggetqueryparamrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiproggetqueryparamresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiprogpostdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiprogpostrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiprogpostresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteaccessogetpathparamrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteaccessogetpathparamresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteaccessogetqueryparamrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteaccessogetqueryparamresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteaccessopostrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteaccessopostresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteodonimogetpathparamrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteodonimogetpathparamresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteodonimogetqueryparamrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteodonimogetqueryparamresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteodonimopostrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteodonimopostresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccgetpathparamdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccgetpathparamrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccgetpathparamresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccgetqueryparamdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccgetqueryparamrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccgetqueryparamresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccpostdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccpostrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccpostresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareagetpathparamdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareagetpathparamrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareagetpathparamresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareagetqueryparamdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareagetqueryparamrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareagetqueryparamresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareapostdata.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareapostrequest.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareapostresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/showstatusresponse.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/utils/retryconfig.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdk-accessi.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdk-coordinate.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdk-pa.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdks/anncsu/README.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdks/jsonpost/README.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdks/pathparam/README.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdks/queryparam/README.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdks/status/README.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/speakeasy.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/oas/.spectral.yaml +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/oas/README.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/oas/dev/Specifica API - ANNCSU - Aggiornamento accessi.yaml +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/oas/dev/Specifica API - ANNCSU - Aggiornamento coordinate massivo.yml +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/oas/dev/Specifica API - ANNCSU - Aggiornamento coordinate.yml +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/oas/dev/Specifica API - ANNCSU - Aggiornamento odonimi.yaml +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/oas/dev/Specifica API - ANNCSU /342/200/223 Consultazione per le PA.yaml" +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/oas/prod/Specifica API - ANNCSU /342/200/223 Consultazione per le PA.yaml" +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/pylintrc +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/pyproject.toml +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/scripts/create_client_assertion.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/scripts/post_speakeasy_generation.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/scripts/publish.sh +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/_version.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/accessi.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/errors/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/errors/accesso_validation.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/errors/anncsuerror.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/errors/apierror.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/errors/no_response_error.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/errors/responsevalidationerror.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/errors/rispostaerrore.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/errors/show_statusop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/models/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/models/richiestaoperazione.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/models/rispostaoperazione.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/models/security.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/models/show_statusop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/models/validated.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/py.typed +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/sdk.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/sdkconfiguration.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/status.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/app.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/accesso.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/assertion.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/auth.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/config.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/constants.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/pa.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/auth.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/basesdk.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/config.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/errors/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/errors/apierror.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/errors/audience_mismatch.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/errors/base.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/errors/digest_serialization_mismatch.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/errors/no_response_error.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/errors/responsevalidationerror.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/hooks/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/hooks/modi_hook.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/hooks/registration.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/hooks/sdkhooks.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/hooks/token_validation.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/hooks/types.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/httpclient.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/modi.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/pdnd_assertion.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/pdnd_token.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/basesdk.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/httpclient.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/protocols.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/types/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/types/basemodel.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/annotations.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/datetimes.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/dynamic_imports.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/enums.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/eventstreaming.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/forms.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/headers.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/logger.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/metadata.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/queryparams.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/requestbodies.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/retries.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/security.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/serializers.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/unmarshal_json_response.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/url.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/values.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdkconfiguration.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/security.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/session.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/types/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/utils/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/validation/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/validation/examples.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/validation/response_validator.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/validation/validators.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/_version.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/bulk/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/bulk/db.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/bulk/executor.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/bulk/importer.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/bulk/reporter.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/anncsuerror.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/apierror.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/coordinate_validation.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/no_response_error.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/responsevalidationerror.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/risposta_validation.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/rispostaerrore.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/show_statusop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/jsonpost.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/models/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/models/richiestaoperazione.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/models/rispostaoperazione.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/models/security.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/models/show_statusop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/models/validated.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/py.typed +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/sdk.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/sdkconfiguration.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/status.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/_version.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/errors/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/errors/anncsuerror.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/errors/apierror.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/errors/no_response_error.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/errors/odonimo_validation.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/errors/responsevalidationerror.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/errors/rispostaerrore.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/errors/show_statusop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/models/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/models/autprefettura.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/models/provvedimento.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/models/richiestaoperazione.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/models/rispostaoperazione.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/models/security.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/models/show_statusop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/models/validated.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/odonimi.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/py.typed +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/sdk.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/sdkconfiguration.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/status.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/_hooks/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/_hooks/registration.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/_hooks/sdkhooks.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/_hooks/types.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/_version.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/anncsuerror.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/apierror.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoaccessigetpathparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoaccessigetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoaccessipostop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoaccessiproggetpathparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoaccessiproggetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoaccessiprogpostop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoodonimigetpathparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoodonimigetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoodonimipostop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoodonimiproggetpathparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoodonimiproggetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoodonimiprogpostop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/esisteaccessogetpathparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/esisteaccessogetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/esisteaccessopostop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/esisteodonimogetpathparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/esisteodonimogetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/esisteodonimopostop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/no_response_error.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/prognazaccgetpathparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/prognazaccgetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/prognazaccpostop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/prognazareagetpathparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/prognazareagetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/prognazareapostop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/responsevalidationerror.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/show_statusop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/jsonpost.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoaccessigetpathparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoaccessigetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoaccessipostop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoaccessiproggetpathparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoaccessiproggetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoaccessiprogpostop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoodonimigetpathparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoodonimigetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoodonimipostop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoodonimiproggetpathparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoodonimiproggetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoodonimiprogpostop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/esisteaccessogetpathparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/esisteaccessogetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/esisteaccessopostop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/esisteodonimogetpathparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/esisteodonimogetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/esisteodonimopostop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/prognazaccgetpathparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/prognazaccgetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/prognazaccpostop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/prognazareagetpathparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/prognazareagetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/prognazareapostop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/show_statusop.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/pathparam.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/py.typed +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/queryparam.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/sdk.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/sdkconfiguration.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/status.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/README.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/accessi/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/accessi/test_accesso_validation.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/accessi/test_do_request_signature.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/accessi/test_imports.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/conftest.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_accesso.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_assertion.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_auth.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_config.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_coordinate_bulk.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_duckdb_batch.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_main.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_pa.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_raw_output.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_token_endpoint_resolution.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_auth_modi_integration.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_cli_env_override.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_config.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_imports.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_modi.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_modi_hook.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_pdnd_assertion.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_pdnd_auth_manager.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_pdnd_token.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_security.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_security_basemodel.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_session.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_token_validation_hook.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/conftest.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/bulk/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/bulk/test_db.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/bulk/test_executor.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/bulk/test_importer.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/bulk/test_integration.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/bulk/test_reporter.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/test_coordinate_validation.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/test_imports.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/test_risposta_validation.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/test_sdk_hooks_integration.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/coordinate/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/coordinate/test_jsonpost_async_httpx.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/coordinate/test_jsonpost_httpx.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/coordinate/test_status_async_httpx.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/coordinate/test_status_httpx.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/pa/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/pa/test_jsonpost_async_httpx.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/pa/test_jsonpost_httpx.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/pa/test_pathparam_async_httpx.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/pa/test_pathparam_httpx.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/pa/test_queryparam_async_httpx.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/pa/test_queryparam_httpx.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/pa/test_status_httpx.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/test_sdk_instantiation.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/test_security_in_requests.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/odonimi/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/odonimi/test_imports.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/odonimi/test_odonimo_validation.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/pa/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/pa/test_imports.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/pa/test_response_field_mapping.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/test_post_speakeasy_generation.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/coordinate/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/coordinate/test_coordinate_operations_validation.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/coordinate/test_model_factories.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/coordinate/test_validators.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/coordinate/test_validators_property.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/ADVANCED_TESTING.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/README.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/README_COMPREHENSIVE_TESTS.md +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/__init__.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/test_all_operations_validation.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/test_model_factories.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/test_model_factories_comprehensive.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/test_validators.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/test_validators_property.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/test_response_validator.py +0 -0
- {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/uv.lock +0 -0
|
@@ -877,22 +877,40 @@ Original coordinates to restore manually:
|
|
|
877
877
|
metodo: 4
|
|
878
878
|
```
|
|
879
879
|
|
|
880
|
-
**
|
|
880
|
+
**Safety skip on legacy NULL `metodo`**: a dry-run **guarantees zero changes** in production. If the target record has an original `metodo` that is not one of the valid OAS values (`"1"`, `"2"`, `"3"`, `"4"`) — typically legacy data imported before the validation rule was enforced — the restore step would fail (ANNCSU error 130, *"Il metodo deve essere obbligatorio e compreso tra 1 e 4"*) and the test update would remain committed permanently.
|
|
881
881
|
|
|
882
|
-
|
|
883
|
-
|-------|------------|-------------|
|
|
884
|
-
| X | `12.4922309` | Longitude (Roma Colosseo area) |
|
|
885
|
-
| Y | `41.8902102` | Latitude (Roma Colosseo area) |
|
|
886
|
-
| Z | `null` | Altitude not specified |
|
|
887
|
-
| metodo | `4` | "Altro" (other method) |
|
|
882
|
+
To preserve the dry-run guarantee, the CLI **skips** such records **before any API write call**:
|
|
888
883
|
|
|
889
|
-
|
|
884
|
+
- No `gestionecoordinate` request is sent.
|
|
885
|
+
- A warning is printed (or, with `--json`, a structured payload with `"skipped": true` and `"skip_reason": "original_metodo_null_or_invalid"`).
|
|
886
|
+
- Exit code is `0` (the dry-run completed as designed, the record was simply not testable).
|
|
890
887
|
|
|
888
|
+
JSON output when a record is skipped:
|
|
889
|
+
|
|
890
|
+
```json
|
|
891
|
+
{
|
|
892
|
+
"success": true,
|
|
893
|
+
"original_coordinates": {
|
|
894
|
+
"prognazacc": "5256880",
|
|
895
|
+
"codcom": "H501",
|
|
896
|
+
"civico": "1",
|
|
897
|
+
"coord_x": null,
|
|
898
|
+
"coord_y": null,
|
|
899
|
+
"quota": null,
|
|
900
|
+
"metodo": null
|
|
901
|
+
},
|
|
902
|
+
"test_update": null,
|
|
903
|
+
"restore": null,
|
|
904
|
+
"restore_failed": false,
|
|
905
|
+
"skipped": true,
|
|
906
|
+
"skip_reason": "original_metodo_null_or_invalid",
|
|
907
|
+
"error_message": null
|
|
908
|
+
}
|
|
891
909
|
```
|
|
892
|
-
Note: Access has no coordinates. Using test coordinates (will be cleared after test).
|
|
893
|
-
```
|
|
894
910
|
|
|
895
|
-
**
|
|
911
|
+
> **Removed in this release**: the prior fallback that injected Roma Colosseo coordinates (`X=12.4922309`, `Y=41.8902102`, `metodo=4`) when the access had no original coordinates. That fallback violated the "dry-run = zero changes" guarantee because the eventual restore to `metodo=NULL` could not succeed. Skip is now the only behaviour.
|
|
912
|
+
|
|
913
|
+
**Warning Handling (legacy)**: if a restore fails for any *other* reason (e.g. transient network error during the round-trip on a record that did pass the safety check), the command will still display original values for manual recovery — same as before.
|
|
896
914
|
|
|
897
915
|
---
|
|
898
916
|
|
|
@@ -1225,12 +1243,13 @@ Dry-Run Results:
|
|
|
1225
1243
|
┌──────────────────────┬───────┐
|
|
1226
1244
|
│ Metric │ Value │
|
|
1227
1245
|
├──────────────────────┼───────┤
|
|
1228
|
-
│ Total tested │
|
|
1229
|
-
│ Updates succeeded │
|
|
1246
|
+
│ Total tested │ 8 │
|
|
1247
|
+
│ Updates succeeded │ 8 │
|
|
1230
1248
|
│ Updates failed │ 0 │
|
|
1231
|
-
│ Restores succeeded │
|
|
1249
|
+
│ Restores succeeded │ 8 │
|
|
1232
1250
|
│ Restores failed │ 0 │
|
|
1233
1251
|
│ Lookup failures │ 0 │
|
|
1252
|
+
│ Metodo NULL skipped │ 2 │
|
|
1234
1253
|
└──────────────────────┴───────┘
|
|
1235
1254
|
```
|
|
1236
1255
|
|
|
@@ -1238,12 +1257,13 @@ JSON output:
|
|
|
1238
1257
|
```json
|
|
1239
1258
|
{
|
|
1240
1259
|
"run_id": "abc123-def456",
|
|
1241
|
-
"total_tested":
|
|
1242
|
-
"updates_succeeded":
|
|
1260
|
+
"total_tested": 8,
|
|
1261
|
+
"updates_succeeded": 6,
|
|
1243
1262
|
"updates_failed": 2,
|
|
1244
|
-
"restores_succeeded":
|
|
1263
|
+
"restores_succeeded": 6,
|
|
1245
1264
|
"restores_failed": 0,
|
|
1246
1265
|
"lookup_failures": 0,
|
|
1266
|
+
"metodo_null_skipped": 2,
|
|
1247
1267
|
"errors": [
|
|
1248
1268
|
{
|
|
1249
1269
|
"row_id": 4,
|
|
@@ -1258,15 +1278,24 @@ JSON output:
|
|
|
1258
1278
|
"operation": "dryrun_update",
|
|
1259
1279
|
"http_status": 400,
|
|
1260
1280
|
"error_detail": "body.richiesta.accesso.coordinate.x: Max length is '12', found '14'"
|
|
1281
|
+
},
|
|
1282
|
+
{
|
|
1283
|
+
"row_id": 12,
|
|
1284
|
+
"progr_civico": "33013500",
|
|
1285
|
+
"operation": "dryrun_skip",
|
|
1286
|
+
"http_status": null,
|
|
1287
|
+
"error_detail": "original_metodo_null_or_invalid: None"
|
|
1261
1288
|
}
|
|
1262
1289
|
]
|
|
1263
1290
|
}
|
|
1264
1291
|
```
|
|
1265
1292
|
|
|
1293
|
+
**Safety skip on legacy NULL `metodo`**: same semantics as `coordinate dry-run` — records whose original `metodo` is not in `{"1", "2", "3", "4"}` are skipped **before any API write** to preserve the "dry-run = zero changes" guarantee. Counted in the dedicated `metodo_null_skipped` field; logged in `bulk_results` with `operation = 'dryrun_skip'` and `error_detail = 'original_metodo_null_or_invalid: <value>'`, so they appear in the **Error Details** section alongside other failures (distinguishable by the `operation` column).
|
|
1294
|
+
|
|
1266
1295
|
When there are errors, the text output also includes an **Error Details** table showing
|
|
1267
1296
|
row, progr_civico, operation, HTTP status, and error message for each failed operation.
|
|
1268
1297
|
|
|
1269
|
-
Exits with code 1 if any restores failed (manual intervention may be needed).
|
|
1298
|
+
Exits with code 1 if any restores failed (manual intervention may be needed). Skipped records do NOT cause a non-zero exit.
|
|
1270
1299
|
|
|
1271
1300
|
#### `anncsu coordinate bulk resume`
|
|
1272
1301
|
|
|
@@ -2236,6 +2265,8 @@ Options:
|
|
|
2236
2265
|
|
|
2237
2266
|
> **Note**: `delete` does NOT accept `--dug`, `--denom-*`, `--codice-comunale`, `--provv-*`, or `--prefettura-*` — Typer rejects them at parse time as unknown options because they have no meaning for a soppressione.
|
|
2238
2267
|
|
|
2268
|
+
> **Note on the S response shape**: the server response for a soppressione **does not** carry `esito` (it is `null`). The CLI infers success from the presence of `data_FINE` and `data_fine_valid_amm` in the `dati` payload — those mark the closure timestamp of the odonimo. When the CLI shows `Operation 'S' successful!`, this is the path that was taken. The behaviour is identical between the real `delete` and `delete --dry-run` since both call the same `_build_result` helper.
|
|
2269
|
+
|
|
2239
2270
|
#### `anncsu odonimo status`
|
|
2240
2271
|
|
|
2241
2272
|
Check the status of the Odonimi API service:
|
|
@@ -199,6 +199,64 @@ L'operazione effettiva è determinata dal campo `Richiesta.tipo_operazione`:
|
|
|
199
199
|
|--------|-------------|
|
|
200
200
|
| `show_status` | Verifica stato del servizio |
|
|
201
201
|
|
|
202
|
+
## Response shape (asimmetria fra I/R e S)
|
|
203
|
+
|
|
204
|
+
Le tre operazioni **non** rispondono con la stessa forma. Verificato empiricamente su UAT 2026-05-25.
|
|
205
|
+
|
|
206
|
+
### I e R — `esito` valorizzato
|
|
207
|
+
|
|
208
|
+
```json
|
|
209
|
+
{
|
|
210
|
+
"idRichiesta": "316768",
|
|
211
|
+
"esito": "0",
|
|
212
|
+
"messaggio": "OK",
|
|
213
|
+
"dati": [{"codcom": "H501", "progr_nazionale": "1342677", ...}]
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Detection di successo: `esito == "0"`.
|
|
218
|
+
|
|
219
|
+
### S — `esito` omesso, marker `data_FINE`
|
|
220
|
+
|
|
221
|
+
```json
|
|
222
|
+
{
|
|
223
|
+
"idRichiesta": "316775",
|
|
224
|
+
"dati": [{
|
|
225
|
+
"codcom": "H501",
|
|
226
|
+
"progr_nazionale": "1342672",
|
|
227
|
+
"dug": "VIA",
|
|
228
|
+
"denom_delibera": "TEST SDK INSERT 20260525",
|
|
229
|
+
"data_inizio": "25/05/2026",
|
|
230
|
+
"data_FINE": "25/05/2026",
|
|
231
|
+
"data_ini_valid_amm": "25/05/2026",
|
|
232
|
+
"data_fine_valid_amm": "25/05/2026"
|
|
233
|
+
}]
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
`esito` e `messaggio` sono assenti / `null`. Il marker di successo per S è la presenza di `data_FINE` (alias Speakeasy: `data_fine`) o di `data_fine_valid_amm` nel primo elemento di `dati`.
|
|
238
|
+
|
|
239
|
+
### Detection lato client (programmatic)
|
|
240
|
+
|
|
241
|
+
Se usi l'SDK direttamente, replica questo pattern (è esattamente quello che usa la CLI `_build_result`):
|
|
242
|
+
|
|
243
|
+
```python
|
|
244
|
+
def is_success(response, tipo_operazione: str) -> bool:
|
|
245
|
+
esito = getattr(response, "esito", None)
|
|
246
|
+
dati = getattr(response, "dati", []) or []
|
|
247
|
+
if esito is not None:
|
|
248
|
+
return esito == "0"
|
|
249
|
+
if tipo_operazione == "S" and dati:
|
|
250
|
+
first = dati[0]
|
|
251
|
+
return bool(
|
|
252
|
+
getattr(first, "data_fine", None) # alias per data_FINE
|
|
253
|
+
or getattr(first, "data_fine_valid_amm", None)
|
|
254
|
+
)
|
|
255
|
+
return False
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Una check ingenua `esito == "0"` produce un **false-negative** sulle S che vanno a buon fine — è una causa nota di errori in codice cliente.
|
|
259
|
+
|
|
202
260
|
## Validazione Odonimo
|
|
203
261
|
|
|
204
262
|
L'SDK fornisce un modello `ValidatedOdonimo` con validazione delle business rules ANNCSU. Va sempre usato prima della chiamata API per intercettare errori a livello locale.
|
|
@@ -572,6 +572,7 @@ def bulk_dry_run(
|
|
|
572
572
|
"restores_succeeded": dry_result.restores_succeeded,
|
|
573
573
|
"restores_failed": dry_result.restores_failed,
|
|
574
574
|
"lookup_failures": dry_result.lookup_failures,
|
|
575
|
+
"metodo_null_skipped": dry_result.metodo_null_skipped,
|
|
575
576
|
"errors": [
|
|
576
577
|
{
|
|
577
578
|
"row_id": e[0],
|
|
@@ -605,6 +606,10 @@ def bulk_dry_run(
|
|
|
605
606
|
"Restores failed", f"[red]{dry_result.restores_failed}[/red]"
|
|
606
607
|
)
|
|
607
608
|
table.add_row("Lookup failures", str(dry_result.lookup_failures))
|
|
609
|
+
table.add_row(
|
|
610
|
+
"Metodo NULL skipped",
|
|
611
|
+
f"[yellow]{dry_result.metodo_null_skipped}[/yellow]",
|
|
612
|
+
)
|
|
608
613
|
console.print(table)
|
|
609
614
|
|
|
610
615
|
if errors:
|
|
@@ -40,6 +40,7 @@ from anncsu.common.modi import AuditContext, ModIConfig
|
|
|
40
40
|
from anncsu.common.security import Security as PASecurity
|
|
41
41
|
from anncsu.common.session import get_config_dir
|
|
42
42
|
from anncsu.coordinate import AnncsuCoordinate
|
|
43
|
+
from anncsu.coordinate.bulk.dryrun import _is_safely_restorable
|
|
43
44
|
from anncsu.coordinate.models import Accesso, Coordinate, Richiesta, Security
|
|
44
45
|
from anncsu.coordinate.models.validated import ValidatedRispostaOperazione
|
|
45
46
|
from anncsu.pa import AnncsuConsultazione
|
|
@@ -829,6 +830,32 @@ def dry_run(
|
|
|
829
830
|
console.print(f" Quota: {original.quota or 'N/A'}")
|
|
830
831
|
console.print(f" Metodo: {original.metodo or 'N/A'}\n")
|
|
831
832
|
|
|
833
|
+
# Pre-flight safety check: skip records whose original ``metodo`` is not
|
|
834
|
+
# one of the valid OAS values (``"1".."4"``). For such legacy records the
|
|
835
|
+
# update would succeed but the restore would fail with ANNCSU code 130,
|
|
836
|
+
# leaving the production data permanently overwritten. The dry-run
|
|
837
|
+
# guarantees "zero changes", so we bail out before any API write.
|
|
838
|
+
if not _is_safely_restorable(original.metodo):
|
|
839
|
+
if not json_output:
|
|
840
|
+
console.print(
|
|
841
|
+
"[yellow]Skipped:[/yellow] original ``metodo`` is "
|
|
842
|
+
f"{original.metodo!r}, which is not a valid restorable value "
|
|
843
|
+
"(expected '1', '2', '3', or '4'). No update or restore was "
|
|
844
|
+
"attempted to preserve the dry-run guarantee.\n"
|
|
845
|
+
)
|
|
846
|
+
skip_result = DryRunResult(
|
|
847
|
+
success=True,
|
|
848
|
+
original_coordinates=original,
|
|
849
|
+
test_update=None,
|
|
850
|
+
restore=None,
|
|
851
|
+
restore_failed=False,
|
|
852
|
+
skipped=True,
|
|
853
|
+
skip_reason="original_metodo_null_or_invalid",
|
|
854
|
+
)
|
|
855
|
+
if json_output:
|
|
856
|
+
print(skip_result.model_dump_json(indent=2))
|
|
857
|
+
return
|
|
858
|
+
|
|
832
859
|
# Step 2: Perform test update
|
|
833
860
|
if not json_output:
|
|
834
861
|
console.print("[bold]Step 2:[/bold] Performing test update...\n")
|
|
@@ -841,31 +868,13 @@ def dry_run(
|
|
|
841
868
|
modi_audience=coord_server,
|
|
842
869
|
)
|
|
843
870
|
|
|
844
|
-
#
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
y=original.coord_y,
|
|
852
|
-
z=original.quota,
|
|
853
|
-
metodo=original.metodo,
|
|
854
|
-
)
|
|
855
|
-
else:
|
|
856
|
-
# Access has no coordinates - use test values (Roma Colosseo area)
|
|
857
|
-
# These will be restored to empty after the test
|
|
858
|
-
if not json_output:
|
|
859
|
-
console.print(
|
|
860
|
-
"[yellow]Note:[/yellow] Access has no coordinates. "
|
|
861
|
-
"Using test coordinates (will be cleared after test).\n"
|
|
862
|
-
)
|
|
863
|
-
test_coordinate = Coordinate(
|
|
864
|
-
x="12.4922309", # Roma - Colosseo longitude
|
|
865
|
-
y="41.8902102", # Roma - Colosseo latitude
|
|
866
|
-
z=None,
|
|
867
|
-
metodo="4", # Metodo 4 = Altro
|
|
868
|
-
)
|
|
871
|
+
# Use the original coordinates as test payload (round-trip).
|
|
872
|
+
test_coordinate = Coordinate(
|
|
873
|
+
x=original.coord_x,
|
|
874
|
+
y=original.coord_y,
|
|
875
|
+
z=original.quota,
|
|
876
|
+
metodo=original.metodo,
|
|
877
|
+
)
|
|
869
878
|
|
|
870
879
|
test_richiesta = Richiesta(
|
|
871
880
|
accesso=Accesso(
|
|
@@ -972,17 +972,8 @@ def _execute_operation(
|
|
|
972
972
|
if raw_output:
|
|
973
973
|
_print_raw(response)
|
|
974
974
|
|
|
975
|
-
|
|
976
|
-
success =
|
|
977
|
-
|
|
978
|
-
result = OdonimoOperationResult(
|
|
979
|
-
success=success,
|
|
980
|
-
tipo_operazione=tipo_operazione,
|
|
981
|
-
id_richiesta=getattr(response, "id_richiesta", None),
|
|
982
|
-
esito=esito,
|
|
983
|
-
messaggio=getattr(response, "messaggio", None),
|
|
984
|
-
dati_count=len(getattr(response, "dati", []) or []),
|
|
985
|
-
)
|
|
975
|
+
result = _build_result(response, tipo_operazione)
|
|
976
|
+
success = result.success
|
|
986
977
|
|
|
987
978
|
if json_output:
|
|
988
979
|
print(result.model_dump_json(indent=2))
|
|
@@ -324,7 +324,13 @@ class DryRunResult(BaseModel):
|
|
|
324
324
|
original_coordinates: OriginalCoordinates = Field(
|
|
325
325
|
description="Original coordinates before the test"
|
|
326
326
|
)
|
|
327
|
-
test_update: CoordinateUpdateResult = Field(
|
|
327
|
+
test_update: CoordinateUpdateResult | None = Field(
|
|
328
|
+
default=None,
|
|
329
|
+
description=(
|
|
330
|
+
"Result of the test update. ``None`` when the dry-run was skipped "
|
|
331
|
+
"(see ``skipped`` / ``skip_reason``) because no API write was attempted."
|
|
332
|
+
),
|
|
333
|
+
)
|
|
328
334
|
restore: CoordinateUpdateResult | None = Field(
|
|
329
335
|
default=None, description="Result of the restore operation"
|
|
330
336
|
)
|
|
@@ -332,6 +338,20 @@ class DryRunResult(BaseModel):
|
|
|
332
338
|
default=False,
|
|
333
339
|
description="Whether restore failed (requires manual intervention)",
|
|
334
340
|
)
|
|
341
|
+
skipped: bool = Field(
|
|
342
|
+
default=False,
|
|
343
|
+
description=(
|
|
344
|
+
"Whether the dry-run was skipped before any API write because the "
|
|
345
|
+
"original record cannot be safely restored (e.g. legacy NULL metodo)."
|
|
346
|
+
),
|
|
347
|
+
)
|
|
348
|
+
skip_reason: str | None = Field(
|
|
349
|
+
default=None,
|
|
350
|
+
description=(
|
|
351
|
+
"Machine-readable reason when ``skipped`` is ``True``. "
|
|
352
|
+
"Currently the only value is ``original_metodo_null_or_invalid``."
|
|
353
|
+
),
|
|
354
|
+
)
|
|
335
355
|
error_message: str | None = Field(
|
|
336
356
|
default=None, description="Error message if operation failed"
|
|
337
357
|
)
|
|
@@ -13,6 +13,7 @@ from anncsu.coordinate.models.richiestaoperazione import (
|
|
|
13
13
|
)
|
|
14
14
|
|
|
15
15
|
DEFAULT_MAX_RECORDS = 10
|
|
16
|
+
VALID_METODO_VALUES = frozenset({"1", "2", "3", "4"})
|
|
16
17
|
|
|
17
18
|
|
|
18
19
|
def _extract_http_error(e: Exception) -> tuple[int | None, str]:
|
|
@@ -22,6 +23,20 @@ def _extract_http_error(e: Exception) -> tuple[int | None, str]:
|
|
|
22
23
|
return http_status, error_detail
|
|
23
24
|
|
|
24
25
|
|
|
26
|
+
def _is_safely_restorable(metodo: str | None) -> bool:
|
|
27
|
+
"""A record can be safely dry-run-tested only if its original ``metodo``
|
|
28
|
+
is one of the valid OAS values (``"1".."4"``).
|
|
29
|
+
|
|
30
|
+
Records with NULL / empty / out-of-range ``metodo`` are legacy data
|
|
31
|
+
that pre-date the current API validation rule. The update would
|
|
32
|
+
succeed (the new CSV value is valid) but the restore would fail with
|
|
33
|
+
ANNCSU error 130 — leaving the record permanently overwritten. To
|
|
34
|
+
preserve the "dry-run = zero changes" guarantee, such records are
|
|
35
|
+
skipped before any write call.
|
|
36
|
+
"""
|
|
37
|
+
return metodo in VALID_METODO_VALUES
|
|
38
|
+
|
|
39
|
+
|
|
25
40
|
@dataclass
|
|
26
41
|
class DryRunResult:
|
|
27
42
|
"""Result of a bulk dry-run operation."""
|
|
@@ -33,6 +48,7 @@ class DryRunResult:
|
|
|
33
48
|
restores_failed: int
|
|
34
49
|
lookup_failures: int
|
|
35
50
|
run_id: str
|
|
51
|
+
metodo_null_skipped: int = 0
|
|
36
52
|
|
|
37
53
|
|
|
38
54
|
class BulkDryRunner:
|
|
@@ -77,6 +93,7 @@ class BulkDryRunner:
|
|
|
77
93
|
restores_succeeded = 0
|
|
78
94
|
restores_failed = 0
|
|
79
95
|
lookup_failures = 0
|
|
96
|
+
metodo_null_skipped = 0
|
|
80
97
|
|
|
81
98
|
# Track which rows were successfully updated (need restore)
|
|
82
99
|
rows_to_restore: list[dict] = []
|
|
@@ -130,6 +147,21 @@ class BulkDryRunner:
|
|
|
130
147
|
original_metodo=lookup_data.metodo,
|
|
131
148
|
)
|
|
132
149
|
|
|
150
|
+
# Step 2b: Pre-flight — skip records whose original metodo is not
|
|
151
|
+
# one of {"1","2","3","4"}. Otherwise the restore would fail
|
|
152
|
+
# (ANNCSU error 130) and leave the record permanently overwritten.
|
|
153
|
+
if not _is_safely_restorable(lookup_data.metodo):
|
|
154
|
+
metodo_null_skipped += 1
|
|
155
|
+
self.db.insert_result(
|
|
156
|
+
row_id=row_id,
|
|
157
|
+
run_id=self.run_id,
|
|
158
|
+
operation="dryrun_skip",
|
|
159
|
+
error_detail=(
|
|
160
|
+
f"original_metodo_null_or_invalid: {lookup_data.metodo!r}"
|
|
161
|
+
),
|
|
162
|
+
)
|
|
163
|
+
continue
|
|
164
|
+
|
|
133
165
|
# Step 3: Update with new coordinates from CSV
|
|
134
166
|
try:
|
|
135
167
|
response = self._call_update(row)
|
|
@@ -216,6 +248,7 @@ class BulkDryRunner:
|
|
|
216
248
|
restores_succeeded=restores_succeeded,
|
|
217
249
|
restores_failed=restores_failed,
|
|
218
250
|
lookup_failures=lookup_failures,
|
|
251
|
+
metodo_null_skipped=metodo_null_skipped,
|
|
219
252
|
run_id=self.run_id,
|
|
220
253
|
)
|
|
221
254
|
|