tablassert 7.5.2__tar.gz → 8.0.0__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.
Files changed (91) hide show
  1. {tablassert-7.5.2 → tablassert-8.0.0}/PKG-INFO +56 -68
  2. {tablassert-7.5.2 → tablassert-8.0.0}/README.md +20 -28
  3. {tablassert-7.5.2 → tablassert-8.0.0}/pyproject.toml +70 -27
  4. tablassert-8.0.0/rust/Cargo.lock +677 -0
  5. tablassert-8.0.0/rust/Cargo.toml +51 -0
  6. tablassert-8.0.0/rust/examples/count_tables.rs +47 -0
  7. tablassert-8.0.0/rust/src/fullmap.rs +4505 -0
  8. tablassert-8.0.0/rust/src/json.rs +118 -0
  9. tablassert-8.0.0/rust/src/lib.rs +83 -0
  10. tablassert-8.0.0/rust/src/ndjson.rs +254 -0
  11. tablassert-8.0.0/rust/src/uuid.rs +146 -0
  12. tablassert-8.0.0/rust/tests/build_golden.rs +641 -0
  13. tablassert-8.0.0/src/tablassert/__init__.py +30 -0
  14. tablassert-8.0.0/src/tablassert/_lazy.py +46 -0
  15. tablassert-8.0.0/src/tablassert/agent.py +2649 -0
  16. tablassert-8.0.0/src/tablassert/biolink.py +310 -0
  17. tablassert-8.0.0/src/tablassert/cli.py +702 -0
  18. tablassert-8.0.0/src/tablassert/coerce.py +362 -0
  19. tablassert-8.0.0/src/tablassert/enums.py +69 -0
  20. tablassert-8.0.0/src/tablassert/errors.py +81 -0
  21. tablassert-8.0.0/src/tablassert/fullmap.py +597 -0
  22. tablassert-8.0.0/src/tablassert/ingests.py +90 -0
  23. tablassert-8.0.0/src/tablassert/lib.py +1199 -0
  24. tablassert-8.0.0/src/tablassert/log.py +29 -0
  25. tablassert-8.0.0/src/tablassert/models.py +427 -0
  26. tablassert-8.0.0/src/tablassert/nlp.py +50 -0
  27. tablassert-8.0.0/src/tablassert/progress.py +266 -0
  28. tablassert-8.0.0/src/tablassert/qc.py +211 -0
  29. tablassert-8.0.0/src/tablassert/rig.py +275 -0
  30. tablassert-8.0.0/src/tablassert/rs.pyi +19 -0
  31. tablassert-8.0.0/src/tablassert/utils.py +18 -0
  32. tablassert-7.5.2/.github/workflows/docker.yml +0 -35
  33. tablassert-7.5.2/.github/workflows/docs.yml +0 -25
  34. tablassert-7.5.2/.github/workflows/pipy.yml +0 -22
  35. tablassert-7.5.2/.gitignore +0 -27
  36. tablassert-7.5.2/.pre-commit-config.yaml +0 -21
  37. tablassert-7.5.2/AGENTS.md +0 -57
  38. tablassert-7.5.2/CHANGELOG.md +0 -307
  39. tablassert-7.5.2/CITATION.cff +0 -34
  40. tablassert-7.5.2/CONTRIBUTING.md +0 -263
  41. tablassert-7.5.2/Dockerfile +0 -8
  42. tablassert-7.5.2/docs/api/fullmap.md +0 -238
  43. tablassert-7.5.2/docs/api/lib.md +0 -248
  44. tablassert-7.5.2/docs/api/qc.md +0 -232
  45. tablassert-7.5.2/docs/api/utils.md +0 -215
  46. tablassert-7.5.2/docs/changelog.md +0 -13
  47. tablassert-7.5.2/docs/cli.md +0 -142
  48. tablassert-7.5.2/docs/configuration/advanced-example.md +0 -425
  49. tablassert-7.5.2/docs/configuration/graph.md +0 -186
  50. tablassert-7.5.2/docs/configuration/table.md +0 -536
  51. tablassert-7.5.2/docs/datassert.md +0 -106
  52. tablassert-7.5.2/docs/docker.md +0 -92
  53. tablassert-7.5.2/docs/examples/tutorial-data.csv +0 -5
  54. tablassert-7.5.2/docs/examples/tutorial-graph.yaml +0 -9
  55. tablassert-7.5.2/docs/examples/tutorial-table.yaml +0 -40
  56. tablassert-7.5.2/docs/examples.md +0 -357
  57. tablassert-7.5.2/docs/index.md +0 -85
  58. tablassert-7.5.2/docs/installation.md +0 -230
  59. tablassert-7.5.2/docs/tutorial.md +0 -192
  60. tablassert-7.5.2/llms.txt +0 -48
  61. tablassert-7.5.2/mkdocs.yml +0 -20
  62. tablassert-7.5.2/src/tablassert/__init__.py +0 -0
  63. tablassert-7.5.2/src/tablassert/cli.py +0 -165
  64. tablassert-7.5.2/src/tablassert/downloader.py +0 -243
  65. tablassert-7.5.2/src/tablassert/enums.py +0 -523
  66. tablassert-7.5.2/src/tablassert/fullmap.py +0 -237
  67. tablassert-7.5.2/src/tablassert/ingests.py +0 -50
  68. tablassert-7.5.2/src/tablassert/lib.py +0 -580
  69. tablassert-7.5.2/src/tablassert/log.py +0 -24
  70. tablassert-7.5.2/src/tablassert/models.py +0 -348
  71. tablassert-7.5.2/src/tablassert/nlp.py +0 -28
  72. tablassert-7.5.2/src/tablassert/progress.py +0 -133
  73. tablassert-7.5.2/src/tablassert/qc.py +0 -213
  74. tablassert-7.5.2/src/tablassert/utils.py +0 -44
  75. tablassert-7.5.2/tests/__init__.py +0 -0
  76. tablassert-7.5.2/tests/conftest.py +0 -28
  77. tablassert-7.5.2/tests/fixtures/invalid_section_missing_source.yaml +0 -15
  78. tablassert-7.5.2/tests/fixtures/minimal_section.yaml +0 -20
  79. tablassert-7.5.2/tests/fixtures/minimal_section_with_sections.yaml +0 -41
  80. tablassert-7.5.2/tests/test_downloader.py +0 -238
  81. tablassert-7.5.2/tests/test_enums.py +0 -179
  82. tablassert-7.5.2/tests/test_fullmap.py +0 -59
  83. tablassert-7.5.2/tests/test_ingests.py +0 -111
  84. tablassert-7.5.2/tests/test_lib.py +0 -522
  85. tablassert-7.5.2/tests/test_models.py +0 -282
  86. tablassert-7.5.2/tests/test_nlp.py +0 -64
  87. tablassert-7.5.2/tests/test_progress.py +0 -48
  88. tablassert-7.5.2/tests/test_qc.py +0 -217
  89. tablassert-7.5.2/tests/test_utils.py +0 -80
  90. tablassert-7.5.2/uv.lock +0 -2854
  91. {tablassert-7.5.2 → tablassert-8.0.0}/LICENSE +0 -0
