classifyre-cli 0.4.77__tar.gz → 0.4.78__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 (269) hide show
  1. classifyre_cli-0.4.78/.turbo/turbo-build.log +3 -0
  2. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/PKG-INFO +1 -1
  3. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/package.json +1 -1
  4. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/pyproject.toml +8 -1
  5. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/models/generated_input.py +148 -0
  6. classifyre_cli-0.4.78/src/sources/hugging_face/__init__.py +3 -0
  7. classifyre_cli-0.4.78/src/sources/hugging_face/source.py +548 -0
  8. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/utils/dependency_groups.py +1 -0
  9. classifyre_cli-0.4.78/tests/test_hugging_face_source.py +959 -0
  10. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_source_strategy_conformance.py +3 -0
  11. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/uv.lock +24 -20
  12. classifyre_cli-0.4.77/.turbo/turbo-build.log +0 -3
  13. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/.gitignore +0 -0
  14. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/.python-version +0 -0
  15. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/README.md +0 -0
  16. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/main.py +0 -0
  17. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/scripts/generate_models.py +0 -0
  18. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/__init__.py +0 -0
  19. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/config.py +0 -0
  20. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/__init__.py +0 -0
  21. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/base.py +0 -0
  22. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/broken_links/__init__.py +0 -0
  23. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/broken_links/detector.py +0 -0
  24. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/config.py +0 -0
  25. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/content/__init__.py +0 -0
  26. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/custom/__init__.py +0 -0
  27. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/custom/detector.py +0 -0
  28. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/custom/extractor.py +0 -0
  29. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/custom/runners/__init__.py +0 -0
  30. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/custom/runners/_base.py +0 -0
  31. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/custom/runners/_factory.py +0 -0
  32. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/custom/runners/_gliner2.py +0 -0
  33. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/custom/runners/_image_classification.py +0 -0
  34. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/custom/runners/_llm.py +0 -0
  35. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/custom/runners/_object_detection.py +0 -0
  36. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/custom/runners/_regex.py +0 -0
  37. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/custom/runners/_text_classification.py +0 -0
  38. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/custom/trainer.py +0 -0
  39. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/dependencies.py +0 -0
  40. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/engine_version.py +0 -0
  41. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/pii/__init__.py +0 -0
  42. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/pii/detector.py +0 -0
  43. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/secrets/__init__.py +0 -0
  44. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/secrets/detector.py +0 -0
  45. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/threat/__init__.py +0 -0
  46. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/threat/code_security_detector.py +0 -0
  47. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/detectors/threat/yara_detector.py +0 -0
  48. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/file_evaluation/__init__.py +0 -0
  49. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/file_evaluation/runner.py +0 -0
  50. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/main.py +0 -0
  51. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/models/generated_detectors.py +0 -0
  52. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/models/generated_single_asset_scan_results.py +0 -0
  53. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/outputs/__init__.py +0 -0
  54. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/outputs/base.py +0 -0
  55. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/outputs/console.py +0 -0
  56. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/outputs/factory.py +0 -0
  57. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/outputs/file.py +0 -0
  58. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/outputs/rest.py +0 -0
  59. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/pipeline/__init__.py +0 -0
  60. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/pipeline/content_provider.py +0 -0
  61. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/pipeline/detector_pipeline.py +0 -0
  62. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/pipeline/parsed_content_provider.py +0 -0
  63. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/pipeline/scan_cache.py +0 -0
  64. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/pipeline/text_artifact.py +0 -0
  65. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/pipeline/worker_pool.py +0 -0
  66. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/__init__.py +0 -0
  67. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/asset_metadata.py +0 -0
  68. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/atlassian_common.py +0 -0
  69. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/azure_blob_storage/__init__.py +0 -0
  70. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/azure_blob_storage/source.py +0 -0
  71. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/base.py +0 -0
  72. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/confluence/__init__.py +0 -0
  73. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/confluence/source.py +0 -0
  74. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/databricks/__init__.py +0 -0
  75. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/databricks/source.py +0 -0
  76. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/delta_lake/__init__.py +0 -0
  77. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/delta_lake/source.py +0 -0
  78. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/dependencies.py +0 -0
  79. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/dropbox/__init__.py +0 -0
  80. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/dropbox/auth.py +0 -0
  81. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/dropbox/source.py +0 -0
  82. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/elasticsearch/__init__.py +0 -0
  83. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/elasticsearch/source.py +0 -0
  84. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/email/__init__.py +0 -0
  85. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/email/source.py +0 -0
  86. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/google_cloud_storage/__init__.py +0 -0
  87. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/google_cloud_storage/source.py +0 -0
  88. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/google_workspace/__init__.py +0 -0
  89. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/google_workspace/source.py +0 -0
  90. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/hive/__init__.py +0 -0
  91. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/hive/source.py +0 -0
  92. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/iceberg/__init__.py +0 -0
  93. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/iceberg/source.py +0 -0
  94. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/jira/__init__.py +0 -0
  95. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/jira/source.py +0 -0
  96. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/kafka/__init__.py +0 -0
  97. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/kafka/rest.py +0 -0
  98. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/kafka/source.py +0 -0
  99. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/lakehouse_base.py +0 -0
  100. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/local_folder/__init__.py +0 -0
  101. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/local_folder/source.py +0 -0
  102. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/meilisearch/__init__.py +0 -0
  103. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/meilisearch/source.py +0 -0
  104. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/microsoft_365/__init__.py +0 -0
  105. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/microsoft_365/source.py +0 -0
  106. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/mongodb/__init__.py +0 -0
  107. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/mongodb/source.py +0 -0
  108. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/mssql/__init__.py +0 -0
  109. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/mssql/source.py +0 -0
  110. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/mysql/__init__.py +0 -0
  111. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/mysql/source.py +0 -0
  112. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/neo4j/__init__.py +0 -0
  113. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/neo4j/source.py +0 -0
  114. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/notion/__init__.py +0 -0
  115. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/notion/client.py +0 -0
  116. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/notion/source.py +0 -0
  117. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/object_storage/base.py +0 -0
  118. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/opensearch/__init__.py +0 -0
  119. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/opensearch/source.py +0 -0
  120. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/oracle/__init__.py +0 -0
  121. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/oracle/source.py +0 -0
  122. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/postgresql/__init__.py +0 -0
  123. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/postgresql/source.py +0 -0
  124. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/powerbi/__init__.py +0 -0
  125. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/powerbi/source.py +0 -0
  126. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/recipe_normalizer.py +0 -0
  127. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/s3_client.py +0 -0
  128. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/s3_compatible_storage/README.md +0 -0
  129. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/s3_compatible_storage/__init__.py +0 -0
  130. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/s3_compatible_storage/source.py +0 -0
  131. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/sandbox/__init__.py +0 -0
  132. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/sandbox/source.py +0 -0
  133. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/search_engine_base.py +0 -0
  134. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/servicedesk/__init__.py +0 -0
  135. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/servicedesk/source.py +0 -0
  136. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/slack/__init__.py +0 -0
  137. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/slack/source.py +0 -0
  138. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/snowflake/__init__.py +0 -0
  139. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/snowflake/source.py +0 -0
  140. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/sqlite/__init__.py +0 -0
  141. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/sqlite/source.py +0 -0
  142. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/tableau/__init__.py +0 -0
  143. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/tableau/source.py +0 -0
  144. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/tabular_base.py +0 -0
  145. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/tabular_utils.py +0 -0
  146. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/wordpress/__init__.py +0 -0
  147. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/wordpress/source.py +0 -0
  148. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/youtube/__init__.py +0 -0
  149. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/sources/youtube/source.py +0 -0
  150. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/telemetry.py +0 -0
  151. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/utils/__init__.py +0 -0
  152. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/utils/archive_extraction.py +0 -0
  153. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/utils/content_extraction.py +0 -0
  154. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/utils/embedded_images.py +0 -0
  155. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/utils/file_metadata.py +0 -0
  156. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/utils/file_parser.py +0 -0
  157. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/utils/file_to_images.py +0 -0
  158. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/utils/hashing.py +0 -0
  159. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/utils/legacy_office.py +0 -0
  160. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/utils/resources.py +0 -0
  161. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/utils/transcription.py +0 -0
  162. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/utils/uv_sync.py +0 -0
  163. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/utils/validation.py +0 -0
  164. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/src/utils/video_processing.py +0 -0
  165. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/__init__.py +0 -0
  166. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/_lakehouse_fakes.py +0 -0
  167. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/conftest.py +0 -0
  168. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/__init__.py +0 -0
  169. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/broken_links/test_broken_links_detector.py +0 -0
  170. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/conftest.py +0 -0
  171. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/content/__init__.py +0 -0
  172. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/custom/__init__.py +0 -0
  173. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/custom/conftest.py +0 -0
  174. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/custom/test_gliner2_classification.py +0 -0
  175. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/custom/test_invoice_extraction.py +0 -0
  176. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/custom/test_llm_runner.py +0 -0
  177. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/custom/test_pipeline_integration.py +0 -0
  178. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/custom/test_regex_runner.py +0 -0
  179. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/custom/test_runner_hardening.py +0 -0
  180. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/custom/test_transformer_runners.py +0 -0
  181. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/pii/__init__.py +0 -0
  182. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/pii/conftest.py +0 -0
  183. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/pii/sample_invoice.pdf +0 -0
  184. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/pii/test_pii_chunking.py +0 -0
  185. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/pii/test_pii_detector.py +0 -0
  186. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/pii/test_pii_detector_extended.py +0 -0
  187. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/pii/test_pii_regional_entities.py +0 -0
  188. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/pii/test_pii_severity.py +0 -0
  189. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/secrets/__init__.py +0 -0
  190. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/secrets/test_secrets_detector.py +0 -0
  191. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/secrets/test_secrets_detector_extended.py +0 -0
  192. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/test_base_detector.py +0 -0
  193. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/test_custom_detector_examples_runtime.py +0 -0
  194. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/test_detector_catalog_commercial.py +0 -0
  195. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/test_detector_pipeline_types.py +0 -0
  196. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/test_detector_schema_examples.py +0 -0
  197. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/test_detector_types.py +0 -0
  198. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/test_phase2_detectors.py +0 -0
  199. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/test_registry.py +0 -0
  200. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/threat/__init__.py +0 -0
  201. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/threat/test_code_security_detector.py +0 -0
  202. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/detectors/threat/test_yara_detector.py +0 -0
  203. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/integration/test_wordpress_broken_links_detector.py +0 -0
  204. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/integration/test_wordpress_links_assets.py +0 -0
  205. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/pipeline/test_detector_outcomes.py +0 -0
  206. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/pipeline/test_detector_pipeline.py +0 -0
  207. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/pipeline/test_worker_pool.py +0 -0
  208. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_assets_metadata_catalog.py +0 -0
  209. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_azure_blob_storage_source.py +0 -0
  210. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_base_source_attachment.py +0 -0
  211. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_base_source_sampling.py +0 -0
  212. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_config.py +0 -0
  213. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_confluence_source.py +0 -0
  214. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_custom_extractor.py +0 -0
  215. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_databricks_source.py +0 -0
  216. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_delta_lake_source.py +0 -0
  217. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_dependency_groups.py +0 -0
  218. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_dropbox_auth_command.py +0 -0
  219. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_dropbox_source.py +0 -0
  220. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_elasticsearch_source.py +0 -0
  221. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_email_source.py +0 -0
  222. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_file_evaluation_runner.py +0 -0
  223. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_google_cloud_storage_source.py +0 -0
  224. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_google_workspace_source.py +0 -0
  225. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_hashing.py +0 -0
  226. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_hive_source.py +0 -0
  227. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_iceberg_source.py +0 -0
  228. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_jira_source.py +0 -0
  229. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_kafka_source.py +0 -0
  230. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_local_folder_source.py +0 -0
  231. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_main.py +0 -0
  232. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_meilisearch_source.py +0 -0
  233. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_microsoft_365_source.py +0 -0
  234. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_mongodb_source.py +0 -0
  235. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_mssql_source.py +0 -0
  236. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_mysql_source.py +0 -0
  237. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_neo4j_source.py +0 -0
  238. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_notion_source.py +0 -0
  239. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_opensearch_source.py +0 -0
  240. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_oracle_source.py +0 -0
  241. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_outputs.py +0 -0
  242. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_postgresql_source.py +0 -0
  243. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_powerbi_source.py +0 -0
  244. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_recipe_normalizer.py +0 -0
  245. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_s3_compatible_storage_source.py +0 -0
  246. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_sampling_automatic.py +0 -0
  247. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_sandbox_source.py +0 -0
  248. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_scan_cache.py +0 -0
  249. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_servicedesk_source.py +0 -0
  250. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_slack_source.py +0 -0
  251. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_snowflake_source.py +0 -0
  252. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_source_dependency_groups.py +0 -0
  253. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_sqlite_source.py +0 -0
  254. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_tableau_source.py +0 -0
  255. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_tabular_automatic_sampling.py +0 -0
  256. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_tabular_utils.py +0 -0
  257. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_uv_sync.py +0 -0
  258. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_wordpress_source.py +0 -0
  259. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_youtube_source.py +0 -0
  260. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/test_youtube_source_integration.py +0 -0
  261. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/utils/test_archive_extraction.py +0 -0
  262. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/utils/test_content_extraction.py +0 -0
  263. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/utils/test_embedded_images.py +0 -0
  264. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/utils/test_file_metadata.py +0 -0
  265. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/utils/test_file_parser.py +0 -0
  266. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/utils/test_file_to_images.py +0 -0
  267. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/utils/test_legacy_office.py +0 -0
  268. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/utils/test_transcription.py +0 -0
  269. {classifyre_cli-0.4.77 → classifyre_cli-0.4.78}/tests/utils/test_video_processing.py +0 -0
