From ed14e8975f8fd6c86165fddf7bd38c0d269cd1a3 Mon Sep 17 00:00:00 2001 From: Eric Torstenson Date: Wed, 23 Sep 2026 16:56:43 -0500 Subject: [PATCH] Promoting the SQLA model to be first class --- .gitignore | 1 + project.justfile | 2 +- pyproject.toml | 33 ++++++++++++++++++++++----------- uv.lock | 19 +++++++++++-------- 4 files changed, 35 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index ae0e766..e1f731f 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ # generated pydantic model /src/include_access_model/datamodel/include_access_model_pydantic.py /src/include_access_model/datamodel/include_access_model.py +/src/include_access_model/datamodel/include_access_model_sqla.py # linkml-run-examples output (not useful to have in git in its current form) /examples/output/ diff --git a/project.justfile b/project.justfile index 8f02b1c..5639786 100644 --- a/project.justfile +++ b/project.justfile @@ -12,7 +12,7 @@ dbt: gen-sqla gen-ftddd gen-dbtmodel [group('model development')] gen-sqla: mkdir -p {{dest}}/sqlalchemy && \ - uv run gen-sqla {{source_schema_path}} --declarative > {{dest}}/sqlalchemy/{{schema_name}}.py + uv run gen-sqla {{source_schema_path}} --declarative > {{pymodel}}/{{schema_name}}_sqla.py [group('model development')] diff --git a/pyproject.toml b/pyproject.toml index bf52943..fd08961 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,8 @@ [build-system] -requires = ["hatchling", - "uv-dynamic-versioning", - "the-caddie"] +requires = [ + "hatchling>=1.32.0", + "uv-dynamic-versioning" +] build-backend = "hatchling.build" [project] @@ -17,21 +18,20 @@ requires-python = ">=3.12,<4.0" dynamic = ["version"] dependencies = [ - - "hatchling>=1.32.0", - "linkml>=1.11.0", - "linkml-runtime>=1.11.0", - "the-caddie", - "term-weaver" + "sqlalchemy", + "linkml-runtime>=1.11.0" ] [dependency-groups] dev = [ + "linkml>=1.11.0", "mkdocs-material>=8.2.8", "mkdocs-mermaid2-plugin>=1.1.1", "mkdocs-pymdownx-material-extras>=2.5.6", "jupyter>=1.0.0", "mknotebooks>= 0.8.0", + "the-caddie", + "term-weaver" ] # See https://hatch.pypa.io/latest/config/build/#file-selection for how to @@ -65,6 +65,7 @@ skip = [ "uv.lock", "project/*", "src/include_access_model/datamodel/include_access_model_pydantic.py", + "src/include_access_model/datamodel/include_access_model_sqla.py", "src/include_access_model/datamodel/include_access_model.py", ] @@ -72,9 +73,19 @@ skip = [ ignore-words-list = "linke" quiet-level = 3 -# Activate the hook -[tool.hatch.build.targets.wheel.hooks.caddie-sqla] +[tool.hatch.build.targets.wheel] +packages = ["src/include_access_model"] +artifacts = ["src/include_access_model/datamodel/*.py"] +[tool.hatch.build.targets.sdist] +artifacts = ["src/include_access_model/datamodel/*.py"] +exclude = [ + ".direnv", + ".venv", + "scratch", + "scripts", + "helpers" +] # Ref.: https://github.com/crate-ci/typos (spell checker) [tool.typos.default.extend-words] diff --git a/uv.lock b/uv.lock index 03fa579..f06010d 100644 --- a/uv.lock +++ b/uv.lock @@ -550,6 +550,7 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/44/69/9b804adb5fd0671f367781560eb5eb586c4d495277c93bde4307b9e28068/greenlet-3.2.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3b67ca49f54cede0186854a008109d6ee71f66bd57bb36abd6d0a0267b540cdd", size = 274079, upload-time = "2025-08-07T13:15:45.033Z" }, { url = "https://files.pythonhosted.org/packages/46/e9/d2a80c99f19a153eff70bc451ab78615583b8dac0754cfb942223d2c1a0d/greenlet-3.2.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ddf9164e7a5b08e9d22511526865780a576f19ddd00d62f8a665949327fde8bb", size = 640997, upload-time = "2025-08-07T13:42:56.234Z" }, { url = "https://files.pythonhosted.org/packages/3b/16/035dcfcc48715ccd345f3a93183267167cdd162ad123cd93067d86f27ce4/greenlet-3.2.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f28588772bb5fb869a8eb331374ec06f24a83a9c25bfa1f38b6993afe9c1e968", size = 655185, upload-time = "2025-08-07T13:45:27.624Z" }, + { url = "https://files.pythonhosted.org/packages/31/da/0386695eef69ffae1ad726881571dfe28b41970173947e7c558d9998de0f/greenlet-3.2.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:5c9320971821a7cb77cfab8d956fa8e39cd07ca44b6070db358ceb7f8797c8c9", size = 649926, upload-time = "2025-08-07T13:53:15.251Z" }, { url = "https://files.pythonhosted.org/packages/68/88/69bf19fd4dc19981928ceacbc5fd4bb6bc2215d53199e367832e98d1d8fe/greenlet-3.2.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c60a6d84229b271d44b70fb6e5fa23781abb5d742af7b808ae3f6efd7c9c60f6", size = 651839, upload-time = "2025-08-07T13:18:30.281Z" }, { url = "https://files.pythonhosted.org/packages/19/0d/6660d55f7373b2ff8152401a83e02084956da23ae58cddbfb0b330978fe9/greenlet-3.2.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b3812d8d0c9579967815af437d96623f45c0f2ae5f04e366de62a12d83a8fb0", size = 607586, upload-time = "2025-08-07T13:18:28.544Z" }, { url = "https://files.pythonhosted.org/packages/8e/1a/c953fdedd22d81ee4629afbb38d2f9d71e37d23caace44775a3a969147d4/greenlet-3.2.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:abbf57b5a870d30c4675928c37278493044d7c14378350b3aa5d484fa65575f0", size = 1123281, upload-time = "2025-08-07T13:42:39.858Z" }, @@ -560,6 +561,7 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/49/e8/58c7f85958bda41dafea50497cbd59738c5c43dbbea5ee83d651234398f4/greenlet-3.2.4-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:1a921e542453fe531144e91e1feedf12e07351b1cf6c9e8a3325ea600a715a31", size = 272814, upload-time = "2025-08-07T13:15:50.011Z" }, { url = "https://files.pythonhosted.org/packages/62/dd/b9f59862e9e257a16e4e610480cfffd29e3fae018a68c2332090b53aac3d/greenlet-3.2.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd3c8e693bff0fff6ba55f140bf390fa92c994083f838fece0f63be121334945", size = 641073, upload-time = "2025-08-07T13:42:57.23Z" }, { url = "https://files.pythonhosted.org/packages/f7/0b/bc13f787394920b23073ca3b6c4a7a21396301ed75a655bcb47196b50e6e/greenlet-3.2.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:710638eb93b1fa52823aa91bf75326f9ecdfd5e0466f00789246a5280f4ba0fc", size = 655191, upload-time = "2025-08-07T13:45:29.752Z" }, + { url = "https://files.pythonhosted.org/packages/f2/d6/6adde57d1345a8d0f14d31e4ab9c23cfe8e2cd39c3baf7674b4b0338d266/greenlet-3.2.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c5111ccdc9c88f423426df3fd1811bfc40ed66264d35aa373420a34377efc98a", size = 649516, upload-time = "2025-08-07T13:53:16.314Z" }, { url = "https://files.pythonhosted.org/packages/7f/3b/3a3328a788d4a473889a2d403199932be55b1b0060f4ddd96ee7cdfcad10/greenlet-3.2.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d76383238584e9711e20ebe14db6c88ddcedc1829a9ad31a584389463b5aa504", size = 652169, upload-time = "2025-08-07T13:18:32.861Z" }, { url = "https://files.pythonhosted.org/packages/ee/43/3cecdc0349359e1a527cbf2e3e28e5f8f06d3343aaf82ca13437a9aa290f/greenlet-3.2.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:23768528f2911bcd7e475210822ffb5254ed10d71f4028387e5a99b4c6699671", size = 610497, upload-time = "2025-08-07T13:18:31.636Z" }, { url = "https://files.pythonhosted.org/packages/b8/19/06b6cf5d604e2c382a6f31cafafd6f33d5dea706f4db7bdab184bad2b21d/greenlet-3.2.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:00fadb3fedccc447f517ee0d3fd8fe49eae949e1cd0f6a611818f4f6fb7dc83b", size = 1121662, upload-time = "2025-08-07T13:42:41.117Z" }, @@ -570,6 +572,7 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/22/5c/85273fd7cc388285632b0498dbbab97596e04b154933dfe0f3e68156c68c/greenlet-3.2.4-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:49a30d5fda2507ae77be16479bdb62a660fa51b1eb4928b524975b3bde77b3c0", size = 273586, upload-time = "2025-08-07T13:16:08.004Z" }, { url = "https://files.pythonhosted.org/packages/d1/75/10aeeaa3da9332c2e761e4c50d4c3556c21113ee3f0afa2cf5769946f7a3/greenlet-3.2.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:299fd615cd8fc86267b47597123e3f43ad79c9d8a22bebdce535e53550763e2f", size = 686346, upload-time = "2025-08-07T13:42:59.944Z" }, { url = "https://files.pythonhosted.org/packages/c0/aa/687d6b12ffb505a4447567d1f3abea23bd20e73a5bed63871178e0831b7a/greenlet-3.2.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:c17b6b34111ea72fc5a4e4beec9711d2226285f0386ea83477cbb97c30a3f3a5", size = 699218, upload-time = "2025-08-07T13:45:30.969Z" }, + { url = "https://files.pythonhosted.org/packages/dc/8b/29aae55436521f1d6f8ff4e12fb676f3400de7fcf27fccd1d4d17fd8fecd/greenlet-3.2.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b4a1870c51720687af7fa3e7cda6d08d801dae660f75a76f3845b642b4da6ee1", size = 694659, upload-time = "2025-08-07T13:53:17.759Z" }, { url = "https://files.pythonhosted.org/packages/92/2e/ea25914b1ebfde93b6fc4ff46d6864564fba59024e928bdc7de475affc25/greenlet-3.2.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:061dc4cf2c34852b052a8620d40f36324554bc192be474b9e9770e8c042fd735", size = 695355, upload-time = "2025-08-07T13:18:34.517Z" }, { url = "https://files.pythonhosted.org/packages/72/60/fc56c62046ec17f6b0d3060564562c64c862948c9d4bc8aa807cf5bd74f4/greenlet-3.2.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:44358b9bf66c8576a9f57a590d5f5d6e72fa4228b763d0e43fee6d3b06d3a337", size = 657512, upload-time = "2025-08-07T13:18:33.969Z" }, { url = "https://files.pythonhosted.org/packages/23/6e/74407aed965a4ab6ddd93a7ded3180b730d281c77b765788419484cdfeef/greenlet-3.2.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2917bdf657f5859fbf3386b12d68ede4cf1f04c90c3a6bc1f013dd68a22e2269", size = 1612508, upload-time = "2025-11-04T12:42:23.427Z" }, @@ -670,38 +673,38 @@ wheels = [ name = "include-access-model" source = { editable = "." } dependencies = [ - { name = "hatchling" }, - { name = "linkml" }, { name = "linkml-runtime" }, - { name = "term-weaver" }, - { name = "the-caddie" }, + { name = "sqlalchemy" }, ] [package.dev-dependencies] dev = [ { name = "jupyter" }, + { name = "linkml" }, { name = "mkdocs-material" }, { name = "mkdocs-mermaid2-plugin" }, { name = "mkdocs-pymdownx-material-extras" }, { name = "mknotebooks" }, + { name = "term-weaver" }, + { name = "the-caddie" }, ] [package.metadata] requires-dist = [ - { name = "hatchling", specifier = ">=1.32.0" }, - { name = "linkml", specifier = ">=1.11.0" }, { name = "linkml-runtime", specifier = ">=1.11.0" }, - { name = "term-weaver", git = "https://github.com/include-dcc/term-weaver" }, - { name = "the-caddie", git = "https://github.com/carrollaboratory/the-caddie" }, + { name = "sqlalchemy" }, ] [package.metadata.requires-dev] dev = [ { name = "jupyter", specifier = ">=1.0.0" }, + { name = "linkml", specifier = ">=1.11.0" }, { name = "mkdocs-material", specifier = ">=8.2.8" }, { name = "mkdocs-mermaid2-plugin", specifier = ">=1.1.1" }, { name = "mkdocs-pymdownx-material-extras", specifier = ">=2.5.6" }, { name = "mknotebooks", specifier = ">=0.8.0" }, + { name = "term-weaver", git = "https://github.com/include-dcc/term-weaver" }, + { name = "the-caddie", git = "https://github.com/carrollaboratory/the-caddie" }, ] [[package]]