classifyre-cli 0.6.10__tar.gz → 0.6.11__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 (387) hide show
  1. classifyre_cli-0.6.11/.turbo/turbo-build.log +3 -0
  2. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/PKG-INFO +1 -1
  3. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/package.json +1 -1
  4. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/pyproject.toml +16 -1
  5. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom_detector/results.py +2 -4
  6. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/file_parser.py +77 -0
  7. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/utils/test_file_parser.py +90 -0
  8. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/uv.lock +31 -27
  9. classifyre_cli-0.6.10/.turbo/turbo-build.log +0 -3
  10. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/.gitignore +0 -0
  11. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/.python-version +0 -0
  12. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/README.md +0 -0
  13. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/main.py +0 -0
  14. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/scripts/generate_models.py +0 -0
  15. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/scripts/generate_runtime_packages.py +0 -0
  16. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/scripts/generate_sdk_completions.py +0 -0
  17. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/__init__.py +0 -0
  18. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/augmentation/__init__.py +0 -0
  19. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/augmentation/contract.py +0 -0
  20. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/augmentation/preview.py +0 -0
  21. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/augmentation/runner.py +0 -0
  22. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/augmentation/sdk.py +0 -0
  23. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/augmentation/session.py +0 -0
  24. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/config.py +0 -0
  25. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/__init__.py +0 -0
  26. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/base.py +0 -0
  27. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/broken_links/__init__.py +0 -0
  28. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/broken_links/detector.py +0 -0
  29. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/config.py +0 -0
  30. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/content/__init__.py +0 -0
  31. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom/__init__.py +0 -0
  32. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom/detector.py +0 -0
  33. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom/extractor.py +0 -0
  34. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom/runners/__init__.py +0 -0
  35. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom/runners/_base.py +0 -0
  36. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom/runners/_custom_detector.py +0 -0
  37. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom/runners/_decision.py +0 -0
  38. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom/runners/_factory.py +0 -0
  39. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom/runners/_gliner2.py +0 -0
  40. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom/runners/_image_classification.py +0 -0
  41. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom/runners/_llm.py +0 -0
  42. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom/runners/_object_detection.py +0 -0
  43. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom/runners/_provider_call.py +0 -0
  44. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom/runners/_regex.py +0 -0
  45. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom/runners/_tag.py +0 -0
  46. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom/runners/_text_classification.py +0 -0
  47. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom/trainer.py +0 -0
  48. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom_detector/__init__.py +0 -0
  49. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom_detector/contract.py +0 -0
  50. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom_detector/files.py +0 -0
  51. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom_detector/preview.py +0 -0
  52. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom_detector/runner.py +0 -0
  53. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom_detector/sdk.py +0 -0
  54. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/custom_detector/session.py +0 -0
  55. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/dependencies.py +0 -0
  56. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/engine_version.py +0 -0
  57. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/errors.py +0 -0
  58. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/pii/__init__.py +0 -0
  59. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/pii/detector.py +0 -0
  60. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/secrets/__init__.py +0 -0
  61. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/secrets/detector.py +0 -0
  62. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/threat/__init__.py +0 -0
  63. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/threat/code_security_detector.py +0 -0
  64. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/detectors/threat/yara_detector.py +0 -0
  65. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/file_evaluation/__init__.py +0 -0
  66. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/file_evaluation/asset_fixture.py +0 -0
  67. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/file_evaluation/runner.py +0 -0
  68. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/graph/__init__.py +0 -0
  69. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/graph/edges.py +0 -0
  70. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/main.py +0 -0
  71. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/models/generated_detectors.py +0 -0
  72. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/models/generated_input.py +0 -0
  73. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/models/generated_single_asset_scan_results.py +0 -0
  74. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/notebook/__init__.py +0 -0
  75. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/notebook/child.py +0 -0
  76. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/notebook/cli.py +0 -0
  77. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/notebook/cohort.py +0 -0
  78. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/notebook/contract.py +0 -0
  79. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/notebook/execute.py +0 -0
  80. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/notebook/files.py +0 -0
  81. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/notebook/groups.py +0 -0
  82. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/notebook/outputs.py +0 -0
  83. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/notebook/packages.py +0 -0
  84. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/notebook/protocol.py +0 -0
  85. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/notebook/redact.py +0 -0
  86. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/notebook/scaffold.py +0 -0
  87. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/notebook/sdk.py +0 -0
  88. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/notebook/serialize.py +0 -0
  89. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/outputs/__init__.py +0 -0
  90. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/outputs/base.py +0 -0
  91. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/outputs/console.py +0 -0
  92. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/outputs/factory.py +0 -0
  93. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/outputs/file.py +0 -0
  94. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/outputs/rest.py +0 -0
  95. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/pipeline/__init__.py +0 -0
  96. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/pipeline/asset_payload_server.py +0 -0
  97. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/pipeline/content_provider.py +0 -0
  98. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/pipeline/detector_breaker.py +0 -0
  99. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/pipeline/detector_pipeline.py +0 -0
  100. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/pipeline/parsed_content_provider.py +0 -0
  101. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/pipeline/payload_window.py +0 -0
  102. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/pipeline/scan_cache.py +0 -0
  103. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/pipeline/text_artifact.py +0 -0
  104. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/pipeline/worker_pool.py +0 -0
  105. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/__init__.py +0 -0
  106. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/asset_metadata.py +0 -0
  107. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/atlassian_common.py +0 -0
  108. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/azure_blob_storage/__init__.py +0 -0
  109. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/azure_blob_storage/source.py +0 -0
  110. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/base.py +0 -0
  111. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/confluence/__init__.py +0 -0
  112. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/confluence/source.py +0 -0
  113. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/custom/__init__.py +0 -0
  114. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/custom/env.py +0 -0
  115. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/custom/runner.py +0 -0
  116. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/custom/source.py +0 -0
  117. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/databricks/__init__.py +0 -0
  118. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/databricks/source.py +0 -0
  119. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/delta_lake/__init__.py +0 -0
  120. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/delta_lake/source.py +0 -0
  121. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/dependencies.py +0 -0
  122. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/dremio/__init__.py +0 -0
  123. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/dremio/client.py +0 -0
  124. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/dremio/source.py +0 -0
  125. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/dropbox/__init__.py +0 -0
  126. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/dropbox/auth.py +0 -0
  127. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/dropbox/source.py +0 -0
  128. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/elasticsearch/__init__.py +0 -0
  129. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/elasticsearch/source.py +0 -0
  130. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/email/__init__.py +0 -0
  131. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/email/source.py +0 -0
  132. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/git/__init__.py +0 -0
  133. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/git/source.py +0 -0
  134. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/google_cloud_storage/__init__.py +0 -0
  135. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/google_cloud_storage/source.py +0 -0
  136. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/google_workspace/__init__.py +0 -0
  137. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/google_workspace/source.py +0 -0
  138. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/hive/__init__.py +0 -0
  139. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/hive/source.py +0 -0
  140. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/hugging_face/__init__.py +0 -0
  141. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/hugging_face/source.py +0 -0
  142. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/iceberg/__init__.py +0 -0
  143. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/iceberg/source.py +0 -0
  144. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/jira/__init__.py +0 -0
  145. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/jira/source.py +0 -0
  146. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/kafka/__init__.py +0 -0
  147. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/kafka/rest.py +0 -0
  148. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/kafka/source.py +0 -0
  149. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/lakehouse_base.py +0 -0
  150. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/local_folder/__init__.py +0 -0
  151. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/local_folder/source.py +0 -0
  152. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/meilisearch/__init__.py +0 -0
  153. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/meilisearch/source.py +0 -0
  154. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/microsoft_365/__init__.py +0 -0
  155. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/microsoft_365/source.py +0 -0
  156. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/mongodb/__init__.py +0 -0
  157. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/mongodb/source.py +0 -0
  158. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/mssql/__init__.py +0 -0
  159. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/mssql/source.py +0 -0
  160. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/mysql/__init__.py +0 -0
  161. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/mysql/source.py +0 -0
  162. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/neo4j/__init__.py +0 -0
  163. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/neo4j/source.py +0 -0
  164. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/notion/__init__.py +0 -0
  165. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/notion/client.py +0 -0
  166. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/notion/source.py +0 -0
  167. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/object_storage/base.py +0 -0
  168. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/opensearch/__init__.py +0 -0
  169. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/opensearch/source.py +0 -0
  170. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/oracle/__init__.py +0 -0
  171. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/oracle/source.py +0 -0
  172. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/postgresql/__init__.py +0 -0
  173. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/postgresql/source.py +0 -0
  174. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/powerbi/__init__.py +0 -0
  175. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/powerbi/source.py +0 -0
  176. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/recipe_normalizer.py +0 -0
  177. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/reddit/__init__.py +0 -0
  178. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/reddit/source.py +0 -0
  179. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/s3_client.py +0 -0
  180. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/s3_compatible_storage/README.md +0 -0
  181. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/s3_compatible_storage/__init__.py +0 -0
  182. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/s3_compatible_storage/source.py +0 -0
  183. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/sandbox/__init__.py +0 -0
  184. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/sandbox/source.py +0 -0
  185. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/search_engine_base.py +0 -0
  186. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/servicedesk/__init__.py +0 -0
  187. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/servicedesk/source.py +0 -0
  188. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/slack/__init__.py +0 -0
  189. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/slack/source.py +0 -0
  190. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/snowflake/__init__.py +0 -0
  191. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/snowflake/source.py +0 -0
  192. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/sqlite/__init__.py +0 -0
  193. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/sqlite/source.py +0 -0
  194. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/tableau/__init__.py +0 -0
  195. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/tableau/source.py +0 -0
  196. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/tabular_base.py +0 -0
  197. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/tabular_utils.py +0 -0
  198. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/wordpress/__init__.py +0 -0
  199. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/wordpress/source.py +0 -0
  200. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/youtube/__init__.py +0 -0
  201. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/sources/youtube/source.py +0 -0
  202. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/telemetry.py +0 -0
  203. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/__init__.py +0 -0
  204. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/archive_extraction.py +0 -0
  205. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/content_extraction.py +0 -0
  206. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/dependency_groups.py +0 -0
  207. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/embedded_files.py +0 -0
  208. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/external_video.py +0 -0
  209. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/file_metadata.py +0 -0
  210. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/file_to_images.py +0 -0
  211. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/hashing.py +0 -0
  212. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/legacy_office.py +0 -0
  213. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/payload.py +0 -0
  214. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/range_reader.py +0 -0
  215. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/redaction.py +0 -0
  216. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/resources.py +0 -0
  217. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/sampling_cursor.py +0 -0
  218. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/sampling_frontier.py +0 -0
  219. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/source_files.py +0 -0
  220. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/sql_lineage.py +0 -0
  221. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/torch_runtime.py +0 -0
  222. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/transcription.py +0 -0
  223. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/urn.py +0 -0
  224. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/uv_sync.py +0 -0
  225. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/validation.py +0 -0
  226. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/src/utils/video_processing.py +0 -0
  227. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/__init__.py +0 -0
  228. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/_lakehouse_fakes.py +0 -0
  229. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/conftest.py +0 -0
  230. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/__init__.py +0 -0
  231. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/broken_links/test_broken_links_detector.py +0 -0
  232. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/conftest.py +0 -0
  233. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/content/__init__.py +0 -0
  234. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/custom/__init__.py +0 -0
  235. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/custom/conftest.py +0 -0
  236. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/custom/test_decision_runner.py +0 -0
  237. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/custom/test_gliner2_classification.py +0 -0
  238. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/custom/test_invoice_extraction.py +0 -0
  239. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/custom/test_llm_runner.py +0 -0
  240. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/custom/test_pipeline_integration.py +0 -0
  241. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/custom/test_regex_runner.py +0 -0
  242. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/custom/test_runner_hardening.py +0 -0
  243. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/custom/test_transformer_runners.py +0 -0
  244. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/pii/__init__.py +0 -0
  245. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/pii/conftest.py +0 -0
  246. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/pii/sample_invoice.pdf +0 -0
  247. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/pii/test_pii_chunking.py +0 -0
  248. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/pii/test_pii_detector.py +0 -0
  249. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/pii/test_pii_detector_extended.py +0 -0
  250. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/pii/test_pii_regional_entities.py +0 -0
  251. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/pii/test_pii_severity.py +0 -0
  252. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/secrets/__init__.py +0 -0
  253. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/secrets/test_secrets_detector.py +0 -0
  254. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/secrets/test_secrets_detector_extended.py +0 -0
  255. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/test_base_detector.py +0 -0
  256. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/test_custom_detector_examples_runtime.py +0 -0
  257. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/test_custom_detector_session.py +0 -0
  258. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/test_detector_catalog_commercial.py +0 -0
  259. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/test_detector_pipeline_types.py +0 -0
  260. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/test_detector_schema_examples.py +0 -0
  261. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/test_detector_types.py +0 -0
  262. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/test_phase2_detectors.py +0 -0
  263. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/test_registry.py +0 -0
  264. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/test_tag_runner.py +0 -0
  265. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/threat/__init__.py +0 -0
  266. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/threat/test_code_security_detector.py +0 -0
  267. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/detectors/threat/test_yara_detector.py +0 -0
  268. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/integration/test_wordpress_broken_links_detector.py +0 -0
  269. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/integration/test_wordpress_links_assets.py +0 -0
  270. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/pipeline/test_detector_breaker.py +0 -0
  271. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/pipeline/test_detector_outcomes.py +0 -0
  272. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/pipeline/test_detector_pipeline.py +0 -0
  273. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/pipeline/test_worker_pool.py +0 -0
  274. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_arrow_ipc_payloads.py +0 -0
  275. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_assets_metadata_catalog.py +0 -0
  276. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_augmentation_contract.py +0 -0
  277. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_augmentation_edges.py +0 -0
  278. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_augmentation_patch.py +0 -0
  279. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_augmentation_scan_cache.py +0 -0
  280. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_augmentation_sdk.py +0 -0
  281. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_augmentation_session.py +0 -0
  282. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_augmentation_tags_end_to_end.py +0 -0
  283. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_automatic_new_first.py +0 -0
  284. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_azure_blob_storage_source.py +0 -0
  285. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_base_source_attachment.py +0 -0
  286. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_base_source_sampling.py +0 -0
  287. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_byte_valued_fields.py +0 -0
  288. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_config.py +0 -0
  289. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_confluence_source.py +0 -0
  290. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_custom_detector_end_to_end.py +0 -0
  291. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_custom_detector_evaluation.py +0 -0
  292. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_custom_detector_notebook.py +0 -0
  293. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_custom_detector_templates.py +0 -0
  294. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_custom_extractor.py +0 -0
  295. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_custom_source.py +0 -0
  296. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_custom_source_relationships.py +0 -0
  297. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_custom_source_tags_end_to_end.py +0 -0
  298. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_databricks_source.py +0 -0
  299. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_delta_lake_source.py +0 -0
  300. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_dependency_groups.py +0 -0
  301. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_detector_scope.py +0 -0
  302. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_dremio_source.py +0 -0
  303. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_dropbox_auth_command.py +0 -0
  304. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_dropbox_source.py +0 -0
  305. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_elasticsearch_source.py +0 -0
  306. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_email_source.py +0 -0
  307. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_file_evaluation_runner.py +0 -0
  308. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_git_source.py +0 -0
  309. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_google_cloud_storage_source.py +0 -0
  310. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_google_workspace_source.py +0 -0
  311. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_graph_edges.py +0 -0
  312. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_hashing.py +0 -0
  313. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_hive_source.py +0 -0
  314. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_hugging_face_source.py +0 -0
  315. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_iceberg_source.py +0 -0
  316. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_jira_source.py +0 -0
  317. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_kafka_source.py +0 -0
  318. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_lineage_loss_reporting.py +0 -0
  319. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_local_folder_source.py +0 -0
  320. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_main.py +0 -0
  321. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_meilisearch_source.py +0 -0
  322. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_microsoft_365_source.py +0 -0
  323. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_mongodb_source.py +0 -0
  324. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_mssql_source.py +0 -0
  325. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_mysql_source.py +0 -0
  326. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_neo4j_source.py +0 -0
  327. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_notebook_asset_entity.py +0 -0
  328. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_notebook_asset_extract.py +0 -0
  329. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_notebook_asset_tags.py +0 -0
  330. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_notebook_cohort.py +0 -0
  331. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_notebook_execute.py +0 -0
  332. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_notebook_files.py +0 -0
  333. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_notebook_groups.py +0 -0
  334. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_notebook_log_levels.py +0 -0
  335. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_notebook_packages.py +0 -0
  336. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_notebook_query_assets.py +0 -0
  337. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_notebook_sdk_exports.py +0 -0
  338. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_notebook_serialize.py +0 -0
  339. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_notebook_templates.py +0 -0
  340. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_notion_source.py +0 -0
  341. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_object_storage_download_efficiency.py +0 -0
  342. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_opensearch_source.py +0 -0
  343. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_oracle_source.py +0 -0
  344. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_outputs.py +0 -0
  345. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_payload_window.py +0 -0
  346. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_payload_window_parquet.py +0 -0
  347. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_postgresql_source.py +0 -0
  348. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_powerbi_source.py +0 -0
  349. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_range_reading.py +0 -0
  350. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_recipe_normalizer.py +0 -0
  351. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_reddit_source.py +0 -0
  352. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_rest_backpressure.py +0 -0
  353. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_runtime_packages.py +0 -0
  354. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_s3_compatible_storage_source.py +0 -0
  355. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_sampling_automatic.py +0 -0
  356. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_sampling_cursor.py +0 -0
  357. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_sampling_frontier.py +0 -0
  358. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_sandbox_source.py +0 -0
  359. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_scan_cache.py +0 -0
  360. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_sdk_completions.py +0 -0
  361. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_secret_redaction.py +0 -0
  362. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_semantic_declarations.py +0 -0
  363. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_servicedesk_source.py +0 -0
  364. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_slack_source.py +0 -0
  365. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_snowflake_source.py +0 -0
  366. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_source_dependency_groups.py +0 -0
  367. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_source_strategy_conformance.py +0 -0
  368. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_sqlite_source.py +0 -0
  369. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_tableau_source.py +0 -0
  370. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_tabular_automatic_sampling.py +0 -0
  371. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_tabular_lineage.py +0 -0
  372. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_tabular_utils.py +0 -0
  373. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_torch_runtime.py +0 -0
  374. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_urn.py +0 -0
  375. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_uv_sync.py +0 -0
  376. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_wordpress_source.py +0 -0
  377. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_youtube_source.py +0 -0
  378. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/test_youtube_source_integration.py +0 -0
  379. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/utils/test_archive_extraction.py +0 -0
  380. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/utils/test_content_extraction.py +0 -0
  381. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/utils/test_embedded_files.py +0 -0
  382. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/utils/test_file_metadata.py +0 -0
  383. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/utils/test_file_to_images.py +0 -0
  384. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/utils/test_legacy_office.py +0 -0
  385. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/utils/test_payload.py +0 -0
  386. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/utils/test_transcription.py +0 -0
  387. {classifyre_cli-0.6.10 → classifyre_cli-0.6.11}/tests/utils/test_video_processing.py +0 -0