@@ -0,0 +1,3 @@
1
+ $ uv sync
2
+ Resolved 303 packages in 11ms
3
+ Checked 51 packages in 1ms
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: classifyre-cli
3
- Version: 0.4.77
3
+ Version: 0.4.78
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.77",
3
+ "version": "0.4.78",
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.77"
3
+ version = "0.4.78"
4
4
  description = "Classifyre CLI — scan and classify unstructured data sources"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -230,6 +230,12 @@ google-cloud-storage = [
230
230
  dropbox = [
231
231
  "dropbox>=12.2.1,<13.0.0",
232
232
  ]
233
+ hugging-face = [
234
+ # Hub client for listing repository trees and resolving file URLs. File bytes
235
+ # are streamed with `requests` (a base dependency) rather than
236
+ # `hf_hub_download`, so nothing is ever written to the HF cache directory.
237
+ "huggingface-hub>=1.25.1,<2.0.0",
238
+ ]
233
239
  slack = [
234
240
  "slack-sdk>=3.43.0,<4.0.0",
235
241
  ]
@@ -384,6 +390,7 @@ module = [
384
390
  "boto3.*",
385
391
  "botocore.*",
386
392
  "dropbox.*",
393
+ "huggingface_hub.*",
387
394
  ]
388
395
  ignore_missing_imports = true
389
396
 
@@ -55,6 +55,7 @@ class AssetType(StrEnum):
55
55
  MICROSOFT_365 = 'MICROSOFT_365'
56
56
  GOOGLE_WORKSPACE = 'GOOGLE_WORKSPACE'
57
57
  DROPBOX = 'DROPBOX'
58
+ HUGGING_FACE = 'HUGGING_FACE'
58
59
  SANDBOX = 'SANDBOX'
59
60
 
60
61
 
@@ -384,6 +385,7 @@ class Type(StrEnum):
384
385
  MICROSOFT_365 = 'MICROSOFT_365'
385
386
  GOOGLE_WORKSPACE = 'GOOGLE_WORKSPACE'
386
387
  DROPBOX = 'DROPBOX'
388
+ HUGGING_FACE = 'HUGGING_FACE'
387
389
  SANDBOX = 'SANDBOX'
388
390
 
389
391
 
@@ -3080,6 +3082,7 @@ class Type21(StrEnum):
3080
3082
  MICROSOFT_365 = 'MICROSOFT_365'
3081
3083
  GOOGLE_WORKSPACE = 'GOOGLE_WORKSPACE'
3082
3084
  DROPBOX = 'DROPBOX'
3085
+ HUGGING_FACE = 'HUGGING_FACE'
3083
3086
  SANDBOX = 'SANDBOX'
3084
3087
 
3085
3088
 
@@ -4459,6 +4462,149 @@ class DropboxInput(CoreInput):
4459
4462
  )
