classifyre-cli 0.4.58__tar.gz → 0.4.59__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 (256) hide show
  1. classifyre_cli-0.4.59/.turbo/turbo-build.log +3 -0
  2. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/PKG-INFO +1 -1
  3. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/package.json +1 -1
  4. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/pyproject.toml +1 -1
  5. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/google_workspace/source.py +11 -17
  6. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/youtube/source.py +1 -2
  7. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/utils/legacy_office.py +8 -0
  8. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_google_workspace_source.py +2 -6
  9. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_kafka_source.py +1 -0
  10. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/utils/test_video_processing.py +2 -6
  11. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/uv.lock +2 -2
  12. classifyre_cli-0.4.58/.turbo/turbo-build.log +0 -3
  13. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/.gitignore +0 -0
  14. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/.python-version +0 -0
  15. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/README.md +0 -0
  16. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/main.py +0 -0
  17. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/scripts/generate_models.py +0 -0
  18. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/__init__.py +0 -0
  19. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/config.py +0 -0
  20. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/__init__.py +0 -0
  21. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/base.py +0 -0
  22. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/broken_links/__init__.py +0 -0
  23. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/broken_links/detector.py +0 -0
  24. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/config.py +0 -0
  25. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/content/__init__.py +0 -0
  26. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/custom/__init__.py +0 -0
  27. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/custom/detector.py +0 -0
  28. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/custom/extractor.py +0 -0
  29. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/custom/runners/__init__.py +0 -0
  30. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/custom/runners/_base.py +0 -0
  31. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/custom/runners/_factory.py +0 -0
  32. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/custom/runners/_gliner2.py +0 -0
  33. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/custom/runners/_image_classification.py +0 -0
  34. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/custom/runners/_llm.py +0 -0
  35. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/custom/runners/_object_detection.py +0 -0
  36. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/custom/runners/_regex.py +0 -0
  37. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/custom/runners/_text_classification.py +0 -0
  38. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/custom/trainer.py +0 -0
  39. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/dependencies.py +0 -0
  40. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/pii/__init__.py +0 -0
  41. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/pii/detector.py +0 -0
  42. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/secrets/__init__.py +0 -0
  43. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/secrets/detector.py +0 -0
  44. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/threat/__init__.py +0 -0
  45. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/threat/code_security_detector.py +0 -0
  46. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/detectors/threat/yara_detector.py +0 -0
  47. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/file_evaluation/__init__.py +0 -0
  48. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/file_evaluation/runner.py +0 -0
  49. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/main.py +0 -0
  50. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/models/generated_detectors.py +0 -0
  51. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/models/generated_input.py +0 -0
  52. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/models/generated_single_asset_scan_results.py +0 -0
  53. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/outputs/__init__.py +0 -0
  54. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/outputs/base.py +0 -0
  55. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/outputs/console.py +0 -0
  56. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/outputs/factory.py +0 -0
  57. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/outputs/file.py +0 -0
  58. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/outputs/rest.py +0 -0
  59. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/pipeline/__init__.py +0 -0
  60. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/pipeline/content_provider.py +0 -0
  61. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/pipeline/detector_pipeline.py +0 -0
  62. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/pipeline/parsed_content_provider.py +0 -0
  63. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/pipeline/text_artifact.py +0 -0
  64. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/pipeline/worker_pool.py +0 -0
  65. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/__init__.py +0 -0
  66. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/asset_metadata.py +0 -0
  67. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/atlassian_common.py +0 -0
  68. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/azure_blob_storage/__init__.py +0 -0
  69. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/azure_blob_storage/source.py +0 -0
  70. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/base.py +0 -0
  71. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/confluence/__init__.py +0 -0
  72. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/confluence/source.py +0 -0
  73. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/databricks/__init__.py +0 -0
  74. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/databricks/source.py +0 -0
  75. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/delta_lake/__init__.py +0 -0
  76. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/delta_lake/source.py +0 -0
  77. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/dependencies.py +0 -0
  78. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/elasticsearch/__init__.py +0 -0
  79. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/elasticsearch/source.py +0 -0
  80. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/email/__init__.py +0 -0
  81. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/email/source.py +0 -0
  82. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/google_cloud_storage/__init__.py +0 -0
  83. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/google_cloud_storage/source.py +0 -0
  84. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/google_workspace/__init__.py +0 -0
  85. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/hive/__init__.py +0 -0
  86. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/hive/source.py +0 -0
  87. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/iceberg/__init__.py +0 -0
  88. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/iceberg/source.py +0 -0
  89. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/jira/__init__.py +0 -0
  90. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/jira/source.py +0 -0
  91. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/kafka/__init__.py +0 -0
  92. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/kafka/source.py +0 -0
  93. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/lakehouse_base.py +0 -0
  94. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/local_folder/__init__.py +0 -0
  95. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/local_folder/source.py +0 -0
  96. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/meilisearch/__init__.py +0 -0
  97. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/meilisearch/source.py +0 -0
  98. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/microsoft_365/__init__.py +0 -0
  99. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/microsoft_365/source.py +0 -0
  100. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/mongodb/__init__.py +0 -0
  101. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/mongodb/source.py +0 -0
  102. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/mssql/__init__.py +0 -0
  103. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/mssql/source.py +0 -0
  104. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/mysql/__init__.py +0 -0
  105. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/mysql/source.py +0 -0
  106. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/neo4j/__init__.py +0 -0
  107. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/neo4j/source.py +0 -0
  108. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/notion/__init__.py +0 -0
  109. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/notion/client.py +0 -0
  110. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/notion/source.py +0 -0
  111. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/object_storage/base.py +0 -0
  112. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/opensearch/__init__.py +0 -0
  113. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/opensearch/source.py +0 -0
  114. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/oracle/__init__.py +0 -0
  115. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/oracle/source.py +0 -0
  116. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/postgresql/__init__.py +0 -0
  117. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/postgresql/source.py +0 -0
  118. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/powerbi/__init__.py +0 -0
  119. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/powerbi/source.py +0 -0
  120. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/recipe_normalizer.py +0 -0
  121. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/s3_client.py +0 -0
  122. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/s3_compatible_storage/README.md +0 -0
  123. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/s3_compatible_storage/__init__.py +0 -0
  124. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/s3_compatible_storage/source.py +0 -0
  125. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/sandbox/__init__.py +0 -0
  126. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/sandbox/source.py +0 -0
  127. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/search_engine_base.py +0 -0
  128. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/servicedesk/__init__.py +0 -0
  129. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/servicedesk/source.py +0 -0
  130. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/slack/__init__.py +0 -0
  131. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/slack/source.py +0 -0
  132. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/snowflake/__init__.py +0 -0
  133. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/snowflake/source.py +0 -0
  134. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/sqlite/__init__.py +0 -0
  135. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/sqlite/source.py +0 -0
  136. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/tableau/__init__.py +0 -0
  137. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/tableau/source.py +0 -0
  138. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/tabular_base.py +0 -0
  139. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/tabular_utils.py +0 -0
  140. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/wordpress/__init__.py +0 -0
  141. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/wordpress/source.py +0 -0
  142. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/sources/youtube/__init__.py +0 -0
  143. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/telemetry.py +0 -0
  144. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/utils/__init__.py +0 -0
  145. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/utils/archive_extraction.py +0 -0
  146. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/utils/content_extraction.py +0 -0
  147. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/utils/dependency_groups.py +0 -0
  148. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/utils/embedded_images.py +0 -0
  149. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/utils/file_metadata.py +0 -0
  150. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/utils/file_parser.py +0 -0
  151. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/utils/file_to_images.py +0 -0
  152. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/utils/hashing.py +0 -0
  153. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/utils/resources.py +0 -0
  154. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/utils/transcription.py +0 -0
  155. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/utils/uv_sync.py +0 -0
  156. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/utils/validation.py +0 -0
  157. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/src/utils/video_processing.py +0 -0
  158. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/__init__.py +0 -0
  159. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/_lakehouse_fakes.py +0 -0
  160. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/conftest.py +0 -0
  161. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/__init__.py +0 -0
  162. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/broken_links/test_broken_links_detector.py +0 -0
  163. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/conftest.py +0 -0
  164. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/content/__init__.py +0 -0
  165. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/custom/__init__.py +0 -0
  166. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/custom/conftest.py +0 -0
  167. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/custom/test_gliner2_classification.py +0 -0
  168. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/custom/test_invoice_extraction.py +0 -0
  169. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/custom/test_llm_runner.py +0 -0
  170. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/custom/test_pipeline_integration.py +0 -0
  171. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/custom/test_regex_runner.py +0 -0
  172. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/custom/test_runner_hardening.py +0 -0
  173. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/custom/test_transformer_runners.py +0 -0
  174. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/pii/__init__.py +0 -0
  175. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/pii/conftest.py +0 -0
  176. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/pii/sample_invoice.pdf +0 -0
  177. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/pii/test_pii_chunking.py +0 -0
  178. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/pii/test_pii_detector.py +0 -0
  179. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/pii/test_pii_detector_extended.py +0 -0
  180. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/pii/test_pii_severity.py +0 -0
  181. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/secrets/__init__.py +0 -0
  182. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/secrets/test_secrets_detector.py +0 -0
  183. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/secrets/test_secrets_detector_extended.py +0 -0
  184. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/test_base_detector.py +0 -0
  185. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/test_custom_detector_examples_runtime.py +0 -0
  186. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/test_detector_catalog_commercial.py +0 -0
  187. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/test_detector_pipeline_types.py +0 -0
  188. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/test_detector_schema_examples.py +0 -0
  189. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/test_detector_types.py +0 -0
  190. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/test_phase2_detectors.py +0 -0
  191. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/test_registry.py +0 -0
  192. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/threat/__init__.py +0 -0
  193. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/threat/test_code_security_detector.py +0 -0
  194. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/detectors/threat/test_yara_detector.py +0 -0
  195. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/integration/test_wordpress_broken_links_detector.py +0 -0
  196. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/integration/test_wordpress_links_assets.py +0 -0
  197. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/pipeline/test_detector_outcomes.py +0 -0
  198. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/pipeline/test_detector_pipeline.py +0 -0
  199. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/pipeline/test_worker_pool.py +0 -0
  200. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_assets_metadata_catalog.py +0 -0
  201. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_azure_blob_storage_source.py +0 -0
  202. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_base_source_attachment.py +0 -0
  203. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_base_source_sampling.py +0 -0
  204. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_config.py +0 -0
  205. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_confluence_source.py +0 -0
  206. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_custom_extractor.py +0 -0
  207. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_databricks_source.py +0 -0
  208. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_delta_lake_source.py +0 -0
  209. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_dependency_groups.py +0 -0
  210. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_elasticsearch_source.py +0 -0
  211. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_email_source.py +0 -0
  212. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_file_evaluation_runner.py +0 -0
  213. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_google_cloud_storage_source.py +0 -0
  214. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_hashing.py +0 -0
  215. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_hive_source.py +0 -0
  216. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_iceberg_source.py +0 -0
  217. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_jira_source.py +0 -0
  218. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_local_folder_source.py +0 -0
  219. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_main.py +0 -0
  220. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_meilisearch_source.py +0 -0
  221. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_microsoft_365_source.py +0 -0
  222. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_mongodb_source.py +0 -0
  223. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_mssql_source.py +0 -0
  224. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_mysql_source.py +0 -0
  225. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_neo4j_source.py +0 -0
  226. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_notion_source.py +0 -0
  227. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_opensearch_source.py +0 -0
  228. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_oracle_source.py +0 -0
  229. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_outputs.py +0 -0
  230. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_postgresql_source.py +0 -0
  231. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_powerbi_source.py +0 -0
  232. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_recipe_normalizer.py +0 -0
  233. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_s3_compatible_storage_source.py +0 -0
  234. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_sampling_automatic.py +0 -0
  235. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_sandbox_source.py +0 -0
  236. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_servicedesk_source.py +0 -0
  237. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_slack_source.py +0 -0
  238. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_snowflake_source.py +0 -0
  239. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_source_dependency_groups.py +0 -0
  240. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_source_strategy_conformance.py +0 -0
  241. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_sqlite_source.py +0 -0
  242. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_tableau_source.py +0 -0
  243. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_tabular_automatic_sampling.py +0 -0
  244. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_tabular_utils.py +0 -0
  245. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_uv_sync.py +0 -0
  246. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_wordpress_source.py +0 -0
  247. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_youtube_source.py +0 -0
  248. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/test_youtube_source_integration.py +0 -0
  249. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/utils/test_archive_extraction.py +0 -0
  250. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/utils/test_content_extraction.py +0 -0
  251. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/utils/test_embedded_images.py +0 -0
  252. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/utils/test_file_metadata.py +0 -0
  253. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/utils/test_file_parser.py +0 -0
  254. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/utils/test_file_to_images.py +0 -0
  255. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/utils/test_legacy_office.py +0 -0
  256. {classifyre_cli-0.4.58 → classifyre_cli-0.4.59}/tests/utils/test_transcription.py +0 -0
