4 views
handsomestWei/patent-disclosure-skill
中国专利.skill:专利点挖掘与交底书(发明/实用/外观)编写,通俗解读专利,嗅探政策动向,辅助审查答复。
Python★ 6,848+501 that day#10 on trending
3.93%duplicated code · 1,057 of 26,924 lines
91clones in code
81code files of 257 scanned
3.09%duplicated over all files · 109 clones
The code number leaves out tests, fixtures, docs, examples, data files, styles, translations and vendored code.
Largest clones in the code
- 6 lines in 11 placespython56 tokenstools/patent_reader/analyze/build_claim_mermaid.py:29–34tools/patent_reader/analyze/build_context_anchor.py:170–175tools/patent_reader/analyze/lint_patent_note.py:63–68tools/patent_reader/analyze/validate_claim_tree.py:33–38tools/patent_reader/extract/extract_patent_figures.py:35–40and 6 more
29def main(argv: list[str] | None = None) -> int: 30 if hasattr(sys.stdout, "reconfigure"): 31 sys.stdout.reconfigure(encoding="utf-8", errors="replace") 32 33 ap = argparse.ArgumentParser(description=__doc__) 34 ap.add_argument("--claim-tree", required=True, type=Path)170def main(argv: list[str] | None = None) -> int: 171 if hasattr(sys.stdout, "reconfigure"): 172 sys.stdout.reconfigure(encoding="utf-8", errors="replace") 173 174 ap = argparse.ArgumentParser(description=__doc__) 175 ap.add_argument("-w", "--workdir", required=True, type=Path, help="extract 产出目录") - 14 lines in 7 placespython61 tokenstools/patent_reader/analyze/build_claim_mermaid.py:7–20tools/patent_reader/analyze/build_context_anchor.py:11–24tools/patent_reader/analyze/lint_patent_note.py:9–22tools/patent_reader/extract/extract_patent_text.py:17–30tools/patent_reader/vault/build_patent_canvas.py:13–26and 2 more
7""" 8from __future__ import annotations 9 10# Ensure tools/patent_reader is importable when run as a script. 11from pathlib import Path as _Path 12import sys as _sys 13 14_PR_ROOT = _Path(__file__).resolve().parents[1] 15if str(_PR_ROOT) not in _sys.path: 16 _sys.path.insert(0, str(_PR_ROOT))First 10 of 14 lines.
- 18 lines in 5 placespython69 tokenstools/patent_reader/analyze/build_claim_mermaid.py:7–24tools/patent_reader/analyze/validate_claim_tree.py:11–28tools/patent_reader/extract/extract_patent_figures.py:13–30tools/patent_reader/vault/link_patent_notes.py:17–34tools/patent_reader/vault/setup_obsidian_vault.py:8–25
7""" 8from __future__ import annotations 9 10# Ensure tools/patent_reader is importable when run as a script. 11from pathlib import Path as _Path 12import sys as _sys 13 14_PR_ROOT = _Path(__file__).resolve().parents[1] 15if str(_PR_ROOT) not in _sys.path: 16 _sys.path.insert(0, str(_PR_ROOT))First 10 of 18 lines.
7 more
- 39 lines in 2 placespython240 tokens
- 26 lines in 2 placespython226 tokens
- 45 lines in 2 placespython223 tokens
- 15 lines in 4 placespython64 tokens
- 6 lines in 4 placespython57 tokens
- 9 lines in 3 placespython69 tokens
- 12 lines in 2 placespython128 tokens
Largest clones over all files, tests and data included
- 6 lines in 11 placespython56 tokenstools/patent_reader/analyze/build_claim_mermaid.py:29–34tools/patent_reader/analyze/build_context_anchor.py:170–175tools/patent_reader/analyze/lint_patent_note.py:63–68tools/patent_reader/analyze/validate_claim_tree.py:33–38tools/patent_reader/extract/extract_patent_figures.py:35–40and 6 more
29def main(argv: list[str] | None = None) -> int: 30 if hasattr(sys.stdout, "reconfigure"): 31 sys.stdout.reconfigure(encoding="utf-8", errors="replace") 32 33 ap = argparse.ArgumentParser(description=__doc__) 34 ap.add_argument("--claim-tree", required=True, type=Path)170def main(argv: list[str] | None = None) -> int: 171 if hasattr(sys.stdout, "reconfigure"): 172 sys.stdout.reconfigure(encoding="utf-8", errors="replace") 173 174 ap = argparse.ArgumentParser(description=__doc__) 175 ap.add_argument("-w", "--workdir", required=True, type=Path, help="extract 产出目录") - 14 lines in 7 placespython61 tokenstools/patent_reader/analyze/build_claim_mermaid.py:7–20tools/patent_reader/analyze/build_context_anchor.py:11–24tools/patent_reader/analyze/lint_patent_note.py:9–22tools/patent_reader/extract/extract_patent_text.py:17–30tools/patent_reader/vault/build_patent_canvas.py:13–26and 2 more
7""" 8from __future__ import annotations 9 10# Ensure tools/patent_reader is importable when run as a script. 11from pathlib import Path as _Path 12import sys as _sys 13 14_PR_ROOT = _Path(__file__).resolve().parents[1] 15if str(_PR_ROOT) not in _sys.path: 16 _sys.path.insert(0, str(_PR_ROOT))First 10 of 14 lines.
- 18 lines in 5 placespython69 tokenstools/patent_reader/analyze/build_claim_mermaid.py:7–24tools/patent_reader/analyze/validate_claim_tree.py:11–28tools/patent_reader/extract/extract_patent_figures.py:13–30tools/patent_reader/vault/link_patent_notes.py:17–34tools/patent_reader/vault/setup_obsidian_vault.py:8–25
7""" 8from __future__ import annotations 9 10# Ensure tools/patent_reader is importable when run as a script. 11from pathlib import Path as _Path 12import sys as _sys 13 14_PR_ROOT = _Path(__file__).resolve().parents[1] 15if str(_PR_ROOT) not in _sys.path: 16 _sys.path.insert(0, str(_PR_ROOT))First 10 of 18 lines.
- 39 lines in 2 placespython240 tokens
- 26 lines in 2 placespython226 tokens
By format, code only
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| python | 71 | 26,106 | 91 | 1,057 | 4.05% |
| bash | 9 | 644 | 0 | 0 | 0% |
| perl | 1 | 174 | 0 | 0 | 0% |
By format, all files
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| python | 104 | 31,480 | 107 | 1,231 | 3.91% |
| markdown | 73 | 5,968 | 2 | 28 | 0.47% |
| yaml | 30 | 1,692 | 0 | 0 | 0% |
| bash | 23 | 926 | 0 | 0 | 0% |
| perl | 1 | 174 | 0 | 0 | 0% |
| text | 13 | 129 | 0 | 0 | 0% |
| go | 4 | 112 | 0 | 0 | 0% |
| json | 2 | 86 | 0 | 0 | 0% |
| css | 1 | 69 | 0 | 0 | 0% |
| txt | 3 | 45 | 0 | 0 | 0% |
Trending appearances
| Day | Rank | Stars | Files | Lines | Clones | All files | Code | Health | Commit |
|---|---|---|---|---|---|---|---|---|---|
| Sep 2, 2026 | #10 | 6,848 (+501) | 257 | 40,732 | 109 | 3.09% | 3.93% | — | fd8cd0b |
| Sep 1, 2026 | #11 | 6,584 (+571) | 257 | 40,732 | 109 | 3.09% | 3.93% | — | fd8cd0b |
Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.