classifyre-cli 0.4.113__tar.gz → 0.4.115__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 (286) hide show
  1. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/.turbo/turbo-build.log +1 -1
  2. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/PKG-INFO +1 -1
  3. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/package.json +1 -1
  4. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/pyproject.toml +1 -1
  5. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/outputs/rest.py +20 -5
  6. classifyre_cli-0.4.115/tests/test_rest_backpressure.py +150 -0
  7. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/uv.lock +58 -58
  8. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/.gitignore +0 -0
  9. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/.python-version +0 -0
  10. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/README.md +0 -0
  11. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/main.py +0 -0
  12. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/scripts/generate_models.py +0 -0
  13. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/__init__.py +0 -0
  14. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/config.py +0 -0
  15. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/__init__.py +0 -0
  16. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/base.py +0 -0
  17. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/broken_links/__init__.py +0 -0
  18. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/broken_links/detector.py +0 -0
  19. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/config.py +0 -0
  20. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/content/__init__.py +0 -0
  21. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/custom/__init__.py +0 -0
  22. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/custom/detector.py +0 -0
  23. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/custom/extractor.py +0 -0
  24. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/custom/runners/__init__.py +0 -0
  25. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/custom/runners/_base.py +0 -0
  26. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/custom/runners/_factory.py +0 -0
  27. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/custom/runners/_gliner2.py +0 -0
  28. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/custom/runners/_image_classification.py +0 -0
  29. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/custom/runners/_llm.py +0 -0
  30. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/custom/runners/_object_detection.py +0 -0
  31. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/custom/runners/_regex.py +0 -0
  32. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/custom/runners/_text_classification.py +0 -0
  33. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/custom/trainer.py +0 -0
  34. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/dependencies.py +0 -0
  35. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/engine_version.py +0 -0
  36. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/pii/__init__.py +0 -0
  37. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/pii/detector.py +0 -0
  38. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/secrets/__init__.py +0 -0
  39. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/secrets/detector.py +0 -0
  40. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/threat/__init__.py +0 -0
  41. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/threat/code_security_detector.py +0 -0
  42. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/detectors/threat/yara_detector.py +0 -0
  43. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/file_evaluation/__init__.py +0 -0
  44. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/file_evaluation/runner.py +0 -0
  45. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/main.py +0 -0
  46. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/models/generated_detectors.py +0 -0
  47. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/models/generated_input.py +0 -0
  48. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/models/generated_single_asset_scan_results.py +0 -0
  49. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/outputs/__init__.py +0 -0
  50. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/outputs/base.py +0 -0
  51. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/outputs/console.py +0 -0
  52. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/outputs/factory.py +0 -0
  53. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/outputs/file.py +0 -0
  54. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/pipeline/__init__.py +0 -0
  55. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/pipeline/content_provider.py +0 -0
  56. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/pipeline/detector_pipeline.py +0 -0
  57. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/pipeline/parsed_content_provider.py +0 -0
  58. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/pipeline/payload_window.py +0 -0
  59. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/pipeline/scan_cache.py +0 -0
  60. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/pipeline/text_artifact.py +0 -0
  61. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/pipeline/worker_pool.py +0 -0
  62. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/__init__.py +0 -0
  63. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/asset_metadata.py +0 -0
  64. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/atlassian_common.py +0 -0
  65. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/azure_blob_storage/__init__.py +0 -0
  66. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/azure_blob_storage/source.py +0 -0
  67. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/base.py +0 -0
  68. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/confluence/__init__.py +0 -0
  69. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/confluence/source.py +0 -0
  70. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/databricks/__init__.py +0 -0
  71. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/databricks/source.py +0 -0
  72. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/delta_lake/__init__.py +0 -0
  73. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/delta_lake/source.py +0 -0
  74. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/dependencies.py +0 -0
  75. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/dropbox/__init__.py +0 -0
  76. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/dropbox/auth.py +0 -0
  77. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/dropbox/source.py +0 -0
  78. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/elasticsearch/__init__.py +0 -0
  79. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/elasticsearch/source.py +0 -0
  80. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/email/__init__.py +0 -0
  81. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/email/source.py +0 -0
  82. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/git/__init__.py +0 -0
  83. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/git/source.py +0 -0
  84. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/google_cloud_storage/__init__.py +0 -0
  85. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/google_cloud_storage/source.py +0 -0
  86. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/google_workspace/__init__.py +0 -0
  87. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/google_workspace/source.py +0 -0
  88. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/hive/__init__.py +0 -0
  89. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/hive/source.py +0 -0
  90. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/hugging_face/__init__.py +0 -0
  91. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/hugging_face/source.py +0 -0
  92. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/iceberg/__init__.py +0 -0
  93. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/iceberg/source.py +0 -0
  94. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/jira/__init__.py +0 -0
  95. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/jira/source.py +0 -0
  96. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/kafka/__init__.py +0 -0
  97. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/kafka/rest.py +0 -0
  98. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/kafka/source.py +0 -0
  99. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/lakehouse_base.py +0 -0
  100. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/local_folder/__init__.py +0 -0
  101. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/local_folder/source.py +0 -0
  102. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/meilisearch/__init__.py +0 -0
  103. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/meilisearch/source.py +0 -0
  104. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/microsoft_365/__init__.py +0 -0
  105. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/microsoft_365/source.py +0 -0
  106. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/mongodb/__init__.py +0 -0
  107. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/mongodb/source.py +0 -0
  108. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/mssql/__init__.py +0 -0
  109. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/mssql/source.py +0 -0
  110. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/mysql/__init__.py +0 -0
  111. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/mysql/source.py +0 -0
  112. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/neo4j/__init__.py +0 -0
  113. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/neo4j/source.py +0 -0
  114. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/notion/__init__.py +0 -0
  115. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/notion/client.py +0 -0
  116. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/notion/source.py +0 -0
  117. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/object_storage/base.py +0 -0
  118. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/opensearch/__init__.py +0 -0
  119. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/opensearch/source.py +0 -0
  120. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/oracle/__init__.py +0 -0
  121. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/oracle/source.py +0 -0
  122. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/postgresql/__init__.py +0 -0
  123. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/postgresql/source.py +0 -0
  124. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/powerbi/__init__.py +0 -0
  125. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/powerbi/source.py +0 -0
  126. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/recipe_normalizer.py +0 -0
  127. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/reddit/__init__.py +0 -0
  128. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/reddit/source.py +0 -0
  129. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/s3_client.py +0 -0
  130. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/s3_compatible_storage/README.md +0 -0
  131. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/s3_compatible_storage/__init__.py +0 -0
  132. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/s3_compatible_storage/source.py +0 -0
  133. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/sandbox/__init__.py +0 -0
  134. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/sandbox/source.py +0 -0
  135. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/search_engine_base.py +0 -0
  136. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/servicedesk/__init__.py +0 -0
  137. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/servicedesk/source.py +0 -0
  138. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/slack/__init__.py +0 -0
  139. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/slack/source.py +0 -0
  140. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/snowflake/__init__.py +0 -0
  141. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/snowflake/source.py +0 -0
  142. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/sqlite/__init__.py +0 -0
  143. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/sqlite/source.py +0 -0
  144. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/tableau/__init__.py +0 -0
  145. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/tableau/source.py +0 -0
  146. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/tabular_base.py +0 -0
  147. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/tabular_utils.py +0 -0
  148. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/wordpress/__init__.py +0 -0
  149. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/wordpress/source.py +0 -0
  150. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/youtube/__init__.py +0 -0
  151. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/sources/youtube/source.py +0 -0
  152. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/telemetry.py +0 -0
  153. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/__init__.py +0 -0
  154. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/archive_extraction.py +0 -0
  155. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/content_extraction.py +0 -0
  156. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/dependency_groups.py +0 -0
  157. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/embedded_files.py +0 -0
  158. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/external_video.py +0 -0
  159. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/file_metadata.py +0 -0
  160. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/file_parser.py +0 -0
  161. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/file_to_images.py +0 -0
  162. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/hashing.py +0 -0
  163. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/legacy_office.py +0 -0
  164. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/payload.py +0 -0
  165. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/range_reader.py +0 -0
  166. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/resources.py +0 -0
  167. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/transcription.py +0 -0
  168. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/uv_sync.py +0 -0
  169. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/validation.py +0 -0
  170. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/src/utils/video_processing.py +0 -0
  171. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/__init__.py +0 -0
  172. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/_lakehouse_fakes.py +0 -0
  173. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/conftest.py +0 -0
  174. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/__init__.py +0 -0
  175. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/broken_links/test_broken_links_detector.py +0 -0
  176. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/conftest.py +0 -0
  177. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/content/__init__.py +0 -0
  178. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/custom/__init__.py +0 -0
  179. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/custom/conftest.py +0 -0
  180. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/custom/test_gliner2_classification.py +0 -0
  181. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/custom/test_invoice_extraction.py +0 -0
  182. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/custom/test_llm_runner.py +0 -0
  183. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/custom/test_pipeline_integration.py +0 -0
  184. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/custom/test_regex_runner.py +0 -0
  185. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/custom/test_runner_hardening.py +0 -0
  186. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/custom/test_transformer_runners.py +0 -0
  187. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/pii/__init__.py +0 -0
  188. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/pii/conftest.py +0 -0
  189. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/pii/sample_invoice.pdf +0 -0
  190. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/pii/test_pii_chunking.py +0 -0
  191. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/pii/test_pii_detector.py +0 -0
  192. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/pii/test_pii_detector_extended.py +0 -0
  193. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/pii/test_pii_regional_entities.py +0 -0
  194. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/pii/test_pii_severity.py +0 -0
  195. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/secrets/__init__.py +0 -0
  196. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/secrets/test_secrets_detector.py +0 -0
  197. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/secrets/test_secrets_detector_extended.py +0 -0
  198. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/test_base_detector.py +0 -0
  199. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/test_custom_detector_examples_runtime.py +0 -0
  200. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/test_detector_catalog_commercial.py +0 -0
  201. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/test_detector_pipeline_types.py +0 -0
  202. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/test_detector_schema_examples.py +0 -0
  203. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/test_detector_types.py +0 -0
  204. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/test_phase2_detectors.py +0 -0
  205. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/test_registry.py +0 -0
  206. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/threat/__init__.py +0 -0
  207. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/threat/test_code_security_detector.py +0 -0
  208. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/detectors/threat/test_yara_detector.py +0 -0
  209. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/integration/test_wordpress_broken_links_detector.py +0 -0
  210. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/integration/test_wordpress_links_assets.py +0 -0
  211. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/pipeline/test_detector_outcomes.py +0 -0
  212. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/pipeline/test_detector_pipeline.py +0 -0
  213. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/pipeline/test_worker_pool.py +0 -0
  214. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_arrow_ipc_payloads.py +0 -0
  215. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_assets_metadata_catalog.py +0 -0
  216. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_azure_blob_storage_source.py +0 -0
  217. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_base_source_attachment.py +0 -0
  218. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_base_source_sampling.py +0 -0
  219. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_byte_valued_fields.py +0 -0
  220. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_config.py +0 -0
  221. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_confluence_source.py +0 -0
  222. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_custom_extractor.py +0 -0
  223. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_databricks_source.py +0 -0
  224. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_delta_lake_source.py +0 -0
  225. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_dependency_groups.py +0 -0
  226. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_dropbox_auth_command.py +0 -0
  227. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_dropbox_source.py +0 -0
  228. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_elasticsearch_source.py +0 -0
  229. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_email_source.py +0 -0
  230. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_file_evaluation_runner.py +0 -0
  231. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_git_source.py +0 -0
  232. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_google_cloud_storage_source.py +0 -0
  233. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_google_workspace_source.py +0 -0
  234. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_hashing.py +0 -0
  235. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_hive_source.py +0 -0
  236. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_hugging_face_source.py +0 -0
  237. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_iceberg_source.py +0 -0
  238. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_jira_source.py +0 -0
  239. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_kafka_source.py +0 -0
  240. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_local_folder_source.py +0 -0
  241. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_main.py +0 -0
  242. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_meilisearch_source.py +0 -0
  243. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_microsoft_365_source.py +0 -0
  244. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_mongodb_source.py +0 -0
  245. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_mssql_source.py +0 -0
  246. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_mysql_source.py +0 -0
  247. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_neo4j_source.py +0 -0
  248. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_notion_source.py +0 -0
  249. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_object_storage_download_efficiency.py +0 -0
  250. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_opensearch_source.py +0 -0
  251. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_oracle_source.py +0 -0
  252. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_outputs.py +0 -0
  253. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_payload_window.py +0 -0
  254. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_payload_window_parquet.py +0 -0
  255. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_postgresql_source.py +0 -0
  256. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_powerbi_source.py +0 -0
  257. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_range_reading.py +0 -0
  258. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_recipe_normalizer.py +0 -0
  259. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_reddit_source.py +0 -0
  260. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_s3_compatible_storage_source.py +0 -0
  261. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_sampling_automatic.py +0 -0
  262. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_sandbox_source.py +0 -0
  263. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_scan_cache.py +0 -0
  264. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_servicedesk_source.py +0 -0
  265. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_slack_source.py +0 -0
  266. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_snowflake_source.py +0 -0
  267. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_source_dependency_groups.py +0 -0
  268. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_source_strategy_conformance.py +0 -0
  269. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_sqlite_source.py +0 -0
  270. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_tableau_source.py +0 -0
  271. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_tabular_automatic_sampling.py +0 -0
  272. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_tabular_utils.py +0 -0
  273. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_uv_sync.py +0 -0
  274. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_wordpress_source.py +0 -0
  275. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_youtube_source.py +0 -0
  276. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/test_youtube_source_integration.py +0 -0
  277. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/utils/test_archive_extraction.py +0 -0
  278. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/utils/test_content_extraction.py +0 -0
  279. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/utils/test_embedded_files.py +0 -0
  280. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/utils/test_file_metadata.py +0 -0
  281. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/utils/test_file_parser.py +0 -0
  282. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/utils/test_file_to_images.py +0 -0
  283. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/utils/test_legacy_office.py +0 -0
  284. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/utils/test_payload.py +0 -0
  285. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/utils/test_transcription.py +0 -0
  286. {classifyre_cli-0.4.113 → classifyre_cli-0.4.115}/tests/utils/test_video_processing.py +0 -0
