tablassert 7.4.3__tar.gz → 7.4.5__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.
- {tablassert-7.4.3 → tablassert-7.4.5}/.gitignore +1 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/CHANGELOG.md +13 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/PKG-INFO +2 -1
- tablassert-7.4.5/docs/changelog.md +15 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/pyproject.toml +2 -1
- {tablassert-7.4.3 → tablassert-7.4.5}/src/tablassert/models.py +15 -3
- {tablassert-7.4.3 → tablassert-7.4.5}/uv.lock +12 -1
- tablassert-7.4.3/docs/changelog.md +0 -13
- {tablassert-7.4.3 → tablassert-7.4.5}/.github/workflows/autotag.yml +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/.github/workflows/docker.yml +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/.github/workflows/docs.yml +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/.github/workflows/pipy.yml +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/.pre-commit-config.yaml +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/AGENTS.md +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/CITATION.cff +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/CONTRIBUTING.md +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/Dockerfile +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/LICENSE +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/README.md +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/docs/api/fullmap.md +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/docs/api/lib.md +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/docs/api/qc.md +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/docs/api/utils.md +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/docs/cli.md +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/docs/configuration/advanced-example.md +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/docs/configuration/graph.md +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/docs/configuration/table.md +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/docs/datassert.md +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/docs/docker.md +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/docs/examples/tutorial-data.csv +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/docs/examples/tutorial-graph.yaml +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/docs/examples/tutorial-table.yaml +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/docs/examples.md +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/docs/index.md +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/docs/installation.md +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/docs/tutorial.md +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/llms.txt +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/mkdocs.yml +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/src/tablassert/__init__.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/src/tablassert/cli.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/src/tablassert/downloader.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/src/tablassert/enums.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/src/tablassert/fullmap.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/src/tablassert/ingests.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/src/tablassert/lib.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/src/tablassert/log.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/src/tablassert/nlp.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/src/tablassert/progress.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/src/tablassert/qc.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/src/tablassert/utils.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/tests/__init__.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/tests/conftest.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/tests/fixtures/invalid_section_missing_source.yaml +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/tests/fixtures/minimal_section.yaml +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/tests/fixtures/minimal_section_with_sections.yaml +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/tests/test_downloader.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/tests/test_enums.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/tests/test_fullmap.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/tests/test_ingests.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/tests/test_lib.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/tests/test_models.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/tests/test_nlp.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/tests/test_qc.py +0 -0
- {tablassert-7.4.3 → tablassert-7.4.5}/tests/test_utils.py +0 -0
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project are documented in this file.
|
|
4
4
|
|
|
5
|
+
## 7.4.5 - 2026-05-11
|
|
6
|
+
|
|
7
|
+
### Changes
|
|
8
|
+
- Cached `BaseSource.is_real_url` validator results to a `diskcache.Cache` at `.cachassert/` in `models.py`, so repeated config parses skip redundant `httpx.head()` round-trips against unchanged URLs.
|
|
9
|
+
- Increased `is_real_url` `httpx.head()` timeout from 5.0s to 15.0s to further reduce spurious validation failures against slow upstreams.
|
|
10
|
+
- Added `diskcache>=5.6.3` runtime dependency.
|
|
11
|
+
|
|
12
|
+
## 7.4.4 - 2026-05-11
|
|
13
|
+
|
|
14
|
+
### Changes
|
|
15
|
+
- Relaxed `BaseSource.is_real_url` validator in `models.py` to only raise on 4xx responses from `httpx.head()`. Servers that return 5xx or other non-2xx statuses to `HEAD` requests no longer fail config validation, since the URL itself is still well-formed and reachable.
|
|
16
|
+
- Increased `is_real_url` `httpx.head()` timeout from 3.0s to 5.0s to reduce spurious validation failures against slow upstreams.
|
|
17
|
+
|
|
5
18
|
## 7.4.3 - 2026-05-11
|
|
6
19
|
|
|
7
20
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tablassert
|
|
3
|
-
Version: 7.4.
|
|
3
|
+
Version: 7.4.5
|
|
4
4
|
Summary: Extract knowledge assertions from tabular data into NCATS Translator-compliant KGX NDJSON — declaratively, with entity resolution and quality control built in.
|
|
5
5
|
Project-URL: Homepage, https://github.com/SkyeAv/Tablassert
|
|
6
6
|
Project-URL: Source, https://github.com/SkyeAv/Tablassert
|
|
@@ -25,6 +25,7 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
|
25
25
|
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
26
26
|
Requires-Python: >=3.11
|
|
27
27
|
Requires-Dist: cyclopts>=1.0.0
|
|
28
|
+
Requires-Dist: diskcache>=5.6.3
|
|
28
29
|
Requires-Dist: duckdb>=1.5.0
|
|
29
30
|
Requires-Dist: fastexcel>=0.19.0
|
|
30
31
|
Requires-Dist: httpx>=0.28.1
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
The canonical release history lives in the repository root at [`CHANGELOG.md`](https://github.com/SkyeAv/Tablassert/blob/main/CHANGELOG.md).
|
|
4
|
+
|
|
5
|
+
## Current Release Notes
|
|
6
|
+
|
|
7
|
+
## 7.4.5 - 2026-05-11
|
|
8
|
+
|
|
9
|
+
### Changes
|
|
10
|
+
|
|
11
|
+
- Cached `url` field validator results in `BaseSource` to a `diskcache.Cache` stored at `.cachassert/`, so repeated config parses skip redundant `httpx.head()` round-trips against unchanged URLs.
|
|
12
|
+
- Increased the `httpx.head()` timeout in the `url` validator from 5.0s to 15.0s to further tolerate slower upstreams.
|
|
13
|
+
- Added `diskcache` as a runtime dependency.
|
|
14
|
+
|
|
15
|
+
For older releases and the full project history, open the root `CHANGELOG.md` in the repository.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "tablassert"
|
|
3
|
-
version = "7.4.
|
|
3
|
+
version = "7.4.5"
|
|
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" }
|
|
@@ -59,6 +59,7 @@ dependencies = [
|
|
|
59
59
|
"cyclopts>=1.0.0",
|
|
60
60
|
"rich>=13.0.0",
|
|
61
61
|
"xxhash>=3.6.0",
|
|
62
|
+
"diskcache>=5.6.3",
|
|
62
63
|
]
|
|
63
64
|
|
|
64
65
|
[project.urls]
|
|
@@ -6,6 +6,7 @@ from pathlib import Path
|
|
|
6
6
|
from typing import TYPE_CHECKING, Any, Literal, Optional, Self, Union
|
|
7
7
|
|
|
8
8
|
import lazy_loader as Lazy
|
|
9
|
+
from diskcache import Cache
|
|
9
10
|
from pydantic import BaseModel, ConfigDict, Field, HttpUrl, PositiveInt, field_validator, model_validator
|
|
10
11
|
|
|
11
12
|
from tablassert.enums import (
|
|
@@ -72,18 +73,29 @@ class Reindex(TablaBase):
|
|
|
72
73
|
return self
|
|
73
74
|
|
|
74
75
|
|
|
76
|
+
CACHE: Path = Path(".cachassert/")
|
|
77
|
+
CACHE.mkdir(parents=True, exist_ok=True)
|
|
78
|
+
|
|
79
|
+
URL_CACHE: Cache = Cache(CACHE)
|
|
80
|
+
|
|
81
|
+
|
|
75
82
|
class BaseSource(TablaBase):
|
|
76
83
|
local: Path = Field(..., description="Local path to read from or download into.")
|
|
77
84
|
url: HttpUrl = Field(..., description="Remote source URL fetched before parsing.")
|
|
78
85
|
|
|
79
86
|
@field_validator("url", mode="after")
|
|
80
87
|
@classmethod
|
|
81
|
-
def is_real_url(cls, url: HttpUrl
|
|
88
|
+
def is_real_url(cls, url: HttpUrl) -> HttpUrl:
|
|
82
89
|
s: str = str(url)
|
|
83
90
|
|
|
84
|
-
|
|
91
|
+
@URL_CACHE.memoize()
|
|
92
|
+
def check_url(s: str, timeout: float = 15.0) -> None:
|
|
85
93
|
r: Any = httpx.head(s, timeout=timeout, follow_redirects=True)
|
|
86
|
-
r.
|
|
94
|
+
if 400 <= r.status_code < 500:
|
|
95
|
+
r.raise_for_status()
|
|
96
|
+
|
|
97
|
+
try:
|
|
98
|
+
check_url(s)
|
|
87
99
|
except Exception as e:
|
|
88
100
|
msg: str = f"12 | not a real url {s} | {e}"
|
|
89
101
|
raise ValueError(msg)
|
|
@@ -293,6 +293,15 @@ wheels = [
|
|
|
293
293
|
{ url = "https://files.pythonhosted.org/packages/23/18/4cedda786e7da429e7489549a9e5461530d4133130e541f25fb94f015776/cyclopts-4.11.2-py3-none-any.whl", hash = "sha256:838020120b939549ff7c8423aca29c86764b5dd1d8a5d7f3753a6327861f537b", size = 213537, upload-time = "2026-05-04T00:11:56.103Z" },
|
|
294
294
|
]
|
|
295
295
|
|
|
296
|
+
[[package]]
|
|
297
|
+
name = "diskcache"
|
|
298
|
+
version = "5.6.3"
|
|
299
|
+
source = { registry = "https://pypi.org/simple" }
|
|
300
|
+
sdist = { url = "https://files.pythonhosted.org/packages/3f/21/1c1ffc1a039ddcc459db43cc108658f32c57d271d7289a2794e401d0fdb6/diskcache-5.6.3.tar.gz", hash = "sha256:2c3a3fa2743d8535d832ec61c2054a1641f41775aa7c556758a109941e33e4fc", size = 67916, upload-time = "2023-08-31T06:12:00.316Z" }
|
|
301
|
+
wheels = [
|
|
302
|
+
{ url = "https://files.pythonhosted.org/packages/3f/27/4570e78fc0bf5ea0ca45eb1de3818a23787af9b390c0b0a0033a1b8236f9/diskcache-5.6.3-py3-none-any.whl", hash = "sha256:5e31b2d5fbad117cc363ebaf6b689474db18a1f6438bc82358b024abd4c2ca19", size = 45550, upload-time = "2023-08-31T06:11:58.822Z" },
|
|
303
|
+
]
|
|
304
|
+
|
|
296
305
|
[[package]]
|
|
297
306
|
name = "distlib"
|
|
298
307
|
version = "0.4.0"
|
|
@@ -2351,10 +2360,11 @@ wheels = [
|
|
|
2351
2360
|
|
|
2352
2361
|
[[package]]
|
|
2353
2362
|
name = "tablassert"
|
|
2354
|
-
version = "7.4.
|
|
2363
|
+
version = "7.4.5"
|
|
2355
2364
|
source = { editable = "." }
|
|
2356
2365
|
dependencies = [
|
|
2357
2366
|
{ name = "cyclopts" },
|
|
2367
|
+
{ name = "diskcache" },
|
|
2358
2368
|
{ name = "duckdb" },
|
|
2359
2369
|
{ name = "fastexcel" },
|
|
2360
2370
|
{ name = "httpx" },
|
|
@@ -2401,6 +2411,7 @@ dev = [
|
|
|
2401
2411
|
[package.metadata]
|
|
2402
2412
|
requires-dist = [
|
|
2403
2413
|
{ name = "cyclopts", specifier = ">=1.0.0" },
|
|
2414
|
+
{ name = "diskcache", specifier = ">=5.6.3" },
|
|
2404
2415
|
{ name = "duckdb", specifier = ">=1.5.0" },
|
|
2405
2416
|
{ name = "fastexcel", specifier = ">=0.19.0" },
|
|
2406
2417
|
{ name = "httpx", specifier = ">=0.28.1" },
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
The canonical release history lives in the repository root at [`CHANGELOG.md`](https://github.com/SkyeAv/Tablassert/blob/main/CHANGELOG.md).
|
|
4
|
-
|
|
5
|
-
## Current Release Notes
|
|
6
|
-
|
|
7
|
-
## 7.4.3 - 2026-05-11
|
|
8
|
-
|
|
9
|
-
### Bug Fixes
|
|
10
|
-
|
|
11
|
-
- Fixed `compile_graph()` emitting output paths with the trailing semver segment stripped (e.g. `tablassert_7.4` instead of `tablassert_7.4.3`). `Path.with_suffix()` treated the version's final `.N` as the path suffix; the base path now carries a `.tmp` sentinel that gets replaced instead. Temp suffixes also normalized from `.temp` to `.tmp`.
|
|
12
|
-
|
|
13
|
-
For older releases and the full project history, open the root `CHANGELOG.md` in the repository.
|
|
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
|