anncsu-sdk 0.0.9.dev29__tar.gz → 0.0.10.dev1__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.dev29 → anncsu_sdk-0.0.10.dev1}/.github/workflows/publish.yml +1 -1
  2. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/PKG-INFO +1 -1
  3. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/CLI.md +47 -18
  4. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/cli/commands/bulk.py +5 -0
  5. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/cli/commands/coordinate.py +34 -25
  6. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/cli/models.py +21 -1
  7. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/bulk/dryrun.py +33 -0
  8. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/cli/test_coordinate.py +202 -40
  9. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/coordinate/bulk/test_dryrun.py +105 -0
  10. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.devcontainer/README.md +0 -0
  11. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.devcontainer/devcontainer.json +0 -0
  12. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.devcontainer/setup.sh +0 -0
  13. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.gitattributes +0 -0
  14. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.github/workflows/README.md +0 -0
  15. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.github/workflows/ci.yml +0 -0
  16. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.gitignore +0 -0
  17. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.pre-commit-config.yaml +0 -0
  18. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.python-version +0 -0
  19. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.speakeasy/gen.lock +0 -0
  20. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.speakeasy/gen.yaml +0 -0
  21. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.speakeasy/out.accessi.openapi.yaml +0 -0
  22. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.speakeasy/out.coordinate.openapi.yaml +0 -0
  23. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.speakeasy/out.odonimi.openapi.yaml +0 -0
  24. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.speakeasy/out.openapi.yaml +0 -0
  25. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.speakeasy/workflow.lock +0 -0
  26. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.speakeasy/workflow.yaml +0 -0
  27. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/.vscode/settings.json +0 -0
  28. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/CONTRIBUTING.md +0 -0
  29. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/LICENSE +0 -0
  30. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/README.md +0 -0
  31. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/USAGE.md +0 -0
  32. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/SECURITY.md +0 -0
  33. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/VALIDATION.md +0 -0
  34. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessigetpathparambadrequesterror.md +0 -0
  35. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessigetpathparaminternalservererror.md +0 -0
  36. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessigetpathparammethodnotallowederror.md +0 -0
  37. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessigetpathparamnotfounderror.md +0 -0
  38. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessigetpathparamunprocessableentityerror.md +0 -0
  39. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessigetqueryparambadrequesterror.md +0 -0
  40. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessigetqueryparaminternalservererror.md +0 -0
  41. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessigetqueryparammethodnotallowederror.md +0 -0
  42. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessigetqueryparamnotfounderror.md +0 -0
  43. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessigetqueryparamunprocessableentityerror.md +0 -0
  44. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessipostbadrequesterror.md +0 -0
  45. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessipostinternalservererror.md +0 -0
  46. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessipostmethodnotallowederror.md +0 -0
  47. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessipostnotfounderror.md +0 -0
  48. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessipostunprocessableentityerror.md +0 -0
  49. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessiproggetpathparambadrequesterror.md +0 -0
  50. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessiproggetpathparaminternalservererror.md +0 -0
  51. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessiproggetpathparammethodnotallowederror.md +0 -0
  52. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessiproggetpathparamnotfounderror.md +0 -0
  53. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessiproggetpathparamunprocessableentityerror.md +0 -0
  54. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessiproggetqueryparambadrequesterror.md +0 -0
  55. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessiproggetqueryparaminternalservererror.md +0 -0
  56. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessiproggetqueryparammethodnotallowederror.md +0 -0
  57. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessiproggetqueryparamnotfounderror.md +0 -0
  58. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessiproggetqueryparamunprocessableentityerror.md +0 -0
  59. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessiprogpostbadrequesterror.md +0 -0
  60. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessiprogpostinternalservererror.md +0 -0
  61. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessiprogpostmethodnotallowederror.md +0 -0
  62. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessiprogpostnotfounderror.md +0 -0
  63. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoaccessiprogpostunprocessableentityerror.md +0 -0
  64. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimigetpathparambadrequesterror.md +0 -0
  65. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimigetpathparaminternalservererror.md +0 -0
  66. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimigetpathparammethodnotallowederror.md +0 -0
  67. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimigetpathparamnotfounderror.md +0 -0
  68. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimigetpathparamunprocessableentityerror.md +0 -0
  69. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimigetqueryparambadrequesterror.md +0 -0
  70. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimigetqueryparaminternalservererror.md +0 -0
  71. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimigetqueryparammethodnotallowederror.md +0 -0
  72. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimigetqueryparamnotfounderror.md +0 -0
  73. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimigetqueryparamunprocessableentityerror.md +0 -0
  74. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimipostbadrequesterror.md +0 -0
  75. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimipostinternalservererror.md +0 -0
  76. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimipostmethodnotallowederror.md +0 -0
  77. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimipostnotfounderror.md +0 -0
  78. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimipostunprocessableentityerror.md +0 -0
  79. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimiproggetpathparambadrequesterror.md +0 -0
  80. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimiproggetpathparaminternalservererror.md +0 -0
  81. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimiproggetpathparammethodnotallowederror.md +0 -0
  82. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimiproggetpathparamnotfounderror.md +0 -0
  83. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimiproggetpathparamunprocessableentityerror.md +0 -0
  84. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimiproggetqueryparambadrequesterror.md +0 -0
  85. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimiproggetqueryparaminternalservererror.md +0 -0
  86. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimiproggetqueryparammethodnotallowederror.md +0 -0
  87. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimiproggetqueryparamnotfounderror.md +0 -0
  88. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimiproggetqueryparamunprocessableentityerror.md +0 -0
  89. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimiprogpostbadrequesterror.md +0 -0
  90. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimiprogpostinternalservererror.md +0 -0
  91. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimiprogpostmethodnotallowederror.md +0 -0
  92. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimiprogpostnotfounderror.md +0 -0
  93. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/elencoodonimiprogpostunprocessableentityerror.md +0 -0
  94. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteaccessogetpathparambadrequesterror.md +0 -0
  95. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteaccessogetpathparaminternalservererror.md +0 -0
  96. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteaccessogetpathparammethodnotallowederror.md +0 -0
  97. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteaccessogetpathparamunprocessableentityerror.md +0 -0
  98. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteaccessogetqueryparambadrequesterror.md +0 -0
  99. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteaccessogetqueryparaminternalservererror.md +0 -0
  100. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteaccessogetqueryparammethodnotallowederror.md +0 -0
  101. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteaccessogetqueryparamunprocessableentityerror.md +0 -0
  102. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteaccessopostbadrequesterror.md +0 -0
  103. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteaccessopostinternalservererror.md +0 -0
  104. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteaccessopostmethodnotallowederror.md +0 -0
  105. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteaccessopostunprocessableentityerror.md +0 -0
  106. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteodonimogetpathparambadrequesterror.md +0 -0
  107. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteodonimogetpathparaminternalservererror.md +0 -0
  108. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteodonimogetpathparammethodnotallowederror.md +0 -0
  109. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteodonimogetpathparamunprocessableentityerror.md +0 -0
  110. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteodonimogetqueryparambadrequesterror.md +0 -0
  111. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteodonimogetqueryparaminternalservererror.md +0 -0
  112. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteodonimogetqueryparammethodnotallowederror.md +0 -0
  113. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteodonimogetqueryparamunprocessableentityerror.md +0 -0
  114. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteodonimopostbadrequesterror.md +0 -0
  115. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteodonimopostinternalservererror.md +0 -0
  116. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteodonimopostmethodnotallowederror.md +0 -0
  117. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/esisteodonimopostunprocessableentityerror.md +0 -0
  118. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazaccgetpathparambadrequesterror.md +0 -0
  119. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazaccgetpathparaminternalservererror.md +0 -0
  120. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazaccgetpathparammethodnotallowederror.md +0 -0
  121. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazaccgetpathparamnotfounderror.md +0 -0
  122. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazaccgetpathparamunprocessableentityerror.md +0 -0
  123. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazaccgetqueryparambadrequesterror.md +0 -0
  124. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazaccgetqueryparaminternalservererror.md +0 -0
  125. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazaccgetqueryparammethodnotallowederror.md +0 -0
  126. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazaccgetqueryparamnotfounderror.md +0 -0
  127. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazaccgetqueryparamunprocessableentityerror.md +0 -0
  128. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazaccpostbadrequesterror.md +0 -0
  129. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazaccpostinternalservererror.md +0 -0
  130. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazaccpostmethodnotallowederror.md +0 -0
  131. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazaccpostnotfounderror.md +0 -0
  132. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazaccpostunprocessableentityerror.md +0 -0
  133. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazareagetpathparambadrequesterror.md +0 -0
  134. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazareagetpathparaminternalservererror.md +0 -0
  135. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazareagetpathparammethodnotallowederror.md +0 -0
  136. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazareagetpathparamnotfounderror.md +0 -0
  137. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazareagetpathparamunprocessableentityerror.md +0 -0
  138. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazareagetqueryparambadrequesterror.md +0 -0
  139. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazareagetqueryparaminternalservererror.md +0 -0
  140. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazareagetqueryparammethodnotallowederror.md +0 -0
  141. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazareagetqueryparamnotfounderror.md +0 -0
  142. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazareagetqueryparamunprocessableentityerror.md +0 -0
  143. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazareapostbadrequesterror.md +0 -0
  144. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazareapostinternalservererror.md +0 -0
  145. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazareapostmethodnotallowederror.md +0 -0
  146. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazareapostnotfounderror.md +0 -0
  147. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/prognazareapostunprocessableentityerror.md +0 -0
  148. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/errors/serviceunavailableerror.md +0 -0
  149. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessigetpathparamdata.md +0 -0
  150. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessigetpathparamrequest.md +0 -0
  151. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessigetpathparamresponse.md +0 -0
  152. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessigetqueryparamdata.md +0 -0
  153. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessigetqueryparamrequest.md +0 -0
  154. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessigetqueryparamresponse.md +0 -0
  155. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessipostdata.md +0 -0
  156. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessipostrequest.md +0 -0
  157. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessipostresponse.md +0 -0
  158. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessiproggetpathparamdata.md +0 -0
  159. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessiproggetpathparamrequest.md +0 -0
  160. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessiproggetpathparamresponse.md +0 -0
  161. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessiproggetqueryparamdata.md +0 -0
  162. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessiproggetqueryparamrequest.md +0 -0
  163. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessiproggetqueryparamresponse.md +0 -0
  164. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessiprogpostdata.md +0 -0
  165. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessiprogpostrequest.md +0 -0
  166. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoaccessiprogpostresponse.md +0 -0
  167. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimigetpathparamdata.md +0 -0
  168. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimigetpathparamrequest.md +0 -0
  169. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimigetpathparamresponse.md +0 -0
  170. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimigetqueryparamdata.md +0 -0
  171. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimigetqueryparamrequest.md +0 -0
  172. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimigetqueryparamresponse.md +0 -0
  173. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimipostdata.md +0 -0
  174. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimipostrequest.md +0 -0
  175. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimipostresponse.md +0 -0
  176. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimiproggetpathparamdata.md +0 -0
  177. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimiproggetpathparamrequest.md +0 -0
  178. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimiproggetpathparamresponse.md +0 -0
  179. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimiproggetqueryparamdata.md +0 -0
  180. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimiproggetqueryparamrequest.md +0 -0
  181. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimiproggetqueryparamresponse.md +0 -0
  182. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimiprogpostdata.md +0 -0
  183. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimiprogpostrequest.md +0 -0
  184. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/elencoodonimiprogpostresponse.md +0 -0
  185. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/esisteaccessogetpathparamrequest.md +0 -0
  186. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/esisteaccessogetpathparamresponse.md +0 -0
  187. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/esisteaccessogetqueryparamrequest.md +0 -0
  188. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/esisteaccessogetqueryparamresponse.md +0 -0
  189. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/esisteaccessopostrequest.md +0 -0
  190. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/esisteaccessopostresponse.md +0 -0
  191. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/esisteodonimogetpathparamrequest.md +0 -0
  192. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/esisteodonimogetpathparamresponse.md +0 -0
  193. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/esisteodonimogetqueryparamrequest.md +0 -0
  194. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/esisteodonimogetqueryparamresponse.md +0 -0
  195. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/esisteodonimopostrequest.md +0 -0
  196. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/esisteodonimopostresponse.md +0 -0
  197. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazaccgetpathparamdata.md +0 -0
  198. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazaccgetpathparamrequest.md +0 -0
  199. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazaccgetpathparamresponse.md +0 -0
  200. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazaccgetqueryparamdata.md +0 -0
  201. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazaccgetqueryparamrequest.md +0 -0
  202. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazaccgetqueryparamresponse.md +0 -0
  203. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazaccpostdata.md +0 -0
  204. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazaccpostrequest.md +0 -0
  205. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazaccpostresponse.md +0 -0
  206. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazareagetpathparamdata.md +0 -0
  207. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazareagetpathparamrequest.md +0 -0
  208. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazareagetpathparamresponse.md +0 -0
  209. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazareagetqueryparamdata.md +0 -0
  210. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazareagetqueryparamrequest.md +0 -0
  211. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazareagetqueryparamresponse.md +0 -0
  212. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazareapostdata.md +0 -0
  213. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazareapostrequest.md +0 -0
  214. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/prognazareapostresponse.md +0 -0
  215. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/showstatusresponse.md +0 -0
  216. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/models/utils/retryconfig.md +0 -0
  217. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/sdk-accessi.md +0 -0
  218. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/sdk-coordinate.md +0 -0
  219. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/sdk-odonimi.md +0 -0
  220. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/sdk-pa.md +0 -0
  221. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/sdks/anncsu/README.md +0 -0
  222. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/sdks/jsonpost/README.md +0 -0
  223. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/sdks/pathparam/README.md +0 -0
  224. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/sdks/queryparam/README.md +0 -0
  225. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/sdks/status/README.md +0 -0
  226. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/docs/speakeasy.md +0 -0
  227. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/oas/.spectral.yaml +0 -0
  228. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/oas/README.md +0 -0
  229. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/oas/dev/Specifica API - ANNCSU - Aggiornamento accessi.yaml +0 -0
  230. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/oas/dev/Specifica API - ANNCSU - Aggiornamento coordinate massivo.yml +0 -0
  231. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/oas/dev/Specifica API - ANNCSU - Aggiornamento coordinate.yml +0 -0
  232. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/oas/dev/Specifica API - ANNCSU - Aggiornamento odonimi.yaml +0 -0
  233. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/oas/dev/Specifica API - ANNCSU /342/200/223 Consultazione per le PA.yaml" +0 -0
  234. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/oas/prod/Specifica API - ANNCSU /342/200/223 Consultazione per le PA.yaml" +0 -0
  235. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/pylintrc +0 -0
  236. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/pyproject.toml +0 -0
  237. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/scripts/create_client_assertion.py +0 -0
  238. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/scripts/post_speakeasy_generation.py +0 -0
  239. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/scripts/publish.sh +0 -0
  240. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/__init__.py +0 -0
  241. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/_version.py +0 -0
  242. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/accessi.py +0 -0
  243. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/errors/__init__.py +0 -0
  244. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/errors/accesso_validation.py +0 -0
  245. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/errors/anncsuerror.py +0 -0
  246. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/errors/apierror.py +0 -0
  247. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/errors/no_response_error.py +0 -0
  248. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/errors/responsevalidationerror.py +0 -0
  249. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/errors/rispostaerrore.py +0 -0
  250. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/errors/show_statusop.py +0 -0
  251. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/models/__init__.py +0 -0
  252. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/models/richiestaoperazione.py +0 -0
  253. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/models/rispostaoperazione.py +0 -0
  254. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/models/security.py +0 -0
  255. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/models/show_statusop.py +0 -0
  256. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/models/validated.py +0 -0
  257. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/py.typed +0 -0
  258. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/sdk.py +0 -0
  259. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/sdkconfiguration.py +0 -0
  260. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/accessi/status.py +0 -0
  261. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/cli/__init__.py +0 -0
  262. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/cli/app.py +0 -0
  263. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/cli/commands/__init__.py +0 -0
  264. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/cli/commands/accesso.py +0 -0
  265. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/cli/commands/assertion.py +0 -0
  266. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/cli/commands/auth.py +0 -0
  267. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/cli/commands/config.py +0 -0
  268. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/cli/commands/constants.py +0 -0
  269. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/cli/commands/odonimo.py +0 -0
  270. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/cli/commands/pa.py +0 -0
  271. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/__init__.py +0 -0
  272. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/auth.py +0 -0
  273. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/basesdk.py +0 -0
  274. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/config.py +0 -0
  275. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/errors/__init__.py +0 -0
  276. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/errors/apierror.py +0 -0
  277. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/errors/audience_mismatch.py +0 -0
  278. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/errors/base.py +0 -0
  279. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/errors/digest_serialization_mismatch.py +0 -0
  280. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/errors/no_response_error.py +0 -0
  281. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/errors/responsevalidationerror.py +0 -0
  282. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/hooks/__init__.py +0 -0
  283. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/hooks/modi_hook.py +0 -0
  284. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/hooks/registration.py +0 -0
  285. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/hooks/sdkhooks.py +0 -0
  286. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/hooks/token_validation.py +0 -0
  287. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/hooks/types.py +0 -0
  288. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/httpclient.py +0 -0
  289. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/modi.py +0 -0
  290. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/pdnd_assertion.py +0 -0
  291. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/pdnd_token.py +0 -0
  292. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/__init__.py +0 -0
  293. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/basesdk.py +0 -0
  294. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/httpclient.py +0 -0
  295. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/protocols.py +0 -0
  296. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/types/__init__.py +0 -0
  297. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/types/basemodel.py +0 -0
  298. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/__init__.py +0 -0
  299. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/annotations.py +0 -0
  300. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/datetimes.py +0 -0
  301. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/dynamic_imports.py +0 -0
  302. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/enums.py +0 -0
  303. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/eventstreaming.py +0 -0
  304. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/forms.py +0 -0
  305. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/headers.py +0 -0
  306. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/logger.py +0 -0
  307. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/metadata.py +0 -0
  308. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/queryparams.py +0 -0
  309. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/requestbodies.py +0 -0
  310. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/retries.py +0 -0
  311. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/security.py +0 -0
  312. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/serializers.py +0 -0
  313. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/unmarshal_json_response.py +0 -0
  314. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/url.py +0 -0
  315. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdk/utils/values.py +0 -0
  316. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/sdkconfiguration.py +0 -0
  317. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/security.py +0 -0
  318. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/session.py +0 -0
  319. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/types/__init__.py +0 -0
  320. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/utils/__init__.py +0 -0
  321. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/validation/__init__.py +0 -0
  322. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/validation/examples.py +0 -0
  323. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/validation/response_validator.py +0 -0
  324. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/common/validation/validators.py +0 -0
  325. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/__init__.py +0 -0
  326. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/_version.py +0 -0
  327. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/bulk/__init__.py +0 -0
  328. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/bulk/db.py +0 -0
  329. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/bulk/executor.py +0 -0
  330. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/bulk/importer.py +0 -0
  331. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/bulk/reporter.py +0 -0
  332. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/errors/__init__.py +0 -0
  333. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/errors/anncsuerror.py +0 -0
  334. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/errors/apierror.py +0 -0
  335. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/errors/coordinate_validation.py +0 -0
  336. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/errors/no_response_error.py +0 -0
  337. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/errors/responsevalidationerror.py +0 -0
  338. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/errors/risposta_validation.py +0 -0
  339. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/errors/rispostaerrore.py +0 -0
  340. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/errors/show_statusop.py +0 -0
  341. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/jsonpost.py +0 -0
  342. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/models/__init__.py +0 -0
  343. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/models/richiestaoperazione.py +0 -0
  344. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/models/rispostaoperazione.py +0 -0
  345. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/models/security.py +0 -0
  346. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/models/show_statusop.py +0 -0
  347. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/models/validated.py +0 -0
  348. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/py.typed +0 -0
  349. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/sdk.py +0 -0
  350. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/sdkconfiguration.py +0 -0
  351. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/coordinate/status.py +0 -0
  352. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/__init__.py +0 -0
  353. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/_version.py +0 -0
  354. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/errors/__init__.py +0 -0
  355. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/errors/anncsuerror.py +0 -0
  356. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/errors/apierror.py +0 -0
  357. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/errors/no_response_error.py +0 -0
  358. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/errors/odonimo_validation.py +0 -0
  359. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/errors/responsevalidationerror.py +0 -0
  360. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/errors/rispostaerrore.py +0 -0
  361. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/errors/show_statusop.py +0 -0
  362. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/models/__init__.py +0 -0
  363. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/models/autprefettura.py +0 -0
  364. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/models/provvedimento.py +0 -0
  365. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/models/richiestaoperazione.py +0 -0
  366. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/models/rispostaoperazione.py +0 -0
  367. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/models/security.py +0 -0
  368. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/models/show_statusop.py +0 -0
  369. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/models/validated.py +0 -0
  370. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/odonimi.py +0 -0
  371. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/py.typed +0 -0
  372. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/sdk.py +0 -0
  373. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/sdkconfiguration.py +0 -0
  374. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/odonimi/status.py +0 -0
  375. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/__init__.py +0 -0
  376. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/_hooks/__init__.py +0 -0
  377. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/_hooks/registration.py +0 -0
  378. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/_hooks/sdkhooks.py +0 -0
  379. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/_hooks/types.py +0 -0
  380. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/_version.py +0 -0
  381. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/__init__.py +0 -0
  382. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/anncsuerror.py +0 -0
  383. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/apierror.py +0 -0
  384. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/elencoaccessigetpathparamop.py +0 -0
  385. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/elencoaccessigetqueryparamop.py +0 -0
  386. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/elencoaccessipostop.py +0 -0
  387. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/elencoaccessiproggetpathparamop.py +0 -0
  388. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/elencoaccessiproggetqueryparamop.py +0 -0
  389. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/elencoaccessiprogpostop.py +0 -0
  390. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/elencoodonimigetpathparamop.py +0 -0
  391. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/elencoodonimigetqueryparamop.py +0 -0
  392. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/elencoodonimipostop.py +0 -0
  393. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/elencoodonimiproggetpathparamop.py +0 -0
  394. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/elencoodonimiproggetqueryparamop.py +0 -0
  395. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/elencoodonimiprogpostop.py +0 -0
  396. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/esisteaccessogetpathparamop.py +0 -0
  397. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/esisteaccessogetqueryparamop.py +0 -0
  398. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/esisteaccessopostop.py +0 -0
  399. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/esisteodonimogetpathparamop.py +0 -0
  400. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/esisteodonimogetqueryparamop.py +0 -0
  401. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/esisteodonimopostop.py +0 -0
  402. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/no_response_error.py +0 -0
  403. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/prognazaccgetpathparamop.py +0 -0
  404. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/prognazaccgetqueryparamop.py +0 -0
  405. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/prognazaccpostop.py +0 -0
  406. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/prognazareagetpathparamop.py +0 -0
  407. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/prognazareagetqueryparamop.py +0 -0
  408. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/prognazareapostop.py +0 -0
  409. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/responsevalidationerror.py +0 -0
  410. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/errors/show_statusop.py +0 -0
  411. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/jsonpost.py +0 -0
  412. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/__init__.py +0 -0
  413. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/elencoaccessigetpathparamop.py +0 -0
  414. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/elencoaccessigetqueryparamop.py +0 -0
  415. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/elencoaccessipostop.py +0 -0
  416. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/elencoaccessiproggetpathparamop.py +0 -0
  417. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/elencoaccessiproggetqueryparamop.py +0 -0
  418. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/elencoaccessiprogpostop.py +0 -0
  419. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/elencoodonimigetpathparamop.py +0 -0
  420. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/elencoodonimigetqueryparamop.py +0 -0
  421. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/elencoodonimipostop.py +0 -0
  422. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/elencoodonimiproggetpathparamop.py +0 -0
  423. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/elencoodonimiproggetqueryparamop.py +0 -0
  424. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/elencoodonimiprogpostop.py +0 -0
  425. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/esisteaccessogetpathparamop.py +0 -0
  426. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/esisteaccessogetqueryparamop.py +0 -0
  427. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/esisteaccessopostop.py +0 -0
  428. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/esisteodonimogetpathparamop.py +0 -0
  429. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/esisteodonimogetqueryparamop.py +0 -0
  430. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/esisteodonimopostop.py +0 -0
  431. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/prognazaccgetpathparamop.py +0 -0
  432. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/prognazaccgetqueryparamop.py +0 -0
  433. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/prognazaccpostop.py +0 -0
  434. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/prognazareagetpathparamop.py +0 -0
  435. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/prognazareagetqueryparamop.py +0 -0
  436. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/prognazareapostop.py +0 -0
  437. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/models/show_statusop.py +0 -0
  438. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/pathparam.py +0 -0
  439. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/py.typed +0 -0
  440. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/queryparam.py +0 -0
  441. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/sdk.py +0 -0
  442. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/sdkconfiguration.py +0 -0
  443. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/src/anncsu/pa/status.py +0 -0
  444. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/README.md +0 -0
  445. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/accessi/__init__.py +0 -0
  446. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/accessi/test_accesso_validation.py +0 -0
  447. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/accessi/test_do_request_signature.py +0 -0
  448. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/accessi/test_imports.py +0 -0
  449. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/cli/__init__.py +0 -0
  450. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/cli/conftest.py +0 -0
  451. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/cli/test_accesso.py +0 -0
  452. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/cli/test_assertion.py +0 -0
  453. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/cli/test_auth.py +0 -0
  454. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/cli/test_config.py +0 -0
  455. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/cli/test_coordinate_bulk.py +0 -0
  456. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/cli/test_duckdb_batch.py +0 -0
  457. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/cli/test_main.py +0 -0
  458. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/cli/test_odonimo.py +0 -0
  459. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/cli/test_pa.py +0 -0
  460. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/cli/test_raw_output.py +0 -0
  461. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/cli/test_token_endpoint_resolution.py +0 -0
  462. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/common/__init__.py +0 -0
  463. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/common/test_auth_modi_integration.py +0 -0
  464. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/common/test_cli_env_override.py +0 -0
  465. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/common/test_config.py +0 -0
  466. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/common/test_imports.py +0 -0
  467. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/common/test_modi.py +0 -0
  468. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/common/test_modi_hook.py +0 -0
  469. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/common/test_pdnd_assertion.py +0 -0
  470. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/common/test_pdnd_auth_manager.py +0 -0
  471. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/common/test_pdnd_token.py +0 -0
  472. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/common/test_security.py +0 -0
  473. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/common/test_security_basemodel.py +0 -0
  474. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/common/test_session.py +0 -0
  475. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/common/test_token_validation_hook.py +0 -0
  476. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/conftest.py +0 -0
  477. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/coordinate/__init__.py +0 -0
  478. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/coordinate/bulk/__init__.py +0 -0
  479. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/coordinate/bulk/test_db.py +0 -0
  480. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/coordinate/bulk/test_executor.py +0 -0
  481. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/coordinate/bulk/test_importer.py +0 -0
  482. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/coordinate/bulk/test_integration.py +0 -0
  483. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/coordinate/bulk/test_reporter.py +0 -0
  484. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/coordinate/test_coordinate_validation.py +0 -0
  485. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/coordinate/test_imports.py +0 -0
  486. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/coordinate/test_risposta_validation.py +0 -0
  487. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/coordinate/test_sdk_hooks_integration.py +0 -0
  488. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/integration/__init__.py +0 -0
  489. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/integration/coordinate/__init__.py +0 -0
  490. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/integration/coordinate/test_jsonpost_async_httpx.py +0 -0
  491. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/integration/coordinate/test_jsonpost_httpx.py +0 -0
  492. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/integration/coordinate/test_status_async_httpx.py +0 -0
  493. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/integration/coordinate/test_status_httpx.py +0 -0
  494. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/integration/pa/__init__.py +0 -0
  495. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/integration/pa/test_jsonpost_async_httpx.py +0 -0
  496. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/integration/pa/test_jsonpost_httpx.py +0 -0
  497. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/integration/pa/test_pathparam_async_httpx.py +0 -0
  498. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/integration/pa/test_pathparam_httpx.py +0 -0
  499. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/integration/pa/test_queryparam_async_httpx.py +0 -0
  500. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/integration/pa/test_queryparam_httpx.py +0 -0
  501. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/integration/pa/test_status_httpx.py +0 -0
  502. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/integration/test_sdk_instantiation.py +0 -0
  503. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/integration/test_security_in_requests.py +0 -0
  504. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/odonimi/__init__.py +0 -0
  505. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/odonimi/test_imports.py +0 -0
  506. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/odonimi/test_odonimo_validation.py +0 -0
  507. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/pa/__init__.py +0 -0
  508. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/pa/test_imports.py +0 -0
  509. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/pa/test_response_field_mapping.py +0 -0
  510. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/test_post_speakeasy_generation.py +0 -0
  511. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/validation/__init__.py +0 -0
  512. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/validation/coordinate/__init__.py +0 -0
  513. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/validation/coordinate/test_coordinate_operations_validation.py +0 -0
  514. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/validation/coordinate/test_model_factories.py +0 -0
  515. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/validation/coordinate/test_validators.py +0 -0
  516. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/validation/coordinate/test_validators_property.py +0 -0
  517. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/validation/pa/ADVANCED_TESTING.md +0 -0
  518. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/validation/pa/README.md +0 -0
  519. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/validation/pa/README_COMPREHENSIVE_TESTS.md +0 -0
  520. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/validation/pa/__init__.py +0 -0
  521. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/validation/pa/test_all_operations_validation.py +0 -0
  522. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/validation/pa/test_model_factories.py +0 -0
  523. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/validation/pa/test_model_factories_comprehensive.py +0 -0
  524. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/validation/pa/test_validators.py +0 -0
  525. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/validation/pa/test_validators_property.py +0 -0
  526. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/tests/validation/test_response_validator.py +0 -0
  527. {anncsu_sdk-0.0.9.dev29 → anncsu_sdk-0.0.10.dev1}/uv.lock +0 -0