4460
4463
 
4461
4464
 
4465
+ class HuggingFaceRepoType(StrEnum):
4466
+ """
4467
+ Repository kind on the Hub. Datasets hold the data files (parquet, csv, images, audio); models hold weights and configuration; spaces hold app source code.
4468
+ """
4469
+
4470
+ dataset = 'dataset'
4471
+ model = 'model'
4472
+ space = 'space'
4473
+
4474
+
4475
+ class HuggingFaceRequired(BaseModel):
4476
+ model_config = ConfigDict(
4477
+ extra='forbid',
4478
+ )
4479
+ repo_id: str = Field(
4480
+ ...,
4481
+ description='Repository to scan, as namespace/name (for example openai/gsm8k or my-org/internal-corpus)',
4482
+ )
4483
+ repo_type: HuggingFaceRepoType
4484
+
4485
+
4486
+ class HuggingFaceMasked(BaseModel):
4487
+ model_config = ConfigDict(
4488
+ extra='forbid',
4489
+ )
4490
+ token: str = Field(
4491
+ ...,
4492
+ description='Hugging Face user access token (starts with hf_). Create one under Settings → Access Tokens with at least read permission on the repository. The token is always passed explicitly — no environment variable or locally cached login is ever used.',
4493
+ )
4494
+
4495
+
4496
+ class HuggingFaceOptionalScope(BaseModel):
4497
+ """
4498
+ Which files inside the repository are listed and read. The repository is never cloned or fully downloaded: the file tree is listed first, then each selected file is streamed one at a time.
4499
+ """
4500
+
4501
+ model_config = ConfigDict(
4502
+ extra='forbid',
4503
+ )
4504
+ revision: str | None = Field(
4505
+ None,
4506
+ description="Branch, tag or commit SHA to read (for example main, refs/convert/parquet, or v1.0). Defaults to the repository's default branch.",
4507
+ )
4508
+ paths: list[str] | None = Field(
4509
+ None,
4510
+ description='Folders inside the repository to list, for example data/ or data/train. Each folder is walked recursively. Leave empty to list the whole repository.',
4511
+ )
4512
+ allow_patterns: list[str] | None = Field(
4513
+ None,
4514
+ description='Glob allowlist applied to file paths, for example data/*.parquet or **/*.csv. A file is kept when it matches at least one pattern. Empty means every file is kept.',
4515
+ )
4516
+ ignore_patterns: list[str] | None = Field(
4517
+ None,
4518
+ description='Glob denylist applied to file paths, for example *.safetensors or **/checkpoints/*. Files matching any pattern are skipped.',
4519
+ )
4520
+ include_extensions: list[str] | None = Field(
4521
+ None,
4522
+ description='Optional extension allowlist (for example, .parquet, .csv, .png)',
4523
+ )
4524
+ exclude_extensions: list[str] | None = Field(
4525
+ None,
4526
+ description='Optional extension denylist (for example, .safetensors, .bin, .gguf)',
4527
+ )
4528
+ include_last_commit: bool | None = Field(
4529
+ False,
4530
+ description="Fetch each file's last-commit date while listing. Needed for accurate LATEST and AUTOMATIC ordering, but makes listing noticeably slower on large repositories. When off, every file inherits the repository's last-modified date.",
4531
+ )
4532
+ include_empty_objects: bool | None = Field(
4533
+ False, description='Include zero-byte files in extraction results'
4534
+ )
4535
+ include_object_metadata: bool | None = Field(
4536
+ True,
4537
+ description='Attach Hub metadata (content digest, size, timestamps) to asset checksums',
4538
+ )
4539
+ include_content_preview: bool | None = Field(
4540
+ True,
4541
+ description='Stream file bytes to infer MIME and extract detector-ready text previews. Turn off for a metadata-only inventory of the repository.',
4542
+ )
4543
+
4544
+
4545
+ class HuggingFaceOptionalConnection(BaseModel):
4546
+ """
4547
+ Network and resource controls for Hub requests. Files are streamed one at a time and capped, so a large repository never has to fit in memory or on disk.
4548
+ """
4549
+
4550
+ model_config = ConfigDict(
4551
+ extra='forbid',
4552
+ )
4553
+ endpoint: str | None = Field(
4554
+ None,
4555
+ description='Hub endpoint to use. Defaults to https://huggingface.co; set this for a self-hosted Enterprise Hub.',
4556
+ )
4557
+ max_object_bytes: int | None = Field(
4558
+ 26214400,
4559
+ description='Maximum bytes streamed per file for MIME detection and text extraction (default 25 MB). Larger files are read up to this cap and then the connection is dropped.',
4560
+ ge=1024,
4561
+ le=104857600,
4562
+ )
4563
+ request_timeout_seconds: float | None = Field(
4564
+ 60,
4565
+ description='Network timeout in seconds for list and download requests',
4566
+ ge=1.0,
4567
+ le=300.0,
4568
+ )
4569
+ max_retries: int | None = Field(
4570
+ 3,
4571
+ description='Maximum retries on transient Hub errors (5xx and rate limits)',
4572
+ ge=0,
4573
+ le=10,
4574
+ )
4575
+
4576
+
4577
+ class HuggingFaceOptional(BaseModel):
4578
+ model_config = ConfigDict(
4579
+ extra='forbid',
4580
+ )
4581
+ scope: HuggingFaceOptionalScope | None = None
4582
+ connection: HuggingFaceOptionalConnection | None = None
4583
+
4584
+
4585
+ class HuggingFaceInput(CoreInput):
4586
+ type: Literal['HUGGING_FACE'] | None = Field(
4587
+ None, description='Type of the asset or source'
4588
+ )
4589
+ required: HuggingFaceRequired
4590
+ masked: HuggingFaceMasked
4591
+ optional: HuggingFaceOptional | None = None
4592
+ detectors: list[Detector] | None = Field(
4593
+ None, description='Detectors to run on ingested content'
4594
+ )
4595
+ custom_detectors: list[CustomDetectorSelection] | None = Field(
4596
+ None,
4597
+ description='Reusable custom detector IDs selected from the custom detector catalog.',
4598
+ )
4599
+ sampling: SamplingConfig
4600
+ scan_cache: ScanCacheConfig | None = None
4601
+ resources: ResourceOverrides | None = None
4602
+ cleanup_removed_detector_findings: bool | None = Field(
4603
+ True,
4604
+ description='When enabled (default), findings produced by detectors that are no longer configured on this source (removed or disabled) are automatically resolved at the start of the next run, keeping the findings list in step with the current detector set.',
4605
+ )
4606
+
4607
+
4462
4608
  class SlackOptionalAttachments(BaseModel):
4463
4609
  """
4464
4610
  Files shared in messages. Each file becomes its own asset, and its text is extracted with the same parser used for local files (PDF, Office, images via OCR, audio and video transcription).
@@ -4639,6 +4785,7 @@ class SourceInput(
4639
4785
  | Microsoft365Input
4640
4786
  | GoogleWorkspaceInput
4641
4787
  | DropboxInput
4788
+ | HuggingFaceInput
4642
4789
  ]
4643
4790
  ):
4644
4791
  root: (
@@ -4676,6 +4823,7 @@ class SourceInput(
4676
4823
  | Microsoft365Input
4677
4824
  | GoogleWorkspaceInput
4678
4825
  | DropboxInput
4826
+ | HuggingFaceInput
4679
4827
  ) = Field(
4680
4828
  ...,
4681
4829
  description='Merged configuration schema with all source types and common definitions',
@@ -0,0 +1,3 @@
1
+ from .source import HuggingFaceSource
2
+
3
+ __all__ = ["HuggingFaceSource"]