Heavy dependency tree #208

Open
opened 2026-06-22 18:52:52 +00:00 by mih · 3 comments
Owner

A default installation requires >250MB. The heavy hitters are

  89.9 MiB [###########] /git_annex
   32.4 MiB [###        ] /babel
   16.6 MiB [##         ] /sphinx
   15.7 MiB [#          ] /uvloop
   13.2 MiB [#          ] /sqlalchemy
    6.4 MiB [           ] /aiohttp
    6.3 MiB [           ] /prefixmaps
    5.3 MiB [           ] /linkml_runtime
    ...

It is unclear to me what pulls in sphinx or babel.

I am curious what is used in datalad-core, and whether that would serve as an argument to drop the strict dependency on git-annex?

A default installation requires >250MB. The heavy hitters are ``` 89.9 MiB [###########] /git_annex 32.4 MiB [### ] /babel 16.6 MiB [## ] /sphinx 15.7 MiB [# ] /uvloop 13.2 MiB [# ] /sqlalchemy 6.4 MiB [ ] /aiohttp 6.3 MiB [ ] /prefixmaps 5.3 MiB [ ] /linkml_runtime ... ``` It is unclear to me what pulls in sphinx or babel. I am curious what is used in datalad-core, and whether that would serve as an argument to drop the strict dependency on git-annex?
Owner

It seems that linkml==1.11.1 requires sphinx and babel, fastapi=0.138.0 requires uvicorn, which in turn requires uvloop.

I don't see an easy way to prune the dependency tree. We need the complete linkml (linkml-runtime is not sufficient) for the dynamic endpoint generation based on linkml-schemas.

I am curious what is used in datalad-core, and whether that would serve as an argument to drop the strict dependency on git-annex?

datalad_core is used by gitaudit (currently the only available audit-backend):

from datalad_core.git_utils import apply_changeset
from datalad_core.repo import Repo
from datalad_core.runners import (
    call_git,
    CommandError,
)

Repo is used to execute apply_changeset. call_git is used to invoke:

  • git ls-tree
  • git show
  • git log
  • git cat-file
  • git init

So there is no annex-specific call in the gitaudit-backend code.

It seems that `linkml==1.11.1` requires `sphinx` and `babel`, `fastapi=0.138.0` requires `uvicorn`, which in turn requires `uvloop`. I don't see an easy way to prune the dependency tree. We need the complete `linkml` (`linkml-runtime` is not sufficient) for the dynamic endpoint generation based on linkml-schemas. > I am curious what is used in datalad-core, and whether that would serve as an argument to drop the strict dependency on git-annex? `datalad_core` is used by `gitaudit` (currently the only available audit-backend): ```python from datalad_core.git_utils import apply_changeset from datalad_core.repo import Repo from datalad_core.runners import ( call_git, CommandError, ) ``` `Repo` is used to execute `apply_changeset`. `call_git` is used to invoke: - git ls-tree - git show - git log - git cat-file - git init So there is no annex-specific call in the gitaudit-backend code.
Author
Owner

Thanks for the analysis. So indeed a motivation to make the git-annex dependency optional.

re linkml and looking at https://github.com/linkml/linkml/blob/main/packages/linkml/pyproject.toml -- I only see sphinx being an optional dependency and babel not mentioned directly.

Thanks for the analysis. So indeed a motivation to make the git-annex dependency optional. re linkml and looking at https://github.com/linkml/linkml/blob/main/packages/linkml/pyproject.toml -- I only see sphinx being an optional dependency and babel not mentioned directly.
Author
Owner

With the datalad-core v0.3.0 release the git-annex dependency is dropped (now optional).
Full size of a uv-based deployment (excluding the python installation) is 172M now.

With the datalad-core v0.3.0 release the git-annex dependency is dropped (now optional). Full size of a uv-based deployment (excluding the python installation) is 172M now.
Sign in to join this conversation.
No milestone
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
orinoco/dump-things-service#208
No description provided.