MCPcopy Create free account
hub / github.com/RASAAS/docmcp-knowledge / main

Function main

scripts/parse_exemption_to_json.py:165–220  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

163
164
165def main():
166 dry_run = "--dry-run" in sys.argv
167 diff_only = "--diff" in sys.argv
168
169 if not SRC_PATH.exists():
170 print(f"Source not found: {SRC_PATH}")
171 sys.exit(1)
172
173 text = SRC_PATH.read_text(encoding="utf-8")
174 entries = parse_table(text)
175
176 from collections import Counter
177 scopes = Counter(e["scope"] for e in entries)
178 classes = Counter(e["device_class"] for e in entries)
179
180 print(f"Parsed {len(entries)} exemption entries")
181 print(f" By scope: {dict(scopes)}")
182 print(f" By class: {dict(classes)}")
183
184 l1_entries = [e for e in entries if e["scope"] == "l1"]
185 print(f"\nL1-level exemptions ({len(l1_entries)}):")
186 for e in l1_entries:
187 print(f" {e['classification_code']} {e['product_name'][:40]} [{e['device_class']}]")
188
189 if diff_only:
190 old = _load_existing_entries()
191 d = _diff_entries(old, entries)
192 print(f"\n[diff] old={len(old)} new={len(entries)}")
193 print(f" added={d['added_count']} removed={d['removed_count']} changed={d['changed_count']}")
194 if d["added"]:
195 print(f" added (first 15):")
196 for k in d["added"]:
197 print(f" {k}")
198 if d["removed"]:
199 print(f" removed (first 15):")
200 for k in d["removed"]:
201 print(f" {k}")
202 return
203
204 if dry_run:
205 print("\n[DRY RUN] First 5 L3 entries:")
206 l3 = [e for e in entries if e["scope"] == "l3"]
207 for e in l3[:5]:
208 print(f" {e['classification_code']} {e['product_name'][:40]} [{e['device_class']}]")
209 else:
210 out = {
211 "version": "2025",
212 "source": "NMPA 2025 Clinical Evaluation Exemption List",
213 "effective_date": "2025-05-15",
214 "total_entries": len(entries),
215 "entries": entries,
216 }
217 OUT_PATH.parent.mkdir(parents=True, exist_ok=True)
218 with open(OUT_PATH, "w", encoding="utf-8") as f:
219 json.dump(out, f, ensure_ascii=False, indent=2)
220 print(f"\nWrote {OUT_PATH}")
221
222

Callers 1

Calls 3

parse_tableFunction · 0.85
_load_existing_entriesFunction · 0.85
_diff_entriesFunction · 0.85

Tested by

no test coverage detected