@@ -0,0 +1,3 @@
1
+ $ uv sync
2
+ Resolved 324 packages in 202ms
3
+ Checked 51 packages in 0.91ms
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: classifyre-cli
3
- Version: 0.6.10
3
+ Version: 0.6.11
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.6.10",
3
+ "version": "0.6.11",
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.6.10"
3
+ version = "0.6.11"
4
4
  description = "Classifyre CLI — scan and classify unstructured data sources"
5
5
  readme = "README.md"
6
6
  # Upper bound is load-bearing: onnxruntime publishes no cp315 wheels (notably
@@ -483,6 +483,21 @@ package = true
483
483
  # distribution declared by our video and OCR groups. Installing both would
484
484
  # overwrite the same cv2 namespace and add GUI libraries to CPU-only containers.
485
485
  exclude-dependencies = ["opencv-python"]
486
+ # Two transitive dependencies whose latest release breaks the package that
487
+ # pulls it in, while that package's own requirement still allows it. Both
488
+ # failures were silent in a scan: images and scans came back with no text, and
489
+ # every audio and video file failed. Lift a bound when its consumer catches up.
490
+ constraint-dependencies = [
491
+ # faster-whisper 1.2.1 (its latest) decodes with
492
+ # av.open(..., metadata_errors="ignore"), and so does utils/transcription.py.
493
+ # PyAV 19 removed the argument: every transcription raised TypeError.
494
+ "av>=11,<19",
495
+ # Docling (through 2.135) imports rapidocr.utils.model_resolver.PP_OCRV6_LANGS
496
+ # while building its RapidOCR engine. rapidocr 3.10.0 no longer has it;
497
+ # Docling catches the ImportError, logs "No OCR engine found" and converts
498
+ # every image and scanned PDF to an empty document.
499
+ "rapidocr>=3.9.1,<3.10",
500
+ ]
486
501
  # Every platform we ship must resolve to versions with
