Skip to content

feat: datascope v2.1 — clean, polish, and bridge#5

Merged
MsShawnP merged 8 commits into
mainfrom
claude/serene-visvesvaraya-de57ba
May 15, 2026
Merged

feat: datascope v2.1 — clean, polish, and bridge#5
MsShawnP merged 8 commits into
mainfrom
claude/serene-visvesvaraya-de57ba

Conversation

@MsShawnP

Copy link
Copy Markdown
Owner

Summary

Executes the first three moves from the project improvement audit (AUDIT.md):

  • Move 1 (CLEAN): Delete v1 monolith (scorer.py, 791 LOC), fix README clone URL, swap numpy→defusedxml, update sample docs and generator for v2
  • Move 2 (POLISH): Fix backtick/newline rendering in PDF templates, add page numbers and running headers, fix health assessment counts, regenerate sample outputs
  • Move 3 (BRIDGE): Promote FindingType sub-types to first-class enums (eliminate evidence-key sniffing), add --format json|pdf|both output, add --verbose/--quiet CLI flags, add SourceMetadata TypedDict, create CI workflow (pytest + ruff on Python 3.10-3.12), complete pyproject.toml metadata, set up PyPI publish workflow as datascope-dq

267 tests pass across all changes. Package builds successfully as datascope_dq-2.1.0-py3-none-any.whl.

Test plan

  • python -m pytest tests/ -q — 267 pass
  • datascope samples/input/sample_mixed_types.xlsx — PDF produced, no backtick literals, page numbers render
  • datascope samples/input/sample_mixed_types.xlsx --format json — valid JSON with all finding fields
  • datascope samples/input/sample_mixed_types.xlsx --quiet — no stdout, exit code reflects severity
  • python -m build — produces sdist + wheel as datascope-dq
  • CI workflow triggers on push

🤖 Generated with Claude Code

MsShawnP and others added 8 commits May 15, 2026 13:33
Delete scorer.py (791-line v1 monolith), v1 render tool, and all v1 sample
outputs. Fix README clone URL to point to datascope repo. Replace numpy with
defusedxml in dependencies. Update generate_sample.py and samples/README.md
for v2 CLI.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…nation

- Replace backtick-wrapped field names with single quotes in all finding
  templates so they render as plain text in PDF, not literal backtick chars
- Fix mixed-dates template: replace newline-joined list (ignored by reportlab
  Paragraphs) with semicolon-separated inline format
- Add page numbers and running header ("datascope diagnostic — {filename}")
  on all pages after the title page
- Include total finding counts in health assessment text for info-only and
  warning-only datasets
- Regenerate v2 sample output PDFs with all fixes applied

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Full four-phase audit: baseline assessment, internal review (architecture,
testing, performance, security, UX), competitive landscape scan (10 tools),
and synthesis with ranked next moves. PLAN.md decomposes improvements into
25 individually-testable sub-tasks across 4 moves.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace generic FORMAT_INCONSISTENCY and CARDINALITY_ANOMALY with specific
LEADING_ZEROS, MIXED_DATES, NEAR_CONSTANT, and DUPLICATE_IDS. This eliminates
evidence-key sniffing in severity.py and composer.py — adding a new finding
type now requires only an enum value, a template, and a severity rule, with
no hidden dispatch logic to discover.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add SourceMetadata TypedDict for typed loader metadata contracts
- Add --format json|pdf|both flag with structured JSON output
- Add --verbose (full tracebacks) and --quiet (exit-code-only) flags
- Add GitHub Actions CI: pytest + ruff across Python 3.10-3.12
- Complete pyproject.toml with authors, URLs, readme, bump to v2.1.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Set distribution name to datascope-dq (datascope taken on PyPI)
- Add GitHub Actions publish workflow (triggers on v* tags)
- Add pip install instructions to README
- Fix stale numpy reference in README requirements
- Remove deprecated license classifier (PEP 639)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@MsShawnP MsShawnP merged commit 47a1836 into main May 15, 2026
0 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant