Skip to main content

GA4GH DRS 客户端

项目描述

DRS-cli

执照 构建状态 覆盖范围 GitHub_tag PyPI_release

实施全球基因组学与健康联盟 (GA4GH) 数据存储库服务 API模式的客户端,包括对ELIXIR Cloud 和 AAI 的通用DRS-Filer DRS 实施中定义的其他端点的支持。

用法

要使用客户端,请在安装后在您的 Python 代码中按如下方式导入它 :

创建客户端实例

通过 DRS 主机名

可以通过指定 DRS 实例的域名来创建客户端实例,包括 URL 架构:

from drs_cli.client import DRSClient

client = DRSClient(uri="https://my-drs.app")
# Client instantiated for URL: https://my-drs.app:443/ga4gh/drs/v1

完全符合规范的DRS 实现将始终在 URL 上可用https,在 port443和 base path 上提供服务ga4gh/drs/v1。但是,为了允许客户端用于 DRS 实现的开发版本,http还支持 URL(默认端口80),并且 API 端点所服务的端口和基本路径可以用portbase_path参数覆盖:

from drs_cli.client import DRSClient

client = DRSClient(
    uri="http://my-drs.app",
    port=8080,
    base_path="my/api/route",
)
# Client instantiated for URL: http://my-drs.app:8080/my/api/route

通过 DRS URI

也可以通过传递基于主机名的 DRS URI来创建客户端:

from drs_cli.client import DRSClient

client = DRSClient(uri="drs://my-drs.app/SOME_OBJECT")
# Client instantiated for URL: https://my-drs.app:443/ga4gh/drs/v1

注意:仅评估 DRS URI 的主机名部分,而不评估对象 ID。

如上所述,可以覆盖端口和基本路径。此外,客户端构造函数还定义了标志,该标志在传递 DRS URI 时use_http为 URL 实例化客户端。http当提供 DRS 主机名 URL 而不是 DRS URI 时,该标志无效:

from drs_cli.client import DRSClient

client = DRSClient(
    uri="drs://my-drs.app/SOME_OBJECT",
    use_http=True,
)
# Client instantiated for URL: http://my-drs.app:443/ga4gh/drs/v1

访问端点

笔记:

  • 所有端点访问方法都需要一个客户端实例
  • 如需访问需要授权的端点,请参阅 专用部分
  • 不将对象 ID 作为单个字符串返回的响应将返回 Pydantic模型。如果首选字典,则可以使用response.dict(). 有关详细信息,请参阅Pydantic 导出文档

GET端点

可以通过以下方式访问DRS端点: GET /objects/{object_id}

response = client.get_object(
    object_id="A3SF4B",
)

同样,可以通过以下方式访问DRS端点: GET /objects/{object_id}/access/{access_id}

response = client.get_access_url(
    object_id="A3SF4B",
    access_id="B44FG9",
)

POST端点

DRS-Filer POST /objects端点可以通过以下方式访问,例如:

response = client.post_object(
    object_data={
        "created_time": "2019-05-20T00:12:34-07:00",
        "updated_time": "2019-04-24T05:23:43-06:00",
        "version": "1",
        "size": 5,
        "mime_type": "",
        "checksums": [
            {
            "checksum": "18c2f5517e4ddc02cd57f6c7554b8e88",
            "type": "md5"
            }
        ],
        "access_methods": [
            {
            "type": "ftp",
            "access_url": {
                "url": "ftp://my.ftp.server/my_path/my_file_01.txt",
                "headers":  [
                "None"
                ]
            }
            }
        ]
    }
)

DELETE端点

DRS-Filer DELETE /objects/{object_id} 端点可以通过以下方式访问,例如:

response = client.delete_object(
    object_id="A3SF4B",
)

授权

可以在客户端实例化期间或在调用端点访问方法时提供授权承载令牌。承载令牌作为Authorization标头与从实例化客户端实例发送的每个请求一起发送。

注意:只要在调用 API 端点时指定了令牌, token该特定客户端实例的变量就会被覆盖。因此,来自该客户端的后续调用都将携带新的令牌值,除非再次被覆盖。

以下示例说明了此行为:

from drs_cli.client import DRSClient

# No token passed during client instantiation
client = DRSClient(uri="https://my-drs.app")
# Value of client.token: None

# Token passed during API call
client.get_object(
    object_id="SOME_OBJECT",
    token="N3wT0k3n",
)
# Value of client.token: N3wT0k3n

# Token passed during client instantiation
client_2 = DRSClient(
    uri="https://my-drs.app",
    token="MyT0k3n",
)
# Value of client_2.token: MyT0k3n

# Token passed during API call
client_2.get_object(
    object_id="SOME_OBJECT",
    token="N3wT0k3n",
)
# Value of client_2.token: N3wT0k3n

API 文档

提供自动构建的API 文档

安装

您可以DRS-cli通过以下两种方式之一进行安装:

通过包管理器安装

pip install drs_cli

# Or for latest development version:
pip install git+https://github.com/elixir-cloud-aai/DRS-cli.git#egg=drs_cli

手动安装

git clone https://github.com/elixir-cloud-aai/DRS-cli.git
cd DRS-cli
python setup.py install

贡献

该项目是一项社区工作,以您的贡献为生,无论是以错误报告、功能请求、讨论或修复和其他代码更改的形式。如果您有兴趣投稿,请参阅我们组织的投稿指南。请注意与社区进行所有互动的行为准则。

版本控制

该项目采用语义版本控制方案进行版本控制。目前该服务处于测试阶段,因此API可能会更改,恕不另行通知。

执照

该项目包含在此存储库附带的Apache License 2.0中 。

接触

该项目是ELIXIR Cloud 和 AAI旗下的合作项目。按照链接通过聊天或电子邮件与我们取得联系。如有任何询问、建议、问题等,请提及此服务的名称。

logo_banner

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

drs_cli-0.2.3.tar.gz (15.3 kB 查看哈希

已上传 source

内置分布

drs_cli-0.2.3-py3-none-any.whl (17.7 kB 查看哈希

已上传 py3