487
502
  # usable wheels. Without this, uv happily locks versions that are missing a
488
503
  # platform — e.g. deltalake 1.6.1 published no win_amd64 wheel, which broke the
@@ -215,9 +215,7 @@ class FindingMapper:
215
215
  # Overlong keys are hashed, never truncated: truncation collides
216
216
  # ("row-111..." vs "row-111..." with a different tail become one
217
217
  # finding), and the API applies the same hash, so both sides agree.
218
- identity_key = (
219
- _identity_key(str(identity)) if identity not in (None, "") else None
220
- )
218
+ identity_key = _identity_key(str(identity)) if identity not in (None, "") else None
221
219
  if identity_key is not None:
222
220
  metadata["identity"] = identity_key
223
221
 
@@ -263,4 +261,4 @@ class FindingMapper:
263
261
  return kept or None
264
262
 
265
263
 
266
- __all__ = ["RUNNER", "FindingMapper", "bound_severity", "_identity_key"]
264
+ __all__ = ["RUNNER", "FindingMapper", "_identity_key", "bound_severity"]
@@ -466,9 +466,15 @@ class _DoclingState:
466
466
  # sync itself failed (transient: network blip, registry timeout). A
467
467
  # genuine broken package fails on the retry too and is cached then.
468
468
  self.install_retry_remaining: int = 1