@@ -0,0 +1,3 @@
1
+ $ uv sync
2
+ Resolved 300 packages in 356ms
3
+ Checked 51 packages in 4ms
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: classifyre-cli
3
- Version: 0.4.58
3
+ Version: 0.4.59
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.58",
3
+ "version": "0.4.59",
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.58"
3
+ version = "0.4.59"
4
4
  description = "Classifyre CLI — scan and classify unstructured data sources"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -178,9 +178,7 @@ class GoogleWorkspaceSource(BaseSource):
178
178
 
179
179
  if isinstance(required, GoogleWorkspaceRequiredServiceAccount):
180
180
  if not isinstance(masked, GoogleWorkspaceMaskedServiceAccount):
181
- raise ValueError(
182
- "service_account auth requires masked.service_account_json"
183
- )
181
+ raise ValueError("service_account auth requires masked.service_account_json")
184
182
  elif isinstance(required, GoogleWorkspaceRequiredOAuth):
185
183
  if not isinstance(masked, GoogleWorkspaceMaskedOAuth):
186
184
  raise ValueError(
@@ -655,9 +653,7 @@ class GoogleWorkspaceSource(BaseSource):
655
653
  mime_type = export_mime
656
654
  exported_as = export_mime
657
655
  elif ref.size and ref.size > self._max_object_bytes():
658
- parse_error = (
659
- f"File size {ref.size} exceeds limit {self._max_object_bytes()}"
660
- )
656
+ parse_error = f"File size {ref.size} exceeds limit {self._max_object_bytes()}"
661
657
  else:
662
658
  service = self._get_service()
663
659
  request = service.files().get_media(fileId=ref.file_id)
@@ -792,9 +788,7 @@ class GoogleWorkspaceSource(BaseSource):
792
788
  drive_id=_MY_DRIVE_ID, display_name="My Drive", drive_type="my_drive"
793
789
  )
