tablassert 7.5.2__tar.gz → 8.0.1__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 (93) hide show
  1. tablassert-8.0.1/PKG-INFO +122 -0
  2. tablassert-8.0.1/README.md +70 -0
  3. {tablassert-7.5.2 → tablassert-8.0.1}/pyproject.toml +70 -27
  4. tablassert-8.0.1/rust/Cargo.lock +677 -0
  5. tablassert-8.0.1/rust/Cargo.toml +51 -0
  6. tablassert-8.0.1/rust/examples/count_tables.rs +47 -0
  7. tablassert-8.0.1/rust/src/fullmap.rs +4505 -0
  8. tablassert-8.0.1/rust/src/json.rs +118 -0
  9. tablassert-8.0.1/rust/src/lib.rs +83 -0
  10. tablassert-8.0.1/rust/src/ndjson.rs +254 -0
  11. tablassert-8.0.1/rust/src/uuid.rs +146 -0
  12. tablassert-8.0.1/rust/tests/build_golden.rs +641 -0
  13. tablassert-8.0.1/src/tablassert/__init__.py +30 -0
  14. tablassert-8.0.1/src/tablassert/_lazy.py +46 -0
  15. tablassert-8.0.1/src/tablassert/agent.py +2631 -0
  16. tablassert-8.0.1/src/tablassert/biolink.py +310 -0
  17. tablassert-8.0.1/src/tablassert/cli.py +692 -0
  18. tablassert-8.0.1/src/tablassert/coerce.py +362 -0
  19. tablassert-8.0.1/src/tablassert/enums.py +69 -0
  20. tablassert-8.0.1/src/tablassert/errors.py +80 -0
  21. tablassert-8.0.1/src/tablassert/fullmap.py +597 -0
  22. tablassert-8.0.1/src/tablassert/ingests.py +90 -0
  23. tablassert-8.0.1/src/tablassert/lib.py +1199 -0
  24. tablassert-8.0.1/src/tablassert/log.py +29 -0
  25. tablassert-8.0.1/src/tablassert/models.py +418 -0
  26. tablassert-8.0.1/src/tablassert/nlp.py +50 -0
  27. tablassert-8.0.1/src/tablassert/progress.py +266 -0
  28. tablassert-8.0.1/src/tablassert/qc.py +211 -0
  29. tablassert-8.0.1/src/tablassert/rig.py +275 -0
  30. tablassert-8.0.1/src/tablassert/rs.pyi +19 -0
  31. tablassert-8.0.1/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/PKG-INFO +0 -149
  43. tablassert-7.5.2/README.md +0 -93
  44. tablassert-7.5.2/docs/api/fullmap.md +0 -238
  45. tablassert-7.5.2/docs/api/lib.md +0 -248
  46. tablassert-7.5.2/docs/api/qc.md +0 -232
  47. tablassert-7.5.2/docs/api/utils.md +0 -215
  48. tablassert-7.5.2/docs/changelog.md +0 -13
  49. tablassert-7.5.2/docs/cli.md +0 -142
  50. tablassert-7.5.2/docs/configuration/advanced-example.md +0 -425
  51. tablassert-7.5.2/docs/configuration/graph.md +0 -186
  52. tablassert-7.5.2/docs/configuration/table.md +0 -536
  53. tablassert-7.5.2/docs/datassert.md +0 -106
  54. tablassert-7.5.2/docs/docker.md +0 -92
  55. tablassert-7.5.2/docs/examples/tutorial-data.csv +0 -5
  56. tablassert-7.5.2/docs/examples/tutorial-graph.yaml +0 -9
  57. tablassert-7.5.2/docs/examples/tutorial-table.yaml +0 -40
  58. tablassert-7.5.2/docs/examples.md +0 -357
  59. tablassert-7.5.2/docs/index.md +0 -85
  60. tablassert-7.5.2/docs/installation.md +0 -230
  61. tablassert-7.5.2/docs/tutorial.md +0 -192
  62. tablassert-7.5.2/llms.txt +0 -48
  63. tablassert-7.5.2/mkdocs.yml +0 -20
  64. tablassert-7.5.2/src/tablassert/__init__.py +0 -0
  65. tablassert-7.5.2/src/tablassert/cli.py +0 -165
  66. tablassert-7.5.2/src/tablassert/downloader.py +0 -243
  67. tablassert-7.5.2/src/tablassert/enums.py +0 -523
  68. tablassert-7.5.2/src/tablassert/fullmap.py +0 -237
  69. tablassert-7.5.2/src/tablassert/ingests.py +0 -50
  70. tablassert-7.5.2/src/tablassert/lib.py +0 -580
  71. tablassert-7.5.2/src/tablassert/log.py +0 -24
  72. tablassert-7.5.2/src/tablassert/models.py +0 -348
  73. tablassert-7.5.2/src/tablassert/nlp.py +0 -28
  74. tablassert-7.5.2/src/tablassert/progress.py +0 -133
  75. tablassert-7.5.2/src/tablassert/qc.py +0 -213
  76. tablassert-7.5.2/src/tablassert/utils.py +0 -44
  77. tablassert-7.5.2/tests/__init__.py +0 -0
  78. tablassert-7.5.2/tests/conftest.py +0 -28
  79. tablassert-7.5.2/tests/fixtures/invalid_section_missing_source.yaml +0 -15
  80. tablassert-7.5.2/tests/fixtures/minimal_section.yaml +0 -20
  81. tablassert-7.5.2/tests/fixtures/minimal_section_with_sections.yaml +0 -41
  82. tablassert-7.5.2/tests/test_downloader.py +0 -238
  83. tablassert-7.5.2/tests/test_enums.py +0 -179
  84. tablassert-7.5.2/tests/test_fullmap.py +0 -59
  85. tablassert-7.5.2/tests/test_ingests.py +0 -111
  86. tablassert-7.5.2/tests/test_lib.py +0 -522
  87. tablassert-7.5.2/tests/test_models.py +0 -282
  88. tablassert-7.5.2/tests/test_nlp.py +0 -64
  89. tablassert-7.5.2/tests/test_progress.py +0 -48
  90. tablassert-7.5.2/tests/test_qc.py +0 -217
  91. tablassert-7.5.2/tests/test_utils.py +0 -80
  92. tablassert-7.5.2/uv.lock +0 -2854
  93. {tablassert-7.5.2 → tablassert-8.0.1}/LICENSE +0 -0