@@ -1,58 +1,53 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tablassert
3
- Version: 7.5.2
4
- Summary: Extract knowledge assertions from tabular data into NCATS Translator-compliant KGX NDJSON — declaratively, with entity resolution and quality control built in.
5
- Project-URL: Homepage, https://github.com/SkyeAv/Tablassert
6
- Project-URL: Source, https://github.com/SkyeAv/Tablassert
7
- Project-URL: Documentation, https://skyeav.github.io/Tablassert/
8
- Author-email: Skye Lane Goetz <sgoetz@isbscience.org>
9
- License-Expression: Apache-2.0
10
- License-File: LICENSE
11
- Keywords: bioinformatics,data quality control,declarative pipeline,entity resolution,kgx,knowledge graph,ncats translator,ner,tablassert,table mining,yaml configuration
3
+ Version: 8.0.0
4
+ Classifier: License :: OSI Approved :: Apache Software License
12
5
  Classifier: Development Status :: 5 - Production/Stable
13
- Classifier: Environment :: Console
14
- Classifier: Framework :: Pydantic
15
- Classifier: Intended Audience :: Developers
16
- Classifier: Intended Audience :: Healthcare Industry
17
6
  Classifier: Intended Audience :: Science/Research
18
- Classifier: License :: OSI Approved :: Apache Software License
19
- Classifier: Operating System :: OS Independent
7
+ Classifier: Intended Audience :: Healthcare Industry
8
+ Classifier: Intended Audience :: Developers
9
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
10
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
11
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
12
+ Classifier: Topic :: Database
20
13
  Classifier: Programming Language :: Python :: 3.11