794
790
  else:
795
- drive_ref = known_drives.get(drive_id) or self._resolve_shared_drive(
796
- drive_id
797
- )
791
+ drive_ref = known_drives.get(drive_id) or self._resolve_shared_drive(drive_id)
798
792
  ensure_drive(drive_ref)
799
793
  if len(batch) >= self.BATCH_SIZE:
800
794
  yield batch
@@ -849,7 +843,9 @@ class GoogleWorkspaceSource(BaseSource):
849
843
 
850
844
  logger.info(
851
845
  "Processing %d/%d items from drive '%s'",
852
- len(sampled), len(files), drive_id,
846
+ len(sampled),
847
+ len(files),
848
+ drive_id,
853
849
  )
854
850
 
855
851
  for file_ref in sampled:
@@ -884,18 +880,14 @@ class GoogleWorkspaceSource(BaseSource):
884
880
  and bool(required.delegated_subject)
885
881
  )
886
882
  if uses_identity:
887
- data = service.about().get(fields="user").execute(
888
- num_retries=self._max_retries()
889
- )
883
+ data = service.about().get(fields="user").execute(num_retries=self._max_retries())
890
884
  user = data.get("user", {})
891
885
  result["status"] = "SUCCESS"
892
886
  result["message"] = (
893
887
  f"Connected to Google Drive API as {user.get('emailAddress', 'unknown')}"
894
888
  )
