From 36cd42bdf647bea3fb3f091dd6c66ccdfafcfd0e Mon Sep 17 00:00:00 2001 From: Chris Mungall Date: Tue, 12 Jul 2022 19:15:21 -0700 Subject: [PATCH] Added frictionless importer (#79) * Added frictionless importer. Fixes #861 * Fixing descriptions * Adding FKs * prefixes --- Makefile | 6 +- poetry.lock | 1114 ++---- pyproject.toml | 2 +- .../importers/frictionless_import_engine.py | 140 + .../importers/jsonschema_import_engine.py | 1 + .../importers/sql_import_engine.py | 45 - schema_automator/metamodels/frictionless.py | 473 +++ schema_automator/metamodels/frictionless.yaml | 204 + tests/resources/C2M2_datapackage.json | 3320 +++++++++++++++++ .../test_frictionless_importer.py | 39 + tests/test_importers/test_sql_importer.py | 78 - 11 files changed, 4477 insertions(+), 945 deletions(-) create mode 100644 schema_automator/importers/frictionless_import_engine.py delete mode 100644 schema_automator/importers/sql_import_engine.py create mode 100644 schema_automator/metamodels/frictionless.py create mode 100644 schema_automator/metamodels/frictionless.yaml create mode 100644 tests/resources/C2M2_datapackage.json create mode 100644 tests/test_importers/test_frictionless_importer.py delete mode 100644 tests/test_importers/test_sql_importer.py diff --git a/Makefile b/Makefile index 35172b8..0e7e671 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,4 @@ +RUN = poetry run VERSION = $(shell git tag | tail -1) .PHONY: all clean test @@ -12,7 +13,10 @@ clean: rm -rf target/availabilities_g_s_strain_202112151116_org_meanings.yaml test: - poetry run pytest tests/ + $(RUN) pytest tests/ + +schema_automator/metamodels/%.py: schema_automator/metamodels/%.yaml + $(RUN) gen-python $< > $@.tmp && mv $@.tmp $@ # tried to find a single meaning for each permissible value # unlike term mapping, which can tolerate multiple mapped terms diff --git a/poetry.lock b/poetry.lock index f6ebf05..a029143 100644 --- a/poetry.lock +++ b/poetry.lock @@ -93,7 +93,7 @@ tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (> [[package]] name = "babel" -version = "2.10.3" +version = "2.10.1" description = "Internationalization utilities" category = "main" optional = false @@ -138,7 +138,7 @@ web = ["pyyaml", "rdflib", "rdflib-jsonld", "flask", "flasgger", "bootstrap-flas [[package]] name = "bleach" -version = "5.0.1" +version = "5.0.0" description = "An easy safelist-based HTML-sanitizing tool." category = "main" optional = false @@ -149,12 +149,12 @@ six = ">=1.9.0" webencodings = "*" [package.extras] -css = ["tinycss2 (>=1.1.0,<1.2)"] -dev = ["build (==0.8.0)", "flake8 (==4.0.1)", "hashin (==0.17.0)", "pip-tools (==6.6.2)", "pytest (==7.1.2)", "Sphinx (==4.3.2)", "tox (==3.25.0)", "twine (==4.0.1)", "wheel (==0.37.1)", "black (==22.3.0)", "mypy (==0.961)"] +css = ["tinycss2 (>=1.1.0)"] +dev = ["pip-tools (==6.5.1)", "pytest (==7.1.1)", "flake8 (==4.0.1)", "tox (==3.24.5)", "sphinx (==4.3.2)", "twine (==4.0.0)", "wheel (==0.37.1)", "hashin (==0.17.0)", "black (==22.3.0)", "mypy (==0.942)"] [[package]] name = "certifi" -version = "2022.6.15" +version = "2022.5.18.1" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false @@ -162,7 +162,7 @@ python-versions = ">=3.6" [[package]] name = "cffi" -version = "1.15.1" +version = "1.15.0" description = "Foreign Function Interface for Python calling C code." category = "main" optional = false @@ -192,11 +192,11 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [[package]] name = "charset-normalizer" -version = "2.1.0" +version = "2.0.12" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false -python-versions = ">=3.6.0" +python-versions = ">=3.5.0" [package.extras] unicode_backport = ["unicodedata2"] @@ -225,7 +225,7 @@ click = "*" [[package]] name = "colorama" -version = "0.4.5" +version = "0.4.4" description = "Cross-platform colored terminal text." category = "main" optional = false @@ -244,7 +244,7 @@ test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] [[package]] name = "cryptography" -version = "37.0.4" +version = "37.0.2" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." category = "main" optional = false @@ -371,7 +371,7 @@ tqdm = ["tqdm"] [[package]] name = "funowl" -version = "0.1.12" +version = "0.1.11" description = "Python rendering of the OWL Functional syntax" category = "main" optional = false @@ -380,7 +380,7 @@ python-versions = ">=3.7" [package.dependencies] bcp47 = "*" pyjsg = ">=0.11.6" -rdflib = ">=5.0.0" +rdflib = ">=5.0.0,<6.1.0 || >=6.2.0" rdflib-shim = "*" rfc3987 = "*" @@ -440,7 +440,7 @@ python-versions = ">=3.5" [[package]] name = "imagesize" -version = "1.4.1" +version = "1.3.0" description = "Getting image size from png/jpeg/jpeg2000/gif file" category = "main" optional = false @@ -448,7 +448,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "importlib-metadata" -version = "4.12.0" +version = "4.11.4" description = "Read metadata from Python packages" category = "main" optional = false @@ -460,7 +460,7 @@ zipp = ">=0.5" [package.extras] docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] perf = ["ipython"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] [[package]] name = "inflect" @@ -519,6 +519,14 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] +[[package]] +name = "joblib" +version = "1.1.0" +description = "Lightweight pipelining with Python functions" +category = "main" +optional = false +python-versions = ">=3.6" + [[package]] name = "json-flattener" version = "0.1.9" @@ -587,7 +595,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "jsonschema" -version = "4.6.2" +version = "4.5.1" description = "An implementation of JSON Schema validation for Python" category = "main" optional = false @@ -599,18 +607,18 @@ pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" [package.extras] format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] +format_nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] [[package]] name = "keyring" -version = "23.6.0" +version = "23.5.1" description = "Store and access your passwords safely." category = "main" optional = false python-versions = ">=3.7" [package.dependencies] -importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""} +importlib-metadata = ">=3.6" jeepney = {version = ">=0.4.2", markers = "sys_platform == \"linux\""} pywin32-ctypes = {version = "<0.1.0 || >0.1.0,<0.1.1 || >0.1.1", markers = "sys_platform == \"win32\""} SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""} @@ -619,31 +627,6 @@ SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""} docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] -[[package]] -name = "kgcl-rdflib" -version = "0.2.0" -description = "Schema fro the KGCL project." -category = "main" -optional = false -python-versions = ">=3.8,<4.0" - -[package.dependencies] -kgcl-schema = ">=0.2.0,<0.3.0" -lark = ">=1.1.2,<2.0.0" -linkml-runtime = ">=1.1.24,<2.0.0" - -[[package]] -name = "kgcl-schema" -version = "0.2.0" -description = "Schema for the KGCL project." -category = "main" -optional = false -python-versions = ">=3.8,<4.0" - -[package.dependencies] -lark = ">=1.1.2,<2.0.0" -linkml-runtime = ">=1.1.24,<2.0.0" - [[package]] name = "lark" version = "1.1.2" @@ -659,26 +642,27 @@ regex = ["regex"] [[package]] name = "linkml" -version = "1.2.12" +version = "1.2.11" description = "Linked Open Data Modeling Language" category = "main" optional = false -python-versions = ">=3.7.6,<4.0.0" +python-versions = ">=3.7" [package.dependencies] -antlr4-python3-runtime = ">=4.9.0,<4.10" +antlr4-python3-runtime = ">=4.9,<4.10" argparse = ">=1.4.0" click = ">=7.0" graphviz = ">=0.10.1" hbreader = "*" isodate = ">=0.6.0" jinja2 = "*" -jsonasobj2 = ">=1.0.3,<2.0.0" +jsonasobj2 = ">=1.0.3,<2.0" jsonschema = ">=3.0.1" linkml-dataops = "*" -linkml-runtime = ">=1.2.14,<2.0.0" +linkml-runtime = ">=1.2.12,<1.3.0" myst-parser = "*" openpyxl = "*" +pandas = "*" parse = "*" prefixcommons = ">=0.1.7" pydantic = "*" @@ -689,13 +673,12 @@ python-dateutil = "*" pyyaml = "*" rdflib = ">=6.0.0" requests = ">=2.22" +sphinx = "*" sphinx-click = "*" +sphinx-rtd-theme = "*" sqlalchemy = ">=1.4.31" watchdog = ">=0.9.0" -[package.extras] -docs = ["sphinx-rtd-theme", "sphinx"] - [[package]] name = "linkml-dataops" version = "0.1.0" @@ -850,30 +833,30 @@ python-versions = ">=3.7" [[package]] name = "myst-parser" -version = "0.18.0" +version = "0.17.2" description = "An extended commonmark compliant parser, with bridges to docutils & sphinx." category = "main" optional = false python-versions = ">=3.7" [package.dependencies] -docutils = ">=0.15,<0.19" +docutils = ">=0.15,<0.18" jinja2 = "*" markdown-it-py = ">=1.0.0,<3.0.0" mdit-py-plugins = ">=0.3.0,<0.4.0" pyyaml = "*" -sphinx = ">=4,<6" +sphinx = ">=3.1,<5" typing-extensions = "*" [package.extras] code_style = ["pre-commit (>=2.12,<3.0)"] linkify = ["linkify-it-py (>=1.0,<2.0)"] -rtd = ["ipython", "sphinx-book-theme", "sphinx-design", "sphinxext-rediraffe (>=0.2.7,<0.3.0)", "sphinxcontrib.mermaid (>=0.7.1,<0.8.0)", "sphinxext-opengraph (>=0.6.3,<0.7.0)"] -testing = ["beautifulsoup4", "coverage", "pytest (>=6,<7)", "pytest-cov", "pytest-regressions", "pytest-param-files (>=0.3.4,<0.4.0)", "sphinx-pytest"] +rtd = ["ipython", "sphinx-book-theme", "sphinx-panels", "sphinxcontrib-bibtex (>=2.4,<3.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)", "sphinxcontrib.mermaid (>=0.7.1,<0.8.0)", "sphinxext-opengraph (>=0.6.3,<0.7.0)"] +testing = ["beautifulsoup4", "coverage", "docutils (>=0.17.0,<0.18.0)", "pytest (>=6,<7)", "pytest-cov", "pytest-regressions", "pytest-param-files (>=0.3.4,<0.4.0)"] [[package]] name = "networkx" -version = "2.8.4" +version = "2.8.2" description = "Python package for creating and manipulating graphs and networks" category = "main" optional = false @@ -881,8 +864,8 @@ python-versions = ">=3.8" [package.extras] default = ["numpy (>=1.19)", "scipy (>=1.8)", "matplotlib (>=3.4)", "pandas (>=1.3)"] -developer = ["pre-commit (>=2.19)", "mypy (>=0.960)"] -doc = ["sphinx (>=5)", "pydata-sphinx-theme (>=0.9)", "sphinx-gallery (>=0.10)", "numpydoc (>=1.4)", "pillow (>=9.1)", "nb2plots (>=0.6)", "texext (>=0.6.6)"] +developer = ["pre-commit (>=2.18)", "mypy (>=0.942)"] +doc = ["sphinx (>=4.5)", "pydata-sphinx-theme (>=0.8.1)", "sphinx-gallery (>=0.10)", "numpydoc (>=1.3)", "pillow (>=9.1)", "nb2plots (>=0.6)", "texext (>=0.6.6)"] extra = ["lxml (>=4.6)", "pygraphviz (>=1.9)", "pydot (>=1.4.2)", "sympy (>=1.10)"] test = ["pytest (>=7.1)", "pytest-cov (>=3.0)", "codecov (>=2.1)"] @@ -899,7 +882,7 @@ docopt = ">=0.6.2" [[package]] name = "numpy" -version = "1.23.0" +version = "1.22.4" description = "NumPy is the fundamental package for array computing with Python." category = "main" optional = false @@ -924,7 +907,7 @@ viz = ["pygraphviz"] [[package]] name = "oaklib" -version = "0.1.29" +version = "0.1.17" description = "Ontology Access Kit: Python library for common ontology operations over a variety of backends" category = "main" optional = false @@ -932,21 +915,16 @@ python-versions = ">=3.9,<4.0" [package.dependencies] appdirs = ">=1.4.4,<2.0.0" -funowl = ">=0.1.12,<0.2.0" -kgcl-rdflib = ">=0.2.0,<0.3.0" -kgcl-schema = ">=0.2.0,<0.3.0" lark = ">=1.1.2,<2.0.0" -linkml-runtime = ">=1.2.15,<2.0.0" +linkml-runtime = ">=1.1.9,<2.0.0" networkx = ">=2.7.1,<3.0.0" nxontology = ">=0.4.0,<0.5.0" -pronto = ">=2.4.6,<3.0.0" -pystow = ">=0.4.4,<0.5.0" +pronto = ">=2.4.5,<3.0.0" ratelimit = ">=2.2.1,<3.0.0" -semsql = ">=0.1.6,<0.2.0" +semsql = ">=0.1.3,<0.2.0" SPARQLWrapper = "*" SQLAlchemy = ">=1.4.32,<2.0.0" -sssom = ">=0.3.11,<0.4.0" -sssom-schema = ">=0.9.3,<0.10.0" +sssom = ">=0.3.8,<0.4.0" [[package]] name = "openpyxl" @@ -972,7 +950,7 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" [[package]] name = "pandas" -version = "1.4.3" +version = "1.4.2" description = "Powerful data structures for data analysis, time series, and statistics" category = "main" optional = false @@ -1014,14 +992,14 @@ python-versions = "*" [[package]] name = "pkginfo" -version = "1.8.3" +version = "1.8.2" description = "Query metadatdata from sdists / bdists / installed packages." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = "*" [package.extras] -testing = ["nose", "coverage"] +testing = ["coverage", "nose"] [[package]] name = "pluggy" @@ -1056,7 +1034,7 @@ requests = ">=2.28.1,<3.0.0" [[package]] name = "pronto" -version = "2.4.7" +version = "2.4.5" description = "Python frontend to ontologies." category = "main" optional = false @@ -1188,7 +1166,7 @@ shexjsg = ">=0.8.1" [[package]] name = "pystow" -version = "0.4.5" +version = "0.4.3" description = "Easily pick a place to store data for your python package." category = "main" optional = false @@ -1296,7 +1274,7 @@ python-versions = "*" [[package]] name = "rdflib" -version = "6.1.1" +version = "6.0.2" description = "RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information." category = "main" optional = false @@ -1309,7 +1287,7 @@ pyparsing = "*" [package.extras] docs = ["sphinx (<5)", "sphinxcontrib-apidoc"] html = ["html5lib"] -tests = ["berkeleydb", "html5lib", "networkx", "pytest", "pytest-cov", "pytest-subtests"] +tests = ["html5lib", "networkx", "nose (==1.3.7)", "nose-timer", "coverage", "black (==21.6b0)", "flake8", "doctest-ignore-unicode (==0.1.2)"] [[package]] name = "rdflib-jsonld" @@ -1350,6 +1328,19 @@ Pygments = ">=2.5.1" [package.extras] md = ["cmarkgfm (>=0.8.0)"] +[[package]] +name = "recommonmark" +version = "0.7.1" +description = "A docutils-compatibility bridge to CommonMark, enabling you to write CommonMark inside of Docutils & Sphinx projects." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +commonmark = ">=0.8.1" +docutils = ">=0.11" +sphinx = ">=1.3.1" + [[package]] name = "requests" version = "2.28.1" @@ -1400,7 +1391,7 @@ python-versions = "*" [[package]] name = "rich" -version = "12.4.4" +version = "12.4.1" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" category = "main" optional = false @@ -1436,6 +1427,26 @@ category = "main" optional = false python-versions = ">=3.5" +[[package]] +name = "scikit-learn" +version = "1.1.1" +description = "A set of python modules for machine learning and data mining" +category = "main" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +joblib = ">=1.0.0" +numpy = ">=1.17.3" +scipy = ">=1.3.2" +threadpoolctl = ">=2.0.0" + +[package.extras] +benchmark = ["matplotlib (>=3.1.2)", "pandas (>=1.0.5)", "memory-profiler (>=0.57.0)"] +docs = ["matplotlib (>=3.1.2)", "scikit-image (>=0.14.5)", "pandas (>=1.0.5)", "seaborn (>=0.9.0)", "memory-profiler (>=0.57.0)", "sphinx (>=4.0.1)", "sphinx-gallery (>=0.7.0)", "numpydoc (>=1.2.0)", "Pillow (>=7.1.2)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +examples = ["matplotlib (>=3.1.2)", "scikit-image (>=0.14.5)", "pandas (>=1.0.5)", "seaborn (>=0.9.0)"] +tests = ["matplotlib (>=3.1.2)", "scikit-image (>=0.14.5)", "pandas (>=1.0.5)", "pytest (>=5.0.1)", "pytest-cov (>=2.9.0)", "flake8 (>=3.8.2)", "black (>=22.3.0)", "mypy (>=0.770)", "pyamg (>=4.0.0)", "numpydoc (>=1.2.0)"] + [[package]] name = "scipy" version = "1.6.1" @@ -1461,7 +1472,7 @@ jeepney = ">=0.6" [[package]] name = "semsql" -version = "0.1.7" +version = "0.1.3" description = "" category = "main" optional = false @@ -1469,7 +1480,7 @@ python-versions = ">=3.8,<4.0" [package.dependencies] click = ">=8.1.3,<9.0.0" -linkml-runtime = ">=1.2.15,<2.0.0" +linkml = ">=1.2.10,<2.0.0" SQLAlchemy-Utils = ">=0.38.2,<0.39.0" [[package]] @@ -1514,20 +1525,17 @@ sparqlwrapper = ">=1.8.2" [[package]] name = "sparqlwrapper" -version = "2.0.0" +version = "1.8.5" description = "SPARQL Endpoint interface to Python" category = "main" optional = false -python-versions = ">=3.7" +python-versions = "*" [package.dependencies] -rdflib = ">=6.1.1" +rdflib = ">=4.0" [package.extras] -dev = ["setuptools (>=3.7.1)", "mypy (>=0.931)", "pandas (>=1.3.5)", "pandas-stubs (>=1.2.0.48)"] -docs = ["sphinx (<5)", "sphinx-rtd-theme"] keepalive = ["keepalive (>=0.5)"] -pandas = ["pandas (>=1.3.5)"] [[package]] name = "sphinx" @@ -1582,6 +1590,21 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "sphinx-rtd-theme" +version = "1.0.0" +description = "Read the Docs theme for Sphinx" +category = "main" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" + +[package.dependencies] +docutils = "<0.18" +sphinx = ">=1.6" + +[package.extras] +dev = ["transifex-client", "sphinxcontrib-httpdomain", "bump2version"] + [[package]] name = "sphinxcontrib-applehelp" version = "1.0.2" @@ -1663,7 +1686,7 @@ test = ["pytest"] [[package]] name = "sqlalchemy" -version = "1.4.39" +version = "1.4.36" description = "Database Abstraction Library" category = "main" optional = false @@ -1687,7 +1710,7 @@ mysql_connector = ["mysql-connector-python"] oracle = ["cx_oracle (>=7,<8)", "cx_oracle (>=7)"] postgresql = ["psycopg2 (>=2.7)"] postgresql_asyncpg = ["greenlet (!=0.4.17)", "asyncpg"] -postgresql_pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] +postgresql_pg8000 = ["pg8000 (>=1.16.6)"] postgresql_psycopg2binary = ["psycopg2-binary"] postgresql_psycopg2cffi = ["psycopg2cffi"] pymysql = ["pymysql (<1)", "pymysql"] @@ -1721,7 +1744,7 @@ url = ["furl (>=0.4.1)"] [[package]] name = "sssom" -version = "0.3.12" +version = "0.3.11" description = "Operations on SSSOM mapping tables" category = "main" optional = false @@ -1739,29 +1762,19 @@ pandasql = "*" pyparsing = "2.4.7" pyyaml = "*" rdflib = ">=6" +recommonmark = ">=0.7" +scikit_learn = "*" scipy = "*" sparqlwrapper = "*" -sssom-schema = "*" validators = [ "*", ">=0.0", ] [package.extras] -docs = ["sphinx", "sphinx-rtd-theme", "sphinx-autodoc-typehints", "sphinx-click", "recommonmark"] +docs = ["sphinx", "sphinx-rtd-theme", "sphinx-autodoc-typehints", "sphinx-click"] test = ["pytest"] -[[package]] -name = "sssom-schema" -version = "0.9.4" -description = "SSSOM is a Simple Standard for Sharing Ontology Mappings." -category = "main" -optional = false -python-versions = ">=3.7.6,<4.0.0" - -[package.dependencies] -linkml-runtime = ">=1.1.24,<2.0.0" - [[package]] name = "strsimpy" version = "0.2.1" @@ -1770,6 +1783,14 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "threadpoolctl" +version = "3.1.0" +description = "threadpoolctl" +category = "main" +optional = false +python-versions = ">=3.6" + [[package]] name = "tomli" version = "2.0.1" @@ -1797,7 +1818,7 @@ telegram = ["requests"] [[package]] name = "twine" -version = "4.0.1" +version = "4.0.0" description = "Collection of utilities for publishing packages on PyPI" category = "main" optional = false @@ -1807,7 +1828,7 @@ python-versions = ">=3.7" importlib-metadata = ">=3.6" keyring = ">=15.1" pkginfo = ">=1.8.1" -readme-renderer = ">=35.0" +readme-renderer = ">=21.0" requests = ">=2.20" requests-toolbelt = ">=0.8.0,<0.9.0 || >0.9.0" rfc3986 = ">=1.4.0" @@ -1816,7 +1837,7 @@ urllib3 = ">=1.26.0" [[package]] name = "typing-extensions" -version = "4.3.0" +version = "4.2.0" description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = false @@ -1824,11 +1845,11 @@ python-versions = ">=3.7" [[package]] name = "urllib3" -version = "1.26.10" +version = "1.26.9" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" [package.extras] brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] @@ -1837,7 +1858,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "validators" -version = "0.20.0" +version = "0.19.0" description = "Python Data Validation for Humans™." category = "main" optional = false @@ -1851,7 +1872,7 @@ test = ["pytest (>=2.2.3)", "flake8 (>=2.4.0)", "isort (>=4.2.2)"] [[package]] name = "watchdog" -version = "2.1.9" +version = "2.1.8" description = "Filesystem events monitoring" category = "main" optional = false @@ -1906,7 +1927,7 @@ docs = [] [metadata] lock-version = "1.1" python-versions = "^3.9" -content-hash = "83a99d4474d998ea062f39057ced63c428002bb2322b951d0152d2e1833ee32c" +content-hash = "4b7145f8327069db05ec3aaa5e333503eaf1aa5d04efc72c34635cc3e5a8959a" [metadata.files] aiohttp = [ @@ -1983,21 +2004,13 @@ aiohttp = [ {file = "aiohttp-3.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:1c182cb873bc91b411e184dab7a2b664d4fea2743df0e4d57402f7f3fa644bac"}, {file = "aiohttp-3.8.1.tar.gz", hash = "sha256:fc5471e1a54de15ef71c1bc6ebe80d4dc681ea600e68bfd1cbce40427f0b7578"}, ] -aiosignal = [ - {file = "aiosignal-1.2.0-py3-none-any.whl", hash = "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a"}, - {file = "aiosignal-1.2.0.tar.gz", hash = "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2"}, -] +aiosignal = [] alabaster = [ {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, ] -antlr4-python3-runtime = [ - {file = "antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b"}, -] -appdirs = [ - {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, - {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, -] +antlr4-python3-runtime = [] +appdirs = [] argparse = [ {file = "argparse-1.4.0-py2.py3-none-any.whl", hash = "sha256:c31647edb69fd3d465a847ea3157d37bed1f95f19760b11a47aa91c04b666314"}, {file = "argparse-1.4.0.tar.gz", hash = "sha256:62b089a55be1d8949cd2bc7e0df0bddb9e028faefc8c32038cc84862aefdd6e4"}, @@ -2006,30 +2019,18 @@ async-timeout = [ {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, ] -atomicwrites = [ - {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, - {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, -] -attrs = [ - {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, - {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, -] +atomicwrites = [] +attrs = [] babel = [ - {file = "Babel-2.10.3-py3-none-any.whl", hash = "sha256:ff56f4892c1c4bf0d814575ea23471c230d544203c7748e8c68f0089478d48eb"}, - {file = "Babel-2.10.3.tar.gz", hash = "sha256:7614553711ee97490f732126dc077f8d0ae084ebc6a96e23db1482afabdb2c51"}, -] -bcp47 = [ - {file = "bcp47-0.0.4-py3-none-any.whl", hash = "sha256:309d3bbaef8d6c9ac59d37ba2167cc6620b4e7467ec8f1e09641b659bb1c0c6d"}, - {file = "bcp47-0.0.4.tar.gz", hash = "sha256:4878d2f3e697ef39ef3891a147280705e4377d5a8d7eb0702129b8d4a3718702"}, -] -bioregistry = [ - {file = "bioregistry-0.4.120-py3-none-any.whl", hash = "sha256:7dcd6bc206eee972e6f229f2b45638a66b559d1487a9c691568a0d80d030385d"}, - {file = "bioregistry-0.4.120.tar.gz", hash = "sha256:f32d9266f0961c61eaa541d1dd221b35946ae415a92c886b6823ef523218e7f7"}, + {file = "Babel-2.10.1-py3-none-any.whl", hash = "sha256:3f349e85ad3154559ac4930c3918247d319f21910d5ce4b25d439ed8693b98d2"}, + {file = "Babel-2.10.1.tar.gz", hash = "sha256:98aeaca086133efb3e1e2aad0396987490c8425929ddbcfe0550184fdc54cd13"}, ] +bcp47 = [] +bioregistry = [] bleach = [] certifi = [ - {file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"}, - {file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"}, + {file = "certifi-2022.5.18.1-py3-none-any.whl", hash = "sha256:f1d53542ee8cbedbe2118b5686372fb33c297fcd6379b050cca0ef13a597382a"}, + {file = "certifi-2022.5.18.1.tar.gz", hash = "sha256:9c5705e395cd70084351dd8ad5c41e65655e08ce46f2ec9cf6c2c08390f71eb7"}, ] cffi = [] cfgraph = [ @@ -2039,46 +2040,37 @@ chardet = [ {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"}, {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"}, ] -charset-normalizer = [ - {file = "charset-normalizer-2.1.0.tar.gz", hash = "sha256:575e708016ff3a5e3681541cb9d79312c416835686d054a23accb873b254f413"}, - {file = "charset_normalizer-2.1.0-py3-none-any.whl", hash = "sha256:5189b6f22b01957427f35b6a08d9a0bc45b46d3788ef5a92e978433c7a35f8a5"}, -] -click = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, -] +charset-normalizer = [] +click = [] click-log = [] colorama = [ - {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, - {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, -] -commonmark = [ - {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"}, - {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"}, + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, ] +commonmark = [] cryptography = [ - {file = "cryptography-37.0.4-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:549153378611c0cca1042f20fd9c5030d37a72f634c9326e225c9f666d472884"}, - {file = "cryptography-37.0.4-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:a958c52505c8adf0d3822703078580d2c0456dd1d27fabfb6f76fe63d2971cd6"}, - {file = "cryptography-37.0.4-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f721d1885ecae9078c3f6bbe8a88bc0786b6e749bf32ccec1ef2b18929a05046"}, - {file = "cryptography-37.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3d41b965b3380f10e4611dbae366f6dc3cefc7c9ac4e8842a806b9672ae9add5"}, - {file = "cryptography-37.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80f49023dd13ba35f7c34072fa17f604d2f19bf0989f292cedf7ab5770b87a0b"}, - {file = "cryptography-37.0.4-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2dcb0b3b63afb6df7fd94ec6fbddac81b5492513f7b0436210d390c14d46ee8"}, - {file = "cryptography-37.0.4-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:b7f8dd0d4c1f21759695c05a5ec8536c12f31611541f8904083f3dc582604280"}, - {file = "cryptography-37.0.4-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:30788e070800fec9bbcf9faa71ea6d8068f5136f60029759fd8c3efec3c9dcb3"}, - {file = "cryptography-37.0.4-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:190f82f3e87033821828f60787cfa42bff98404483577b591429ed99bed39d59"}, - {file = "cryptography-37.0.4-cp36-abi3-win32.whl", hash = "sha256:b62439d7cd1222f3da897e9a9fe53bbf5c104fff4d60893ad1355d4c14a24157"}, - {file = "cryptography-37.0.4-cp36-abi3-win_amd64.whl", hash = "sha256:f7a6de3e98771e183645181b3627e2563dcde3ce94a9e42a3f427d2255190327"}, - {file = "cryptography-37.0.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bc95ed67b6741b2607298f9ea4932ff157e570ef456ef7ff0ef4884a134cc4b"}, - {file = "cryptography-37.0.4-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:f8c0a6e9e1dd3eb0414ba320f85da6b0dcbd543126e30fcc546e7372a7fbf3b9"}, - {file = "cryptography-37.0.4-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:e007f052ed10cc316df59bc90fbb7ff7950d7e2919c9757fd42a2b8ecf8a5f67"}, - {file = "cryptography-37.0.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bc997818309f56c0038a33b8da5c0bfbb3f1f067f315f9abd6fc07ad359398d"}, - {file = "cryptography-37.0.4-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d204833f3c8a33bbe11eda63a54b1aad7aa7456ed769a982f21ec599ba5fa282"}, - {file = "cryptography-37.0.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:75976c217f10d48a8b5a8de3d70c454c249e4b91851f6838a4e48b8f41eb71aa"}, - {file = "cryptography-37.0.4-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:7099a8d55cd49b737ffc99c17de504f2257e3787e02abe6d1a6d136574873441"}, - {file = "cryptography-37.0.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2be53f9f5505673eeda5f2736bea736c40f051a739bfae2f92d18aed1eb54596"}, - {file = "cryptography-37.0.4-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:91ce48d35f4e3d3f1d83e29ef4a9267246e6a3be51864a5b7d2247d5086fa99a"}, - {file = "cryptography-37.0.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4c590ec31550a724ef893c50f9a97a0c14e9c851c85621c5650d699a7b88f7ab"}, - {file = "cryptography-37.0.4.tar.gz", hash = "sha256:63f9c17c0e2474ccbebc9302ce2f07b55b3b3fcb211ded18a42d5764f5c10a82"}, + {file = "cryptography-37.0.2-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:ef15c2df7656763b4ff20a9bc4381d8352e6640cfeb95c2972c38ef508e75181"}, + {file = "cryptography-37.0.2-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:3c81599befb4d4f3d7648ed3217e00d21a9341a9a688ecdd615ff72ffbed7336"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2bd1096476aaac820426239ab534b636c77d71af66c547b9ddcd76eb9c79e004"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:31fe38d14d2e5f787e0aecef831457da6cec68e0bb09a35835b0b44ae8b988fe"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:093cb351031656d3ee2f4fa1be579a8c69c754cf874206be1d4cf3b542042804"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59b281eab51e1b6b6afa525af2bd93c16d49358404f814fe2c2410058623928c"}, + {file = "cryptography-37.0.2-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:0cc20f655157d4cfc7bada909dc5cc228211b075ba8407c46467f63597c78178"}, + {file = "cryptography-37.0.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:f8ec91983e638a9bcd75b39f1396e5c0dc2330cbd9ce4accefe68717e6779e0a"}, + {file = "cryptography-37.0.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:46f4c544f6557a2fefa7ac8ac7d1b17bf9b647bd20b16decc8fbcab7117fbc15"}, + {file = "cryptography-37.0.2-cp36-abi3-win32.whl", hash = "sha256:731c8abd27693323b348518ed0e0705713a36d79fdbd969ad968fbef0979a7e0"}, + {file = "cryptography-37.0.2-cp36-abi3-win_amd64.whl", hash = "sha256:471e0d70201c069f74c837983189949aa0d24bb2d751b57e26e3761f2f782b8d"}, + {file = "cryptography-37.0.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a68254dd88021f24a68b613d8c51d5c5e74d735878b9e32cc0adf19d1f10aaf9"}, + {file = "cryptography-37.0.2-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:a7d5137e556cc0ea418dca6186deabe9129cee318618eb1ffecbd35bee55ddc1"}, + {file = "cryptography-37.0.2-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aeaba7b5e756ea52c8861c133c596afe93dd716cbcacae23b80bc238202dc023"}, + {file = "cryptography-37.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95e590dd70642eb2079d280420a888190aa040ad20f19ec8c6e097e38aa29e06"}, + {file = "cryptography-37.0.2-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:1b9362d34363f2c71b7853f6251219298124aa4cc2075ae2932e64c91a3e2717"}, + {file = "cryptography-37.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e53258e69874a306fcecb88b7534d61820db8a98655662a3dd2ec7f1afd9132f"}, + {file = "cryptography-37.0.2-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:1f3bfbd611db5cb58ca82f3deb35e83af34bb8cf06043fa61500157d50a70982"}, + {file = "cryptography-37.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:419c57d7b63f5ec38b1199a9521d77d7d1754eb97827bbb773162073ccd8c8d4"}, + {file = "cryptography-37.0.2-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:dc26bb134452081859aa21d4990474ddb7e863aa39e60d1592800a8865a702de"}, + {file = "cryptography-37.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3b8398b3d0efc420e777c40c16764d6870bcef2eb383df9c6dbb9ffe12c64452"}, + {file = "cryptography-37.0.2.tar.gz", hash = "sha256:f224ad253cc9cea7568f49077007d2263efa57396a2f2f78114066fd54b5c68e"}, ] decorator = [ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, @@ -2088,13 +2080,8 @@ deprecated = [ {file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"}, {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"}, ] -deprecation = [ - {file = "deprecation-2.1.0-py2.py3-none-any.whl", hash = "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a"}, - {file = "deprecation-2.1.0.tar.gz", hash = "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff"}, -] -docopt = [ - {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"}, -] +deprecation = [] +docopt = [] docutils = [ {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"}, {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"}, @@ -2103,102 +2090,11 @@ et-xmlfile = [ {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"}, {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"}, ] -fastobo = [ - {file = "fastobo-0.11.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:80879ce45dfe4457959301b37563b2073bd19f265c9395f5ae99f2eac16f7739"}, - {file = "fastobo-0.11.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1aaf6aee2d2e2660d6c3eb88ef0d03353e51d7342323e5dae62814cb5e0ca712"}, - {file = "fastobo-0.11.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:93aa0a3760315de43d6f770d990be2933aa63cb6d425adb25f20413223937c2a"}, - {file = "fastobo-0.11.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:d647a215e9add293636c37a4df3f708d4e85cf87bbaf8f19cd0c5e1c79f51060"}, - {file = "fastobo-0.11.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b60fb668178eb07b3952c8a9dea34597c1a019c33d93674dfcbc732d8dcbe7e3"}, - {file = "fastobo-0.11.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:130e30d2f20833fd181fb9439404f6f90e7d0ace582a0af11a2d93f5a91c72d4"}, - {file = "fastobo-0.11.1-cp36-cp36m-win_amd64.whl", hash = "sha256:7aa23b8bec6cc89ba383a9535637076d2cfc8e420d3ea41d6ce4be412250a766"}, - {file = "fastobo-0.11.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:cf8f3594e11c3a8e84c4cbf064a2cb02a8601f6a22406ae5607181552cd30fa2"}, - {file = "fastobo-0.11.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e2d6de2a8a2d1416e81a48a966433947145f1186c201eeb5362e80b005afb14"}, - {file = "fastobo-0.11.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a368470a46f8cacf1e75e65aa26c566ba2f60040973357cdb6552c4c077e7e4c"}, - {file = "fastobo-0.11.1-cp37-cp37m-win_amd64.whl", hash = "sha256:2c45bb2cf3eae700d2e92a6280b06ac580b116e6cc3e295074844a24a87b5257"}, - {file = "fastobo-0.11.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:159850e7cee0f63b6223ec111c3077c5d73e98ba741d50240bf548630e4e4eae"}, - {file = "fastobo-0.11.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e71ed4af0acb217c7bb39c322f69cfe0b05cbc603bf1c55ffbb9e1a434dd2f00"}, - {file = "fastobo-0.11.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6bd12171b5244a943c37d03d34161a2ced262be8f425e964108114f1c86a0ec0"}, - {file = "fastobo-0.11.1-cp38-cp38-win_amd64.whl", hash = "sha256:466318add3732d95b8c94433f67364d69a102e6e0c03fea92e675a12666802b8"}, - {file = "fastobo-0.11.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:be54672b8b022705a5d9038fb0a4af61dd213061dbec15ad979a6ee4254118a9"}, - {file = "fastobo-0.11.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cd444acffff0d96754a7fb0d1b41b6c914ec2af297baaf7e833a7ed9423f6a8"}, - {file = "fastobo-0.11.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:01e5d950d7588f8ddf2d3d966f917e9a4b6639ed6c404a5946c07fcc56224dd3"}, - {file = "fastobo-0.11.1-cp39-cp39-win_amd64.whl", hash = "sha256:a16e0ebc728f940423abac0648e49d0b3d79922822739b929a3ac47a60949798"}, - {file = "fastobo-0.11.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0d91e412186afb9e8090fc21ae664fb9165e6c06d5c223a5cb55c1103e5d9fe9"}, - {file = "fastobo-0.11.1.tar.gz", hash = "sha256:4f71dcca4d841496816bba873d6070b6a414cac385a561747e900c740b762ef3"}, -] -frozenlist = [ - {file = "frozenlist-1.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d2257aaba9660f78c7b1d8fea963b68f3feffb1a9d5d05a18401ca9eb3e8d0a3"}, - {file = "frozenlist-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4a44ebbf601d7bac77976d429e9bdb5a4614f9f4027777f9e54fd765196e9d3b"}, - {file = "frozenlist-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:45334234ec30fc4ea677f43171b18a27505bfb2dba9aca4398a62692c0ea8868"}, - {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47be22dc27ed933d55ee55845d34a3e4e9f6fee93039e7f8ebadb0c2f60d403f"}, - {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03a7dd1bfce30216a3f51a84e6dd0e4a573d23ca50f0346634916ff105ba6e6b"}, - {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:691ddf6dc50480ce49f68441f1d16a4c3325887453837036e0fb94736eae1e58"}, - {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde99812f237f79eaf3f04ebffd74f6718bbd216101b35ac7955c2d47c17da02"}, - {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a202458d1298ced3768f5a7d44301e7c86defac162ace0ab7434c2e961166e8"}, - {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b9e3e9e365991f8cc5f5edc1fd65b58b41d0514a6a7ad95ef5c7f34eb49b3d3e"}, - {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:04cb491c4b1c051734d41ea2552fde292f5f3a9c911363f74f39c23659c4af78"}, - {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:436496321dad302b8b27ca955364a439ed1f0999311c393dccb243e451ff66aa"}, - {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:754728d65f1acc61e0f4df784456106e35afb7bf39cfe37227ab00436fb38676"}, - {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6eb275c6385dd72594758cbe96c07cdb9bd6becf84235f4a594bdf21e3596c9d"}, - {file = "frozenlist-1.3.0-cp310-cp310-win32.whl", hash = "sha256:e30b2f9683812eb30cf3f0a8e9f79f8d590a7999f731cf39f9105a7c4a39489d"}, - {file = "frozenlist-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f7353ba3367473d1d616ee727945f439e027f0bb16ac1a750219a8344d1d5d3c"}, - {file = "frozenlist-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88aafd445a233dbbf8a65a62bc3249a0acd0d81ab18f6feb461cc5a938610d24"}, - {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4406cfabef8f07b3b3af0f50f70938ec06d9f0fc26cbdeaab431cbc3ca3caeaa"}, - {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8cf829bd2e2956066dd4de43fd8ec881d87842a06708c035b37ef632930505a2"}, - {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:603b9091bd70fae7be28bdb8aa5c9990f4241aa33abb673390a7f7329296695f"}, - {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25af28b560e0c76fa41f550eacb389905633e7ac02d6eb3c09017fa1c8cdfde1"}, - {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94c7a8a9fc9383b52c410a2ec952521906d355d18fccc927fca52ab575ee8b93"}, - {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:65bc6e2fece04e2145ab6e3c47428d1bbc05aede61ae365b2c1bddd94906e478"}, - {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3f7c935c7b58b0d78c0beea0c7358e165f95f1fd8a7e98baa40d22a05b4a8141"}, - {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd89acd1b8bb4f31b47072615d72e7f53a948d302b7c1d1455e42622de180eae"}, - {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:6983a31698490825171be44ffbafeaa930ddf590d3f051e397143a5045513b01"}, - {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:adac9700675cf99e3615eb6a0eb5e9f5a4143c7d42c05cea2e7f71c27a3d0846"}, - {file = "frozenlist-1.3.0-cp37-cp37m-win32.whl", hash = "sha256:0c36e78b9509e97042ef869c0e1e6ef6429e55817c12d78245eb915e1cca7468"}, - {file = "frozenlist-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:57f4d3f03a18facacb2a6bcd21bccd011e3b75d463dc49f838fd699d074fabd1"}, - {file = "frozenlist-1.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8c905a5186d77111f02144fab5b849ab524f1e876a1e75205cd1386a9be4b00a"}, - {file = "frozenlist-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b5009062d78a8c6890d50b4e53b0ddda31841b3935c1937e2ed8c1bda1c7fb9d"}, - {file = "frozenlist-1.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2fdc3cd845e5a1f71a0c3518528bfdbfe2efaf9886d6f49eacc5ee4fd9a10953"}, - {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92e650bd09b5dda929523b9f8e7f99b24deac61240ecc1a32aeba487afcd970f"}, - {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:40dff8962b8eba91fd3848d857203f0bd704b5f1fa2b3fc9af64901a190bba08"}, - {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:768efd082074bb203c934e83a61654ed4931ef02412c2fbdecea0cff7ecd0274"}, - {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:006d3595e7d4108a12025ddf415ae0f6c9e736e726a5db0183326fd191b14c5e"}, - {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:871d42623ae15eb0b0e9df65baeee6976b2e161d0ba93155411d58ff27483ad8"}, - {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aff388be97ef2677ae185e72dc500d19ecaf31b698986800d3fc4f399a5e30a5"}, - {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9f892d6a94ec5c7b785e548e42722e6f3a52f5f32a8461e82ac3e67a3bd073f1"}, - {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:e982878792c971cbd60ee510c4ee5bf089a8246226dea1f2138aa0bb67aff148"}, - {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:c6c321dd013e8fc20735b92cb4892c115f5cdb82c817b1e5b07f6b95d952b2f0"}, - {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:30530930410855c451bea83f7b272fb1c495ed9d5cc72895ac29e91279401db3"}, - {file = "frozenlist-1.3.0-cp38-cp38-win32.whl", hash = "sha256:40ec383bc194accba825fbb7d0ef3dda5736ceab2375462f1d8672d9f6b68d07"}, - {file = "frozenlist-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:f20baa05eaa2bcd5404c445ec51aed1c268d62600362dc6cfe04fae34a424bd9"}, - {file = "frozenlist-1.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0437fe763fb5d4adad1756050cbf855bbb2bf0d9385c7bb13d7a10b0dd550486"}, - {file = "frozenlist-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b684c68077b84522b5c7eafc1dc735bfa5b341fb011d5552ebe0968e22ed641c"}, - {file = "frozenlist-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93641a51f89473837333b2f8100f3f89795295b858cd4c7d4a1f18e299dc0a4f"}, - {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6d32ff213aef0fd0bcf803bffe15cfa2d4fde237d1d4838e62aec242a8362fa"}, - {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31977f84828b5bb856ca1eb07bf7e3a34f33a5cddce981d880240ba06639b94d"}, - {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3c62964192a1c0c30b49f403495911298810bada64e4f03249ca35a33ca0417a"}, - {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4eda49bea3602812518765810af732229b4291d2695ed24a0a20e098c45a707b"}, - {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acb267b09a509c1df5a4ca04140da96016f40d2ed183cdc356d237286c971b51"}, - {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e1e26ac0a253a2907d654a37e390904426d5ae5483150ce3adedb35c8c06614a"}, - {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f96293d6f982c58ebebb428c50163d010c2f05de0cde99fd681bfdc18d4b2dc2"}, - {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e84cb61b0ac40a0c3e0e8b79c575161c5300d1d89e13c0e02f76193982f066ed"}, - {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:ff9310f05b9d9c5c4dd472983dc956901ee6cb2c3ec1ab116ecdde25f3ce4951"}, - {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d26b650b71fdc88065b7a21f8ace70175bcf3b5bdba5ea22df4bfd893e795a3b"}, - {file = "frozenlist-1.3.0-cp39-cp39-win32.whl", hash = "sha256:01a73627448b1f2145bddb6e6c2259988bb8aee0fb361776ff8604b99616cd08"}, - {file = "frozenlist-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:772965f773757a6026dea111a15e6e2678fbd6216180f82a48a40b27de1ee2ab"}, - {file = "frozenlist-1.3.0.tar.gz", hash = "sha256:ce6f2ba0edb7b0c1d8976565298ad2deba6f8064d2bebb6ffce2ca896eb35b0b"}, -] -fsspec = [ - {file = "fsspec-2022.5.0-py3-none-any.whl", hash = "sha256:2c198c50eb541a80bbd03540b07602c4a957366f3fb416a1f270d34bd4ff0926"}, - {file = "fsspec-2022.5.0.tar.gz", hash = "sha256:7a5459c75c44e760fbe6a3ccb1f37e81e023cde7da8ba20401258d877ec483b4"}, -] -funowl = [ - {file = "funowl-0.1.12-py3-none-any.whl", hash = "sha256:44f2337d47d21ab6532f8f0e51173c506a0d9dae9efa959cb105b0311e352082"}, - {file = "funowl-0.1.12.tar.gz", hash = "sha256:3316c37ecde08cdfa96ebcbcc02ed53c355dc56845d654a8f37aa7a913ca6f71"}, -] -ghp-import = [ - {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, - {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, -] +fastobo = [] +frozenlist = [] +fsspec = [] +funowl = [] +ghp-import = [] graphviz = [ {file = "graphviz-0.20-py3-none-any.whl", hash = "sha256:62c5f48bcc534a45b4588c548ff75e419c1f1f3a33d31a91796ae80a7f581e4a"}, {file = "graphviz-0.20.zip", hash = "sha256:76bdfb73f42e72564ffe9c7299482f9d72f8e6cb8d54bce7b48ab323755e9ba5"}, @@ -2269,34 +2165,26 @@ idna = [ {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] imagesize = [ - {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, - {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, + {file = "imagesize-1.3.0-py2.py3-none-any.whl", hash = "sha256:1db2f82529e53c3e929e8926a1fa9235aa82d0bd0c580359c67ec31b2fddaa8c"}, + {file = "imagesize-1.3.0.tar.gz", hash = "sha256:cd1750d452385ca327479d45b64d9c7729ecf0b3969a58148298c77092261f9d"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.12.0-py3-none-any.whl", hash = "sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23"}, - {file = "importlib_metadata-4.12.0.tar.gz", hash = "sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670"}, + {file = "importlib_metadata-4.11.4-py3-none-any.whl", hash = "sha256:c58c8eb8a762858f49e18436ff552e83914778e50e9d2f1660535ffb364552ec"}, + {file = "importlib_metadata-4.11.4.tar.gz", hash = "sha256:5d26852efe48c0a32b0509ffbc583fda1a2266545a78d104a6f4aff3db17d700"}, ] inflect = [] -iniconfig = [ - {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, - {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, -] +iniconfig = [] isodate = [ {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, ] -jeepney = [ - {file = "jeepney-0.8.0-py3-none-any.whl", hash = "sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755"}, - {file = "jeepney-0.8.0.tar.gz", hash = "sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806"}, -] +jeepney = [] jinja2 = [ {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] -json-flattener = [ - {file = "json_flattener-0.1.9-py3-none-any.whl", hash = "sha256:6b027746f08bf37a75270f30c6690c7149d5f704d8af1740c346a3a1236bc941"}, - {file = "json_flattener-0.1.9.tar.gz", hash = "sha256:84cf8523045ffb124301a602602201665fcb003a171ece87e6f46ed02f7f0c15"}, -] +joblib = [] +json-flattener = [] jsonasobj = [ {file = "jsonasobj-2.0.1-py3-none-any.whl", hash = "sha256:221af946bbe4171505e81ea1f0c31d652e69c68e02fff742e37543abe08ff7d9"}, {file = "jsonasobj-2.0.1.tar.gz", hash = "sha256:e87c47ec5ec3db65a212e15236fdefc38dd01bdcf563b0d53021095066cd5963"}, @@ -2318,33 +2206,19 @@ jsonpointer = [ {file = "jsonpointer-2.3-py2.py3-none-any.whl", hash = "sha256:51801e558539b4e9cd268638c078c6c5746c9ac96bc38152d443400e4f3793e9"}, {file = "jsonpointer-2.3.tar.gz", hash = "sha256:97cba51526c829282218feb99dab1b1e6bdf8efd1c43dc9d57be093c0d69c99a"}, ] -jsonschema = [ - {file = "jsonschema-4.6.2-py3-none-any.whl", hash = "sha256:e331e32e29743014fa59fa77895b5d8669382a4904c8ef23144f7f078ec031c7"}, - {file = "jsonschema-4.6.2.tar.gz", hash = "sha256:b19f62322b0f06927e8ae6215c01654e1885857cdcaf58ae1772b1aa97f1faf2"}, -] +jsonschema = [] keyring = [ - {file = "keyring-23.6.0-py3-none-any.whl", hash = "sha256:372ff2fc43ab779e3f87911c26e6c7acc8bb440cbd82683e383ca37594cb0617"}, - {file = "keyring-23.6.0.tar.gz", hash = "sha256:3ac00c26e4c93739e19103091a9986a9f79665a78cf15a4df1dba7ea9ac8da2f"}, -] -kgcl-rdflib = [] -kgcl-schema = [ - {file = "kgcl_schema-0.2.0-py3-none-any.whl", hash = "sha256:5fa8036386368b3de16a5e034c7c5a785f1f614ec32f98a0f7bf94357475bc41"}, - {file = "kgcl_schema-0.2.0.tar.gz", hash = "sha256:753b1cf717efb3c8a3ee78edb7a0af0353561f55a82731a9ab067b0c75c9799c"}, -] -lark = [ - {file = "lark-1.1.2-py2.py3-none-any.whl", hash = "sha256:c1ab213fc5e2d273fe2d91da218ccc8b5b92d065b17faa5e743499cb16594b7d"}, - {file = "lark-1.1.2.tar.gz", hash = "sha256:7a8d0c07d663da9391d7faee1bf1d7df4998c47ca43a593cbef5c7566acd057a"}, + {file = "keyring-23.5.1-py3-none-any.whl", hash = "sha256:9ef58314bcc823f426b49ec787539a2d73571b37de4cd498f839803b01acff1e"}, + {file = "keyring-23.5.1.tar.gz", hash = "sha256:dee502cdf18a98211bef428eea11456a33c00718b2f08524fd5727c7f424bffd"}, ] +lark = [] linkml = [] linkml-dataops = [ {file = "linkml_dataops-0.1.0-py3-none-any.whl", hash = "sha256:193cf7f659e5f07946d2c2761896910d5f7151d91282543b1363801f68307f4c"}, {file = "linkml_dataops-0.1.0.tar.gz", hash = "sha256:4550eab65e78b70dc3b9c651724a94ac2b1d1edb2fbe576465f1d6951a54ed04"}, ] linkml-runtime = [] -markdown = [ - {file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"}, - {file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"}, -] +markdown = [] markdown-it-py = [ {file = "markdown-it-py-2.1.0.tar.gz", hash = "sha256:cf7e59fed14b5ae17c0006eff14a2d9a00ed5f3a846148153899a0224e2c07da"}, {file = "markdown_it_py-2.1.0-py3-none-any.whl", hash = "sha256:93de681e5c021a432c63147656fe21790bc01231e0cd2da73626f1aa3ac0fe27"}, @@ -2391,14 +2265,8 @@ markupsafe = [ {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, ] -mdit-py-plugins = [ - {file = "mdit-py-plugins-0.3.0.tar.gz", hash = "sha256:ecc24f51eeec6ab7eecc2f9724e8272c2fb191c2e93cf98109120c2cace69750"}, - {file = "mdit_py_plugins-0.3.0-py3-none-any.whl", hash = "sha256:b1279701cee2dbf50e188d3da5f51fee8d78d038cdf99be57c6b9d1aa93b4073"}, -] -mdurl = [ - {file = "mdurl-0.1.1-py3-none-any.whl", hash = "sha256:6a8f6804087b7128040b2fb2ebe242bdc2affaeaa034d5fc9feeed30b443651b"}, - {file = "mdurl-0.1.1.tar.gz", hash = "sha256:f79c9709944df218a4cdb0fcc0b0c7ead2f44594e3e84dc566606f04ad749c20"}, -] +mdit-py-plugins = [] +mdurl = [] mergedeep = [ {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, @@ -2407,10 +2275,7 @@ mkdocs = [ {file = "mkdocs-1.3.0-py3-none-any.whl", hash = "sha256:26bd2b03d739ac57a3e6eed0b7bcc86168703b719c27b99ad6ca91dc439aacde"}, {file = "mkdocs-1.3.0.tar.gz", hash = "sha256:b504405b04da38795fec9b2e5e28f6aa3a73bb0960cb6d5d27ead28952bd35ea"}, ] -more-click = [ - {file = "more_click-0.1.1-py3-none-any.whl", hash = "sha256:ff68c7e874fd409ce501903be3177363499aa9c2662607a3b66568f766dea527"}, - {file = "more_click-0.1.1.tar.gz", hash = "sha256:277c64767a6a9c6625ec6bc3e1241012867f6953b2295b2a1e8eeddec586eb53"}, -] +more-click = [] multidict = [ {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2"}, {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3"}, @@ -2472,46 +2337,11 @@ multidict = [ {file = "multidict-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae"}, {file = "multidict-6.0.2.tar.gz", hash = "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013"}, ] -myst-parser = [ - {file = "myst-parser-0.18.0.tar.gz", hash = "sha256:739a4d96773a8e55a2cacd3941ce46a446ee23dcd6b37e06f73f551ad7821d86"}, - {file = "myst_parser-0.18.0-py3-none-any.whl", hash = "sha256:4965e51918837c13bf1c6f6fe2c6bddddf193148360fbdaefe743a4981358f6a"}, -] -networkx = [ - {file = "networkx-2.8.4-py3-none-any.whl", hash = "sha256:6933b9b3174a0bdf03c911bb4a1ee43a86ce3edeb813e37e1d4c553b3f4a2c4f"}, - {file = "networkx-2.8.4.tar.gz", hash = "sha256:5e53f027c0d567cf1f884dbb283224df525644e43afd1145d64c9d88a3584762"}, -] -num2words = [ - {file = "num2words-0.5.10-py3-none-any.whl", hash = "sha256:0b6e5f53f11d3005787e206d9c03382f459ef048a43c544e3db3b1e05a961548"}, - {file = "num2words-0.5.10.tar.gz", hash = "sha256:37cd4f60678f7e1045cdc3adf6acf93c8b41bf732da860f97d301f04e611cc57"}, -] -numpy = [ - {file = "numpy-1.23.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:58bfd40eb478f54ff7a5710dd61c8097e169bc36cc68333d00a9bcd8def53b38"}, - {file = "numpy-1.23.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:196cd074c3f97c4121601790955f915187736f9cf458d3ee1f1b46aff2b1ade0"}, - {file = "numpy-1.23.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1d88ef79e0a7fa631bb2c3dda1ea46b32b1fe614e10fedd611d3d5398447f2f"}, - {file = "numpy-1.23.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d54b3b828d618a19779a84c3ad952e96e2c2311b16384e973e671aa5be1f6187"}, - {file = "numpy-1.23.0-cp310-cp310-win32.whl", hash = "sha256:2b2da66582f3a69c8ce25ed7921dcd8010d05e59ac8d89d126a299be60421171"}, - {file = "numpy-1.23.0-cp310-cp310-win_amd64.whl", hash = "sha256:97a76604d9b0e79f59baeca16593c711fddb44936e40310f78bfef79ee9a835f"}, - {file = "numpy-1.23.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d8cc87bed09de55477dba9da370c1679bd534df9baa171dd01accbb09687dac3"}, - {file = "numpy-1.23.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f0f18804df7370571fb65db9b98bf1378172bd4e962482b857e612d1fec0f53e"}, - {file = "numpy-1.23.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac86f407873b952679f5f9e6c0612687e51547af0e14ddea1eedfcb22466babd"}, - {file = "numpy-1.23.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae8adff4172692ce56233db04b7ce5792186f179c415c37d539c25de7298d25d"}, - {file = "numpy-1.23.0-cp38-cp38-win32.whl", hash = "sha256:fe8b9683eb26d2c4d5db32cd29b38fdcf8381324ab48313b5b69088e0e355379"}, - {file = "numpy-1.23.0-cp38-cp38-win_amd64.whl", hash = "sha256:5043bcd71fcc458dfb8a0fc5509bbc979da0131b9d08e3d5f50fb0bbb36f169a"}, - {file = "numpy-1.23.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1c29b44905af288b3919803aceb6ec7fec77406d8b08aaa2e8b9e63d0fe2f160"}, - {file = "numpy-1.23.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:98e8e0d8d69ff4d3fa63e6c61e8cfe2d03c29b16b58dbef1f9baa175bbed7860"}, - {file = "numpy-1.23.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a506cacf2be3a74ead5467aee97b81fca00c9c4c8b3ba16dbab488cd99ba10"}, - {file = "numpy-1.23.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:092f5e6025813e64ad6d1b52b519165d08c730d099c114a9247c9bb635a2a450"}, - {file = "numpy-1.23.0-cp39-cp39-win32.whl", hash = "sha256:d6ca8dabe696c2785d0c8c9b0d8a9b6e5fdbe4f922bde70d57fa1a2848134f95"}, - {file = "numpy-1.23.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc431493df245f3c627c0c05c2bd134535e7929dbe2e602b80e42bf52ff760bc"}, - {file = "numpy-1.23.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f9c3fc2adf67762c9fe1849c859942d23f8d3e0bee7b5ed3d4a9c3eeb50a2f07"}, - {file = "numpy-1.23.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0d2094e8f4d760500394d77b383a1b06d3663e8892cdf5df3c592f55f3bff66"}, - {file = "numpy-1.23.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:94b170b4fa0168cd6be4becf37cb5b127bd12a795123984385b8cd4aca9857e5"}, - {file = "numpy-1.23.0.tar.gz", hash = "sha256:bd3fa4fe2e38533d5336e1272fc4e765cabbbde144309ccee8675509d5cd7b05"}, -] -nxontology = [ - {file = "nxontology-0.4.1-py3-none-any.whl", hash = "sha256:74cc228adcbbde49c4b35eb40c8b69db40e0a07757533573a775e88b7b2d29f9"}, - {file = "nxontology-0.4.1.tar.gz", hash = "sha256:8f1e5d6d7787542e9414be4ae34bb09e369dbaf2d6c646bba2d18b122c083d44"}, -] +myst-parser = [] +networkx = [] +num2words = [] +numpy = [] +nxontology = [] oaklib = [] openpyxl = [ {file = "openpyxl-3.0.10-py2.py3-none-any.whl", hash = "sha256:0ab6d25d01799f97a9464630abacbb34aafecdcaa0ef3cba6d6b3499867d0355"}, @@ -2521,166 +2351,30 @@ packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] -pandas = [ - {file = "pandas-1.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d51674ed8e2551ef7773820ef5dab9322be0828629f2cbf8d1fc31a0c4fed640"}, - {file = "pandas-1.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:16ad23db55efcc93fa878f7837267973b61ea85d244fc5ff0ccbcfa5638706c5"}, - {file = "pandas-1.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:958a0588149190c22cdebbc0797e01972950c927a11a900fe6c2296f207b1d6f"}, - {file = "pandas-1.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e48fbb64165cda451c06a0f9e4c7a16b534fcabd32546d531b3c240ce2844112"}, - {file = "pandas-1.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f803320c9da732cc79210d7e8cc5c8019aad512589c910c66529eb1b1818230"}, - {file = "pandas-1.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:2893e923472a5e090c2d5e8db83e8f907364ec048572084c7d10ef93546be6d1"}, - {file = "pandas-1.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:24ea75f47bbd5574675dae21d51779a4948715416413b30614c1e8b480909f81"}, - {file = "pandas-1.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d5ebc990bd34f4ac3c73a2724c2dcc9ee7bf1ce6cf08e87bb25c6ad33507e318"}, - {file = "pandas-1.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d6c0106415ff1a10c326c49bc5dd9ea8b9897a6ca0c8688eb9c30ddec49535ef"}, - {file = "pandas-1.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78b00429161ccb0da252229bcda8010b445c4bf924e721265bec5a6e96a92e92"}, - {file = "pandas-1.4.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dfbf16b1ea4f4d0ee11084d9c026340514d1d30270eaa82a9f1297b6c8ecbf0"}, - {file = "pandas-1.4.3-cp38-cp38-win32.whl", hash = "sha256:48350592665ea3cbcd07efc8c12ff12d89be09cd47231c7925e3b8afada9d50d"}, - {file = "pandas-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:605d572126eb4ab2eadf5c59d5d69f0608df2bf7bcad5c5880a47a20a0699e3e"}, - {file = "pandas-1.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a3924692160e3d847e18702bb048dc38e0e13411d2b503fecb1adf0fcf950ba4"}, - {file = "pandas-1.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:07238a58d7cbc8a004855ade7b75bbd22c0db4b0ffccc721556bab8a095515f6"}, - {file = "pandas-1.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:755679c49460bd0d2f837ab99f0a26948e68fa0718b7e42afbabd074d945bf84"}, - {file = "pandas-1.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41fc406e374590a3d492325b889a2686b31e7a7780bec83db2512988550dadbf"}, - {file = "pandas-1.4.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d9382f72a4f0e93909feece6fef5500e838ce1c355a581b3d8f259839f2ea76"}, - {file = "pandas-1.4.3-cp39-cp39-win32.whl", hash = "sha256:0daf876dba6c622154b2e6741f29e87161f844e64f84801554f879d27ba63c0d"}, - {file = "pandas-1.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:721a3dd2f06ef942f83a819c0f3f6a648b2830b191a72bbe9451bcd49c3bd42e"}, - {file = "pandas-1.4.3.tar.gz", hash = "sha256:2ff7788468e75917574f080cd4681b27e1a7bf36461fe968b49a87b5a54d007c"}, -] -pandasql = [ - {file = "pandasql-0.7.3-py2.7.egg", hash = "sha256:75f08c5cdfd19f61ceed8c38a6ac138c353776ad3be8e015edcee977c2299aad"}, - {file = "pandasql-0.7.3.tar.gz", hash = "sha256:1eb248869086435a7d85281ebd9fe525d69d9d954a0dceb854f71a8d0fd8de69"}, -] +pandas = [] +pandasql = [] parse = [ {file = "parse-1.19.0.tar.gz", hash = "sha256:9ff82852bcb65d139813e2a5197627a94966245c897796760a3a2a8eb66f020b"}, ] -pkginfo = [ - {file = "pkginfo-1.8.3-py2.py3-none-any.whl", hash = "sha256:848865108ec99d4901b2f7e84058b6e7660aae8ae10164e015a6dcf5b242a594"}, - {file = "pkginfo-1.8.3.tar.gz", hash = "sha256:a84da4318dd86f870a9447a8c98340aa06216bfc6f2b7bdc4b8766984ae1867c"}, -] -pluggy = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, -] +pkginfo = [] +pluggy = [] ply = [ {file = "ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce"}, {file = "ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3"}, ] prefixcommons = [] pronto = [] -psycopg2-binary = [ - {file = "psycopg2-binary-2.9.3.tar.gz", hash = "sha256:761df5313dc15da1502b21453642d7599d26be88bff659382f8f9747c7ebea4e"}, - {file = "psycopg2_binary-2.9.3-cp310-cp310-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:539b28661b71da7c0e428692438efbcd048ca21ea81af618d845e06ebfd29478"}, - {file = "psycopg2_binary-2.9.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e82d38390a03da28c7985b394ec3f56873174e2c88130e6966cb1c946508e65"}, - {file = "psycopg2_binary-2.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57804fc02ca3ce0dbfbef35c4b3a4a774da66d66ea20f4bda601294ad2ea6092"}, - {file = "psycopg2_binary-2.9.3-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:083a55275f09a62b8ca4902dd11f4b33075b743cf0d360419e2051a8a5d5ff76"}, - {file = "psycopg2_binary-2.9.3-cp310-cp310-manylinux_2_24_ppc64le.whl", hash = "sha256:0a29729145aaaf1ad8bafe663131890e2111f13416b60e460dae0a96af5905c9"}, - {file = "psycopg2_binary-2.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a79d622f5206d695d7824cbf609a4f5b88ea6d6dab5f7c147fc6d333a8787e4"}, - {file = "psycopg2_binary-2.9.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:090f3348c0ab2cceb6dfbe6bf721ef61262ddf518cd6cc6ecc7d334996d64efa"}, - {file = "psycopg2_binary-2.9.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a9e1f75f96ea388fbcef36c70640c4efbe4650658f3d6a2967b4cc70e907352e"}, - {file = "psycopg2_binary-2.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c3ae8e75eb7160851e59adc77b3a19a976e50622e44fd4fd47b8b18208189d42"}, - {file = "psycopg2_binary-2.9.3-cp310-cp310-win32.whl", hash = "sha256:7b1e9b80afca7b7a386ef087db614faebbf8839b7f4db5eb107d0f1a53225029"}, - {file = "psycopg2_binary-2.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:8b344adbb9a862de0c635f4f0425b7958bf5a4b927c8594e6e8d261775796d53"}, - {file = "psycopg2_binary-2.9.3-cp36-cp36m-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:e847774f8ffd5b398a75bc1c18fbb56564cda3d629fe68fd81971fece2d3c67e"}, - {file = "psycopg2_binary-2.9.3-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:68641a34023d306be959101b345732360fc2ea4938982309b786f7be1b43a4a1"}, - {file = "psycopg2_binary-2.9.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3303f8807f342641851578ee7ed1f3efc9802d00a6f83c101d21c608cb864460"}, - {file = "psycopg2_binary-2.9.3-cp36-cp36m-manylinux_2_24_aarch64.whl", hash = "sha256:e3699852e22aa68c10de06524a3721ade969abf382da95884e6a10ff798f9281"}, - {file = "psycopg2_binary-2.9.3-cp36-cp36m-manylinux_2_24_ppc64le.whl", hash = "sha256:526ea0378246d9b080148f2d6681229f4b5964543c170dd10bf4faaab6e0d27f"}, - {file = "psycopg2_binary-2.9.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:b1c8068513f5b158cf7e29c43a77eb34b407db29aca749d3eb9293ee0d3103ca"}, - {file = "psycopg2_binary-2.9.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:15803fa813ea05bef089fa78835118b5434204f3a17cb9f1e5dbfd0b9deea5af"}, - {file = "psycopg2_binary-2.9.3-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:152f09f57417b831418304c7f30d727dc83a12761627bb826951692cc6491e57"}, - {file = "psycopg2_binary-2.9.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:404224e5fef3b193f892abdbf8961ce20e0b6642886cfe1fe1923f41aaa75c9d"}, - {file = "psycopg2_binary-2.9.3-cp36-cp36m-win32.whl", hash = "sha256:1f6b813106a3abdf7b03640d36e24669234120c72e91d5cbaeb87c5f7c36c65b"}, - {file = "psycopg2_binary-2.9.3-cp36-cp36m-win_amd64.whl", hash = "sha256:2d872e3c9d5d075a2e104540965a1cf898b52274a5923936e5bfddb58c59c7c2"}, - {file = "psycopg2_binary-2.9.3-cp37-cp37m-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:10bb90fb4d523a2aa67773d4ff2b833ec00857f5912bafcfd5f5414e45280fb1"}, - {file = "psycopg2_binary-2.9.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:874a52ecab70af13e899f7847b3e074eeb16ebac5615665db33bce8a1009cf33"}, - {file = "psycopg2_binary-2.9.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a29b3ca4ec9defec6d42bf5feb36bb5817ba3c0230dd83b4edf4bf02684cd0ae"}, - {file = "psycopg2_binary-2.9.3-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:12b11322ea00ad8db8c46f18b7dfc47ae215e4df55b46c67a94b4effbaec7094"}, - {file = "psycopg2_binary-2.9.3-cp37-cp37m-manylinux_2_24_ppc64le.whl", hash = "sha256:53293533fcbb94c202b7c800a12c873cfe24599656b341f56e71dd2b557be063"}, - {file = "psycopg2_binary-2.9.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c381bda330ddf2fccbafab789d83ebc6c53db126e4383e73794c74eedce855ef"}, - {file = "psycopg2_binary-2.9.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9d29409b625a143649d03d0fd7b57e4b92e0ecad9726ba682244b73be91d2fdb"}, - {file = "psycopg2_binary-2.9.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:183a517a3a63503f70f808b58bfbf962f23d73b6dccddae5aa56152ef2bcb232"}, - {file = "psycopg2_binary-2.9.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:15c4e4cfa45f5a60599d9cec5f46cd7b1b29d86a6390ec23e8eebaae84e64554"}, - {file = "psycopg2_binary-2.9.3-cp37-cp37m-win32.whl", hash = "sha256:adf20d9a67e0b6393eac162eb81fb10bc9130a80540f4df7e7355c2dd4af9fba"}, - {file = "psycopg2_binary-2.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:2f9ffd643bc7349eeb664eba8864d9e01f057880f510e4681ba40a6532f93c71"}, - {file = "psycopg2_binary-2.9.3-cp38-cp38-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:def68d7c21984b0f8218e8a15d514f714d96904265164f75f8d3a70f9c295667"}, - {file = "psycopg2_binary-2.9.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dffc08ca91c9ac09008870c9eb77b00a46b3378719584059c034b8945e26b272"}, - {file = "psycopg2_binary-2.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:280b0bb5cbfe8039205c7981cceb006156a675362a00fe29b16fbc264e242834"}, - {file = "psycopg2_binary-2.9.3-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:af9813db73395fb1fc211bac696faea4ca9ef53f32dc0cfa27e4e7cf766dcf24"}, - {file = "psycopg2_binary-2.9.3-cp38-cp38-manylinux_2_24_ppc64le.whl", hash = "sha256:63638d875be8c2784cfc952c9ac34e2b50e43f9f0a0660b65e2a87d656b3116c"}, - {file = "psycopg2_binary-2.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ffb7a888a047696e7f8240d649b43fb3644f14f0ee229077e7f6b9f9081635bd"}, - {file = "psycopg2_binary-2.9.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0c9d5450c566c80c396b7402895c4369a410cab5a82707b11aee1e624da7d004"}, - {file = "psycopg2_binary-2.9.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:d1c1b569ecafe3a69380a94e6ae09a4789bbb23666f3d3a08d06bbd2451f5ef1"}, - {file = "psycopg2_binary-2.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8fc53f9af09426a61db9ba357865c77f26076d48669f2e1bb24d85a22fb52307"}, - {file = "psycopg2_binary-2.9.3-cp38-cp38-win32.whl", hash = "sha256:6472a178e291b59e7f16ab49ec8b4f3bdada0a879c68d3817ff0963e722a82ce"}, - {file = "psycopg2_binary-2.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:35168209c9d51b145e459e05c31a9eaeffa9a6b0fd61689b48e07464ffd1a83e"}, - {file = "psycopg2_binary-2.9.3-cp39-cp39-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:47133f3f872faf28c1e87d4357220e809dfd3fa7c64295a4a148bcd1e6e34ec9"}, - {file = "psycopg2_binary-2.9.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91920527dea30175cc02a1099f331aa8c1ba39bf8b7762b7b56cbf54bc5cce42"}, - {file = "psycopg2_binary-2.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:887dd9aac71765ac0d0bac1d0d4b4f2c99d5f5c1382d8b770404f0f3d0ce8a39"}, - {file = "psycopg2_binary-2.9.3-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:1f14c8b0942714eb3c74e1e71700cbbcb415acbc311c730370e70c578a44a25c"}, - {file = "psycopg2_binary-2.9.3-cp39-cp39-manylinux_2_24_ppc64le.whl", hash = "sha256:7af0dd86ddb2f8af5da57a976d27cd2cd15510518d582b478fbb2292428710b4"}, - {file = "psycopg2_binary-2.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:93cd1967a18aa0edd4b95b1dfd554cf15af657cb606280996d393dadc88c3c35"}, - {file = "psycopg2_binary-2.9.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bda845b664bb6c91446ca9609fc69f7db6c334ec5e4adc87571c34e4f47b7ddb"}, - {file = "psycopg2_binary-2.9.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:01310cf4cf26db9aea5158c217caa92d291f0500051a6469ac52166e1a16f5b7"}, - {file = "psycopg2_binary-2.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:99485cab9ba0fa9b84f1f9e1fef106f44a46ef6afdeec8885e0b88d0772b49e8"}, - {file = "psycopg2_binary-2.9.3-cp39-cp39-win32.whl", hash = "sha256:46f0e0a6b5fa5851bbd9ab1bc805eef362d3a230fbdfbc209f4a236d0a7a990d"}, - {file = "psycopg2_binary-2.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:accfe7e982411da3178ec690baaceaad3c278652998b2c45828aaac66cd8285f"}, -] -py = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] -pycparser = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, -] -pydantic = [ - {file = "pydantic-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8098a724c2784bf03e8070993f6d46aa2eeca031f8d8a048dff277703e6e193"}, - {file = "pydantic-1.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c320c64dd876e45254bdd350f0179da737463eea41c43bacbee9d8c9d1021f11"}, - {file = "pydantic-1.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18f3e912f9ad1bdec27fb06b8198a2ccc32f201e24174cec1b3424dda605a310"}, - {file = "pydantic-1.9.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c11951b404e08b01b151222a1cb1a9f0a860a8153ce8334149ab9199cd198131"}, - {file = "pydantic-1.9.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8bc541a405423ce0e51c19f637050acdbdf8feca34150e0d17f675e72d119580"}, - {file = "pydantic-1.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e565a785233c2d03724c4dc55464559639b1ba9ecf091288dd47ad9c629433bd"}, - {file = "pydantic-1.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:a4a88dcd6ff8fd47c18b3a3709a89adb39a6373f4482e04c1b765045c7e282fd"}, - {file = "pydantic-1.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:447d5521575f18e18240906beadc58551e97ec98142266e521c34968c76c8761"}, - {file = "pydantic-1.9.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:985ceb5d0a86fcaa61e45781e567a59baa0da292d5ed2e490d612d0de5796918"}, - {file = "pydantic-1.9.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:059b6c1795170809103a1538255883e1983e5b831faea6558ef873d4955b4a74"}, - {file = "pydantic-1.9.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d12f96b5b64bec3f43c8e82b4aab7599d0157f11c798c9f9c528a72b9e0b339a"}, - {file = "pydantic-1.9.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ae72f8098acb368d877b210ebe02ba12585e77bd0db78ac04a1ee9b9f5dd2166"}, - {file = "pydantic-1.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:79b485767c13788ee314669008d01f9ef3bc05db9ea3298f6a50d3ef596a154b"}, - {file = "pydantic-1.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:494f7c8537f0c02b740c229af4cb47c0d39840b829ecdcfc93d91dcbb0779892"}, - {file = "pydantic-1.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0f047e11febe5c3198ed346b507e1d010330d56ad615a7e0a89fae604065a0e"}, - {file = "pydantic-1.9.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:969dd06110cb780da01336b281f53e2e7eb3a482831df441fb65dd30403f4608"}, - {file = "pydantic-1.9.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:177071dfc0df6248fd22b43036f936cfe2508077a72af0933d0c1fa269b18537"}, - {file = "pydantic-1.9.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9bcf8b6e011be08fb729d110f3e22e654a50f8a826b0575c7196616780683380"}, - {file = "pydantic-1.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a955260d47f03df08acf45689bd163ed9df82c0e0124beb4251b1290fa7ae728"}, - {file = "pydantic-1.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9ce157d979f742a915b75f792dbd6aa63b8eccaf46a1005ba03aa8a986bde34a"}, - {file = "pydantic-1.9.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0bf07cab5b279859c253d26a9194a8906e6f4a210063b84b433cf90a569de0c1"}, - {file = "pydantic-1.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d93d4e95eacd313d2c765ebe40d49ca9dd2ed90e5b37d0d421c597af830c195"}, - {file = "pydantic-1.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1542636a39c4892c4f4fa6270696902acb186a9aaeac6f6cf92ce6ae2e88564b"}, - {file = "pydantic-1.9.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a9af62e9b5b9bc67b2a195ebc2c2662fdf498a822d62f902bf27cccb52dbbf49"}, - {file = "pydantic-1.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fe4670cb32ea98ffbf5a1262f14c3e102cccd92b1869df3bb09538158ba90fe6"}, - {file = "pydantic-1.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:9f659a5ee95c8baa2436d392267988fd0f43eb774e5eb8739252e5a7e9cf07e0"}, - {file = "pydantic-1.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b83ba3825bc91dfa989d4eed76865e71aea3a6ca1388b59fc801ee04c4d8d0d6"}, - {file = "pydantic-1.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1dd8fecbad028cd89d04a46688d2fcc14423e8a196d5b0a5c65105664901f810"}, - {file = "pydantic-1.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02eefd7087268b711a3ff4db528e9916ac9aa18616da7bca69c1871d0b7a091f"}, - {file = "pydantic-1.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7eb57ba90929bac0b6cc2af2373893d80ac559adda6933e562dcfb375029acee"}, - {file = "pydantic-1.9.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4ce9ae9e91f46c344bec3b03d6ee9612802682c1551aaf627ad24045ce090761"}, - {file = "pydantic-1.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:72ccb318bf0c9ab97fc04c10c37683d9eea952ed526707fabf9ac5ae59b701fd"}, - {file = "pydantic-1.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b6760b08b7c395975d893e0b814a11cf011ebb24f7d869e7118f5a339a82e1"}, - {file = "pydantic-1.9.1-py3-none-any.whl", hash = "sha256:4988c0f13c42bfa9ddd2fe2f569c9d54646ce84adc5de84228cfe83396f3bd58"}, - {file = "pydantic-1.9.1.tar.gz", hash = "sha256:1ed987c3ff29fff7fd8c3ea3a3ea877ad310aae2ef9889a119e22d3f2db0691a"}, -] +psycopg2-binary = [] +py = [] +pycparser = [] +pydantic = [] pygments = [ {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"}, {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"}, ] -pyjsg = [ - {file = "PyJSG-0.11.10-py3-none-any.whl", hash = "sha256:10af60ff42219be7e85bf7f11c19b648715b0b29eb2ddbd269e87069a7c3f26d"}, - {file = "PyJSG-0.11.10.tar.gz", hash = "sha256:4bd6e3ff2833fa2b395bbe803a2d72a5f0bab5b7285bccd0da1a1bc0aee88bfa"}, -] +pyjsg = [] pypandoc = [] -pyparsing = [ - {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, - {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, -] +pyparsing = [] pyrsistent = [ {file = "pyrsistent-0.18.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1"}, {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d45866ececf4a5fff8742c25722da6d4c9e180daa7b405dc0a2a2790d668c26"}, @@ -2704,22 +2398,13 @@ pyrsistent = [ {file = "pyrsistent-0.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:e24a828f57e0c337c8d8bb9f6b12f09dfdf0273da25fda9e314f0b684b415a07"}, {file = "pyrsistent-0.18.1.tar.gz", hash = "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96"}, ] -pyshex = [ - {file = "PyShEx-0.8.1-py3-none-any.whl", hash = "sha256:6da1b10123e191abf8dcb6bf3e54aa3e1fcf771df5d1a0ed453217c8900c8e6a"}, - {file = "PyShEx-0.8.1.tar.gz", hash = "sha256:3c5c4d45fe27faaadae803cb008c41acf8ee784da7868b04fd84967e75be70d0"}, -] +pyshex = [] pyshexc = [ {file = "PyShExC-0.9.1-py2.py3-none-any.whl", hash = "sha256:efc55ed5cb2453e9df569b03e282505e96bb06597934288f3b23dd980ef10028"}, {file = "PyShExC-0.9.1.tar.gz", hash = "sha256:35a9975d4b9afeb20ef710fb6680871756381d0c39fbb5470b3b506581a304d3"}, ] -pystow = [ - {file = "pystow-0.4.5-py3-none-any.whl", hash = "sha256:b2ebc9630214d5801039d2cf2bbfd0d2bf249d9aa62b51af4b8f8083db8a296a"}, - {file = "pystow-0.4.5.tar.gz", hash = "sha256:9a5acb705376516ba663c4957d2b1a43a23b3f1df7af52ced4aee7ae2fcd0f1c"}, -] -pytest = [ - {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"}, - {file = "pytest-7.1.2.tar.gz", hash = "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"}, -] +pystow = [] +pytest = [] python-dateutil = [ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, @@ -2732,52 +2417,13 @@ pywin32-ctypes = [ {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"}, {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"}, ] -pyyaml = [ - {file = "PyYAML-5.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922"}, - {file = "PyYAML-5.4.1-cp27-cp27m-win32.whl", hash = "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393"}, - {file = "PyYAML-5.4.1-cp27-cp27m-win_amd64.whl", hash = "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8"}, - {file = "PyYAML-5.4.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185"}, - {file = "PyYAML-5.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253"}, - {file = "PyYAML-5.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc"}, - {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347"}, - {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541"}, - {file = "PyYAML-5.4.1-cp36-cp36m-win32.whl", hash = "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5"}, - {file = "PyYAML-5.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df"}, - {file = "PyYAML-5.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018"}, - {file = "PyYAML-5.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63"}, - {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa"}, - {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0"}, - {file = "PyYAML-5.4.1-cp37-cp37m-win32.whl", hash = "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b"}, - {file = "PyYAML-5.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf"}, - {file = "PyYAML-5.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46"}, - {file = "PyYAML-5.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb"}, - {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247"}, - {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc"}, - {file = "PyYAML-5.4.1-cp38-cp38-win32.whl", hash = "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc"}, - {file = "PyYAML-5.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696"}, - {file = "PyYAML-5.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77"}, - {file = "PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183"}, - {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122"}, - {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6"}, - {file = "PyYAML-5.4.1-cp39-cp39-win32.whl", hash = "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10"}, - {file = "PyYAML-5.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db"}, - {file = "PyYAML-5.4.1.tar.gz", hash = "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"}, -] -pyyaml-env-tag = [ - {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, - {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, -] -quantulum3 = [ - {file = "quantulum3-0.7.10-py3-none-any.whl", hash = "sha256:1eda716f4d2237bbb70da7cbad3233f005eafb447d8bf8f22d9b38c46856db6d"}, - {file = "quantulum3-0.7.10.tar.gz", hash = "sha256:7064d66f20825edcbaac04bf6b02adc3fe64484407fca8ae6d5dec51e895d92e"}, -] +pyyaml = [] +pyyaml-env-tag = [] +quantulum3 = [] ratelimit = [ {file = "ratelimit-2.2.1.tar.gz", hash = "sha256:af8a9b64b821529aca09ebaf6d8d279100d766f19e90b5059ac6a718ca6dee42"}, ] -rdflib = [ - {file = "rdflib-6.1.1-py3-none-any.whl", hash = "sha256:fc81cef513cd552d471f2926141396b633207109d0154c8e77926222c70367fe"}, - {file = "rdflib-6.1.1.tar.gz", hash = "sha256:8dbfa0af2990b98471dacbc936d6494c997ede92fd8ed693fb84ee700ef6f754"}, -] +rdflib = [] rdflib-jsonld = [ {file = "rdflib-jsonld-0.6.1.tar.gz", hash = "sha256:eda5a42a2e09f80d4da78e32b5c684bccdf275368f1541e6b7bcddfb1382a0e0"}, {file = "rdflib_jsonld-0.6.1-py2.py3-none-any.whl", hash = "sha256:bcf84317e947a661bae0a3f2aee1eced697075fc4ac4db6065a3340ea0f10fc2"}, @@ -2786,94 +2432,48 @@ rdflib-shim = [ {file = "rdflib_shim-1.0.3-py3-none-any.whl", hash = "sha256:7a853e7750ef1e9bf4e35dea27d54e02d4ed087de5a9e0c329c4a6d82d647081"}, {file = "rdflib_shim-1.0.3.tar.gz", hash = "sha256:d955d11e2986aab42b6830ca56ac6bc9c893abd1d049a161c6de2f1b99d4fc0d"}, ] -readme-renderer = [ - {file = "readme_renderer-35.0-py3-none-any.whl", hash = "sha256:73b84905d091c31f36e50b4ae05ae2acead661f6a09a9abb4df7d2ddcdb6a698"}, - {file = "readme_renderer-35.0.tar.gz", hash = "sha256:a727999acfc222fc21d82a12ed48c957c4989785e5865807c65a487d21677497"}, -] +readme-renderer = [] +recommonmark = [] requests = [ {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, ] -requests-toolbelt = [ - {file = "requests-toolbelt-0.9.1.tar.gz", hash = "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0"}, - {file = "requests_toolbelt-0.9.1-py2.py3-none-any.whl", hash = "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f"}, -] -rfc3986 = [ - {file = "rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd"}, - {file = "rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c"}, -] -rfc3987 = [ - {file = "rfc3987-1.3.8-py2.py3-none-any.whl", hash = "sha256:10702b1e51e5658843460b189b185c0366d2cf4cff716f13111b0ea9fd2dce53"}, - {file = "rfc3987-1.3.8.tar.gz", hash = "sha256:d3c4d257a560d544e9826b38bc81db676890c79ab9d7ac92b39c7a253d5ca733"}, -] +requests-toolbelt = [] +rfc3986 = [] +rfc3987 = [] rich = [ - {file = "rich-12.4.4-py3-none-any.whl", hash = "sha256:d2bbd99c320a2532ac71ff6a3164867884357da3e3301f0240090c5d2fdac7ec"}, - {file = "rich-12.4.4.tar.gz", hash = "sha256:4c586de507202505346f3e32d1363eb9ed6932f0c2f63184dea88983ff4971e2"}, + {file = "rich-12.4.1-py3-none-any.whl", hash = "sha256:d13c6c90c42e24eb7ce660db397e8c398edd58acb7f92a2a88a95572b838aaa4"}, + {file = "rich-12.4.1.tar.gz", hash = "sha256:d239001c0fb7de985e21ec9a4bb542b5150350330bbc1849f835b9cbc8923b91"}, ] "ruamel.yaml" = [ {file = "ruamel.yaml-0.17.21-py3-none-any.whl", hash = "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7"}, {file = "ruamel.yaml-0.17.21.tar.gz", hash = "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af"}, ] -"ruamel.yaml.clib" = [ - {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6e7be2c5bcb297f5b82fee9c665eb2eb7001d1050deaba8471842979293a80b0"}, - {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:221eca6f35076c6ae472a531afa1c223b9c29377e62936f61bc8e6e8bdc5f9e7"}, - {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win32.whl", hash = "sha256:1070ba9dd7f9370d0513d649420c3b362ac2d687fe78c6e888f5b12bf8bc7bee"}, - {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:77df077d32921ad46f34816a9a16e6356d8100374579bc35e15bab5d4e9377de"}, - {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:cfdb9389d888c5b74af297e51ce357b800dd844898af9d4a547ffc143fa56751"}, - {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7b2927e92feb51d830f531de4ccb11b320255ee95e791022555971c466af4527"}, - {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win32.whl", hash = "sha256:ada3f400d9923a190ea8b59c8f60680c4ef8a4b0dfae134d2f2ff68429adfab5"}, - {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win_amd64.whl", hash = "sha256:de9c6b8a1ba52919ae919f3ae96abb72b994dd0350226e28f3686cb4f142165c"}, - {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d67f273097c368265a7b81e152e07fb90ed395df6e552b9fa858c6d2c9f42502"}, - {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:72a2b8b2ff0a627496aad76f37a652bcef400fd861721744201ef1b45199ab78"}, - {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win32.whl", hash = "sha256:9efef4aab5353387b07f6b22ace0867032b900d8e91674b5d8ea9150db5cae94"}, - {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win_amd64.whl", hash = "sha256:846fc8336443106fe23f9b6d6b8c14a53d38cef9a375149d61f99d78782ea468"}, - {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0847201b767447fc33b9c235780d3aa90357d20dd6108b92be544427bea197dd"}, - {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:78988ed190206672da0f5d50c61afef8f67daa718d614377dcd5e3ed85ab4a99"}, - {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win32.whl", hash = "sha256:a49e0161897901d1ac9c4a79984b8410f450565bbad64dbfcbf76152743a0cdb"}, - {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win_amd64.whl", hash = "sha256:bf75d28fa071645c529b5474a550a44686821decebdd00e21127ef1fd566eabe"}, - {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a32f8d81ea0c6173ab1b3da956869114cae53ba1e9f72374032e33ba3118c233"}, - {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7f7ecb53ae6848f959db6ae93bdff1740e651809780822270eab111500842a84"}, - {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win32.whl", hash = "sha256:89221ec6d6026f8ae859c09b9718799fea22c0e8da8b766b0b2c9a9ba2db326b"}, - {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win_amd64.whl", hash = "sha256:31ea73e564a7b5fbbe8188ab8b334393e06d997914a4e184975348f204790277"}, - {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc6a613d6c74eef5a14a214d433d06291526145431c3b964f5e16529b1842bed"}, - {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:1866cf2c284a03b9524a5cc00daca56d80057c5ce3cdc86a52020f4c720856f0"}, - {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win32.whl", hash = "sha256:3fb9575a5acd13031c57a62cc7823e5d2ff8bc3835ba4d94b921b4e6ee664104"}, - {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win_amd64.whl", hash = "sha256:825d5fccef6da42f3c8eccd4281af399f21c02b32d98e113dbc631ea6a6ecbc7"}, - {file = "ruamel.yaml.clib-0.2.6.tar.gz", hash = "sha256:4ff604ce439abb20794f05613c374759ce10e3595d1867764dd1ae675b85acbd"}, -] -scipy = [ - {file = "scipy-1.6.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a15a1f3fc0abff33e792d6049161b7795909b40b97c6cc2934ed54384017ab76"}, - {file = "scipy-1.6.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:e79570979ccdc3d165456dd62041d9556fb9733b86b4b6d818af7a0afc15f092"}, - {file = "scipy-1.6.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:a423533c55fec61456dedee7b6ee7dce0bb6bfa395424ea374d25afa262be261"}, - {file = "scipy-1.6.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:33d6b7df40d197bdd3049d64e8e680227151673465e5d85723b3b8f6b15a6ced"}, - {file = "scipy-1.6.1-cp37-cp37m-win32.whl", hash = "sha256:6725e3fbb47da428794f243864f2297462e9ee448297c93ed1dcbc44335feb78"}, - {file = "scipy-1.6.1-cp37-cp37m-win_amd64.whl", hash = "sha256:5fa9c6530b1661f1370bcd332a1e62ca7881785cc0f80c0d559b636567fab63c"}, - {file = "scipy-1.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bd50daf727f7c195e26f27467c85ce653d41df4358a25b32434a50d8870fc519"}, - {file = "scipy-1.6.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:f46dd15335e8a320b0fb4685f58b7471702234cba8bb3442b69a3e1dc329c345"}, - {file = "scipy-1.6.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0e5b0ccf63155d90da576edd2768b66fb276446c371b73841e3503be1d63fb5d"}, - {file = "scipy-1.6.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:2481efbb3740977e3c831edfd0bd9867be26387cacf24eb5e366a6a374d3d00d"}, - {file = "scipy-1.6.1-cp38-cp38-win32.whl", hash = "sha256:68cb4c424112cd4be886b4d979c5497fba190714085f46b8ae67a5e4416c32b4"}, - {file = "scipy-1.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:5f331eeed0297232d2e6eea51b54e8278ed8bb10b099f69c44e2558c090d06bf"}, - {file = "scipy-1.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0c8a51d33556bf70367452d4d601d1742c0e806cd0194785914daf19775f0e67"}, - {file = "scipy-1.6.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:83bf7c16245c15bc58ee76c5418e46ea1811edcc2e2b03041b804e46084ab627"}, - {file = "scipy-1.6.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:794e768cc5f779736593046c9714e0f3a5940bc6dcc1dba885ad64cbfb28e9f0"}, - {file = "scipy-1.6.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:5da5471aed911fe7e52b86bf9ea32fb55ae93e2f0fac66c32e58897cfb02fa07"}, - {file = "scipy-1.6.1-cp39-cp39-win32.whl", hash = "sha256:8e403a337749ed40af60e537cc4d4c03febddcc56cd26e774c9b1b600a70d3e4"}, - {file = "scipy-1.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:a5193a098ae9f29af283dcf0041f762601faf2e595c0db1da929875b7570353f"}, - {file = "scipy-1.6.1.tar.gz", hash = "sha256:c4fceb864890b6168e79b0e714c585dbe2fd4222768ee90bc1aa0f8218691b11"}, -] -secretstorage = [ - {file = "SecretStorage-3.3.2-py3-none-any.whl", hash = "sha256:755dc845b6ad76dcbcbc07ea3da75ae54bb1ea529eb72d15f83d26499a5df319"}, - {file = "SecretStorage-3.3.2.tar.gz", hash = "sha256:0a8eb9645b320881c222e827c26f4cfcf55363e8b374a021981ef886657a912f"}, -] -semsql = [ - {file = "semsql-0.1.7-py3-none-any.whl", hash = "sha256:6d004b020c4c545a7c49b50570e485756fa69bd3981e5bcc9563e55c9bf7ea9d"}, - {file = "semsql-0.1.7.tar.gz", hash = "sha256:891787470e127e78ed679469b569511ba00cfb9a52c640e52223d6ed11e40ae3"}, -] -shexjsg = [ - {file = "ShExJSG-0.8.2-py2.py3-none-any.whl", hash = "sha256:3b0d8432dd313bee9e1343382c5e02e9908dd941a7dd7342bf8c0200fe523766"}, - {file = "ShExJSG-0.8.2.tar.gz", hash = "sha256:f17a629fc577fa344382bdee143cd9ff86588537f9f811f66cea6f63cdbcd0b6"}, -] +"ruamel.yaml.clib" = [] +scikit-learn = [ + {file = "scikit-learn-1.1.1.tar.gz", hash = "sha256:3e77b71e8e644f86c8b5be7f1c285ef597de4c384961389ee3e9ca36c445b256"}, + {file = "scikit_learn-1.1.1-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:102f51797cd8944bf44a038d106848ddf2804f2c1edf7aea45fba81a4fdc4d80"}, + {file = "scikit_learn-1.1.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:723cdb278b1fa57a55f68945bc4e501a2f12abe82f76e8d21e1806cbdbef6fc5"}, + {file = "scikit_learn-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33cf061ed0b79d647a3e4c3f6c52c412172836718a7cd4d11c1318d083300133"}, + {file = "scikit_learn-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47464c110eaa9ed9d1fe108cb403510878c3d3a40f110618d2a19b2190a3e35c"}, + {file = "scikit_learn-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:542ccd2592fe7ad31f5c85fed3a3deb3e252383960a85e4b49a629353fffaba4"}, + {file = "scikit_learn-1.1.1-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:3be10d8d325821ca366d4fe7083d87c40768f842f54371a9c908d97c45da16fc"}, + {file = "scikit_learn-1.1.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b2db720e13e697d912a87c1a51194e6fb085dc6d8323caa5ca51369ca6948f78"}, + {file = "scikit_learn-1.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e851f8874398dcd50d1e174e810e9331563d189356e945b3271c0e19ee6f4d6f"}, + {file = "scikit_learn-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b928869072366dc138762fe0929e7dc88413f8a469aebc6a64adc10a9226180c"}, + {file = "scikit_learn-1.1.1-cp38-cp38-win32.whl", hash = "sha256:e9d228ced1214d67904f26fb820c8abbea12b2889cd4aa8cda20a4ca0ed781c1"}, + {file = "scikit_learn-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:f2d5b5d6e87d482e17696a7bfa03fe9515fdfe27e462a4ad37f3d7774a5e2fd6"}, + {file = "scikit_learn-1.1.1-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:0403ad13f283e27d43b0ad875f187ec7f5d964903d92d1ed06c51439560ecea0"}, + {file = "scikit_learn-1.1.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:8fe80df08f5b9cee5dd008eccc672e543976198d790c07e5337f7dfb67eaac05"}, + {file = "scikit_learn-1.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ff56d07b9507fbe07ca0f4e5c8f3e171f74a429f998da03e308166251316b34"}, + {file = "scikit_learn-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2dad2bfc502344b869d4a3f4aa7271b2a5f4fe41f7328f404844c51612e2c58"}, + {file = "scikit_learn-1.1.1-cp39-cp39-win32.whl", hash = "sha256:22145b60fef02e597a8e7f061ebc7c51739215f11ce7fcd2ca9af22c31aa9f86"}, + {file = "scikit_learn-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:45c0f6ae523353f1d99b85469d746f9c497410adff5ba8b24423705b6956a86e"}, +] +scipy = [] +secretstorage = [] +semsql = [] +shexjsg = [] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -2886,19 +2486,14 @@ sparqlslurper = [ {file = "sparqlslurper-0.5.1-py3-none-any.whl", hash = "sha256:ae49b2d8ce3dd38df7a40465b228ad5d33fb7e11b3f248d195f9cadfc9cfff87"}, {file = "sparqlslurper-0.5.1.tar.gz", hash = "sha256:9282ebb064fc6152a58269d194cb1e7b275b0f095425a578d75b96dcc851f546"}, ] -sparqlwrapper = [ - {file = "SPARQLWrapper-2.0.0-py3-none-any.whl", hash = "sha256:c99a7204fff676ee28e6acef327dc1ff8451c6f7217dcd8d49e8872f324a8a20"}, - {file = "SPARQLWrapper-2.0.0.tar.gz", hash = "sha256:3fed3ebcc77617a4a74d2644b86fd88e0f32e7f7003ac7b2b334c026201731f1"}, -] -sphinx = [ - {file = "Sphinx-4.5.0-py3-none-any.whl", hash = "sha256:ebf612653238bcc8f4359627a9b7ce44ede6fdd75d9d30f68255c7383d3a6226"}, - {file = "Sphinx-4.5.0.tar.gz", hash = "sha256:7bf8ca9637a4ee15af412d1a1d9689fec70523a68ca9bb9127c2f3eeb344e2e6"}, -] -sphinx-click = [ - {file = "sphinx-click-3.1.0.tar.gz", hash = "sha256:36dbf271b1d2600fb05bd598ddeed0b6b6acf35beaf8bc9d507ba7716b232b0e"}, - {file = "sphinx_click-3.1.0-py3-none-any.whl", hash = "sha256:8fb0b048a577d346d741782e44d041d7e908922858273d99746f305870116121"}, -] +sparqlwrapper = [] +sphinx = [] +sphinx-click = [] sphinx-pdj-theme = [] +sphinx-rtd-theme = [ + {file = "sphinx_rtd_theme-1.0.0-py2.py3-none-any.whl", hash = "sha256:4d35a56f4508cfee4c4fb604373ede6feae2a306731d533f409ef5c3496fdbd8"}, + {file = "sphinx_rtd_theme-1.0.0.tar.gz", hash = "sha256:eec6d497e4c2195fa0e8b2016b337532b8a699a68bcb22a512870e16925c6a5c"}, +] sphinxcontrib-applehelp = [ {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"}, @@ -2924,97 +2519,52 @@ sphinxcontrib-serializinghtml = [ {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, ] -sqlalchemy = [ - {file = "SQLAlchemy-1.4.39-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:4770eb3ba69ec5fa41c681a75e53e0e342ac24c1f9220d883458b5596888e43a"}, - {file = "SQLAlchemy-1.4.39-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:752ef2e8dbaa3c5d419f322e3632f00ba6b1c3230f65bc97c2ff5c5c6c08f441"}, - {file = "SQLAlchemy-1.4.39-cp27-cp27m-win32.whl", hash = "sha256:b30e70f1594ee3c8902978fd71900d7312453922827c4ce0012fa6a8278d6df4"}, - {file = "SQLAlchemy-1.4.39-cp27-cp27m-win_amd64.whl", hash = "sha256:864d4f89f054819cb95e93100b7d251e4d114d1c60bc7576db07b046432af280"}, - {file = "SQLAlchemy-1.4.39-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8f901be74f00a13bf375241a778455ee864c2c21c79154aad196b7a994e1144f"}, - {file = "SQLAlchemy-1.4.39-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:1745987ada1890b0e7978abdb22c133eca2e89ab98dc17939042240063e1ef21"}, - {file = "SQLAlchemy-1.4.39-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ede13a472caa85a13abe5095e71676af985d7690eaa8461aeac5c74f6600b6c0"}, - {file = "SQLAlchemy-1.4.39-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7f13644b15665f7322f9e0635129e0ef2098409484df67fcd225d954c5861559"}, - {file = "SQLAlchemy-1.4.39-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26146c59576dfe9c546c9f45397a7c7c4a90c25679492ff610a7500afc7d03a6"}, - {file = "SQLAlchemy-1.4.39-cp310-cp310-win32.whl", hash = "sha256:91d2b89bb0c302f89e753bea008936acfa4e18c156fb264fe41eb6bbb2bbcdeb"}, - {file = "SQLAlchemy-1.4.39-cp310-cp310-win_amd64.whl", hash = "sha256:50e7569637e2e02253295527ff34666706dbb2bc5f6c61a5a7f44b9610c9bb09"}, - {file = "SQLAlchemy-1.4.39-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:107df519eb33d7f8e0d0d052128af2f25066c1a0f6b648fd1a9612ab66800b86"}, - {file = "SQLAlchemy-1.4.39-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f24d4d6ec301688c59b0c4bb1c1c94c5d0bff4ecad33bb8f5d9efdfb8d8bc925"}, - {file = "SQLAlchemy-1.4.39-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7b2785dd2a0c044a36836857ac27310dc7a99166253551ee8f5408930958cc60"}, - {file = "SQLAlchemy-1.4.39-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6e2c8581c6620136b9530137954a8376efffd57fe19802182c7561b0ab48b48"}, - {file = "SQLAlchemy-1.4.39-cp36-cp36m-win32.whl", hash = "sha256:fbc076f79d830ae4c9d49926180a1140b49fa675d0f0d555b44c9a15b29f4c80"}, - {file = "SQLAlchemy-1.4.39-cp36-cp36m-win_amd64.whl", hash = "sha256:0ec54460475f0c42512895c99c63d90dd2d9cbd0c13491a184182e85074b04c5"}, - {file = "SQLAlchemy-1.4.39-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:6f95706da857e6e79b54c33c1214f5467aab10600aa508ddd1239d5df271986e"}, - {file = "SQLAlchemy-1.4.39-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:621f050e72cc7dfd9ad4594ff0abeaad954d6e4a2891545e8f1a53dcdfbef445"}, - {file = "SQLAlchemy-1.4.39-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05a05771617bfa723ba4cef58d5b25ac028b0d68f28f403edebed5b8243b3a87"}, - {file = "SQLAlchemy-1.4.39-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20bf65bcce65c538e68d5df27402b39341fabeecf01de7e0e72b9d9836c13c52"}, - {file = "SQLAlchemy-1.4.39-cp37-cp37m-win32.whl", hash = "sha256:f2a42acc01568b9701665e85562bbff78ec3e21981c7d51d56717c22e5d3d58b"}, - {file = "SQLAlchemy-1.4.39-cp37-cp37m-win_amd64.whl", hash = "sha256:6d81de54e45f1d756785405c9d06cd17918c2eecc2d4262dc2d276ca612c2f61"}, - {file = "SQLAlchemy-1.4.39-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:5c2d19bfb33262bf987ef0062345efd0f54c4189c2d95159c72995457bf4a359"}, - {file = "SQLAlchemy-1.4.39-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14ea8ff2d33c48f8e6c3c472111d893b9e356284d1482102da9678195e5a8eac"}, - {file = "SQLAlchemy-1.4.39-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec3985c883d6d217cf2013028afc6e3c82b8907192ba6195d6e49885bfc4b19d"}, - {file = "SQLAlchemy-1.4.39-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1962dfee37b7fb17d3d4889bf84c4ea08b1c36707194c578f61e6e06d12ab90f"}, - {file = "SQLAlchemy-1.4.39-cp38-cp38-win32.whl", hash = "sha256:047ef5ccd8860f6147b8ac6c45a4bc573d4e030267b45d9a1c47b55962ff0e6f"}, - {file = "SQLAlchemy-1.4.39-cp38-cp38-win_amd64.whl", hash = "sha256:b71be98ef6e180217d1797185c75507060a57ab9cd835653e0112db16a710f0d"}, - {file = "SQLAlchemy-1.4.39-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:365b75938049ae31cf2176efd3d598213ddb9eb883fbc82086efa019a5f649df"}, - {file = "SQLAlchemy-1.4.39-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7a7667d928ba6ee361a3176e1bef6847c1062b37726b33505cc84136f657e0d"}, - {file = "SQLAlchemy-1.4.39-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c6d00cb9da8d0cbfaba18cad046e94b06de6d4d0ffd9d4095a3ad1838af22528"}, - {file = "SQLAlchemy-1.4.39-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0538b66f959771c56ff996d828081908a6a52a47c5548faed4a3d0a027a5368"}, - {file = "SQLAlchemy-1.4.39-cp39-cp39-win32.whl", hash = "sha256:d1f665e50592caf4cad3caed3ed86f93227bffe0680218ccbb293bd5a6734ca8"}, - {file = "SQLAlchemy-1.4.39-cp39-cp39-win_amd64.whl", hash = "sha256:8b773c9974c272aae0fa7e95b576d98d17ee65f69d8644f9b6ffc90ee96b4d19"}, - {file = "SQLAlchemy-1.4.39.tar.gz", hash = "sha256:8194896038753b46b08a0b0ae89a5d80c897fb601dd51e243ed5720f1f155d27"}, -] +sqlalchemy = [] sqlalchemy-utils = [ {file = "SQLAlchemy-Utils-0.38.2.tar.gz", hash = "sha256:9e01d6d3fb52d3926fcd4ea4a13f3540701b751aced0316bff78264402c2ceb4"}, {file = "SQLAlchemy_Utils-0.38.2-py3-none-any.whl", hash = "sha256:622235b1598f97300e4d08820ab024f5219c9a6309937a8b908093f487b4ba54"}, ] sssom = [] -sssom-schema = [] -strsimpy = [] -tomli = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] -tqdm = [ - {file = "tqdm-4.64.0-py2.py3-none-any.whl", hash = "sha256:74a2cdefe14d11442cedf3ba4e21a3b84ff9a2dbdc6cfae2c34addb2a14a5ea6"}, - {file = "tqdm-4.64.0.tar.gz", hash = "sha256:40be55d30e200777a307a7585aee69e4eabb46b4ec6a4b4a5f2d9f11e7d5408d"}, -] -twine = [ - {file = "twine-4.0.1-py3-none-any.whl", hash = "sha256:42026c18e394eac3e06693ee52010baa5313e4811d5a11050e7d48436cf41b9e"}, - {file = "twine-4.0.1.tar.gz", hash = "sha256:96b1cf12f7ae611a4a40b6ae8e9570215daff0611828f5fe1f37a16255ab24a0"}, -] +strsimpy = [ + {file = "strsimpy-0.2.1-py3-none-any.whl", hash = "sha256:d676a440d5d3dbcf5ba92d01814a03a218776ce07bd7a8185da7019e04cf9ba7"}, + {file = "strsimpy-0.2.1.tar.gz", hash = "sha256:0842eb57f7af86c882a59a1bc8721ec2580a267e563fd0503ced2972040372c9"}, +] +threadpoolctl = [] +tomli = [] +tqdm = [] +twine = [] typing-extensions = [ - {file = "typing_extensions-4.3.0-py3-none-any.whl", hash = "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02"}, - {file = "typing_extensions-4.3.0.tar.gz", hash = "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6"}, + {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, + {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, ] urllib3 = [] -validators = [ - {file = "validators-0.20.0.tar.gz", hash = "sha256:24148ce4e64100a2d5e267233e23e7afeb55316b47d30faae7eb6e7292bc226a"}, -] +validators = [] watchdog = [ - {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330"}, - {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b17d302850c8d412784d9246cfe8d7e3af6bcd45f958abb2d08a6f8bedf695d"}, - {file = "watchdog-2.1.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ee3e38a6cc050a8830089f79cbec8a3878ec2fe5160cdb2dc8ccb6def8552658"}, - {file = "watchdog-2.1.9-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64a27aed691408a6abd83394b38503e8176f69031ca25d64131d8d640a307591"}, - {file = "watchdog-2.1.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:195fc70c6e41237362ba720e9aaf394f8178bfc7fa68207f112d108edef1af33"}, - {file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bfc4d351e6348d6ec51df007432e6fe80adb53fd41183716017026af03427846"}, - {file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8250546a98388cbc00c3ee3cc5cf96799b5a595270dfcfa855491a64b86ef8c3"}, - {file = "watchdog-2.1.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:117ffc6ec261639a0209a3252546b12800670d4bf5f84fbd355957a0595fe654"}, - {file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:97f9752208f5154e9e7b76acc8c4f5a58801b338de2af14e7e181ee3b28a5d39"}, - {file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:247dcf1df956daa24828bfea5a138d0e7a7c98b1a47cf1fa5b0c3c16241fcbb7"}, - {file = "watchdog-2.1.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:226b3c6c468ce72051a4c15a4cc2ef317c32590d82ba0b330403cafd98a62cfd"}, - {file = "watchdog-2.1.9-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d9820fe47c20c13e3c9dd544d3706a2a26c02b2b43c993b62fcd8011bcc0adb3"}, - {file = "watchdog-2.1.9-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:70af927aa1613ded6a68089a9262a009fbdf819f46d09c1a908d4b36e1ba2b2d"}, - {file = "watchdog-2.1.9-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ed80a1628cee19f5cfc6bb74e173f1b4189eb532e705e2a13e3250312a62e0c9"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_aarch64.whl", hash = "sha256:9f05a5f7c12452f6a27203f76779ae3f46fa30f1dd833037ea8cbc2887c60213"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_armv7l.whl", hash = "sha256:255bb5758f7e89b1a13c05a5bceccec2219f8995a3a4c4d6968fe1de6a3b2892"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_i686.whl", hash = "sha256:d3dda00aca282b26194bdd0adec21e4c21e916956d972369359ba63ade616153"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64.whl", hash = "sha256:186f6c55abc5e03872ae14c2f294a153ec7292f807af99f57611acc8caa75306"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:083171652584e1b8829581f965b9b7723ca5f9a2cd7e20271edf264cfd7c1412"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_s390x.whl", hash = "sha256:b530ae007a5f5d50b7fbba96634c7ee21abec70dc3e7f0233339c81943848dc1"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:4f4e1c4aa54fb86316a62a87b3378c025e228178d55481d30d857c6c438897d6"}, - {file = "watchdog-2.1.9-py3-none-win32.whl", hash = "sha256:5952135968519e2447a01875a6f5fc8c03190b24d14ee52b0f4b1682259520b1"}, - {file = "watchdog-2.1.9-py3-none-win_amd64.whl", hash = "sha256:7a833211f49143c3d336729b0020ffd1274078e94b0ae42e22f596999f50279c"}, - {file = "watchdog-2.1.9-py3-none-win_ia64.whl", hash = "sha256:ad576a565260d8f99d97f2e64b0f97a48228317095908568a9d5c786c829d428"}, - {file = "watchdog-2.1.9.tar.gz", hash = "sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609"}, + {file = "watchdog-2.1.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:676263bee67b165f16b05abc52acc7a94feac5b5ab2449b491f1a97638a79277"}, + {file = "watchdog-2.1.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:aa68d2d9a89d686fae99d28a6edf3b18595e78f5adf4f5c18fbfda549ac0f20c"}, + {file = "watchdog-2.1.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5e2e51c53666850c3ecffe9d265fc5d7351db644de17b15e9c685dd3cdcd6f97"}, + {file = "watchdog-2.1.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7721ac736170b191c50806f43357407138c6748e4eb3e69b071397f7f7aaeedd"}, + {file = "watchdog-2.1.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ce7376aed3da5fd777483fe5ebc8475a440c6d18f23998024f832134b2938e7b"}, + {file = "watchdog-2.1.8-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f9ee4c6bf3a1b2ed6be90a2d78f3f4bbd8105b6390c04a86eb48ed67bbfa0b0b"}, + {file = "watchdog-2.1.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:68dbe75e0fa1ba4d73ab3f8e67b21770fbed0651d32ce515cd38919a26873266"}, + {file = "watchdog-2.1.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0c520009b8cce79099237d810aaa19bc920941c268578436b62013b2f0102320"}, + {file = "watchdog-2.1.8-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:efcc8cbc1b43902571b3dce7ef53003f5b97fe4f275fe0489565fc6e2ebe3314"}, + {file = "watchdog-2.1.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:746e4c197ec1083581bb1f64d07d1136accf03437badb5ff8fcb862565c193b2"}, + {file = "watchdog-2.1.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1ae17b6be788fb8e4d8753d8d599de948f0275a232416e16436363c682c6f850"}, + {file = "watchdog-2.1.8-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ddde157dc1447d8130cb5b8df102fad845916fe4335e3d3c3f44c16565becbb7"}, + {file = "watchdog-2.1.8-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4978db33fc0934c92013ee163a9db158ec216099b69fce5aec790aba704da412"}, + {file = "watchdog-2.1.8-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b962de4d7d92ff78fb2dbc6a0cb292a679dea879a0eb5568911484d56545b153"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_aarch64.whl", hash = "sha256:1e5d0fdfaa265c29dc12621913a76ae99656cf7587d03950dfeb3595e5a26102"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_armv7l.whl", hash = "sha256:036ed15f7cd656351bf4e17244447be0a09a61aaa92014332d50719fc5973bc0"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_i686.whl", hash = "sha256:2962628a8777650703e8f6f2593065884c602df7bae95759b2df267bd89b2ef5"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_ppc64.whl", hash = "sha256:156ec3a94695ea68cfb83454b98754af6e276031ba1ae7ae724dc6bf8973b92a"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:47598fe6713fc1fee86b1ca85c9cbe77e9b72d002d6adeab9c3b608f8a5ead10"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_s390x.whl", hash = "sha256:fed4de6e45a4f16e4046ea00917b4fe1700b97244e5d114f594b4a1b9de6bed8"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_x86_64.whl", hash = "sha256:24dedcc3ce75e150f2a1d704661f6879764461a481ba15a57dc80543de46021c"}, + {file = "watchdog-2.1.8-py3-none-win32.whl", hash = "sha256:6ddf67bc9f413791072e3afb466e46cc72c6799ba73dea18439b412e8f2e3257"}, + {file = "watchdog-2.1.8-py3-none-win_amd64.whl", hash = "sha256:88ef3e8640ef0a64b7ad7394b0f23384f58ac19dd759da7eaa9bc04b2898943f"}, + {file = "watchdog-2.1.8-py3-none-win_ia64.whl", hash = "sha256:0fb60c7d31474b21acba54079ce9ff0136411183e9a591369417cddb1d7d00d7"}, + {file = "watchdog-2.1.8.tar.gz", hash = "sha256:6d03149126864abd32715d4e9267d2754cede25a69052901399356ad3bc5ecff"}, ] webencodings = [ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, @@ -3086,81 +2636,5 @@ wrapt = [ {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, ] -yarl = [ - {file = "yarl-1.7.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f2a8508f7350512434e41065684076f640ecce176d262a7d54f0da41d99c5a95"}, - {file = "yarl-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da6df107b9ccfe52d3a48165e48d72db0eca3e3029b5b8cb4fe6ee3cb870ba8b"}, - {file = "yarl-1.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a1d0894f238763717bdcfea74558c94e3bc34aeacd3351d769460c1a586a8b05"}, - {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfe4b95b7e00c6635a72e2d00b478e8a28bfb122dc76349a06e20792eb53a523"}, - {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c145ab54702334c42237a6c6c4cc08703b6aa9b94e2f227ceb3d477d20c36c63"}, - {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ca56f002eaf7998b5fcf73b2421790da9d2586331805f38acd9997743114e98"}, - {file = "yarl-1.7.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1d3d5ad8ea96bd6d643d80c7b8d5977b4e2fb1bab6c9da7322616fd26203d125"}, - {file = "yarl-1.7.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:167ab7f64e409e9bdd99333fe8c67b5574a1f0495dcfd905bc7454e766729b9e"}, - {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:95a1873b6c0dd1c437fb3bb4a4aaa699a48c218ac7ca1e74b0bee0ab16c7d60d"}, - {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6152224d0a1eb254f97df3997d79dadd8bb2c1a02ef283dbb34b97d4f8492d23"}, - {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:5bb7d54b8f61ba6eee541fba4b83d22b8a046b4ef4d8eb7f15a7e35db2e1e245"}, - {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:9c1f083e7e71b2dd01f7cd7434a5f88c15213194df38bc29b388ccdf1492b739"}, - {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f44477ae29025d8ea87ec308539f95963ffdc31a82f42ca9deecf2d505242e72"}, - {file = "yarl-1.7.2-cp310-cp310-win32.whl", hash = "sha256:cff3ba513db55cc6a35076f32c4cdc27032bd075c9faef31fec749e64b45d26c"}, - {file = "yarl-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:c9c6d927e098c2d360695f2e9d38870b2e92e0919be07dbe339aefa32a090265"}, - {file = "yarl-1.7.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9b4c77d92d56a4c5027572752aa35082e40c561eec776048330d2907aead891d"}, - {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c01a89a44bb672c38f42b49cdb0ad667b116d731b3f4c896f72302ff77d71656"}, - {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c19324a1c5399b602f3b6e7db9478e5b1adf5cf58901996fc973fe4fccd73eed"}, - {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3abddf0b8e41445426d29f955b24aeecc83fa1072be1be4e0d194134a7d9baee"}, - {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6a1a9fe17621af43e9b9fcea8bd088ba682c8192d744b386ee3c47b56eaabb2c"}, - {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8b0915ee85150963a9504c10de4e4729ae700af11df0dc5550e6587ed7891e92"}, - {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:29e0656d5497733dcddc21797da5a2ab990c0cb9719f1f969e58a4abac66234d"}, - {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:bf19725fec28452474d9887a128e98dd67eee7b7d52e932e6949c532d820dc3b"}, - {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:d6f3d62e16c10e88d2168ba2d065aa374e3c538998ed04996cd373ff2036d64c"}, - {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:ac10bbac36cd89eac19f4e51c032ba6b412b3892b685076f4acd2de18ca990aa"}, - {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:aa32aaa97d8b2ed4e54dc65d241a0da1c627454950f7d7b1f95b13985afd6c5d"}, - {file = "yarl-1.7.2-cp36-cp36m-win32.whl", hash = "sha256:87f6e082bce21464857ba58b569370e7b547d239ca22248be68ea5d6b51464a1"}, - {file = "yarl-1.7.2-cp36-cp36m-win_amd64.whl", hash = "sha256:ac35ccde589ab6a1870a484ed136d49a26bcd06b6a1c6397b1967ca13ceb3913"}, - {file = "yarl-1.7.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a467a431a0817a292121c13cbe637348b546e6ef47ca14a790aa2fa8cc93df63"}, - {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ab0c3274d0a846840bf6c27d2c60ba771a12e4d7586bf550eefc2df0b56b3b4"}, - {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d260d4dc495c05d6600264a197d9d6f7fc9347f21d2594926202fd08cf89a8ba"}, - {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fc4dd8b01a8112809e6b636b00f487846956402834a7fd59d46d4f4267181c41"}, - {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c1164a2eac148d85bbdd23e07dfcc930f2e633220f3eb3c3e2a25f6148c2819e"}, - {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:67e94028817defe5e705079b10a8438b8cb56e7115fa01640e9c0bb3edf67332"}, - {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:89ccbf58e6a0ab89d487c92a490cb5660d06c3a47ca08872859672f9c511fc52"}, - {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:8cce6f9fa3df25f55521fbb5c7e4a736683148bcc0c75b21863789e5185f9185"}, - {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:211fcd65c58bf250fb994b53bc45a442ddc9f441f6fec53e65de8cba48ded986"}, - {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c10ea1e80a697cf7d80d1ed414b5cb8f1eec07d618f54637067ae3c0334133c4"}, - {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:52690eb521d690ab041c3919666bea13ab9fbff80d615ec16fa81a297131276b"}, - {file = "yarl-1.7.2-cp37-cp37m-win32.whl", hash = "sha256:695ba021a9e04418507fa930d5f0704edbce47076bdcfeeaba1c83683e5649d1"}, - {file = "yarl-1.7.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c17965ff3706beedafd458c452bf15bac693ecd146a60a06a214614dc097a271"}, - {file = "yarl-1.7.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fce78593346c014d0d986b7ebc80d782b7f5e19843ca798ed62f8e3ba8728576"}, - {file = "yarl-1.7.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c2a1ac41a6aa980db03d098a5531f13985edcb451bcd9d00670b03129922cd0d"}, - {file = "yarl-1.7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:39d5493c5ecd75c8093fa7700a2fb5c94fe28c839c8e40144b7ab7ccba6938c8"}, - {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1eb6480ef366d75b54c68164094a6a560c247370a68c02dddb11f20c4c6d3c9d"}, - {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ba63585a89c9885f18331a55d25fe81dc2d82b71311ff8bd378fc8004202ff6"}, - {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e39378894ee6ae9f555ae2de332d513a5763276a9265f8e7cbaeb1b1ee74623a"}, - {file = "yarl-1.7.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c0910c6b6c31359d2f6184828888c983d54d09d581a4a23547a35f1d0b9484b1"}, - {file = "yarl-1.7.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6feca8b6bfb9eef6ee057628e71e1734caf520a907b6ec0d62839e8293e945c0"}, - {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8300401dc88cad23f5b4e4c1226f44a5aa696436a4026e456fe0e5d2f7f486e6"}, - {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:788713c2896f426a4e166b11f4ec538b5736294ebf7d5f654ae445fd44270832"}, - {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:fd547ec596d90c8676e369dd8a581a21227fe9b4ad37d0dc7feb4ccf544c2d59"}, - {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:737e401cd0c493f7e3dd4db72aca11cfe069531c9761b8ea474926936b3c57c8"}, - {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baf81561f2972fb895e7844882898bda1eef4b07b5b385bcd308d2098f1a767b"}, - {file = "yarl-1.7.2-cp38-cp38-win32.whl", hash = "sha256:ede3b46cdb719c794427dcce9d8beb4abe8b9aa1e97526cc20de9bd6583ad1ef"}, - {file = "yarl-1.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:cc8b7a7254c0fc3187d43d6cb54b5032d2365efd1df0cd1749c0c4df5f0ad45f"}, - {file = "yarl-1.7.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:580c1f15500e137a8c37053e4cbf6058944d4c114701fa59944607505c2fe3a0"}, - {file = "yarl-1.7.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3ec1d9a0d7780416e657f1e405ba35ec1ba453a4f1511eb8b9fbab81cb8b3ce1"}, - {file = "yarl-1.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3bf8cfe8856708ede6a73907bf0501f2dc4e104085e070a41f5d88e7faf237f3"}, - {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1be4bbb3d27a4e9aa5f3df2ab61e3701ce8fcbd3e9846dbce7c033a7e8136746"}, - {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:534b047277a9a19d858cde163aba93f3e1677d5acd92f7d10ace419d478540de"}, - {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6ddcd80d79c96eb19c354d9dca95291589c5954099836b7c8d29278a7ec0bda"}, - {file = "yarl-1.7.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9bfcd43c65fbb339dc7086b5315750efa42a34eefad0256ba114cd8ad3896f4b"}, - {file = "yarl-1.7.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f64394bd7ceef1237cc604b5a89bf748c95982a84bcd3c4bbeb40f685c810794"}, - {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044daf3012e43d4b3538562da94a88fb12a6490652dbc29fb19adfa02cf72eac"}, - {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:368bcf400247318382cc150aaa632582d0780b28ee6053cd80268c7e72796dec"}, - {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:bab827163113177aee910adb1f48ff7af31ee0289f434f7e22d10baf624a6dfe"}, - {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0cba38120db72123db7c58322fa69e3c0efa933040ffb586c3a87c063ec7cae8"}, - {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:59218fef177296451b23214c91ea3aba7858b4ae3306dde120224cfe0f7a6ee8"}, - {file = "yarl-1.7.2-cp39-cp39-win32.whl", hash = "sha256:1edc172dcca3f11b38a9d5c7505c83c1913c0addc99cd28e993efeaafdfaa18d"}, - {file = "yarl-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:797c2c412b04403d2da075fb93c123df35239cd7b4cc4e0cd9e5839b73f52c58"}, - {file = "yarl-1.7.2.tar.gz", hash = "sha256:45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd"}, -] -zipp = [ - {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, - {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, -] +yarl = [] +zipp = [] diff --git a/pyproject.toml b/pyproject.toml index f91ecd8..689af39 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,7 @@ python = "^3.9" click = "^8.1.2" # only necessary if 3.6 support is desired # dataclasses = "^0.8" -linkml-runtime = "^1.2.17" +linkml-runtime = "^1.2.21" linkml = "^1.2.11" mkdocs = "^1.2.3" pandas = "^1.3.5" diff --git a/schema_automator/importers/frictionless_import_engine.py b/schema_automator/importers/frictionless_import_engine.py new file mode 100644 index 0000000..14a9d79 --- /dev/null +++ b/schema_automator/importers/frictionless_import_engine.py @@ -0,0 +1,140 @@ +import logging +from typing import Union, Dict, Tuple, List, Any, Optional + +from dataclasses import dataclass + +from linkml.utils.schema_builder import SchemaBuilder +from linkml_runtime.linkml_model.meta import SchemaDefinition, SlotDefinition, EnumDefinition, \ + PermissibleValue, UniqueKey, ClassDefinition +from linkml_runtime.loaders import json_loader +from linkml_runtime.utils.formatutils import camelcase + +from schema_automator.importers.import_engine import ImportEngine +import schema_automator.metamodels.frictionless as fl + + +TYPE_MAPPING = { + "string": "string", + "datetime": "datetime", + "boolean": "boolean", + "integer": "integer", + "number": "decimal", +} + + +def _desc(elt: Union[fl.Field, fl.Resource]) -> Optional[str]: + if elt.description: + return elt.description[0] + else: + return None + + +def _add_unique_keys(cls: ClassDefinition, name: str, slot_names: List[str]): + uk = UniqueKey(name, unique_key_slots=slot_names) + cls.unique_keys[name] = uk + + +@dataclass +class FrictionlessImportEngine(ImportEngine): + """ + An ImportEngine that imports Frictionless data packages with schema information + + See: + + `Frictionless specs `_ + `Patterns `_ + + """ + + def convert(self, file: str, id: str,name: str, **kwargs) -> SchemaDefinition: + """ + Converts one or more JSON files into a Schema + + :param files: + :param kwargs: + :return: + """ + package: fl.Package = json_loader.load(file, target_class=fl.Package) + sb = SchemaBuilder() + schema = sb.schema + if id: + schema.id = id + if name: + sb.add_prefix(name, f"{id}/") + if not name: + name = package.name + if name: + schema.name = name + schema.description = package.title + for resource in package.resources: + sb.add_class(resource.name) + cls = schema.classes[resource.name] + cls.description = _desc(resource) + cls.title = resource.title + tbl = resource.schema + for field in tbl.fields: + slot = SlotDefinition(field.name, description=_desc(field)) + cls.attributes[slot.name] = slot + constraints = field.constraints + if constraints: + slot.required = constraints.required + slot.pattern = constraints.pattern + if constraints.unique is True: + _add_unique_keys(cls, f"{slot.name}_unique_key", [slot.name]) + if field.enum: + e = self.add_enum(sb, field) + slot.range = e.name + elif field.type: + t = str(field.type) + if field.type == fl.TypeEnum(fl.TypeEnum.array): + slot.multivalued = True + else: + slot.range = TYPE_MAPPING[t] + if tbl.primaryKey: + pks = tbl.primaryKey + if len(pks) > 1: + _add_unique_keys(cls, f"{cls.name}_primary_key", [pks]) + else: + cls.attributes[pks[0]].identifier = True + if tbl.foreignKeys: + for fk in tbl.foreignKeys: + fk_fields = fk.fields + if isinstance(fk_fields, list) and len(fk_fields) > 1: + logging.warning(f"Cannot handle compound FKs: {cls.name}.[{fk_fields}]") + else: + if isinstance(fk_fields, list): + fk_field = fk_fields[0] + else: + fk_field = fk_fields + if fk_field: + fk_slot = cls.attributes[fk_field] + fk_slot.range = fk.reference.resource + # assume fk.fields is the PK + sb.add_defaults() + if name: + schema.default_prefix = name + for c in schema.classes.values(): + c.from_schema = 'http://example.org/' + return sb.schema + + def add_enum(self, sb: SchemaBuilder, field: fl.Field) -> EnumDefinition: + name = camelcase(f"{field.name}_enum") + e = EnumDefinition(name) + for code in field.enum: + pv = PermissibleValue(code) + # TODO: this behavior may be specific to C2M2, make this configurable + if ":" in code: + toks = code.split(":") + if len(toks) == 2: + [prefix, short] = toks + pv = PermissibleValue(short, meaning=code) + sb.add_prefix(prefix, f"{sb.schema.id}/{prefix}/") + e.permissible_values[pv.text] = pv + if e.name is sb.schema: + raise NotImplementedError(f"Cannot yet merge enums") + sb.schema.enums[e.name] = e + return e + + + + diff --git a/schema_automator/importers/jsonschema_import_engine.py b/schema_automator/importers/jsonschema_import_engine.py index f80194f..3110927 100644 --- a/schema_automator/importers/jsonschema_import_engine.py +++ b/schema_automator/importers/jsonschema_import_engine.py @@ -67,6 +67,7 @@ def split_name(self, name) -> Tuple[str, str]: pkg = None return name, pkg + def translate_schema(self, obj: Dict, id_val=None, name=None, root_class_name=None) -> SchemaDefinition: if id_val is None and '$id' in obj: id_val = obj['$id'] diff --git a/schema_automator/importers/sql_import_engine.py b/schema_automator/importers/sql_import_engine.py deleted file mode 100644 index b5d30fa..0000000 --- a/schema_automator/importers/sql_import_engine.py +++ /dev/null @@ -1,45 +0,0 @@ -from pathlib import Path - -from typing import Union, Dict, Tuple, List, Any - -from linkml.utils.schema_builder import SchemaBuilder -from linkml_runtime.linkml_model import SchemaDefinition, SlotDefinition - -from dataclasses import dataclass - -from sqlalchemy import create_engine, MetaData - -from schema_automator.importers.import_engine import ImportEngine - - -@dataclass -class SqlImportEngine(ImportEngine): - """ - An ImportEngine that takes a SQL database and introspects a schema - - Limitations: - - - Currently only works for SQLite - - Only does the basic bare bones import - need to introspect properties - """ - engine: Any = None ## TODO: determine typing info for SQL Alchemy - - def convert(self, file: str, name: str = None, model_uri: str = None, identifier: str = None, **kwargs) -> \ - SchemaDefinition: - path = Path(file).absolute() - locator = f"sqlite:///{path}" - engine = create_engine(locator) - self.engine = engine - metadata_obj = MetaData() - metadata_obj.reflect(bind=engine) - sb = SchemaBuilder() - schema = sb.schema - for table in metadata_obj.sorted_tables: - sb.add_class(table.name) - cls = schema.classes[table.name] - for column in table.columns: - slot = SlotDefinition(column.name) - cls.attributes[slot.name] = slot - return schema - - diff --git a/schema_automator/metamodels/frictionless.py b/schema_automator/metamodels/frictionless.py new file mode 100644 index 0000000..942b018 --- /dev/null +++ b/schema_automator/metamodels/frictionless.py @@ -0,0 +1,473 @@ +# Auto generated from frictionless.yaml by pythongen.py version: 0.9.0 +# Generation date: 2022-07-08T14:42:16 +# Schema: frictionless +# +# id: https://w3id.org/linkml/frictionless +# description: frictionless +# license: https://creativecommons.org/publicdomain/zero/1.0/ + +import dataclasses +import sys +import re +from jsonasobj2 import JsonObj, as_dict +from typing import Optional, List, Union, Dict, ClassVar, Any +from dataclasses import dataclass +from linkml_runtime.linkml_model.meta import EnumDefinition, PermissibleValue, PvFormulaOptions + +from linkml_runtime.utils.slot import Slot +from linkml_runtime.utils.metamodelcore import empty_list, empty_dict, bnode +from linkml_runtime.utils.yamlutils import YAMLRoot, extended_str, extended_float, extended_int +from linkml_runtime.utils.dataclass_extensions_376 import dataclasses_init_fn_with_kwargs +from linkml_runtime.utils.formatutils import camelcase, underscore, sfx +from linkml_runtime.utils.enumerations import EnumDefinitionImpl +from rdflib import Namespace, URIRef +from linkml_runtime.utils.curienamespace import CurieNamespace +from linkml_runtime.linkml_model.types import Boolean, String +from linkml_runtime.utils.metamodelcore import Bool + +metamodel_version = "1.7.0" +version = None + +# Overwrite dataclasses _init_fn to add **kwargs in __init__ +dataclasses._init_fn = dataclasses_init_fn_with_kwargs + +# Namespaces +ANY = CurieNamespace('Any', 'http://example.org/UNKNOWN/Any/') +FRICTIONLESS = CurieNamespace('frictionless', 'https://w3id.org/linkml/frictionless/') +LINKML = CurieNamespace('linkml', 'https://w3id.org/linkml/') +DEFAULT_ = FRICTIONLESS + + +# Types + +# Class references +class FieldName(extended_str): + pass + + +class ResourceName(extended_str): + pass + + +class PackageName(extended_str): + pass + + +Any = Any + +@dataclass +class Dialect(YAMLRoot): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = FRICTIONLESS.Dialect + class_class_curie: ClassVar[str] = "frictionless:Dialect" + class_name: ClassVar[str] = "Dialect" + class_model_uri: ClassVar[URIRef] = FRICTIONLESS.Dialect + + delimiter: Optional[str] = None + doubleQuote: Optional[Union[bool, Bool]] = None + lineTerminator: Optional[str] = None + skipInitialSpace: Optional[Union[bool, Bool]] = None + header: Optional[Union[bool, Bool]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self.delimiter is not None and not isinstance(self.delimiter, str): + self.delimiter = str(self.delimiter) + + if self.doubleQuote is not None and not isinstance(self.doubleQuote, Bool): + self.doubleQuote = Bool(self.doubleQuote) + + if self.lineTerminator is not None and not isinstance(self.lineTerminator, str): + self.lineTerminator = str(self.lineTerminator) + + if self.skipInitialSpace is not None and not isinstance(self.skipInitialSpace, Bool): + self.skipInitialSpace = Bool(self.skipInitialSpace) + + if self.header is not None and not isinstance(self.header, Bool): + self.header = Bool(self.header) + + super().__post_init__(**kwargs) + + +@dataclass +class Constraints(YAMLRoot): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = FRICTIONLESS.Constraints + class_class_curie: ClassVar[str] = "frictionless:Constraints" + class_name: ClassVar[str] = "Constraints" + class_model_uri: ClassVar[URIRef] = FRICTIONLESS.Constraints + + required: Optional[Union[bool, Bool]] = None + pattern: Optional[str] = None + unique: Optional[Union[bool, Bool]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self.required is not None and not isinstance(self.required, Bool): + self.required = Bool(self.required) + + if self.pattern is not None and not isinstance(self.pattern, str): + self.pattern = str(self.pattern) + + if self.unique is not None and not isinstance(self.unique, Bool): + self.unique = Bool(self.unique) + + super().__post_init__(**kwargs) + + +@dataclass +class Field(YAMLRoot): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = FRICTIONLESS.Field + class_class_curie: ClassVar[str] = "frictionless:Field" + class_name: ClassVar[str] = "Field" + class_model_uri: ClassVar[URIRef] = FRICTIONLESS.Field + + name: Union[str, FieldName] = None + description: Optional[Union[str, List[str]]] = empty_list() + type: Optional[Union[str, "TypeEnum"]] = None + constraints: Optional[Union[dict, Constraints]] = None + format: Optional[Union[str, "FormatEnum"]] = None + enum: Optional[Union[str, List[str]]] = empty_list() + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.name): + self.MissingRequiredField("name") + if not isinstance(self.name, FieldName): + self.name = FieldName(self.name) + + if not isinstance(self.description, list): + self.description = [self.description] if self.description is not None else [] + self.description = [v if isinstance(v, str) else str(v) for v in self.description] + + if self.type is not None and not isinstance(self.type, TypeEnum): + self.type = TypeEnum(self.type) + + if self.constraints is not None and not isinstance(self.constraints, Constraints): + self.constraints = Constraints(**as_dict(self.constraints)) + + if self.format is not None and not isinstance(self.format, FormatEnum): + self.format = FormatEnum(self.format) + + if not isinstance(self.enum, list): + self.enum = [self.enum] if self.enum is not None else [] + self.enum = [v if isinstance(v, str) else str(v) for v in self.enum] + + super().__post_init__(**kwargs) + + +@dataclass +class Reference(YAMLRoot): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = FRICTIONLESS.Reference + class_class_curie: ClassVar[str] = "frictionless:Reference" + class_name: ClassVar[str] = "Reference" + class_model_uri: ClassVar[URIRef] = FRICTIONLESS.Reference + + resource: Optional[str] = None + fields: Optional[Union[Union[str, FieldName], List[Union[str, FieldName]]]] = empty_list() + range: Optional[str] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self.resource is not None and not isinstance(self.resource, str): + self.resource = str(self.resource) + + if not isinstance(self.fields, list): + self.fields = [self.fields] if self.fields is not None else [] + self.fields = [v if isinstance(v, FieldName) else FieldName(v) for v in self.fields] + + if self.range is not None and not isinstance(self.range, str): + self.range = str(self.range) + + super().__post_init__(**kwargs) + + +@dataclass +class ForeignKeys(YAMLRoot): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = FRICTIONLESS.ForeignKeys + class_class_curie: ClassVar[str] = "frictionless:ForeignKeys" + class_name: ClassVar[str] = "ForeignKeys" + class_model_uri: ClassVar[URIRef] = FRICTIONLESS.ForeignKeys + + fields: Optional[Union[Union[str, FieldName], List[Union[str, FieldName]]]] = empty_list() + reference: Optional[Union[dict, Reference]] = None + constraint_name: Optional[str] = None + range: Optional[str] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if not isinstance(self.fields, list): + self.fields = [self.fields] if self.fields is not None else [] + self.fields = [v if isinstance(v, FieldName) else FieldName(v) for v in self.fields] + + if self.reference is not None and not isinstance(self.reference, Reference): + self.reference = Reference(**as_dict(self.reference)) + + if self.constraint_name is not None and not isinstance(self.constraint_name, str): + self.constraint_name = str(self.constraint_name) + + if self.range is not None and not isinstance(self.range, str): + self.range = str(self.range) + + super().__post_init__(**kwargs) + + +@dataclass +class Schema(YAMLRoot): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = FRICTIONLESS.Schema + class_class_curie: ClassVar[str] = "frictionless:Schema" + class_name: ClassVar[str] = "Schema" + class_model_uri: ClassVar[URIRef] = FRICTIONLESS.Schema + + fields: Optional[Union[Dict[Union[str, FieldName], Union[dict, Field]], List[Union[dict, Field]]]] = empty_dict() + missingValues: Optional[Union[str, List[str]]] = empty_list() + primaryKey: Optional[Union[Union[str, FieldName], List[Union[str, FieldName]]]] = empty_list() + foreignKeys: Optional[Union[Union[dict, ForeignKeys], List[Union[dict, ForeignKeys]]]] = empty_list() + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + self._normalize_inlined_as_list(slot_name="fields", slot_type=Field, key_name="name", keyed=True) + + if not isinstance(self.missingValues, list): + self.missingValues = [self.missingValues] if self.missingValues is not None else [] + self.missingValues = [v if isinstance(v, str) else str(v) for v in self.missingValues] + + if not isinstance(self.primaryKey, list): + self.primaryKey = [self.primaryKey] if self.primaryKey is not None else [] + self.primaryKey = [v if isinstance(v, FieldName) else FieldName(v) for v in self.primaryKey] + + if not isinstance(self.foreignKeys, list): + self.foreignKeys = [self.foreignKeys] if self.foreignKeys is not None else [] + self.foreignKeys = [v if isinstance(v, ForeignKeys) else ForeignKeys(**as_dict(v)) for v in self.foreignKeys] + + super().__post_init__(**kwargs) + + +@dataclass +class Resource(YAMLRoot): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = FRICTIONLESS.Resource + class_class_curie: ClassVar[str] = "frictionless:Resource" + class_name: ClassVar[str] = "Resource" + class_model_uri: ClassVar[URIRef] = FRICTIONLESS.Resource + + name: Union[str, ResourceName] = None + profile: Optional[Union[str, "ProfileEnum"]] = None + title: Optional[str] = None + path: Optional[str] = None + dialect: Optional[str] = None + description: Optional[Union[str, List[str]]] = empty_list() + schema: Optional[Union[dict, Schema]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.name): + self.MissingRequiredField("name") + if not isinstance(self.name, ResourceName): + self.name = ResourceName(self.name) + + if self.profile is not None and not isinstance(self.profile, ProfileEnum): + self.profile = ProfileEnum(self.profile) + + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + if self.path is not None and not isinstance(self.path, str): + self.path = str(self.path) + + if self.dialect is not None and not isinstance(self.dialect, str): + self.dialect = str(self.dialect) + + if not isinstance(self.description, list): + self.description = [self.description] if self.description is not None else [] + self.description = [v if isinstance(v, str) else str(v) for v in self.description] + + if self.schema is not None and not isinstance(self.schema, Schema): + self.schema = Schema(**as_dict(self.schema)) + + super().__post_init__(**kwargs) + + +@dataclass +class Package(YAMLRoot): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = FRICTIONLESS.Package + class_class_curie: ClassVar[str] = "frictionless:Package" + class_name: ClassVar[str] = "Package" + class_model_uri: ClassVar[URIRef] = FRICTIONLESS.Package + + name: Union[str, PackageName] = None + profile: Optional[Union[str, "ProfileEnum"]] = None + title: Optional[str] = None + resources: Optional[Union[Dict[Union[str, ResourceName], Union[dict, Resource]], List[Union[dict, Resource]]]] = empty_dict() + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.name): + self.MissingRequiredField("name") + if not isinstance(self.name, PackageName): + self.name = PackageName(self.name) + + if self.profile is not None and not isinstance(self.profile, ProfileEnum): + self.profile = ProfileEnum(self.profile) + + if self.title is not None and not isinstance(self.title, str): + self.title = str(self.title) + + self._normalize_inlined_as_list(slot_name="resources", slot_type=Resource, key_name="name", keyed=True) + + super().__post_init__(**kwargs) + + +# Enumerations +class TypeEnum(EnumDefinitionImpl): + + string = PermissibleValue(text="string", + description="string") + datetime = PermissibleValue(text="datetime", + description="datetime") + boolean = PermissibleValue(text="boolean", + description="boolean") + integer = PermissibleValue(text="integer", + description="integer") + array = PermissibleValue(text="array", + description="array") + number = PermissibleValue(text="number", + description="number") + + _defn = EnumDefinition( + name="TypeEnum", + ) + +class FormatEnum(EnumDefinitionImpl): + + any = PermissibleValue(text="any", + description="any") + email = PermissibleValue(text="email", + description="email") + binary = PermissibleValue(text="binary", + description="binary") + + _defn = EnumDefinition( + name="FormatEnum", + ) + +class ProfileEnum(EnumDefinitionImpl): + + _defn = EnumDefinition( + name="ProfileEnum", + ) + + @classmethod + def _addvals(cls): + setattr(cls, "tabular-data-resource", + PermissibleValue(text="tabular-data-resource") ) + setattr(cls, "tabular-data-package", + PermissibleValue(text="tabular-data-package") ) + +# Slots +class slots: + pass + +slots.delimiter = Slot(uri=FRICTIONLESS.delimiter, name="delimiter", curie=FRICTIONLESS.curie('delimiter'), + model_uri=FRICTIONLESS.delimiter, domain=None, range=Optional[str]) + +slots.doubleQuote = Slot(uri=FRICTIONLESS.doubleQuote, name="doubleQuote", curie=FRICTIONLESS.curie('doubleQuote'), + model_uri=FRICTIONLESS.doubleQuote, domain=None, range=Optional[Union[bool, Bool]]) + +slots.lineTerminator = Slot(uri=FRICTIONLESS.lineTerminator, name="lineTerminator", curie=FRICTIONLESS.curie('lineTerminator'), + model_uri=FRICTIONLESS.lineTerminator, domain=None, range=Optional[str]) + +slots.skipInitialSpace = Slot(uri=FRICTIONLESS.skipInitialSpace, name="skipInitialSpace", curie=FRICTIONLESS.curie('skipInitialSpace'), + model_uri=FRICTIONLESS.skipInitialSpace, domain=None, range=Optional[Union[bool, Bool]]) + +slots.header = Slot(uri=FRICTIONLESS.header, name="header", curie=FRICTIONLESS.curie('header'), + model_uri=FRICTIONLESS.header, domain=None, range=Optional[Union[bool, Bool]]) + +slots.required = Slot(uri=LINKML.required, name="required", curie=LINKML.curie('required'), + model_uri=FRICTIONLESS.required, domain=None, range=Optional[Union[bool, Bool]]) + +slots.pattern = Slot(uri=LINKML.pattern, name="pattern", curie=LINKML.curie('pattern'), + model_uri=FRICTIONLESS.pattern, domain=None, range=Optional[str]) + +slots.unique = Slot(uri=LINKML.identifier, name="unique", curie=LINKML.curie('identifier'), + model_uri=FRICTIONLESS.unique, domain=None, range=Optional[Union[bool, Bool]]) + +slots.name = Slot(uri=LINKML.name, name="name", curie=LINKML.curie('name'), + model_uri=FRICTIONLESS.name, domain=None, range=URIRef) + +slots.description = Slot(uri=LINKML.description, name="description", curie=LINKML.curie('description'), + model_uri=FRICTIONLESS.description, domain=None, range=Optional[Union[str, List[str]]]) + +slots.type = Slot(uri=FRICTIONLESS.type, name="type", curie=FRICTIONLESS.curie('type'), + model_uri=FRICTIONLESS.type, domain=None, range=Optional[Union[str, "TypeEnum"]]) + +slots.constraints = Slot(uri=FRICTIONLESS.constraints, name="constraints", curie=FRICTIONLESS.curie('constraints'), + model_uri=FRICTIONLESS.constraints, domain=None, range=Optional[Union[dict, Constraints]]) + +slots.format = Slot(uri=FRICTIONLESS.format, name="format", curie=FRICTIONLESS.curie('format'), + model_uri=FRICTIONLESS.format, domain=None, range=Optional[Union[str, "FormatEnum"]]) + +slots.enum = Slot(uri=FRICTIONLESS.enum, name="enum", curie=FRICTIONLESS.curie('enum'), + model_uri=FRICTIONLESS.enum, domain=None, range=Optional[Union[str, List[str]]]) + +slots.resource = Slot(uri=FRICTIONLESS.resource, name="resource", curie=FRICTIONLESS.curie('resource'), + model_uri=FRICTIONLESS.resource, domain=None, range=Optional[str]) + +slots.fields = Slot(uri=FRICTIONLESS.fields, name="fields", curie=FRICTIONLESS.curie('fields'), + model_uri=FRICTIONLESS.fields, domain=None, range=Optional[Union[Union[str, FieldName], List[Union[str, FieldName]]]]) + +slots.reference = Slot(uri=FRICTIONLESS.reference, name="reference", curie=FRICTIONLESS.curie('reference'), + model_uri=FRICTIONLESS.reference, domain=None, range=Optional[Union[dict, Reference]]) + +slots.constraint_name = Slot(uri=FRICTIONLESS.constraint_name, name="constraint_name", curie=FRICTIONLESS.curie('constraint_name'), + model_uri=FRICTIONLESS.constraint_name, domain=None, range=Optional[str]) + +slots.missingValues = Slot(uri=FRICTIONLESS.missingValues, name="missingValues", curie=FRICTIONLESS.curie('missingValues'), + model_uri=FRICTIONLESS.missingValues, domain=None, range=Optional[Union[str, List[str]]]) + +slots.primaryKey = Slot(uri=FRICTIONLESS.primaryKey, name="primaryKey", curie=FRICTIONLESS.curie('primaryKey'), + model_uri=FRICTIONLESS.primaryKey, domain=None, range=Optional[Union[Union[str, FieldName], List[Union[str, FieldName]]]]) + +slots.foreignKeys = Slot(uri=FRICTIONLESS.foreignKeys, name="foreignKeys", curie=FRICTIONLESS.curie('foreignKeys'), + model_uri=FRICTIONLESS.foreignKeys, domain=None, range=Optional[Union[Union[dict, ForeignKeys], List[Union[dict, ForeignKeys]]]]) + +slots.profile = Slot(uri=FRICTIONLESS.profile, name="profile", curie=FRICTIONLESS.curie('profile'), + model_uri=FRICTIONLESS.profile, domain=None, range=Optional[Union[str, "ProfileEnum"]]) + +slots.title = Slot(uri=LINKML.title, name="title", curie=LINKML.curie('title'), + model_uri=FRICTIONLESS.title, domain=None, range=Optional[str]) + +slots.path = Slot(uri=FRICTIONLESS.path, name="path", curie=FRICTIONLESS.curie('path'), + model_uri=FRICTIONLESS.path, domain=None, range=Optional[str]) + +slots.dialect = Slot(uri=FRICTIONLESS.dialect, name="dialect", curie=FRICTIONLESS.curie('dialect'), + model_uri=FRICTIONLESS.dialect, domain=None, range=Optional[str]) + +slots.schema = Slot(uri=FRICTIONLESS.schema, name="schema", curie=FRICTIONLESS.curie('schema'), + model_uri=FRICTIONLESS.schema, domain=None, range=Optional[Union[dict, Schema]]) + +slots.resources = Slot(uri=FRICTIONLESS.resources, name="resources", curie=FRICTIONLESS.curie('resources'), + model_uri=FRICTIONLESS.resources, domain=None, range=Optional[Union[Dict[Union[str, ResourceName], Union[dict, Resource]], List[Union[dict, Resource]]]]) + +slots.range = Slot(uri=FRICTIONLESS.range, name="range", curie=FRICTIONLESS.curie('range'), + model_uri=FRICTIONLESS.range, domain=None, range=Optional[str]) + +slots.Reference_fields = Slot(uri=FRICTIONLESS.fields, name="Reference_fields", curie=FRICTIONLESS.curie('fields'), + model_uri=FRICTIONLESS.Reference_fields, domain=Reference, range=Optional[Union[Union[str, FieldName], List[Union[str, FieldName]]]]) + +slots.Reference_range = Slot(uri=FRICTIONLESS.range, name="Reference_range", curie=FRICTIONLESS.curie('range'), + model_uri=FRICTIONLESS.Reference_range, domain=Reference, range=Optional[str]) + +slots.ForeignKeys_fields = Slot(uri=FRICTIONLESS.fields, name="ForeignKeys_fields", curie=FRICTIONLESS.curie('fields'), + model_uri=FRICTIONLESS.ForeignKeys_fields, domain=ForeignKeys, range=Optional[Union[Union[str, FieldName], List[Union[str, FieldName]]]]) + +slots.ForeignKeys_range = Slot(uri=FRICTIONLESS.range, name="ForeignKeys_range", curie=FRICTIONLESS.curie('range'), + model_uri=FRICTIONLESS.ForeignKeys_range, domain=ForeignKeys, range=Optional[str]) + +slots.Schema_fields = Slot(uri=FRICTIONLESS.fields, name="Schema_fields", curie=FRICTIONLESS.curie('fields'), + model_uri=FRICTIONLESS.Schema_fields, domain=Schema, range=Optional[Union[Dict[Union[str, FieldName], Union[dict, Field]], List[Union[dict, Field]]]]) diff --git a/schema_automator/metamodels/frictionless.yaml b/schema_automator/metamodels/frictionless.yaml new file mode 100644 index 0000000..77ff04c --- /dev/null +++ b/schema_automator/metamodels/frictionless.yaml @@ -0,0 +1,204 @@ +name: frictionless +description: frictionless +id: https://w3id.org/linkml/frictionless +imports: +- linkml:types +prefixes: + linkml: https://w3id.org/linkml/ + frictionless: https://w3id.org/linkml/frictionless/ +default_prefix: frictionless +enums: + type_enum: + permissible_values: + string: + description: string + datetime: + description: datetime + boolean: + description: boolean + integer: + description: integer + array: + description: array + number: + description: number + format_enum: + permissible_values: + any: + description: any + email: + description: email + binary: + description: binary + profile_enum: + permissible_values: + tabular-data-resource: + tabular-data-package: +slots: + delimiter: + range: string + doubleQuote: + range: boolean + lineTerminator: + range: string + skipInitialSpace: + range: boolean + header: + range: boolean + required: + slot_uri: linkml:required + range: boolean + pattern: + slot_uri: linkml:pattern + unique: + slot_uri: linkml:identifier + range: boolean + name: + identifier: true + slot_uri: linkml:name + examples: + - value: description + range: string + description: + slot_uri: linkml:description + examples: + - value: A human-readable description of this identifier namespace + multivalued: true + range: string + type: + examples: + - value: string + range: type_enum + constraints: + range: Constraints + format: + examples: + - value: any + range: format_enum + enum: + close_mappings: + - linkml:range + multivalued: true + range: string + resource: + examples: + - value: gene + range: string + fields: + examples: + - value: id + multivalued: true + range: Field + #inlined: true + #inlined_as_list: true + reference: + range: Reference + constraint_name: + examples: + - value: dcc_project_fkey + missingValues: + multivalued: true + primaryKey: + close_mappings: + - linkml:identifier + - linkml:unique_keys + examples: + - value: id + multivalued: true + range: Field + foreignKeys: + examples: + - value: '[''$ref:ForeignKeys'', ''$ref:ForeignKeys'']' + multivalued: true + range: ForeignKeys + profile: + examples: + - value: tabular-data-resource + range: profile_enum + title: + slot_uri: linkml:title + examples: + - value: id_namespace + range: string + path: + examples: + - value: id_namespace.tsv + range: string + dialect: + range: string + schema: + range: Schema + close_mappings: + - linkml:ClassDefinition + resources: + multivalued: true + range: Resource + inlined: true + inlined_as_list: true +classes: + Any: + class_uri: linkml:Any + Dialect: + slots: + - delimiter + - doubleQuote + - lineTerminator + - skipInitialSpace + - header + Constraints: + slots: + - required + - pattern + - unique + Field: + slots: + - name + - description + - type + - constraints + - format + - enum + Reference: + slots: + - resource + - fields + slot_usage: + fields: + inlined: false + range: Any + ForeignKeys: + slots: + - fields + - reference + - constraint_name + slot_usage: + fields: + inlined: false + range: Any + Schema: + slots: + - fields + - missingValues + - primaryKey + - foreignKeys + slot_usage: + fields: + inlined: true + inlined_as_list: true + Resource: + slots: + - profile + - name + - title + - path + - dialect + - description + - schema + Package: + slots: + - profile + - name + - title + - resources + tree_root: true + diff --git a/tests/resources/C2M2_datapackage.json b/tests/resources/C2M2_datapackage.json new file mode 100644 index 0000000..bac869b --- /dev/null +++ b/tests/resources/C2M2_datapackage.json @@ -0,0 +1,3320 @@ +{ + "profile": "tabular-data-package", + "name": "table_schema_specs_for_c2m2_encoding_of_dcc_metadata", + "title": "A complete list of schematic specifications for the resources (TSV table files) that will be used to represent C2M2 DCC metadata prior to ingest into the C2M2 database system", + "resources": [ + { + "profile": "tabular-data-resource", + "name": "file", + "title": "file", + "path": "file.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "A stable digital asset", + "schema": { + "fields": [ + { + "name": "id_namespace", + "description": "A CFDE-cleared identifier representing the top-level data space containing this file [part 1 of 2-component composite primary key]", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "local_id", + "description": "An identifier representing this file, unique within this id_namespace [part 2 of 2-component composite primary key]", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "project_id_namespace", + "description": "The id_namespace of the primary project within which this file was created [part 1 of 2-component composite foreign key]", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "project_local_id", + "description": "The local_id of the primary project within which this file was created [part 2 of 2-component composite foreign key]", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "persistent_id", + "description": "A persistent, resolvable (not necessarily retrievable) URI or compact ID permanently attached to this file", + "type": "string" + }, + { + "name": "creation_time", + "description": "An ISO 8601 -- RFC 3339 (subset)-compliant timestamp documenting this file's creation time: YYYY-MM-DDTHH:MM:SS±NN:NN", + "type": "datetime", + "format": "any" + }, + { + "name": "size_in_bytes", + "description": "The size of this file in bytes", + "type": "integer" + }, + { + "name": "uncompressed_size_in_bytes", + "description": "The total decompressed size in bytes of the contents of this file: null if this file is not compressed", + "type": "integer" + }, + { + "name": "sha256", + "description": "(preferred) SHA-256 checksum for this file [sha256, md5 cannot both be null]", + "type": "string", + "format": "binary" + }, + { + "name": "md5", + "description": "(allowed) MD5 checksum for this file [sha256, md5 cannot both be null]", + "type": "string", + "format": "binary" + }, + { + "name": "filename", + "description": "A filename with no prepended PATH information", + "type": "string", + "constraints": { + "pattern": "^[^\/\\:]+$" + } + }, + { + "name": "file_format", + "description": "An EDAM CV term ID identifying the digital format of this file (e.g. TSV or FASTQ): if this file is compressed, this should be its _uncompressed_ format", + "type": "string" + }, + { + "name": "compression_format", + "description": "An EDAM CV term ID identifying the compression format of this file (e.g. gzip or bzip2): null if this file is not compressed", + "type": "string" + }, + { + "name": "data_type", + "description": "An EDAM CV term ID identifying the type of information stored in this file (e.g. RNA sequence reads): null if is_bundle is set to true", + "type": "string" + }, + { + "name": "assay_type", + "description": "An OBI CV term ID describing the type of experiment that generated the results summarized by this file", + "type": "string" + }, + { + "name": "analysis_type", + "description": "An OBI CV term ID describing the type of analytic operation that generated this file", + "type": "string" + }, + { + "name": "mime_type", + "description": "A MIME type describing this file", + "type": "string" + }, + { + "name": "bundle_collection_id_namespace", + "description": "If this file is a bundle encoding more than one sub-file, this field gives the id_namespace of a collection listing the bundle's sub-file contents; null otherwise", + "type": "string" + }, + { + "name": "bundle_collection_local_id", + "description": "If this file is a bundle encoding more than one sub-file, this field gives the local_id of a collection listing the bundle's sub-file contents; null otherwise", + "type": "string" + }, + { + "name": "dbgap_study_id", + "description": "The name of a dbGaP study ID governing access control for this file, compatible for comparison to RAS user-level access control metadata", + "type": "string" + } + ], + "missingValues": [ "" ], + "primaryKey": [ "id_namespace", "local_id" ], + "foreignKeys": [ + { + "fields": "id_namespace", + "reference": { + "resource": "id_namespace", + "fields": "id" + } + }, + { + "fields": [ "project_id_namespace", "project_local_id" ], + "reference": { + "resource": "project", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": "file_format", + "reference": { + "resource": "file_format", + "fields": "id" + } + }, + { + "fields": "compression_format", + "reference": { + "resource": "file_format", + "fields": "id" + } + }, + { + "fields": "data_type", + "reference": { + "resource": "data_type", + "fields": "id" + } + }, + { + "fields": "assay_type", + "reference": { + "resource": "assay_type", + "fields": "id" + } + }, + { + "fields": "analysis_type", + "reference": { + "resource": "analysis_type", + "fields": "id" + } + }, + { + "fields": [ "bundle_collection_id_namespace", "bundle_collection_local_id" ], + "reference": { + "resource": "collection", + "fields": [ "id_namespace", "local_id" ] + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "biosample", + "title": "biosample", + "path": "biosample.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "A tissue sample or other physical specimen", + "schema": { + "fields": [ + { + "name": "id_namespace", + "description": "A CFDE-cleared identifier representing the top-level data space containing this biosample [part 1 of 2-component composite primary key]", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "local_id", + "description": "An identifier representing this biosample, unique within this id_namespace [part 2 of 2-component composite primary key]", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "project_id_namespace", + "description": "The id_namespace of the primary project within which this biosample was created [part 1 of 2-component composite foreign key]", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "project_local_id", + "description": "The local_id of the primary project within which this biosample was created [part 2 of 2-component composite foreign key]", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "persistent_id", + "description": "A persistent, resolvable (not necessarily retrievable) URI or compact ID permanently attached to this biosample", + "type": "string" + }, + { + "name": "creation_time", + "description": "An ISO 8601 -- RFC 3339 (subset)-compliant timestamp documenting this biosample's creation time: YYYY-MM-DDTHH:MM:SS±NN:NN", + "type": "datetime", + "format": "any" + }, + { + "name": "assay_type", + "description": "An OBI CV term ID (from the 'planned process' branch of the vocabulary, excluding the 'assay' subtree) describing the preparation method that produced this biosample", + "type": "string" + }, + { + "name": "anatomy", + "description": "An UBERON CV term ID used to locate the origin of this biosample within the physiology of its source or host organism", + "type": "string" + } + ], + "missingValues": [ "" ], + "primaryKey": [ "id_namespace", "local_id" ], + "foreignKeys": [ + { + "fields": "id_namespace", + "reference": { + "resource": "id_namespace", + "fields": "id" + } + }, + { + "fields": [ "project_id_namespace", "project_local_id" ], + "reference": { + "resource": "project", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": "assay_type", + "reference": { + "resource": "assay_type", + "fields": "id" + } + }, + { + "fields": "anatomy", + "reference": { + "resource": "anatomy", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "subject", + "title": "subject", + "path": "subject.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "A biological entity from which a C2M2 biosample can in principle be generated", + "schema": { + "fields": [ + { + "name": "id_namespace", + "description": "A CFDE-cleared identifier representing the top-level data space containing this subject [part 1 of 2-component composite primary key]", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "local_id", + "description": "An identifier representing this subject, unique within this id_namespace [part 2 of 2-component composite primary key]", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "project_id_namespace", + "description": "The id_namespace of the primary project within which this subject was studied [part 1 of 2-component composite foreign key]", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "project_local_id", + "description": "The local_id of the primary project within which this subject was studied [part 2 of 2-component composite foreign key]", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "persistent_id", + "description": "A persistent, resolvable (not necessarily retrievable) URI or compact ID permanently attached to this subject", + "type": "string" + }, + { + "name": "creation_time", + "description": "An ISO 8601 -- RFC 3339 (subset)-compliant timestamp documenting this subject record's creation time: YYYY-MM-DDTHH:MM:SS±NN:NN", + "type": "datetime", + "format": "any" + }, + { + "name": "granularity", + "description": "A CFDE CV category characterizing this subject by multiplicity", + "type": "string", + "enum": [ + "cfde_subject_granularity:0", + "cfde_subject_granularity:1", + "cfde_subject_granularity:2", + "cfde_subject_granularity:3", + "cfde_subject_granularity:4", + "cfde_subject_granularity:5" + ], + "constraints": { + "required": true + } + }, + { + "name": "sex", + "description": "A CFDE CV category characterizing the physiological sex of this subject", + "type": "string", + "enum": [ + "cfde_subject_sex:0", + "cfde_subject_sex:1", + "cfde_subject_sex:2", + "cfde_subject_sex:3", + "cfde_subject_sex:4", + "cfde_subject_sex:5" + ] + }, + { + "name": "ethnicity", + "description": "A CFDE CV category characterizing the self-reported ethnicity of this subject", + "type": "string", + "enum": [ + "cfde_subject_ethnicity:0", + "cfde_subject_ethnicity:1" + ] + }, + { + "name": "age_at_enrollment", + "description": "The age in years (with a fixed precision of two digits past the decimal point) of this subject when they were first enrolled in the primary project within which they were studied", + "type": "number" + } + ], + "missingValues": [ "" ], + "primaryKey": [ "id_namespace", "local_id" ], + "foreignKeys": [ + { + "fields": "id_namespace", + "reference": { + "resource": "id_namespace", + "fields": "id" + } + }, + { + "fields": [ "project_id_namespace", "project_local_id" ], + "reference": { + "resource": "project", + "fields": [ "id_namespace", "local_id" ] + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "dcc", + "title": "DCC", + "path": "dcc.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "The Common Fund program or data coordinating center (DCC, identified by the given project foreign key) that produced this C2M2 instance", + "schema": { + "fields": [ + { + "name": "id", + "description": "The identifier for this DCC, issued by the CFDE-CC", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "dcc_name", + "description": "A short, human-readable, machine-read-friendly label for this DCC", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "dcc_abbreviation", + "description": "A very short display label for this contact's DCC", + "type": "string", + "constraints": { + "required": true, + "unique": true, + "pattern": "^[a-zA-Z0-9_]+$" + } + }, + { + "name": "dcc_description", + "description": "A human-readable description of this DCC", + "type": "string" + }, + { + "name": "contact_email", + "description": "Email address of this DCC's primary technical contact", + "type": "string", + "format": "email", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "contact_name", + "description": "Name of this DCC's primary technical contact", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "dcc_url", + "description": "URL of the front page of the website for this DCC", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "project_id_namespace", + "description": "ID of the identifier namespace for the project record representing the C2M2 submission produced by this DCC", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "project_local_id", + "description": "Foreign key identifying the project record representing the C2M2 submission produced by this DCC", + "type": "string", + "constraints": { + "required": true + } + } + ], + "missingValues": [ "" ], + "primaryKey": [ "id" ], + "foreignKeys": [ + { + "fields": [ "project_id_namespace", "project_local_id" ], + "constraint_name": "dcc_project_fkey", + "reference": { + "resource": "project", + "fields": [ "id_namespace", "local_id" ] + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "project", + "title": "project", + "path": "project.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "A node in the C2M2 project hierarchy subdividing all resources described by this DCC's C2M2 metadata", + "schema": { + "fields": [ + { + "name": "id_namespace", + "description": "A CFDE-cleared identifier representing the top-level data space containing this project [part 1 of 2-component composite primary key]", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "local_id", + "description": "An identifier representing this project, unique within this id_namespace [part 2 of 2-component composite primary key]", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "persistent_id", + "description": "A persistent, resolvable (not necessarily retrievable) URI or compact ID permanently attached to this project", + "type": "string" + }, + { + "name": "creation_time", + "description": "An ISO 8601 -- RFC 3339 (subset)-compliant timestamp documenting this project's creation time: YYYY-MM-DDTHH:MM:SS±NN:NN", + "type": "datetime", + "format": "any" + }, + { + "name": "abbreviation", + "description": "A very short display label for this project", + "type": "string", + "constraints": { + "pattern": "^[a-zA-Z0-9_]+$" + } + }, + { + "name": "name", + "description": "A short, human-readable, machine-read-friendly label for this project", + "type": "string", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "description", + "description": "A human-readable description of this project", + "type": "string" + } + ], + "missingValues": [ "" ], + "primaryKey": [ "id_namespace", "local_id" ], + "foreignKeys": [ + { + "fields": "id_namespace", + "reference": { + "resource": "id_namespace", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "project_in_project", + "title": "project_in_project", + "path": "project_in_project.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a child project and its parent", + "schema": { + "fields": [ + { + "name": "parent_project_id_namespace", + "description": "ID of the identifier namespace for the parent in this parent-child project pair", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "parent_project_local_id", + "description": "The ID of the containing (parent) project", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "child_project_id_namespace", + "description": "ID of the identifier namespace for the child in this parent-child project pair", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "child_project_local_id", + "description": "The ID of the contained (child) project", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "parent_project_id_namespace", + "parent_project_local_id", + "child_project_id_namespace", + "child_project_local_id" + ], + "foreignKeys": [ + { + "fields": [ "parent_project_id_namespace", "parent_project_local_id" ], + "reference": { + "resource": "project", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": [ "child_project_id_namespace", "child_project_local_id" ], + "reference": { + "resource": "project", + "fields": [ "id_namespace", "local_id" ] + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "collection", + "title": "collection", + "path": "collection.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "A grouping of C2M2 files, biosamples and/or subjects", + "schema": { + "fields": [ + { + "name": "id_namespace", + "description": "A CFDE-cleared identifier representing the top-level data space containing this collection [part 1 of 2-component composite primary key]", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "local_id", + "description": "An identifier representing this collection, unique within this id_namespace [part 2 of 2-component composite primary key]", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "persistent_id", + "description": "A persistent, resolvable (not necessarily retrievable) URI or compact ID permanently attached to this collection", + "type": "string" + }, + { + "name": "creation_time", + "description": "An ISO 8601 -- RFC 3339 (subset)-compliant timestamp documenting this collection's creation time: YYYY-MM-DDTHH:MM:SS±NN:NN", + "type": "datetime", + "format": "any" + }, + { + "name": "abbreviation", + "description": "A very short display label for this collection", + "type": "string", + "constraints": { + "pattern": "^[a-zA-Z0-9_]+$" + } + }, + { + "name": "name", + "description": "A short, human-readable, machine-read-friendly label for this collection", + "type": "string", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "description", + "description": "A human-readable description of this collection", + "type": "string" + }, + { + "name": "has_time_series_data", + "description": "Does this collection contain time-series data? (allowed values: [true|false|null] -- true == yes, contains time-series data; false == no, doesn't contain time-series data; null == no info provided)", + "type": "boolean" + } + ], + "missingValues": [ "" ], + "primaryKey": [ "id_namespace", "local_id" ], + "foreignKeys": [ + { + "fields": "id_namespace", + "reference": { + "resource": "id_namespace", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "collection_in_collection", + "title": "collection_in_collection", + "path": "collection_in_collection.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a containing collection (superset) and a contained collection (subset)", + "schema": { + "fields": [ + { + "name": "superset_collection_id_namespace", + "description": "ID of the identifier namespace corresponding to the C2M2 submission containing the superset collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "superset_collection_local_id", + "description": "The ID of the superset collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "subset_collection_id_namespace", + "description": "ID of the identifier namespace corresponding to the C2M2 submission containing the subset collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "subset_collection_local_id", + "description": "The ID of the subset collection", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "superset_collection_id_namespace", + "superset_collection_local_id", + "subset_collection_id_namespace", + "subset_collection_local_id" + ], + "foreignKeys": [ + { + "fields": [ "superset_collection_id_namespace", "superset_collection_local_id" ], + "reference": { + "resource": "collection", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": [ "subset_collection_id_namespace", "subset_collection_local_id" ], + "reference": { + "resource": "collection", + "fields": [ "id_namespace", "local_id" ] + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "file_describes_collection", + "title": "file_describes_collection", + "path": "file_describes_collection.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a summary file and an entire collection described by that file", + "schema": { + "fields": [ + { + "name": "file_id_namespace", + "description": "Identifier namespace for this file", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "file_local_id", + "description": "The ID of this file", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "collection_id_namespace", + "description": "Identifier namespace for this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "collection_local_id", + "description": "The ID of this collection", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "file_id_namespace", + "file_local_id", + "collection_id_namespace", + "collection_local_id" + ], + "foreignKeys": [ + { + "fields": [ "file_id_namespace", "file_local_id" ], + "reference": { + "resource": "file", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": [ "collection_id_namespace", "collection_local_id" ], + "reference": { + "resource": "collection", + "fields": [ "id_namespace", "local_id" ] + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "collection_defined_by_project", + "title": "collection_defined_by_project", + "path": "collection_defined_by_project.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "(Shallow) association between a collection and a project that defined it", + "schema": { + "fields": [ + { + "name": "collection_id_namespace", + "description": "ID of the identifier namespace corresponding to the C2M2 submission containing this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "collection_local_id", + "description": "The ID of this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "project_id_namespace", + "description": "ID of the identifier namespace corresponding to the C2M2 submission containing this project", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "project_local_id", + "description": "The ID of this project", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "collection_id_namespace", + "collection_local_id", + "project_id_namespace", + "project_local_id" + ], + "foreignKeys": [ + { + "fields": [ "collection_id_namespace", "collection_local_id" ], + "reference": { + "resource": "collection", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": [ "project_id_namespace", "project_local_id" ], + "reference": { + "resource": "project", + "fields": [ "id_namespace", "local_id" ] + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "file_in_collection", + "title": "file_in_collection", + "path": "file_in_collection.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a file and a (containing) collection", + "schema": { + "fields": [ + { + "name": "file_id_namespace", + "description": "Identifier namespace for this file", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "file_local_id", + "description": "The ID of this file", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "collection_id_namespace", + "description": "Identifier namespace for this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "collection_local_id", + "description": "The ID of this collection", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "file_id_namespace", + "file_local_id", + "collection_id_namespace", + "collection_local_id" + ], + "foreignKeys": [ + { + "fields": [ "file_id_namespace", "file_local_id" ], + "reference": { + "resource": "file", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": [ "collection_id_namespace", "collection_local_id" ], + "reference": { + "resource": "collection", + "fields": [ "id_namespace", "local_id" ] + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "biosample_in_collection", + "title": "biosample_in_collection", + "path": "biosample_in_collection.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a biosample and a (containing) collection", + "schema": { + "fields": [ + { + "name": "biosample_id_namespace", + "description": "Identifier namespace for this biosample", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "biosample_local_id", + "description": "The ID of this biosample", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "collection_id_namespace", + "description": "Identifier namespace for this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "collection_local_id", + "description": "The ID of this collection", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "biosample_id_namespace", + "biosample_local_id", + "collection_id_namespace", + "collection_local_id" + ], + "foreignKeys": [ + { + "fields": [ "biosample_id_namespace", "biosample_local_id" ], + "reference": { + "resource": "biosample", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": [ "collection_id_namespace", "collection_local_id" ], + "reference": { + "resource": "collection", + "fields": [ "id_namespace", "local_id" ] + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "subject_in_collection", + "title": "subject_in_collection", + "path": "subject_in_collection.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a subject and a (containing) collection", + "schema": { + "fields": [ + { + "name": "subject_id_namespace", + "description": "Identifier namespace for this subject", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "subject_local_id", + "description": "The ID of this subject", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "collection_id_namespace", + "description": "Identifier namespace for this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "collection_local_id", + "description": "The ID of this collection", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "subject_id_namespace", + "subject_local_id", + "collection_id_namespace", + "collection_local_id" + ], + "foreignKeys": [ + { + "fields": [ "subject_id_namespace", "subject_local_id" ], + "reference": { + "resource": "subject", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": [ "collection_id_namespace", "collection_local_id" ], + "reference": { + "resource": "collection", + "fields": [ "id_namespace", "local_id" ] + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "file_describes_biosample", + "title": "file_describes_biosample", + "path": "file_describes_biosample.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a biosample and a file containing information about that biosample", + "schema": { + "fields": [ + { + "name": "file_id_namespace", + "description": "Identifier namespace for this file", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "file_local_id", + "description": "The ID of this file", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "biosample_id_namespace", + "description": "Identifier namespace for this biosample", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "biosample_local_id", + "description": "The ID of this biosample", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "file_id_namespace", + "file_local_id", + "biosample_id_namespace", + "biosample_local_id" + ], + "foreignKeys": [ + { + "fields": [ "file_id_namespace", "file_local_id" ], + "reference": { + "resource": "file", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": [ "biosample_id_namespace", "biosample_local_id" ], + "reference": { + "resource": "biosample", + "fields": [ "id_namespace", "local_id" ] + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "file_describes_subject", + "title": "file_describes_subject", + "path": "file_describes_subject.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a subject and a file containing information about that subject", + "schema": { + "fields": [ + { + "name": "file_id_namespace", + "description": "Identifier namespace for this file", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "file_local_id", + "description": "The ID of this file", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "subject_id_namespace", + "description": "Identifier namespace for this subject", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "subject_local_id", + "description": "The ID of this subject", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "file_id_namespace", + "file_local_id", + "subject_id_namespace", + "subject_local_id" + ], + "foreignKeys": [ + { + "fields": [ "file_id_namespace", "file_local_id" ], + "reference": { + "resource": "file", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": [ "subject_id_namespace", "subject_local_id" ], + "reference": { + "resource": "subject", + "fields": [ "id_namespace", "local_id" ] + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "biosample_from_subject", + "title": "biosample_from_subject", + "path": "biosample_from_subject.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a biosample and its source subject", + "schema": { + "fields": [ + { + "name": "biosample_id_namespace", + "description": "Identifier namespace for this biosample", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "biosample_local_id", + "description": "The ID of this biosample", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "subject_id_namespace", + "description": "Identifier namespace for this subject", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "subject_local_id", + "description": "The ID of this subject", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "age_at_sampling", + "description": "The age in years (with a fixed precision of two digits past the decimal point) of this subject when this biosample was taken", + "type": "number" + } + ], + "missingValues": [ "" ], + "primaryKey": [ + "biosample_id_namespace", + "biosample_local_id", + "subject_id_namespace", + "subject_local_id" + ], + "foreignKeys": [ + { + "fields": [ "biosample_id_namespace", "biosample_local_id" ], + "reference": { + "resource": "biosample", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": [ "subject_id_namespace", "subject_local_id" ], + "reference": { + "resource": "subject", + "fields": [ "id_namespace", "local_id" ] + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "biosample_disease", + "title": "biosample_disease", + "path": "biosample_disease.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a C2M2 biosample and a disease positively (e.g. cancer tumor tissue sample) OR negatively (e.g. cancer-free tissue sample) identified for that biosample", + "schema": { + "fields": [ + { + "name": "biosample_id_namespace", + "description": "Identifier namespace for this biosample", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "biosample_local_id", + "description": "The ID of this biosample", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "association_type", + "description": "The relationship between this biosample and this disease (e.g. 'observed' or '(tested for, but) not observed')", + "type": "string", + "enum": [ + "cfde_disease_association_type:0", + "cfde_disease_association_type:1" + ], + "constraints": { + "required": true + } + }, + { + "name": "disease", + "description": "A Disease Ontology CV term ID describing this disease", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "biosample_id_namespace", + "biosample_local_id", + "association_type", + "disease" + ], + "foreignKeys": [ + { + "fields": [ "biosample_id_namespace", "biosample_local_id" ], + "reference": { + "resource": "biosample", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": "disease", + "reference": { + "resource": "disease", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "subject_disease", + "title": "subject_disease", + "path": "subject_disease.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a C2M2 subject and a disease positively OR negatively clinically identified in that subject", + "schema": { + "fields": [ + { + "name": "subject_id_namespace", + "description": "Identifier namespace for this subject", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "subject_local_id", + "description": "The ID of this subject", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "association_type", + "description": "The relationship between this subject and this disease (e.g. 'observed' or '(tested for, but) not observed')", + "type": "string", + "enum": [ + "cfde_disease_association_type:0", + "cfde_disease_association_type:1" + ], + "constraints": { + "required": true + } + }, + { + "name": "disease", + "description": "A Disease Ontology CV term ID describing this disease", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "subject_id_namespace", + "subject_local_id", + "association_type", + "disease" + ], + "foreignKeys": [ + { + "fields": [ "subject_id_namespace", "subject_local_id" ], + "reference": { + "resource": "subject", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": "disease", + "reference": { + "resource": "disease", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "collection_disease", + "title": "collection_disease", + "path": "collection_disease.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a disease and a C2M2 collection containing experimental resources directly related to the study of that disease", + "schema": { + "fields": [ + { + "name": "collection_id_namespace", + "description": "Identifier namespace for this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "collection_local_id", + "description": "The ID of this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "disease", + "description": "A Disease Ontology CV term ID describing this disease", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "collection_id_namespace", + "collection_local_id", + "disease" + ], + "foreignKeys": [ + { + "fields": [ "collection_id_namespace", "collection_local_id" ], + "reference": { + "resource": "collection", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": "disease", + "reference": { + "resource": "disease", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "collection_phenotype", + "title": "collection_phenotype", + "path": "collection_phenotype.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a phenotype and a C2M2 collection containing experimental resources directly related to the study of that phenotype", + "schema": { + "fields": [ + { + "name": "collection_id_namespace", + "description": "Identifier namespace for this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "collection_local_id", + "description": "The ID of this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "phenotype", + "description": "A Human Phenotype Ontology CV term ID describing this phenotype", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "collection_id_namespace", + "collection_local_id", + "phenotype" + ], + "foreignKeys": [ + { + "fields": [ "collection_id_namespace", "collection_local_id" ], + "reference": { + "resource": "collection", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": "phenotype", + "reference": { + "resource": "phenotype", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "collection_gene", + "title": "collection_gene", + "path": "collection_gene.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a gene and a C2M2 collection containing experimental resources directly related to the study of that gene", + "schema": { + "fields": [ + { + "name": "collection_id_namespace", + "description": "Identifier namespace for this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "collection_local_id", + "description": "The ID of this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "gene", + "description": "An Ensembl term ID describing this gene", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "collection_id_namespace", + "collection_local_id", + "gene" + ], + "foreignKeys": [ + { + "fields": [ "collection_id_namespace", "collection_local_id" ], + "reference": { + "resource": "collection", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": "gene", + "reference": { + "resource": "gene", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "collection_compound", + "title": "collection_compound", + "path": "collection_compound.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a compound and a C2M2 collection containing experimental resources directly related to the study of that compound", + "schema": { + "fields": [ + { + "name": "collection_id_namespace", + "description": "Identifier namespace for this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "collection_local_id", + "description": "The ID of this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "compound", + "description": "A PubChem or GlyTouCan term ID describing this compound", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "collection_id_namespace", + "collection_local_id", + "compound" + ], + "foreignKeys": [ + { + "fields": [ "collection_id_namespace", "collection_local_id" ], + "reference": { + "resource": "collection", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": "compound", + "reference": { + "resource": "compound", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "collection_substance", + "title": "collection_substance", + "path": "collection_substance.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a substance and a C2M2 collection containing experimental resources directly related to the study of that substance", + "schema": { + "fields": [ + { + "name": "collection_id_namespace", + "description": "Identifier namespace for this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "collection_local_id", + "description": "The ID of this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "substance", + "description": "A PubChem term ID describing this substance", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "collection_id_namespace", + "collection_local_id", + "substance" + ], + "foreignKeys": [ + { + "fields": [ "collection_id_namespace", "collection_local_id" ], + "reference": { + "resource": "collection", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": "substance", + "reference": { + "resource": "substance", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "collection_taxonomy", + "title": "collection_taxonomy", + "path": "collection_taxonomy.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a taxon and a C2M2 collection containing experimental resources directly related to the study of that taxon", + "schema": { + "fields": [ + { + "name": "collection_id_namespace", + "description": "Identifier namespace for this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "collection_local_id", + "description": "The ID of this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "taxon", + "description": "An NCBI Taxonomy Database ID identifying this taxon", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "collection_id_namespace", + "collection_local_id", + "taxon" + ], + "foreignKeys": [ + { + "fields": [ "collection_id_namespace", "collection_local_id" ], + "reference": { + "resource": "collection", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": "taxon", + "reference": { + "resource": "ncbi_taxonomy", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "collection_anatomy", + "title": "collection_anatomy", + "path": "collection_anatomy.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between an UBERON anatomical term and a C2M2 collection containing experimental resources directly related to the study of the anatomical concept described by that term", + "schema": { + "fields": [ + { + "name": "collection_id_namespace", + "description": "Identifier namespace for this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "collection_local_id", + "description": "The ID of this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "anatomy", + "description": "An UBERON term ID", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "collection_id_namespace", + "collection_local_id", + "anatomy" + ], + "foreignKeys": [ + { + "fields": [ "collection_id_namespace", "collection_local_id" ], + "reference": { + "resource": "collection", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": "anatomy", + "reference": { + "resource": "anatomy", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "collection_protein", + "title": "collection_protein", + "path": "collection_protein.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a protein and a C2M2 collection containing experimental resources directly related to the study of that protein", + "schema": { + "fields": [ + { + "name": "collection_id_namespace", + "description": "Identifier namespace for this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "collection_local_id", + "description": "The ID of this collection", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "protein", + "description": "A UniProtKB term ID describing this protein", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "collection_id_namespace", + "collection_local_id", + "protein" + ], + "foreignKeys": [ + { + "fields": [ "collection_id_namespace", "collection_local_id" ], + "reference": { + "resource": "collection", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": "protein", + "reference": { + "resource": "protein", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "subject_phenotype", + "title": "subject_phenotype", + "path": "subject_phenotype.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a C2M2 subject and a phenotype positively OR negatively clinically identified for that subject", + "schema": { + "fields": [ + { + "name": "subject_id_namespace", + "description": "Identifier namespace for this subject", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "subject_local_id", + "description": "The ID of this subject", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "association_type", + "description": "The relationship between this subject and this phenotype (e.g. 'observed' or '(tested for, but) not observed')", + "type": "string", + "enum": [ + "cfde_phenotype_association_type:0", + "cfde_phenotype_association_type:1" + ], + "constraints": { + "required": true + } + }, + { + "name": "phenotype", + "description": "A Human Phenotype Ontology CV term ID describing this phenotype", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "subject_id_namespace", + "subject_local_id", + "association_type", + "phenotype" + ], + "foreignKeys": [ + { + "fields": [ "subject_id_namespace", "subject_local_id" ], + "reference": { + "resource": "subject", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": "phenotype", + "reference": { + "resource": "phenotype", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "biosample_substance", + "title": "biosample_substance", + "path": "biosample_substance.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a C2M2 biosample and a PubChem substance experimentally associated with that biosample", + "schema": { + "fields": [ + { + "name": "biosample_id_namespace", + "description": "Identifier namespace for this biosample", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "biosample_local_id", + "description": "The ID of this biosample", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "substance", + "description": "A PubChem substance ID (SID) describing this substance", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "biosample_id_namespace", + "biosample_local_id", + "substance" + ], + "foreignKeys": [ + { + "fields": [ "biosample_id_namespace", "biosample_local_id" ], + "reference": { + "resource": "biosample", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": "substance", + "reference": { + "resource": "substance", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "subject_substance", + "title": "subject_substance", + "path": "subject_substance.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a C2M2 subject and a PubChem substance experimentally associated with that subject", + "schema": { + "fields": [ + { + "name": "subject_id_namespace", + "description": "Identifier namespace for this subject", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "subject_local_id", + "description": "The ID of this subject", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "substance", + "description": "A PubChem substance ID (SID) describing this substance", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "subject_id_namespace", + "subject_local_id", + "substance" + ], + "foreignKeys": [ + { + "fields": [ "subject_id_namespace", "subject_local_id" ], + "reference": { + "resource": "subject", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": "substance", + "reference": { + "resource": "substance", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "biosample_gene", + "title": "biosample_gene", + "path": "biosample_gene.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a C2M2 biosample and an Ensembl gene especially relevant to it", + "schema": { + "fields": [ + { + "name": "biosample_id_namespace", + "description": "Identifier namespace for this biosample", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "biosample_local_id", + "description": "The ID of this biosample", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "gene", + "description": "An Ensembl gene ID", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "biosample_id_namespace", + "biosample_local_id", + "gene" + ], + "foreignKeys": [ + { + "fields": [ "biosample_id_namespace", "biosample_local_id" ], + "reference": { + "resource": "biosample", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": "gene", + "reference": { + "resource": "gene", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "phenotype_gene", + "title": "phenotype_gene", + "path": "phenotype_gene.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a Human Phenotype Ontology term and an Ensembl gene especially relevant to it", + "schema": { + "fields": [ + { + "name": "phenotype", + "description": "A Human Phenotype Ontology CV term ID", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "gene", + "description": "An Ensembl gene ID", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "phenotype", + "gene" + ], + "foreignKeys": [ + { + "fields": "phenotype", + "reference": { + "resource": "phenotype", + "fields": "id" + } + }, + { + "fields": "gene", + "reference": { + "resource": "gene", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "phenotype_disease", + "title": "phenotype_disease", + "path": "phenotype_disease.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a Human Phenotype Ontology term and a Disease Ontology term identifying a disease especially relevant to it", + "schema": { + "fields": [ + { + "name": "phenotype", + "description": "A Human Phenotype Ontology CV term ID", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "disease", + "description": "A Disease Ontology CV term ID", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "phenotype", + "disease" + ], + "foreignKeys": [ + { + "fields": "phenotype", + "reference": { + "resource": "phenotype", + "fields": "id" + } + }, + { + "fields": "disease", + "reference": { + "resource": "disease", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "subject_race", + "title": "subject_race", + "path": "subject_race.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Identification of a C2M2 subject with one or more self-selected races", + "schema": { + "fields": [ + { + "name": "subject_id_namespace", + "description": "Identifier namespace for this subject", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "subject_local_id", + "description": "The ID of this subject", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "race", + "description": "A race self-identified by this subject", + "type": "string", + "enum": [ + "cfde_subject_race:0", + "cfde_subject_race:1", + "cfde_subject_race:2", + "cfde_subject_race:3", + "cfde_subject_race:4" + ] + } + ], + "primaryKey": [ + "subject_id_namespace", + "subject_local_id", + "race" + ], + "foreignKeys": [ + { + "fields": [ "subject_id_namespace", "subject_local_id" ], + "reference": { + "resource": "subject", + "fields": [ "id_namespace", "local_id" ] + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "subject_role_taxonomy", + "title": "subject_role_taxonomy", + "path": "subject_role_taxonomy.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Trinary association linking IDs representing (1) a subject, (2) a subject_role (a named organism-level constituent component of a subject, like 'host', 'pathogen', 'endosymbiont', 'taxon detected inside a microbiome subject', etc.) and (3) a taxonomic label (which is hereby assigned to this particular subject_role within this particular subject)", + "schema": { + "fields": [ + { + "name": "subject_id_namespace", + "description": "Identifier namespace for this subject", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "subject_local_id", + "description": "The ID of this subject", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "role_id", + "description": "The ID of the role assigned to this organism-level constituent component of this subject", + "type": "string", + "enum": [ + "cfde_subject_role:0", + "cfde_subject_role:1", + "cfde_subject_role:2", + "cfde_subject_role:3", + "cfde_subject_role:4", + "cfde_subject_role:5", + "cfde_subject_role:6", + "cfde_subject_role:7" + ], + "constraints": { + "required": true + } + }, + { + "name": "taxonomy_id", + "description": "An NCBI Taxonomy Database ID identifying this taxon", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "subject_id_namespace", + "subject_local_id", + "role_id", + "taxonomy_id" + ], + "foreignKeys": [ + { + "fields": [ "subject_id_namespace", "subject_local_id" ], + "reference": { + "resource": "subject", + "fields": [ "id_namespace", "local_id" ] + } + }, + { + "fields": "taxonomy_id", + "reference": { + "resource": "ncbi_taxonomy", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "assay_type", + "title": "assay_type", + "path": "assay_type.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "List of Ontology for Biomedical Investigations (OBI) CV terms used to describe types of experiment that generate C2M2 biosamples or results stored in C2M2 files", + "schema": { + "fields": [ + { + "name": "id", + "description": "An OBI CV term", + "type": "string", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "name", + "description": "A short, human-readable, machine-read-friendly label for this OBI term", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "description", + "description": "A human-readable description of this OBI term", + "type": "string" + }, + { + "name": "synonyms", + "description": "A list of synonyms for this term as identified by the OBI metadata", + "type": "array" + } + ], + "missingValues": [ "" ], + "primaryKey": "id" + } + }, + { + "profile": "tabular-data-resource", + "name": "analysis_type", + "title": "analysis_type", + "path": "analysis_type.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "List of Ontology for Biomedical Investigations (OBI) CV terms used to describe analytic methods that generate C2M2 files", + "schema": { + "fields": [ + { + "name": "id", + "description": "An OBI CV term", + "type": "string", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "name", + "description": "A short, human-readable, machine-read-friendly label for this OBI term", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "description", + "description": "A human-readable description of this OBI term", + "type": "string" + }, + { + "name": "synonyms", + "description": "A list of synonyms for this term as identified by the OBI metadata", + "type": "array" + } + ], + "missingValues": [ "" ], + "primaryKey": "id" + } + }, + { + "profile": "tabular-data-resource", + "name": "ncbi_taxonomy", + "title": "ncbi_taxonomy", + "path": "ncbi_taxonomy.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "List of NCBI Taxonomy Database IDs identifying taxa used to describe C2M2 subjects", + "schema": { + "fields": [ + { + "name": "id", + "description": "An NCBI Taxonomy Database ID identifying a particular taxon", + "type": "string", + "constraints": { + "required": true, + "unique": true, + "pattern": "^NCBI:txid[0-9]+$" + } + }, + { + "name": "clade", + "description": "The phylogenetic level (e.g. species, genus) assigned to this taxon", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "name", + "description": "A short, human-readable, machine-read-friendly label for this taxon", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "description", + "description": "A human-readable description of this taxon", + "type": "string" + }, + { + "name": "synonyms", + "description": "A list of synonyms for this taxon as identified by the NCBI Taxonomy DB", + "type": "array" + } + ], + "missingValues": [ "" ], + "primaryKey": "id" + } + }, + { + "profile": "tabular-data-resource", + "name": "anatomy", + "title": "anatomy", + "path": "anatomy.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "List of Uber-anatomy ontology (UBERON) CV terms used to locate the origin of a C2M2 biosample within the physiology of its source or host organism", + "schema": { + "fields": [ + { + "name": "id", + "description": "An UBERON CV term", + "type": "string", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "name", + "description": "A short, human-readable, machine-read-friendly label for this UBERON term", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "description", + "description": "A human-readable description of this UBERON term", + "type": "string" + }, + { + "name": "synonyms", + "description": "A list of synonyms for this term as identified by the UBERON metadata", + "type": "array" + } + ], + "missingValues": [ "" ], + "primaryKey": "id" + } + }, + { + "profile": "tabular-data-resource", + "name": "file_format", + "title": "file_format", + "path": "file_format.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "List of EDAM CV 'format:' terms used to describe formats of C2M2 files", + "schema": { + "fields": [ + { + "name": "id", + "description": "An EDAM CV format term", + "type": "string", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "name", + "description": "A short, human-readable, machine-read-friendly label for this EDAM format term", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "description", + "description": "A human-readable description of this EDAM format term", + "type": "string" + }, + { + "name": "synonyms", + "description": "A list of synonyms for this term as identified by the EDAM metadata", + "type": "array" + } + ], + "missingValues": [ "" ], + "primaryKey": "id" + } + }, + { + "profile": "tabular-data-resource", + "name": "data_type", + "title": "data_type", + "path": "data_type.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "List of EDAM CV 'data:' terms used to describe data in C2M2 files", + "schema": { + "fields": [ + { + "name": "id", + "description": "An EDAM CV data term", + "type": "string", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "name", + "description": "A short, human-readable, machine-read-friendly label for this EDAM data term", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "description", + "description": "A human-readable description of this EDAM data term", + "type": "string" + }, + { + "name": "synonyms", + "description": "A list of synonyms for this term as identified by the EDAM metadata", + "type": "array" + } + ], + "missingValues": [ "" ], + "primaryKey": "id" + } + }, + { + "profile": "tabular-data-resource", + "name": "disease", + "title": "disease", + "path": "disease.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "List of Disease Ontology terms used to describe diseases recorded in association with C2M2 subjects or biosamples", + "schema": { + "fields": [ + { + "name": "id", + "description": "A Disease Ontology term", + "type": "string", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "name", + "description": "A short, human-readable, machine-read-friendly label for this Disease Ontology term", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "description", + "description": "A human-readable description of this Disease Ontology term", + "type": "string" + }, + { + "name": "synonyms", + "description": "A list of synonyms for this term as identified by the Disease Ontology metadata", + "type": "array" + } + ], + "missingValues": [ "" ], + "primaryKey": "id" + } + }, + { + "profile": "tabular-data-resource", + "name": "phenotype", + "title": "phenotype", + "path": "phenotype.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "List of Human Phenotype Ontology terms used to describe phenotypes recorded in association with C2M2 subjects", + "schema": { + "fields": [ + { + "name": "id", + "description": "A Human Phenotype Ontology term", + "type": "string", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "name", + "description": "A short, human-readable, machine-read-friendly label for this Human Phenotype Ontology term", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "description", + "description": "A human-readable description of this Human Phenotype Ontology term", + "type": "string" + }, + { + "name": "synonyms", + "description": "A list of synonyms for this term as identified by the Human Phenotype Ontology metadata", + "type": "array" + } + ], + "missingValues": [ "" ], + "primaryKey": "id" + } + }, + { + "profile": "tabular-data-resource", + "name": "compound", + "title": "compound", + "path": "compound.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "List of (i) GlyTouCan terms or (ii) PubChem 'compound' terms (normalized chemical structures) referenced in this submission; (ii) will include all PubChem 'compound' terms associated with any PubChem 'substance' terms (specific formulations of chemical materials) directly referenced in this submission, in addition to any 'compound' terms directly referenced", + "schema": { + "fields": [ + { + "name": "id", + "description": "A GlyTouCan ID or a PubChem compound ID (CID)", + "type": "string", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "name", + "description": "A short, human-readable, machine-read-friendly label for this compound", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "description", + "description": "A human-readable description of this compound", + "type": "string" + }, + { + "name": "synonyms", + "description": "A list of synonyms for this compound", + "type": "array" + } + ], + "missingValues": [ "" ], + "primaryKey": "id" + } + }, + { + "profile": "tabular-data-resource", + "name": "substance", + "title": "substance", + "path": "substance.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "List of PubChem 'substance' terms (specific formulations of chemical materials) directly referenced in this C2M2 submission", + "schema": { + "fields": [ + { + "name": "id", + "description": "A PubChem substance ID (SID)", + "type": "string", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "name", + "description": "A short, human-readable, machine-read-friendly label for this PubChem SID", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "description", + "description": "A human-readable description of this PubChem SID", + "type": "string" + }, + { + "name": "synonyms", + "description": "A list of synonyms for this PubChem SID", + "type": "array" + }, + { + "name": "compound", + "description": "The (unique) PubChem compound ID (CID) associated with this PubChem SID", + "type": "string", + "constraints": { + "required": true + } + } + ], + "missingValues": [ "" ], + "primaryKey": "id", + "foreignKeys": [ + { + "fields": "compound", + "reference": { + "resource": "compound", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "gene", + "title": "gene", + "path": "gene.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "List of Ensembl genes directly referenced in this C2M2 submission", + "schema": { + "fields": [ + { + "name": "id", + "description": "An Ensembl gene ID (e.g. 'ENSG00000012048')", + "type": "string", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "name", + "description": "The Ensembl 'Name' for this gene (e.g. 'BRCA1')", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "description", + "description": "The Ensembl 'Description' of this gene (e.g. 'BRCA1 DNA repair associated')", + "type": "string" + }, + { + "name": "synonyms", + "description": "A list of Ensembl 'Gene synonyms' for this gene (e.g. ['BRCC1', 'FANCS', 'PPP1R53', 'RNF53'])", + "type": "array" + }, + { + "name": "organism", + "description": "An NCBI Taxonomy Database ID identifying this gene's source organism (e.g. 'NCBI:txid9606')", + "type": "string", + "constraints": { + "required": true, + "pattern": "^NCBI:txid[0-9]+$" + } + } + ], + "missingValues": [ "" ], + "primaryKey": "id", + "foreignKeys": [ + { + "fields": "organism", + "reference": { + "resource": "ncbi_taxonomy", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "protein", + "title": "protein", + "path": "protein.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "List of UniProtKB proteins directly referenced in this C2M2 submission", + "schema": { + "fields": [ + { + "name": "id", + "description": "A UniProt Knowledgebase (UniProtKB) protein ID (e.g. 'P94485')", + "type": "string", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "name", + "description": "The UniProt recommended name of this protein (e.g. 'Uncharacterized protein YnaG')", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "description", + "description": "A description of this protein", + "type": "string" + }, + { + "name": "synonyms", + "description": "A list of alternate names for this protein", + "type": "array" + }, + { + "name": "organism", + "description": "OPTIONAL: An NCBI Taxonomy Database ID identifying this protein's source organism (e.g. 'NCBI:txid9606')", + "type": "string", + "constraints": { + "pattern": "^NCBI:txid[0-9]+$" + } + } + ], + "missingValues": [ "" ], + "primaryKey": "id", + "foreignKeys": [ + { + "fields": "organism", + "reference": { + "resource": "ncbi_taxonomy", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "protein_gene", + "title": "protein_gene", + "path": "protein_gene.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "Association between a UniProtKB protein term and an Ensembl term identifying a gene encoding that protein", + "schema": { + "fields": [ + { + "name": "protein", + "description": "A UniProt Knowledgebase (UniProtKB) protein ID (e.g. 'P94485')", + "type": "string", + "constraints": { + "required": true + } + }, + { + "name": "gene", + "description": "An Ensembl gene ID (e.g. 'ENSG00000012048')", + "type": "string", + "constraints": { + "required": true + } + } + ], + "primaryKey": [ + "protein", + "gene" + ], + "foreignKeys": [ + { + "fields": "protein", + "reference": { + "resource": "protein", + "fields": "id" + } + }, + { + "fields": "gene", + "reference": { + "resource": "gene", + "fields": "id" + } + } + ] + } + }, + { + "profile": "tabular-data-resource", + "name": "id_namespace", + "title": "id_namespace", + "path": "id_namespace.tsv", + "dialect": { + "delimiter": "\t", + "doubleQuote": false, + "lineTerminator": "\n", + "skipInitialSpace": true, + "header": true + }, + "description": "A table listing identifier namespaces registered by the DCC submitting this C2M2 instance", + "schema": { + "fields": [ + { + "name": "id", + "description": "ID of this identifier namespace", + "type": "string", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "abbreviation", + "description": "A very short display label for this identifier namespace", + "type": "string", + "constraints": { + "pattern": "^[a-zA-Z0-9_]+$" + } + }, + { + "name": "name", + "description": "A short, human-readable, machine-read-friendly label for this identifier namespace", + "type": "string", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "description", + "description": "A human-readable description of this identifier namespace", + "type": "string" + } + ], + "missingValues": [ "" ], + "primaryKey": "id" + } + } + ] +} + diff --git a/tests/test_importers/test_frictionless_importer.py b/tests/test_importers/test_frictionless_importer.py new file mode 100644 index 0000000..cf9b1a6 --- /dev/null +++ b/tests/test_importers/test_frictionless_importer.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- + +import unittest +import os + +from linkml.generators.pythongen import PythonGenerator +from linkml_runtime import SchemaView +from linkml_runtime.dumpers import yaml_dumper + +from schema_automator.importers.frictionless_import_engine import FrictionlessImportEngine +from schema_automator.utils import write_schema +from tests import INPUT_DIR, OUTPUT_DIR + +C2M2 = os.path.join(INPUT_DIR, "C2M2_datapackage.json") +OUT = os.path.join(OUTPUT_DIR, "C2M2.yaml") + +class TestFrictionlessImporter(unittest.TestCase): + """Tests import from Frictionless data packages """ + + def setUp(self) -> None: + pass + + def test_frictionless_import(self): + """ + Test importing a package + """ + ie = FrictionlessImportEngine() + schema = ie.convert(C2M2, id="https://w3id.org/linkml/cfde", name="cfde_schema") + write_schema(schema, OUT) + py_str = PythonGenerator(OUT).serialize() + self.assertIsNotNone(py_str) + sv = SchemaView(schema) + biosample = sv.get_class('biosample') + slot = sv.induced_slot('anatomy', biosample.name) + self.assertEqual('anatomy', slot.range) + + + + diff --git a/tests/test_importers/test_sql_importer.py b/tests/test_importers/test_sql_importer.py deleted file mode 100644 index 813e433..0000000 --- a/tests/test_importers/test_sql_importer.py +++ /dev/null @@ -1,78 +0,0 @@ -# -*- coding: utf-8 -*- - -"""Test the module can be imported.""" - -import unittest -import os -import yaml -from linkml.generators.pythongen import PythonGenerator -from linkml.utils import sqlutils -from linkml.utils.schema_builder import SchemaBuilder -from linkml.utils.sqlutils import SQLStore -from linkml_runtime import SchemaView -from linkml_runtime.dumpers import yaml_dumper -from linkml_runtime.linkml_model import SlotDefinition -from sqlalchemy.orm import sessionmaker - -from schema_automator.importers.owl_import_engine import OwlImportEngine -from linkml.generators.yamlgen import YAMLGenerator - -from schema_automator.importers.sql_import_engine import SqlImportEngine -from schema_automator.utils.schemautils import write_schema -from tests import INPUT_DIR, OUTPUT_DIR - -DB = os.path.join(OUTPUT_DIR, 'tmp.db') - - -class TestSqlmporter(unittest.TestCase): - """Imports SQL """ - - def setUp(self) -> None: - """ - Creates a SQL Lite database - :return: - """ - sb = SchemaBuilder() - sb.add_class('Person', - ['id', 'name', 'email']) - sb.add_slot(SlotDefinition('id', identifier=True)) - sb.add_defaults() - schema = sb.schema - # TODO: add to SchemaBuilder - for c in schema.classes.values(): - c.from_schema = 'http://x.org/' - python_module = PythonGenerator(schema).compile_module() - sql_store = SQLStore(schema, database_path=DB) - sql_store.native_module = python_module - sql_store.db_exists(force=True) - sql_store.compile() - self.schema = schema - self.schemaview = SchemaView(schema) - - - def test_from_sql(self): - """ - Test SQL conversion - - The strategy is to first build up a schema dynamically, - use existing linkml to convert, then reverse engineer it - """ - ie = SqlImportEngine() - schema_rt = ie.convert(DB) - schemaview_rt = SchemaView(schema_rt) - print(yaml_dumper.dumps(schema_rt)) - schemaview = self.schemaview - for c in schemaview.all_classes().values(): - print("here is c") - print(c) - self.assertIn(c.name, schemaview_rt.all_classes()) - for s in schemaview.class_induced_slots(c.name): - print(s) - self.assertIn(s.name, schemaview_rt.all_slots()) - - - - - - -