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.
Files changed (527) hide show
  1. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/PKG-INFO +1 -1
  2. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/CLI.md +49 -18
  3. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdk-odonimi.md +58 -0
  4. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/bulk.py +5 -0
  5. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/coordinate.py +34 -25
  6. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/odonimo.py +2 -11
  7. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/models.py +21 -1
  8. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/bulk/dryrun.py +33 -0
  9. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_coordinate.py +202 -40
  10. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_odonimo.py +57 -0
  11. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/bulk/test_dryrun.py +105 -0
  12. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.devcontainer/README.md +0 -0
  13. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.devcontainer/devcontainer.json +0 -0
  14. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.devcontainer/setup.sh +0 -0
  15. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.gitattributes +0 -0
  16. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.github/workflows/README.md +0 -0
  17. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.github/workflows/ci.yml +0 -0
  18. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.github/workflows/publish.yml +0 -0
  19. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.gitignore +0 -0
  20. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.pre-commit-config.yaml +0 -0
  21. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.python-version +0 -0
  22. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.speakeasy/gen.lock +0 -0
  23. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.speakeasy/gen.yaml +0 -0
  24. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.speakeasy/out.accessi.openapi.yaml +0 -0
  25. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.speakeasy/out.coordinate.openapi.yaml +0 -0
  26. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.speakeasy/out.odonimi.openapi.yaml +0 -0
  27. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.speakeasy/out.openapi.yaml +0 -0
  28. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.speakeasy/workflow.lock +0 -0
  29. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.speakeasy/workflow.yaml +0 -0
  30. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/.vscode/settings.json +0 -0
  31. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/CONTRIBUTING.md +0 -0
  32. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/LICENSE +0 -0
  33. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/README.md +0 -0
  34. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/USAGE.md +0 -0
  35. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/SECURITY.md +0 -0
  36. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/VALIDATION.md +0 -0
  37. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetpathparambadrequesterror.md +0 -0
  38. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetpathparaminternalservererror.md +0 -0
  39. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetpathparammethodnotallowederror.md +0 -0
  40. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetpathparamnotfounderror.md +0 -0
  41. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetpathparamunprocessableentityerror.md +0 -0
  42. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetqueryparambadrequesterror.md +0 -0
  43. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetqueryparaminternalservererror.md +0 -0
  44. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetqueryparammethodnotallowederror.md +0 -0
  45. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetqueryparamnotfounderror.md +0 -0
  46. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessigetqueryparamunprocessableentityerror.md +0 -0
  47. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessipostbadrequesterror.md +0 -0
  48. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessipostinternalservererror.md +0 -0
  49. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessipostmethodnotallowederror.md +0 -0
  50. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessipostnotfounderror.md +0 -0
  51. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessipostunprocessableentityerror.md +0 -0
  52. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetpathparambadrequesterror.md +0 -0
  53. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetpathparaminternalservererror.md +0 -0
  54. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetpathparammethodnotallowederror.md +0 -0
  55. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetpathparamnotfounderror.md +0 -0
  56. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetpathparamunprocessableentityerror.md +0 -0
  57. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetqueryparambadrequesterror.md +0 -0
  58. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetqueryparaminternalservererror.md +0 -0
  59. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetqueryparammethodnotallowederror.md +0 -0
  60. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetqueryparamnotfounderror.md +0 -0
  61. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiproggetqueryparamunprocessableentityerror.md +0 -0
  62. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiprogpostbadrequesterror.md +0 -0
  63. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiprogpostinternalservererror.md +0 -0
  64. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiprogpostmethodnotallowederror.md +0 -0
  65. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiprogpostnotfounderror.md +0 -0
  66. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoaccessiprogpostunprocessableentityerror.md +0 -0
  67. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetpathparambadrequesterror.md +0 -0
  68. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetpathparaminternalservererror.md +0 -0
  69. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetpathparammethodnotallowederror.md +0 -0
  70. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetpathparamnotfounderror.md +0 -0
  71. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetpathparamunprocessableentityerror.md +0 -0
  72. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetqueryparambadrequesterror.md +0 -0
  73. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetqueryparaminternalservererror.md +0 -0
  74. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetqueryparammethodnotallowederror.md +0 -0
  75. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetqueryparamnotfounderror.md +0 -0
  76. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimigetqueryparamunprocessableentityerror.md +0 -0
  77. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimipostbadrequesterror.md +0 -0
  78. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimipostinternalservererror.md +0 -0
  79. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimipostmethodnotallowederror.md +0 -0
  80. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimipostnotfounderror.md +0 -0
  81. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimipostunprocessableentityerror.md +0 -0
  82. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetpathparambadrequesterror.md +0 -0
  83. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetpathparaminternalservererror.md +0 -0
  84. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetpathparammethodnotallowederror.md +0 -0
  85. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetpathparamnotfounderror.md +0 -0
  86. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetpathparamunprocessableentityerror.md +0 -0
  87. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetqueryparambadrequesterror.md +0 -0
  88. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetqueryparaminternalservererror.md +0 -0
  89. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetqueryparammethodnotallowederror.md +0 -0
  90. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetqueryparamnotfounderror.md +0 -0
  91. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiproggetqueryparamunprocessableentityerror.md +0 -0
  92. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiprogpostbadrequesterror.md +0 -0
  93. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiprogpostinternalservererror.md +0 -0
  94. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiprogpostmethodnotallowederror.md +0 -0
  95. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiprogpostnotfounderror.md +0 -0
  96. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/elencoodonimiprogpostunprocessableentityerror.md +0 -0
  97. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessogetpathparambadrequesterror.md +0 -0
  98. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessogetpathparaminternalservererror.md +0 -0
  99. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessogetpathparammethodnotallowederror.md +0 -0
  100. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessogetpathparamunprocessableentityerror.md +0 -0
  101. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessogetqueryparambadrequesterror.md +0 -0
  102. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessogetqueryparaminternalservererror.md +0 -0
  103. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessogetqueryparammethodnotallowederror.md +0 -0
  104. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessogetqueryparamunprocessableentityerror.md +0 -0
  105. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessopostbadrequesterror.md +0 -0
  106. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessopostinternalservererror.md +0 -0
  107. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessopostmethodnotallowederror.md +0 -0
  108. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteaccessopostunprocessableentityerror.md +0 -0
  109. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimogetpathparambadrequesterror.md +0 -0
  110. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimogetpathparaminternalservererror.md +0 -0
  111. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimogetpathparammethodnotallowederror.md +0 -0
  112. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimogetpathparamunprocessableentityerror.md +0 -0
  113. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimogetqueryparambadrequesterror.md +0 -0
  114. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimogetqueryparaminternalservererror.md +0 -0
  115. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimogetqueryparammethodnotallowederror.md +0 -0
  116. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimogetqueryparamunprocessableentityerror.md +0 -0
  117. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimopostbadrequesterror.md +0 -0
  118. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimopostinternalservererror.md +0 -0
  119. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimopostmethodnotallowederror.md +0 -0
  120. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/esisteodonimopostunprocessableentityerror.md +0 -0
  121. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetpathparambadrequesterror.md +0 -0
  122. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetpathparaminternalservererror.md +0 -0
  123. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetpathparammethodnotallowederror.md +0 -0
  124. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetpathparamnotfounderror.md +0 -0
  125. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetpathparamunprocessableentityerror.md +0 -0
  126. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetqueryparambadrequesterror.md +0 -0
  127. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetqueryparaminternalservererror.md +0 -0
  128. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetqueryparammethodnotallowederror.md +0 -0
  129. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetqueryparamnotfounderror.md +0 -0
  130. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccgetqueryparamunprocessableentityerror.md +0 -0
  131. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccpostbadrequesterror.md +0 -0
  132. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccpostinternalservererror.md +0 -0
  133. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccpostmethodnotallowederror.md +0 -0
  134. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccpostnotfounderror.md +0 -0
  135. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazaccpostunprocessableentityerror.md +0 -0
  136. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetpathparambadrequesterror.md +0 -0
  137. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetpathparaminternalservererror.md +0 -0
  138. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetpathparammethodnotallowederror.md +0 -0
  139. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetpathparamnotfounderror.md +0 -0
  140. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetpathparamunprocessableentityerror.md +0 -0
  141. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetqueryparambadrequesterror.md +0 -0
  142. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetqueryparaminternalservererror.md +0 -0
  143. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetqueryparammethodnotallowederror.md +0 -0
  144. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetqueryparamnotfounderror.md +0 -0
  145. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareagetqueryparamunprocessableentityerror.md +0 -0
  146. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareapostbadrequesterror.md +0 -0
  147. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareapostinternalservererror.md +0 -0
  148. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareapostmethodnotallowederror.md +0 -0
  149. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareapostnotfounderror.md +0 -0
  150. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/prognazareapostunprocessableentityerror.md +0 -0
  151. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/errors/serviceunavailableerror.md +0 -0
  152. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessigetpathparamdata.md +0 -0
  153. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessigetpathparamrequest.md +0 -0
  154. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessigetpathparamresponse.md +0 -0
  155. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessigetqueryparamdata.md +0 -0
  156. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessigetqueryparamrequest.md +0 -0
  157. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessigetqueryparamresponse.md +0 -0
  158. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessipostdata.md +0 -0
  159. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessipostrequest.md +0 -0
  160. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessipostresponse.md +0 -0
  161. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiproggetpathparamdata.md +0 -0
  162. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiproggetpathparamrequest.md +0 -0
  163. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiproggetpathparamresponse.md +0 -0
  164. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiproggetqueryparamdata.md +0 -0
  165. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiproggetqueryparamrequest.md +0 -0
  166. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiproggetqueryparamresponse.md +0 -0
  167. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiprogpostdata.md +0 -0
  168. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiprogpostrequest.md +0 -0
  169. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoaccessiprogpostresponse.md +0 -0
  170. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimigetpathparamdata.md +0 -0
  171. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimigetpathparamrequest.md +0 -0
  172. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimigetpathparamresponse.md +0 -0
  173. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimigetqueryparamdata.md +0 -0
  174. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimigetqueryparamrequest.md +0 -0
  175. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimigetqueryparamresponse.md +0 -0
  176. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimipostdata.md +0 -0
  177. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimipostrequest.md +0 -0
  178. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimipostresponse.md +0 -0
  179. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiproggetpathparamdata.md +0 -0
  180. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiproggetpathparamrequest.md +0 -0
  181. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiproggetpathparamresponse.md +0 -0
  182. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiproggetqueryparamdata.md +0 -0
  183. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiproggetqueryparamrequest.md +0 -0
  184. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiproggetqueryparamresponse.md +0 -0
  185. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiprogpostdata.md +0 -0
  186. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiprogpostrequest.md +0 -0
  187. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/elencoodonimiprogpostresponse.md +0 -0
  188. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteaccessogetpathparamrequest.md +0 -0
  189. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteaccessogetpathparamresponse.md +0 -0
  190. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteaccessogetqueryparamrequest.md +0 -0
  191. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteaccessogetqueryparamresponse.md +0 -0
  192. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteaccessopostrequest.md +0 -0
  193. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteaccessopostresponse.md +0 -0
  194. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteodonimogetpathparamrequest.md +0 -0
  195. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteodonimogetpathparamresponse.md +0 -0
  196. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteodonimogetqueryparamrequest.md +0 -0
  197. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteodonimogetqueryparamresponse.md +0 -0
  198. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteodonimopostrequest.md +0 -0
  199. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/esisteodonimopostresponse.md +0 -0
  200. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccgetpathparamdata.md +0 -0
  201. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccgetpathparamrequest.md +0 -0
  202. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccgetpathparamresponse.md +0 -0
  203. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccgetqueryparamdata.md +0 -0
  204. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccgetqueryparamrequest.md +0 -0
  205. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccgetqueryparamresponse.md +0 -0
  206. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccpostdata.md +0 -0
  207. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccpostrequest.md +0 -0
  208. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazaccpostresponse.md +0 -0
  209. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareagetpathparamdata.md +0 -0
  210. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareagetpathparamrequest.md +0 -0
  211. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareagetpathparamresponse.md +0 -0
  212. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareagetqueryparamdata.md +0 -0
  213. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareagetqueryparamrequest.md +0 -0
  214. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareagetqueryparamresponse.md +0 -0
  215. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareapostdata.md +0 -0
  216. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareapostrequest.md +0 -0
  217. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/prognazareapostresponse.md +0 -0
  218. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/showstatusresponse.md +0 -0
  219. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/models/utils/retryconfig.md +0 -0
  220. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdk-accessi.md +0 -0
  221. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdk-coordinate.md +0 -0
  222. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdk-pa.md +0 -0
  223. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdks/anncsu/README.md +0 -0
  224. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdks/jsonpost/README.md +0 -0
  225. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdks/pathparam/README.md +0 -0
  226. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdks/queryparam/README.md +0 -0
  227. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/sdks/status/README.md +0 -0
  228. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/docs/speakeasy.md +0 -0
  229. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/oas/.spectral.yaml +0 -0
  230. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/oas/README.md +0 -0
  231. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/oas/dev/Specifica API - ANNCSU - Aggiornamento accessi.yaml +0 -0
  232. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/oas/dev/Specifica API - ANNCSU - Aggiornamento coordinate massivo.yml +0 -0
  233. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/oas/dev/Specifica API - ANNCSU - Aggiornamento coordinate.yml +0 -0
  234. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/oas/dev/Specifica API - ANNCSU - Aggiornamento odonimi.yaml +0 -0
  235. {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
  236. {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
  237. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/pylintrc +0 -0
  238. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/pyproject.toml +0 -0
  239. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/scripts/create_client_assertion.py +0 -0
  240. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/scripts/post_speakeasy_generation.py +0 -0
  241. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/scripts/publish.sh +0 -0
  242. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/__init__.py +0 -0
  243. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/_version.py +0 -0
  244. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/accessi.py +0 -0
  245. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/errors/__init__.py +0 -0
  246. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/errors/accesso_validation.py +0 -0
  247. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/errors/anncsuerror.py +0 -0
  248. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/errors/apierror.py +0 -0
  249. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/errors/no_response_error.py +0 -0
  250. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/errors/responsevalidationerror.py +0 -0
  251. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/errors/rispostaerrore.py +0 -0
  252. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/errors/show_statusop.py +0 -0
  253. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/models/__init__.py +0 -0
  254. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/models/richiestaoperazione.py +0 -0
  255. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/models/rispostaoperazione.py +0 -0
  256. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/models/security.py +0 -0
  257. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/models/show_statusop.py +0 -0
  258. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/models/validated.py +0 -0
  259. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/py.typed +0 -0
  260. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/sdk.py +0 -0
  261. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/sdkconfiguration.py +0 -0
  262. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/accessi/status.py +0 -0
  263. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/__init__.py +0 -0
  264. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/app.py +0 -0
  265. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/__init__.py +0 -0
  266. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/accesso.py +0 -0
  267. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/assertion.py +0 -0
  268. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/auth.py +0 -0
  269. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/config.py +0 -0
  270. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/constants.py +0 -0
  271. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/cli/commands/pa.py +0 -0
  272. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/__init__.py +0 -0
  273. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/auth.py +0 -0
  274. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/basesdk.py +0 -0
  275. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/config.py +0 -0
  276. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/errors/__init__.py +0 -0
  277. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/errors/apierror.py +0 -0
  278. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/errors/audience_mismatch.py +0 -0
  279. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/errors/base.py +0 -0
  280. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/errors/digest_serialization_mismatch.py +0 -0
  281. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/errors/no_response_error.py +0 -0
  282. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/errors/responsevalidationerror.py +0 -0
  283. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/hooks/__init__.py +0 -0
  284. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/hooks/modi_hook.py +0 -0
  285. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/hooks/registration.py +0 -0
  286. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/hooks/sdkhooks.py +0 -0
  287. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/hooks/token_validation.py +0 -0
  288. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/hooks/types.py +0 -0
  289. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/httpclient.py +0 -0
  290. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/modi.py +0 -0
  291. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/pdnd_assertion.py +0 -0
  292. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/pdnd_token.py +0 -0
  293. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/__init__.py +0 -0
  294. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/basesdk.py +0 -0
  295. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/httpclient.py +0 -0
  296. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/protocols.py +0 -0
  297. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/types/__init__.py +0 -0
  298. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/types/basemodel.py +0 -0
  299. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/__init__.py +0 -0
  300. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/annotations.py +0 -0
  301. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/datetimes.py +0 -0
  302. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/dynamic_imports.py +0 -0
  303. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/enums.py +0 -0
  304. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/eventstreaming.py +0 -0
  305. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/forms.py +0 -0
  306. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/headers.py +0 -0
  307. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/logger.py +0 -0
  308. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/metadata.py +0 -0
  309. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/queryparams.py +0 -0
  310. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/requestbodies.py +0 -0
  311. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/retries.py +0 -0
  312. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/security.py +0 -0
  313. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/serializers.py +0 -0
  314. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/unmarshal_json_response.py +0 -0
  315. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/url.py +0 -0
  316. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdk/utils/values.py +0 -0
  317. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/sdkconfiguration.py +0 -0
  318. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/security.py +0 -0
  319. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/session.py +0 -0
  320. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/types/__init__.py +0 -0
  321. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/utils/__init__.py +0 -0
  322. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/validation/__init__.py +0 -0
  323. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/validation/examples.py +0 -0
  324. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/validation/response_validator.py +0 -0
  325. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/common/validation/validators.py +0 -0
  326. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/__init__.py +0 -0
  327. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/_version.py +0 -0
  328. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/bulk/__init__.py +0 -0
  329. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/bulk/db.py +0 -0
  330. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/bulk/executor.py +0 -0
  331. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/bulk/importer.py +0 -0
  332. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/bulk/reporter.py +0 -0
  333. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/__init__.py +0 -0
  334. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/anncsuerror.py +0 -0
  335. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/apierror.py +0 -0
  336. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/coordinate_validation.py +0 -0
  337. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/no_response_error.py +0 -0
  338. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/responsevalidationerror.py +0 -0
  339. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/risposta_validation.py +0 -0
  340. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/rispostaerrore.py +0 -0
  341. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/errors/show_statusop.py +0 -0
  342. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/jsonpost.py +0 -0
  343. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/models/__init__.py +0 -0
  344. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/models/richiestaoperazione.py +0 -0
  345. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/models/rispostaoperazione.py +0 -0
  346. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/models/security.py +0 -0
  347. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/models/show_statusop.py +0 -0
  348. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/models/validated.py +0 -0
  349. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/py.typed +0 -0
  350. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/sdk.py +0 -0
  351. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/sdkconfiguration.py +0 -0
  352. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/coordinate/status.py +0 -0
  353. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/__init__.py +0 -0
  354. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/_version.py +0 -0
  355. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/errors/__init__.py +0 -0
  356. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/errors/anncsuerror.py +0 -0
  357. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/errors/apierror.py +0 -0
  358. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/errors/no_response_error.py +0 -0
  359. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/errors/odonimo_validation.py +0 -0
  360. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/errors/responsevalidationerror.py +0 -0
  361. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/errors/rispostaerrore.py +0 -0
  362. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/errors/show_statusop.py +0 -0
  363. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/models/__init__.py +0 -0
  364. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/models/autprefettura.py +0 -0
  365. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/models/provvedimento.py +0 -0
  366. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/models/richiestaoperazione.py +0 -0
  367. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/models/rispostaoperazione.py +0 -0
  368. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/models/security.py +0 -0
  369. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/models/show_statusop.py +0 -0
  370. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/models/validated.py +0 -0
  371. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/odonimi.py +0 -0
  372. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/py.typed +0 -0
  373. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/sdk.py +0 -0
  374. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/sdkconfiguration.py +0 -0
  375. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/odonimi/status.py +0 -0
  376. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/__init__.py +0 -0
  377. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/_hooks/__init__.py +0 -0
  378. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/_hooks/registration.py +0 -0
  379. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/_hooks/sdkhooks.py +0 -0
  380. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/_hooks/types.py +0 -0
  381. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/_version.py +0 -0
  382. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/__init__.py +0 -0
  383. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/anncsuerror.py +0 -0
  384. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/apierror.py +0 -0
  385. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoaccessigetpathparamop.py +0 -0
  386. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoaccessigetqueryparamop.py +0 -0
  387. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoaccessipostop.py +0 -0
  388. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoaccessiproggetpathparamop.py +0 -0
  389. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoaccessiproggetqueryparamop.py +0 -0
  390. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoaccessiprogpostop.py +0 -0
  391. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoodonimigetpathparamop.py +0 -0
  392. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoodonimigetqueryparamop.py +0 -0
  393. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoodonimipostop.py +0 -0
  394. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoodonimiproggetpathparamop.py +0 -0
  395. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoodonimiproggetqueryparamop.py +0 -0
  396. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/elencoodonimiprogpostop.py +0 -0
  397. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/esisteaccessogetpathparamop.py +0 -0
  398. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/esisteaccessogetqueryparamop.py +0 -0
  399. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/esisteaccessopostop.py +0 -0
  400. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/esisteodonimogetpathparamop.py +0 -0
  401. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/esisteodonimogetqueryparamop.py +0 -0
  402. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/esisteodonimopostop.py +0 -0
  403. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/no_response_error.py +0 -0
  404. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/prognazaccgetpathparamop.py +0 -0
  405. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/prognazaccgetqueryparamop.py +0 -0
  406. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/prognazaccpostop.py +0 -0
  407. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/prognazareagetpathparamop.py +0 -0
  408. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/prognazareagetqueryparamop.py +0 -0
  409. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/prognazareapostop.py +0 -0
  410. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/responsevalidationerror.py +0 -0
  411. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/errors/show_statusop.py +0 -0
  412. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/jsonpost.py +0 -0
  413. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/__init__.py +0 -0
  414. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoaccessigetpathparamop.py +0 -0
  415. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoaccessigetqueryparamop.py +0 -0
  416. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoaccessipostop.py +0 -0
  417. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoaccessiproggetpathparamop.py +0 -0
  418. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoaccessiproggetqueryparamop.py +0 -0
  419. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoaccessiprogpostop.py +0 -0
  420. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoodonimigetpathparamop.py +0 -0
  421. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoodonimigetqueryparamop.py +0 -0
  422. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoodonimipostop.py +0 -0
  423. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoodonimiproggetpathparamop.py +0 -0
  424. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoodonimiproggetqueryparamop.py +0 -0
  425. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/elencoodonimiprogpostop.py +0 -0
  426. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/esisteaccessogetpathparamop.py +0 -0
  427. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/esisteaccessogetqueryparamop.py +0 -0
  428. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/esisteaccessopostop.py +0 -0
  429. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/esisteodonimogetpathparamop.py +0 -0
  430. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/esisteodonimogetqueryparamop.py +0 -0
  431. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/esisteodonimopostop.py +0 -0
  432. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/prognazaccgetpathparamop.py +0 -0
  433. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/prognazaccgetqueryparamop.py +0 -0
  434. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/prognazaccpostop.py +0 -0
  435. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/prognazareagetpathparamop.py +0 -0
  436. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/prognazareagetqueryparamop.py +0 -0
  437. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/prognazareapostop.py +0 -0
  438. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/models/show_statusop.py +0 -0
  439. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/pathparam.py +0 -0
  440. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/py.typed +0 -0
  441. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/queryparam.py +0 -0
  442. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/sdk.py +0 -0
  443. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/sdkconfiguration.py +0 -0
  444. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/src/anncsu/pa/status.py +0 -0
  445. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/README.md +0 -0
  446. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/accessi/__init__.py +0 -0
  447. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/accessi/test_accesso_validation.py +0 -0
  448. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/accessi/test_do_request_signature.py +0 -0
  449. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/accessi/test_imports.py +0 -0
  450. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/__init__.py +0 -0
  451. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/conftest.py +0 -0
  452. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_accesso.py +0 -0
  453. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_assertion.py +0 -0
  454. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_auth.py +0 -0
  455. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_config.py +0 -0
  456. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_coordinate_bulk.py +0 -0
  457. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_duckdb_batch.py +0 -0
  458. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_main.py +0 -0
  459. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_pa.py +0 -0
  460. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_raw_output.py +0 -0
  461. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/cli/test_token_endpoint_resolution.py +0 -0
  462. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/__init__.py +0 -0
  463. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_auth_modi_integration.py +0 -0
  464. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_cli_env_override.py +0 -0
  465. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_config.py +0 -0
  466. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_imports.py +0 -0
  467. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_modi.py +0 -0
  468. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_modi_hook.py +0 -0
  469. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_pdnd_assertion.py +0 -0
  470. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_pdnd_auth_manager.py +0 -0
  471. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_pdnd_token.py +0 -0
  472. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_security.py +0 -0
  473. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_security_basemodel.py +0 -0
  474. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_session.py +0 -0
  475. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/common/test_token_validation_hook.py +0 -0
  476. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/conftest.py +0 -0
  477. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/__init__.py +0 -0
  478. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/bulk/__init__.py +0 -0
  479. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/bulk/test_db.py +0 -0
  480. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/bulk/test_executor.py +0 -0
  481. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/bulk/test_importer.py +0 -0
  482. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/bulk/test_integration.py +0 -0
  483. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/bulk/test_reporter.py +0 -0
  484. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/test_coordinate_validation.py +0 -0
  485. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/test_imports.py +0 -0
  486. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/test_risposta_validation.py +0 -0
  487. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/coordinate/test_sdk_hooks_integration.py +0 -0
  488. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/__init__.py +0 -0
  489. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/coordinate/__init__.py +0 -0
  490. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/coordinate/test_jsonpost_async_httpx.py +0 -0
  491. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/coordinate/test_jsonpost_httpx.py +0 -0
  492. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/coordinate/test_status_async_httpx.py +0 -0
  493. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/coordinate/test_status_httpx.py +0 -0
  494. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/pa/__init__.py +0 -0
  495. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/pa/test_jsonpost_async_httpx.py +0 -0
  496. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/pa/test_jsonpost_httpx.py +0 -0
  497. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/pa/test_pathparam_async_httpx.py +0 -0
  498. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/pa/test_pathparam_httpx.py +0 -0
  499. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/pa/test_queryparam_async_httpx.py +0 -0
  500. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/pa/test_queryparam_httpx.py +0 -0
  501. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/pa/test_status_httpx.py +0 -0
  502. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/test_sdk_instantiation.py +0 -0
  503. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/integration/test_security_in_requests.py +0 -0
  504. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/odonimi/__init__.py +0 -0
  505. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/odonimi/test_imports.py +0 -0
  506. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/odonimi/test_odonimo_validation.py +0 -0
  507. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/pa/__init__.py +0 -0
  508. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/pa/test_imports.py +0 -0
  509. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/pa/test_response_field_mapping.py +0 -0
  510. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/test_post_speakeasy_generation.py +0 -0
  511. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/__init__.py +0 -0
  512. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/coordinate/__init__.py +0 -0
  513. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/coordinate/test_coordinate_operations_validation.py +0 -0
  514. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/coordinate/test_model_factories.py +0 -0
  515. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/coordinate/test_validators.py +0 -0
  516. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/coordinate/test_validators_property.py +0 -0
  517. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/ADVANCED_TESTING.md +0 -0
  518. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/README.md +0 -0
  519. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/README_COMPREHENSIVE_TESTS.md +0 -0
  520. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/__init__.py +0 -0
  521. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/test_all_operations_validation.py +0 -0
  522. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/test_model_factories.py +0 -0
  523. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/test_model_factories_comprehensive.py +0 -0
  524. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/test_validators.py +0 -0
  525. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/pa/test_validators_property.py +0 -0
  526. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/tests/validation/test_response_validator.py +0 -0
  527. {anncsu_sdk-0.0.9.dev28 → anncsu_sdk-0.0.9.dev30}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: anncsu-sdk
3
- Version: 0.0.9.dev28
3
+ Version: 0.0.9.dev30
4
4
  Summary: ANNCSU Software Development Kit for API consumption
5
5
  Author-email: Francesco Bartoli <francesco.bartoli@geobeyond.it>
6
6
  License-File: LICENSE
@@ -877,22 +877,40 @@ Original coordinates to restore manually:
877
877
  metodo: 4
878
878
  ```
879
879
 
880
- **Handling Access Points Without Coordinates**: When an access point has no existing coordinates (X, Y, and metodo are all empty), the dry-run uses temporary test coordinates for the update test:
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
- | Field | Test Value | Description |
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
- After the test update, the command restores the original empty state. A note is displayed when test coordinates are used:
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
- **Note**: If the API does not allow restoring an access point without valid coordinates, the restore operation may fail. In this case, manual intervention may be needed.
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 │ 10
1229
- │ Updates succeeded │ 10
1246
+ │ Total tested │ 8
1247
+ │ Updates succeeded │ 8
1230
1248
  │ Updates failed │ 0 │
1231
- │ Restores succeeded │ 10
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": 10,
1242
- "updates_succeeded": 8,
1260
+ "total_tested": 8,
1261
+ "updates_succeeded": 6,
1243
1262
  "updates_failed": 2,
1244
- "restores_succeeded": 8,
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
- # Check if access has existing coordinates
845
- has_coordinates = original.coord_x and original.coord_y and original.metodo
846
-
847
- if has_coordinates:
848
- # Use existing coordinates for test
849
- test_coordinate = Coordinate(
850
- x=original.coord_x,
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
- esito = getattr(response, "esito", None)
976
- success = esito == "0"
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(description="Result of the test update")
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