895
889
  else:
896
- data = service.drives().list(pageSize=1).execute(
897
- num_retries=self._max_retries()
898
- )
890
+ data = service.drives().list(pageSize=1).execute(num_retries=self._max_retries())
899
891
  drives = data.get("drives", [])
900
892
  result["status"] = "SUCCESS"
901
893
  if drives:
@@ -904,7 +896,9 @@ class GoogleWorkspaceSource(BaseSource):
904
896
  f"{drives[0].get('name', 'unknown')}"
905
897
  )
906
898
  else:
907
- result["message"] = "Connected to Google Drive API. No shared drives accessible."
899
+ result["message"] = (
900
+ "Connected to Google Drive API. No shared drives accessible."
901
+ )
908
902
  except Exception as exc:
909
903
  result["status"] = "FAILURE"
910
904
  result["message"] = f"Failed to connect to Google Drive API: {exc}"
@@ -339,8 +339,7 @@ class YouTubeSource(BaseSource):
339
339
  # Requiring both codecs avoids yt-dlp's ffmpeg merge path. Visual OCR only
340
340
  # needs readable text, while the audio track remains suitable for Whisper.
341
341
  opts["format"] = (
342
- "best[height<=480][acodec!=none][vcodec!=none]/"
343
- "best[acodec!=none][vcodec!=none]"
342
+ "best[height<=480][acodec!=none][vcodec!=none]/best[acodec!=none][vcodec!=none]"
344
343
  )
345
344
  opts["noplaylist"] = True
346
345
  opts["outtmpl"] = str(dest_dir / "%(id)s.%(ext)s")
