SSSOM-Py currently depends on sssom_schema, the Python package provided by the mapping-commons/sssom repository (the repository holding the SSSOM spec and documentation.
That package provides 3 things:
- the
sssom_schema.datamodel.sssom_schema.py Python module, containing the Python data classes representing the SSSOM data model (the MappingSet and Mapping classes and the associated enums);
- the
sssom_schema.yaml LinkML schema, which is used by SSSOM-Py to get some details about the data model that are not contained within the generated data classes;
- the
sssom_schema.context.jsonld file, which is used by SSSOM-Py for JSONLD-related stuff.
It’s not immediately clear to me what are the benefits of getting those files from a released version of sssom_schema, compared to embedding them directly into this SSSOM-Py repository. And there is at least one very clear drawback, which is that SSSOM-Py cannot start supporting any new thing from the SSSOM schema until we’ve had a release of sssom_schema on PyPI. This is what forced us to start making “pre-releases” of sssom_schema, which apparently are now causing problems with uv because uv has seemingly strong opinions about dependencies that are in pre-release stage.
So I would like to suggest that we should consider dropping the dependency on sssom_schema, and instead start bundling “vendored” copies of the aforementioned three files, copied directly from the mapping-commons/sssom repository. We would then be able to update those files whenever we feel like it, without having to go through a PyPI release of sssom_schema.
(This in turn would raise the question of “what is the point of the sssom_schema package”, to which my instinctive answer would be “none”.)
SSSOM-Py currently depends on
sssom_schema, the Python package provided by the mapping-commons/sssom repository (the repository holding the SSSOM spec and documentation.That package provides 3 things:
sssom_schema.datamodel.sssom_schema.pyPython module, containing the Python data classes representing the SSSOM data model (theMappingSetandMappingclasses and the associated enums);sssom_schema.yamlLinkML schema, which is used by SSSOM-Py to get some details about the data model that are not contained within the generated data classes;sssom_schema.context.jsonldfile, which is used by SSSOM-Py for JSONLD-related stuff.It’s not immediately clear to me what are the benefits of getting those files from a released version of
sssom_schema, compared to embedding them directly into this SSSOM-Py repository. And there is at least one very clear drawback, which is that SSSOM-Py cannot start supporting any new thing from the SSSOM schema until we’ve had a release ofsssom_schemaon PyPI. This is what forced us to start making “pre-releases” ofsssom_schema, which apparently are now causing problems withuvbecauseuvhas seemingly strong opinions about dependencies that are in pre-release stage.So I would like to suggest that we should consider dropping the dependency on
sssom_schema, and instead start bundling “vendored” copies of the aforementioned three files, copied directly from the mapping-commons/sssom repository. We would then be able to update those files whenever we feel like it, without having to go through a PyPI release ofsssom_schema.(This in turn would raise the question of “what is the point of the
sssom_schemapackage”, to which my instinctive answer would be “none”.)