maketool 0.8.15__py3-none-any.whl → 0.8.17__py3-none-any.whl

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.
maketool/refscan.py CHANGED
@@ -7,6 +7,7 @@ Usage:
7
7
 
8
8
  Reports:
9
9
  1) UNUSED files: filename/path tokens not found in scanned text sources
10
+ - Grouped by extension, with .py printed last and a blank line before the .py group
10
11
  2) MISSING imports: imports used by entry (and local-resolved siblings) but not installed
11
12
  """
12
13
 
@@ -23,6 +24,7 @@ try:
23
24
  except Exception:
24
25
  packages_distributions = None # type: ignore
25
26
 
27
+
26
28
  # ----------------------------
27
29
  # Refscan settings
28
30
  # ----------------------------
@@ -80,6 +82,7 @@ def safe_read_text(p: Path) -> Optional[str]:
80
82
  except Exception:
81
83
  return None
82
84
 
85
+
83
86
  def norm(s: str) -> str:
84
87
  return s.replace("\\", "/").lower()
85
88
 
@@ -109,36 +112,33 @@ def is_text_source(p: Path) -> bool:
109
112
  return ext in DEFAULT_SCAN_EXTS
110
113
 
111
114
 
112
- def print_group(title: str, rows: list[tuple[str, list[str]]]) -> None:
113
- print(title)
114
- print("-" * len(title))
115
- for rel, refs in rows:
116
- is_py = rel.lower().endswith(".py")
117
- name = f"[PY] {rel}" if is_py else rel
115
+ def print_unused_grouped(unused_rels: list[str]) -> None:
116
+ """
117
+ Print unused files grouped by extension, with .py printed last and a blank
118
+ line inserted before the .py group.
119
+ """
120
+ def sort_key(rel: str):
121
+ ext = Path(rel).suffix.lower()
122
+ is_py = (ext == ".py")
123
+ return (is_py, ext, rel.lower())
124
+
125
+ unused_sorted = sorted(unused_rels, key=sort_key)
118
126
 
119
- if refs:
120
- preview = ", ".join(refs[:3]) + (" ..." if len(refs) > 3 else "")
121
- print(f"{name} <-- {preview}")
122
- else:
123
- print(name)
124
- print()
127
+ print("UNUSED files (no filename/path tokens found)")
128
+ print("--------------------------------------------")
125
129
 
130
+ printed_py_gap = False
131
+ for rel in unused_sorted:
132
+ if Path(rel).suffix.lower() == ".py" and not printed_py_gap:
133
+ print() # blank line before first .py file
134
+ printed_py_gap = True
135
+ print(rel)
126
136
 
127
- def print_group(title: str, rows: list[tuple[str, list[str]]]) -> None:
128
- print(title)
129
- print("-" * len(title))
130
- for rel, refs in rows:
131
- # no markers; print plain filename/path
132
- if refs:
133
- preview = ", ".join(refs[:3]) + (" ..." if len(refs) > 3 else "")
134
- print(f"{rel} <-- {preview}")
135
- else:
136
- print(rel)
137
137
  print()
138
138
 
139
139
 
140
140
  # ----------------------------
141
- # Missing-import report (merged from report.py)
141
+ # Missing-import report
142
142
  # ----------------------------
143
143
 
144
144
  def stdlib_names() -> Set[str]:
@@ -222,7 +222,6 @@ def _index_local_modules_under(root: Path) -> Set[str]:
222
222
  def index_local_modules(project_root: Path) -> Set[str]:
223
223
  roots: List[Path] = [project_root]
224
224
 
225
- # common extra roots (optional)
226
225
  for name in ["src", "lib", "app", "python", "package", "packages"]:
227
226
  p = project_root / name
228
227
  if p.exists() and p.is_dir():
@@ -278,14 +277,6 @@ def compute_missing_used_imports(
278
277
  missing.add(name)
279
278
  return missing
280
279
 
281
- def print_unused_grouped_by_ext(unused_rels: list[str]) -> None:
282
- # Sort by: extension (lower), then full path (lower)
283
- def key(rel: str):
284
- ext = Path(rel).suffix.lower()
285
- return (ext, rel.lower())
286
-
287
- for rel in sorted(unused_rels, key=key):
288
- print(rel)
289
280
 
290
281
  def run_missing_imports_report(entry: Path, project_root: Path) -> None:
291
282
  print("MISSING (used but not installed):")
@@ -308,7 +299,8 @@ def run_missing_imports_report(entry: Path, project_root: Path) -> None:
308
299
  project_root=project_root,
309
300
  )
310
301
 
311
- if not missing: return
302
+ if not missing:
303
+ return
312
304
 
313
305
  for m in sorted(missing):
314
306
  print(m)
@@ -353,15 +345,9 @@ def main() -> int:
353
345
  if any(tok in hay for tok in c.tokens):
354
346
  references[c.rel].append(src_rel)
355
347
 
356
- unused_rows: list[tuple[str, List[str]]] = []
357
- for c in candidates:
358
- refs = references[c.rel]
359
- if not refs:
360
- unused_rows.append((c.rel, refs))
361
-
362
- print_group("UNUSED files (no filename/path tokens found)", unused_rows)
348
+ unused_rels = [c.rel for c in candidates if not references[c.rel]]
349
+ print_unused_grouped(unused_rels)
363
350
 
364
- # Second report: missing imports (based on entry .py)
365
351
  if entry.suffix.lower() == ".py":
366
352
  run_missing_imports_report(entry=entry, project_root=root)
367
353
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: maketool
3
- Version: 0.8.15
3
+ Version: 0.8.17
4
4
  Summary: Python Automation tool for building PySide6 UI and PyInstaller EXE.
5
5
  Author-email: Alan Lilly <panofish@gmail.com>
6
6
  Requires-Python: >=3.7
@@ -2,11 +2,11 @@ maketool/__init__.py,sha256=in3uaJRClTGaMIQ6sg725m8so86U7gBr1QfCErxuLAk,172
2
2
  maketool/build.py,sha256=-x45Nq-FZyemyAmh1gZlZ0c_JcSUePsbViLCeZezb4o,3921
3
3
  maketool/clean.py,sha256=pJYb-kt23_HaOrckv8Kft09HKl9m4_Lt1Tf15HQCmvE,3245
4
4
  maketool/compile.py,sha256=n1mzoyU5hlOjHVn2ytCsZVEvN6hta8-VHyR25UGc1CQ,14496
5
- maketool/refscan.py,sha256=gym_Cdatvz63KOAvOLm6V1ksC42cnuFKsRSqXv5JoJI,10470
5
+ maketool/refscan.py,sha256=wzwcyBVTOw7cfXbu-JDIGO0U-E-BR4Ij1v3nJucnTRM,9969
6
6
  maketool/run.py,sha256=UO6O7IaSl8XBqPEsC0CaTt65Or0m3_wQFvWZUnY4J00,2399
7
7
  maketool/sublime.py,sha256=Ah_Y3tT7ifpUh_pGugY7hqM4SQ0UE-OPLam2hZZtar0,9116
8
- maketool-0.8.15.dist-info/METADATA,sha256=CkSjPtk7JBS4jQhy1ZQX-alAznM4sOmDIZwcK-A4z90,4845
9
- maketool-0.8.15.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
10
- maketool-0.8.15.dist-info/entry_points.txt,sha256=hYswW0t7b9YacCLg0-4zAI1CKKjeOH1LJfi34Z8lAPc,248
11
- maketool-0.8.15.dist-info/top_level.txt,sha256=e7JbT3AdVc2AJstJ1xW1hcwhwfFQ6U8QRdFzaFQe6sQ,9
12
- maketool-0.8.15.dist-info/RECORD,,
8
+ maketool-0.8.17.dist-info/METADATA,sha256=eu24QMYm8o7u6RpYjfMt3H2qxu1JyiLL4u2AWjVHFx8,4845
9
+ maketool-0.8.17.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
10
+ maketool-0.8.17.dist-info/entry_points.txt,sha256=hYswW0t7b9YacCLg0-4zAI1CKKjeOH1LJfi34Z8lAPc,248
11
+ maketool-0.8.17.dist-info/top_level.txt,sha256=e7JbT3AdVc2AJstJ1xW1hcwhwfFQ6U8QRdFzaFQe6sQ,9
12
+ maketool-0.8.17.dist-info/RECORD,,