Tool for real-time visualization, monitoring and collaborative analysis of AI/ML experiments and live data. Supports Python, PyTorch/Torch, NumPy, TensorFlow/Keras https://visdom.dev
This report summarizes scanner evidence for fossasia/visdom, a Python project with 10,319 GitHub stars. SynthScan examined 100,161 lines of code across 306 source files, recording 2255 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 25.4 (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? 2016 finding(s).
Are imports declared and package/API names verified? 106 finding(s).
Are wrappers, guards, and repeated structures necessary? 2103 finding(s).
Which changes need focused human review? 2255 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 2255 distinct pattern matches across 11 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⚡ | py/tests/test_hparams.py | 61 | def test_posts_to_hparams_endpoint(self): | CODE |
| LOW⚡ | py/tests/test_hparams.py | 71 | def test_env_ids_and_mode_pass_through(self): | CODE |
| LOW⚡ | py/tests/test_hparams.py | 79 | def test_win_and_env_pass_through(self): | CODE |
| LOW⚡ | py/tests/test_hparams.py | 87 | def test_opts_are_validated_client_side(self): | CODE |
| LOW⚡ | py/tests/test_hparams.py | 96 | def test_posts_to_update_endpoint(self): | CODE |
| LOW⚡ | py/tests/test_hparams.py | 105 | def test_bare_refresh_sends_only_the_window(self): | CODE |
| LOW⚡ | py/tests/test_hparams.py | 115 | def test_env_passes_through_as_eid(self): | CODE |
| LOW | py/tests/test_hparams.py | 128 | def test_opts_are_validated_client_side(self): | CODE |
| LOW⚡ | py/tests/test_experiment_compare.py | 167 | def test_single_experiment_shares_everything(self): | CODE |
| LOW⚡ | py/tests/test_experiment_compare.py | 173 | def test_no_experiments_yields_empty_sections(self): | CODE |
| LOW⚡ | py/tests/test_experiment_compare.py | 181 | def test_groups_cluster_the_runs_that_agree(self): | CODE |
| LOW⚡ | py/tests/test_experiment_compare.py | 326 | def test_duplicate_env_ids_collapse(self): | CODE |
| LOW⚡ | py/tests/test_experiment_compare.py | 331 | def test_unknown_env_id_raises_key_error(self): | CODE |
| LOW⚡ | py/tests/test_experiment_compare.py | 337 | def test_env_without_experiment_raises_key_error(self): | CODE |
| LOW⚡ | py/tests/test_experiment_compare.py | 343 | def test_empty_env_ids_raises_value_error(self): | CODE |
| LOW⚡ | py/tests/test_experiment_compare.py | 348 | def test_string_env_ids_raises_type_error(self): | CODE |
| LOW⚡ | py/tests/test_experiment_compare.py | 353 | def test_non_string_env_id_raises_type_error(self): | CODE |
| LOW⚡ | py/tests/test_experiment_compare.py | 357 | def test_experiment_answers_to_the_env_it_is_stored_under(self): | CODE |
| LOW⚡ | py/tests/test_experiment_compare.py | 505 | def test_too_many_env_ids_is_refused_before_loading(self): | CODE |
| LOW⚡ | py/tests/test_experiment_compare.py | 514 | def test_a_full_search_page_can_be_compared(self): | CODE |
| LOW⚡ | py/tests/test_experiment_compare.py | 522 | def test_the_cap_itself_is_not_refused(self): | CODE |
| LOW⚡ | py/tests/test_experiment_compare.py | 657 | def test_compare_message_shape(self): | CODE |
| LOW⚡ | py/tests/test_experiment_compare.py | 665 | def test_tuple_env_ids_is_sent_as_a_list(self): | CODE |
| LOW⚡ | py/tests/test_experiment_compare.py | 670 | def test_client_rejects_bad_types(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 90 | def test_reports_shared_and_differing_params(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 104 | def test_echoes_compared_runs_in_order(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 112 | def test_field_missing_from_one_run_is_differing(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 125 | def test_metrics_compare_on_latest_value(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 146 | def test_bool_is_not_the_same_as_one(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 156 | def test_nan_agrees_with_itself(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 199 | def test_a_shared_field_is_one_group_of_everyone(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 213 | def test_a_run_missing_the_field_is_in_no_group(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 228 | def test_groups_do_not_merge_a_bool_with_one(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 244 | def test_groups_cluster_nan_together(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 256 | def test_groups_handle_unhashable_values(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 273 | def test_group_order_follows_the_compared_order(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 287 | def test_sections_are_independent(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 314 | def test_compare_reads_from_storage(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 368 | def test_cloned_env_compares_as_its_own_run(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 388 | def test_searching_then_comparing_the_matches(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 441 | def test_all_sections_are_present(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 450 | def test_groups_survive_the_json_round_trip(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 465 | def test_experiments_are_returned_in_full(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 552 | def test_unknown_keys_are_ignored(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 573 | def test_compare_sees_an_experiment_logged_over_http(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 613 | def test_fork_retargets_the_experiment_metadata(self): | CODE |
| LOW | py/tests/test_experiment_compare.py | 620 | def test_compare_keeps_a_fork_and_its_parent_apart(self): | CODE |
| LOW⚡ | py/tests/test_hparams_update.py | 74 | def test_new_query_replaces_selection_and_content(self): | CODE |
| LOW⚡ | py/tests/test_hparams_update.py | 84 | def test_update_mints_a_fresh_content_id(self): | CODE |
| LOW⚡ | py/tests/test_hparams_update.py | 91 | def test_bare_update_reruns_the_stored_selection(self): | CODE |
| LOW⚡ | py/tests/test_hparams_update.py | 101 | def test_update_reaches_disk_immediately(self): | CODE |
| LOW | py/tests/test_hparams_update.py | 112 | def test_window_keeps_its_id_and_position(self): | CODE |
| LOW | py/tests/test_hparams_update.py | 119 | def test_opts_absent_keeps_title(self): | CODE |
| LOW | py/tests/test_hparams_update.py | 154 | def test_selection_rules_match_create(self): | CODE |
| LOW⚡ | py/tests/test_experiment_search_paging.py | 66 | def test_every_offset_agrees_descending(self): | CODE |
| LOW⚡ | py/tests/test_experiment_search_paging.py | 75 | def test_every_offset_agrees_ascending(self): | CODE |
| LOW⚡ | py/tests/test_experiment_search_paging.py | 85 | def test_page_respects_the_query(self): | CODE |
| LOW⚡ | py/tests/test_experiment_search_paging.py | 97 | def test_limit_zero_counts_without_returning(self): | CODE |
| LOW⚡ | py/tests/test_experiment_search_paging.py | 103 | def test_limit_none_returns_everything(self): | CODE |
| LOW⚡ | py/tests/test_experiment_search_paging.py | 109 | def test_offset_past_the_end_is_empty(self): | CODE |
| 1902 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | setup.py | 23 | except Exception: | CODE |
| HIGH | py/visdom/__init__.py | 535 | except (ImportError, AttributeError): | CODE |
| HIGH | py/visdom/__init__.py | 926 | except Exception: | CODE |
| HIGH | py/visdom/__init__.py | 1185 | except Exception: | CODE |
| HIGH | py/visdom/__init__.py | 968 | except Exception: | CODE |
| HIGH | py/visdom/loggers/__init__.py | 17 | except ImportError: | CODE |
| HIGH | py/visdom/loggers/__init__.py | 24 | except ImportError: | CODE |
| HIGH | py/visdom/loggers/__init__.py | 31 | except ImportError: | CODE |
| HIGH | py/visdom/loggers/xgboost.py | 121 | except ImportError: | CODE |
| HIGH | py/visdom/loggers/xgboost.py | 133 | except ImportError: | CODE |
| HIGH | py/visdom/loggers/sklearn.py | 347 | except Exception: | CODE |
| HIGH | py/visdom/experiments/query.py | 424 | except ValueError: | CODE |
| HIGH | py/visdom/server/run_server.py | 259 | except (KeyboardInterrupt, asyncio.CancelledError): | CODE |
| HIGH | py/visdom/server/run_server.py | 164 | except (NotImplementedError, RuntimeError, ValueError): | CODE |
| HIGH | py/visdom/integrations/optuna.py | 348 | except ValueError: | CODE |
| HIGH | py/visdom/tracking/core.py | 230 | except Exception: | CODE |
| HIGH | py/visdom/tracking/core.py | 243 | except Exception: | CODE |
| HIGH | py/visdom/tracking/core.py | 129 | except Exception: | CODE |
| HIGH | py/visdom/tracking/core.py | 135 | except Exception: | CODE |
| HIGH | py/visdom/tracking/core.py | 571 | except Exception: | CODE |
| HIGH | py/visdom/tracking/core.py | 703 | except OSError: | CODE |
| HIGH | py/visdom/tracking/graphs.py | 242 | except RunAlreadyFinishedError: | CODE |
| HIGH | example/demo.py | 371 | except NameError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | example/manual/visual_check.py | 219 | # =========================================================== | COMMENT |
| MEDIUM⚡ | example/manual/visual_check.py | 221 | # =========================================================== | COMMENT |
| MEDIUM⚡ | example/manual/visual_check.py | 229 | # =========================================================== | COMMENT |
| MEDIUM⚡ | example/manual/visual_check.py | 231 | # =========================================================== | COMMENT |
| MEDIUM⚡ | example/manual/visual_check.py | 242 | # =========================================================== | COMMENT |
| MEDIUM⚡ | example/manual/visual_check.py | 244 | # =========================================================== | COMMENT |
| MEDIUM⚡ | example/manual/visual_check.py | 260 | # =========================================================== | COMMENT |
| MEDIUM⚡ | example/manual/visual_check.py | 262 | # =========================================================== | COMMENT |
| MEDIUM⚡ | example/manual/visual_check.py | 271 | # =========================================================== | COMMENT |
| MEDIUM⚡ | example/manual/visual_check.py | 273 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 43 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 45 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 59 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 61 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 75 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 77 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 93 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 95 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 113 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 115 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 126 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 128 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 139 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 141 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 154 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 156 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 170 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 172 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 183 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 185 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 202 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 204 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 291 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 293 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 309 | # =========================================================== | COMMENT |
| MEDIUM | example/manual/visual_check.py | 311 | # =========================================================== | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | py/tests/test_experiment_search_paging.py | 251 | """Inf orders fine in Python but persists as null, so it counts as absent.""" | STRING |
| HIGH⚡ | py/tests/unit/async_client.py | 1166 | connection.push(json.dumps({"target": "win", "index": index})) | CODE |
| HIGH⚡ | py/tests/unit/async_client.py | 1231 | connection.push(json.dumps({"target": "win"})) | CODE |
| HIGH⚡ | py/tests/unit/async_client.py | 1243 | connection.push(json.dumps({"target": "win"})) | CODE |
| HIGH⚡ | py/tests/unit/async_client.py | 1319 | connection.push(json.dumps({"target": "win"})) | CODE |
| HIGH | py/tests/unit/async_client.py | 1183 | connection.push(json.dumps({"target": "win"})) | CODE |
| HIGH | py/tests/unit/async_client.py | 1205 | connection.push(json.dumps({"target": "win"})) | CODE |
| HIGH | py/tests/unit/async_client.py | 1524 | connection.push(json.dumps({"target": "win"})) | CODE |
| HIGH | py/tests/unit/async_client.py | 1557 | connection.push(json.dumps({"target": "win"})) | CODE |
| HIGH | py/tests/unit/async_client.py | 1589 | connection.push(json.dumps({"target": "win"})) | CODE |
| HIGH | py/tests/unit/async_client.py | 1615 | connection.push(json.dumps({"target": "win"})) | CODE |
| HIGH⚡ | py/tests/unit/shared_utils.py | 113 | """dumps() emits JSON null, never the non-standard NaN/Infinity tokens.""" | STRING |
| HIGH⚡ | py/tests/integration/async_client_transport.py | 212 | await self.push({"target": "w1", "eid": "main", "event_type": "Click"}) | CODE |
| HIGH⚡ | py/tests/integration/async_client_transport.py | 224 | await self.push({"target": "w1", "eid": "main", "event_type": "Click"}) | CODE |
| HIGH | py/visdom/server/handlers/web_handlers.py | 1633 | {"status": "not_implemented", "detail": "...", "suggestion": null} | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | py/tests/test_hparams_update.py | 21 | CODE | |
| LOW | py/tests/testutils/__init__.py | 17 | CODE | |
| LOW | py/tests/testutils/__init__.py | 17 | CODE | |
| LOW | py/tests/testutils/__init__.py | 17 | CODE | |
| LOW | py/tests/testutils/__init__.py | 18 | CODE | |
| LOW | py/tests/testutils/__init__.py | 19 | CODE | |
| LOW | py/tests/testutils/__init__.py | 19 | CODE | |
| LOW | py/tests/testutils/__init__.py | 19 | CODE | |
| LOW | py/tests/testutils/__init__.py | 19 | CODE | |
| LOW | py/tests/testutils/__init__.py | 20 | CODE | |
| LOW | py/tests/testutils/__init__.py | 20 | CODE | |
| LOW | py/tests/testutils/__init__.py | 20 | CODE | |
| LOW | py/tests/testutils/__init__.py | 20 | CODE | |
| LOW | py/tests/testutils/__init__.py | 20 | CODE | |
| LOW | py/tests/testutils/__init__.py | 20 | CODE | |
| LOW | py/visdom/__init__.py | 9 | CODE | |
| LOW | py/visdom/loggers/__init__.py | 8 | CODE | |
| LOW | py/visdom/loggers/__init__.py | 9 | CODE | |
| LOW | py/visdom/loggers/__init__.py | 14 | CODE | |
| LOW | py/visdom/loggers/__init__.py | 21 | CODE | |
| LOW | py/visdom/loggers/__init__.py | 28 | CODE | |
| LOW | py/visdom/experiments/models.py | 23 | CODE | |
| LOW | py/visdom/experiments/query.py | 58 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 9 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 9 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 9 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 14 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 14 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 14 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 14 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 14 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 14 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 14 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 14 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 14 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 25 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 25 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 25 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 30 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 30 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 30 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 30 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 30 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 30 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 30 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 30 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 30 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 30 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 30 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 43 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 44 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 44 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 44 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 44 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 50 | CODE | |
| LOW | py/visdom/experiments/__init__.py | 50 | CODE | |
| LOW | py/visdom/experiments/compare.py | 22 | CODE | |
| LOW | py/visdom/server/app.py | 59 | CODE | |
| LOW | py/visdom/server/app.py | 59 | CODE | |
| LOW | py/visdom/server/handlers/web_handlers.py | 24 | CODE | |
| 31 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 23 | except Exception: | CODE |
| LOW | py/tests/conftest.py | 103 | except Exception as exc: | CODE |
| LOW | py/tests/integration/async_client_transport.py | 68 | except Exception: | CODE |
| LOW⚡ | py/tests/integration/autosave.py | 405 | except Exception as exc: # pragma: no cover - fails the test below | CODE |
| LOW | py/tests/integration/autosave.py | 92 | except Exception as exc: | CODE |
| MEDIUM | py/visdom/__init__.py | 1757 | print("Error connecting to Visdom server!") | CODE |
| LOW | py/visdom/__init__.py | 124 | except Exception: | CODE |
| LOW | py/visdom/__init__.py | 926 | except Exception: | CODE |
| LOW | py/visdom/__init__.py | 968 | except Exception: | CODE |
| LOW | py/visdom/__init__.py | 1029 | except Exception as e: | CODE |
| LOW | py/visdom/__init__.py | 1058 | except Exception as e: | CODE |
| LOW | py/visdom/__init__.py | 1129 | except Exception as e: | CODE |
| LOW | py/visdom/__init__.py | 1185 | except Exception: | CODE |
| LOW | py/visdom/pytorch.py | 89 | except Exception as e: | CODE |
| LOW | py/visdom/pytorch.py | 105 | except Exception as e: | CODE |
| LOW | py/visdom/pytorch.py | 134 | except Exception as e: | CODE |
| LOW | py/visdom/async_client.py | 451 | except Exception as e: | CODE |
| LOW | py/visdom/loggers/keras.py | 145 | except Exception as e: | CODE |
| LOW | py/visdom/loggers/keras.py | 199 | except Exception as e: | CODE |
| LOW | py/visdom/loggers/keras.py | 209 | except Exception as e: | CODE |
| LOW | py/visdom/loggers/keras.py | 220 | except Exception as e: | CODE |
| LOW | py/visdom/loggers/keras.py | 283 | except Exception as e: | CODE |
| LOW | py/visdom/loggers/lightning.py | 160 | except Exception as e: | CODE |
| LOW | py/visdom/loggers/lightning.py | 190 | except Exception as e: | CODE |
| LOW | py/visdom/loggers/lightning.py | 199 | except Exception as e: | CODE |
| MEDIUM | py/visdom/loggers/lightning.py | 196 | def finalize(self, status): | CODE |
| LOW | py/visdom/loggers/xgboost.py | 311 | except Exception as e: | CODE |
| LOW | py/visdom/loggers/xgboost.py | 332 | except Exception as e: | CODE |
| MEDIUM | py/visdom/loggers/xgboost.py | 269 | def after_iteration(self, model, epoch, evals_log): | CODE |
| LOW | py/visdom/loggers/sklearn.py | 141 | except Exception as e: | CODE |
| LOW | py/visdom/loggers/sklearn.py | 166 | except Exception as e: | CODE |
| LOW | py/visdom/loggers/sklearn.py | 307 | except Exception: | CODE |
| LOW | py/visdom/loggers/sklearn.py | 347 | except Exception: | CODE |
| LOW | py/visdom/experiments/live.py | 130 | except Exception: | CODE |
| LOW | py/visdom/experiments/live.py | 152 | except Exception: | CODE |
| LOW | py/visdom/experiments/live.py | 159 | except Exception: | CODE |
| LOW | py/visdom/server/server_state.py | 298 | except Exception: | CODE |
| LOW | py/visdom/server/server_state.py | 421 | except Exception: | CODE |
| LOW | py/visdom/server/handlers/web_handlers.py | 1081 | except Exception: | CODE |
| MEDIUM | py/visdom/server/handlers/web_handlers.py | 744 | def post(self): | CODE |
| LOW | py/visdom/server/handlers/base_handlers.py | 142 | except Exception as e: | CODE |
| LOW | py/visdom/utils/server_utils.py | 464 | except Exception: | CODE |
| MEDIUM | py/visdom/utils/server_utils.py | 461 | def _log_storage_failure(future): | CODE |
| LOW | py/visdom/integrations/optuna.py | 552 | except Exception as error: | CODE |
| LOW | py/visdom/integrations/optuna.py | 620 | except Exception as error: | CODE |
| LOW | py/visdom/tracking/core.py | 129 | except Exception: | CODE |
| LOW | py/visdom/tracking/core.py | 135 | except Exception: | CODE |
| LOW | py/visdom/tracking/core.py | 151 | except Exception as e: | CODE |
| LOW | py/visdom/tracking/core.py | 159 | except Exception: | CODE |
| LOW | py/visdom/tracking/core.py | 175 | except Exception: | CODE |
| LOW | py/visdom/tracking/core.py | 206 | except Exception: | CODE |
| LOW | py/visdom/tracking/core.py | 210 | except Exception: | CODE |
| LOW | py/visdom/tracking/core.py | 230 | except Exception: | CODE |
| LOW | py/visdom/tracking/core.py | 243 | except Exception: | CODE |
| LOW | py/visdom/tracking/core.py | 571 | except Exception: | CODE |
| LOW | py/visdom/tracking/core.py | 699 | except Exception: | CODE |
| MEDIUM | py/visdom/tracking/core.py | 172 | def _safe(key, fn): | CODE |
| LOW | py/visdom/tracking/graphs.py | 201 | except Exception as e: | CODE |
| LOW | py/visdom/tracking/graphs.py | 244 | except Exception as e: | CODE |
| MEDIUM | py/visdom/tracking/graphs.py | 198 | def wrapper(*args, **kwargs): | CODE |
| 3 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | py/tests/unit/refactoring_docs.py | 307 | CODE | |
| LOW | py/tests/unit/refactoring_docs.py | 340 | CODE | |
| LOW | py/visdom/__init__.py | 751 | CODE | |
| LOW | py/visdom/__init__.py | 948 | CODE | |
| LOW | py/visdom/__init__.py | 1036 | CODE | |
| LOW | py/visdom/__init__.py | 1065 | CODE | |
| LOW | py/visdom/__init__.py | 1162 | CODE | |
| LOW | py/visdom/__init__.py | 2196 | CODE | |
| LOW | py/visdom/__init__.py | 2326 | CODE | |
| LOW | py/visdom/__init__.py | 2827 | CODE | |
| LOW | py/visdom/__init__.py | 3527 | CODE | |
| LOW | py/visdom/__init__.py | 3995 | CODE | |
| LOW | py/visdom/__init__.py | 949 | CODE | |
| LOW | py/visdom/loggers/keras.py | 152 | CODE | |
| LOW | py/visdom/loggers/xgboost.py | 269 | CODE | |
| LOW | py/visdom/experiments/query.py | 148 | CODE | |
| LOW | py/visdom/server/build.py | 18 | CODE | |
| LOW | py/visdom/server/run_server.py | 277 | CODE | |
| LOW | py/visdom/server/handlers/web_handlers.py | 237 | CODE | |
| LOW | py/visdom/server/handlers/web_handlers.py | 1266 | CODE | |
| LOW | py/visdom/server/handlers/socket_handlers.py | 103 | CODE | |
| LOW | py/visdom/server/handlers/experiments_handler.py | 180 | CODE | |
| LOW | py/visdom/utils/server_utils.py | 508 | CODE | |
| LOW | py/visdom/utils/server_utils.py | 585 | CODE | |
| LOW | py/visdom/utils/server_utils.py | 672 | CODE | |
| LOW | py/visdom/utils/server_utils.py | 1109 | CODE | |
| LOW | py/visdom/integrations/optuna.py | 395 | CODE | |
| LOW | py/visdom/data_model/json_store.py | 234 | CODE | |
| LOW | example/train_example.py | 25 | CODE | |
| LOW | example/components/properties.py | 22 | CODE | |
| LOW | example/components/properties.py | 26 | CODE | |
| LOW | example/components/text.py | 12 | CODE | |
| LOW | example/components/text.py | 17 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyproject.toml | 1 | [build-system] | COMMENT |
| LOW | py/visdom/async_client.py | 81 | REQUEST_TIMEOUT = 20.0 | COMMENT |
| LOW | py/visdom/async_client.py | 101 | POLL_INTERVAL = 0.1 | COMMENT |
| LOW | py/visdom/async_client.py | 1001 | """Private -- use :meth:`create`.""" | COMMENT |
| LOW | py/visdom/async_client.py | 1061 | # need: gather more calls than the default pool has threads and every | COMMENT |
| LOW | py/visdom/extra_deps/__init__.py | 1 | # Copyright 2017-present, The Visdom Authors | COMMENT |
| LOW | py/visdom/server/server_state.py | 181 | # A single worker keeps the writes serialized, so two saves of the same | COMMENT |
| LOW | py/visdom/server/handlers/socket_handlers.py | 41 | save_env_off_loop, | COMMENT |
| LOW | py/visdom/server/handlers/experiments_handler.py | 321 | COMMENT | |
| LOW | py/visdom/server/handlers/experiments_handler.py | 341 | content = await ExperimentHparamsHandler._build_content_off_loop(handler, spec) | COMMENT |
| LOW | py/visdom/utils/server_utils.py | 781 | # than failing the whole comparison over a missing key. | COMMENT |
| LOW | .github/scripts/run_new_tests.sh | 1 | #!/usr/bin/env bash | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | py/tests/testutils/__init__.py | 29 | __all__ = [ | CODE |
| LOW | py/visdom/__init__.py | 129 | logger = logging.getLogger(__name__) | CODE |
| LOW | py/visdom/async_client.py | 74 | logger = logging.getLogger(__name__) | CODE |
| LOW | py/visdom/loggers/__init__.py | 11 | __all__ = ["VisdomLogger", "VisdomSklearnLogger"] | CODE |
| LOW | py/visdom/experiments/query.py | 73 | __all__ = [ | CODE |
| LOW | py/visdom/experiments/__init__.py | 55 | __all__ = [ | CODE |
| LOW | py/visdom/server/handlers/web_handlers.py | 78 | logger = logging.getLogger(__name__) | CODE |
| LOW | py/visdom/integrations/__init__.py | 13 | __all__ = ["OptunaCallback"] | CODE |
| LOW | py/visdom/data_model/__init__.py | 12 | __all__ = ["DataStore", "JSONStore"] | CODE |
| LOW | py/visdom/tracking/__init__.py | 21 | __all__ = [ | CODE |
| LOW | py/visdom/tracking/core.py | 415 | def set_param(self, key: str, value: Any) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | py/tests/testutils/fakes.py | 73 | CODE | |
| LOW | py/visdom/__init__.py | 771 | CODE | |
| LOW | py/visdom/__init__.py | 3085 | CODE | |
| LOW | py/visdom/__init__.py | 3214 | CODE | |
| LOW | py/visdom/__init__.py | 3303 | CODE | |
| LOW | py/visdom/__init__.py | 3527 | CODE | |
| LOW | py/visdom/server/app.py | 87 | CODE | |
| LOW | py/visdom/server/run_server.py | 76 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | example/manual/visual_check.py | 245 | # Create a gradient image | COMMENT |