21
14
  Classifier: Programming Language :: Python :: 3.12
22
15
  Classifier: Programming Language :: Python :: 3.13
23
16
  Classifier: Programming Language :: Python :: 3.14
24
- Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
25
- Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
26
- Requires-Python: >=3.11
27
- Requires-Dist: cyclopts>=1.0.0
28
- Requires-Dist: diskcache>=5.6.3
29
- Requires-Dist: duckdb>=1.5.0
30
- Requires-Dist: fastexcel>=0.19.0
31
- Requires-Dist: httpx>=0.28.1
32
- Requires-Dist: lazy-loader>=0.5
17
+ Classifier: Programming Language :: Python :: Implementation :: CPython
18
+ Classifier: Programming Language :: Rust
19
+ Classifier: Framework :: Pydantic
20
+ Classifier: Operating System :: POSIX :: Linux
21
+ Classifier: Operating System :: MacOS :: MacOS X
22
+ Classifier: Environment :: Console
23
+ Requires-Dist: biolink-model>=4.4.3
33
24
  Requires-Dist: loguru>=0.7.3
34
- Requires-Dist: optimum-onnx>=0.1.0
35
- Requires-Dist: orjson>=3.11.7
36
- Requires-Dist: playwright<1.59,>=1.58.0
37
- Requires-Dist: polars-hash>=0.5.6
38
25
  Requires-Dist: polars>=1.39.0
39
- Requires-Dist: pyarrow>=23.0.1
26
+ Requires-Dist: rapidfuzz>=3.14.3
40
27
  Requires-Dist: pydantic>=2.12.5
41
- Requires-Dist: pyexcel>=0.7.4
42
28
  Requires-Dist: pyyaml>=6.0.3
43
- Requires-Dist: rapidfuzz>=3.14.3
29
+ Requires-Dist: cyclopts>=1.0.0
44
30
  Requires-Dist: rich>=13.0.0
45
- Requires-Dist: scikit-learn>=1.8.0
46
- Requires-Dist: sentence-transformers>=5.3.0
47
- Requires-Dist: sqlite-utils>=3.39
48
- Requires-Dist: xxhash>=3.6.0
31
+ Requires-Dist: fastexcel>=0.20.2
32
+ Requires-Dist: smolagents>=1.26.0 ; extra == 'agent'
33
+ Requires-Dist: dspy>=3.2.1 ; extra == 'agent'
34
+ Requires-Dist: litellm>=1.93.0 ; extra == 'agent'
35
+ Requires-Dist: scikit-learn>=1.8.0 ; extra == 'qc'
36
+ Requires-Dist: sentence-transformers>=5.3.0 ; extra == 'qc'
37
+ Requires-Dist: polars[rtcompat]>=1.40.1 ; extra == 'rt'
38
+ Provides-Extra: agent
49
39
  Provides-Extra: qc
50
- Requires-Dist: onnxruntime>=1.24.4; extra == 'qc'
51
- Provides-Extra: qc-cuda
52
- Requires-Dist: onnxruntime-gpu>=1.24.4; extra == 'qc-cuda'
53
40
  Provides-Extra: rt
