feat: datascope v2.1 — clean, polish, and bridge#5
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Executes the first three moves from the project improvement audit (AUDIT.md):
--format json|pdf|bothoutput, add--verbose/--quietCLI flags, add SourceMetadata TypedDict, create CI workflow (pytest + ruff on Python 3.10-3.12), complete pyproject.toml metadata, set up PyPI publish workflow asdatascope-dq267 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 passdatascope samples/input/sample_mixed_types.xlsx— PDF produced, no backtick literals, page numbers renderdatascope samples/input/sample_mixed_types.xlsx --format json— valid JSON with all finding fieldsdatascope samples/input/sample_mixed_types.xlsx --quiet— no stdout, exit code reflects severitypython -m build— produces sdist + wheel as datascope-dq🤖 Generated with Claude Code