echr-py 0.2.1__tar.gz → 0.2.2__tar.gz
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.
- {echr_py-0.2.1 → echr_py-0.2.2}/CITATION.cff +1 -1
- {echr_py-0.2.1/echr_py.egg-info → echr_py-0.2.2}/PKG-INFO +27 -42
- {echr_py-0.2.1 → echr_py-0.2.2}/README.md +26 -41
- {echr_py-0.2.1 → echr_py-0.2.2/echr_py.egg-info}/PKG-INFO +27 -42
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/__init__.py +1 -1
- {echr_py-0.2.1 → echr_py-0.2.2}/pyproject.toml +1 -1
- {echr_py-0.2.1 → echr_py-0.2.2}/LICENSE +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/MANIFEST.in +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/RIGHTS.md +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/SECURITY.md +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/echr_py.egg-info/SOURCES.txt +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/echr_py.egg-info/dependency_links.txt +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/echr_py.egg-info/entry_points.txt +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/echr_py.egg-info/requires.txt +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/echr_py.egg-info/top_level.txt +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/_aio.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/_sync.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/bilingual/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/bilingual/bundle.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/bilingual/corpus.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/bilingual/ecli.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/bilingual/reconcile.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/bilingual/rescue.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/cache/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/cache/store.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/citations/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/citations/artifacts.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/citations/authority.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/citations/benchmarks.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/citations/catalog.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/citations/extractor.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/citations/graph.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/citations/metrics.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/citations/models.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/citations/occurrences.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/citations/paragraphs.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/citations/reporter.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/citations/resolver.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/cli.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/config.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/data/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/data/citation_authority.csv +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/data/citation_authority.json +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/data/citation_authority_eng.csv +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/data/citation_authority_eng.json +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/data/citation_authority_supplements.json +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/data/historical_citation_catalog.json +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/data/kpthesaurus_eng.json +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/execution/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/execution/_sync.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/execution/aio.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/execution/bridge.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/execution/client.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/execution/collections.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/execution/downloader.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/execution/imports.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/execution/queries.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/execution/raw_download.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/execution/related_scraper.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/execution/textract.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/extractors/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/extractors/base.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/graphs/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/graphs/adapters.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/graphs/assets/LICENSE-D3.txt +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/graphs/assets/d3.v7.min.js +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/graphs/export.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/graphs/models.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/graphs/template.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/gui/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/gui/app.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/llm/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/llm/base.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/llm/batch.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/llm/client.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/llm/providers.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/local/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/local/browse.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/local/codebook.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/local/export.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/local/paragraphs.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/local/registry.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/local/search.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/main/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/main/client.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/main/downloader.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/main/dsl.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/main/queries.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/main/url.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/mcp/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/mcp/__main__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/mcp/install.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/mcp/server.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/models/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/models/case.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/models/citation.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/models/common.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/models/document.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/models/exec_case.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/models/exec_document.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/models/version.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/pipeline/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/pipeline/runner.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/pipeline/validation.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/retrieval/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/retrieval/benchmark.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/retrieval/embeddings.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/retrieval/hybrid.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/retrieval/providers.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/studies/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/studies/batch.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/studies/hooks.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/studies/jobs.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/studies/models.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/studies/runner.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/studies/schemas/citation-use-minimal.json +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/studies/schemas/citation-use-multiaxial.json +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/studies/spec.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/studies/taxonomies.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/text/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/text/composition.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/text/conversion.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/text/dispositive.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/text/judges.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/text/opinions.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/text/segmentation.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/text/spine.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/thesaurus.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/utils/__init__.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/utils/downloads.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/utils/jsonl.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/utils/retry.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/utils/runlog.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/hudoc_py/versions.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/release-requirements.txt +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/scripts/check_sdist.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/scripts/check_wheel.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/scripts/public_package_files.txt +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/scripts/public_payload_hashes.json +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/scripts/verify_release.py +0 -0
- {echr_py-0.2.1 → echr_py-0.2.2}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: echr-py
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: Pythonic acquisition of HUDOC and HUDOC-EXEC metadata and source documents for ECtHR research.
|
|
5
5
|
Author-email: Niccolo Ridi <niccoloridi@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -102,7 +102,7 @@ Dynamic: license-file
|
|
|
102
102
|
<a href="https://github.com/niccoloridi/echr-py/actions/workflows/ci.yml"><img src="https://github.com/niccoloridi/echr-py/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
103
103
|
<img src="https://img.shields.io/badge/python-3.11%E2%80%933.14-3776AB.svg" alt="Python 3.11–3.14">
|
|
104
104
|
<a href="https://github.com/niccoloridi/echr-py/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="MIT license"></a>
|
|
105
|
-
<img src="https://img.shields.io/badge/version-0.2.
|
|
105
|
+
<img src="https://img.shields.io/badge/version-0.2.2-blue.svg" alt="Version 0.2.2">
|
|
106
106
|
</p>
|
|
107
107
|
|
|
108
108
|
`echr-py` is a research engineering toolkit for the case law of the European
|
|
@@ -495,7 +495,7 @@ without cloning the repository:
|
|
|
495
495
|
|
|
496
496
|
```bash
|
|
497
497
|
claude mcp add --scope user --transport stdio echr-py -- \
|
|
498
|
-
"$(command -v uvx)" --from 'echr-py[mcp]==0.2.
|
|
498
|
+
"$(command -v uvx)" --from 'echr-py[mcp]==0.2.2' echr-py mcp
|
|
499
499
|
claude mcp get echr-py
|
|
500
500
|
```
|
|
501
501
|
|
|
@@ -578,48 +578,33 @@ and graphs without mutating external state. Study jobs require an explicit
|
|
|
578
578
|
`--enable-jobs` launch configuration with permitted roots, provider and hook
|
|
579
579
|
allowlists, pricing, and per-job budgets.
|
|
580
580
|
|
|
581
|
-
##
|
|
581
|
+
## See also
|
|
582
582
|
|
|
583
|
-
|
|
584
|
-
projects:
|
|
583
|
+
Other projects working on ECtHR material:
|
|
585
584
|
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
they are not an exhaustive citation inventory or a target-paragraph graph. The
|
|
602
|
-
annotation frame deliberately omits submissions, general-principles material,
|
|
603
|
-
facts, procedure, operative text, appendices, individual opinions, and
|
|
604
|
-
footnotes. A full `echr-py` run can therefore return citation occurrences from
|
|
605
|
-
sections and components outside that annotation frame.
|
|
606
|
-
|
|
607
|
-
In the frozen 115-document comparison, `echr-py` aligned 5,319 of 5,425
|
|
608
|
-
selected ECHR annotations one-to-one (98.0%): 5,316 by strict source-span
|
|
609
|
-
overlap and three by uniquely normalized context, with 86 ambiguous and 20
|
|
610
|
-
unmatched annotations. These figures measure recovery of the selected
|
|
585
|
+
- [HUDOC Researcher](https://doi.org/10.5281/zenodo.21319704)
|
|
586
|
+
- [`echr-extractor`](https://pypi.org/project/echr-extractor/)
|
|
587
|
+
- [ECHR Open Data](https://echr-opendata.eu/)
|
|
588
|
+
- [Mumford et al.](https://doi.org/10.3233/FAIA251584)
|
|
589
|
+
- [ECtHR-PCR](https://github.com/TUMLegalTech/ECHR-PCR)
|
|
590
|
+
|
|
591
|
+
## Benchmark
|
|
592
|
+
|
|
593
|
+
`echr-py` is compared against the curated Mumford annotation set. Those
|
|
594
|
+
annotations are useful for studying selected citation treatments; they are not
|
|
595
|
+
an exhaustive citation inventory or a target-paragraph graph. The annotation
|
|
596
|
+
frame deliberately omits submissions, general-principles material, facts,
|
|
597
|
+
procedure, operative text, appendices, individual opinions, and footnotes, so a
|
|
598
|
+
full `echr-py` run can return citation occurrences from sections and components
|
|
599
|
+
outside that frame. Any recovery figure measures recovery of those selected
|
|
611
600
|
annotations, not detector precision or completeness over the judgments.
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
importer and methodological comparison remain available for researchers who
|
|
620
|
-
need them, but benchmark mechanics belong in the
|
|
621
|
-
[methodology audit](https://github.com/niccoloridi/echr-py/blob/main/docs/mumford-methodology-audit.md), not on the project
|
|
622
|
-
homepage.
|
|
601
|
+
|
|
602
|
+
The importer and the methodological comparison remain available for researchers
|
|
603
|
+
who need them, and the measured figures, denominators, hashes and reproduction
|
|
604
|
+
records are kept in the
|
|
605
|
+
[methodology audit](https://github.com/niccoloridi/echr-py/blob/main/docs/mumford-methodology-audit.md)
|
|
606
|
+
and the frozen [benchmark manifest](https://github.com/niccoloridi/echr-py/blob/main/docs/benchmarks/mumford-full-inclusive-audit.json),
|
|
607
|
+
where they can carry their conditions, rather than on the project homepage.
|
|
623
608
|
|
|
624
609
|
The evidence and dates behind external comparisons are maintained in the
|
|
625
610
|
[claim audit](https://github.com/niccoloridi/echr-py/blob/main/docs/claim-audit.md).
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<a href="https://github.com/niccoloridi/echr-py/actions/workflows/ci.yml"><img src="https://github.com/niccoloridi/echr-py/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
15
15
|
<img src="https://img.shields.io/badge/python-3.11%E2%80%933.14-3776AB.svg" alt="Python 3.11–3.14">
|
|
16
16
|
<a href="https://github.com/niccoloridi/echr-py/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="MIT license"></a>
|
|
17
|
-
<img src="https://img.shields.io/badge/version-0.2.
|
|
17
|
+
<img src="https://img.shields.io/badge/version-0.2.2-blue.svg" alt="Version 0.2.2">
|
|
18
18
|
</p>
|
|
19
19
|
|
|
20
20
|
`echr-py` is a research engineering toolkit for the case law of the European
|
|
@@ -407,7 +407,7 @@ without cloning the repository:
|
|
|
407
407
|
|
|
408
408
|
```bash
|
|
409
409
|
claude mcp add --scope user --transport stdio echr-py -- \
|
|
410
|
-
"$(command -v uvx)" --from 'echr-py[mcp]==0.2.
|
|
410
|
+
"$(command -v uvx)" --from 'echr-py[mcp]==0.2.2' echr-py mcp
|
|
411
411
|
claude mcp get echr-py
|
|
412
412
|
```
|
|
413
413
|
|
|
@@ -490,48 +490,33 @@ and graphs without mutating external state. Study jobs require an explicit
|
|
|
490
490
|
`--enable-jobs` launch configuration with permitted roots, provider and hook
|
|
491
491
|
allowlists, pricing, and per-job budgets.
|
|
492
492
|
|
|
493
|
-
##
|
|
493
|
+
## See also
|
|
494
494
|
|
|
495
|
-
|
|
496
|
-
projects:
|
|
495
|
+
Other projects working on ECtHR material:
|
|
497
496
|
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
they are not an exhaustive citation inventory or a target-paragraph graph. The
|
|
514
|
-
annotation frame deliberately omits submissions, general-principles material,
|
|
515
|
-
facts, procedure, operative text, appendices, individual opinions, and
|
|
516
|
-
footnotes. A full `echr-py` run can therefore return citation occurrences from
|
|
517
|
-
sections and components outside that annotation frame.
|
|
518
|
-
|
|
519
|
-
In the frozen 115-document comparison, `echr-py` aligned 5,319 of 5,425
|
|
520
|
-
selected ECHR annotations one-to-one (98.0%): 5,316 by strict source-span
|
|
521
|
-
overlap and three by uniquely normalized context, with 86 ambiguous and 20
|
|
522
|
-
unmatched annotations. These figures measure recovery of the selected
|
|
497
|
+
- [HUDOC Researcher](https://doi.org/10.5281/zenodo.21319704)
|
|
498
|
+
- [`echr-extractor`](https://pypi.org/project/echr-extractor/)
|
|
499
|
+
- [ECHR Open Data](https://echr-opendata.eu/)
|
|
500
|
+
- [Mumford et al.](https://doi.org/10.3233/FAIA251584)
|
|
501
|
+
- [ECtHR-PCR](https://github.com/TUMLegalTech/ECHR-PCR)
|
|
502
|
+
|
|
503
|
+
## Benchmark
|
|
504
|
+
|
|
505
|
+
`echr-py` is compared against the curated Mumford annotation set. Those
|
|
506
|
+
annotations are useful for studying selected citation treatments; they are not
|
|
507
|
+
an exhaustive citation inventory or a target-paragraph graph. The annotation
|
|
508
|
+
frame deliberately omits submissions, general-principles material, facts,
|
|
509
|
+
procedure, operative text, appendices, individual opinions, and footnotes, so a
|
|
510
|
+
full `echr-py` run can return citation occurrences from sections and components
|
|
511
|
+
outside that frame. Any recovery figure measures recovery of those selected
|
|
523
512
|
annotations, not detector precision or completeness over the judgments.
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
importer and methodological comparison remain available for researchers who
|
|
532
|
-
need them, but benchmark mechanics belong in the
|
|
533
|
-
[methodology audit](https://github.com/niccoloridi/echr-py/blob/main/docs/mumford-methodology-audit.md), not on the project
|
|
534
|
-
homepage.
|
|
513
|
+
|
|
514
|
+
The importer and the methodological comparison remain available for researchers
|
|
515
|
+
who need them, and the measured figures, denominators, hashes and reproduction
|
|
516
|
+
records are kept in the
|
|
517
|
+
[methodology audit](https://github.com/niccoloridi/echr-py/blob/main/docs/mumford-methodology-audit.md)
|
|
518
|
+
and the frozen [benchmark manifest](https://github.com/niccoloridi/echr-py/blob/main/docs/benchmarks/mumford-full-inclusive-audit.json),
|
|
519
|
+
where they can carry their conditions, rather than on the project homepage.
|
|
535
520
|
|
|
536
521
|
The evidence and dates behind external comparisons are maintained in the
|
|
537
522
|
[claim audit](https://github.com/niccoloridi/echr-py/blob/main/docs/claim-audit.md).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: echr-py
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: Pythonic acquisition of HUDOC and HUDOC-EXEC metadata and source documents for ECtHR research.
|
|
5
5
|
Author-email: Niccolo Ridi <niccoloridi@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -102,7 +102,7 @@ Dynamic: license-file
|
|
|
102
102
|
<a href="https://github.com/niccoloridi/echr-py/actions/workflows/ci.yml"><img src="https://github.com/niccoloridi/echr-py/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
103
103
|
<img src="https://img.shields.io/badge/python-3.11%E2%80%933.14-3776AB.svg" alt="Python 3.11–3.14">
|
|
104
104
|
<a href="https://github.com/niccoloridi/echr-py/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="MIT license"></a>
|
|
105
|
-
<img src="https://img.shields.io/badge/version-0.2.
|
|
105
|
+
<img src="https://img.shields.io/badge/version-0.2.2-blue.svg" alt="Version 0.2.2">
|
|
106
106
|
</p>
|
|
107
107
|
|
|
108
108
|
`echr-py` is a research engineering toolkit for the case law of the European
|
|
@@ -495,7 +495,7 @@ without cloning the repository:
|
|
|
495
495
|
|
|
496
496
|
```bash
|
|
497
497
|
claude mcp add --scope user --transport stdio echr-py -- \
|
|
498
|
-
"$(command -v uvx)" --from 'echr-py[mcp]==0.2.
|
|
498
|
+
"$(command -v uvx)" --from 'echr-py[mcp]==0.2.2' echr-py mcp
|
|
499
499
|
claude mcp get echr-py
|
|
500
500
|
```
|
|
501
501
|
|
|
@@ -578,48 +578,33 @@ and graphs without mutating external state. Study jobs require an explicit
|
|
|
578
578
|
`--enable-jobs` launch configuration with permitted roots, provider and hook
|
|
579
579
|
allowlists, pricing, and per-job budgets.
|
|
580
580
|
|
|
581
|
-
##
|
|
581
|
+
## See also
|
|
582
582
|
|
|
583
|
-
|
|
584
|
-
projects:
|
|
583
|
+
Other projects working on ECtHR material:
|
|
585
584
|
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
they are not an exhaustive citation inventory or a target-paragraph graph. The
|
|
602
|
-
annotation frame deliberately omits submissions, general-principles material,
|
|
603
|
-
facts, procedure, operative text, appendices, individual opinions, and
|
|
604
|
-
footnotes. A full `echr-py` run can therefore return citation occurrences from
|
|
605
|
-
sections and components outside that annotation frame.
|
|
606
|
-
|
|
607
|
-
In the frozen 115-document comparison, `echr-py` aligned 5,319 of 5,425
|
|
608
|
-
selected ECHR annotations one-to-one (98.0%): 5,316 by strict source-span
|
|
609
|
-
overlap and three by uniquely normalized context, with 86 ambiguous and 20
|
|
610
|
-
unmatched annotations. These figures measure recovery of the selected
|
|
585
|
+
- [HUDOC Researcher](https://doi.org/10.5281/zenodo.21319704)
|
|
586
|
+
- [`echr-extractor`](https://pypi.org/project/echr-extractor/)
|
|
587
|
+
- [ECHR Open Data](https://echr-opendata.eu/)
|
|
588
|
+
- [Mumford et al.](https://doi.org/10.3233/FAIA251584)
|
|
589
|
+
- [ECtHR-PCR](https://github.com/TUMLegalTech/ECHR-PCR)
|
|
590
|
+
|
|
591
|
+
## Benchmark
|
|
592
|
+
|
|
593
|
+
`echr-py` is compared against the curated Mumford annotation set. Those
|
|
594
|
+
annotations are useful for studying selected citation treatments; they are not
|
|
595
|
+
an exhaustive citation inventory or a target-paragraph graph. The annotation
|
|
596
|
+
frame deliberately omits submissions, general-principles material, facts,
|
|
597
|
+
procedure, operative text, appendices, individual opinions, and footnotes, so a
|
|
598
|
+
full `echr-py` run can return citation occurrences from sections and components
|
|
599
|
+
outside that frame. Any recovery figure measures recovery of those selected
|
|
611
600
|
annotations, not detector precision or completeness over the judgments.
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
importer and methodological comparison remain available for researchers who
|
|
620
|
-
need them, but benchmark mechanics belong in the
|
|
621
|
-
[methodology audit](https://github.com/niccoloridi/echr-py/blob/main/docs/mumford-methodology-audit.md), not on the project
|
|
622
|
-
homepage.
|
|
601
|
+
|
|
602
|
+
The importer and the methodological comparison remain available for researchers
|
|
603
|
+
who need them, and the measured figures, denominators, hashes and reproduction
|
|
604
|
+
records are kept in the
|
|
605
|
+
[methodology audit](https://github.com/niccoloridi/echr-py/blob/main/docs/mumford-methodology-audit.md)
|
|
606
|
+
and the frozen [benchmark manifest](https://github.com/niccoloridi/echr-py/blob/main/docs/benchmarks/mumford-full-inclusive-audit.json),
|
|
607
|
+
where they can carry their conditions, rather than on the project homepage.
|
|
623
608
|
|
|
624
609
|
The evidence and dates behind external comparisons are maintained in the
|
|
625
610
|
[claim audit](https://github.com/niccoloridi/echr-py/blob/main/docs/claim-audit.md).
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "echr-py"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.2"
|
|
8
8
|
description = "Pythonic acquisition of HUDOC and HUDOC-EXEC metadata and source documents for ECtHR research."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|