An open source implementation of CLIP.
This report summarizes scanner evidence for mlfoundations/open_clip, a Python project with 14,189 GitHub stars. SynthScan examined 50,737 lines of code across 368 source files, recording 1005 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 26.6 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 740 finding(s).
Are imports declared and package/API names verified? 127 finding(s).
Are wrappers, guards, and repeated structures necessary? 791 finding(s).
Which changes need focused human review? 1005 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1005 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_audio_zero_shot.py | 87 | def test_hf_audio_dataset_wrapper_and_classnames(): | CODE |
| LOW | tests/test_audio_zero_shot.py | 101 | def test_hf_audio_dataset_wrapper_accepts_decoder_like_audio(): | CODE |
| LOW | tests/test_audio_zero_shot.py | 116 | def test_build_hf_audio_zero_shot_dataset_defaults_to_no_workers(monkeypatch): | CODE |
| LOW | tests/test_audio_zero_shot.py | 152 | def test_build_hf_audio_zero_shot_dataset_sets_worker_context(monkeypatch): | CODE |
| LOW | tests/test_audio_zero_shot.py | 189 | def test_run_audio_zero_shot_classifier(): | CODE |
| LOW | tests/test_audio_zero_shot.py | 219 | def test_audio_zero_shot_template_validation(): | CODE |
| LOW | tests/test_audio_zero_shot.py | 229 | def test_run_audio_zero_shot_classifier_uses_bare_model_dummy_audio(monkeypatch): | CODE |
| LOW | tests/test_hf_model.py | 21 | def test_max_pooler_ignores_padding(): | CODE |
| LOW | tests/test_hf_model.py | 29 | def test_modernbert_hf_text_encoder_supported(): | CODE |
| LOW | tests/test_hf_model.py | 55 | def test_modernbert_does_not_request_hf_pooling_layer(): | CODE |
| LOW | tests/test_hf_model.py | 63 | def test_hf_text_encoder_ignores_config_pinned_dtype(): | CODE |
| LOW | tests/test_hf_model.py | 90 | def test_pretrained_text_encoder(model_id): | CODE |
| LOW⚡ | tests/test_naflex_timm_conversion.py | 298 | def test_naflex_patch_interp_requires_naflex_timm_tower(): | CODE |
| LOW⚡ | tests/test_naflex_timm_conversion.py | 303 | def test_force_naflex_vision_rejects_non_vit_model(): | CODE |
| LOW⚡ | tests/test_naflex_timm_conversion.py | 312 | def test_parse_use_naflex_enables_timm_naflex_aug_cfg(): | CODE |
| LOW⚡ | tests/test_naflex_timm_conversion.py | 321 | def test_parse_naflex_patch_interp_auto_enables_for_multiple_patch_sizes(): | CODE |
| LOW⚡ | tests/test_naflex_timm_conversion.py | 328 | def test_parse_force_naflex_vision_does_not_enable_naflex_data_pipeline(): | CODE |
| LOW⚡ | tests/test_naflex_timm_conversion.py | 337 | def test_naflex_data_config_defaults_to_model_patch_size(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 53 | def _tiny_native_vit_clip_config(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 74 | def _tiny_native_vit_quickgelu_clip_config(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 119 | def _write_tiny_big_vision_npz(path): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 186 | def test_force_naflex_vision_passes_use_naflex_to_timm(monkeypatch): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 228 | def test_force_naflex_vision_accepts_timm_models_by_module_membership(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 235 | def test_force_naflex_vision_configures_pe_core_timm_tower(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 255 | def test_force_naflex_vision_converts_native_vit_config(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 278 | def test_naflex_vision_config_preserves_declared_patch_interpolator(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 358 | def test_naflex_model_patch_info_handles_adapter_and_interpolating_timm_tower(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 392 | def test_naflex_data_config_fails_fast_for_fixed_patch_adapter(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 482 | def test_naflex_non_base_eval_and_checkpoint_round_trip(monkeypatch, tmp_path): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 533 | def test_naflex_patch_interp_off_by_default(monkeypatch): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 565 | def test_prewarm_naflex_patch_interpolator(monkeypatch): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 643 | def test_convert_naflex_timm_state_dict_maps_patch_embed_weight(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 672 | def test_convert_naflex_native_vit_state_dict_folds_class_pos_embed(): | CODE |
| LOW | tests/test_naflex_timm_conversion.py | 712 | def test_force_naflex_native_vit_dense_output_matches_native(monkeypatch, config_fn): | CODE |
| LOW⚡ | tests/test_task_specific_unit.py | 84 | def test_clip_task_loss_aggregation(): | CODE |
| LOW⚡ | tests/test_task_specific_unit.py | 94 | def test_clip_task_logit_scale_in_report(): | CODE |
| LOW⚡ | tests/test_task_specific_unit.py | 108 | def test_coca_build_loss_inputs_autoregressive_shift(): | CODE |
| LOW | tests/test_task_specific_unit.py | 132 | def test_coca_training_forward_produces_loss(): | CODE |
| LOW | tests/test_task_specific_unit.py | 142 | def test_coca_compute_accum_loss_concatenates_batches(): | CODE |
| LOW⚡ | tests/test_task_specific_unit.py | 175 | def test_distill_teacher_frozen(): | CODE |
| LOW⚡ | tests/test_task_specific_unit.py | 184 | def test_distill_teacher_stays_eval(): | CODE |
| LOW⚡ | tests/test_task_specific_unit.py | 193 | def test_distill_training_forward_prefixes_teacher_outputs(): | CODE |
| LOW | tests/test_task_specific_unit.py | 215 | def test_distill_teacher_no_grad(): | CODE |
| LOW | tests/test_audio_model_configs.py | 10 | def test_clap_htsat_tiny_config_instantiates_with_audio_deps(): | CODE |
| LOW | tests/test_context_masking.py | 26 | def test_mammut_decoder_context_padding_invariant(model_name): | CODE |
| LOW | tests/test_context_masking.py | 50 | def test_coca_decoder_context_padding_invariant(model_name): | CODE |
| LOW | tests/test_context_masking.py | 70 | def test_context_masking_all_invalid_row_no_nan(): | CODE |
| LOW | tests/test_context_masking.py | 83 | def test_context_attn_mask_from_valid(): | CODE |
| LOW⚡ | tests/test_clap_task.py | 78 | def test_clap_task_training_forward_returns_loss(): | CODE |
| LOW⚡ | tests/test_clap_task.py | 87 | def test_clap_task_eval_forward_keeps_audio_features_key(): | CODE |
| LOW⚡ | tests/test_clap_task.py | 95 | def test_clap_task_eval_forward_accepts_text_kwargs(): | CODE |
| LOW⚡ | tests/test_clap_task.py | 103 | def test_clap_task_dummy_batch_and_batch_size(): | CODE |
| LOW | tests/test_clap_task.py | 114 | def test_clap_task_accum_loss_maps_audio_features_to_clip_loss(): | CODE |
| LOW | tests/test_clap_task.py | 125 | def test_create_task_dispatches_clap(monkeypatch): | CODE |
| LOW | tests/test_clap_task.py | 151 | def test_factory_dispatches_audio_config_to_clap(tmp_path, monkeypatch): | CODE |
| LOW | tests/test_clap_task.py | 191 | def test_evaluate_uses_task_primary_key_for_audio(): | CODE |
| LOW | tests/test_clap_task.py | 221 | def test_audio_checkpoint_retries_only_weights_only_payload_errors(monkeypatch): | CODE |
| LOW | tests/test_clap_task.py | 237 | def test_audio_checkpoint_does_not_retry_unrelated_unpickle_errors(monkeypatch): | CODE |
| LOW | tests/test_naflex_audio.py | 45 | def test_mel_to_patches_pads_time_remainder_not_truncated(): | CODE |
| LOW | tests/test_naflex_audio.py | 57 | def test_mel_to_patches_subpatch_clip_yields_one_valid_patch(): | CODE |
| 553 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_task_specific_unit.py | 14 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_task_specific_unit.py | 16 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_specific_unit.py | 79 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_specific_unit.py | 81 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_specific_unit.py | 103 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_specific_unit.py | 105 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_specific_unit.py | 170 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_specific_unit.py | 172 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 35 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 37 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 90 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 92 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 130 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 132 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 175 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 177 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 186 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_naflex_genlip.py | 188 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_model_traits.py | 35 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_model_traits.py | 37 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_model_traits.py | 75 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_model_traits.py | 77 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_model_traits.py | 236 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_model_traits.py | 238 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_model_traits.py | 103 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_model_traits.py | 105 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_data_csv.py | 30 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_data_csv.py | 32 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_data_csv.py | 80 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_data_csv.py | 82 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_task_fsdp_unit.py | 18 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_task_fsdp_unit.py | 20 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_task_fsdp_unit.py | 51 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_task_fsdp_unit.py | 53 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_fsdp_unit.py | 78 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_fsdp_unit.py | 80 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_fsdp_unit.py | 90 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_fsdp_unit.py | 92 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_fsdp_unit.py | 163 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_fsdp_unit.py | 165 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_fsdp_unit.py | 187 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_fsdp_unit.py | 189 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_modern_text.py | 107 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_modern_text.py | 109 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_modern_text.py | 429 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_modern_text.py | 431 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_modern_text.py | 480 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_modern_text.py | 482 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_modern_text.py | 674 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_modern_text.py | 676 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_task_checkpoint.py | 222 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_task_checkpoint.py | 224 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 60 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 62 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 106 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 108 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 166 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 168 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 231 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_task_base_unit.py | 233 | # --------------------------------------------------------------------------- | COMMENT |
| 30 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_legacy_data.py | 6 | CODE | |
| LOW | tests/test_legacy_data.py | 8 | CODE | |
| LOW | tests/test_model_traits.py | 30 | CODE | |
| LOW | tests/test_audio_wds.py | 20 | CODE | |
| LOW | tests/test_optim_layer_decay.py | 8 | CODE | |
| LOW | tests/test_optim_layer_decay.py | 8 | CODE | |
| LOW | tests/test_task_checkpoint.py | 12 | CODE | |
| LOW | tests/test_naflex_mammut.py | 12 | CODE | |
| LOW | tests/test_naflex_mammut.py | 14 | CODE | |
| LOW | scripts/genlip_zeroshot.py | 29 | CODE | |
| LOW | src/open_clip/pretrained.py | 7 | CODE | |
| LOW | src/open_clip/pretrained.py | 13 | CODE | |
| LOW | src/open_clip/hf_model.py | 14 | CODE | |
| LOW | src/open_clip/__init__.py | 1 | CODE | |
| LOW | src/open_clip/__init__.py | 3 | CODE | |
| LOW | src/open_clip/__init__.py | 4 | CODE | |
| LOW | src/open_clip/__init__.py | 5 | CODE | |
| LOW | src/open_clip/__init__.py | 6 | CODE | |
| LOW | src/open_clip/__init__.py | 7 | CODE | |
| LOW | src/open_clip/__init__.py | 7 | CODE | |
| LOW | src/open_clip/__init__.py | 8 | CODE | |
| LOW | src/open_clip/__init__.py | 8 | CODE | |
| LOW | src/open_clip/__init__.py | 8 | CODE | |
| LOW | src/open_clip/__init__.py | 8 | CODE | |
| LOW | src/open_clip/__init__.py | 8 | CODE | |
| LOW | src/open_clip/__init__.py | 8 | CODE | |
| LOW | src/open_clip/__init__.py | 16 | CODE | |
| LOW | src/open_clip/__init__.py | 16 | CODE | |
| LOW | src/open_clip/__init__.py | 16 | CODE | |
| LOW | src/open_clip/__init__.py | 16 | CODE | |
| LOW | src/open_clip/__init__.py | 17 | CODE | |
| LOW | src/open_clip/__init__.py | 17 | CODE | |
| LOW | src/open_clip/__init__.py | 17 | CODE | |
| LOW | src/open_clip/__init__.py | 17 | CODE | |
| LOW | src/open_clip/__init__.py | 17 | CODE | |
| LOW | src/open_clip/__init__.py | 18 | CODE | |
| LOW | src/open_clip/__init__.py | 18 | CODE | |
| LOW | src/open_clip/__init__.py | 18 | CODE | |
| LOW | src/open_clip/__init__.py | 18 | CODE | |
| LOW | src/open_clip/__init__.py | 19 | CODE | |
| LOW | src/open_clip/__init__.py | 19 | CODE | |
| LOW | src/open_clip/__init__.py | 19 | CODE | |
| LOW | src/open_clip/__init__.py | 19 | CODE | |
| LOW | src/open_clip/__init__.py | 19 | CODE | |
| LOW | src/open_clip/__init__.py | 19 | CODE | |
| LOW | src/open_clip/__init__.py | 19 | CODE | |
| LOW | src/open_clip/__init__.py | 19 | CODE | |
| LOW | src/open_clip/__init__.py | 19 | CODE | |
| LOW | src/open_clip/__init__.py | 30 | CODE | |
| LOW | src/open_clip/__init__.py | 31 | CODE | |
| LOW | src/open_clip/__init__.py | 31 | CODE | |
| LOW | src/open_clip/__init__.py | 31 | CODE | |
| LOW | src/open_clip/__init__.py | 31 | CODE | |
| LOW | src/open_clip/__init__.py | 31 | CODE | |
| LOW | src/open_clip/__init__.py | 31 | CODE | |
| LOW | src/open_clip/__init__.py | 31 | CODE | |
| LOW | src/open_clip/__init__.py | 31 | CODE | |
| LOW | src/open_clip/__init__.py | 31 | CODE | |
| LOW | src/open_clip/__init__.py | 31 | CODE | |
| LOW | src/open_clip/__init__.py | 31 | CODE | |
| 66 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_factory_loss.py | 25 | CODE | |
| LOW | scripts/linear_probe_data.py | 222 | CODE | |
| LOW | scripts/linear_probe_data.py | 113 | CODE | |
| LOW | scripts/multilabel_zeroshot.py | 470 | CODE | |
| LOW | scripts/linear_probe.py | 444 | CODE | |
| LOW | scripts/genlip_caption_stats.py | 51 | CODE | |
| LOW | scripts/genlip_caption_stats.py | 90 | CODE | |
| LOW | src/open_clip/zero_shot_classifier.py | 78 | CODE | |
| LOW | src/open_clip/pretrained.py | 818 | CODE | |
| LOW | src/open_clip/hf_model.py | 109 | CODE | |
| LOW | src/open_clip/hf_model.py | 263 | CODE | |
| LOW | src/open_clip/convert.py | 13 | CODE | |
| LOW | src/open_clip/convert.py | 21 | CODE | |
| LOW | src/open_clip/push_to_hf_hub.py | 258 | CODE | |
| LOW | src/open_clip/factory.py | 97 | CODE | |
| LOW | src/open_clip/factory.py | 326 | CODE | |
| LOW | src/open_clip/factory.py | 850 | CODE | |
| LOW | src/open_clip/factory.py | 1142 | CODE | |
| LOW | src/open_clip/model.py | 193 | CODE | |
| LOW | src/open_clip/model.py | 516 | CODE | |
| LOW | src/open_clip/tokenizer.py | 222 | CODE | |
| LOW | src/open_clip/tokenizer.py | 610 | CODE | |
| LOW | src/open_clip/tokenizer.py | 750 | CODE | |
| LOW | src/open_clip/tokenizer.py | 1236 | CODE | |
| LOW | src/open_clip/loss.py | 488 | CODE | |
| LOW | src/open_clip/utils.py | 93 | CODE | |
| LOW | src/open_clip/utils.py | 116 | CODE | |
| LOW | src/open_clip/transformer.py | 913 | CODE | |
| LOW | src/open_clip/transformer.py | 176 | CODE | |
| LOW | src/open_clip/transform.py | 373 | CODE | |
| LOW | src/open_clip/naflex_genlip_model.py | 605 | CODE | |
| LOW | src/open_clip/naflex_genlip_model.py | 607 | CODE | |
| LOW | src/open_clip/audio/convert.py | 76 | CODE | |
| LOW | src/open_clip/audio/whisper.py | 379 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 1158 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 104 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 741 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 1032 | CODE | |
| LOW | src/open_clip/audio/transform.py | 127 | CODE | |
| LOW | src/open_clip/task/base_task.py | 99 | CODE | |
| LOW | src/open_clip/task/base_task.py | 417 | CODE | |
| LOW | src/open_clip_train/legacy_train.py | 42 | CODE | |
| LOW | src/open_clip_train/legacy_train.py | 229 | CODE | |
| LOW | src/open_clip_train/legacy_main.py | 49 | CODE | |
| LOW | src/open_clip_train/distributed.py | 23 | CODE | |
| LOW | src/open_clip_train/naflex_data.py | 1013 | CODE | |
| LOW | src/open_clip_train/train.py | 180 | CODE | |
| LOW | src/open_clip_train/train.py | 296 | CODE | |
| LOW | src/open_clip_train/train.py | 499 | CODE | |
| LOW | src/open_clip_train/file_utils.py | 100 | CODE | |
| LOW | src/open_clip_train/main.py | 62 | CODE | |
| LOW | src/open_clip_train/profiler.py | 131 | CODE | |
| LOW | src/open_clip_train/eval_utils.py | 37 | CODE | |
| LOW | src/open_clip_train/optim.py | 78 | CODE | |
| LOW | src/open_clip_train/data.py | 760 | CODE | |
| LOW | src/open_clip_train/data.py | 1177 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/open_clip/pretrained.py | 906 | except Exception: | CODE |
| HIGH | src/open_clip/tokenizer.py | 97 | except ValueError: | CODE |
| HIGH | src/open_clip/tokenizer.py | 1213 | except KeyError: | CODE |
| HIGH | src/open_clip/task/base_task.py | 251 | except ImportError: | CODE |
| HIGH | src/open_clip_train/naflex_data.py | 465 | except queue.Empty: | CODE |
| HIGH | src/open_clip_train/profiler.py | 207 | except RuntimeError as e: | CODE |
| HIGH | src/open_clip_train/optim.py | 117 | except Exception: # a submodule's hook may assume context we don't have; skip it rather than fail | CODE |
| HIGH | src/open_clip_train/optim.py | 124 | except Exception: | CODE |
| HIGH | src/open_clip_train/optim.py | 131 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/util_test.py | 159 | CODE | |
| LOW | src/open_clip/coca_model.py | 72 | CODE | |
| LOW | src/open_clip/coca_model.py | 298 | CODE | |
| LOW | src/open_clip/coca_model.py | 380 | CODE | |
| LOW | src/open_clip/generation.py | 389 | CODE | |
| LOW | src/open_clip/push_to_hf_hub.py | 205 | CODE | |
| LOW | src/open_clip/modified_resnet.py | 56 | CODE | |
| LOW | src/open_clip/mammut_model.py | 202 | CODE | |
| LOW | src/open_clip/factory.py | 326 | CODE | |
| LOW | src/open_clip/factory.py | 1062 | CODE | |
| LOW | src/open_clip/factory.py | 1251 | CODE | |
| LOW | src/open_clip/factory.py | 1393 | CODE | |
| LOW | src/open_clip/model.py | 516 | CODE | |
| LOW | src/open_clip/model.py | 684 | CODE | |
| LOW | src/open_clip/loss.py | 145 | CODE | |
| LOW | src/open_clip/transformer.py | 81 | CODE | |
| LOW | src/open_clip/transformer.py | 295 | CODE | |
| LOW | src/open_clip/transformer.py | 361 | CODE | |
| LOW | src/open_clip/transformer.py | 413 | CODE | |
| LOW | src/open_clip/transformer.py | 552 | CODE | |
| LOW | src/open_clip/transformer.py | 1109 | CODE | |
| LOW | src/open_clip/transformer.py | 1190 | CODE | |
| LOW | src/open_clip/transformer.py | 1759 | CODE | |
| LOW | src/open_clip/transformer.py | 2268 | CODE | |
| LOW | src/open_clip/naflex_config.py | 31 | CODE | |
| LOW | src/open_clip/timm_model.py | 29 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 38 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 87 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 104 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 449 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 641 | CODE | |
| LOW | src/open_clip/audio/htsat.py | 741 | CODE | |
| LOW | src/open_clip/task/coca_task.py | 21 | CODE | |
| LOW | src/open_clip/task/genlip_task.py | 29 | CODE | |
| LOW | src/open_clip/task/clip_task.py | 12 | CODE | |
| LOW | src/open_clip/task/clap_task.py | 18 | CODE | |
| LOW | src/open_clip/task/distill_task.py | 12 | CODE | |
| LOW | src/open_clip_train/naflex_data.py | 549 | CODE | |
| LOW | src/open_clip_train/naflex_data.py | 925 | CODE | |
| LOW | src/open_clip_train/naflex_data.py | 1060 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_model_traits.py | 31 | except Exception: # pragma: no cover - environment dependent | CODE |
| MEDIUM | tests/test_optim_layer_decay.py | 451 | def _build_clap_htsat(): | CODE |
| LOW | tests/test_optim_layer_decay.py | 146 | except Exception as e: # offline / hub unavailable | CODE |
| LOW | tests/test_optim_layer_decay.py | 454 | except Exception as e: # optional deps / config issues | CODE |
| LOW | tests/test_optim_layer_decay.py | 518 | except Exception as e: # nadamuon may be absent in older timm | CODE |
| LOW | src/open_clip/coca_model.py | 96 | except Exception as e: | CODE |
| MEDIUM | src/open_clip/coca_model.py | 72 | def generate( | CODE |
| LOW | src/open_clip/pretrained.py | 906 | except Exception: | CODE |
| LOW | src/open_clip/pretrained.py | 918 | except Exception as e: | CODE |
| LOW | src/open_clip/push_to_hf_hub.py | 166 | except Exception as e: | CODE |
| LOW | src/open_clip/factory.py | 442 | except Exception as e: | CODE |
| LOW | src/open_clip/factory.py | 466 | except Exception as e_weights: | CODE |
| LOW | src/open_clip/factory.py | 469 | except Exception as e_config: | CODE |
| LOW | src/open_clip/factory.py | 497 | except Exception as e: | CODE |
| LOW | src/open_clip/factory.py | 685 | except Exception as e: | CODE |
| LOW | src/open_clip/factory.py | 713 | except Exception as e: | CODE |
| LOW | src/open_clip/factory.py | 735 | except Exception as e: | CODE |
| LOW | src/open_clip/factory.py | 890 | except Exception as e: | CODE |
| LOW | src/open_clip/factory.py | 906 | except Exception as e: | CODE |
| LOW | src/open_clip/tokenizer.py | 327 | except Exception: | CODE |
| LOW | src/open_clip/timm_model.py | 181 | except Exception as e: | CODE |
| LOW | src/open_clip/audio/whisper.py | 430 | except Exception as e: | CODE |
| LOW | src/open_clip/audio/htsat.py | 1205 | except Exception as exc: | STRING |
| MEDIUM | src/open_clip/audio/htsat.py | 1158 | def create_htsat_model(audio_cfg, enable_fusion=False, fusion_type="None"): | CODE |
| LOW | src/open_clip_train/naflex_data.py | 388 | except Exception: | CODE |
| LOW | src/open_clip_train/naflex_data.py | 860 | except Exception as ex: | CODE |
| LOW | src/open_clip_train/file_utils.py | 41 | except Exception as e: | CODE |
| LOW | src/open_clip_train/profiler.py | 229 | except Exception as e: | CODE |
| MEDIUM | src/open_clip_train/profiler.py | 230 | print(f'Error profiling {m}: {e}') | CODE |
| LOW⚡ | src/open_clip_train/optim.py | 117 | except Exception: # a submodule's hook may assume context we don't have; skip it rather than fail | CODE |
| LOW⚡ | src/open_clip_train/optim.py | 124 | except Exception: | CODE |
| LOW⚡ | src/open_clip_train/optim.py | 131 | except Exception: | CODE |
| LOW | src/open_clip_train/data.py | 84 | except Exception as exn: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README.md | 78 | | Model | Training data | Resolution | # of samples seen | ImageNet zero-shot acc. | | CODE |
| MEDIUM | README.md | 539 | ### Evaluating hosted pretrained checkpoint on ImageNet zero-shot prediction: | COMMENT |
| MEDIUM | README.md | 548 | ### Evaluating CLAP audio models on zero-shot audio classification: | COMMENT |
| MEDIUM | tests/test_eval_task.py | 29 | zeroshot_frequency=0, # disable zero-shot to keep test fast | CODE |
| MEDIUM | scripts/multilabel_zeroshot.py | 351 | # OpenCLIP's zero-shot classifier. This is an ensemble heuristic, not calibration. | COMMENT |
| MEDIUM | src/open_clip/audio/config.py | 31 | # Eval-time audio-token CAP for NaFlexClap zero-shot (mirror of vision_cfg.image_seq_len). Audio is | COMMENT |
| MEDIUM | src/open_clip/task/checkpoint.py | 186 | # Build empty DTensor scaffolding, then let DCP fill it | COMMENT |
| MEDIUM | src/open_clip_train/zero_shot.py | 51 | # tower (generative VLMs such as GenLIP): the text-classifier zero-shot path requires encode_text. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/open_clip/factory.py | 155 | Parses a model name string to identify a schema and the remaining identifier. Args: model_name: The mo | STRING |
| HIGH | src/open_clip/factory.py | 1414 | Creates a contrastive vision-language model from pretrained weights with optional preprocessing transform. Thi | STRING |
| HIGH | src/open_clip_train/optim.py | 257 | Build optimizer param groups with layer-wise LR decay applied to the text / image / audio tower(s). Each decayed to | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/open_clip/modified_resnet.py | 0 | forward features that returns intermediates. args: x: input image tensor indices: take last n blocks if int, all if none | STRING |
| HIGH | src/open_clip/transformer.py | 0 | forward features that returns intermediates. args: x: input image tensor indices: take last n blocks if int, all if none | STRING |
| HIGH | src/open_clip/timm_model.py | 0 | forward features that returns intermediates. args: x: input image tensor indices: take last n blocks if int, all if none | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_optim_layer_decay.py | 374 | # ---- robust weight-decay exclusion filter ---- | COMMENT |
| MEDIUM | src/open_clip/factory.py | 756 | # Absolutely no weights were loaded from any source | COMMENT |
| MEDIUM | src/open_clip/tokenizer.py | 759 | # adding lower (for case-sensitive tokenizers) will make it more robust but less sensitive to nuance | COMMENT |
| MEDIUM | src/open_clip/tokenizer.py | 996 | # adding lower (for case-sensitive tokenizers) will make it more robust but less sensitive to nuance | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/open_clip/push_to_hf_hub.py | 159 | # Check if repo already exists and determine what needs updating | COMMENT |
| LOW | src/open_clip/factory.py | 239 | # Check if safetensors or not and load weights accordingly | COMMENT |
| LOW | src/open_clip/factory.py | 427 | # Check if the required 'model_cfg' key is present | COMMENT |
| LOW | src/open_clip/factory.py | 489 | # Check if `pretrained` is a known tag | COMMENT |
| LOW | src/open_clip/factory.py | 674 | # Check if model has the 'visual' attribute | COMMENT |
| LOW | src/open_clip/factory.py | 920 | # Check if config determination failed completely (should only be possible if initial schema parsing failed badly) | COMMENT |
| LOW | src/open_clip/timm_model.py | 246 | # Check if the underlying timm model has set_input_size method | COMMENT |
| LOW | src/open_clip_train/distributed.py | 134 | # Check if init_process_group supports device_id (added in PyTorch ~2.4). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/open_clip/pos_embed.py | 1 | # Copyright (c) Meta Platforms, Inc. and affiliates. | COMMENT |
| LOW | src/open_clip/tokenizer.py | 641 | self.clean_fn = get_clean_fn(clean) | COMMENT |
| LOW | src/open_clip/tokenizer.py | 661 | # repo_id = '/'.join(parts[:-1]) | COMMENT |
| LOW | src/open_clip/transformer.py | 721 | # Freeze the tower top-down via the shared ``layer_groups`` enumeration: ``unlocked_groups`` counts the top | COMMENT |
| LOW | src/open_clip/audio/htsat.py | 1121 | # output_dict = self.forward_features(x) | COMMENT |
| LOW | src/open_clip/audio/htsat.py | 1141 | # framewise_output += d["framewise_output"] | COMMENT |
| LOW | src/open_clip_train/data.py | 41 | # they survive pickling — required under forkserver multiprocessing | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/genlip_zeroshot.py | 212 | scores = scores - uncond # PMI: log P(cap|img) - log P(cap|null) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/open_clip/model_traits.py | 39 | __all__ = [ | CODE |
| LOW | src/open_clip/audio/__init__.py | 30 | __all__ = [ | CODE |
| LOW | src/open_clip_train/naflex_data.py | 31 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/open_clip_train/data.py | 196 | # Create the shared counter in the SAME multiprocessing context as the DataLoader workers. A fork-context | COMMENT |