@@ -16,7 +16,7 @@ jobs:
16
16
  publish:
17
17
  runs-on: ubuntu-latest
18
18
  permissions:
19
- contents: read
19
+ contents: write # Required for softprops/action-gh-release to create GitHub Releases on tag pushes
20
20
  id-token: write # Required for trusted publishing (optional but recommended)
21
21
 
22
22
  steps:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: anncsu-sdk
3
- Version: 0.0.9.dev29
3
+ Version: 0.0.10.dev1
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
 
891
- ```
892
- Note: Access has no coordinates. Using test coordinates (will be cleared after test).
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
+ }
893
909
  ```
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
 
@@ -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(
@@ -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
 
@@ -964,10 +964,17 @@ class TestCoordinateDryRun:
964
964
  )
965
965
  assert call_kwargs[1]["accparz"] == "10"
966
966
 
967
- def test_dry_run_access_without_coordinates_uses_test_values(
967
+ def test_dry_run_skips_access_without_metodo_via_search(
968
968
  self, cli_runner: CliRunner, tmp_path: Path, mock_private_key: Path
969
969
  ) -> None:
970
- """Test that dry-run uses test coordinates when access has no existing coordinates."""
970
+ """Access with NULL ``metodo`` reached via --codcom/--denom search must
971
+ be skipped — no test coordinates are invented, no API write occurs.
972
+
973
+ This replaces the prior ``..._uses_test_values`` test (the Colosseo
974
+ fallback) which violated the "dry-run = zero changes" guarantee
975
+ because the eventual restore to NULL metodo always failed with
976
+ ANNCSU error 130.
977
+ """
971
978
  from anncsu.cli import app
972
979
 
973
980
  with cli_runner.isolated_filesystem(temp_dir=tmp_path):
@@ -990,21 +997,20 @@ class TestCoordinateDryRun:
990
997
  "anncsu.cli.commands.coordinate.AnncsuConsultazione"
991
998
  ) as mock_consult_sdk:
992
999
  consult_sdk = MagicMock()
993
- # Mock odonimo response
994
1000
  odonimo_response = MagicMock()
995
1001
  odonimo_response.data = [MagicMock()]
996
1002
  odonimo_response.data[0].prognaz = "987654"
997
1003
  odonimo_response.data[0].dug = "VIA"
998
1004
  odonimo_response.data[0].denomuff = "ROMA"
999
1005
  consult_sdk.queryparam.elencoodonimiprog_get_query_param.return_value = odonimo_response
1000
- # Mock access response - NO COORDINATES
1006
+ # Access with NO metodo (legacy data)
1001
1007
  search_response = MagicMock()
1002
1008
  search_response.data = [MagicMock()]
1003
1009
  search_response.data[0].prognazacc = "5256880"
1004
- search_response.data[0].coord_x = None # No X
1005
- search_response.data[0].coord_y = None # No Y
1010
+ search_response.data[0].coord_x = None
1011
+ search_response.data[0].coord_y = None
1006
1012
  search_response.data[0].quota = None
1007
- search_response.data[0].metodo = None # No metodo
1013
+ search_response.data[0].metodo = None
1008
1014
  search_response.data[0].civico = "1"
1009
1015
  consult_sdk.queryparam.elencoaccessiprog_get_query_param.return_value = search_response