@@ -1,3 +1,3 @@
1
1
  $ uv sync
2
- Resolved 309 packages in 333ms
2
+ Resolved 309 packages in 350ms
3
3
  Checked 51 packages in 1ms
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: classifyre-cli
3
- Version: 0.4.113
3
+ Version: 0.4.115
4
4
  Summary: Classifyre CLI — scan and classify unstructured data sources
5
5
  License: MIT
6
6
  Keywords: data,ingestion,metadata,pii,secrets,unstructured
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@classifyre/cli",
3
- "version": "0.4.113",
3
+ "version": "0.4.115",
4
4
  "private": true,
5
5
  "scripts": {
6
6
  "build": "uv sync",
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "classifyre-cli"
3
- version = "0.4.113"
3
+ version = "0.4.115"
4
4
  description = "Classifyre CLI — scan and classify unstructured data sources"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -77,17 +77,32 @@ class _JitteredRetry(Retry):
77
77
  # attempt 5 → ~16 s
78
78
  # attempt 6 → ~32 s
79
79
  # attempt 7 → ~60 s (capped)
80
- # attempt 8 → ~60 s (capped)
81
- # Total extra wait: ~182 s (~3 min) — covers extended load spikes on a
82
- # single-node VPS before event-loop pressure drops.
80
+ # attempt 8+ → ~60 s (capped)
81
+ #
82
+ # Status retries are budgeted separately from — and much more generously than —
83
+ # connect/read, because the two failures mean opposite things. A connect/read
84
+ # failure is a broken request that will not fix itself by waiting much longer.
85
+ # A 503 is the API *deliberately* shedding an idempotent batch it wants us to
86
+ # send again (see AssetService.bulkIngest and CliBackpressureGuard); giving up
87
+ # on it discards ingested work, which is the one outcome backpressure exists to
88
+ # avoid. At 60 s per attempt past the ramp, _STATUS_RETRIES ≈ 30 minutes of
89
+ # patience: the CLI stalls under sustained pressure but the data still lands.
90
+ # Retry-After is honoured when the server sends it (urllib3 default), so the
91
+ # API can shorten or lengthen this on its own.
92
+ #
93
+ # total=None so the status budget is not silently capped by a smaller overall
94
+ # count — with total set, whichever limit is lowest wins.
83
95
  #
84
96
  # POST and PATCH are explicitly allowed: without this urllib3 only retries
85
97
  # idempotent methods (GET/HEAD) by default.
98
+ _STATUS_RETRIES = 32
99
+
86
100
  _RETRY_POLICY = _JitteredRetry(
87
- total=8,
101
+ total=None,
88
102
  connect=8,
89
103
  read=8,
90
- status=8,
104
+ status=_STATUS_RETRIES,
105
+ other=8,
91
106
  backoff_factor=2,
92
107
  backoff_max=60,
93
108
  status_forcelist={408, 429, 502, 503, 504},
@@ -0,0 +1,150 @@
1
+ """Backpressure contract between the CLI and the API.
2
+
3
+ The API sheds ingestion with 503 when its heap is near the V8 ceiling
4
+ (AssetService.bulkIngest / CliBackpressureGuard). That is only safe if the CLI
5
+ treats a 503 as "hold, then send this again" rather than as a failure: bulk
6
+ ingest is an idempotent upsert, so a retry costs a round trip, while giving up
7
+ silently discards assets and findings that were already extracted.
8
+
9
+ These tests pin that contract with a real socket server, because the thing that
10
+ can break it is the urllib3 Retry configuration, not our own code — and a
11
+ misconfiguration there (a `total` lower than `status`, a status code missing
12
+ from the forcelist) fails open, quietly, in exactly the case that matters.
13
+ """
14
+
15
+ from __future__ import annotations
16
+
17
+ import json
18
+ import threading
19
+ from http.server import BaseHTTPRequestHandler, HTTPServer
20
+ from typing import ClassVar
21
+
22
+ import pytest
23
+ import requests
24
+ from requests.adapters import HTTPAdapter
25
+
26
+ from src.outputs.rest import _RETRY_POLICY, _STATUS_RETRIES
27
+
28
+
29
+ class _FlakyHandler(BaseHTTPRequestHandler):
30
+ """Answers 503 for the first `unavailable_responses` calls, then 200."""
31
+
32
+ unavailable_responses: ClassVar[int] = 0
33
+ received_bodies: ClassVar[list[dict]] = []
34
+ calls: ClassVar[int] = 0
35
+
36
+ def do_POST(self) -> None:
37
+ type(self).calls += 1
38
+ length = int(self.headers.get("Content-Length", 0))
39
+ body = self.rfile.read(length)
40
+
41
+ if type(self).calls <= type(self).unavailable_responses:
42
+ self.send_response(503)
43
+ # Keeps the test fast: the CLI honours Retry-After, so the server
44
+ # picks the schedule instead of the ~2/4/8/16s exponential ramp.
45
+ # Note "0" would NOT work — urllib3 treats a falsy Retry-After as
46
+ # absent and falls back to its own backoff.
47
+ self.send_header("Retry-After", "1")
48
+ self.send_header("Content-Length", "0")
49
+ self.end_headers()
50
+ return
51
+
52
+ type(self).received_bodies.append(json.loads(body))
53
+ payload = b'{"ok": true}'
54
+ self.send_response(200)
55
+ self.send_header("Content-Type", "application/json")
56
+ self.send_header("Content-Length", str(len(payload)))
57
+ self.end_headers()
58
+ self.wfile.write(payload)
59
+
60
+ def log_message(self, *args: object) -> None:
61
+ pass
62
+
63
+
64
+ @pytest.fixture
65
+ def flaky_server():
66
+ def _start(unavailable_responses: int):
67
+ _FlakyHandler.unavailable_responses = unavailable_responses
68
+ _FlakyHandler.received_bodies = []
69
+ _FlakyHandler.calls = 0
70
+ server = HTTPServer(("127.0.0.1", 0), _FlakyHandler)
71
+ thread = threading.Thread(target=server.serve_forever, daemon=True)
72
+ thread.start()
73
+ return server
74
+
75
+ servers: list[HTTPServer] = []
76
+
77
+ def _factory(unavailable_responses: int) -> HTTPServer:
78
+ server = _start(unavailable_responses)
79
+ servers.append(server)
80
+ return server
81
+
82
+ yield _factory
83
+
84
+ for server in servers:
85
+ server.shutdown()
86
+ server.server_close()
87
+
88
+
89
+ def _session() -> requests.Session:
90
+ """A session wired exactly as RestOutput wires its own."""
91
+ session = requests.Session()
92
+ adapter = HTTPAdapter(max_retries=_RETRY_POLICY)
93
+ session.mount("http://", adapter)
94
+ session.mount("https://", adapter)
95
+ return session
96
+
97
+
98
+ def test_batch_survives_sustained_backpressure(flaky_server) -> None:
99
+ """The batch still lands after more 503s than the old budget allowed.
100
+
101
+ Nine is chosen deliberately: the previous policy was `total=8`, so this
102
+ exact scenario used to end with the assets discarded.
103
+ """
104
+ server = flaky_server(9)
105
+ url = f"http://127.0.0.1:{server.server_port}/assets/bulk"
106
+ batch = {"assets": [{"unique_id": "a1"}, {"unique_id": "a2"}]}
107
+
108
+ response = _session().post(url, json=batch, timeout=10)
109
+
110
+ assert response.status_code == 200
111
+ # The point of the whole exercise: the data arrived, unchanged, exactly
112
+ # once as far as the server's successful handling is concerned.
113
+ assert _FlakyHandler.received_bodies == [batch]
114
+
115
+
116
+ def test_status_budget_is_not_capped_by_total() -> None:
117
+ """`total` must not silently shorten the status budget.
118
+
119
+ urllib3 applies whichever limit is lowest, so a `total` of 8 would make a
120
+ `status` of 32 a lie — which is how the retry budget read as generous while
121
+ actually expiring after ~3 minutes. Asserted as configuration rather than
122
+ behaviour because waiting out 32 real backoffs would take ~28 minutes.
123
+ """
124
+ assert _RETRY_POLICY.total is None
125
+ assert _RETRY_POLICY.status == _STATUS_RETRIES
126
+ assert _STATUS_RETRIES >= 16
127
+
128
+ # The wall-clock patience that budget buys, at backoff_max per attempt
129
+ # once the ramp saturates.
130
+ patience_s = sum(
131
+ min(_RETRY_POLICY.backoff_factor * (2**i), _RETRY_POLICY.backoff_max)
132
+ for i in range(_RETRY_POLICY.status)
133
+ )
134
+ assert patience_s > 20 * 60
135
+
136
+
137
+ def test_backpressure_codes_are_all_retried() -> None:
138
+ for status in (408, 429, 502, 503, 504):
139
+ assert status in _RETRY_POLICY.status_forcelist
140
+
141
+ # Ingest is POST; urllib3 retries only idempotent methods unless told
142
+ # otherwise, and bulk ingest is an upsert so replay is safe.
143
+ assert "POST" in _RETRY_POLICY.allowed_methods
144
+ assert _RETRY_POLICY.respect_retry_after_header is True
145
+
146
+
147
+ def test_client_errors_are_not_retried() -> None:
148
+ """A rejected payload must fail fast, not be resent 32 times."""
149
+ for status in (400, 404, 422):
150
+ assert status not in _RETRY_POLICY.status_forcelist
@@ -562,30 +562,30 @@ wheels = [
562
562
 
563
563
  [[package]]
564
564
  name = "boto3"
565
- version = "1.43.70"
565
+ version = "1.43.71"
566
566
  source = { registry = "https://pypi.org/simple" }
567
567
  dependencies = [
568
568
  { name = "botocore" },
569
569
  { name = "jmespath" },
570
570
  { name = "s3transfer" },
571
571
  ]
572
- sdist = { url = "https://files.pythonhosted.org/packages/f6/20/68434d996c767e860329d78f2aaf1d7456173ba45f8d6fb8f4a394b85667/boto3-1.43.70.tar.gz", hash = "sha256:4f1e16b9eebbad3f312bb6fbf7685d40abdd52a691485cb9f09e7df60d912b41", size = 112688, upload-time = "2026-08-12T19:23:35.485Z" }
572
+ sdist = { url = "https://files.pythonhosted.org/packages/e0/ed/3220ca6396a7ce00a49aa6f43f20cae05ec6ac386e2b5d668adfad0b3eed/boto3-1.43.71.tar.gz", hash = "sha256:e3eddb6346ee23c895dd98e5c2cfc72cb5e5ed111aa6d4331f9e903a3e3bf4ee", size = 112630, upload-time = "2026-08-13T19:20:35.332Z" }
573
573
  wheels = [
574
- { url = "https://files.pythonhosted.org/packages/6e/d1/c95cae121ef5b77ecec08cb8e045eeb2a2c8ec605a5734b6f24bfb3a6326/boto3-1.43.70-py3-none-any.whl", hash = "sha256:b9399cce51bec9552e61a6b85015c42dea68752e79c00a7005d84eaf7ee15fef", size = 140028, upload-time = "2026-08-12T19:23:33.804Z" },
574
+ { url = "https://files.pythonhosted.org/packages/4f/16/7b54e7f5271756ab13beaaf6da03f62edcc3ee5ded651c2b17297e107040/boto3-1.43.71-py3-none-any.whl", hash = "sha256:3bb46661dc33121e56e3706753069d18f8dbcb644599cf098206546338602e16", size = 140024, upload-time = "2026-08-13T19:20:32.542Z" },
575
575
  ]
576
576
 
577
577
  [[package]]
578
578
  name = "botocore"
579
- version = "1.43.70"
579
+ version = "1.43.71"
580
580
  source = { registry = "https://pypi.org/simple" }
581
581
  dependencies = [
582
582
  { name = "jmespath" },
583
583
  { name = "python-dateutil" },
584
584
  { name = "urllib3" },
585
585
  ]
586
- sdist = { url = "https://files.pythonhosted.org/packages/2f/1a/ad4ff28cd0caa8ff4f39f18491169dc9ff4b2e359589be1f7108048e1915/botocore-1.43.70.tar.gz", hash = "sha256:a7bebdd0b1c8265e72759a4f7f61e9e43d57968b2c2a5e1e7b350d0a1e3ce81c", size = 15936837, upload-time = "2026-08-12T19:23:30.58Z" }
586
+ sdist = { url = "https://files.pythonhosted.org/packages/d6/c2/98b8ff6a21a9ed99b0699f468446f26a679443b2bca46fcd6aaa0cfbae75/botocore-1.43.71.tar.gz", hash = "sha256:2cde7a55aaac86a2e9a3bcd2ce3fad1a31a4711749e10f350af231e55ccef7ed", size = 15943777, upload-time = "2026-08-13T19:20:29.292Z" }
587
587
  wheels = [
588
- { url = "https://files.pythonhosted.org/packages/69/b2/c16b4e2e7ccab1f0887c22fbe2d9859ceb4d35fb637cce8a380d51b52b06/botocore-1.43.70-py3-none-any.whl", hash = "sha256:95bc23a6472f8876349ae334b526e66006f6cf3c87bf39d3e9f057dc8c2eb85f", size = 15628519, upload-time = "2026-08-12T19:23:27.38Z" },
588
+ { url = "https://files.pythonhosted.org/packages/81/2f/700d973e3f0a37a275900be1a389af5a4ab67dd9362d17782b17f1045f0b/botocore-1.43.71-py3-none-any.whl", hash = "sha256:7bc3d5ddaca6f68e2eef707714264789048a6f496d375d976c560674f0cd1d1b", size = 15635728, upload-time = "2026-08-13T19:20:26.302Z" },
589
589
  ]
590
590
 
591
591
  [[package]]
@@ -923,7 +923,7 @@ wheels = [
923
923
 
924
924
  [[package]]
925
925
  name = "classifyre-cli"
926
- version = "0.4.113"
926
+ version = "0.4.115"
927
927
  source = { editable = "." }
928
928
  dependencies = [
929
929
  { name = "beautifulsoup4" },
@@ -1462,7 +1462,7 @@ youtube = [
1462
1462
 
1463
1463
  [[package]]
1464
1464
  name = "classifyre-schemas"
1465
- version = "0.4.113"
1465
+ version = "0.4.115"
1466
1466
  source = { editable = "../../packages/schemas" }
1467
1467
  dependencies = [
1468
1468
  { name = "fastjsonschema" },
@@ -1847,14 +1847,14 @@ wheels = [
1847
1847
 
1848
1848
  [[package]]
1849
1849
  name = "docling"
1850
- version = "2.119.0"
1850
+ version = "2.120.1"
1851
1851
  source = { registry = "https://pypi.org/simple" }
1852
1852
  dependencies = [
1853
1853
  { name = "docling-slim", extra = ["standard"] },
1854
1854
  ]
1855
- sdist = { url = "https://files.pythonhosted.org/packages/30/c2/f9fe1cc7780a41956c73e003773f002f9721671e9f76a2d19333e38f2e4c/docling-2.119.0.tar.gz", hash = "sha256:04b9aef29b9b94fc6e56fcd440824337d132a84074c7ba20b9cf055f220e72fb", size = 9016, upload-time = "2026-08-10T10:28:54.837Z" }
1855
+ sdist = { url = "https://files.pythonhosted.org/packages/83/a3/537c6f0ee2208e61538579f3dcf3abf5df4a4d6448c5c28c8574b5291903/docling-2.120.1.tar.gz", hash = "sha256:8ff9773147e7ce3588d67594239fb3b79be5733adfbf306ba46f4310fb1f61f0", size = 9013, upload-time = "2026-08-14T11:51:21.073Z" }
1856
1856
  wheels = [
1857
- { url = "https://files.pythonhosted.org/packages/1f/ea/37626a6ee6d4b26c14701b678eae81f53615c01afaa68b6b2367c4bbb09c/docling-2.119.0-py3-none-any.whl", hash = "sha256:3ff6f1dbe9f53ac034aca03c39fae374b381dc1eda4ad85d27a458fc13fbc917", size = 5180, upload-time = "2026-08-10T10:28:53.773Z" },
1857
+ { url = "https://files.pythonhosted.org/packages/16/90/ec73628602e3a49544f3c6a6a4fde02e0f6053d58e9b4279bc0839a55f8e/docling-2.120.1-py3-none-any.whl", hash = "sha256:04897c566285bf2df166ccae6acd285f1d41e2336755a89d05be515be2090bc3", size = 5179, upload-time = "2026-08-14T11:51:19.875Z" },
1858
1858
  ]
1859
1859
 
1860
1860
  [[package]]
@@ -1922,7 +1922,7 @@ wheels = [
1922
1922
 
1923
1923
  [[package]]
1924
1924
  name = "docling-parse"
1925
- version = "7.12.1"
1925
+ version = "7.13.0"
1926
1926
  source = { registry = "https://pypi.org/simple" }
1927
1927
  dependencies = [
1928
1928
  { name = "docling-core" },
@@ -1930,28 +1930,28 @@ dependencies = [
1930
1930
  { name = "pydantic" },
1931
1931
  { name = "pywin32", marker = "sys_platform == 'win32'" },
1932
1932
  ]
1933
- sdist = { url = "https://files.pythonhosted.org/packages/82/00/ab56de324d844cf5862f46f5c95dc18c5ee52dbb83d794c274c8e520373d/docling_parse-7.12.1.tar.gz", hash = "sha256:25c8759b19292ad8cf31e1b133980c30f0fd8800b510c02c56a3af5dbb989232", size = 6828762, upload-time = "2026-08-12T08:36:48.18Z" }
1933
+ sdist = { url = "https://files.pythonhosted.org/packages/ba/80/861612a7ee977ec27cf4966337cbfa9033e9a58378fbeb0449e732b6fe31/docling_parse-7.13.0.tar.gz", hash = "sha256:23575b21b8722466899135340b254124792d0c19d18cd223cad437dc4283f8f5", size = 6864422, upload-time = "2026-08-14T06:28:50.233Z" }
1934
1934
  wheels = [
1935
- { url = "https://files.pythonhosted.org/packages/ba/ff/4d4464e3e74dd54a47e0c811779a378f1f0b22b74adb2874bcc38885a3b5/docling_parse-7.12.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:ff5ac71bc2a702cbc7bd4fd7c2fcbf6af483c982af4bae36fb727a9db169a849", size = 9667688, upload-time = "2026-08-12T08:36:20.274Z" },
1936
- { url = "https://files.pythonhosted.org/packages/6a/41/24b6303e0e5e79c3ea8d2daea0cdcbe95a3d71a0b1715bd5345ac7a3ba5a/docling_parse-7.12.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a3c91f46776ba2aa3c31667747f4f39e91f8c1b58e391663c5e44d7bb416a3f6", size = 10191724, upload-time = "2026-08-12T08:36:22.102Z" },
1937
- { url = "https://files.pythonhosted.org/packages/53/31/951fc8740f2ab6ab1fb9a1d223269d082eedf8a4b1dcbee42da81a395efc/docling_parse-7.12.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:33fc4afd8b46a2c760a8ca4558b4d744d6c9d207318581f3234fec3df91ca85f", size = 10577523, upload-time = "2026-08-12T08:36:23.821Z" },
1938
- { url = "https://files.pythonhosted.org/packages/37/b9/0c17dfa3571705f4bdd698d929c4003cfc249d117c7317ae82a294cc18a3/docling_parse-7.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:344c7f1da55be7fc992045fb5ff07b411e589b1da62a8f943842ac7ac986245a", size = 11639307, upload-time = "2026-08-12T08:36:25.954Z" },
1939
- { url = "https://files.pythonhosted.org/packages/30/5b/5f589310d243b006d145c8e4cd0d9770accf2048ba6ad08d7608ac1f6e58/docling_parse-7.12.1-cp312-cp312-win_arm64.whl", hash = "sha256:cfddd1f3a3631e87d4c965b4ffd0dc95e249b046af0a6b8916e129285fb0e80c", size = 8964784, upload-time = "2026-08-12T08:36:27.94Z" },
1940
- { url = "https://files.pythonhosted.org/packages/0d/35/510104ef0f0f01e985fb4eeb9269aaec964e80dda4b64077d19099923782/docling_parse-7.12.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:b3a740f373f00c87555cdbbf996b726df1e99a9de5d95a24484f71d1f7394077", size = 9667627, upload-time = "2026-08-12T08:36:29.713Z" },
1941
- { url = "https://files.pythonhosted.org/packages/48/7b/6bab4aba25c7356f6afff8e067e6e2ced71767db7f0b1698537e27ff8853/docling_parse-7.12.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:61a2f203a8e4ce5cd27fba2b6de4474eb11b5e6e1e17116e0dd349376d234d6d", size = 10191624, upload-time = "2026-08-12T08:36:31.408Z" },
1942
- { url = "https://files.pythonhosted.org/packages/8e/17/4cb450252bb8a38ffb98aa7f5f42bd35d300808d42e46a96849890993e84/docling_parse-7.12.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d5c015e19e9be88ce001115a1913bf6addf4c2931c3556e9cf2a10b596bbe46d", size = 10577661, upload-time = "2026-08-12T08:36:33.227Z" },
1943
- { url = "https://files.pythonhosted.org/packages/f3/e2/8ca2efcd457a2a040e9dc1af73100c17d72c20cd7bf1b1d8b20e51abc771/docling_parse-7.12.1-cp313-cp313-win_amd64.whl", hash = "sha256:24b29a5ca40071b3d5ea7494c22a5552f4d9d29bf93bdfc1925986d922feff5f", size = 11639305, upload-time = "2026-08-12T08:36:35.055Z" },
1944
- { url = "https://files.pythonhosted.org/packages/e5/4b/b59a91e8e63a855b54905aaba39c1f06d4f95cad5c0c160f9995a6257701/docling_parse-7.12.1-cp313-cp313-win_arm64.whl", hash = "sha256:4f73b41fda9c4fa6beb6c3d685071dd28a2c1f00e69f0133fbc15bda8c0f7ab7", size = 8964612, upload-time = "2026-08-12T08:36:36.772Z" },
1945
- { url = "https://files.pythonhosted.org/packages/04/57/97ec433850b8e7706943a8de0cf65774f043ae393a5d86703e7e8658d71e/docling_parse-7.12.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:447ced8771f7053f9f834efec363d578d92598119b95e83bed2551c185a7355f", size = 9668271, upload-time = "2026-08-12T08:36:38.58Z" },
1946
- { url = "https://files.pythonhosted.org/packages/f2/ce/6c213b6599ca8b0c93a8cf11077f2c38b2ed48a2d05e42e3c091b5245642/docling_parse-7.12.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:32e4c806e63f5e6dcf63643d3472b241e7786653bad82321c95b937b69942a5e", size = 10192440, upload-time = "2026-08-12T08:36:40.529Z" },
1947
- { url = "https://files.pythonhosted.org/packages/ea/a7/17cd8d4c691c025a9515bd0ab81c8de502988fa257ba2fdccdb973b5c53e/docling_parse-7.12.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fff030c85eb85fc6589bdabc64bdc58a0c82cd6e0870ff9cf55114be525f46f5", size = 10578105, upload-time = "2026-08-12T08:36:42.238Z" },
1948
- { url = "https://files.pythonhosted.org/packages/63/c5/0dfb8eb4ea12f7f361beb8c342c115774524f7cea0a1feeba273f572fb27/docling_parse-7.12.1-cp314-cp314-win_amd64.whl", hash = "sha256:8a3debe619e2303442139472ec39a21cdb4714b27d026cf0c34233411779c8c4", size = 12072065, upload-time = "2026-08-12T08:36:43.985Z" },
1949
- { url = "https://files.pythonhosted.org/packages/c7/45/7fdcf5c321ab3d0c2047edd844c75633d9c60abc043083f6dab95a1b1b39/docling_parse-7.12.1-cp314-cp314-win_arm64.whl", hash = "sha256:6488966275412d599aa2fcd0920cea38bb20ac937aeb5bd135ea5354c6dcb5b6", size = 9329032, upload-time = "2026-08-12T08:36:46.533Z" },
1935
+ { url = "https://files.pythonhosted.org/packages/68/95/45b9a5cfd04853bf2a8ebe54722096ee6969a19142cfa39f320dc3254322/docling_parse-7.13.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:21eb89636a9707c484f7d73dae0e56f64807869281716ccb511c55a5adf3121f", size = 9698711, upload-time = "2026-08-14T06:28:12.256Z" },
1936
+ { url = "https://files.pythonhosted.org/packages/0d/72/269de56bbb4eec9255d4f5b89a0fa0996b1fd697bfc15e3f959a53adc285/docling_parse-7.13.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a1f7d03e74e1fd6e8f11bff03c47b1300e259ea1b1ffd733166001d237baec9", size = 10223985, upload-time = "2026-08-14T06:28:14.875Z" },
1937
+ { url = "https://files.pythonhosted.org/packages/dd/4a/45a7ba9b8694ab552613cd4d93df1d60905023857cfee1a99289aa3f89c3/docling_parse-7.13.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f68c5dffee3e0596e0f8ee4efdb30ee52bec59b913170eaa082d0cc2f287c259", size = 10614327, upload-time = "2026-08-14T06:28:17.228Z" },
1938
+ { url = "https://files.pythonhosted.org/packages/6e/f7/4f18b540c6dc1f513abf38e9c7f9d1f25f664fed9af6bc52cb099ef09a78/docling_parse-7.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:f683f3ad7b428b18e236e0175dbff897619f9433d39aac6d16a859263ec4125b", size = 11673968, upload-time = "2026-08-14T06:28:19.568Z" },
1939
+ { url = "https://files.pythonhosted.org/packages/35/7a/f203bacb44f1e4113894b26479261dc400137e5675e670e0ffe2d9d75adb/docling_parse-7.13.0-cp312-cp312-win_arm64.whl", hash = "sha256:a73f3ecc446aa8832396eeb49f64924304b7eb52c473ae9a610ec6b4a1b06e2f", size = 8992588, upload-time = "2026-08-14T06:28:23.477Z" },
1940
+ { url = "https://files.pythonhosted.org/packages/68/a6/427efea60890d2962005039260a61ecba4cd23a0e2a83b116e7064bc1c62/docling_parse-7.13.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9cc2cdf4aed0c83d690c733259c1a7a38e9690e2b42bae39b3f6ff1d289194ae", size = 9698752, upload-time = "2026-08-14T06:28:25.835Z" },
1941
+ { url = "https://files.pythonhosted.org/packages/2f/d9/16593f172dce343fb9b5fbb6711070dd898bd52d05afe7fb38182d0c2588/docling_parse-7.13.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:979978f903bb1b387429eb7e0cbc44eb877080c4f2129c8b637e24100bd75ff5", size = 10223995, upload-time = "2026-08-14T06:28:28.518Z" },
1942
+ { url = "https://files.pythonhosted.org/packages/1c/da/e4bc26a0345d0651779bfb04f5cd99552a3fac1fca2681d88b67a27348d9/docling_parse-7.13.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ac73eb49b6194d40d58f01eba6e134bea857667f6aa99dc2371cf3d24d5fd817", size = 10614354, upload-time = "2026-08-14T06:28:30.871Z" },
1943
+ { url = "https://files.pythonhosted.org/packages/e2/b8/a40158593b3293a8364d62cf2866a29e71f0d909f46c2413e4c98f127142/docling_parse-7.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:f16952a2cc2a609f444bf0d6fe7ee1d9b35f1d38f26ebb7f208652a8c7999b71", size = 11673865, upload-time = "2026-08-14T06:28:33.354Z" },
1944
+ { url = "https://files.pythonhosted.org/packages/13/af/f255fcd2d2b5987c2e3b6dae5d42283266720c775f32e6a1503b5c6683f2/docling_parse-7.13.0-cp313-cp313-win_arm64.whl", hash = "sha256:30c612b0378233d6dbc4b76a10a4fb1492c975a50121aa3a8f691b1dd6ba8298", size = 8992516, upload-time = "2026-08-14T06:28:35.64Z" },
1945
+ { url = "https://files.pythonhosted.org/packages/43/8f/452ea0ccdc577d7cdab49b21a97463650cf29447b381dc79866032f9a87b/docling_parse-7.13.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:1404f4292303c53c8d7822957888edb3c2ffc9029f6289862150af09cd2263d1", size = 9699328, upload-time = "2026-08-14T06:28:38.109Z" },
1946
+ { url = "https://files.pythonhosted.org/packages/3e/ec/f23d35ccd988e8c3e2960bf9475713387e87fe1b56747fc5700f8e5e695b/docling_parse-7.13.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:764a4cfa366e430ded399d505e39f91cb1f7060dece48a83c49512b2acd57928", size = 10224649, upload-time = "2026-08-14T06:28:40.433Z" },
1947
+ { url = "https://files.pythonhosted.org/packages/92/d2/063dcaa311702a2500e4d063f08e7134d048c000813235e5e085d3d4a1e1/docling_parse-7.13.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fbe720eab2ae5b38928872953acd4ac693c7c79ef340203285b7345dd4ba3a42", size = 10614598, upload-time = "2026-08-14T06:28:42.955Z" },
1948
+ { url = "https://files.pythonhosted.org/packages/d2/75/9c9bace0574c2aaf2b9332083446c563dd0356ca0651d74f2c41bbdd334e/docling_parse-7.13.0-cp314-cp314-win_amd64.whl", hash = "sha256:9ff2657c8950225a894558a0ff9c8198af3ed813c4e945e5c1995b8892c17dce", size = 12107442, upload-time = "2026-08-14T06:28:45.362Z" },
1949
+ { url = "https://files.pythonhosted.org/packages/5c/09/ba429e3ed8566d5dc00b72064c2d223595ecd6666cd3b3a5b781cd1d9297/docling_parse-7.13.0-cp314-cp314-win_arm64.whl", hash = "sha256:28c7881ee8fec08d119d661966f6cbf581b9da5896bddd4221732b6e17993121", size = 9359125, upload-time = "2026-08-14T06:28:47.667Z" },
1950
1950
  ]
1951
1951
 
1952
1952
  [[package]]
1953
1953
  name = "docling-slim"
1954
- version = "2.119.0"
1954
+ version = "2.120.1"
1955
1955
  source = { registry = "https://pypi.org/simple" }
1956
1956
  dependencies = [
1957
1957
  { name = "certifi" },
@@ -1963,9 +1963,9 @@ dependencies = [
1963
1963
  { name = "requests" },
1964
1964
  { name = "tqdm" },
1965
1965
  ]
1966
- sdist = { url = "https://files.pythonhosted.org/packages/08/8b/7eb40b83cb91ecd899faeaf421c81df20054053e3cc64cafbd6ce0c530cd/docling_slim-2.119.0.tar.gz", hash = "sha256:7b4ee3891e536403f07b6ab702bc757d6c3e4fe146475656d97cf911ac96db8f", size = 582133, upload-time = "2026-08-10T10:27:35.891Z" }
1966
+ sdist = { url = "https://files.pythonhosted.org/packages/f0/5b/3bd25d1832168ce15b788d3e995c7c0e2aa4bb3dd226aaa6adce44ef4d66/docling_slim-2.120.1.tar.gz", hash = "sha256:451622619c08fa75cb9fc7a4deb3c2f165be33503d46226f4c63024a863be64c", size = 588136, upload-time = "2026-08-14T11:49:56.896Z" }
1967
1967
  wheels = [
1968
- { url = "https://files.pythonhosted.org/packages/51/09/74f745d6178dbec12eb503261f87b0bb947fac5b122cea2e6d3c433ce7ae/docling_slim-2.119.0-py3-none-any.whl", hash = "sha256:ca385bc6b0ca99a4f0bba07feaa4c0fc4d5fa685a22184baa79de4bd87598323", size = 723087, upload-time = "2026-08-10T10:27:34.074Z" },
1968
+ { url = "https://files.pythonhosted.org/packages/96/dd/9f5bad579bfd712075ea4a56b7e35036cbe5bc9c39a2b668003d15a6b8a5/docling_slim-2.120.1-py3-none-any.whl", hash = "sha256:97e0275ff06865df4b9a4162d01674401e4046d85e012b923f6eb8fc53441732", size = 729536, upload-time = "2026-08-14T11:49:54.741Z" },
1969
1969
  ]
1970
1970
 
1971
1971
  [package.optional-dependencies]
@@ -3269,21 +3269,21 @@ wheels = [
3269
3269
 
3270
3270
  [[package]]
3271
3271
  name = "microsoft-kiota-abstractions"
3272
- version = "1.11.8"
3272
+ version = "1.11.9"
3273
3273
  source = { registry = "https://pypi.org/simple" }
3274
3274
  dependencies = [
3275
3275
  { name = "opentelemetry-api" },
3276
3276
  { name = "opentelemetry-sdk" },
3277
3277
  { name = "std-uritemplate" },
3278
3278
  ]
3279
- sdist = { url = "https://files.pythonhosted.org/packages/9a/30/cdb474506e96b13be52600aac22d90888bc3c0f55211718ecf817f9e66b9/microsoft_kiota_abstractions-1.11.8.tar.gz", hash = "sha256:d691a173d4d9c90ad24b436ba7b0b413d584513d9deff897eebeb4100846ea56", size = 25381, upload-time = "2026-08-10T15:26:57.578Z" }
3279
+ sdist = { url = "https://files.pythonhosted.org/packages/d4/30/00121e45175d11dbb24203a670d27513ff0ae761ffcb7c5c76354621dd82/microsoft_kiota_abstractions-1.11.9.tar.gz", hash = "sha256:c731f270573689437c07b3ecd9533fed7d6d895e19d98ed5d3df5cec1750fe14", size = 25375, upload-time = "2026-08-14T13:53:03.215Z" }
3280
3280
  wheels = [
3281
- { url = "https://files.pythonhosted.org/packages/f5/14/2ba17a0465bdbd2a81d67d897b9314d706d684aaece48f16f152c31cced3/microsoft_kiota_abstractions-1.11.8-py3-none-any.whl", hash = "sha256:2eb9dc70ede7793915b3ef6977799d57d11528fe9bce874e293fbb2feeadcb80", size = 44463, upload-time = "2026-08-10T15:27:05.022Z" },
3281
+ { url = "https://files.pythonhosted.org/packages/37/16/521f32ca4261d822f72fc39baefcac8f116c59374246ab8b9728c7cac4b2/microsoft_kiota_abstractions-1.11.9-py3-none-any.whl", hash = "sha256:b6988ce3b58b0f2243e60acc26064cbe0f48800478e1f018d3fc85948eb4fb12", size = 44495, upload-time = "2026-08-14T13:53:10.037Z" },
3282
3282
  ]
3283
3283
 
3284
3284
  [[package]]
3285
3285
  name = "microsoft-kiota-authentication-azure"
3286
- version = "1.11.8"
3286
+ version = "1.11.9"
3287
3287
  source = { registry = "https://pypi.org/simple" }
3288
3288
  dependencies = [
3289
3289
  { name = "aiohttp" },
@@ -3292,14 +3292,14 @@ dependencies = [
3292
3292
  { name = "opentelemetry-api" },
3293
3293
  { name = "opentelemetry-sdk" },
3294
3294
  ]
3295
- sdist = { url = "https://files.pythonhosted.org/packages/16/03/afb80baab45c3ef8b4b4eae7d89ec3ab005a6fa9bce92adec4f7c3a9d843/microsoft_kiota_authentication_azure-1.11.8.tar.gz", hash = "sha256:91cb5c6bd484888ce6108a6a80b1383bf62c26d7deddec6a283c3f6848b50bdf", size = 5258, upload-time = "2026-08-10T15:26:58.648Z" }
3295
+ sdist = { url = "https://files.pythonhosted.org/packages/cb/ff/d046a015e5865074c51a3b5275e3e4104075073b6c0ba94d803e00a475c8/microsoft_kiota_authentication_azure-1.11.9.tar.gz", hash = "sha256:41ac68bb2b91488306742d4bdaa52d10d7fa4ecf61bd5aaeaebe0691bf2a17c0", size = 5283, upload-time = "2026-08-14T13:53:04.301Z" }
3296
3296
  wheels = [
3297
- { url = "https://files.pythonhosted.org/packages/20/c4/c8cab8cb9f8db10d027b25e6061918d96e4d61d688524d3375fa45a2dc7d/microsoft_kiota_authentication_azure-1.11.8-py3-none-any.whl", hash = "sha256:0fb31b615f7cc80e81fdd96e92c99f48e4af0ce362859625a4083c20b73b632f", size = 7228, upload-time = "2026-08-10T15:27:06.087Z" },
3297
+ { url = "https://files.pythonhosted.org/packages/1e/b3/47066be6c65bba48b28cb80d529e3cb00816993c0ee45fb181240d54a173/microsoft_kiota_authentication_azure-1.11.9-py3-none-any.whl", hash = "sha256:0119561561845c26f2ffaf7b63d56d64e341ce231505e940e8d33b317a93b793", size = 7246, upload-time = "2026-08-14T13:53:11.061Z" },
3298
3298
  ]
3299
3299
 
3300
3300
  [[package]]
3301
3301
  name = "microsoft-kiota-http"
3302
- version = "1.11.8"
3302
+ version = "1.11.9"
3303
3303
  source = { registry = "https://pypi.org/simple" }
3304
3304
  dependencies = [
3305
3305
  { name = "httpx", extra = ["http2"] },
@@ -3307,57 +3307,57 @@ dependencies = [
3307
3307
  { name = "opentelemetry-api" },
3308
3308
  { name = "opentelemetry-sdk" },
3309
3309
  ]
3310
- sdist = { url = "https://files.pythonhosted.org/packages/38/27/a917df771714d05d7d94688963bab0f040d2f5aee9f4ff898ca23b1ec5db/microsoft_kiota_http-1.11.8.tar.gz", hash = "sha256:4cfdcbfddf62ed2d9fe9897b6a428103822367e80f3ded557817985c6d46fdb6", size = 22394, upload-time = "2026-08-10T15:27:00.314Z" }
3310
+ sdist = { url = "https://files.pythonhosted.org/packages/20/48/333f4d5e9af6e59e2529895777b18b78382f23d0ad3f88defb62d4ecf8b0/microsoft_kiota_http-1.11.9.tar.gz", hash = "sha256:a7254df64665cadb1ff081f6c8c4df86b98d2e901985b56e746ab91bfa516d75", size = 22406, upload-time = "2026-08-14T13:53:05.892Z" }
3311
3311
  wheels = [
3312
- { url = "https://files.pythonhosted.org/packages/5f/99/a3bd42bab2f27d42c1ed723e559bafec3ce7bab0a932e13ea9ecd11f7e2b/microsoft_kiota_http-1.11.8-py3-none-any.whl", hash = "sha256:198cf3ee1de95c7a0494ea276345aca46a83880f7a6dc204724f2888416dc542", size = 31982, upload-time = "2026-08-10T15:27:07.982Z" },
3312
+ { url = "https://files.pythonhosted.org/packages/01/eb/48a406b703a88b102072774005dadc5958e4028dd9db82607e2f52b37286/microsoft_kiota_http-1.11.9-py3-none-any.whl", hash = "sha256:f91ecfd775b51dd07d4059b572111c69e9867430b729cb07fb629d84ea049b35", size = 32000, upload-time = "2026-08-14T13:53:12.776Z" },
3313
3313
  ]
3314
3314
 
3315
3315
  [[package]]
3316
3316
  name = "microsoft-kiota-serialization-form"
3317
- version = "1.11.8"
3317
+ version = "1.11.9"
3318
3318
  source = { registry = "https://pypi.org/simple" }
3319
3319
  dependencies = [
3320
3320
  { name = "microsoft-kiota-abstractions" },
3321
3321
  ]
3322
- sdist = { url = "https://files.pythonhosted.org/packages/50/ec/a468d593e040929787677094994b05a8573f0d9df51196415d2b25492eb3/microsoft_kiota_serialization_form-1.11.8.tar.gz", hash = "sha256:aada041a4e96696f732f2a240f4ea2fa07c80f6be1a7ce47e8b462cd8df5362c", size = 9164, upload-time = "2026-08-10T15:27:01.224Z" }
3322
+ sdist = { url = "https://files.pythonhosted.org/packages/97/b1/3e69a62f9a18e6ac59e6852d6743a092be2811e3da57ae21f4cc05972121/microsoft_kiota_serialization_form-1.11.9.tar.gz", hash = "sha256:b4130eba95ab49e358d0726408387c87943d740ed0cbe73697c292d78f4ee6a1", size = 9183, upload-time = "2026-08-14T13:53:06.808Z" }
3323
3323
  wheels = [
3324
- { url = "https://files.pythonhosted.org/packages/ae/20/3d3556d930e623356490f5b75677cc0af4070bee758c5abc4622d43f2ef1/microsoft_kiota_serialization_form-1.11.8-py3-none-any.whl", hash = "sha256:7d6461627f94454a3473605ae08de3614dc7d6992fca675ba4dbb9a8b181732f", size = 10862, upload-time = "2026-08-10T15:27:08.989Z" },
3324
+ { url = "https://files.pythonhosted.org/packages/95/64/295dddcfe43cdba14f38bd9548b3c83dbcba3fa2f5c1fd448e8ad9fc3ed1/microsoft_kiota_serialization_form-1.11.9-py3-none-any.whl", hash = "sha256:74644aac7e1b750fb6238e1f6b62560f2a2ff1b829786df6b99cf29c794708a5", size = 10882, upload-time = "2026-08-14T13:53:13.797Z" },
3325
3325
  ]
3326
3326
 
3327
3327
  [[package]]
3328
3328
  name = "microsoft-kiota-serialization-json"
3329
- version = "1.11.8"
3329
+ version = "1.11.9"
3330
3330
  source = { registry = "https://pypi.org/simple" }
3331
3331
  dependencies = [
3332
3332
  { name = "microsoft-kiota-abstractions" },
3333
3333
  ]
3334
- sdist = { url = "https://files.pythonhosted.org/packages/bd/bd/6e78efd4da386a409e04ed3b9c6d7a6b1c4b168415f9f0f400124d6f984d/microsoft_kiota_serialization_json-1.11.8.tar.gz", hash = "sha256:ef3f076448c6b783e3606c3cf0e875a1157884d93cfc0a6c5727b35c4d3f8347", size = 10154, upload-time = "2026-08-10T15:27:02.181Z" }
3334
+ sdist = { url = "https://files.pythonhosted.org/packages/20/8f/c3473031f1d09f92e4d46c6632ab0dbe5c66678c0d591a9ea427daa032b8/microsoft_kiota_serialization_json-1.11.9.tar.gz", hash = "sha256:1c577ddd479051a34a92c889ab85bbd37cbc76fed661b0f40ecbbd96e98947c5", size = 10164, upload-time = "2026-08-14T13:53:07.655Z" }
3335
3335
  wheels = [
3336
- { url = "https://files.pythonhosted.org/packages/12/5d/ced43dafebf81b495536ef4b12511fc4b0509b75c70314374f18db32f63d/microsoft_kiota_serialization_json-1.11.8-py3-none-any.whl", hash = "sha256:97d546637c1d801563dcd0f9291874029b9471bbeb4aa983a580954042ebbf7c", size = 11789, upload-time = "2026-08-10T15:27:09.798Z" },
3336
+ { url = "https://files.pythonhosted.org/packages/77/31/6d9bd7ca2db9287c8ffe3c9f8330a1b6fb8aca7177a94c000fccc33f3723/microsoft_kiota_serialization_json-1.11.9-py3-none-any.whl", hash = "sha256:71bc0e9a4066d2a15180258a74b239cf6b7b0ee40581b2b45fc93bd2016b7997", size = 11808, upload-time = "2026-08-14T13:53:14.693Z" },
3337
3337
  ]
3338
3338
 
3339
3339
  [[package]]
3340
3340
  name = "microsoft-kiota-serialization-multipart"
3341
- version = "1.11.8"
3341
+ version = "1.11.9"
3342
3342
  source = { registry = "https://pypi.org/simple" }
3343
3343
  dependencies = [
3344
3344
  { name = "microsoft-kiota-abstractions" },
3345
3345
  ]
3346
- sdist = { url = "https://files.pythonhosted.org/packages/83/fa/4760f568c9c3341bcb855aa72c5948462f0e16449198c6b8be944430e648/microsoft_kiota_serialization_multipart-1.11.8.tar.gz", hash = "sha256:ea071b28019c9813808c204e7fad3517628362b2f7454b37f4fd57f9662c630b", size = 5097, upload-time = "2026-08-10T15:27:03.141Z" }
3346
+ sdist = { url = "https://files.pythonhosted.org/packages/cc/f7/7f1cc3d102cd44cb8e98c902b36b9ac373b88205a6775261fe3bc5caa247/microsoft_kiota_serialization_multipart-1.11.9.tar.gz", hash = "sha256:ad815dfba1618cf8be3a20f5355aa7e97947efbc06dfeca086360c0cd1b18dd8", size = 5110, upload-time = "2026-08-14T13:53:08.405Z" }
3347
3347
  wheels = [
3348
- { url = "https://files.pythonhosted.org/packages/8c/64/f6bd69b95a0b2986a044f5aa459b2a31b79282dea5a13c0fa7f0bcde6123/microsoft_kiota_serialization_multipart-1.11.8-py3-none-any.whl", hash = "sha256:f3836f3d67a1daaba212b7d1162e819d5782465b9530359c7fcdc7498e838629", size = 6683, upload-time = "2026-08-10T15:27:10.659Z" },
3348
+ { url = "https://files.pythonhosted.org/packages/09/13/6289cc5177121e58b1792abf6f02c03adad6f754ab67954716994102088f/microsoft_kiota_serialization_multipart-1.11.9-py3-none-any.whl", hash = "sha256:89bec6c3dab18be73fbe08c25c895e9b359238de1558f7a151ddcd6bbea97d92", size = 6702, upload-time = "2026-08-14T13:53:15.688Z" },
3349
3349
  ]
3350
3350
 
3351
3351
  [[package]]
3352
3352
  name = "microsoft-kiota-serialization-text"
3353
- version = "1.11.8"
3353
+ version = "1.11.9"
3354
3354
  source = { registry = "https://pypi.org/simple" }
3355
3355
  dependencies = [
3356
3356
  { name = "microsoft-kiota-abstractions" },
3357
3357
  ]
3358
- sdist = { url = "https://files.pythonhosted.org/packages/92/2a/495ab6e5cf7a63232839e11a87d22568d293042eead4ad8d390e8a535d3f/microsoft_kiota_serialization_text-1.11.8.tar.gz", hash = "sha256:39b4c13c9c5c8578c86edb0bcbbc394e1cfdc9dd53aae585c19924b6757d778b", size = 7333, upload-time = "2026-08-10T15:27:03.978Z" }
3358
+ sdist = { url = "https://files.pythonhosted.org/packages/bb/cf/5e276a80380d6cc0430f601535916d7987ccbb9c6e38e2fa4923a82f3940/microsoft_kiota_serialization_text-1.11.9.tar.gz", hash = "sha256:d47e8c0b754e7f9716962fbef2ff10d23675c0e5a51993ea519fa05c775bbec0", size = 7351, upload-time = "2026-08-14T13:53:09.2Z" }
3359
3359
  wheels = [
3360
- { url = "https://files.pythonhosted.org/packages/f8/d5/8e6527dd1fecbfeb05a2dfaac3c32ca7e6798474a194200963f3356dd6f8/microsoft_kiota_serialization_text-1.11.8-py3-none-any.whl", hash = "sha256:3ac016bcc239c1a55a0c8af4e02b32325cf9e47e27dbe1c1b8252928bc36729a", size = 8873, upload-time = "2026-08-10T15:27:11.494Z" },
3360
+ { url = "https://files.pythonhosted.org/packages/7a/3f/169bfe56c90496656d481c90a85f37a30e9f2e9467dd57ccf9f49afc1451/microsoft_kiota_serialization_text-1.11.9-py3-none-any.whl", hash = "sha256:3f075c1e20001ffcabc9cbeed157883acf78e14b7491c8cb5c18f41e3e9ff896", size = 8897, upload-time = "2026-08-14T13:53:16.551Z" },
3361
3361
  ]
3362
3362
 
3363
3363
  [[package]]
@@ -4366,11 +4366,11 @@ wheels = [
4366
4366
 
4367
4367
  [[package]]
4368
4368
  name = "platformdirs"
4369
- version = "4.11.2"
4369
+ version = "4.11.3"
4370
4370
  source = { registry = "https://pypi.org/simple" }
4371
- sdist = { url = "https://files.pythonhosted.org/packages/e5/98/0bf930c4f97d0266b58a89e36c015f56232c52b5d2f207215d48cca9e8f7/platformdirs-4.11.2.tar.gz", hash = "sha256:3a2ae5fca3520a01ab1be8b45613537f52ddf5b5f6f53d88233892dfbf0cd82d", size = 32716, upload-time = "2026-08-10T15:48:06.092Z" }
4371
+ sdist = { url = "https://files.pythonhosted.org/packages/b8/d7/e7bfbc86e9f99ff7807e24de7703f032e9c9ba80bb355cf26e0e9bc5a75e/platformdirs-4.11.3.tar.gz", hash = "sha256:66a73d38a849810252df809a3d8bcbda8e26f6c189920e7535ad608a48dbb5ab", size = 33050, upload-time = "2026-08-13T22:43:27.52Z" }
4372
4372
  wheels = [
4373
- { url = "https://files.pythonhosted.org/packages/49/e2/4e6eee633809c376c024821b91ade709cbfd040ec53939ffbcc292aa7eee/platformdirs-4.11.2-py3-none-any.whl", hash = "sha256:7f89089b6ea71bda7962953edcf784b2e2d9d285b40ad88be2bb75c6e9d82ab4", size = 23361, upload-time = "2026-08-10T15:48:04.855Z" },
4373
+ { url = "https://files.pythonhosted.org/packages/19/a9/c34aebedd3a4c9afe5101b1b8713710b3fec18087c8a36c35d2f909861bd/platformdirs-4.11.3-py3-none-any.whl", hash = "sha256:5ed065d443751de711da036041a7a214122efc4a4de393b3f4137ba5576540e7", size = 23491, upload-time = "2026-08-13T22:43:26.121Z" },
4374
4374
  ]
4375
4375
 
4376
4376
  [[package]]
@@ -5201,11 +5201,11 @@ wheels = [
5201
5201
 
5202
5202
  [[package]]
5203
5203
  name = "pyphen"
5204
- version = "0.18.0"
5204
+ version = "0.18.1"
5205
5205
  source = { registry = "https://pypi.org/simple" }
5206
- sdist = { url = "https://files.pythonhosted.org/packages/ad/fb/dac486dca9e6a82437596614073e7236aed0e73a4b7913ccdefd325b236b/pyphen-0.18.0.tar.gz", hash = "sha256:bc8718e50d80c1bfb4d38a476fc708a6b5bf904549db130f06ca20376971393e", size = 2110506, upload-time = "2026-08-13T11:57:06.995Z" }
5206
+ sdist = { url = "https://files.pythonhosted.org/packages/94/47/8430452269cd28863d73b903d07d329d058cf762527ff211b3864ba61fc7/pyphen-0.18.1.tar.gz", hash = "sha256:dbae6fbbe4f01cb206108b43573d857c67107be9d0e38eb1b08d6fa2210634a7", size = 2116411, upload-time = "2026-08-14T11:30:12.083Z" }
5207
5207
  wheels = [
5208
- { url = "https://files.pythonhosted.org/packages/44/3d/fd5b56a0e27e81fe884bbf3361fb69ce8d47f55de09f73dcd388926f1cab/pyphen-0.18.0-py3-none-any.whl", hash = "sha256:92d96000b81b58d9388a63604000d3787f3f7dc5174deb2a58c528b77db3a720", size = 2116143, upload-time = "2026-08-13T11:57:04.756Z" },
5208
+ { url = "https://files.pythonhosted.org/packages/ec/1d/23801cf008f71575f0a4800463f349afa5f04b27fe783178a45cdc4d5edf/pyphen-0.18.1-py3-none-any.whl", hash = "sha256:0aa9051e15928cecadd4c632cea0258ba57215b2a197a39baa46abcdb0f47e84", size = 2116143, upload-time = "2026-08-14T11:30:10.428Z" },
5209
5209
  ]
5210
5210
 
5211
5211
  [[package]]