54
- Requires-Dist: polars[rtcompat]>=1.40.1; extra == 'rt'
55
- Description-Content-Type: text/markdown
41
+ License-File: LICENSE
42
+ Summary: Extract knowledge assertions from tabular data into NCATS Translator-compliant KGX NDJSON — declaratively, with entity resolution and quality control built in.
43
+ Keywords: knowledge graph,bioinformatics,entity resolution,ner,ncats translator,kgx,yaml configuration,table mining,declarative pipeline,data quality control,tablassert
44
+ Author-email: Skye Lane Goetz <sgoetz@isbscience.org>
45
+ License-Expression: Apache-2.0
46
+ Requires-Python: >=3.11
47
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
48
+ Project-URL: Documentation, https://skyeav.github.io/Tablassert/
49
+ Project-URL: Homepage, https://github.com/SkyeAv/Tablassert
50
+ Project-URL: Source, https://github.com/SkyeAv/Tablassert
56
51
 
57
52
  # Tablassert
58
53
 
@@ -65,7 +60,7 @@ Extract knowledge assertions from tabular data into NCATS Translator-compliant K
65
60
 
66
61
  ```bash
67
62
  pip install tablassert
68
- tablassert build config.yaml
63
+ tablassert build-kg config.yaml
69
64
  ```
70
65
 
