Metadata-Version: 2.4
Name: biothings
Version: 1.0.0
Summary: a toolkit for building high-performance data & knowledge APIs in biology
Author-email: The BioThings Team <dev@biothings.io>
License: Apache-2.0
Project-URL: homepage, https://biothings.io
Project-URL: source, https://github.com/biothings/biothings.api
Project-URL: documentation, https://docs.biothings.io
Project-URL: changelog, https://github.com/biothings/biothings.api/blob/master/CHANGES.txt
Project-URL: issues, https://github.com/biothings/biothings.api/issues
Keywords: biology,medicine,annotation,data,knowledge,web,service,api
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Development Status :: 5 - Production/Stable
Classifier: Operating System :: OS Independent
Classifier: Operating System :: POSIX
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Utilities
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.21.0
Requires-Dist: tornado==6.1.0; python_version < "3.7.0"
Requires-Dist: tornado==6.2.0; python_version == "3.7.0"
Requires-Dist: tornado==6.4.2; python_version >= "3.8.0"
Requires-Dist: gitpython>=3.1.0
Requires-Dist: elasticsearch[async]<8,>=7; python_version < "3.7.0"
Requires-Dist: elasticsearch-dsl<8,>=7; python_version < "3.7.0"
Requires-Dist: elasticsearch[async]<9,>=8; python_version >= "3.7.0"
Requires-Dist: elasticsearch-dsl<9,>=8; python_version >= "3.7.0"
Requires-Dist: singledispatchmethod; python_version < "3.8.0"
Requires-Dist: dataclasses; python_version < "3.7.0"
Requires-Dist: jmespath<2.0.0,>=0.7.1
Requires-Dist: PyYAML>=5.1
Requires-Dist: orjson>=3.6.1
Provides-Extra: web-extra
Requires-Dist: msgpack>=0.6.1; extra == "web-extra"
Requires-Dist: sentry-sdk>=1.5.3; extra == "web-extra"
Provides-Extra: opensearch
Requires-Dist: boto3; extra == "opensearch"
Requires-Dist: requests-aws4auth; extra == "opensearch"
Provides-Extra: hubcore
Requires-Dist: pymongo<5.0,>=4.1.0; extra == "hubcore"
Provides-Extra: hub
Requires-Dist: pymongo<5.0,>=4.1.0; extra == "hub"
Requires-Dist: beautifulsoup4; extra == "hub"
Requires-Dist: aiocron==1.8; extra == "hub"
Requires-Dist: asyncssh>=2.19.0; extra == "hub"
Requires-Dist: psutil; extra == "hub"
Requires-Dist: jsonpointer; extra == "hub"
Requires-Dist: IPython; extra == "hub"
Requires-Dist: multiprocessing_on_dill; extra == "hub"
Requires-Dist: dill; extra == "hub"
Requires-Dist: prettytable; extra == "hub"
Requires-Dist: sockjs-tornado==1.0.7; extra == "hub"
Requires-Dist: jsonschema>=2.6.0; extra == "hub"
Requires-Dist: pip; extra == "hub"
Requires-Dist: black; extra == "hub"
Requires-Dist: boto3; extra == "hub"
Requires-Dist: requests-aws4auth; extra == "hub"
Requires-Dist: networkx<3.0,>=2.1; python_version >= "3.7.0" and extra == "hub"
Requires-Dist: networkx<2.6,>=2.1; python_version < "3.7.0" and extra == "hub"
Requires-Dist: biothings_client>=0.2.6; extra == "hub"
Requires-Dist: cryptography>=38.0.3; extra == "hub"
Requires-Dist: pytest; extra == "hub"
Requires-Dist: pydantic>=2.0; extra == "hub"
Provides-Extra: cli
Requires-Dist: pymongo<5.0,>=4.1.0; extra == "cli"
Requires-Dist: psutil; extra == "cli"
Requires-Dist: jsonschema>=2.6.0; extra == "cli"
Requires-Dist: typer>=0.12.1; extra == "cli"
Provides-Extra: docker
Requires-Dist: docker>=6.0.1; extra == "docker"
Provides-Extra: docker-ssh
Requires-Dist: docker[ssh]>=6.0.1; extra == "docker-ssh"
Provides-Extra: dev
Requires-Dist: aioresponses; extra == "dev"
Requires-Dist: mongomock; extra == "dev"
Requires-Dist: pytest-asyncio; extra == "dev"
Requires-Dist: pytest-mock; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=5.3.0; extra == "docs"
Requires-Dist: sphinx_rtd_theme>=2.0.0; extra == "docs"
Requires-Dist: sphinx_reredirects>=0.1.3; extra == "docs"
Dynamic: license-file

# BioThings SDK