@@ -106,9 +106,17 @@ def convert_legacy_office(
106
106
  # profile's lock file, which otherwise makes concurrent (or
107
107
  # crashed) soffice runs fail with "another instance is running".
108
108
  profile_dir = temp_path / "profile"
109
+ # --headless alone still lets macOS surface the app (Dock icon /
110
+ # brief window flash) on some LibreOffice builds; the extra flags
111
+ # suppress the start center, first-run wizard, and lock checks so
112
+ # conversions stay invisible.
109
113
  command = [
110
114
  soffice,
111
115
  "--headless",
116
+ "--invisible",
117
+ "--nologo",
118
+ "--nodefault",
119
+ "--nolockcheck",
112
120
  "--norestore",
113
121
  f"-env:UserInstallation={profile_dir.as_uri()}",
114
122
  "--convert-to",
@@ -144,9 +144,7 @@ class TestSampling:
144
144
  import json
145
145
  import os
146
146
 
147
- encoded = base64.b64encode(
148
- json.dumps(cursor_after_first).encode("utf-8")
149
- ).decode("utf-8")
147
+ encoded = base64.b64encode(json.dumps(cursor_after_first).encode("utf-8")).decode("utf-8")
150
148
  os.environ["CLASSIFYRE_SAMPLING_CURSOR"] = encoded
151
149
  try:
152
150
  source2 = GoogleWorkspaceSource(recipe)
@@ -366,9 +364,7 @@ class TestEndToEndExtraction:
366
364
 
367
365
  # drives().list() -> one shared drive
368
366
  drives_list_result = {"drives": [{"id": "drive-1", "name": "Team Drive"}]}
369
- mock_service.drives.return_value.list.return_value.execute.return_value = (
370
- drives_list_result
371
- )
367
+ mock_service.drives.return_value.list.return_value.execute.return_value = drives_list_result
372
368
 
373
369
  # files().list() -> root has one subfolder + nothing else, subfolder has
374
370
  # one binary file and one Google Doc.
@@ -15,6 +15,7 @@ CURSOR_ENV = "CLASSIFYRE_SAMPLING_CURSOR"
15
15
  def _encode_cursor(cursor: dict[str, Any]) -> str:
16
16
  return base64.b64encode(json.dumps(cursor).encode()).decode()
17
17
 
18
+
18
19
  # ── confluent-kafka fakes ────────────────────────────────────────────────
19
20
 
20
21
 
@@ -63,9 +63,7 @@ def test_changed_frame_ocr_is_timestamped_and_deduplicated(
63
63
  ocr_results = iter(["Opening slide", "Architecture slide"])
64
64
  monkeypatch.setattr(video_processing, "_ocr_text", lambda _frame: next(ocr_results))
65
65
 
66
- segments = list(
67
- video_processing.iter_video_ocr_segments(b"video", file_name="lecture.mp4")
68
- )
66
+ segments = list(video_processing.iter_video_ocr_segments(b"video", file_name="lecture.mp4"))
69
67
 
70
68
  assert segments == [
71
69
  "[On-screen text 00:00:00]\nOpening slide",
@@ -122,9 +120,7 @@ def test_rapidocr_filters_low_confidence_lines(monkeypatch: pytest.MonkeyPatch)
122
120
  assert video_processing._ocr_text(object()) == "clear text\nanother line"
123
121
 
124
122
 
125
- def test_path_ocr_reuses_existing_video(
126
- monkeypatch: pytest.MonkeyPatch, tmp_path: Path
127
- ) -> None:
123
+ def test_path_ocr_reuses_existing_video(monkeypatch: pytest.MonkeyPatch, tmp_path: Path) -> None:
128
124
  video_path = tmp_path / "video.mp4"
129
125
  video_path.write_bytes(b"video")
130
126
  seen: list[Path] = []
@@ -830,7 +830,7 @@ wheels = [
830
830
 
831
831
  [[package]]
832
832
  name = "classifyre-cli"
833
- version = "0.4.58"
833
+ version = "0.4.59"
834
834
  source = { editable = "." }
835
835
  dependencies = [
836
836
  { name = "beautifulsoup4" },
@@ -1347,7 +1347,7 @@ youtube = [
1347
1347
 
1348
1348
  [[package]]
1349
1349
  name = "classifyre-schemas"
1350
- version = "0.4.58"
1350
+ version = "0.4.59"
1351
1351
  source = { editable = "../../packages/schemas" }
1352
1352
  dependencies = [
1353
1353
  { name = "fastjsonschema" },
@@ -1,3 +0,0 @@
1
- $ uv sync
2
- Resolved 300 packages in 202ms
3
- Checked 51 packages in 3ms
File without changes