anncsu-sdk 0.0.10.dev3__tar.gz → 0.0.10.dev5__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.10.dev3 → anncsu_sdk-0.0.10.dev5}/PKG-INFO +1 -1
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/CLI.md +38 -14
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/VALIDATION.md +2 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/sdk-accessi.md +25 -2
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/sdk-odonimi.md +29 -1
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/__init__.py +10 -1
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/errors/accesso_validation.py +68 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/models/validated.py +77 -2
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/cli/commands/accesso.py +31 -10
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/cli/commands/odonimo.py +48 -3
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/__init__.py +6 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/errors/odonimo_validation.py +60 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/models/validated.py +70 -7
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/accessi/test_accesso_validation.py +134 -1
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/cli/test_accesso.py +167 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/cli/test_odonimo.py +292 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/odonimi/test_odonimo_validation.py +180 -3
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.devcontainer/README.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.devcontainer/devcontainer.json +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.devcontainer/setup.sh +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.gitattributes +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.github/workflows/README.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.github/workflows/ci.yml +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.github/workflows/publish.yml +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.gitignore +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.pre-commit-config.yaml +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.python-version +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.speakeasy/gen.lock +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.speakeasy/gen.yaml +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.speakeasy/out.accessi.openapi.yaml +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.speakeasy/out.coordinate.openapi.yaml +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.speakeasy/out.odonimi.openapi.yaml +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.speakeasy/out.openapi.yaml +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.speakeasy/workflow.lock +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.speakeasy/workflow.yaml +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/.vscode/settings.json +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/CONTRIBUTING.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/LICENSE +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/README.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/USAGE.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/SECURITY.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessigetpathparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessigetpathparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessigetpathparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessigetpathparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessigetpathparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessigetqueryparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessigetqueryparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessigetqueryparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessigetqueryparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessigetqueryparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessipostbadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessipostinternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessipostmethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessipostnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessipostunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessiproggetpathparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessiproggetpathparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessiproggetpathparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessiproggetpathparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessiproggetpathparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessiproggetqueryparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessiproggetqueryparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessiproggetqueryparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessiproggetqueryparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessiproggetqueryparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessiprogpostbadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessiprogpostinternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessiprogpostmethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessiprogpostnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoaccessiprogpostunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimigetpathparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimigetpathparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimigetpathparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimigetpathparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimigetpathparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimigetqueryparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimigetqueryparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimigetqueryparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimigetqueryparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimigetqueryparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimipostbadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimipostinternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimipostmethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimipostnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimipostunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimiproggetpathparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimiproggetpathparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimiproggetpathparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimiproggetpathparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimiproggetpathparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimiproggetqueryparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimiproggetqueryparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimiproggetqueryparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimiproggetqueryparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimiproggetqueryparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimiprogpostbadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimiprogpostinternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimiprogpostmethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimiprogpostnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/elencoodonimiprogpostunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteaccessogetpathparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteaccessogetpathparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteaccessogetpathparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteaccessogetpathparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteaccessogetqueryparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteaccessogetqueryparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteaccessogetqueryparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteaccessogetqueryparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteaccessopostbadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteaccessopostinternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteaccessopostmethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteaccessopostunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteodonimogetpathparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteodonimogetpathparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteodonimogetpathparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteodonimogetpathparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteodonimogetqueryparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteodonimogetqueryparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteodonimogetqueryparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteodonimogetqueryparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteodonimopostbadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteodonimopostinternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteodonimopostmethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/esisteodonimopostunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazaccgetpathparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazaccgetpathparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazaccgetpathparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazaccgetpathparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazaccgetpathparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazaccgetqueryparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazaccgetqueryparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazaccgetqueryparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazaccgetqueryparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazaccgetqueryparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazaccpostbadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazaccpostinternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazaccpostmethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazaccpostnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazaccpostunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazareagetpathparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazareagetpathparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazareagetpathparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazareagetpathparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazareagetpathparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazareagetqueryparambadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazareagetqueryparaminternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazareagetqueryparammethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazareagetqueryparamnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazareagetqueryparamunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazareapostbadrequesterror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazareapostinternalservererror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazareapostmethodnotallowederror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazareapostnotfounderror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/prognazareapostunprocessableentityerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/errors/serviceunavailableerror.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessigetpathparamdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessigetpathparamrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessigetpathparamresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessigetqueryparamdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessigetqueryparamrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessigetqueryparamresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessipostdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessipostrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessipostresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessiproggetpathparamdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessiproggetpathparamrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessiproggetpathparamresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessiproggetqueryparamdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessiproggetqueryparamrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessiproggetqueryparamresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessiprogpostdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessiprogpostrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoaccessiprogpostresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimigetpathparamdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimigetpathparamrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimigetpathparamresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimigetqueryparamdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimigetqueryparamrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimigetqueryparamresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimipostdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimipostrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimipostresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimiproggetpathparamdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimiproggetpathparamrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimiproggetpathparamresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimiproggetqueryparamdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimiproggetqueryparamrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimiproggetqueryparamresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimiprogpostdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimiprogpostrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/elencoodonimiprogpostresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/esisteaccessogetpathparamrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/esisteaccessogetpathparamresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/esisteaccessogetqueryparamrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/esisteaccessogetqueryparamresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/esisteaccessopostrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/esisteaccessopostresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/esisteodonimogetpathparamrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/esisteodonimogetpathparamresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/esisteodonimogetqueryparamrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/esisteodonimogetqueryparamresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/esisteodonimopostrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/esisteodonimopostresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazaccgetpathparamdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazaccgetpathparamrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazaccgetpathparamresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazaccgetqueryparamdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazaccgetqueryparamrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazaccgetqueryparamresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazaccpostdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazaccpostrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazaccpostresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazareagetpathparamdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazareagetpathparamrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazareagetpathparamresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazareagetqueryparamdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazareagetqueryparamrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazareagetqueryparamresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazareapostdata.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazareapostrequest.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/prognazareapostresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/showstatusresponse.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/models/utils/retryconfig.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/sdk-coordinate.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/sdk-pa.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/sdks/anncsu/README.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/sdks/jsonpost/README.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/sdks/pathparam/README.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/sdks/queryparam/README.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/sdks/status/README.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/docs/speakeasy.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/oas/.spectral.yaml +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/oas/README.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/oas/dev/Specifica API - ANNCSU - Aggiornamento accessi.yaml +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/oas/dev/Specifica API - ANNCSU - Aggiornamento coordinate massivo.yml +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/oas/dev/Specifica API - ANNCSU - Aggiornamento coordinate.yml +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/oas/dev/Specifica API - ANNCSU - Aggiornamento odonimi.yaml +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/oas/dev/Specifica API - ANNCSU /342/200/223 Consultazione per le PA.yaml" +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/oas/prod/Specifica API - ANNCSU /342/200/223 Consultazione per le PA.yaml" +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/pylintrc +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/pyproject.toml +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/scripts/create_client_assertion.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/scripts/post_speakeasy_generation.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/scripts/publish.sh +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/_version.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/accessi.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/errors/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/errors/anncsuerror.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/errors/apierror.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/errors/no_response_error.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/errors/responsevalidationerror.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/errors/rispostaerrore.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/errors/show_statusop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/models/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/models/richiestaoperazione.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/models/rispostaoperazione.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/models/security.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/models/show_statusop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/py.typed +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/sdk.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/sdkconfiguration.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/status.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/cli/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/cli/app.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/cli/commands/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/cli/commands/assertion.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/cli/commands/auth.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/cli/commands/bulk.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/cli/commands/config.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/cli/commands/constants.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/cli/commands/coordinate.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/cli/commands/pa.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/cli/models.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/auth.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/basesdk.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/config.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/errors/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/errors/apierror.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/errors/audience_mismatch.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/errors/base.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/errors/digest_serialization_mismatch.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/errors/no_response_error.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/errors/responsevalidationerror.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/hooks/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/hooks/modi_hook.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/hooks/registration.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/hooks/sdkhooks.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/hooks/token_validation.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/hooks/types.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/httpclient.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/modi.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/pdnd_assertion.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/pdnd_token.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/basesdk.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/httpclient.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/protocols.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/types/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/types/basemodel.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/annotations.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/datetimes.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/dynamic_imports.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/enums.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/eventstreaming.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/forms.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/headers.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/logger.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/metadata.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/queryparams.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/requestbodies.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/retries.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/security.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/serializers.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/unmarshal_json_response.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/url.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdk/utils/values.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/sdkconfiguration.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/security.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/session.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/types/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/utils/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/validation/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/validation/examples.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/validation/response_validator.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/common/validation/validators.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/_version.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/bulk/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/bulk/db.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/bulk/dryrun.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/bulk/executor.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/bulk/importer.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/bulk/reporter.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/errors/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/errors/anncsuerror.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/errors/apierror.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/errors/coordinate_validation.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/errors/no_response_error.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/errors/responsevalidationerror.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/errors/risposta_validation.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/errors/rispostaerrore.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/errors/show_statusop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/jsonpost.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/models/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/models/richiestaoperazione.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/models/rispostaoperazione.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/models/security.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/models/show_statusop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/models/validated.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/py.typed +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/sdk.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/sdkconfiguration.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/coordinate/status.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/_version.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/errors/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/errors/anncsuerror.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/errors/apierror.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/errors/no_response_error.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/errors/responsevalidationerror.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/errors/rispostaerrore.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/errors/show_statusop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/models/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/models/autprefettura.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/models/provvedimento.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/models/richiestaoperazione.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/models/rispostaoperazione.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/models/security.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/models/show_statusop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/odonimi.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/py.typed +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/sdk.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/sdkconfiguration.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/odonimi/status.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/_hooks/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/_hooks/registration.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/_hooks/sdkhooks.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/_hooks/types.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/_version.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/anncsuerror.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/apierror.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/elencoaccessigetpathparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/elencoaccessigetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/elencoaccessipostop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/elencoaccessiproggetpathparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/elencoaccessiproggetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/elencoaccessiprogpostop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/elencoodonimigetpathparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/elencoodonimigetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/elencoodonimipostop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/elencoodonimiproggetpathparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/elencoodonimiproggetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/elencoodonimiprogpostop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/esisteaccessogetpathparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/esisteaccessogetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/esisteaccessopostop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/esisteodonimogetpathparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/esisteodonimogetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/esisteodonimopostop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/no_response_error.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/prognazaccgetpathparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/prognazaccgetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/prognazaccpostop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/prognazareagetpathparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/prognazareagetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/prognazareapostop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/responsevalidationerror.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/errors/show_statusop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/jsonpost.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/elencoaccessigetpathparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/elencoaccessigetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/elencoaccessipostop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/elencoaccessiproggetpathparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/elencoaccessiproggetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/elencoaccessiprogpostop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/elencoodonimigetpathparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/elencoodonimigetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/elencoodonimipostop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/elencoodonimiproggetpathparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/elencoodonimiproggetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/elencoodonimiprogpostop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/esisteaccessogetpathparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/esisteaccessogetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/esisteaccessopostop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/esisteodonimogetpathparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/esisteodonimogetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/esisteodonimopostop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/prognazaccgetpathparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/prognazaccgetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/prognazaccpostop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/prognazareagetpathparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/prognazareagetqueryparamop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/prognazareapostop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/models/show_statusop.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/pathparam.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/py.typed +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/queryparam.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/sdk.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/sdkconfiguration.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/pa/status.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/README.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/accessi/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/accessi/test_do_request_signature.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/accessi/test_imports.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/cli/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/cli/conftest.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/cli/test_assertion.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/cli/test_auth.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/cli/test_config.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/cli/test_coordinate.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/cli/test_coordinate_bulk.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/cli/test_duckdb_batch.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/cli/test_main.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/cli/test_pa.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/cli/test_raw_output.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/cli/test_token_endpoint_resolution.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/common/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/common/test_auth_modi_integration.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/common/test_cli_env_override.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/common/test_config.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/common/test_imports.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/common/test_modi.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/common/test_modi_hook.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/common/test_pdnd_assertion.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/common/test_pdnd_auth_manager.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/common/test_pdnd_token.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/common/test_security.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/common/test_security_basemodel.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/common/test_session.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/common/test_token_validation_hook.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/conftest.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/coordinate/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/coordinate/bulk/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/coordinate/bulk/test_db.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/coordinate/bulk/test_dryrun.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/coordinate/bulk/test_executor.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/coordinate/bulk/test_importer.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/coordinate/bulk/test_integration.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/coordinate/bulk/test_reporter.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/coordinate/test_coordinate_validation.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/coordinate/test_imports.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/coordinate/test_risposta_validation.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/coordinate/test_sdk_hooks_integration.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/integration/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/integration/coordinate/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/integration/coordinate/test_jsonpost_async_httpx.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/integration/coordinate/test_jsonpost_httpx.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/integration/coordinate/test_status_async_httpx.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/integration/coordinate/test_status_httpx.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/integration/pa/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/integration/pa/test_jsonpost_async_httpx.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/integration/pa/test_jsonpost_httpx.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/integration/pa/test_pathparam_async_httpx.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/integration/pa/test_pathparam_httpx.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/integration/pa/test_queryparam_async_httpx.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/integration/pa/test_queryparam_httpx.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/integration/pa/test_status_httpx.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/integration/test_sdk_instantiation.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/integration/test_security_in_requests.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/odonimi/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/odonimi/test_imports.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/pa/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/pa/test_imports.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/pa/test_response_field_mapping.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/test_post_speakeasy_generation.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/validation/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/validation/coordinate/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/validation/coordinate/test_coordinate_operations_validation.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/validation/coordinate/test_model_factories.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/validation/coordinate/test_validators.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/validation/coordinate/test_validators_property.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/validation/pa/ADVANCED_TESTING.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/validation/pa/README.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/validation/pa/README_COMPREHENSIVE_TESTS.md +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/validation/pa/__init__.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/validation/pa/test_all_operations_validation.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/validation/pa/test_model_factories.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/validation/pa/test_model_factories_comprehensive.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/validation/pa/test_validators.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/validation/pa/test_validators_property.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/tests/validation/test_response_validator.py +0 -0
- {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/uv.lock +0 -0
|
@@ -1905,7 +1905,7 @@ Options:
|
|
|
1905
1905
|
- `--codice-civico-comunale` - Codifica comunale dell'accesso
|
|
1906
1906
|
- `--coord-x` / `--coord-y` / `--coord-z` - Coordinate (longitudine, latitudine, quota)
|
|
1907
1907
|
- `--metodo, -m` - Metodo di rilevazione (1-4)
|
|
1908
|
-
- `--data-valid-amm` - Data inizio validità amministrativa (formato `dd/MM/yyyy`)
|
|
1908
|
+
- `--data-valid-amm` - Data inizio validità amministrativa (valid calendar date, formato `dd/MM/yyyy`). No future-date bound: the accessi OAS declares none (absent = today; for delete it is the *end* of validity)
|
|
1909
1909
|
- `--token-endpoint, -e` - PDND token endpoint URL
|
|
1910
1910
|
- `--server-url, -s` - API server URL (auto-discovered from voucher if omitted)
|
|
1911
1911
|
- `--validation/--production` - Use validation (UAT) or production environment
|
|
@@ -1913,6 +1913,10 @@ Options:
|
|
|
1913
1913
|
- `--json` - Output as JSON
|
|
1914
1914
|
- `--raw` - Print raw API response to stderr
|
|
1915
1915
|
|
|
1916
|
+
All constraints — including the wrapper fields (`--codcom` in Belfiore format X999, `--prognaz` ≤ 10 chars) and the `dd/MM/yyyy` date format — are validated **client-side before any API call** via `ValidatedRichiesta`/`ValidatedAccesso`: invalid input exits with code 1 and a `Validation error:` message without consuming PDND tokens. Server-side rejections (HTTP 400/404/500) are rendered with the structured ANNCSU fields: `Errore ANNCSU (codice N): messaggio` (non-ANNCSU bodies, e.g. RFC 7807 from the GovWay gateway, are shown raw).
|
|
1917
|
+
|
|
1918
|
+
> **Known limitation — explicit `null`**: the accessi schema has **11 nullable fields** (`codice_civico_comunale`, `numero`, `esponente`, `specificita`, `metrico`, `data_valid_amm`, `isolato`, and `coordinate.x/y/z/metodo`). The CLI can omit them or set a value, but cannot send an explicit `null` to clear an existing value — same limitation as `codice_comunale` in `odonimo update`. The SDK supports it (fields are `OptionalNullable` with the `UNSET` sentinel).
|
|
1919
|
+
|
|
1916
1920
|
JSON output:
|
|
1917
1921
|
```json
|
|
1918
1922
|
{
|
|
@@ -2192,17 +2196,17 @@ anncsu odonimo insert --codcom A062 --dug VIA \
|
|
|
2192
2196
|
Options:
|
|
2193
2197
|
|
|
2194
2198
|
- `--codcom, -c` - Codice comune (Belfiore code, e.g. `A062`) **[required]**
|
|
2195
|
-
- `--dug` - DUG (e.g. `VIA`, `PIAZZA`, `STRADA
|
|
2196
|
-
- `--denom-delibera` - Denominazione delibera (uppercase applied server-side)
|
|
2197
|
-
- `--denom-in-lingua-1` / `--denom-in-lingua-2` - Odonimo in lingua (per comuni bi/tri-lingua)
|
|
2198
|
-
- `--denom-localita` - Denominazione località (uppercase applied)
|
|
2199
|
-
- `--codice-comunale` - Codifica comunale dell'odonimo (no uppercase)
|
|
2200
|
-
- `--provv-data` - Data del provvedimento (formato `dd/MM/yyyy`)
|
|
2199
|
+
- `--dug` - DUG (e.g. `VIA`, `PIAZZA`, `STRADA`; max 30 char) **[required for I/R]**
|
|
2200
|
+
- `--denom-delibera` - Denominazione ufficiale da delibera, **senza DUG** (e.g. `DELLE ORCHIDEE` for "VIA DELLE ORCHIDEE"; max 120 char, uppercase applied server-side)
|
|
2201
|
+
- `--denom-in-lingua-1` / `--denom-in-lingua-2` - Odonimo in lingua, **DUG inclusa** (per comuni bi/tri-lingua; max 150 char, uppercase applied)
|
|
2202
|
+
- `--denom-localita` - Denominazione località (max 151 char — OAS quirk; uppercase applied)
|
|
2203
|
+
- `--codice-comunale` - Codifica comunale dell'odonimo (max 30 char, no uppercase)
|
|
2204
|
+
- `--provv-data` - Data del provvedimento (valid calendar date, formato `dd/MM/yyyy`)
|
|
2201
2205
|
- `--provv-protocollo` - Protocollo del provvedimento (max 70 char, no uppercase)
|
|
2202
|
-
- `--provv-flag-delibera` - Flag delibera
|
|
2203
|
-
- `--prefettura-data` - Data prefettura (required if `--prefettura-protocollo`)
|
|
2204
|
-
- `--prefettura-protocollo` - Protocollo prefettura (required if `--prefettura-data`)
|
|
2205
|
-
- `--data-valid-amm` - Data validità amministrativa (
|
|
2206
|
+
- `--provv-flag-delibera` - Flag delibera, **only `0`-`4` accepted**; `0` and `1` make `--provv-data` + `--provv-protocollo` required
|
|
2207
|
+
- `--prefettura-data` - Data prefettura (`dd/MM/yyyy`; required if `--prefettura-protocollo`)
|
|
2208
|
+
- `--prefettura-protocollo` - Protocollo prefettura (max 70 char; required if `--prefettura-data`)
|
|
2209
|
+
- `--data-valid-amm` - Data validità amministrativa (`dd/MM/yyyy`). Must be **≤ today** for every operation (checked client-side); for R it must additionally be ≥ the previous validity date (checked server-side)
|
|
2206
2210
|
- `--token-endpoint, -e` - PDND token endpoint URL
|
|
2207
2211
|
- `--server-url, -s` - API server URL (auto-discovered from voucher if omitted)
|
|
2208
2212
|
- `--validation/--production` - Use validation (UAT) or production environment
|
|
@@ -2211,6 +2215,8 @@ Options:
|
|
|
2211
2215
|
- `--raw` - Print raw API response to stderr
|
|
2212
2216
|
- `--dry-run` - I + S rollback (see `--dry-run` section below)
|
|
2213
2217
|
|
|
2218
|
+
All constraints above (maxLength, flag range, date format, future dates) are validated **client-side before any API call** via `ValidatedOdonimo` — invalid input exits with code 1 and a `Validation error:` message, without consuming PDND tokens. See [sdk-odonimi.md](sdk-odonimi.md#business-rules) for the full rule list.
|
|
2219
|
+
|
|
2214
2220
|
JSON output:
|
|
2215
2221
|
|
|
2216
2222
|
```json
|
|
@@ -2241,10 +2247,22 @@ anncsu odonimo update --codcom A062 \
|
|
|
2241
2247
|
|
|
2242
2248
|
Options:
|
|
2243
2249
|
|
|
2244
|
-
- All `insert` options (
|
|
2245
|
-
- `--prognaz, -p` - Progressivo nazionale dell'odonimo (required unless `--auto-resolve`)
|
|
2250
|
+
- All `insert` options (same fields, constraints and client-side validation — see the `insert` option list above)
|
|
2251
|
+
- `--prognaz, -p` - Progressivo nazionale dell'odonimo (max 10 char; required unless `--auto-resolve`)
|
|
2246
2252
|
- `--auto-resolve` - Resolve `--prognaz` via PA from `--codcom` + `--denom` (see `--auto-resolve` section)
|
|
2247
|
-
- `--denom` - Base64-encoded denomination used with `--auto-resolve`
|
|
2253
|
+
- `--denom` - Base64-encoded denomination used with `--auto-resolve` (lookup only — the **new** denomination goes in `--denom-delibera`)
|
|
2254
|
+
|
|
2255
|
+
Note: `R` is a **replace**, not a partial patch — read the current state first (`anncsu pa odonimo`) and re-pass the values you want to keep.
|
|
2256
|
+
|
|
2257
|
+
Server-side errors (HTTP 400/404/500) are rendered with the structured ANNCSU fields:
|
|
2258
|
+
|
|
2259
|
+
```
|
|
2260
|
+
Errore ANNCSU (codice 23): Errore di validazione: ...
|
|
2261
|
+
```
|
|
2262
|
+
|
|
2263
|
+
When an `R` with `--data-valid-amm` fails server-side, the CLI also prints a hint about the rule it cannot check client-side: *per l'aggiornamento (R), `data_valid_amm` deve essere ≥ della precedente data di validità dell'odonimo*. Non-ANNCSU error bodies (e.g. RFC 7807 from the GovWay gateway) are shown raw.
|
|
2264
|
+
|
|
2265
|
+
> **Known limitation — clearing `codice_comunale`**: `codice_comunale` is the only *nullable* field of the request schema (three states: omitted / value / explicit `null`). The CLI can omit it or set a value, but cannot send an explicit `"codice_comunale": null` — i.e. there is no way to **clear** an existing codifica comunale via `update`. If this becomes a real use case, a dedicated flag (e.g. `--clear-codice-comunale`) is the planned solution. The SDK supports it already: `Richiesta(codice_comunale=None, ...)` with the field explicitly set serializes to `null`.
|
|
2248
2266
|
|
|
2249
2267
|
#### `anncsu odonimo delete`
|
|
2250
2268
|
|
|
@@ -2309,6 +2327,12 @@ Unlike `accesso --dry-run` (which operates on an existing accesso via test+resto
|
|
|
2309
2327
|
|
|
2310
2328
|
**For `update --dry-run`**: `--prognaz` and `--auto-resolve` are ignored (a warning is printed) because the R is always applied to the fake odonimo generated by the preceding I.
|
|
2311
2329
|
|
|
2330
|
+
**Client-side validation in dry-run**: user data is validated via `ValidatedOdonimo` (same rules as the real commands — maxLength, flag range, date format, future dates) before being sent. For `update --dry-run` the user R payload is validated **after** the fake I has been created: on validation error the CLI prints `Validation error (user R):`, attempts an emergency S cleanup of the fake odonimo, and exits 1.
|
|
2331
|
+
|
|
2332
|
+
**Server error rendering in dry-run**: unlike the real commands (which render `Errore ANNCSU (codice N): messaggio` plus the `data_valid_amm` hint), a server rejection inside a dry-run step is captured into that step's result — e.g. `update_op.messaggio = "Update exception: <raw body>"` — so the cycle can continue with the S cleanup. Check `test_op` / `update_op` / `rollback` in the JSON output for the per-step outcome.
|
|
2333
|
+
|
|
2334
|
+
> **Tip — reproducing the `data_valid_amm` server rule safely**: the fake odonimo is created *today*, so its current validity date is the creation date. Running `update --dry-run --data-valid-amm <past date>` makes the R violate the server rule *data_valid_amm ≥ precedente* on the fictitious odonimo — a safe way to capture the real ANNCSU error code and message without touching real data.
|
|
2335
|
+
|
|
2312
2336
|
Examples:
|
|
2313
2337
|
|
|
2314
2338
|
```bash
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
The ANNCSU SDK implements a hybrid validation approach to ensure data quality for both API requests and responses.
|
|
4
4
|
|
|
5
|
+
> **Write operations (odonimi/accessi)**: the business-rule validation for the *aggiornamento* APIs lives in dedicated models — `ValidatedOdonimo` (rules I/R/S, maxLength, flag delibera 0-4, date `dd/MM/yyyy`, `data_valid_amm` non-future) and `ValidatedAccesso`. See [sdk-odonimi.md § Validazione Odonimo](sdk-odonimi.md#validazione-odonimo) for the full rule list and error classes. This document covers the *consultazione* (PA) input/response validation.
|
|
6
|
+
|
|
5
7
|
## Overview
|
|
6
8
|
|
|
7
9
|
### Phase 1: Input Validation (Always Enabled)
|
|
@@ -221,6 +221,22 @@ Le regole sono applicate in ordine in un singolo `@model_validator(mode="after")
|
|
|
221
221
|
4. **Per `R` / `S`**: `progr_civico` obbligatorio — altrimenti `ProgrCivicoRequiredError`
|
|
222
222
|
5. **Per `I` / `R`**: esattamente uno tra `numero` e `metrico` (XOR strict) — altrimenti `NumeroMetricoMutexError`
|
|
223
223
|
6. **Coordinate**, se presenti, vengono ri-validate via `ValidatedCoordinate` (range Italia, X/Y dependency, `metodo` 1-4, `maxLength` X/Y/Z)
|
|
224
|
+
7. **Per `I` / `R`**: `sezione_censimento` obbligatoria (issue #30; l'OAS la dichiara senza `nullable: true`) — altrimenti `SezioneCensimentoRequiredError`
|
|
225
|
+
8. `data_valid_amm`, se valorizzata, deve essere una data di calendario valida in formato **`dd/MM/yyyy`** — altrimenti `InvalidDateFormatError`. **Nota**: a differenza di odonimi, l'OAS accessi *non* dichiara vincoli sul futuro (assente = data corrente; per `S` è la data di *fine* validità, per `I`/`R` quella di *inizio*) — quindi lato client si valida solo il formato
|
|
226
|
+
|
|
227
|
+
### `ValidatedRichiesta` — validazione del wrapper
|
|
228
|
+
|
|
229
|
+
Il wrapper `Richiesta` (che contiene `codcom`, `progr_nazionale` e l'oggetto `accesso`) ha un suo modello validato, usato dalla CLI prima di ogni chiamata:
|
|
230
|
+
|
|
231
|
+
- `codcom` obbligatorio e in **formato Belfiore X999** (una lettera maiuscola + tre cifre, es. `A062`) — altrimenti `CodcomRequiredError` / `CodcomFormatError`
|
|
232
|
+
- `progr_nazionale` obbligatorio e ≤ 10 caratteri — altrimenti `ProgrNazionaleRequiredError` / `AccessoMaxLengthError`
|
|
233
|
+
- l'`accesso` incorporato viene ri-validato via `ValidatedAccesso` (gli errori risalgono)
|
|
234
|
+
|
|
235
|
+
```python
|
|
236
|
+
from anncsu.accessi.models.validated import ValidatedRichiesta
|
|
237
|
+
|
|
238
|
+
ValidatedRichiesta.model_validate(richiesta.model_dump(exclude_unset=True))
|
|
239
|
+
```
|
|
224
240
|
|
|
225
241
|
### Uso del Modello Validato
|
|
226
242
|
|
|
@@ -271,6 +287,11 @@ from anncsu.accessi.errors.accesso_validation import (
|
|
|
271
287
|
NumeroMetricoMutexError, # both/neither numero+metrico per I/R
|
|
272
288
|
FieldNotAllowedForDeleteError, # campo non valorizzabile per S
|
|
273
289
|
AccessoMaxLengthError, # campo eccede maxLength
|
|
290
|
+
SezioneCensimentoRequiredError, # sezione_censimento mancante per I/R
|
|
291
|
+
InvalidDateFormatError, # data non valida o non dd/MM/yyyy
|
|
292
|
+
CodcomRequiredError, # codcom mancante (wrapper Richiesta)
|
|
293
|
+
CodcomFormatError, # codcom non in formato Belfiore X999
|
|
294
|
+
ProgrNazionaleRequiredError, # progr_nazionale mancante (wrapper)
|
|
274
295
|
)
|
|
275
296
|
|
|
276
297
|
# Catch specifico
|
|
@@ -359,8 +380,10 @@ except ModIHookError as e:
|
|
|
359
380
|
# Errore nella generazione degli header ModI
|
|
360
381
|
print(f"ModI Error: {e.message}")
|
|
361
382
|
except RispostaErrore as e:
|
|
362
|
-
# Errore dall'API
|
|
363
|
-
|
|
383
|
+
# Errore dall'API. NB: il problem+json ANNCSU NON e' RFC 7807 —
|
|
384
|
+
# schema custom id/codice/messaggio, parsato in e.data.*
|
|
385
|
+
# (str(e) e' il body JSON grezzo: non usarlo per estrarre i campi).
|
|
386
|
+
print(f"API Error code: {e.data.codice}, msg: {e.data.messaggio}")
|
|
364
387
|
except APIError as e:
|
|
365
388
|
# Errore HTTP generico
|
|
366
389
|
print(f"HTTP Error: {e.status_code}")
|
|
@@ -257,6 +257,28 @@ def is_success(response, tipo_operazione: str) -> bool:
|
|
|
257
257
|
|
|
258
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
259
|
|
|
260
|
+
## Errori HTTP (`RispostaErrore`)
|
|
261
|
+
|
|
262
|
+
I rifiuti del server (HTTP **400** richiesta non valida, **404** odonimo non trovato, **500** errore interno) arrivano come `application/problem+json`, ma **non è RFC 7807**: il contratto ANNCSU definisce uno schema custom con tre campi (`id`, `codice`, `messaggio`). L'SDK li trasforma nell'eccezione `RispostaErrore`:
|
|
263
|
+
|
|
264
|
+
```python
|
|
265
|
+
from anncsu.odonimi.errors import RispostaErrore
|
|
266
|
+
|
|
267
|
+
try:
|
|
268
|
+
response = sdk.anncsu.gestione_anncsu_odonimi_pdnd(richiesta=richiesta)
|
|
269
|
+
except RispostaErrore as e:
|
|
270
|
+
print(e.data.codice) # es. "23" — codice dal catalogo errori ANNCSU
|
|
271
|
+
print(e.data.messaggio) # es. "Errore di validazione: ..."
|
|
272
|
+
# str(e) è il body JSON grezzo della risposta
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Attenzione a due cose:
|
|
276
|
+
|
|
277
|
+
- `str(e)` (e quindi un log naive `f"errore: {e}"`) mostra il **body grezzo**, non i campi strutturati — usare sempre `e.data.codice` / `e.data.messaggio`.
|
|
278
|
+
- Se il body non è conforme allo schema ANNCSU (es. un RFC 7807 vero emesso dal gateway GovWay, con `type`/`title`/`detail`), `e.data.codice` e `e.data.messaggio` sono `None`: in quel caso l'unica informazione utile è `str(e)`.
|
|
279
|
+
|
|
280
|
+
Caso tipico di 400 su `R`: `data_valid_amm` inferiore alla precedente data di validità dell'odonimo — regola che il client **non può** verificare (richiede il valore storico). La CLI in questo caso mostra `Errore ANNCSU (codice N): messaggio` più una nota che spiega la regola.
|
|
281
|
+
|
|
260
282
|
## Validazione Odonimo
|
|
261
283
|
|
|
262
284
|
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.
|
|
@@ -273,8 +295,11 @@ Le regole sono applicate in ordine in un singolo `@model_validator(mode="after")
|
|
|
273
295
|
6. **Per `S`**: `dug` **vietato** — altrimenti `DugNotAllowedForDeleteError`
|
|
274
296
|
7. Se `provvedimento.flag_delibera ∈ {"0","1"}`: `data` + `protocollo` obbligatori — altrimenti `FlagDeliberaMissingFieldsError`
|
|
275
297
|
8. `aut_prefettura.data_pref` ↔ `protocollo_pref` mutex (entrambi o nessuno) — altrimenti `PrefetturaMutexError`
|
|
298
|
+
9. `provvedimento.flag_delibera`, se valorizzato, deve essere `"0"`..`"4"` (OAS: "valori numerici da 0 a 4") — altrimenti `FlagDeliberaInvalidValueError`
|
|
299
|
+
10. I campi data (`provvedimento.data`, `aut_prefettura.data_pref`, `data_valid_amm`), se valorizzati, devono essere date di calendario valide in formato **`dd/MM/yyyy`** (es. `"10/10/2023"`; rifiutati `"2023-10-10"`, `"31/02/2024"`) — altrimenti `InvalidDateFormatError`
|
|
300
|
+
11. `data_valid_amm` non può essere nel futuro, per **tutte** le operazioni — altrimenti `DataValidAmmInFutureError`. L'OAS dice "minore o uguale della data corrente per inserimento e soppressione. Per aggiornamento **anche** >= della precedente": l'"anche" è additivo, quindi il vincolo ≤ data corrente vale pure per `R`
|
|
276
301
|
|
|
277
|
-
|
|
302
|
+
La metà R-only della regola su `data_valid_amm` (`≥` della precedente) resta **delegata al server**: richiede il valore storico precedente, non disponibile lato client.
|
|
278
303
|
|
|
279
304
|
### Uso del Modello Validato
|
|
280
305
|
|
|
@@ -338,6 +363,9 @@ from anncsu.odonimi.errors.odonimo_validation import (
|
|
|
338
363
|
OdonimoMaxLengthError, # campo eccede maxLength OAS
|
|
339
364
|
FlagDeliberaMissingFieldsError, # flag_delibera 0/1 senza data+protocollo
|
|
340
365
|
PrefetturaMutexError, # data_pref ↔ protocollo_pref mutex
|
|
366
|
+
FlagDeliberaInvalidValueError, # flag_delibera fuori range 0-4
|
|
367
|
+
InvalidDateFormatError, # data non valida o non dd/MM/yyyy
|
|
368
|
+
DataValidAmmInFutureError, # data_valid_amm nel futuro per I/S
|
|
341
369
|
)
|
|
342
370
|
|
|
343
371
|
# Catch specifico
|
|
@@ -10,13 +10,17 @@ from ._version import (
|
|
|
10
10
|
from .errors.accesso_validation import (
|
|
11
11
|
AccessoMaxLengthError,
|
|
12
12
|
AccessoValidationError,
|
|
13
|
+
CodcomFormatError,
|
|
14
|
+
CodcomRequiredError,
|
|
13
15
|
FieldNotAllowedForDeleteError,
|
|
14
16
|
FieldNotAllowedForOperationError,
|
|
17
|
+
InvalidDateFormatError,
|
|
15
18
|
NumeroMetricoMutexError,
|
|
16
19
|
OperazioneCivicoError,
|
|
17
20
|
ProgrCivicoRequiredError,
|
|
21
|
+
ProgrNazionaleRequiredError,
|
|
18
22
|
)
|
|
19
|
-
from .models.validated import ValidatedAccesso
|
|
23
|
+
from .models.validated import ValidatedAccesso, ValidatedRichiesta
|
|
20
24
|
from .sdk import AnncsuAccessi
|
|
21
25
|
from .sdkconfiguration import SDKConfiguration
|
|
22
26
|
|
|
@@ -34,13 +38,18 @@ __all__ = [
|
|
|
34
38
|
"AccessoMaxLengthError",
|
|
35
39
|
"AccessoValidationError",
|
|
36
40
|
"AnncsuAccessi",
|
|
41
|
+
"CodcomFormatError",
|
|
42
|
+
"CodcomRequiredError",
|
|
37
43
|
"FieldNotAllowedForDeleteError",
|
|
38
44
|
"FieldNotAllowedForOperationError",
|
|
45
|
+
"InvalidDateFormatError",
|
|
39
46
|
"NumeroMetricoMutexError",
|
|
40
47
|
"OperazioneCivicoError",
|
|
41
48
|
"ProgrCivicoRequiredError",
|
|
49
|
+
"ProgrNazionaleRequiredError",
|
|
42
50
|
"SDKConfiguration",
|
|
43
51
|
"ValidatedAccesso",
|
|
52
|
+
"ValidatedRichiesta",
|
|
44
53
|
"VERSION",
|
|
45
54
|
"OPENAPI_DOC_VERSION",
|
|
46
55
|
"SPEAKEASY_GENERATOR_VERSION",
|
{anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev5}/src/anncsu/accessi/errors/accesso_validation.py
RENAMED
|
@@ -177,6 +177,70 @@ class AccessoMaxLengthError(AccessoValidationError):
|
|
|
177
177
|
)
|
|
178
178
|
|
|
179
179
|
|
|
180
|
+
@dataclass
|
|
181
|
+
class InvalidDateFormatError(AccessoValidationError):
|
|
182
|
+
"""Raised when a date field is not a valid dd/MM/yyyy calendar date.
|
|
183
|
+
|
|
184
|
+
Applies to data_valid_amm (OAS example: "08/10/2024"). NOTE: the
|
|
185
|
+
accessi OAS declares no not-in-future bound (unlike odonimi), so
|
|
186
|
+
only the format is validated client-side.
|
|
187
|
+
"""
|
|
188
|
+
|
|
189
|
+
field_name: str
|
|
190
|
+
value: str
|
|
191
|
+
|
|
192
|
+
def __str__(self) -> str:
|
|
193
|
+
return (
|
|
194
|
+
f"Il campo '{self.field_name}' deve essere una data valida nel "
|
|
195
|
+
f"formato dd/MM/yyyy (es. '08/10/2024'). "
|
|
196
|
+
f"Valore fornito: {self.value!r}"
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
@dataclass
|
|
201
|
+
class CodcomRequiredError(AccessoValidationError):
|
|
202
|
+
"""Raised when the Richiesta wrapper is missing codcom.
|
|
203
|
+
|
|
204
|
+
Per OAS spec: "Codice del comune (obbligatorio)".
|
|
205
|
+
"""
|
|
206
|
+
|
|
207
|
+
def __str__(self) -> str:
|
|
208
|
+
return "Il campo 'codcom' e' obbligatorio per tutte le operazioni."
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
@dataclass
|
|
212
|
+
class CodcomFormatError(AccessoValidationError):
|
|
213
|
+
"""Raised when codcom does not match the Belfiore format X999.
|
|
214
|
+
|
|
215
|
+
Per OAS spec: ``format: X999`` — one uppercase letter followed by
|
|
216
|
+
three digits (e.g. "A062", "H501").
|
|
217
|
+
"""
|
|
218
|
+
|
|
219
|
+
value: str
|
|
220
|
+
|
|
221
|
+
def __str__(self) -> str:
|
|
222
|
+
return (
|
|
223
|
+
f"Il campo 'codcom' deve essere un codice Belfiore nel formato "
|
|
224
|
+
f"X999 (una lettera maiuscola + tre cifre, es. 'A062'). "
|
|
225
|
+
f"Valore fornito: {self.value!r}"
|
|
226
|
+
)
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
@dataclass
|
|
230
|
+
class ProgrNazionaleRequiredError(AccessoValidationError):
|
|
231
|
+
"""Raised when the Richiesta wrapper is missing progr_nazionale.
|
|
232
|
+
|
|
233
|
+
Per OAS spec: "Progressivo nazionale (obbligatorio)" — it identifies
|
|
234
|
+
the odonimo the accesso belongs to.
|
|
235
|
+
"""
|
|
236
|
+
|
|
237
|
+
def __str__(self) -> str:
|
|
238
|
+
return (
|
|
239
|
+
"Il campo 'progr_nazionale' e' obbligatorio: identifica "
|
|
240
|
+
"l'odonimo a cui appartiene l'accesso."
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
|
|
180
244
|
__all__ = [
|
|
181
245
|
"AccessoValidationError",
|
|
182
246
|
"OperazioneCivicoError",
|
|
@@ -186,4 +250,8 @@ __all__ = [
|
|
|
186
250
|
"FieldNotAllowedForOperationError",
|
|
187
251
|
"SezioneCensimentoRequiredError",
|
|
188
252
|
"AccessoMaxLengthError",
|
|
253
|
+
"InvalidDateFormatError",
|
|
254
|
+
"CodcomRequiredError",
|
|
255
|
+
"CodcomFormatError",
|
|
256
|
+
"ProgrNazionaleRequiredError",
|
|
189
257
|
]
|
|
@@ -24,23 +24,37 @@ Rules (derived from the OAS spec):
|
|
|
24
24
|
1-4, maxLength X/Y/Z).
|
|
25
25
|
7. ``sezione_censimento`` is mandatory for ``I`` and ``R`` (OAS field has
|
|
26
26
|
no ``nullable: true``); rule 4 already forbids it for ``S``.
|
|
27
|
+
8. ``data_valid_amm``, when set, must be a valid ``dd/MM/yyyy`` calendar
|
|
28
|
+
date. NOTE: the accessi OAS declares no not-in-future bound (unlike
|
|
29
|
+
odonimi) — absent means "data corrente", for S it is the *end* of
|
|
30
|
+
validity, for I/R the *start* — so only the format is checked.
|
|
31
|
+
|
|
32
|
+
``ValidatedRichiesta`` additionally validates the wrapper fields:
|
|
33
|
+
``codcom`` (mandatory, Belfiore format X999) and ``progr_nazionale``
|
|
34
|
+
(mandatory, maxLength 10), re-validating the embedded ``accesso``.
|
|
27
35
|
"""
|
|
28
36
|
|
|
29
37
|
from __future__ import annotations
|
|
30
38
|
|
|
39
|
+
import datetime
|
|
40
|
+
import re
|
|
31
41
|
from typing import Optional
|
|
32
42
|
|
|
33
43
|
from pydantic import model_validator
|
|
34
44
|
|
|
35
45
|
from anncsu.accessi.errors.accesso_validation import (
|
|
36
46
|
AccessoMaxLengthError,
|
|
47
|
+
CodcomFormatError,
|
|
48
|
+
CodcomRequiredError,
|
|
37
49
|
FieldNotAllowedForDeleteError,
|
|
50
|
+
InvalidDateFormatError,
|
|
38
51
|
NumeroMetricoMutexError,
|
|
39
52
|
OperazioneCivicoError,
|
|
40
53
|
ProgrCivicoRequiredError,
|
|
54
|
+
ProgrNazionaleRequiredError,
|
|
41
55
|
SezioneCensimentoRequiredError,
|
|
42
56
|
)
|
|
43
|
-
from anncsu.accessi.models.richiestaoperazione import Accesso
|
|
57
|
+
from anncsu.accessi.models.richiestaoperazione import Accesso, Richiesta
|
|
44
58
|
from anncsu.coordinate.models.validated import ValidatedCoordinate
|
|
45
59
|
|
|
46
60
|
VALID_OPERAZIONI = {"I", "R", "S"}
|
|
@@ -69,6 +83,15 @@ FIELDS_NOT_ALLOWED_FOR_DELETE: tuple[str, ...] = (
|
|
|
69
83
|
"isolato",
|
|
70
84
|
)
|
|
71
85
|
|
|
86
|
+
# Strict dd/MM/yyyy: strptime alone accepts non-zero-padded dates.
|
|
87
|
+
_DATE_PATTERN = re.compile(r"^\d{2}/\d{2}/\d{4}$")
|
|
88
|
+
|
|
89
|
+
# Belfiore code: one uppercase letter + three digits (OAS format X999).
|
|
90
|
+
_CODCOM_PATTERN = re.compile(r"^[A-Z]\d{3}$")
|
|
91
|
+
|
|
92
|
+
# Wrapper-level maxLength (Richiesta).
|
|
93
|
+
PROGR_NAZIONALE_MAX_LENGTH = 10
|
|
94
|
+
|
|
72
95
|
|
|
73
96
|
class ValidatedAccesso(Accesso):
|
|
74
97
|
"""Accesso model with ANNCSU business rule validation.
|
|
@@ -136,6 +159,18 @@ class ValidatedAccesso(Accesso):
|
|
|
136
159
|
# if the embedded coordinates violate any rule.
|
|
137
160
|
ValidatedCoordinate.model_validate(payload)
|
|
138
161
|
|
|
162
|
+
# Rule 8: data_valid_amm format (no future bound in the accessi OAS)
|
|
163
|
+
value = self._get_value(self.data_valid_amm)
|
|
164
|
+
if value is not None:
|
|
165
|
+
if not _DATE_PATTERN.match(value):
|
|
166
|
+
raise InvalidDateFormatError(field_name="data_valid_amm", value=value)
|
|
167
|
+
try:
|
|
168
|
+
datetime.datetime.strptime(value, "%d/%m/%Y")
|
|
169
|
+
except ValueError:
|
|
170
|
+
raise InvalidDateFormatError(
|
|
171
|
+
field_name="data_valid_amm", value=value
|
|
172
|
+
) from None
|
|
173
|
+
|
|
139
174
|
return self
|
|
140
175
|
|
|
141
176
|
# ------------------------------------------------------------------
|
|
@@ -177,4 +212,44 @@ class ValidatedAccesso(Accesso):
|
|
|
177
212
|
)
|
|
178
213
|
|
|
179
214
|
|
|
180
|
-
|
|
215
|
+
class ValidatedRichiesta(Richiesta):
|
|
216
|
+
"""Accessi Richiesta wrapper with ANNCSU business rule validation.
|
|
217
|
+
|
|
218
|
+
Validates the wrapper fields (``codcom``, ``progr_nazionale``) and
|
|
219
|
+
re-validates the embedded ``accesso`` via ``ValidatedAccesso``.
|
|
220
|
+
|
|
221
|
+
Raises:
|
|
222
|
+
CodcomRequiredError: ``codcom`` missing
|
|
223
|
+
CodcomFormatError: ``codcom`` not in Belfiore format X999
|
|
224
|
+
ProgrNazionaleRequiredError: ``progr_nazionale`` missing
|
|
225
|
+
AccessoMaxLengthError: ``progr_nazionale`` exceeds 10 chars
|
|
226
|
+
AccessoValidationError (subclasses): bubbled up from the
|
|
227
|
+
embedded ``ValidatedAccesso``
|
|
228
|
+
"""
|
|
229
|
+
|
|
230
|
+
@model_validator(mode="after")
|
|
231
|
+
def validate_richiesta_rules(self) -> "ValidatedRichiesta":
|
|
232
|
+
"""Apply wrapper-level ANNCSU rules, then re-validate the accesso."""
|
|
233
|
+
codcom = self.codcom if self.codcom else None
|
|
234
|
+
if codcom is None:
|
|
235
|
+
raise CodcomRequiredError()
|
|
236
|
+
if not _CODCOM_PATTERN.match(codcom):
|
|
237
|
+
raise CodcomFormatError(value=codcom)
|
|
238
|
+
|
|
239
|
+
prognaz = self.progr_nazionale if self.progr_nazionale else None
|
|
240
|
+
if prognaz is None:
|
|
241
|
+
raise ProgrNazionaleRequiredError()
|
|
242
|
+
if len(prognaz) > PROGR_NAZIONALE_MAX_LENGTH:
|
|
243
|
+
raise AccessoMaxLengthError(
|
|
244
|
+
field_name="progr_nazionale",
|
|
245
|
+
value=prognaz,
|
|
246
|
+
max_length=PROGR_NAZIONALE_MAX_LENGTH,
|
|
247
|
+
)
|
|
248
|
+
|
|
249
|
+
if self.accesso is not None:
|
|
250
|
+
ValidatedAccesso.model_validate(self.accesso.model_dump(exclude_unset=True))
|
|
251
|
+
|
|
252
|
+
return self
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
__all__ = ["ValidatedAccesso", "ValidatedRichiesta"]
|
|
@@ -27,13 +27,14 @@ from rich.console import Console
|
|
|
27
27
|
from rich.table import Table
|
|
28
28
|
|
|
29
29
|
from anncsu.accessi import AnncsuAccessi
|
|
30
|
+
from anncsu.accessi.errors import RispostaErrore as AccessiRispostaErrore
|
|
30
31
|
from anncsu.accessi.models import Security
|
|
31
32
|
from anncsu.accessi.models.richiestaoperazione import (
|
|
32
33
|
Accesso,
|
|
33
34
|
Coordinate,
|
|
34
35
|
Richiesta,
|
|
35
36
|
)
|
|
36
|
-
from anncsu.accessi.models.validated import ValidatedAccesso
|
|
37
|
+
from anncsu.accessi.models.validated import ValidatedAccesso, ValidatedRichiesta
|
|
37
38
|
from anncsu.cli.commands.constants import _resolve_token_endpoint
|
|
38
39
|
from anncsu.cli.models import (
|
|
39
40
|
AccessoDryRunResult,
|
|
@@ -943,6 +944,23 @@ def _run_delete_dry_run(
|
|
|
943
944
|
raise typer.Exit(1)
|
|
944
945
|
|
|
945
946
|
|
|
947
|
+
def _render_server_error(e: AccessiRispostaErrore) -> None:
|
|
948
|
+
"""Render an ANNCSU RispostaErrore (HTTP 400/404/500) readably.
|
|
949
|
+
|
|
950
|
+
The contract's problem+json carries structured ``codice`` +
|
|
951
|
+
``messaggio``; bodies without them (e.g. RFC 7807 from the gateway)
|
|
952
|
+
fall back to the raw body.
|
|
953
|
+
"""
|
|
954
|
+
codice = getattr(e.data, "codice", None)
|
|
955
|
+
messaggio = getattr(e.data, "messaggio", None)
|
|
956
|
+
if codice or messaggio:
|
|
957
|
+
error_console.print(
|
|
958
|
+
f"[red]Errore ANNCSU[/red] (codice {codice or '—'}): {messaggio or '—'}"
|
|
959
|
+
)
|
|
960
|
+
else:
|
|
961
|
+
error_console.print(f"[red]Error:[/red] {e}")
|
|
962
|
+
|
|
963
|
+
|
|
946
964
|
def _execute_operation(
|
|
947
965
|
*,
|
|
948
966
|
operazione_civico: str,
|
|
@@ -961,10 +979,16 @@ def _execute_operation(
|
|
|
961
979
|
then issues the POST and renders the response either as JSON
|
|
962
980
|
(``--json``) or as a rich table.
|
|
963
981
|
"""
|
|
964
|
-
|
|
965
|
-
|
|
982
|
+
richiesta = Richiesta(
|
|
983
|
+
codcom=codcom,
|
|
984
|
+
progr_nazionale=progr_nazionale,
|
|
985
|
+
accesso=accesso,
|
|
986
|
+
)
|
|
987
|
+
|
|
988
|
+
# Pre-validate with business rules — wrapper (codcom X999, prognaz <= 10)
|
|
989
|
+
# AND embedded accesso — BEFORE any API call.
|
|
966
990
|
try:
|
|
967
|
-
|
|
991
|
+
ValidatedRichiesta.model_validate(richiesta.model_dump(exclude_unset=True))
|
|
968
992
|
except Exception as e:
|
|
969
993
|
error_console.print(f"[red]Validation error:[/red] {e}")
|
|
970
994
|
raise typer.Exit(1) from None
|
|
@@ -976,14 +1000,11 @@ def _execute_operation(
|
|
|
976
1000
|
modi_audience=server_url,
|
|
977
1001
|
)
|
|
978
1002
|
|
|
979
|
-
richiesta = Richiesta(
|
|
980
|
-
codcom=codcom,
|
|
981
|
-
progr_nazionale=progr_nazionale,
|
|
982
|
-
accesso=accesso,
|
|
983
|
-
)
|
|
984
|
-
|
|
985
1003
|
try:
|
|
986
1004
|
response = sdk.anncsu.gestione_anncsu_pdnd(richiesta=richiesta)
|
|
1005
|
+
except AccessiRispostaErrore as e:
|
|
1006
|
+
_render_server_error(e)
|
|
1007
|
+
raise typer.Exit(1) from None
|
|
987
1008
|
except Exception as e:
|
|
988
1009
|
error_console.print(f"[red]Error:[/red] API call failed: {e}")
|
|
989
1010
|
raise typer.Exit(1) from None
|
|
@@ -48,6 +48,7 @@ from anncsu.common.modi import AuditContext, ModIConfig
|
|
|
48
48
|
from anncsu.common.security import Security as PASecurity
|
|
49
49
|
from anncsu.common.session import get_config_dir
|
|
50
50
|
from anncsu.odonimi import AnncsuOdonimi
|
|
51
|
+
from anncsu.odonimi.errors import RispostaErrore as OdonimiRispostaErrore
|
|
51
52
|
from anncsu.odonimi.models import Security
|
|
52
53
|
from anncsu.odonimi.models.richiestaoperazione import (
|
|
53
54
|
AutPrefettura,
|
|
@@ -1364,6 +1365,36 @@ def _build_richiesta(
|
|
|
1364
1365
|
)
|
|
1365
1366
|
|
|
1366
1367
|
|
|
1368
|
+
def _render_server_error(
|
|
1369
|
+
e: OdonimiRispostaErrore,
|
|
1370
|
+
*,
|
|
1371
|
+
tipo_operazione: str,
|
|
1372
|
+
richiesta: Richiesta,
|
|
1373
|
+
) -> None:
|
|
1374
|
+
"""Render an ANNCSU ``RispostaErrore`` (HTTP 400/404/500) readably.
|
|
1375
|
+
|
|
1376
|
+
The contract's problem+json carries structured ``codice`` +
|
|
1377
|
+
``messaggio``; bodies without them (e.g. RFC 7807 from the gateway)
|
|
1378
|
+
fall back to the raw body. For R with ``data_valid_amm`` set, the
|
|
1379
|
+
server-side rule that the client cannot check is surfaced as a hint.
|
|
1380
|
+
"""
|
|
1381
|
+
codice = getattr(e.data, "codice", None)
|
|
1382
|
+
messaggio = getattr(e.data, "messaggio", None)
|
|
1383
|
+
if codice or messaggio:
|
|
1384
|
+
error_console.print(
|
|
1385
|
+
f"[red]Errore ANNCSU[/red] (codice {codice or '—'}): {messaggio or '—'}"
|
|
1386
|
+
)
|
|
1387
|
+
else:
|
|
1388
|
+
error_console.print(f"[red]Error:[/red] {e}")
|
|
1389
|
+
|
|
1390
|
+
if tipo_operazione == "R" and richiesta.data_valid_amm:
|
|
1391
|
+
error_console.print(
|
|
1392
|
+
"[yellow]Nota:[/yellow] per l'aggiornamento (R), 'data_valid_amm' "
|
|
1393
|
+
"deve essere maggiore o uguale alla precedente data di validità "
|
|
1394
|
+
"dell'odonimo (regola verificata dal server ANNCSU)."
|
|
1395
|
+
)
|
|
1396
|
+
|
|
1397
|
+
|
|
1367
1398
|
def _execute_operation(
|
|
1368
1399
|
*,
|
|
1369
1400
|
tipo_operazione: str,
|
|
@@ -1395,6 +1426,9 @@ def _execute_operation(
|
|
|
1395
1426
|
|
|
1396
1427
|
try:
|
|
1397
1428
|
response = sdk.anncsu.gestione_anncsu_odonimi_pdnd(richiesta=richiesta)
|
|
1429
|
+
except OdonimiRispostaErrore as e:
|
|
1430
|
+
_render_server_error(e, tipo_operazione=tipo_operazione, richiesta=richiesta)
|
|
1431
|
+
raise typer.Exit(1) from None
|
|
1398
1432
|
except Exception as e:
|
|
1399
1433
|
error_console.print(f"[red]Error:[/red] API call failed: {e}")
|
|
1400
1434
|
raise typer.Exit(1) from None
|
|
@@ -1532,7 +1566,10 @@ def insert(
|
|
|
1532
1566
|
str | None,
|
|
1533
1567
|
typer.Option(
|
|
1534
1568
|
"--data-valid-amm",
|
|
1535
|
-
help=
|
|
1569
|
+
help=(
|
|
1570
|
+
"Data di validità amministrativa (dd/MM/yyyy). Non può "
|
|
1571
|
+
"essere nel futuro (regola ANNCSU per I)."
|
|
1572
|
+
),
|
|
1536
1573
|
),
|
|
1537
1574
|
] = None,
|
|
1538
1575
|
token_endpoint: Annotated[
|
|
@@ -1743,7 +1780,12 @@ def update(
|
|
|
1743
1780
|
str | None,
|
|
1744
1781
|
typer.Option(
|
|
1745
1782
|
"--data-valid-amm",
|
|
1746
|
-
help=
|
|
1783
|
+
help=(
|
|
1784
|
+
"Data di validità amministrativa (dd/MM/yyyy). Non può "
|
|
1785
|
+
"essere nel futuro; inoltre per l'odonimo esistente deve "
|
|
1786
|
+
"essere >= della precedente data di validità (quest'ultima "
|
|
1787
|
+
"regola è verificata dal server ANNCSU)."
|
|
1788
|
+
),
|
|
1747
1789
|
),
|
|
1748
1790
|
] = None,
|
|
1749
1791
|
token_endpoint: Annotated[
|
|
@@ -1916,7 +1958,10 @@ def delete(
|
|
|
1916
1958
|
str | None,
|
|
1917
1959
|
typer.Option(
|
|
1918
1960
|
"--data-valid-amm",
|
|
1919
|
-
help=
|
|
1961
|
+
help=(
|
|
1962
|
+
"Data di fine validità (dd/MM/yyyy). Default: data "
|
|
1963
|
+
"corrente. Non può essere nel futuro (regola ANNCSU per S)."
|
|
1964
|
+
),
|
|
1920
1965
|
),
|
|
1921
1966
|
] = None,
|
|
1922
1967
|
token_endpoint: Annotated[
|
|
@@ -9,9 +9,12 @@ from ._version import (
|
|
|
9
9
|
)
|
|
10
10
|
from .errors.odonimo_validation import (
|
|
11
11
|
CodcomRequiredError,
|
|
12
|
+
DataValidAmmInFutureError,
|
|
12
13
|
DugNotAllowedForDeleteError,
|
|
13
14
|
DugRequiredError,
|
|
15
|
+
FlagDeliberaInvalidValueError,
|
|
14
16
|
FlagDeliberaMissingFieldsError,
|
|
17
|
+
InvalidDateFormatError,
|
|
15
18
|
OdonimoMaxLengthError,
|
|
16
19
|
OdonimoValidationError,
|
|
17
20
|
PrefetturaMutexError,
|
|
@@ -35,9 +38,12 @@ __all__ = [
|
|
|
35
38
|
"__user_agent__",
|
|
36
39
|
"AnncsuOdonimi",
|
|
37
40
|
"CodcomRequiredError",
|
|
41
|
+
"DataValidAmmInFutureError",
|
|
38
42
|
"DugNotAllowedForDeleteError",
|
|
39
43
|
"DugRequiredError",
|
|
44
|
+
"FlagDeliberaInvalidValueError",
|
|
40
45
|
"FlagDeliberaMissingFieldsError",
|
|
46
|
+
"InvalidDateFormatError",
|
|
41
47
|
"OdonimoMaxLengthError",
|
|
42
48
|
"OdonimoValidationError",
|
|
43
49
|
"PrefetturaMutexError",
|