71
66
  **[Full Documentation](https://skyeav.github.io/Tablassert/)** — installation guides, tutorials, configuration reference, and API docs.
@@ -76,30 +71,16 @@ tablassert build config.yaml
76
71
  pip install tablassert
77
72
  ```
78
73
 
79
- Base install includes web and Excel support. Optional extras are available for CPU compatibility and QC runtime selection:
74
+ The base install includes everything needed to build knowledge graphs from CSV/TSV sources. Optional extras are available for CPU compatibility and quality control:
80
75
 
81
76
  ```bash
82
- pip install "tablassert[rt]" # Polars build for CPUs without required instructions
83
- pip install "tablassert[qc]" # Enable QC with CPU ONNX Runtime
84
- pip install "tablassert[qc-cuda]" # Enable QC with CUDA ONNX Runtime on GPU 0
77
+ pip install "tablassert[rt]" # Polars build for CPUs without the required instructions
78
+ pip install "tablassert[qc]" # Enable QC (torch + sentence-transformers BioBERT, scikit-learn)
85
79
  ```
86
80
 
87
- QC is disabled by default at the graph level. Set `qc: true` in a graph config to enable the audit stage.
88
-
89
- <details>
90
- <summary><strong>Docker</strong></summary>
91
-
92
- ```bash
93
- docker pull ghcr.io/skyeav/tablassert:latest
94
-
95
- docker run --rm \
96
- -v /path/to/config:/data \
97
- -v /path/to/datassert:/datassert \
98
- ghcr.io/skyeav/tablassert:latest \
99
- build /data/graph-config.yaml
100
- ```
81
+ Excel (`.xlsx`) inputs are read through Polars' `calamine` engine and additionally require `python-calamine` (`pip install python-calamine`).
101
82
 
102
- </details>
83
+ QC is opt-in: pass `--qc` to `build-kg` to run the three-stage audit (exact → fuzzy → BioBERT). See the [CLI Reference](https://skyeav.github.io/Tablassert/cli/) for the full flag reference.
103
84
 
104
85
  ## Quick Demo
105
86
 
@@ -107,22 +88,22 @@ docker run --rm \
107
88
  from pathlib import Path
108
89
  from tablassert.lib import resolve_many
109
90
 
110
- # Resolve gene names to CURIEs against a datassert database
91
+ # Resolve gene names to CURIEs against a fullmap database
111
92
  results = resolve_many(
112
93
  col="gene",
113
94
  entities=["TP53", "BRCA1", "EGFR"],
114
- datassert=Path("/path/to/datassert"),
95
+ fullmap=Path("/path/to/fullmap"),
115
96
  taxon="9606",
116
97
  )
117
98
 
118
99
  for row in results:
119
- print(f"{row['original gene']} → {row['gene']} ({row['gene name']})")
100
+ print(f"{row['original_gene']} → {row['gene']} ({row['gene_name']})")
120
101
  # TP53 → HGNC:11998 (TP53)
121
102
  # BRCA1 → HGNC:1100 (BRCA1)
122
103
  # EGFR → HGNC:3236 (EGFR)
123
104
  ```
124
105
 
125
- Point `resolve_many()` at a datassert database and resolve any iterable of entity strings to CURIEs — no LazyFrame setup, NLP preprocessing, or DuckDB connection management required. For full pipeline builds with YAML configuration, use `tablassert build config.yaml`.
106
+ Point `resolve_many()` at a fullmap database and resolve any iterable of entity strings to CURIEs — no LazyFrame setup or NLP preprocessing required. For full pipeline builds with YAML configuration, use `tablassert build-kg config.yaml`.
126
107
 
127
108
  ## Key Features
128
109
 
@@ -130,11 +111,17 @@ Point `resolve_many()` at a datassert database and resolve any iterable of entit
130
111
  - **Entity Resolution** — Maps text to biological entities (genes, diseases, chemicals)
131
112
  - **Quality Control** — Optional three-stage validation (exact → fuzzy → BERT embeddings)
132
113
  - **KGX Compliance** — NCATS Translator-compatible NDJSON output
133
- - **Performance** — Lazy evaluation pipelines with Polars and DuckDB-accelerated entity resolution
114
+ - **Performance** — Lazy evaluation pipelines with Polars and an embedded redb-accelerated entity resolution database
134
115
 
135
- ## Contributing
116
+ ## Developing
136
117
 
137
- See **[CONTRIBUTING.md](CONTRIBUTING.md)** for development setup, code style, and pull request guidelines.
118
+ ```bash
119
+ uv sync --group dev --extra qc
120
+ uv run maturin develop --manifest-path rust/Cargo.toml
121
+ make check
122
+ ```
123
+
124
+ See **[CONTRIBUTING.md](CONTRIBUTING.md)** for the full development loop, quality gates, and pull request guidelines.
138
125
 
139
126
  ## License
140
127
 
@@ -142,8 +129,9 @@ See **[CONTRIBUTING.md](CONTRIBUTING.md)** for development setup, code style, an
142
129
 
143
130
  ## Contributors
144
131
 
145
- [Skye Lane Goetz](mailto:sgoetz@isbscience.org) — Institute for Systems Biology, CalPoly SLO
132
+ [Skye Lane Goetz](mailto:sgoetz@isbscience.org) — Institute for Systems Biology
146
133
 
147
134
  [Gwênlyn Glusman](mailto:gglusman@isbscience.org) — Institute for Systems Biology
148
135
 
149
136
  Jared C. Roach — Institute for Systems Biology
137
+
@@ -9,7 +9,7 @@ Extract knowledge assertions from tabular data into NCATS Translator-compliant K
9
9
 
10
10
  ```bash
11
11
  pip install tablassert
12
- tablassert build config.yaml
12
+ tablassert build-kg config.yaml
13
13
  ```
14
14
 
15
15
  **[Full Documentation](https://skyeav.github.io/Tablassert/)** — installation guides, tutorials, configuration reference, and API docs.
@@ -20,30 +20,16 @@ tablassert build config.yaml
20
20
  pip install tablassert
21
21
  ```
22
22
 
23
- Base install includes web and Excel support. Optional extras are available for CPU compatibility and QC runtime selection:
23
+ The base install includes everything needed to build knowledge graphs from CSV/TSV sources. Optional extras are available for CPU compatibility and quality control:
24
24
 
25
25
  ```bash
26
- pip install "tablassert[rt]" # Polars build for CPUs without required instructions
27
- pip install "tablassert[qc]" # Enable QC with CPU ONNX Runtime
28
- pip install "tablassert[qc-cuda]" # Enable QC with CUDA ONNX Runtime on GPU 0
26
+ pip install "tablassert[rt]" # Polars build for CPUs without the required instructions
27
+ pip install "tablassert[qc]" # Enable QC (torch + sentence-transformers BioBERT, scikit-learn)
29
28
  ```
30
29
 
31
- QC is disabled by default at the graph level. Set `qc: true` in a graph config to enable the audit stage.
30
+ Excel (`.xlsx`) inputs are read through Polars' `calamine` engine and additionally require `python-calamine` (`pip install python-calamine`).
32
31
 
33
- <details>
34
- <summary><strong>Docker</strong></summary>
35
-
36
- ```bash
37
- docker pull ghcr.io/skyeav/tablassert:latest
38
-
39
- docker run --rm \
40
- -v /path/to/config:/data \
41
- -v /path/to/datassert:/datassert \
42
- ghcr.io/skyeav/tablassert:latest \
43
- build /data/graph-config.yaml
44
- ```
45
-
46
- </details>
32
+ QC is opt-in: pass `--qc` to `build-kg` to run the three-stage audit (exact → fuzzy → BioBERT). See the [CLI Reference](https://skyeav.github.io/Tablassert/cli/) for the full flag reference.
47
33
 
48
34
  ## Quick Demo
49
35
 
@@ -51,22 +37,22 @@ docker run --rm \
51
37
  from pathlib import Path
52
38
  from tablassert.lib import resolve_many
53
39
 
54
- # Resolve gene names to CURIEs against a datassert database
40
+ # Resolve gene names to CURIEs against a fullmap database
55
41
  results = resolve_many(
56
42
  col="gene",
57
43
  entities=["TP53", "BRCA1", "EGFR"],
58
- datassert=Path("/path/to/datassert"),
44
+ fullmap=Path("/path/to/fullmap"),
59
45
  taxon="9606",
60
46
  )
61
47
 
62
48
  for row in results:
63
- print(f"{row['original gene']} → {row['gene']} ({row['gene name']})")
49
+ print(f"{row['original_gene']} → {row['gene']} ({row['gene_name']})")
64
50
  # TP53 → HGNC:11998 (TP53)
65
51
  # BRCA1 → HGNC:1100 (BRCA1)
66
52
  # EGFR → HGNC:3236 (EGFR)
67
53
  ```
68
54
 
69
- Point `resolve_many()` at a datassert database and resolve any iterable of entity strings to CURIEs — no LazyFrame setup, NLP preprocessing, or DuckDB connection management required. For full pipeline builds with YAML configuration, use `tablassert build config.yaml`.
55
+ Point `resolve_many()` at a fullmap database and resolve any iterable of entity strings to CURIEs — no LazyFrame setup or NLP preprocessing required. For full pipeline builds with YAML configuration, use `tablassert build-kg config.yaml`.
70
56
 
71
57
  ## Key Features
72
58
 
@@ -74,11 +60,17 @@ Point `resolve_many()` at a datassert database and resolve any iterable of entit
74
60
  - **Entity Resolution** — Maps text to biological entities (genes, diseases, chemicals)
75
61
  - **Quality Control** — Optional three-stage validation (exact → fuzzy → BERT embeddings)
76
62
  - **KGX Compliance** — NCATS Translator-compatible NDJSON output
77
- - **Performance** — Lazy evaluation pipelines with Polars and DuckDB-accelerated entity resolution
63
+ - **Performance** — Lazy evaluation pipelines with Polars and an embedded redb-accelerated entity resolution database
64
+
65
+ ## Developing
78
66
 
79
- ## Contributing
67
+ ```bash
68
+ uv sync --group dev --extra qc
69
+ uv run maturin develop --manifest-path rust/Cargo.toml
70
+ make check
71
+ ```
80
72
 
81
- See **[CONTRIBUTING.md](CONTRIBUTING.md)** for development setup, code style, and pull request guidelines.
73
+ See **[CONTRIBUTING.md](CONTRIBUTING.md)** for the full development loop, quality gates, and pull request guidelines.
82
74
 
83
75
  ## License
84
76
 
@@ -86,7 +78,7 @@ See **[CONTRIBUTING.md](CONTRIBUTING.md)** for development setup, code style, an
86
78
 
87
79
  ## Contributors
88
80
 
89
- [Skye Lane Goetz](mailto:sgoetz@isbscience.org) — Institute for Systems Biology, CalPoly SLO
81
+ [Skye Lane Goetz](mailto:sgoetz@isbscience.org) — Institute for Systems Biology
90
82
 
91
83
  [Gwênlyn Glusman](mailto:gglusman@isbscience.org) — Institute for Systems Biology
92
84
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "tablassert"
3
- version = "7.5.2"
3
+ version = "8.0.0"
4
4
  description = "Extract knowledge assertions from tabular data into NCATS Translator-compliant KGX NDJSON — declaratively, with entity resolution and quality control built in."
5
5
  authors = [
6
6
  { name = "Skye Lane Goetz", email = "sgoetz@isbscience.org" }
@@ -20,6 +20,7 @@ keywords = [
20
20
  ]
21
21
  readme = "README.md"
22
22
  license = "Apache-2.0"
23
+ license-files = ["LICENSE"]
23
24
  classifiers = [
24
25
  "License :: OSI Approved :: Apache Software License",
25
26
  "Development Status :: 5 - Production/Stable",
@@ -28,38 +29,30 @@ classifiers = [
28
29
  "Intended Audience :: Developers",
29
30
  "Topic :: Scientific/Engineering :: Bio-Informatics",
30
31
  "Topic :: Scientific/Engineering :: Artificial Intelligence",
32
+ "Topic :: Scientific/Engineering :: Information Analysis",
33
+ "Topic :: Database",
31
34
  "Programming Language :: Python :: 3.11",
32
35
  "Programming Language :: Python :: 3.12",
33
36
  "Programming Language :: Python :: 3.13",
34
37
  "Programming Language :: Python :: 3.14",
38
+ "Programming Language :: Python :: Implementation :: CPython",
39
+ "Programming Language :: Rust",
35
40
  "Framework :: Pydantic",
36
- "Operating System :: OS Independent",
41
+ "Operating System :: POSIX :: Linux",
42
+ "Operating System :: MacOS :: MacOS X",
37
43
  "Environment :: Console",
38
44
  ]
39
45
  requires-python = ">=3.11"
40
46
  dependencies = [
41
- "duckdb>=1.5.0",
42
- "fastexcel>=0.19.0",
43
- "httpx>=0.28.1",
44
- "lazy-loader>=0.5",
47
+ "biolink-model>=4.4.3",
45
48
  "loguru>=0.7.3",
46
- "optimum-onnx>=0.1.0",
47
- "orjson>=3.11.7",
48
- "playwright>=1.58.0,<1.59",
49
49
  "polars>=1.39.0",
50
- "polars-hash>=0.5.6",
51
- "pyarrow>=23.0.1",
50
+ "rapidfuzz>=3.14.3",
52
51
  "pydantic>=2.12.5",
53
- "pyexcel>=0.7.4",
54
52
  "pyyaml>=6.0.3",
55
- "rapidfuzz>=3.14.3",
56
- "scikit-learn>=1.8.0",
57
- "sentence-transformers>=5.3.0",
58
- "sqlite-utils>=3.39",
59
53
  "cyclopts>=1.0.0",
60
54
  "rich>=13.0.0",
61
- "xxhash>=3.6.0",
62
- "diskcache>=5.6.3",
55
+ "fastexcel>=0.20.2",
63
56
  ]
64
57
 
65
58
  [project.urls]
@@ -68,11 +61,15 @@ Source = "https://github.com/SkyeAv/Tablassert"
68
61
  Documentation = "https://skyeav.github.io/Tablassert/"
69
62
 
70
63
  [build-system]
71
- requires = ["hatchling"]
72
- build-backend = "hatchling.build"
64
+ requires = ["maturin>=1.10,<2.0"]
65
+ build-backend = "maturin"
73
66
 
74
- [tool.hatch.build.targets.wheel]
75
- packages = ["./src/tablassert"]
67
+ [tool.maturin]
68
+ python-source = "src"
69
+ module-name = "tablassert.rs"
70
+ bindings = "pyo3"
71
+ manifest-path = "rust/Cargo.toml"
72
+ features = ["extension-module"]
76
73
 
77
74
  [project.scripts]
78
75
  tablassert = "tablassert.cli:APP"
@@ -82,15 +79,20 @@ rt = [
82
79
  "polars[rtcompat]>=1.40.1",
83
80
  ]
84
81
  qc = [
85
- "onnxruntime>=1.24.4",
82
+ "scikit-learn>=1.8.0",
83
+ "sentence-transformers>=5.3.0",
86
84
  ]
87
- qc-cuda = [
88
- "onnxruntime-gpu>=1.24.4",
85
+ agent = [
86
+ "smolagents>=1.26.0",
87
+ "dspy>=3.2.1",
88
+ "litellm>=1.93.0",
89
89
  ]
90
90
 
91
91
  [dependency-groups]
92
92
  dev = [
93
93
  "mkdocs>=1.6.1",
94
+ "mkdocs-material>=9.6.0",
95
+ "maturin>=1.10,<2.0",
94
96
  "pre-commit>=4.5.1",
95
97
  "pyright>=1.1.411",
96
98
  "pytest>=9.0.2",
@@ -100,14 +102,55 @@ dev = [
100
102
 
101
103
  [tool.pytest.ini_options]
102
104
  testpaths = ["tests"]
103
- markers = ["network: requires internet", "gpu: requires CUDAExecutionProvider"]
105
+ addopts = "--cov=tablassert --cov-report=term-missing"
106
+ markers = ["network: requires internet"]
107
+
108
+ [tool.coverage.run]
109
+ source = ["src/tablassert"]
104
110
 
105
111
  [tool.ruff]
106
- line-length = 120
112
+ line-length = 150
107
113
  indent-width = 4
108
114
  target-version = "py311"
109
115
 
116
+ [tool.ruff.lint]
117
+ select = [
118
+ "E4", # pycodestyle E4xx
119
+ "E7", # pycodestyle E7xx
120
+ "E9", # pycodestyle E9xx
121
+ "F", # pyflakes
122
+ "RUF100", # stale noqa
123
+ "B", # flake8-bugbear
124
+ "SIM", # flake8-simplify
125
+ "C4", # flake8-comprehensions
126
+ "PT", # flake8-pytest-style
127
+ "RUF", # ruff-specific
128
+ "TID", # flake8-tidy-imports
129
+ "I", # isort
130
+ "PIE", # flake8-pie
131
+ "RET", # flake8-return
132
+ "UP", # pyupgrade
133
+ ]
134
+ ignore = [
135
+ "UP042", # keep enum/str-conversion behavior as-is
136
+ ]
137
+
138
+ [tool.ruff.lint.isort]
139
+ # Align isort with `format.skip-magic-trailing-comma = true` (avoids the ruff incompatibility warning).
140
+ split-on-trailing-comma = false
141
+
110
142
  [tool.ruff.format]
111
143
  quote-style = "double"
112
144
  indent-style = "space"
113
145
  skip-magic-trailing-comma = true
146
+
147
+ [tool.pyright]
148
+ include = ["src", "tests"]
149
+ pythonVersion = "3.11"
150
+ strictListInference = true
151
+ strictDictionaryInference = true
152
+ strictSetInference = true
153
+ reportMissingTypeStubs = false
154
+ reportUnusedImport = true
155
+ reportUnusedVariable = true
156
+ reportDuplicateImport = true