1010
1016
  mock_consult_sdk.return_value = consult_sdk
@@ -1013,22 +1019,6 @@ class TestCoordinateDryRun:
1013
1019
  "anncsu.cli.commands.coordinate.AnncsuCoordinate"
1014
1020
  ) as mock_coord_sdk:
1015
1021
  coord_sdk = MagicMock()
1016
- # Test update succeeds
1017
- update_response = create_mock_response(
1018
- id_richiesta="REQ-TEST-123",
1019
- esito="0",
1020
- messaggio="Test update OK",
1021
- )
1022
- # Restore succeeds
1023
- restore_response = create_mock_response(
1024
- id_richiesta="REQ-RESTORE-456",
1025
- esito="0",
1026
- messaggio="Restore OK",
1027
- )
1028
- coord_sdk.json_post.gestionecoordinate.side_effect = [
1029
- update_response,
1030
- restore_response,
1031
- ]
1032
1022
  mock_coord_sdk.return_value = coord_sdk
1033
1023
 
1034
1024
  result = cli_runner.invoke(
@@ -1043,23 +1033,195 @@ class TestCoordinateDryRun:
1043
1033
  ],
1044
1034
  )
1045
1035
 
1046
- assert result.exit_code == 0
1047
- # Should show note about using test coordinates
1048
- assert "no coordinates" in result.output.lower()
1049
- # Verify gestionecoordinate was called twice (test + restore)
1050
- assert coord_sdk.json_post.gestionecoordinate.call_count == 2
1051
- # Verify test update used Roma Colosseo test coordinates
1052
- test_call = coord_sdk.json_post.gestionecoordinate.call_args_list[0]
1053
- test_richiesta = test_call[1]["richiesta"]
1054
- assert test_richiesta.accesso.coordinate.x == "12.4922309"
1055
- assert test_richiesta.accesso.coordinate.y == "41.8902102"
1056
- assert test_richiesta.accesso.coordinate.metodo == "4"
1057
- # Verify restore uses original empty values
1058
- restore_call = coord_sdk.json_post.gestionecoordinate.call_args_list[1]
1059
- restore_richiesta = restore_call[1]["richiesta"]
1060
- assert restore_richiesta.accesso.coordinate.x is None
1061
- assert restore_richiesta.accesso.coordinate.y is None
1062
- assert restore_richiesta.accesso.coordinate.metodo is None
1036
+ assert result.exit_code == 0, result.output
1037
+ # Critical: no API write was attempted
1038
+ assert coord_sdk.json_post.gestionecoordinate.call_count == 0
1039
+ # User informed about the skip
1040
+ assert "skip" in result.output.lower()
1041
+
1042
+ def test_dry_run_skips_when_original_metodo_is_null(
1043
+ self, cli_runner: CliRunner, tmp_path: Path, mock_private_key: Path
1044
+ ) -> None:
1045
+ """Single dry-run must skip records whose original ``metodo`` is NULL.
1046
+
1047
+ The dry-run guarantee is "zero changes": if the original record has
1048
+ no valid metodo (1-4), the restore step would fail and leave the
1049
+ update committed. The CLI must:
1050
+
1051
+ - emit a warning explaining the skip
1052
+ - perform zero ``gestionecoordinate`` calls (no write whatsoever)
1053
+ - exit 0 (the dry-run completed as designed)
1054
+ """
1055
+ from anncsu.cli import app
1056
+
1057
+ with cli_runner.isolated_filesystem(temp_dir=tmp_path):
1058
+ Path("private_key.pem").write_text(mock_private_key.read_text())
1059
+ with patch(
1060
+ "anncsu.cli.commands.coordinate.ClientAssertionSettings"
1061
+ ) as mock_settings:
1062
+ mock_settings.return_value = MagicMock()
1063
+ with patch(
1064
+ "anncsu.cli.commands.coordinate.PDNDAuthManager"
1065
+ ) as mock_manager_cls:
1066
+ manager = MagicMock()
1067
+ manager.get_access_token.return_value = "tok"
1068
+ mock_manager_cls.return_value = manager
1069
+ with patch(
1070
+ "anncsu.cli.commands.coordinate.AnncsuConsultazione"
1071
+ ) as mock_consult_cls:
1072
+ consult_sdk = MagicMock()
1073
+ resp = MagicMock()
1074
+ d = MagicMock()
1075
+ d.prognazacc = "5256880"
1076
+ d.prognaz = "907156"
1077
+ d.dug = "VIA"
1078
+ d.denomuff = "ROMA"
1079
+ d.civico = "1"
1080
+ d.coord_x = None
1081
+ d.coord_y = None
1082
+ d.quota = None
1083
+ d.metodo = None
1084
+ resp.data = [d]
1085
+ consult_sdk.queryparam.prognazacc_get_query_param.return_value = resp
1086
+ mock_consult_cls.return_value = consult_sdk
1087
+ with patch(
1088
+ "anncsu.cli.commands.coordinate.AnncsuCoordinate"
1089
+ ) as mock_coord_cls:
1090
+ coord_sdk = MagicMock()
1091
+ mock_coord_cls.return_value = coord_sdk
1092
+
1093
+ result = cli_runner.invoke(
1094
+ app,
1095
+ [
1096
+ "coordinate",
1097
+ "dry-run",
1098
+ "--prognazacc",
1099
+ "5256880",
1100
+ ],
1101
+ )
1102
+
1103
+ assert result.exit_code == 0, result.output
1104
+ # The whole point: no API write was attempted
1105
+ assert coord_sdk.json_post.gestionecoordinate.call_count == 0
1106
+ # User must be informed why we did nothing
1107
+ assert "skip" in result.output.lower() or "metodo" in result.output.lower()
1108
+
1109
+ def test_dry_run_skip_emits_json_output(
1110
+ self, cli_runner: CliRunner, tmp_path: Path, mock_private_key: Path
1111
+ ) -> None:
1112
+ """``--json`` flag during a skip must produce a structured payload
1113
+ with ``skipped: true`` and a machine-readable ``skip_reason``."""
1114
+ import json as json_lib
1115
+
1116
+ from anncsu.cli import app
1117
+
1118
+ with cli_runner.isolated_filesystem(temp_dir=tmp_path):
1119
+ Path("private_key.pem").write_text(mock_private_key.read_text())
1120
+ with patch(
1121
+ "anncsu.cli.commands.coordinate.ClientAssertionSettings"
1122
+ ) as mock_settings:
1123
+ mock_settings.return_value = MagicMock()
1124
+ with patch(
1125
+ "anncsu.cli.commands.coordinate.PDNDAuthManager"
1126
+ ) as mock_manager_cls:
1127
+ manager = MagicMock()
1128
+ manager.get_access_token.return_value = "tok"
1129
+ mock_manager_cls.return_value = manager
1130
+ with patch(
1131
+ "anncsu.cli.commands.coordinate.AnncsuConsultazione"
1132
+ ) as mock_consult_cls:
1133
+ consult_sdk = MagicMock()
1134
+ resp = MagicMock()
1135
+ d = MagicMock()
1136
+ d.prognazacc = "5256880"
1137
+ d.prognaz = "907156"
1138
+ d.dug = "VIA"
1139
+ d.denomuff = "ROMA"
1140
+ d.civico = "1"
1141
+ d.coord_x = "12.0"
1142
+ d.coord_y = "42.0"
1143
+ d.quota = None
1144
+ d.metodo = "" # empty string also non-restorable
1145
+ resp.data = [d]
1146
+ consult_sdk.queryparam.prognazacc_get_query_param.return_value = resp
1147
+ mock_consult_cls.return_value = consult_sdk
1148
+ with patch(
1149
+ "anncsu.cli.commands.coordinate.AnncsuCoordinate"
1150
+ ) as mock_coord_cls:
1151
+ coord_sdk = MagicMock()
1152
+ mock_coord_cls.return_value = coord_sdk
1153
+
1154
+ result = cli_runner.invoke(
1155
+ app,
1156
+ [
1157
+ "coordinate",
1158
+ "dry-run",
1159
+ "--prognazacc",
1160
+ "5256880",
1161
+ "--json",
1162
+ ],
1163
+ )
1164
+
1165
+ assert result.exit_code == 0, result.output
1166
+ assert coord_sdk.json_post.gestionecoordinate.call_count == 0
1167
+ payload = json_lib.loads(result.output)
1168
+ assert payload.get("skipped") is True
1169
+ assert payload.get("skip_reason") == "original_metodo_null_or_invalid", payload
1170
+
1171
+ def test_dry_run_skips_when_original_metodo_out_of_range(
1172
+ self, cli_runner: CliRunner, tmp_path: Path, mock_private_key: Path
1173
+ ) -> None:
1174
+ """metodo values outside {"1","2","3","4"} are non-restorable."""
1175
+ from anncsu.cli import app
1176
+
1177
+ with cli_runner.isolated_filesystem(temp_dir=tmp_path):
1178
+ Path("private_key.pem").write_text(mock_private_key.read_text())
1179
+ with patch(
1180
+ "anncsu.cli.commands.coordinate.ClientAssertionSettings"
1181
+ ) as mock_settings:
1182
+ mock_settings.return_value = MagicMock()
1183
+ with patch(
1184
+ "anncsu.cli.commands.coordinate.PDNDAuthManager"
1185
+ ) as mock_manager_cls:
1186
+ manager = MagicMock()
1187
+ manager.get_access_token.return_value = "tok"
1188
+ mock_manager_cls.return_value = manager
1189
+ with patch(
1190
+ "anncsu.cli.commands.coordinate.AnncsuConsultazione"
1191
+ ) as mock_consult_cls:
1192
+ consult_sdk = MagicMock()
1193
+ resp = MagicMock()
1194
+ d = MagicMock()
1195
+ d.prognazacc = "5256880"
1196
+ d.prognaz = "907156"
1197
+ d.dug = "VIA"
1198
+ d.denomuff = "ROMA"
1199
+ d.civico = "1"
1200
+ d.coord_x = "12.0"
1201
+ d.coord_y = "42.0"
1202
+ d.quota = None
1203
+ d.metodo = "5"
1204
+ resp.data = [d]
1205
+ consult_sdk.queryparam.prognazacc_get_query_param.return_value = resp
1206
+ mock_consult_cls.return_value = consult_sdk
1207
+ with patch(
1208
+ "anncsu.cli.commands.coordinate.AnncsuCoordinate"
1209
+ ) as mock_coord_cls:
1210
+ coord_sdk = MagicMock()
1211
+ mock_coord_cls.return_value = coord_sdk
1212
+
1213
+ result = cli_runner.invoke(
1214
+ app,
1215
+ [
1216
+ "coordinate",
1217
+ "dry-run",
1218
+ "--prognazacc",
1219
+ "5256880",
1220
+ ],
1221
+ )
1222
+
1223
+ assert result.exit_code == 0, result.output
1224
+ assert coord_sdk.json_post.gestionecoordinate.call_count == 0
1063
1225
 
1064
1226
  def test_dry_run_with_prognazacc_skips_search(
1065
1227
  self, cli_runner: CliRunner, tmp_path: Path, mock_private_key: Path