469
+ # Whether Docling resolved an OCR engine, asked once per process.
470
+ self.ocr_engine_checked: bool = False
471
+ self.ocr_engine_error: str | None = None
472
+ self.ocr_engine_failures: int = 0
469
473
 
470
474
 
471
475
  _docling_state = _DoclingState()
476
+ # How often building the OCR engine may fail before the failure is taken as settled.
477
+ _OCR_ENGINE_ATTEMPTS = 2
472
478
  _docling_lock = threading.Lock()
473
479
  # Limits concurrent converter.convert() calls to prevent OOM. The docling
474
480
  # StandardPdfPipeline alone holds ~1 GB of model weights; additional working
@@ -538,6 +544,71 @@ def _reset_docling_singleton() -> None:
538
544
  _docling_state.error = None
539
545
  _docling_state.attempted = False
540
546
  _docling_state.install_retry_remaining = 1
547
+ _docling_state.ocr_engine_checked = False
548
+ _docling_state.ocr_engine_error = None
549
+ _docling_state.ocr_engine_failures = 0
550
+
551
+
552
+ def _docling_ocr_engine_error() -> str | None:
553
+ """Why Docling cannot read pixels in this environment, or None when it can.
554
+
555
+ Docling picks its OCR engine by trying each one and catching ImportError.
556
+ When none constructs it logs "No OCR engine found" and carries on: every
557
+ image and every scanned PDF then converts to an empty document, with no
558
+ error for the caller to see. That is how rapidocr 3.10.0 (which dropped a
559
+ name Docling imports) turned a whole drive of photographs and scans into
560
+ "extraction completed, no text" instead of a failure.
561
+
562
+ So the same selection is run once here and its outcome kept. The answer
563
+ contains "unavailable" on purpose: iter_file_pages reports such an error as
564
+ ENGINE_UNAVAILABLE, which a scan counts as missing coverage and retries,
565
+ rather than as an empty file.
566
+ """
567
+ if _docling_state.ocr_engine_checked:
568
+ return _docling_state.ocr_engine_error
569
+ with _docling_lock:
570
+ if _docling_state.ocr_engine_checked:
571
+ return _docling_state.ocr_engine_error
572
+ import importlib
573
+
574
+ try:
575
+ accelerator = importlib.import_module("docling.datamodel.accelerator_options")
576
+ options = importlib.import_module("docling.datamodel.pipeline_options")
577
+ auto = importlib.import_module("docling.models.stages.ocr.auto_ocr_model")
578
+ build = auto.OcrAutoModel
579
+ auto_options = options.OcrAutoOptions
580
+ accelerator_options = accelerator.AcceleratorOptions
581
+ except Exception:
582
+ # A Docling laid out differently from the one this was written
583
+ # against: nothing to ask, so do not second-guess it.
584
+ _docling_state.ocr_engine_checked = True
585
+ return None
586
+ try:
587
+ model = build(
588
+ enabled=True,
589
+ artifacts_path=None,
590
+ options=auto_options(),
591
+ accelerator_options=accelerator_options(),
592
+ )
593
+ except Exception as exc:
594
+ # Building an engine can fail for a reason that passes (its model
595
+ # files are fetched on first use), so this answer is kept only
596
+ # once it has been given twice.
597
+ _docling_state.ocr_engine_failures += 1
598
+ if _docling_state.ocr_engine_failures >= _OCR_ENGINE_ATTEMPTS:
599
+ _docling_state.ocr_engine_error = f"OCR engine unavailable: {exc}"
600
+ _docling_state.ocr_engine_checked = True
601
+ return f"OCR engine unavailable: {exc}"
602
+ error: str | None = None
603
+ # Absent attribute (a later Docling) reads as "resolved".
604
+ if getattr(model, "_engine", model) is None:
605
+ error = (
606
+ "OCR engine unavailable: Docling found no usable OCR engine "
607
+ "(see the 'cannot be used because' lines it logged above)"
608
+ )
609
+ _docling_state.ocr_engine_error = error
610
+ _docling_state.ocr_engine_checked = True
611
+ return error
541
612
 