@@ -0,0 +1,122 @@
1
+ Metadata-Version: 2.4
2
+ Name: tablassert
3
+ Version: 8.0.1
4
+ Classifier: License :: OSI Approved :: Apache Software License
5
+ Classifier: Development Status :: 5 - Production/Stable
6
+ Classifier: Intended Audience :: Science/Research
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
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
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
24
+ Requires-Dist: loguru>=0.7.3
25
+ Requires-Dist: polars>=1.39.0
26
+ Requires-Dist: rapidfuzz>=3.14.3
27
+ Requires-Dist: pydantic>=2.12.5
28
+ Requires-Dist: pyyaml>=6.0.3
29
+ Requires-Dist: cyclopts>=1.0.0
30
+ Requires-Dist: rich>=13.0.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
39
+ Provides-Extra: qc
40
+ Provides-Extra: rt
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
51
+
52
+ # Tablassert
53
+
54
+ [![PyPI](https://img.shields.io/pypi/v/tablassert.svg)](https://pypi.org/project/tablassert/)
55
+ [![Python](https://img.shields.io/pypi/pyversions/tablassert.svg)](https://pypi.org/project/tablassert/)
56
+ [![License](https://img.shields.io/pypi/l/tablassert.svg)](https://github.com/SkyeAv/Tablassert/blob/main/LICENSE)
57
+ [![Docs](https://img.shields.io/github/deployments/SkyeAv/Tablassert/github-pages?label=docs)](https://skyeav.github.io/Tablassert/)
58
+
59
+ Extract knowledge assertions from tabular data into NCATS Translator-compliant KGX NDJSON — declaratively, with entity resolution built in and optional quality control.
60
+
61
+ ```bash
62
+ pip install tablassert
63
+ tablassert build-kg config.yaml
64
+ ```
65
+
66
+ **[Full Documentation](https://skyeav.github.io/Tablassert/)** — installation guides, tutorials, configuration reference, and API docs.
67
+
68
+ ## Installation
69
+
70
+ ```bash
71
+ pip install tablassert
72
+ ```
73
+
74
+ The base install builds knowledge graphs from CSV/TSV/Excel sources. Optional extras (`rt`, `qc`,
75
+ `agent`) add CPU-compatible Polars, the three-stage QC audit, and the autonomous agent — see the
76
+ [Installation guide](https://skyeav.github.io/Tablassert/installation/) for the full matrix. QC is opt-in
77
+ at build time (`build-kg --qc`); see the [CLI Reference](https://skyeav.github.io/Tablassert/cli/) for the
78
+ complete flag reference.
79
+
80
+ ## Quick Demo
81
+
82
+ ```python
83
+ from pathlib import Path
84
+ from tablassert.lib import resolve_many
85
+
86
+ results = resolve_many(col="gene", entities=["TP53", "BRCA1"], fullmap=Path("/path/to/fullmap"), taxon="9606")
87
+ # [{"original_gene": "TP53", "gene": "HGNC:11998", "gene_name": "TP53", ...}, ...]
88
+ ```
89
+
90
+ Point `resolve_many()` at a fullmap database to resolve any iterable of entity strings to CURIEs — no
91
+ LazyFrame setup or NLP preprocessing required. See the
92
+ [Batch Resolution API](https://skyeav.github.io/Tablassert/api/lib/) for the full reference; for
93
+ YAML-configured pipeline builds use `tablassert build-kg config.yaml`.
94
+
95
+ ## Key Features
96
+
97
+ Declarative YAML configs, built-in entity resolution, optional three-stage QC, and KGX-compliant NDJSON
98
+ output — with lazy Polars pipelines over an embedded redb resolution database. See the
99
+ [documentation](https://skyeav.github.io/Tablassert/) for the full feature overview and use-case gallery.
100
+
101
+ ## Developing
102
+
103
+ ```bash
104
+ uv sync --group dev --extra qc
105
+ uv run maturin develop --manifest-path rust/Cargo.toml
106
+ make check
107
+ ```
108
+
109
+ See **[CONTRIBUTING.md](CONTRIBUTING.md)** for the full development loop, quality gates, and pull request guidelines.
110
+
111
+ ## License
112
+
113
+ [Apache License 2.0](LICENSE)
114
+
115
+ ## Contributors
116
+
117
+ [Skye Lane Goetz](mailto:sgoetz@isbscience.org) — Institute for Systems Biology
118
+
119
+ [Gwênlyn Glusman](mailto:gglusman@isbscience.org) — Institute for Systems Biology
120
+
121
+ Jared C. Roach — Institute for Systems Biology
122
+
@@ -0,0 +1,70 @@
1
+ # Tablassert
2
+
3
+ [![PyPI](https://img.shields.io/pypi/v/tablassert.svg)](https://pypi.org/project/tablassert/)
4
+ [![Python](https://img.shields.io/pypi/pyversions/tablassert.svg)](https://pypi.org/project/tablassert/)
5
+ [![License](https://img.shields.io/pypi/l/tablassert.svg)](https://github.com/SkyeAv/Tablassert/blob/main/LICENSE)
6
+ [![Docs](https://img.shields.io/github/deployments/SkyeAv/Tablassert/github-pages?label=docs)](https://skyeav.github.io/Tablassert/)
7
+
8
+ Extract knowledge assertions from tabular data into NCATS Translator-compliant KGX NDJSON — declaratively, with entity resolution built in and optional quality control.
9
+
10
+ ```bash
11
+ pip install tablassert
12
+ tablassert build-kg config.yaml
13
+ ```
14
+
15
+ **[Full Documentation](https://skyeav.github.io/Tablassert/)** — installation guides, tutorials, configuration reference, and API docs.
16
+
17
+ ## Installation
18
+
19
+ ```bash
20
+ pip install tablassert
21
+ ```
22
+
23
+ The base install builds knowledge graphs from CSV/TSV/Excel sources. Optional extras (`rt`, `qc`,
24
+ `agent`) add CPU-compatible Polars, the three-stage QC audit, and the autonomous agent — see the
25
+ [Installation guide](https://skyeav.github.io/Tablassert/installation/) for the full matrix. QC is opt-in
26
+ at build time (`build-kg --qc`); see the [CLI Reference](https://skyeav.github.io/Tablassert/cli/) for the
27
+ complete flag reference.
28
+
29
+ ## Quick Demo
30
+
31
+ ```python
32
+ from pathlib import Path
33
+ from tablassert.lib import resolve_many
34
+
35
+ results = resolve_many(col="gene", entities=["TP53", "BRCA1"], fullmap=Path("/path/to/fullmap"), taxon="9606")
36
+ # [{"original_gene": "TP53", "gene": "HGNC:11998", "gene_name": "TP53", ...}, ...]
37
+ ```
38
+
39
+ Point `resolve_many()` at a fullmap database to resolve any iterable of entity strings to CURIEs — no
40
+ LazyFrame setup or NLP preprocessing required. See the
41
+ [Batch Resolution API](https://skyeav.github.io/Tablassert/api/lib/) for the full reference; for
42
+ YAML-configured pipeline builds use `tablassert build-kg config.yaml`.
43
+
44
+ ## Key Features
45
+
46
+ Declarative YAML configs, built-in entity resolution, optional three-stage QC, and KGX-compliant NDJSON
47
+ output — with lazy Polars pipelines over an embedded redb resolution database. See the
48
+ [documentation](https://skyeav.github.io/Tablassert/) for the full feature overview and use-case gallery.
49
+
50
+ ## Developing
51
+
52
+ ```bash
53
+ uv sync --group dev --extra qc
54
+ uv run maturin develop --manifest-path rust/Cargo.toml
55
+ make check
56
+ ```
57
+
58
+ See **[CONTRIBUTING.md](CONTRIBUTING.md)** for the full development loop, quality gates, and pull request guidelines.
59
+
60
+ ## License
61
+
62
+ [Apache License 2.0](LICENSE)
63
+
64
+ ## Contributors
65
+
66
+ [Skye Lane Goetz](mailto:sgoetz@isbscience.org) — Institute for Systems Biology
67
+
68
+ [Gwênlyn Glusman](mailto:gglusman@isbscience.org) — Institute for Systems Biology
69
+
70
+ Jared C. Roach — Institute for Systems Biology
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "tablassert"
3
- version = "7.5.2"
3
+ version = "8.0.1"
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