From 97f82a0d05ed5a9a96f804f88a02135129ecc03e Mon Sep 17 00:00:00 2001 From: Sierra Moxon Date: Thu, 12 Oct 2023 14:10:46 -0700 Subject: [PATCH] use merged.csv prefixmap so that FB and FlyBase are recognized prefixes (#382) Addresses #383 --------- Co-authored-by: Kevin Schaper --- backend/poetry.lock | 412 ++++++++++++++++-- backend/pyproject.toml | 6 +- .../src/monarch_py/service/curie_service.py | 8 +- backend/tests/unit/test_curie_service.py | 29 ++ 4 files changed, 413 insertions(+), 42 deletions(-) create mode 100644 backend/tests/unit/test_curie_service.py diff --git a/backend/poetry.lock b/backend/poetry.lock index bc8f92767..baf16c983 100644 --- a/backend/poetry.lock +++ b/backend/poetry.lock @@ -1,9 +1,10 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. [[package]] name = "airium" version = "0.2.6" description = "Easy and quick html builder with natural syntax correspondence (python->html). No templates needed. Serves pure pythonic library with no dependencies." +category = "main" optional = false python-versions = "*" files = [ @@ -19,6 +20,7 @@ parse = ["beautifulsoup4 (>=4.10.0,<5.0)", "requests (>=2.12.0,<3)"] name = "alabaster" version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -30,6 +32,7 @@ files = [ name = "antlr4-python3-runtime" version = "4.9.3" description = "ANTLR 4.9.3 runtime for Python 3.7" +category = "main" optional = false python-versions = "*" files = [ @@ -40,6 +43,7 @@ files = [ name = "anyio" version = "3.7.1" description = "High level compatibility layer for multiple asynchronous event loop implementations" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -61,6 +65,7 @@ trio = ["trio (<0.22)"] name = "appdirs" version = "1.4.4" description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "main" optional = false python-versions = "*" files = [ @@ -72,6 +77,7 @@ files = [ name = "arrow" version = "1.2.3" description = "Better dates & times for Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -86,6 +92,7 @@ python-dateutil = ">=2.7.0" name = "attrs" version = "23.1.0" description = "Classes Without Boilerplate" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -104,6 +111,7 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte name = "babel" version = "2.12.1" description = "Internationalization utilities" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -115,6 +123,7 @@ files = [ name = "bcp47" version = "0.0.4" description = "Language tags made easy" +category = "main" optional = false python-versions = "*" files = [ @@ -126,6 +135,7 @@ files = [ name = "beautifulsoup4" version = "4.12.2" description = "Screen-scraping library" +category = "main" optional = false python-versions = ">=3.6.0" files = [ @@ -144,6 +154,7 @@ lxml = ["lxml"] name = "bibtexparser" version = "1.4.1" description = "Bibtex parser for python 3" +category = "dev" optional = false python-versions = "*" files = [ @@ -153,10 +164,42 @@ files = [ [package.dependencies] pyparsing = ">=2.0.3" +[[package]] +name = "bioregistry" +version = "0.10.57" +description = "Integrated registry of biological databases and nomenclatures" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "bioregistry-0.10.57-py3-none-any.whl", hash = "sha256:b04494de6c43e51e495cbb531ab0b8aca08dbcfc0cfedeac13456e38bfdedae0"}, + {file = "bioregistry-0.10.57.tar.gz", hash = "sha256:7054b5cfe4d02e346499a3d676ce7ea3448feb68714ba3aa622299a606293f5c"}, +] + +[package.dependencies] +click = "*" +curies = ">=0.6.0" +more-click = ">=0.1.2" +pydantic = "*" +pystow = ">=0.1.13" +requests = "*" +tqdm = "*" + +[package.extras] +align = ["beautifulsoup4", "class-resolver", "defusedxml", "fairsharing-client (>=0.1.0)", "pyyaml", "tabulate"] +charts = ["jinja2", "matplotlib", "matplotlib-venn", "pandas", "seaborn"] +docs = ["autodoc-pydantic", "sphinx", "sphinx-automodapi", "sphinx-click", "sphinx-rtd-theme"] +export = ["ndex2", "pyyaml", "rdflib", "rdflib-jsonld"] +gha = ["more-itertools"] +health = ["click-default-group", "jinja2", "pandas", "pyyaml", "tabulate"] +tests = ["coverage", "httpx", "more-itertools", "pytest"] +web = ["bootstrap-flask (<=2.0.0)", "curies[fastapi]", "fastapi", "flask (<2.2.4)", "markdown", "pyyaml", "rdflib", "rdflib-endpoint", "rdflib-jsonld", "uvicorn", "werkzeug (<2.3.0)"] + [[package]] name = "black" version = "22.12.0" description = "The uncompromising code formatter." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -188,10 +231,23 @@ d = ["aiohttp (>=3.7.4)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] +[[package]] +name = "cachetools" +version = "5.3.1" +description = "Extensible memoizing collections and decorators" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "cachetools-5.3.1-py3-none-any.whl", hash = "sha256:95ef631eeaea14ba2e36f06437f36463aac3a096799e876ee55e5cdccb102590"}, + {file = "cachetools-5.3.1.tar.gz", hash = "sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b"}, +] + [[package]] name = "cattrs" version = "23.1.2" description = "Composable complex class support for attrs and dataclasses." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -217,6 +273,7 @@ ujson = ["ujson (>=5.4.0,<6.0.0)"] name = "certifi" version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -228,6 +285,7 @@ files = [ name = "cffi" version = "1.15.1" description = "Foreign Function Interface for Python calling C code." +category = "dev" optional = false python-versions = "*" files = [ @@ -304,6 +362,7 @@ pycparser = "*" name = "cfgraph" version = "0.2.1" description = "rdflib collections flattening graph" +category = "main" optional = false python-versions = "*" files = [ @@ -317,6 +376,7 @@ rdflib = ">=0.4.2" name = "chardet" version = "5.2.0" description = "Universal encoding detector for Python 3" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -328,6 +388,7 @@ files = [ name = "charset-normalizer" version = "3.2.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -412,6 +473,7 @@ files = [ name = "class-resolver" version = "0.4.2" description = "Lookup and instantiate classes with style." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -438,6 +500,7 @@ torch-geometric = ["torch", "torch-geometric", "torch-sparse"] name = "click" version = "8.1.7" description = "Composable command line interface toolkit" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -452,6 +515,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -463,6 +527,7 @@ files = [ name = "curies" version = "0.6.4" description = "Idiomatic conversion between URIs and compact URIs (CURIEs)." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -487,6 +552,7 @@ tests = ["coverage", "pytest"] name = "deprecated" version = "1.2.14" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -504,6 +570,7 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] name = "deprecation" version = "2.1.0" description = "A library to handle automated deprecations" +category = "main" optional = false python-versions = "*" files = [ @@ -514,10 +581,23 @@ files = [ [package.dependencies] packaging = "*" +[[package]] +name = "distlib" +version = "0.3.7" +description = "Distribution utilities" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "distlib-0.3.7-py2.py3-none-any.whl", hash = "sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057"}, + {file = "distlib-0.3.7.tar.gz", hash = "sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8"}, +] + [[package]] name = "docker" version = "6.1.3" description = "A Python library for the Docker Engine API." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -539,6 +619,7 @@ ssh = ["paramiko (>=2.4.3)"] name = "docutils" version = "0.18.1" description = "Docutils -- Python Documentation Utilities" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -550,6 +631,7 @@ files = [ name = "editorconfig" version = "0.12.3" description = "EditorConfig File Locator and Interpreter for Python" +category = "main" optional = false python-versions = "*" files = [ @@ -561,6 +643,7 @@ files = [ name = "errorhandler" version = "2.0.1" description = "A logging framework handler that tracks when messages above a certain level have been logged." +category = "dev" optional = false python-versions = "*" files = [ @@ -576,6 +659,7 @@ test = ["coveralls", "nose", "nose-cov", "nose-fixes"] name = "et-xmlfile" version = "1.1.0" description = "An implementation of lxml.xmlfile for the standard library" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -587,6 +671,7 @@ files = [ name = "eutils" version = "0.6.0" description = "\"Python interface to NCBI's eutilities API\"" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -606,6 +691,7 @@ dev = ["flake8", "ipython", "mock", "pytest", "pytest-cov", "restview", "setupto name = "exceptiongroup" version = "1.1.3" description = "Backport of PEP 654 (exception groups)" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -620,6 +706,7 @@ test = ["pytest (>=6)"] name = "fake-useragent" version = "1.2.1" description = "Up-to-date simple useragent faker with real world database" +category = "dev" optional = false python-versions = "*" files = [ @@ -634,6 +721,7 @@ importlib-resources = {version = ">=5.0", markers = "python_version < \"3.10\""} name = "fastapi" version = "0.103.1" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -654,6 +742,7 @@ all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)" name = "fastobo" version = "0.12.2" description = "Faultless AST for Open Biomedical Ontologies in Python." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -696,10 +785,28 @@ files = [ {file = "fastobo-0.12.2.tar.gz", hash = "sha256:2f2779f70ac54874329dddc74cabd86fea88abe56c544c2238076c1d27fe045e"}, ] +[[package]] +name = "filelock" +version = "3.12.4" +description = "A platform independent file lock." +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "filelock-3.12.4-py3-none-any.whl", hash = "sha256:08c21d87ded6e2b9da6728c3dff51baf1dcecf973b768ef35bcbc3447edb9ad4"}, + {file = "filelock-3.12.4.tar.gz", hash = "sha256:2e6f249f1f3654291606e046b09f1fd5eac39b360664c27f5aad072012f8bcbd"}, +] + +[package.extras] +docs = ["furo (>=2023.7.26)", "sphinx (>=7.1.2)", "sphinx-autodoc-typehints (>=1.24)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3)", "diff-cover (>=7.7)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "pytest-timeout (>=2.1)"] +typing = ["typing-extensions (>=4.7.1)"] + [[package]] name = "fqdn" version = "1.5.1" description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" +category = "main" optional = false python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" files = [ @@ -711,6 +818,7 @@ files = [ name = "free-proxy" version = "1.1.1" description = "Proxy scraper for further use" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -725,6 +833,7 @@ requests = "*" name = "funowl" version = "0.2.3" description = "Python rendering of the OWL Functional syntax" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -744,6 +853,7 @@ rfc3987 = "*" name = "ghp-import" version = "2.1.0" description = "Copy your docs directly to the gh-pages branch." +category = "main" optional = false python-versions = "*" files = [ @@ -761,6 +871,7 @@ dev = ["flake8", "markdown", "twine", "wheel"] name = "graphviz" version = "0.20.1" description = "Simple Python interface for Graphviz" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -777,6 +888,7 @@ test = ["coverage", "mock (>=4)", "pytest (>=7)", "pytest-cov", "pytest-mock (>= name = "greenlet" version = "2.0.1" description = "Lightweight in-process concurrent programming" +category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" files = [ @@ -850,6 +962,7 @@ test = ["faulthandler", "objgraph", "psutil"] name = "griffe" version = "0.36.2" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -864,6 +977,7 @@ colorama = ">=0.4" name = "gunicorn" version = "21.2.0" description = "WSGI HTTP Server for UNIX" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -884,6 +998,7 @@ tornado = ["tornado (>=0.2)"] name = "h11" version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -895,6 +1010,7 @@ files = [ name = "habanero" version = "1.2.3" description = "Low Level Client for Crossref Search API" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -914,6 +1030,7 @@ test = ["pytest"] name = "hbreader" version = "0.9.1" description = "Honey Badger reader - a generic file/url/string open and read tool" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -925,6 +1042,7 @@ files = [ name = "httpcore" version = "0.17.3" description = "A minimal low-level HTTP client." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -936,16 +1054,17 @@ files = [ anyio = ">=3.0,<5.0" certifi = "*" h11 = ">=0.13,<0.15" -sniffio = "==1.*" +sniffio = ">=1.0.0,<2.0.0" [package.extras] http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] +socks = ["socksio (>=1.0.0,<2.0.0)"] [[package]] name = "httptools" version = "0.6.0" description = "A collection of framework independent HTTP protocol utils." +category = "dev" optional = false python-versions = ">=3.5.0" files = [ @@ -993,6 +1112,7 @@ test = ["Cython (>=0.29.24,<0.30.0)"] name = "httpx" version = "0.24.1" description = "The next generation HTTP client." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1008,14 +1128,15 @@ sniffio = "*" [package.extras] brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] +socks = ["socksio (>=1.0.0,<2.0.0)"] [[package]] name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1027,6 +1148,7 @@ files = [ name = "ijson" version = "3.2.3" description = "Iterative JSON parser with standard Python iterator interfaces" +category = "main" optional = false python-versions = "*" files = [ @@ -1114,6 +1236,7 @@ files = [ name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1125,6 +1248,7 @@ files = [ name = "importlib-metadata" version = "6.8.0" description = "Read metadata from Python packages" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1144,6 +1268,7 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs name = "importlib-resources" version = "6.1.0" description = "Read resources from Python packages" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1162,6 +1287,7 @@ testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1173,6 +1299,7 @@ files = [ name = "isbnlib" version = "3.10.14" description = "Extract, clean, transform, hyphenate and metadata for ISBNs (International Standard Book Number)." +category = "dev" optional = false python-versions = "*" files = [ @@ -1184,6 +1311,7 @@ files = [ name = "isodate" version = "0.6.1" description = "An ISO 8601 date/time/duration parser and formatter" +category = "main" optional = false python-versions = "*" files = [ @@ -1198,6 +1326,7 @@ six = "*" name = "isoduration" version = "20.11.0" description = "Operations with ISO 8601 durations" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1212,6 +1341,7 @@ arrow = ">=0.15.0" name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1229,6 +1359,7 @@ i18n = ["Babel (>=2.7)"] name = "jsbeautifier" version = "1.14.9" description = "JavaScript unobfuscator and beautifier." +category = "main" optional = false python-versions = "*" files = [ @@ -1243,6 +1374,7 @@ six = ">=1.13.0" name = "json-flattener" version = "0.1.9" description = "Python library for denormalizing nested dicts or json objects to tables and back" +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -1258,6 +1390,7 @@ pyyaml = "*" name = "jsonasobj" version = "1.3.1" description = "JSON as python objects" +category = "main" optional = false python-versions = "*" files = [ @@ -1269,6 +1402,7 @@ files = [ name = "jsonasobj2" version = "1.0.4" description = "JSON as python objects - version 2" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1283,6 +1417,7 @@ hbreader = "*" name = "jsonpatch" version = "1.33" description = "Apply JSON-Patches (RFC 6902)" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" files = [ @@ -1297,6 +1432,7 @@ jsonpointer = ">=1.9" name = "jsonpath-ng" version = "1.6.0" description = "A final implementation of JSONPath for Python that aims to be standard compliant, including arithmetic and binary comparison operators and providing clear AST for metaprogramming." +category = "main" optional = false python-versions = "*" files = [ @@ -1311,6 +1447,7 @@ ply = "*" name = "jsonpointer" version = "2.4" description = "Identify specific nodes in a JSON document (RFC 6901)" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" files = [ @@ -1322,6 +1459,7 @@ files = [ name = "jsonschema" version = "4.19.1" description = "An implementation of JSON Schema validation for Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1351,6 +1489,7 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- name = "jsonschema-specifications" version = "2023.7.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1365,6 +1504,7 @@ referencing = ">=0.28.0" name = "kgcl-rdflib" version = "0.5.0" description = "Schema for the KGCL project." +category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -1380,6 +1520,7 @@ linkml-runtime = ">=1.1.24" name = "kgcl-schema" version = "0.6.0" description = "Schema for the KGCL project." +category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -1397,6 +1538,7 @@ prefixmaps = ">=0.1.5,<0.2.0" name = "lark" version = "1.1.7" description = "a modern parsing library" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1414,6 +1556,7 @@ regex = ["regex"] name = "linkml" version = "1.5.7" description = "Linked Open Data Modeling Language" +category = "main" optional = false python-versions = ">=3.7.6,<4.0.0" files = [ @@ -1451,6 +1594,7 @@ watchdog = ">=0.9.0" name = "linkml-dataops" version = "0.1.0" description = "LinkML Data Operations API" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1469,6 +1613,7 @@ linkml-runtime = ">=1.1.6" name = "linkml-renderer" version = "0.3.0" description = "linkml-renderer" +category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -1486,6 +1631,7 @@ pydantic = "*" name = "linkml-runtime" version = "1.5.7" description = "Runtime environment for LinkML, the Linked open data modeling language" +category = "main" optional = false python-versions = ">=3.7.6,<4.0.0" files = [ @@ -1512,6 +1658,7 @@ requests = "*" name = "loguru" version = "0.7.2" description = "Python logging made (stupidly) simple" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1530,6 +1677,7 @@ dev = ["Sphinx (==7.2.5)", "colorama (==0.4.5)", "colorama (==0.4.6)", "exceptio name = "lxml" version = "4.9.3" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" files = [ @@ -1637,6 +1785,7 @@ source = ["Cython (>=0.29.35)"] name = "manubot" version = "0.5.6" description = "\"Python utilities for Manubot: Manuscripts, open and automated\"" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1667,6 +1816,7 @@ webpage = ["opentimestamps-client"] name = "markdown" version = "3.4.4" description = "Python implementation of John Gruber's Markdown." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1685,6 +1835,7 @@ testing = ["coverage", "pyyaml"] name = "markdown-it-py" version = "3.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1709,6 +1860,7 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] name = "markupsafe" version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1732,16 +1884,6 @@ files = [ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, @@ -1778,6 +1920,7 @@ files = [ name = "mdurl" version = "0.1.2" description = "Markdown URL utilities" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1789,6 +1932,7 @@ files = [ name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1800,6 +1944,7 @@ files = [ name = "mkdocs" version = "1.5.3" description = "Project documentation with Markdown." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1831,6 +1976,7 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-imp name = "mkdocs-autorefs" version = "0.5.0" description = "Automatically link across pages in MkDocs." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1846,6 +1992,7 @@ mkdocs = ">=1.1" name = "mkdocs-material" version = "9.4.2" description = "Documentation that simply works" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1875,6 +2022,7 @@ recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2. name = "mkdocs-material-extensions" version = "1.2" description = "Extension pack for Python Markdown and MkDocs Material." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1886,6 +2034,7 @@ files = [ name = "mkdocs-mermaid2-plugin" version = "0.6.0" description = "A MkDocs plugin for including mermaid graphs in markdown sources" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1907,6 +2056,7 @@ setuptools = ">=18.5" name = "mkdocstrings" version = "0.23.0" description = "Automatic documentation from sources, for MkDocs." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1934,6 +2084,7 @@ python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] name = "mkdocstrings-python" version = "1.7.0" description = "A Python handler for mkdocstrings." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1949,6 +2100,7 @@ mkdocstrings = ">=0.20" name = "more-click" version = "0.1.2" description = "More click." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1966,6 +2118,7 @@ tests = ["coverage", "pytest"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1977,6 +2130,7 @@ files = [ name = "ndex2" version = "3.5.1" description = "Nice CX Python includes a client and a data model." +category = "main" optional = false python-versions = "*" files = [ @@ -1998,6 +2152,7 @@ urllib3 = ">=1.16" name = "networkx" version = "3.1" description = "Python package for creating and manipulating graphs and networks" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2016,6 +2171,7 @@ test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"] name = "numpy" version = "1.25.2" description = "Fundamental package for array computing in Python" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -2050,6 +2206,7 @@ files = [ name = "oaklib" version = "0.5.20" description = "Ontology Access Kit: Python library for common ontology operations over a variety of backends" +category = "main" optional = false python-versions = ">=3.9,<4.0.0" files = [ @@ -2096,6 +2253,7 @@ llm = ["llm"] name = "ols-client" version = "0.1.4" description = "A client to the EBI Ontology Lookup Service" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2118,6 +2276,7 @@ tests = ["coverage", "pytest"] name = "ontoportal-client" version = "0.0.4" description = "A client to BioPortal and other OntoPortal instances." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2137,6 +2296,7 @@ tests = ["coverage", "pytest", "unittest-templates"] name = "openpyxl" version = "3.1.2" description = "A Python library to read/write Excel 2010 xlsx/xlsm files" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2151,6 +2311,7 @@ et-xmlfile = "*" name = "outcome" version = "1.2.0" description = "Capture the outcome of Python function calls." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2165,6 +2326,7 @@ attrs = ">=19.2.0" name = "packaging" version = "23.1" description = "Core utilities for Python packages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2176,6 +2338,7 @@ files = [ name = "paginate" version = "0.5.6" description = "Divides large result sets into pages for easier browsing" +category = "main" optional = false python-versions = "*" files = [ @@ -2186,6 +2349,7 @@ files = [ name = "pandas" version = "2.1.0" description = "Powerful data structures for data analysis, time series, and statistics" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -2244,6 +2408,7 @@ xml = ["lxml (>=4.8.0)"] name = "pandas" version = "2.1.1" description = "Powerful data structures for data analysis, time series, and statistics" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -2311,6 +2476,7 @@ xml = ["lxml (>=4.8.0)"] name = "panflute" version = "2.3.0" description = "Pythonic Pandoc filters" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2331,6 +2497,7 @@ pypi = ["Pygments", "docutils", "twine", "wheel"] name = "pansql" version = "0.0.1" description = "sqldf for pandas" +category = "main" optional = false python-versions = "*" files = [ @@ -2347,6 +2514,7 @@ sqlalchemy = "*" name = "parse" version = "1.19.1" description = "parse() is the opposite of format()" +category = "main" optional = false python-versions = "*" files = [ @@ -2358,6 +2526,7 @@ files = [ name = "pathspec" version = "0.11.2" description = "Utility library for gitignore style pattern matching of file paths." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2369,6 +2538,7 @@ files = [ name = "platformdirs" version = "3.10.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2384,6 +2554,7 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co name = "pluggy" version = "1.3.0" description = "plugin and hook calling mechanisms for python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2399,6 +2570,7 @@ testing = ["pytest", "pytest-benchmark"] name = "ply" version = "3.11" description = "Python Lex & Yacc" +category = "main" optional = false python-versions = "*" files = [ @@ -2410,6 +2582,7 @@ files = [ name = "prefixcommons" version = "0.1.12" description = "A python API for working with ID prefixes" +category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -2425,30 +2598,36 @@ requests = ">=2.28.1,<3.0.0" [[package]] name = "prefixmaps" -version = "0.1.5" +version = "0.1.6" description = "A python library for retrieving semantic prefix maps" +category = "main" optional = false -python-versions = ">=3.7.6,<4.0.0" -files = [ - {file = "prefixmaps-0.1.5-py3-none-any.whl", hash = "sha256:afe679efa0fa62ae69939771956a76e2958505743b40755c8bae85732622b5b2"}, - {file = "prefixmaps-0.1.5.tar.gz", hash = "sha256:0073f69477f7e9e2359409c0e9d2f853c958600825d9ed859c4c6c71134010a1"}, -] +python-versions = "^3.8.0" +files = [] +develop = false [package.dependencies] -click = ">=8.1.3,<9.0.0" -greenlet = "2.0.1" -importlib-metadata = ">=1.0.0" +click = ">=8.1.3" +curies = ">=0.5.3" +pydantic = "^1.8.2" pyyaml = ">=5.3.1" -typing-extensions = ">=4.4.0,<5.0.0" +tox = "^4.11.3" [package.extras] docs = ["Sphinx[docs] (>=5.3.0,<6.0.0)", "myst-parser[docs] (>=0.18.1,<0.19.0)", "sphinx-autodoc-typehints[docs] (>=1.19.4,<2.0.0)", "sphinx-click[docs] (>=4.3.0,<5.0.0)", "sphinx-rtd-theme[docs] (>=1.0.0,<2.0.0)"] -refresh = ["bioregistry[refresh] (>=0.8.0,<0.9.0)", "rdflib[refresh] (>=6.2.0,<7.0.0)", "requests[refresh] (>=2.28.1,<3.0.0)"] +refresh = ["bioregistry[refresh] (>=0.10.0,<0.11.0)", "rdflib[refresh] (>=6.2.0,<7.0.0)", "requests[refresh] (>=2.28.1,<3.0.0)"] + +[package.source] +type = "git" +url = "https://github.com/linkml/prefixmaps.git" +reference = "update_bioregistry" +resolved_reference = "73def82a3a17b9e131f6c8429d117c7f90af81c6" [[package]] name = "pronto" version = "2.5.5" description = "Python frontend to ontologies." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2466,6 +2645,7 @@ python-dateutil = ">=2.8,<3.0" name = "pybase62" version = "1.0.0" description = "Python module for base62 encoding" +category = "dev" optional = false python-versions = "*" files = [ @@ -2476,6 +2656,7 @@ files = [ name = "pycparser" version = "2.21" description = "C parser in Python" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2487,6 +2668,7 @@ files = [ name = "pydantic" version = "1.10.12" description = "Data validation and settings management using python type hints" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2539,6 +2721,7 @@ email = ["email-validator (>=1.0.3)"] name = "pygments" version = "2.16.1" description = "Pygments is a syntax highlighting package written in Python." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2553,6 +2736,7 @@ plugins = ["importlib-metadata"] name = "pyjsg" version = "0.11.10" description = "Python JSON Schema Grammar interpreter" +category = "main" optional = false python-versions = "*" files = [ @@ -2568,6 +2752,7 @@ jsonasobj = ">=1.2.1" name = "pymdown-extensions" version = "10.3" description = "Extension pack for Python Markdown." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2586,6 +2771,7 @@ extra = ["pygments (>=2.12)"] name = "pyparsing" version = "3.1.1" description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "main" optional = false python-versions = ">=3.6.8" files = [ @@ -2596,10 +2782,31 @@ files = [ [package.extras] diagrams = ["jinja2", "railroad-diagrams"] +[[package]] +name = "pyproject-api" +version = "1.6.1" +description = "API to interact with the python pyproject.toml based projects" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyproject_api-1.6.1-py3-none-any.whl", hash = "sha256:4c0116d60476b0786c88692cf4e325a9814965e2469c5998b830bba16b183675"}, + {file = "pyproject_api-1.6.1.tar.gz", hash = "sha256:1817dc018adc0d1ff9ca1ed8c60e1623d5aaca40814b953af14a9cf9a5cae538"}, +] + +[package.dependencies] +packaging = ">=23.1" +tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} + +[package.extras] +docs = ["furo (>=2023.8.19)", "sphinx (<7.2)", "sphinx-autodoc-typehints (>=1.24)"] +testing = ["covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "setuptools (>=68.1.2)", "wheel (>=0.41.2)"] + [[package]] name = "pyrate-limiter" version = "3.1.0" description = "Python Rate-Limiter using Leaky-Bucket Algorithm" +category = "dev" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -2615,6 +2822,7 @@ docs = ["furo (>=2022.3.4,<2023.0.0)", "myst-parser (>=0.17)", "sphinx (>=4.3.0, name = "pyshex" version = "0.8.1" description = "Python ShEx Implementation" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2637,6 +2845,7 @@ urllib3 = "*" name = "pyshexc" version = "0.9.1" description = "PyShExC - Python ShEx compiler" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2656,6 +2865,7 @@ shexjsg = ">=0.8.1" name = "pysocks" version = "1.7.1" description = "A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2668,6 +2878,7 @@ files = [ name = "pysolr" version = "3.9.0" description = "Lightweight Python client for Apache Solr" +category = "main" optional = false python-versions = "*" files = [ @@ -2684,6 +2895,7 @@ solrcloud = ["kazoo (>=2.5.0)"] name = "pystow" version = "0.5.0" description = "Easily pick a place to store data for your python package." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2708,6 +2920,7 @@ xml = ["lxml"] name = "pytest" version = "7.4.2" description = "pytest: simple powerful testing with Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2730,6 +2943,7 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no name = "pytest-logging" version = "2015.11.4" description = "Configures logging and allows tweaking the log level with a py.test flag" +category = "main" optional = false python-versions = "*" files = [ @@ -2743,6 +2957,7 @@ pytest = ">=2.8.1" name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -2757,6 +2972,7 @@ six = ">=1.5" name = "python-dotenv" version = "1.0.0" description = "Read key-value pairs from a .env file and set them as environment variables" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2771,6 +2987,7 @@ cli = ["click (>=5.0)"] name = "pytrie" version = "0.4.0" description = "A pure Python implementation of the trie data structure." +category = "main" optional = false python-versions = "*" files = [ @@ -2784,6 +3001,7 @@ sortedcontainers = "*" name = "pytz" version = "2023.3.post1" description = "World timezone definitions, modern and historical" +category = "main" optional = false python-versions = "*" files = [ @@ -2795,6 +3013,7 @@ files = [ name = "pywin32" version = "306" description = "Python for Window Extensions" +category = "main" optional = false python-versions = "*" files = [ @@ -2818,6 +3037,7 @@ files = [ name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2826,7 +3046,6 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -2834,15 +3053,8 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -2859,7 +3071,6 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -2867,7 +3078,6 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -2877,6 +3087,7 @@ files = [ name = "pyyaml-env-tag" version = "0.1" description = "A custom YAML tag for referencing environment variables in YAML files. " +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2891,6 +3102,7 @@ pyyaml = "*" name = "ratelimit" version = "2.2.1" description = "API rate limit decorator" +category = "main" optional = false python-versions = "*" files = [ @@ -2901,6 +3113,7 @@ files = [ name = "rdflib" version = "7.0.0" description = "RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information." +category = "main" optional = false python-versions = ">=3.8.1,<4.0.0" files = [ @@ -2922,6 +3135,7 @@ networkx = ["networkx (>=2.0.0,<3.0.0)"] name = "rdflib-jsonld" version = "0.6.1" description = "rdflib extension adding JSON-LD parser and serializer" +category = "main" optional = false python-versions = "*" files = [ @@ -2936,6 +3150,7 @@ rdflib = ">=5.0.0" name = "rdflib-shim" version = "1.0.3" description = "Shim for rdflib 5 and 6 incompatibilities" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2951,6 +3166,7 @@ rdflib-jsonld = "0.6.1" name = "referencing" version = "0.30.2" description = "JSON Referencing + Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2966,6 +3182,7 @@ rpds-py = ">=0.7.0" name = "regex" version = "2023.8.8" description = "Alternative regular expression module, to replace re." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3063,6 +3280,7 @@ files = [ name = "requests" version = "2.31.0" description = "Python HTTP for Humans." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3085,6 +3303,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-cache" version = "1.1.0" description = "A persistent cache for python requests" +category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -3115,6 +3334,7 @@ yaml = ["pyyaml (>=5.4)"] name = "requests-toolbelt" version = "1.0.0" description = "A utility belt for advanced users of python-requests" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -3129,6 +3349,7 @@ requests = ">=2.0.1,<3.0.0" name = "rfc3339-validator" version = "0.1.4" description = "A pure python RFC3339 validator" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -3143,6 +3364,7 @@ six = "*" name = "rfc3987" version = "1.3.8" description = "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)" +category = "main" optional = false python-versions = "*" files = [ @@ -3154,6 +3376,7 @@ files = [ name = "rich" version = "13.5.3" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -3172,6 +3395,7 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] name = "rpds-py" version = "0.10.3" description = "Python bindings to Rust's persistent data structures (rpds)" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3278,6 +3502,7 @@ files = [ name = "ruamel-yaml" version = "0.17.32" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +category = "main" optional = false python-versions = ">=3" files = [ @@ -3296,6 +3521,7 @@ jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] name = "ruamel-yaml-clib" version = "0.2.7" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -3342,6 +3568,7 @@ files = [ name = "ruff" version = "0.0.291" description = "An extremely fast Python linter, written in Rust." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3368,6 +3595,7 @@ files = [ name = "scholarly" version = "1.7.11" description = "Simple access to Google Scholar authors and citations" +category = "dev" optional = false python-versions = "*" files = [ @@ -3396,6 +3624,7 @@ tor = ["stem"] name = "scipy" version = "1.9.3" description = "Fundamental algorithms for scientific computing in Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3434,6 +3663,7 @@ test = ["asv", "gmpy2", "mpmath", "pytest", "pytest-cov", "pytest-xdist", "sciki name = "selenium" version = "4.13.0" description = "" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -3451,6 +3681,7 @@ urllib3 = {version = ">=1.26,<3", extras = ["socks"]} name = "semsimian" version = "0.2.1" description = "" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3495,6 +3726,7 @@ files = [ name = "semsql" version = "0.3.2" description = "" +category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -3511,6 +3743,7 @@ SQLAlchemy-Utils = ">=0.38.2,<0.39.0" name = "setuptools" version = "68.2.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3527,6 +3760,7 @@ testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jar name = "shellingham" version = "1.4.0" description = "Tool to Detect Surrounding Shell" +category = "main" optional = false python-versions = "!=3.0,!=3.1,!=3.2,!=3.3,>=2.6" files = [ @@ -3538,6 +3772,7 @@ files = [ name = "shexjsg" version = "0.8.2" description = "ShExJSG - Astract Syntax Tree for the ShEx 2.0 language" +category = "main" optional = false python-versions = "*" files = [ @@ -3552,6 +3787,7 @@ pyjsg = ">=0.11.10" name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -3563,6 +3799,7 @@ files = [ name = "sniffio" version = "1.3.0" description = "Sniff out which async library your code is running under" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3574,6 +3811,7 @@ files = [ name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +category = "dev" optional = false python-versions = "*" files = [ @@ -3585,6 +3823,7 @@ files = [ name = "sortedcontainers" version = "2.4.0" description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" +category = "main" optional = false python-versions = "*" files = [ @@ -3596,6 +3835,7 @@ files = [ name = "soupsieve" version = "2.5" description = "A modern CSS selector implementation for Beautiful Soup." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3607,6 +3847,7 @@ files = [ name = "sparqlslurper" version = "0.5.1" description = "SPARQL Slurper for rdflib" +category = "main" optional = false python-versions = ">=3.7.4" files = [ @@ -3623,6 +3864,7 @@ sparqlwrapper = ">=1.8.2" name = "sparqlwrapper" version = "2.0.0" description = "SPARQL Endpoint interface to Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3643,6 +3885,7 @@ pandas = ["pandas (>=1.3.5)"] name = "sphinx" version = "7.2.6" description = "Python documentation generator" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -3678,6 +3921,7 @@ test = ["cython (>=3.0)", "filelock", "html5lib", "pytest (>=4.6)", "setuptools name = "sphinx-rtd-theme" version = "1.3.0" description = "Read the Docs theme for Sphinx" +category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -3697,6 +3941,7 @@ dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] name = "sphinxcontrib-applehelp" version = "1.0.7" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -3715,6 +3960,7 @@ test = ["pytest"] name = "sphinxcontrib-devhelp" version = "1.0.5" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -3733,6 +3979,7 @@ test = ["pytest"] name = "sphinxcontrib-htmlhelp" version = "2.0.4" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -3751,6 +3998,7 @@ test = ["html5lib", "pytest"] name = "sphinxcontrib-jquery" version = "4.1" description = "Extension to include jQuery on newer Sphinx releases" +category = "dev" optional = false python-versions = ">=2.7" files = [ @@ -3765,6 +4013,7 @@ Sphinx = ">=1.8" name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -3779,6 +4028,7 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-qthelp" version = "1.0.6" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -3797,6 +4047,7 @@ test = ["pytest"] name = "sphinxcontrib-serializinghtml" version = "1.1.9" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -3815,6 +4066,7 @@ test = ["pytest"] name = "sqlalchemy" version = "2.0.21" description = "Database Abstraction Library" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3834,6 +4086,14 @@ files = [ {file = "SQLAlchemy-2.0.21-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b69f1f754d92eb1cc6b50938359dead36b96a1dcf11a8670bff65fd9b21a4b09"}, {file = "SQLAlchemy-2.0.21-cp311-cp311-win32.whl", hash = "sha256:af520a730d523eab77d754f5cf44cc7dd7ad2d54907adeb3233177eeb22f271b"}, {file = "SQLAlchemy-2.0.21-cp311-cp311-win_amd64.whl", hash = "sha256:141675dae56522126986fa4ca713739d00ed3a6f08f3c2eb92c39c6dfec463ce"}, + {file = "SQLAlchemy-2.0.21-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:56628ca27aa17b5890391ded4e385bf0480209726f198799b7e980c6bd473bd7"}, + {file = "SQLAlchemy-2.0.21-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:db726be58837fe5ac39859e0fa40baafe54c6d54c02aba1d47d25536170b690f"}, + {file = "SQLAlchemy-2.0.21-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7421c1bfdbb7214313919472307be650bd45c4dc2fcb317d64d078993de045b"}, + {file = "SQLAlchemy-2.0.21-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:632784f7a6f12cfa0e84bf2a5003b07660addccf5563c132cd23b7cc1d7371a9"}, + {file = "SQLAlchemy-2.0.21-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f6f7276cf26145a888f2182a98f204541b519d9ea358a65d82095d9c9e22f917"}, + {file = "SQLAlchemy-2.0.21-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2a1f7ffac934bc0ea717fa1596f938483fb8c402233f9b26679b4f7b38d6ab6e"}, + {file = "SQLAlchemy-2.0.21-cp312-cp312-win32.whl", hash = "sha256:bfece2f7cec502ec5f759bbc09ce711445372deeac3628f6fa1c16b7fb45b682"}, + {file = "SQLAlchemy-2.0.21-cp312-cp312-win_amd64.whl", hash = "sha256:526b869a0f4f000d8d8ee3409d0becca30ae73f494cbb48801da0129601f72c6"}, {file = "SQLAlchemy-2.0.21-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7614f1eab4336df7dd6bee05bc974f2b02c38d3d0c78060c5faa4cd1ca2af3b8"}, {file = "SQLAlchemy-2.0.21-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d59cb9e20d79686aa473e0302e4a82882d7118744d30bb1dfb62d3c47141b3ec"}, {file = "SQLAlchemy-2.0.21-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a95aa0672e3065d43c8aa80080cdd5cc40fe92dc873749e6c1cf23914c4b83af"}, @@ -3893,6 +4153,7 @@ sqlcipher = ["sqlcipher3-binary"] name = "sqlalchemy-utils" version = "0.38.3" description = "Various utility functions for SQLAlchemy." +category = "main" optional = false python-versions = "~=3.6" files = [ @@ -3921,6 +4182,7 @@ url = ["furl (>=0.4.1)"] name = "sssom" version = "0.3.41" description = "Operations on SSSOM mapping tables" +category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -3948,6 +4210,7 @@ validators = ">=0.20.0" name = "sssom-schema" version = "0.15.0" description = "SSSOM is a Simple Standard for Sharing Ontology Mappings." +category = "main" optional = false python-versions = ">=3.7.6,<4.0.0" files = [ @@ -3963,6 +4226,7 @@ mkdocs-mermaid2-plugin = ">=0.6.0,<0.7.0" name = "starlette" version = "0.27.0" description = "The little ASGI library that shines." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3981,6 +4245,7 @@ full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyam name = "tomli" version = "2.0.1" description = "A lil' TOML parser" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3988,10 +4253,39 @@ files = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] +[[package]] +name = "tox" +version = "4.11.3" +description = "tox is a generic virtualenv management and test command line tool" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tox-4.11.3-py3-none-any.whl", hash = "sha256:599af5e5bb0cad0148ac1558a0b66f8fff219ef88363483b8d92a81e4246f28f"}, + {file = "tox-4.11.3.tar.gz", hash = "sha256:5039f68276461fae6a9452a3b2c7295798f00a0e92edcd9a3b78ba1a73577951"}, +] + +[package.dependencies] +cachetools = ">=5.3.1" +chardet = ">=5.2" +colorama = ">=0.4.6" +filelock = ">=3.12.3" +packaging = ">=23.1" +platformdirs = ">=3.10" +pluggy = ">=1.3" +pyproject-api = ">=1.6.1" +tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} +virtualenv = ">=20.24.3" + +[package.extras] +docs = ["furo (>=2023.8.19)", "sphinx (>=7.2.4)", "sphinx-argparse-cli (>=1.11.1)", "sphinx-autodoc-typehints (>=1.24)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2023.4.21)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +testing = ["build[virtualenv] (>=0.10)", "covdefaults (>=2.3)", "detect-test-pollution (>=1.1.1)", "devpi-process (>=1)", "diff-cover (>=7.7)", "distlib (>=0.3.7)", "flaky (>=3.7)", "hatch-vcs (>=0.3)", "hatchling (>=1.18)", "psutil (>=5.9.5)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "pytest-xdist (>=3.3.1)", "re-assert (>=1.1)", "time-machine (>=2.12)", "wheel (>=0.41.2)"] + [[package]] name = "tqdm" version = "4.66.1" description = "Fast, Extensible Progress Meter" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4012,6 +4306,7 @@ telegram = ["requests"] name = "trio" version = "0.22.2" description = "A friendly Python library for async concurrency and I/O" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4032,6 +4327,7 @@ sortedcontainers = "*" name = "trio-websocket" version = "0.10.4" description = "WebSocket library for Trio" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4048,6 +4344,7 @@ wsproto = ">=0.14" name = "typer" version = "0.7.0" description = "Typer, build great CLIs. Easy to code. Based on Python type hints." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -4068,6 +4365,7 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6. name = "typer-cli" version = "0.0.13" description = "Run Typer scripts with completion, without having to create a package, using Typer CLI." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4084,6 +4382,7 @@ typer = ">=0.4.0,<=0.7.0" name = "typing-extensions" version = "4.8.0" description = "Backported and Experimental Type Hints for Python 3.8+" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -4095,6 +4394,7 @@ files = [ name = "tzdata" version = "2023.3" description = "Provider of IANA time zone data" +category = "main" optional = false python-versions = ">=2" files = [ @@ -4106,6 +4406,7 @@ files = [ name = "uri-template" version = "1.3.0" description = "RFC 6570 URI Template Processor" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4120,6 +4421,7 @@ dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake name = "url-normalize" version = "1.4.3" description = "URL normalization for Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -4134,6 +4436,7 @@ six = "*" name = "urllib3" version = "2.0.5" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4154,6 +4457,7 @@ zstd = ["zstandard (>=0.18.0)"] name = "uvicorn" version = "0.20.0" description = "The lightning-fast ASGI server." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4168,7 +4472,7 @@ h11 = ">=0.8" httptools = {version = ">=0.5.0", optional = true, markers = "extra == \"standard\""} python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} -uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""} +uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\" and extra == \"standard\""} watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""} @@ -4179,6 +4483,7 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", name = "uvloop" version = "0.17.0" description = "Fast implementation of asyncio event loop on top of libuv" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4223,6 +4528,7 @@ test = ["Cython (>=0.29.32,<0.30.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "my name = "validators" version = "0.22.0" description = "Python Data Validation for Humans™" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -4241,10 +4547,32 @@ testing = ["pytest (>=7.4.0)"] tooling = ["black (>=23.7.0)", "pyright (>=1.1.325)", "ruff (>=0.0.287)"] tooling-extras = ["pyaml (>=23.7.0)", "pypandoc-binary (>=1.11)", "pytest (>=7.4.0)"] +[[package]] +name = "virtualenv" +version = "20.24.5" +description = "Virtual Python Environment builder" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "virtualenv-20.24.5-py3-none-any.whl", hash = "sha256:b80039f280f4919c77b30f1c23294ae357c4c8701042086e3fc005963e4e537b"}, + {file = "virtualenv-20.24.5.tar.gz", hash = "sha256:e8361967f6da6fbdf1426483bfe9fca8287c242ac0bc30429905721cefbff752"}, +] + +[package.dependencies] +distlib = ">=0.3.7,<1" +filelock = ">=3.12.2,<4" +platformdirs = ">=3.9.1,<4" + +[package.extras] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] + [[package]] name = "watchdog" version = "3.0.0" description = "Filesystem events monitoring" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4284,6 +4612,7 @@ watchmedo = ["PyYAML (>=3.10)"] name = "watchfiles" version = "0.20.0" description = "Simple, modern and high performance file watching and code reload in python." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4318,6 +4647,7 @@ anyio = ">=3.0.0" name = "webcolors" version = "1.13" description = "A library for working with the color formats defined by HTML and CSS." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4333,6 +4663,7 @@ tests = ["pytest", "pytest-cov"] name = "websocket-client" version = "1.6.3" description = "WebSocket client for Python with low level API options" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -4349,6 +4680,7 @@ test = ["websockets"] name = "websockets" version = "11.0.3" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4428,6 +4760,7 @@ files = [ name = "win32-setctime" version = "1.1.0" description = "A small Python utility to set file creation time on Windows" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -4442,6 +4775,7 @@ dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"] name = "wrapt" version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -4526,6 +4860,7 @@ files = [ name = "wsproto" version = "1.2.0" description = "WebSockets state-machine based protocol implementation" +category = "dev" optional = false python-versions = ">=3.7.0" files = [ @@ -4540,6 +4875,7 @@ h11 = ">=0.9.0,<1" name = "zipp" version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -4554,4 +4890,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "b0b6ef6831375cd9f819ee81c28f246883022fe56d42719f3d168e07e998b056" +content-hash = "c9e158f3706e78d180f43493639dcbe81de5f0ade1f3c2de615c651b372e7db0" diff --git a/backend/pyproject.toml b/backend/pyproject.toml index ee54f1e49..15be7e914 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -20,7 +20,8 @@ python = "^3.9" pydantic = "^1.10.2" curies = "<1" linkml = "^1.5.5" -prefixmaps = "^0.1.5" +prefixmaps = "^0.1.6" + requests = "^2.28.1" typer = "^0.7.0" typer-cli = "^0.0.13" @@ -29,8 +30,9 @@ docker = "^6.0.1" pystow = ">=0.5.0" loguru = "*" fastapi = "^0.103.1" -oaklib = "^0.5.19" +oaklib = ">=0.5.19" gunicorn = "^21.2.0" +bioregistry = "^0.10.57" [tool.poetry.group.dev.dependencies] diff --git a/backend/src/monarch_py/service/curie_service.py b/backend/src/monarch_py/service/curie_service.py index 92c52b284..e82208aa3 100644 --- a/backend/src/monarch_py/service/curie_service.py +++ b/backend/src/monarch_py/service/curie_service.py @@ -1,7 +1,7 @@ ### make a singleton class that uses prefixmap and curies to expand curies -import curies from curies import Converter +from prefixmaps.io.parser import load_multi_context, load_context class CurieService: @@ -15,7 +15,11 @@ def __new__(cls): return cls._instance def initialize(self): - self.converter = curies.get_monarch_converter() + # this is a magic keyword that represents the "merged" context from Chris M's algorithm + # (https://github.com/linkml/prefixmaps/blob/main/src/prefixmaps/data/merged.csv) + context = load_multi_context(["merged"]) + extended_prefix_map = context.as_extended_prefix_map() + self.converter = Converter.from_extended_prefix_map(extended_prefix_map) def expand(self, curie: str) -> str: return self.converter.expand(curie) diff --git a/backend/tests/unit/test_curie_service.py b/backend/tests/unit/test_curie_service.py new file mode 100644 index 000000000..925cd1f14 --- /dev/null +++ b/backend/tests/unit/test_curie_service.py @@ -0,0 +1,29 @@ +from monarch_py.service.curie_service import CurieService +import pytest + + +@pytest.mark.parametrize( + ("curie", "expanded_curie_part"), + [("FB:FBgn0000008", "http://identifiers.org/flybase/FBgn0000008"), # this is a little odd, fb vs. flybase, but both resolve + ("FlyBase:FBgn0000008", "http://identifiers.org/fb/FBgn0000008"), + ("MONDO:0005737", "http://purl.obolibrary.org/obo/MONDO_0005737"), + ("OMIM:613647", "http://identifiers.org/mim/613647"), + ("NCBIGene:1017", "https://identifiers.org/ncbigene/1017"), + ("ZFIN:ZDB-GENE-980526-166", "https://identifiers.org/zfin/ZDB-GENE-980526-166"), + ("MGI:1918910", "https://identifiers.org/MGI/1918910"), + ("ENSEMBL:ENSG00000157764", "http://identifiers.org/ensembl/ENSG00000157764"), + ("HP:0000001", "http://purl.obolibrary.org/obo/HP_0000001"), + ("UBERON:0000001", "http://purl.obolibrary.org/obo/UBERON_0000001"), + ("GO:0000001", "http://purl.obolibrary.org/obo/GO_0000001"), + ("CL:0000001", "http://purl.obolibrary.org/obo/CL_0000001"), + ("WormBase:WBGene00000001", "http://identifiers.org/wb/WBGene00000001"), + ("WB:WBGene00000001", "https://identifiers.org/wb/WBGene00000001"), + ("SGD:S000000001", "https://identifiers.org/sgd/S000000001"), + ("RGD:1", "https://identifiers.org/rgd/1"), + ("HGNC:5", "http://identifiers.org/hgnc/5")] +) +def test_curie_expansion(curie, expanded_curie_part): + cs = CurieService() + expanded_curie = cs.expand(curie) + # print(expanded_curie, expanded_curie_part) + assert expanded_curie_part in expanded_curie