tablassert 7.4.4__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.4 → tablassert-7.4.5}/.gitignore +1 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/CHANGELOG.md +7 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/PKG-INFO +2 -1
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/changelog.md +4 -3
- {tablassert-7.4.4 → tablassert-7.4.5}/pyproject.toml +2 -1
- {tablassert-7.4.4 → tablassert-7.4.5}/src/tablassert/models.py +13 -2
- {tablassert-7.4.4 → tablassert-7.4.5}/uv.lock +12 -1
- {tablassert-7.4.4 → tablassert-7.4.5}/.github/workflows/autotag.yml +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/.github/workflows/docker.yml +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/.github/workflows/docs.yml +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/.github/workflows/pipy.yml +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/.pre-commit-config.yaml +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/AGENTS.md +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/CITATION.cff +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/CONTRIBUTING.md +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/Dockerfile +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/LICENSE +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/README.md +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/api/fullmap.md +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/api/lib.md +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/api/qc.md +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/api/utils.md +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/cli.md +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/configuration/advanced-example.md +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/configuration/graph.md +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/configuration/table.md +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/datassert.md +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/docker.md +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/examples/tutorial-data.csv +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/examples/tutorial-graph.yaml +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/examples/tutorial-table.yaml +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/examples.md +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/index.md +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/installation.md +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/docs/tutorial.md +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/llms.txt +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/mkdocs.yml +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/src/tablassert/__init__.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/src/tablassert/cli.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/src/tablassert/downloader.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/src/tablassert/enums.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/src/tablassert/fullmap.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/src/tablassert/ingests.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/src/tablassert/lib.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/src/tablassert/log.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/src/tablassert/nlp.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/src/tablassert/progress.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/src/tablassert/qc.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/src/tablassert/utils.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/tests/__init__.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/tests/conftest.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/tests/fixtures/invalid_section_missing_source.yaml +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/tests/fixtures/minimal_section.yaml +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/tests/fixtures/minimal_section_with_sections.yaml +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/tests/test_downloader.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/tests/test_enums.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/tests/test_fullmap.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/tests/test_ingests.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/tests/test_lib.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/tests/test_models.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/tests/test_nlp.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/tests/test_qc.py +0 -0
- {tablassert-7.4.4 → tablassert-7.4.5}/tests/test_utils.py +0 -0
|
@@ -2,6 +2,13 @@
|
|
|
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
|
+
|
|
5
12
|
## 7.4.4 - 2026-05-11
|
|
6
13
|
|
|
7
14
|
### Changes
|
|
@@ -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
|
|
@@ -4,11 +4,12 @@ The canonical release history lives in the repository root at [`CHANGELOG.md`](h
|
|
|
4
4
|
|
|
5
5
|
## Current Release Notes
|
|
6
6
|
|
|
7
|
-
## 7.4.
|
|
7
|
+
## 7.4.5 - 2026-05-11
|
|
8
8
|
|
|
9
9
|
### Changes
|
|
10
10
|
|
|
11
|
-
-
|
|
12
|
-
- Increased the `httpx.head()` timeout in the `url` validator from
|
|
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.
|
|
13
14
|
|
|
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,19 +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
94
|
if 400 <= r.status_code < 500:
|
|
87
95
|
r.raise_for_status()
|
|
96
|
+
|
|
97
|
+
try:
|
|
98
|
+
check_url(s)
|
|
88
99
|
except Exception as e:
|
|
89
100
|
msg: str = f"12 | not a real url {s} | {e}"
|
|
90
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" },
|
|
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
|