542
613
 
543
614
  def _require_file_processing(module_name: str) -> object:
@@ -1004,6 +1075,12 @@ def _extract_docling_markdown(
1004
1075
  return "", error
1005
1076
  if converter is None:
1006
1077
  return "", "Docling converter unavailable"
1078
+ # Pixels need an OCR engine; the document formats Docling parses natively
1079
+ # (pptx, odt, msg) do not, and must keep working without one.
1080
+ if _normalize_mime_type(mime_type).startswith("image/") or mime_type == "application/pdf":
1081
+ engine_error = _docling_ocr_engine_error()
1082
+ if engine_error:
1083
+ return "", engine_error
1007
1084
 
1008
1085
  temp_fname = _temp_file_name(file_name, mime_type)
1009
1086
  try:
@@ -473,6 +473,96 @@ class TestDoclingConverterSingleton:
473
473
  assert text1 == text2 == "ocr output"
474
474
  assert len(init_count) == 1, "DocumentConverter() must not be re-instantiated per file"
475
475
 
476
+ def _install_fake_ocr_selection(
477
+ self,
478
+ monkeypatch: pytest.MonkeyPatch,
479
+ *,
480
+ engine: object | None,
481
+ raises: Exception | None = None,
482
+ ) -> list[int]:
483
+ """Inject the Docling modules the OCR-engine check asks, on top of the fake converter.
484
+
485
+ `engine` is what Docling's automatic selection ends up with: None is
486
+ the state it logs as "No OCR engine found" and then ignores.
487
+ """
488
+ selections: list[int] = []
489
+
490
+ class FakeAutoModel:
491
+ def __init__(self, **_kwargs: Any) -> None:
492
+ selections.append(1)
493
+ if raises is not None:
494
+ raise raises
495
+ self._engine = engine
496
+
497
+ modules = {
498
+ "docling.datamodel": {},
499
+ "docling.datamodel.accelerator_options": {"AcceleratorOptions": object},
500
+ "docling.datamodel.pipeline_options": {"OcrAutoOptions": object},
501
+ "docling.models": {},
502
+ "docling.models.stages": {},
503
+ "docling.models.stages.ocr": {},
504
+ "docling.models.stages.ocr.auto_ocr_model": {"OcrAutoModel": FakeAutoModel},
505
+ }
506
+ for name, attributes in modules.items():
507
+ module = ModuleType(name)
508
+ for attribute, value in attributes.items():
509
+ setattr(module, attribute, value)
510
+ monkeypatch.setitem(sys.modules, name, module)
511
+ return selections
512
+
513
+ def test_image_without_an_ocr_engine_is_engine_unavailable(
514
+ self, monkeypatch: pytest.MonkeyPatch
515
+ ) -> None:
516
+ """Docling converting pixels with no engine is missing coverage, not an empty file."""
517
+ self._install_fake_docling(monkeypatch, [])
518
+ self._install_fake_ocr_selection(monkeypatch, engine=None)
519
+
520
+ text, error = extract_text(png_stub(), "image/png", file_name="whiteboard.png")
521
+ assert text == ""
522
+ assert error is not None and "OCR engine unavailable" in error
523
+
524
+ with pytest.raises(TextExtractionCoverageError) as raised:
525
+ list(iter_file_pages(png_stub(), "image/png", file_name="whiteboard.png"))
526
+ assert raised.value.code == TextExtractionCoverageCode.ENGINE_UNAVAILABLE
527
+
528
+ def test_ocr_engine_that_fails_to_build_is_engine_unavailable(
529
+ self, monkeypatch: pytest.MonkeyPatch
530
+ ) -> None:
531
+ self._install_fake_docling(monkeypatch, [])
532
+ selections = self._install_fake_ocr_selection(
533
+ monkeypatch, engine=None, raises=ImportError("rapidocr does not expose PP_OCRV6_LANGS")
534
+ )
535
+
536
+ for name in ("scan-1.png", "scan-2.png", "scan-3.png"):
537
+ _text, error = extract_text(png_stub(), "image/png", file_name=name)
538
+ assert error == "OCR engine unavailable: rapidocr does not expose PP_OCRV6_LANGS"
539
+ # Tried again once, in case the first failure was a download that did
540
+ # not finish, and then no more: every further image costs nothing.
541
+ assert len(selections) == 2
542
+
543
+ def test_ocr_engine_is_asked_once(self, monkeypatch: pytest.MonkeyPatch) -> None:
544
+ self._install_fake_docling(monkeypatch, [])
545
+ selections = self._install_fake_ocr_selection(monkeypatch, engine=object())
546
+
547
+ text1, error1 = extract_text(png_stub(), "image/png", file_name="a.png")
548
+ text2, error2 = extract_text(png_stub(), "image/png", file_name="b.png")
549
+
550
+ assert (text1, error1) == (text2, error2) == ("ocr output", None)
551
+ assert len(selections) == 1, "the engine selection loads models: once per process"
552
+
553
+ def test_native_document_formats_do_not_need_an_ocr_engine(
554
+ self, monkeypatch: pytest.MonkeyPatch
555
+ ) -> None:
556
+ """An .odt has no pixels to read; a missing OCR engine must not cost its text."""
557
+ self._install_fake_docling(monkeypatch, [])
558
+ selections = self._install_fake_ocr_selection(monkeypatch, engine=None)
559
+
560
+ text, error = extract_text(
561
+ b"odt-bytes", "application/vnd.oasis.opendocument.text", file_name="doc.odt"
562
+ )
563
+ assert (text, error) == ("ocr output", None)
564
+ assert selections == []
565
+
476
566
 
477
567
  # ---------------------------------------------------------------------------
478
568
  # parse_file
@@ -23,6 +23,10 @@ required-markers = [
23
23
  ]
24
24
 
25
25
  [manifest]
26
+ constraints = [
27
+ { name = "av", specifier = ">=11,<19" },
28
+ { name = "rapidocr", specifier = ">=3.9.1,<3.10" },
29
+ ]
26
30
  excludes = ["opencv-python"]
27
31
 
28
32
  [[package]]
@@ -337,28 +341,28 @@ wheels = [
337
341
 
338
342
  [[package]]
339
343
  name = "av"
340
- version = "19.0.1"
341
- source = { registry = "https://pypi.org/simple" }
342
- sdist = { url = "https://files.pythonhosted.org/packages/90/bc/a2a40e503250fe5d4174471911828f31658864eb69a8a7cb960c715e17b7/av-19.0.1.tar.gz", hash = "sha256:08674930eaf1af78a3ed8f93d3ba49383323b3a867e84349d9c399e36f7497da", size = 4274648, upload-time = "2026-10-03T01:48:28.575Z" }
343
- wheels = [
344
- { url = "https://files.pythonhosted.org/packages/ec/2f/f4d219b2c72fea88bcbaea23de5b7f864ebecd348586fd2fe69f7f657147/av-19.0.1-cp312-abi3-macosx_11_0_x86_64.whl", hash = "sha256:2bd44ef4c09bb04aa6100d4c6191ddedaffef6af757ac55d5b4dc90915859299", size = 22625494, upload-time = "2026-10-03T01:47:21.866Z" },
345
- { url = "https://files.pythonhosted.org/packages/ff/75/db37bb43a12a317cc0c0b96ddabc7896f582503b377e0803d4d721969522/av-19.0.1-cp312-abi3-macosx_14_0_arm64.whl", hash = "sha256:29d85e4ee36bf8f475dad07d4f4417c07bba62535f6a7179429c357e0ca8fb0f", size = 18439188, upload-time = "2026-10-03T01:47:25.541Z" },
346
- { url = "https://files.pythonhosted.org/packages/10/4b/61f138fcf21e7bb50655ed21dd7fdc7a296baf72ea3c7ad8e89cb00b69c1/av-19.0.1-cp312-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:437d4c0d5a7d771f2c3af84cd28e6aac6e173851116c60b53e81dbf1eebe4eab", size = 32676941, upload-time = "2026-10-03T01:47:29.237Z" },
347
- { url = "https://files.pythonhosted.org/packages/c8/97/5fb45934ac64e8afc2c6869a7dcb8cb2af1ddab09a725367548856cbb59f/av-19.0.1-cp312-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1bea5b6134209305199bce7627ac3d33964de2cf2b09c77d08e7f67cf8bd4170", size = 34983451, upload-time = "2026-10-03T01:47:32.895Z" },
348
- { url = "https://files.pythonhosted.org/packages/66/f2/6eee1b99ac492fa1965d6fd466ef8b644ca296b4f1dfa8c8225ab340b139/av-19.0.1-cp312-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:1de938ec0134ad88f795dfe0a2dfc2d59e9ecea39a20158d37961279a3483612", size = 41660680, upload-time = "2026-10-03T01:47:36.903Z" },
349
- { url = "https://files.pythonhosted.org/packages/11/be/e4ddd0197d02a3114402f3ffde541f6c4edecd24d670bea0da1eb6f15fb2/av-19.0.1-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:bcd0af218ecbeddbb1b0c56c4278043a3d97b87f3b8e33f6f92d452c744b1b08", size = 33748455, upload-time = "2026-10-03T01:47:40.541Z" },
350
- { url = "https://files.pythonhosted.org/packages/7a/41/b9af863f635f64abaf5eb734521306487fc79447f5d55d792339a81c8a4d/av-19.0.1-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:935a6b6386a6994964e324eb02af4dab01eedbcbbde23b4b21bf1dc59b004244", size = 36008899, upload-time = "2026-10-03T01:47:44.13Z" },
351
- { url = "https://files.pythonhosted.org/packages/e6/dc/a87a5a5e3ac462734f9befd8bad1447301e5802d8c111e22bf708fba7af3/av-19.0.1-cp312-abi3-win_amd64.whl", hash = "sha256:906fc3db09288319a75ea23ffefb59961c7dbe0d1c074601507a89de7d8593d8", size = 28149519, upload-time = "2026-10-03T01:47:47.372Z" },
352
- { url = "https://files.pythonhosted.org/packages/a5/78/16864f1aa2c3ac5017f15132b85c6d3c74bb85caca8c45ce836ad30dfe20/av-19.0.1-cp312-abi3-win_arm64.whl", hash = "sha256:e9e1b0cae6cebd2adc2c5c6691fc890112f8f6c846b76a9135307617db1e32e9", size = 20706822, upload-time = "2026-10-03T01:47:50.72Z" },
353
- { url = "https://files.pythonhosted.org/packages/78/4a/b5d7614856af72d7c18b926dda43bd227844b0b42d64e7c478b080f8d9c1/av-19.0.1-cp314-cp314t-macosx_11_0_x86_64.whl", hash = "sha256:3ef376ab828730f50b635e3541f305503adad713cb4c3eadb5ad0e4c6a6f4a72", size = 22909764, upload-time = "2026-10-03T01:47:54.032Z" },
354
- { url = "https://files.pythonhosted.org/packages/b6/c9/50b2dedd4314a0ba0d78d7a7a52f7b073bc3377e5152e51d9d5627c5bcf4/av-19.0.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:17f2e42a1c969c78c616fe58bc69641a9df404c1ac2f01b50c1ddc22e5c31f69", size = 18718945, upload-time = "2026-10-03T01:47:58.396Z" },
355
- { url = "https://files.pythonhosted.org/packages/ef/a5/eb2b6aadbda16ee676c76e43012709f0cdfe09c35bc9ad4ffb5099827e72/av-19.0.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:aafd294abd0e5c23e6c813b10fb4792cf1dd1002c1aead0292d195cda2ca154e", size = 36470355, upload-time = "2026-10-03T01:48:01.686Z" },
356
- { url = "https://files.pythonhosted.org/packages/c1/f0/25e7d21cc29e949118bdac6efe0ef5c5020fc4273a3ea237989728ebe816/av-19.0.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:400ba5234865dc370c442658efff0672c64dcad2de26a2a7c900abf16ffd9f68", size = 38457564, upload-time = "2026-10-03T01:48:05.61Z" },
357
- { url = "https://files.pythonhosted.org/packages/3f/09/77fec7c8de49fb815d55de1dfac21b39fb9e6915cbd8dcd945538ebb6f44/av-19.0.1-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:5e527b9d2d23c096d2b488e19a40ceba3654ea84a3cecee1c1b46c70ceaceae2", size = 43462245, upload-time = "2026-10-03T01:48:10.674Z" },
358
- { url = "https://files.pythonhosted.org/packages/8c/1d/bb0281ada4203c5d85f7e8b045de2cadc89c3b5d0ed5705298f7a9288b1f/av-19.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:79136e62d4bc93db81fb63d6dd0060e86259426c071ca5157b1abe8c815c40b7", size = 37339005, upload-time = "2026-10-03T01:48:14.805Z" },
359
- { url = "https://files.pythonhosted.org/packages/0a/84/19a9d37d7546a3879d759a8957b2513a029cafb81f60218c496b1ce9d5a8/av-19.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:330f91c704aa822b96d9aa21382c0eb41a68531d388078d724d334faa460cbcc", size = 39466754, upload-time = "2026-10-03T01:48:18.988Z" },
360
- { url = "https://files.pythonhosted.org/packages/30/c4/39d4e2b778f1e86672671e25c3fd38e8d59d59b6f65c5cd13d7fae3d88a3/av-19.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:8289295bfd2a438f2cf83c3ab426964055e441f1500410a842e7a767bdc8e51e", size = 29063526, upload-time = "2026-10-03T01:48:22.724Z" },
361
- { url = "https://files.pythonhosted.org/packages/f4/7d/a20ff44c1445c09a93985418f6997e5823635848e955a7953339636a9829/av-19.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:e1f70b1bda35588aff5fc526500376afe143e33cfce5d7e30d368170c38717db", size = 21915698, upload-time = "2026-10-03T01:48:26.386Z" },
344
+ version = "18.1.0"
345
+ source = { registry = "https://pypi.org/simple" }
346
+ sdist = { url = "https://files.pythonhosted.org/packages/8d/f4/f22114d30d3435e38c6af2b4870f37b864403dca6ae7af747a289ce0a18e/av-18.1.0.tar.gz", hash = "sha256:47bfc286e1bc9de7ab4681fc2b575cd2460a66919d31ffe1bd5aa54fae531a28", size = 4451061, upload-time = "2026-08-12T22:28:18.761Z" }
347
+ wheels = [
348
+ { url = "https://files.pythonhosted.org/packages/05/d4/d7cdc8bff143c17a6d35924375ae28dd692cacde38700a7d419fde54f44a/av-18.1.0-cp311-abi3-macosx_11_0_x86_64.whl", hash = "sha256:ae75d8bb6467895ed1f8572ededf7ffa49eac07f6e483222f5d7d62a41d12f04", size = 22546147, upload-time = "2026-08-12T22:27:11.851Z" },
349
+ { url = "https://files.pythonhosted.org/packages/3f/c9/37a619297492256b77d5ed906e7d8166c10a26ed251dccf1ae03ab19bff6/av-18.1.0-cp311-abi3-macosx_14_0_arm64.whl", hash = "sha256:b30a4e8d934558e19602b68998a4d9ac9f250fa0dacef216f7e8e40153b13316", size = 18217603, upload-time = "2026-08-12T22:27:14.713Z" },
350
+ { url = "https://files.pythonhosted.org/packages/d9/84/2464ffb64c08c5ce8b522c8e74594714414e3b0575267652c5c51c0574b9/av-18.1.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6fc837cc51adf80331ac850779cd53b5d4c4460b0ebe9057a02a921c6736f19d", size = 33640142, upload-time = "2026-08-12T22:27:17.835Z" },
351
+ { url = "https://files.pythonhosted.org/packages/27/3a/204dbfc3e08eb4cdc6e6ff57be02150bc44523ebdb50182d10025792ebd9/av-18.1.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:8a032e8d8ebc73dec079364b9b4a6837638a2d106e8472314e685ffbf163e700", size = 35786210, upload-time = "2026-08-12T22:27:20.984Z" },
352
+ { url = "https://files.pythonhosted.org/packages/e1/99/b0d04ec553ff9a7e00455458dfa3a39c8a8f627b273056b4e5fe57d590de/av-18.1.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:3c8b1f8b46f99d52e2d8b0ed5d0cdadf172d24794d46e2077b16e44ed08e26ff", size = 39379798, upload-time = "2026-08-12T22:27:24.432Z" },
353
+ { url = "https://files.pythonhosted.org/packages/56/b1/e00d4feae59160149df6126585e726fdc6300798fd40c5dd324879e81f68/av-18.1.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ab5ac081bc9eaf54109120d4e56284674fecfbe520d9aa1707c7fa911ec5f4d2", size = 34690321, upload-time = "2026-08-12T22:27:27.769Z" },
354
+ { url = "https://files.pythonhosted.org/packages/dc/94/836fa987e3084d11a21489f11357fb24843ef3aa8faf74ddddfc603d5062/av-18.1.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:191224788d87af06c31784a395bb73f14b72f33d7f4871ace0157de2abdc6276", size = 36859932, upload-time = "2026-08-12T22:27:31.403Z" },
355
+ { url = "https://files.pythonhosted.org/packages/33/b4/76ba21e46704f632004276b85289a1582e95f5eff760436d6149875a1881/av-18.1.0-cp311-abi3-win_amd64.whl", hash = "sha256:ea1480b7a8d5405cb5f382b344731bf125fd2c1c6fae3964f6c48595628387ff", size = 27595679, upload-time = "2026-08-12T22:27:35.177Z" },
356
+ { url = "https://files.pythonhosted.org/packages/4f/ad/a3135884c5753b09773176b97201ae602f67ad14206c395ff838d66bf9b0/av-18.1.0-cp311-abi3-win_arm64.whl", hash = "sha256:5509ec12aaa19fd6601de13cfa6f4cdad450da07982118510592875d970454d6", size = 20257584, upload-time = "2026-08-12T22:27:38.472Z" },
357
+ { url = "https://files.pythonhosted.org/packages/4f/5b/4a756265d7fb164336c8d377bca21c39cfa2c178be23cedee840a69b59c5/av-18.1.0-cp314-cp314t-macosx_11_0_x86_64.whl", hash = "sha256:b36b0bae9e4c62f9487c99481ec15e4e3870fcc868522cd6d18fc2d6bfa04f01", size = 22795654, upload-time = "2026-08-12T22:27:42.016Z" },
358
+ { url = "https://files.pythonhosted.org/packages/d5/cc/1bc841462114a1adf4f7d87456ab78a6972e23271e71865fcd2bbd0e7360/av-18.1.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:025f84494cb23278498f03b0d8117d3e47a1cbc9c44b97eb31875cf02251e46b", size = 18435735, upload-time = "2026-08-12T22:27:45.787Z" },
359
+ { url = "https://files.pythonhosted.org/packages/b8/20/005500ed17a2e62a5e4bb94aa3786942560ec2f55ec1895ebf174c87abef/av-18.1.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:08a9ae288299cfcbf739dba4ad0c53b9b71f45184303dd45947920d022fed695", size = 37090807, upload-time = "2026-08-12T22:27:50.14Z" },
360
+ { url = "https://files.pythonhosted.org/packages/5c/f7/11e7f6d848d3690c31ca4f8578167393e619177f1493ccc93b9400852d4e/av-18.1.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:cf8a17466bef07765dbdecc9e66ed9b25d20b4e14f654fbf35345a58ac45fa0c", size = 38976836, upload-time = "2026-08-12T22:27:54.565Z" },
361
+ { url = "https://files.pythonhosted.org/packages/c3/63/b271473b24e806062d31191e40c6d65545e9cf59f80f044eba56dcbba0f4/av-18.1.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:d49a5c542dfdc00f43c6cdb6cc41dac1781ee206fe180b56aa7433dfa816dfae", size = 40896630, upload-time = "2026-08-12T22:27:59.118Z" },
362
+ { url = "https://files.pythonhosted.org/packages/6b/9f/2ab7fa292a947ad3466ed8e655eefa3b82f535d7ea598c297b4471a937c4/av-18.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5548b79e2bf1f59b3e9aedc918a72d9dc45b9adaac10ff9470d5dbdda0002e47", size = 37895673, upload-time = "2026-08-12T22:28:03.98Z" },
363
+ { url = "https://files.pythonhosted.org/packages/e9/d8/04507c57249b399c3e4f23f01d221532f357338b5316fd2858fbd343127d/av-18.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e7ea063f6690193ea335a1d592d6e0274350d45e2ed6af83ee107cb90cbfd84f", size = 39992431, upload-time = "2026-08-12T22:28:08.736Z" },
364
+ { url = "https://files.pythonhosted.org/packages/d6/d6/bc4b95bea9c2353a7e4d62a3fcfad9adcf0f881741c6ce01ee179d539ce3/av-18.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:e4d48b9f12cad009cc72fe4f4099107de5e819c95f82767f4fd01a01481c0661", size = 28497798, upload-time = "2026-08-12T22:28:13.003Z" },
365
+ { url = "https://files.pythonhosted.org/packages/c1/d2/0c277a46f12647c1833f40496e132fb6001e0d19e6144b5ea30896461feb/av-18.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:5cd9085028902c9880622bd37a12fd4b33060f06a52311f6f4867ca9f29a2c3b", size = 21421979, upload-time = "2026-08-12T22:28:16.48Z" },
362
366
  ]
363
367
 
364
368
  [[package]]
@@ -857,7 +861,7 @@ wheels = [
857
861
 
858
862
  [[package]]
859
863
  name = "classifyre-cli"
860
- version = "0.6.10"
864
+ version = "0.6.11"
861
865
  source = { editable = "." }
862
866
  dependencies = [
863
867
  { name = "beautifulsoup4" },
@@ -1398,7 +1402,7 @@ youtube = [
1398
1402
 
1399
1403
  [[package]]
1400
1404
  name = "classifyre-schemas"
1401
- version = "0.6.10"
1405
+ version = "0.6.11"
1402
1406
  source = { editable = "../../packages/schemas" }
1403
1407
  dependencies = [
1404
1408
  { name = "fastjsonschema" },
@@ -4326,6 +4330,7 @@ source = { registry = "https://pypi.org/simple" }
4326
4330
  dependencies = [
4327
4331
  { name = "pillow" },
4328
4332
  ]
4333
+ sdist = { url = "https://files.pythonhosted.org/packages/44/c1/82145984920ca055675af2c2795bd30da6f7461215c41f3c1eacb3d66353/pillow_heif-1.8.1.tar.gz", hash = "sha256:521ebffb8a181d56c3904e5a61f20903edee0d9d3275967b8fb345f866215c06", size = 17395786, upload-time = "2026-10-11T13:18:19.2Z" }
4329
4334
  wheels = [
4330
4335
  { url = "https://files.pythonhosted.org/packages/f9/21/276668287678aad18c8fff15146b4965067c477358dbd6250e4ee08d7ff6/pillow_heif-1.8.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:a8e7edf5d30cf10a3d062c28d4ff19baf7e4e0a3c20fb5e4e63d690d67b0bbd4", size = 4815635, upload-time = "2026-10-11T11:16:39.416Z" },
4331
4336
  { url = "https://files.pythonhosted.org/packages/16/a2/53ad321b6d202cd159be3914bccb0eabaa48fa7b4fc630feb31323eccb9d/pillow_heif-1.8.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1c60f323daf9df728858e469e0d95010727a32ee3e6c8e9658809a070fb93f69", size = 4311517, upload-time = "2026-10-11T11:16:41.16Z" },
@@ -5538,13 +5543,12 @@ wheels = [
5538
5543
 
5539
5544
  [[package]]
5540
5545
  name = "rapidocr"
5541
- version = "3.10.0"
5546
+ version = "3.9.2"
5542
5547
  source = { registry = "https://pypi.org/simple" }
5543
5548
  dependencies = [
5544
5549
  { name = "colorlog" },
5545
5550
  { name = "numpy" },
5546
5551
  { name = "omegaconf" },
5547
- { name = "opencv-python-headless" },
5548
5552
  { name = "pillow" },
5549
5553
  { name = "pyclipper" },
5550
5554
  { name = "pyyaml" },
@@ -5554,7 +5558,7 @@ dependencies = [
5554
5558
  { name = "tqdm" },
5555
5559
  ]
5556
5560
  wheels = [
5557
- { url = "https://files.pythonhosted.org/packages/59/07/203065283bba0c5e9c10af3602dc25ab3e59ee54dc2d1d22c8faeabf5ed8/rapidocr-3.10.0-py3-none-any.whl", hash = "sha256:2fc34e26cd0f48514804a94f8832283039c7334076bff60768b1fed9ad068050", size = 27288134, upload-time = "2026-10-08T15:07:45.98Z" },
5561
+ { url = "https://files.pythonhosted.org/packages/55/ed/0ee9b9281986974be9d2406ae0134c8d7c91d2fc613f16ffda9701eeda6f/rapidocr-3.9.2-py3-none-any.whl", hash = "sha256:04d6b8d151f823d930bd91910555f57bea897c0c44fa6794267b94cf9c1ef9a0", size = 27275208, upload-time = "2026-07-21T10:59:01.599Z" },
5558
5562
  ]
5559
5563
 
5560
5564
  [[package]]
@@ -1,3 +0,0 @@
1
- $ uv sync
2
- Resolved 324 packages in 232ms
3
- Checked 51 packages in 4ms
File without changes