# redup/duplication | 4 groups | 173f 30183L | 2026-03-25

SUMMARY:
  files_scanned: 173
  total_lines:   30183
  dup_groups:    4
  dup_fragments: 9
  saved_lines:   38
  scan_ms:       5707

DUPLICATES[4] (ranked by impact):
  [c673958185d9634a]   STRU  validate_credentials  L=8 N=3 saved=16 sim=1.00
      src/proxym/external/providers.py:124-131  (validate_credentials)
      src/proxym/external/providers.py:287-294  (validate_credentials)
      src/proxym/external/providers.py:477-484  (validate_credentials)
  [7b6715420dcc0c00]   STRU  cmd_sessions_list  L=10 N=2 saved=10 sim=1.00
      src/proxym/cli/utils/cmd_sessions_list.py:25-34  (cmd_sessions_list)
      src/proxym/cli/utils/cmd_sessions_list.py:37-46  (cmd_mcp_servers)
  [12f2644d089ce371]   STRU  shared_accounts  L=6 N=2 saved=6 sim=1.00
      src/proxym/dashboard/_shared.py:12-17  (shared_accounts)
      src/proxym/domain/setup.py:71-77  (get_event_store)
  [e04424c9f5b1d2e6]   STRU  shared_vms  L=6 N=2 saved=6 sim=1.00
      src/proxym/dashboard/_shared.py:20-25  (shared_vms)
      src/proxym/external/config.py:124-129  (get_config_manager)

REFACTOR[4] (ranked by priority):
  [1] ○ extract_function   → src/proxym/external/utils/validate_credentials.py
      WHY: 3 occurrences of 8-line block across 1 files — saves 16 lines
      FILES: src/proxym/external/providers.py
  [2] ○ extract_function   → src/proxym/cli/utils/utils/cmd_sessions_list.py
      WHY: 2 occurrences of 10-line block across 1 files — saves 10 lines
      FILES: src/proxym/cli/utils/cmd_sessions_list.py
  [3] ○ extract_function   → src/proxym/utils/shared_accounts.py
      WHY: 2 occurrences of 6-line block across 2 files — saves 6 lines
      FILES: src/proxym/dashboard/_shared.py, src/proxym/domain/setup.py
  [4] ○ extract_function   → src/proxym/utils/shared_vms.py
      WHY: 2 occurrences of 6-line block across 2 files — saves 6 lines
      FILES: src/proxym/dashboard/_shared.py, src/proxym/external/config.py

METRICS-TARGET:
  dup_groups:  4 → 0
  saved_lines: 38 lines recoverable