[![Downloads](https://pepy.tech/badge/biothings)](https://pepy.tech/project/biothings)
[![biothings package](https://badge.fury.io/py/biothings.svg)](https://pypi.python.org/pypi/biothings)
[![biothings_version](https://img.shields.io/pypi/pyversions/biothings.svg)](https://pypi.python.org/pypi/biothings)
[![biothings_version](https://img.shields.io/pypi/format/biothings.svg)](https://pypi.python.org/pypi/biothings)
[![biothings_version](https://img.shields.io/pypi/status/biothings.svg)](https://pypi.python.org/pypi/biothings)
[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4.svg)](CODE_OF_CONDUCT.md)
[![Build Status](https://github.com/biothings/biothings.api/actions/workflows/test-build.yml/badge.svg)](https://github.com/biothings/biothings.api/actions/workflows/test-build.yml)
[![Tests Status](https://github.com/biothings/biothings.api/actions/workflows/run-tests.yml/badge.svg)](https://github.com/biothings/biothings.api/actions/workflows/run-tests.yml)
[![Documentation Status](https://readthedocs.org/projects/biothingsapi/badge/?version=latest)](https://docs.biothings.io/en/latest/?badge=latest)

## Quick Summary

BioThings SDK provides a Python-based toolkit to build high-performance data APIs (or web services) from a single data source or multiple data sources. It has the particular focus on building data APIs for biomedical-related entities, a.k.a "BioThings" (such as genes, genetic variants, drugs, chemicals, diseases, etc.).

Documentation about BioThings SDK can be found at https://docs.biothings.io

## Introduction

### What's BioThings?

We use "**BioThings**" to refer to objects of any biomedical entity-type
represented in the biological knowledge space, such as genes, genetic
variants, drugs, chemicals, diseases, etc.

### BioThings SDK

SDK represents "Software Development Kit". BioThings SDK provides a
[Python-based](https://www.python.org/) toolkit to build
high-performance data APIs (or web services) from a single data source
or multiple data sources. It has the particular focus on building data
APIs for biomedical-related entities, a.k.a "*BioThings*", though it's
not necessarily limited to the biomedical scope. For any given
"*BioThings*" type, BioThings SDK helps developers to aggregate
annotations from multiple data sources, and expose them as a clean and
high-performance web API.

The BioThings SDK can be roughly divided into two main components: data
hub (or just "hub") component and web component. The hub component
allows developers to automate the process of monitoring, parsing and
uploading your data source to an
[Elasticsearch](https://www.elastic.co/products/elasticsearch) backend.
From here, the web component, built on the high-concurrency [Tornado Web
Server](http://www.tornadoweb.org/en/stable/) , allows you to easily
setup a live high-performance API. The API endpoints expose
simple-to-use yet powerful query features using [Elasticsearch's
full-text query capabilities and query
language](https://www.elastic.co/guide/en/elasticsearch/reference/2.4/query-dsl-query-string-query.html#query-string-syntax).

### BioThings API

We also use "*BioThings API*" (or *BioThings APIs*) to refer to an API
(or a collection of APIs) built with BioThings SDK. For example, both
our popular [MyGene.Info](http://mygene.info/) and
[MyVariant.Info](http://myvariant.info/) APIs are built and maintained
using this BioThings SDK.

### BioThings Studio

*BioThings Studio* is a buildin, pre-configured environment used to build and
administer a BioThings API. At its core is the *Hub*, a backend service responsible for maintaining data up-to-date, producing data releases and
update API frontends.

## Installing BioThings SDK

You can install the latest stable BioThings SDK release with pip from
[PyPI](https://pypi.python.org/pypi), like:

    # default to install web requirements only for running an API
    pip install biothings
    # or include additional requirements useful for running an API on production
    # like msgpack, sentry-sdk pacakages
    pip install biothings[web_extra]

    # install hub requirements for running a hub (including CLI)
    pip install biothings[hub]

    # install CLI-only requirements if you only need CLI for develop a data plugin
    pip install biothings[cli]

    # need support for docker data plugin
    pip install biothings[hub,docker]
    # or if use ssh protocol to connect to a remote docker server
    pip install biothings[hub,docker_ssh]

    # just install everything for dev purpose
    pip install biothings[dev]

You can check more details for the optional dependecy packages directly in [setup.py](setup.py) file.

You can install the latest development version of BioThings SDK directly
from our github repository like:

    pip install git+https://github.com/biothings/biothings.api.git#egg=biothings

    # from a branch or commit
    pip install git+https://github.com/biothings/biothings.api.git@0.12.x#egg=biothings

    # include optional dependecies
    pip install git+https://github.com/biothings/biothings.api.git@0.12.x#egg=biothings[web_extra]

    # can be very useful to install in “editable” mode:
    pip install -e git+https://github.com/biothings/biothings.api.git@0.12.x#egg=biothings[web_extra]

Alternatively, you can download the source code, or clone the [BioThings
SDK repository](https://github.com/biothings/biothings.api) and run:

    pip install .
    # or
    pip install .[web_extra]

## Get started to build a BioThings API

We recommend to follow [this tutorial](https://docs.biothings.io/en/latest/tutorial/studio.html) to develop your first BioThings API in our pre-configured **BioThings Studio** development environment.

## Documentation

The latest documentation is available at https://docs.biothings.io.

## How to contribute

Please check out this [Contribution Guidelines](CONTRIBUTING.md) and [Code of Conduct](CODE_OF_CONDUCT.md) document.

## Active and past contributors

Please see [Contributors](Contributors.md)
