WeChat SDK for Python

  ___       __   _______   ________  ___  ___  ________  _________  ________  ___    ___
 |\  \     |\  \|\  ___ \ |\   ____\|\  \|\  \|\   __  \|\___   ___\\   __  \|\  \  /  /|
 \ \  \    \ \  \ \   __/|\ \  \___|\ \  \\\  \ \  \|\  \|___ \  \_\ \  \|\  \ \  \/  / /
  \ \  \  __\ \  \ \  \_|/_\ \  \    \ \   __  \ \   __  \   \ \  \ \ \   ____\ \    / /
   \ \  \|\__\_\  \ \  \_|\ \ \  \____\ \  \ \  \ \  \ \  \   \ \  \ \ \  \___|\/  /  /
    \ \____________\ \_______\ \_______\ \__\ \__\ \__\ \__\   \ \__\ \ \__\ __/  / /
     \|____________|\|_______|\|_______|\|__|\|__|\|__|\|__|    \|__|  \|__||\___/ /
                                                                            \|___|/

Financial Contributors on Open Collective GitHub Actions codecov.io Documentation Status PyPI Downloads Reviewed by Hound

微信(WeChat) 公众平台第三方 Python SDK。

v1.x: 【阅读文档】 【快速入门】 master: 【阅读文档】 【快速入门】

功能特性

  1. 普通公众平台被动响应和主动调用 API
  2. 企业微信 API
  3. 微信支付 API
  4. 第三方平台代公众号调用接口 API
  5. 小程序云开发 API

安装

推荐使用 pip 进行安装:

pip install wechatpy

升级版本:

pip install -U wechatpy

使用示例

使用示例参见 examples

贡献代码

请阅读 贡献代码指南

支持项目

如果觉得本项目对您有帮助,请考虑捐赠支持项目开发

问题反馈

我们主要使用 GitHub issues 进行问题追踪和反馈。

QQ 群:176596300

wechatpy QQ 群

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

License

This work is released under the MIT license. A copy of the license is provided in the LICENSE file.

Owner
wechatpy
微信开放平台 Python SDK
wechatpy
Comments
  • 微信开放平台

    微信开放平台

    作者可以看看有没有可能转成新的方式

    | | 原先方式 | 新方式(登录授权) | | --- | --- | --- | | 公众号是否需要提供appid和appsecret | 需要 | 不需要 | | 公众号是否需要配置服务器url和token | 需要 | 不需要 | | 可接入几个第三方开发服务 | 1个 | 5个(消息与菜单权限集只能授权给一家) |

    https://open.weixin.qq.com/cgi-bin/frame?t=home/wx_plugin_tmpl&lang=zh_CN https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN

  • wechatpy 2.0 的一些想法

    wechatpy 2.0 的一些想法

    wehctapy 已经在我们的项目中用了几个月,确实方便了我们很多。

    但也有些用的别扭的地方。慢慢的也产生了一些想法。希望和你交流一下。

    出现此想法的原因

    • 在项目中使用时,感觉现有些接口比较难用。
    • 接口返回数据是纯 json,而非对象
    • 只支持官方操作
    • 不够对象化
    • 发布时非接口类功能缺失
    • 没有对接 python 常用框架

    改进方向:易用性功能性

    接口返回数据是纯 json,而非对象

    这在项目中还要做各种处理,这种处理放在业务中意义不大,浪费精力,适合放到本库中。提供一下接口会更好: 做法:将微信中的概念变成对象,将接口变成对象的方法,方法返回对象实例。对象实例提供各种数据格式的转化能力。

    follower_manager =   wechat_client.get_manager('fellower')
    # 获取所有关注者
    followers = follower_manager.get()
    # 获取单个关注者
    follower =   wechat_client.fellowers.get(name='nickname')
    # 修改
    follower.nickname = 'another_name'
    follower.sex = ’女'
    follower.save()
    
    shakearound_manager =   wechat_client.get_manager('shakearound')
    page_manager = shakearound_manager.get_manager('page')
    all_pages = page_manager.get()
    page = page_manager.get(page_id)
    new_page = page_manager.add(title, description, url, icon_url, mark='')
    new_page.json()
    new_page.xml()
    

    只支持官方操作

    可以在官方操作的基础上封装常用操作,这样更方便使用

    不够对象化

    wechat_client = WechatClient(app_id, app_secret)
    

    实例化之后,就可以检查wechat_client可调用的对象(底层接口),没有权限时,抛出异常; 所有操作以面向对象的方式使用,屏蔽 http 层。

    发布时非接口类功能缺失

    发布项目时,经常需要额外开发。比如验证 token,开放平台的基本测试等,可以在库中实现。节省调用者开发时间。

    没有对接 python 常用框架

    多数情况下微信对象需要本地保存,如果能对象 django ORM、SqlAlchemy ORM 等数据库模型,会大大增加我们项目的友好度。比如 Django 中

    from wechatpy.decorators import bind_model
    from wechatpy.models import Fellower
    from django.db import models
    
    @bind_model(Fellower)
    class WechatFellower(models.Model):
         name = models.CharField(...)
    

    这样就把 wechatpy 中的模型和 Django 的模型关联了。

    wechat_fellower = WechatFellower.objects.get(name='xxx')
    wechat_fellower.name = 'another_name'
    wechat_fellower.save()
    

    在完成 django 模型功能(保存到数据库)的同时,也完成了和微信接口的交互。

    下面是 wechatpy 2.0 架构: 2015-12-29 13 09 16

    1. 我们可以通过 python 内置的 http 库或者 requests 等第三方库封装对微信 http 接口的调用
    2. 在此基础上,将微信概念对象化,将接口变成这些对象的操作,并可以提供非官方操作。
    3. 提供一种机制(微信对象适配层),可以将这些对象和一些常用 python 库的数据模型关联。

    绿色部分将是新 wechatpy 对外提供的功能。当微信接口变化时,我们修改黄色部分即可。

    这个想法还不够细致。如果你对这个改进方向认可,我们可以就此多想一想​细节。

  • 企业号我用这代码回调没反应啊

    企业号我用这代码回调没反应啊

    from __future__ import absolute_import, unicode_literals
    from flask import Flask, request, abort, make_response
    from wechatpy.enterprise.crypto import WeChatCrypto
    from wechatpy.exceptions import InvalidSignatureException
    from wechatpy.enterprise.exceptions import InvalidCorpIdException
    from wechatpy.enterprise import parse_message, create_reply
    
    
    TOKEN = '123456'
    EncodingAESKey = ''
    CorpId = ''
    
    app = Flask(__name__)
    
    
    @app.route('/wechat', methods=['GET', 'POST'])
    def wechat():
        signature = request.args.get('msg_signature', '')
        timestamp = request.args.get('timestamp', '')
        nonce = request.args.get('nonce', '')
    
        crypto = WeChatCrypto(TOKEN, EncodingAESKey, CorpId)
        if request.method == 'GET':
            echo_str = request.args.get('echostr', '')
            try:
                echo_str = crypto.check_signature(
                    signature,
                    timestamp,
                    nonce,
                    echo_str
                )
            except InvalidSignatureException:
                abort(403)
            return echo_str
        else:
            try:
                msg = crypto.decrypt_message(
                    request.data,
                    signature,
                    timestamp,
                    nonce
                )
            except (InvalidSignatureException, InvalidCorpIdException):
                abort(403)
            msg = parse_message(msg)
            if msg.type == 'text':
                reply = create_reply(msg.content, msg).render()
            else:
                reply = create_reply('Can not handle this for now', msg).render()
            res = make_response(crypto.encrypt_message(reply, nonce, timestamp))
            res.headers['Content-Type'] = 'application/xml'
            return res
    
    
    if __name__ == '__main__':
        app.run('127.0.0.1', 5001, debug=True)
    
  • 第三方平台API问题:component_verify_ticket

    第三方平台API问题:component_verify_ticket

    signature=c542a4b4fd72edd17d42aa7ed579877c925656aa&timestamp=1467073346&nonce=225678664&encrypt_type=aes&msg_signature=c6f76e0bdcfe547bc803f191eae24f2c788fccb2

    收到微信服务器的参数是这些,但是调用接口需要的参数:

    cache_component_verify_ticket(self, msg, signature, timestamp, nonce)
    

    和微信服务器传递过来的参数不符合,另外InfoType还有下面两种情况:

    <InfoType>unauthorized</InfoType>
    
    <InfoType>authorized</InfoType>
    

    来自微信公众平台接口说明 InfoType也有不同的类型,个人感觉需要

    from wechatpy import parse_message
    

    经过类似parse_message的处理,判断不同类型进行不同处理。

    目前接口: 直接调用返回:Error code: -40001, message: Invalid signature

  • 微信支付接口无法创建订单

    微信支付接口无法创建订单

    部分代码:

    app_id = 'wxbbxxxxxxxxxxx'
    user_info = session.get('user_info')
    pay=WeChatPay(app_id,'7wH6oUxxxxxxxxxxxxx','133xxxxxxx'')
        try:
            result=pay.order.create('JSAPI',u'U盘A款',5800, 'http://www.abc.com/jsapi_result/',user_info['openid'])
        except Exception as e:
            current_app.logger.debug(e)
    

    每次到pay.order.create都异常,却没捕捉到东西:Error code: None, message: None

  • 关于扫带参二维码返回“该公众号暂时无法提供服务,请稍后再试  ”的疑问

    关于扫带参二维码返回“该公众号暂时无法提供服务,请稍后再试 ”的疑问

    现象描述: 同代码在公众测试平台中扫码后能准确返回ok字段,在实际认证的服务号当中,同样返回ok字段,但是会额外显示“该公众号暂时无法提供服务,请稍后再试 ”的提示。 测试过直接返回空字段,同样有错误提示。

    @app.route('/wechat', methods=['GET', 'POST'])
    def wechat():
        signature = request.args.get('signature', '')
        timestamp = request.args.get('timestamp', '')
        nonce = request.args.get('nonce', '')
        encrypt_type = request.args.get('encrypt_type', 'raw')
        msg_signature = request.args.get('msg_signature', '')
        try:
            check_signature(TOKEN, signature, timestamp, nonce)
        except InvalidSignatureException:
            abort(403)
        if request.method == 'GET':
            echo_str = request.args.get('echostr', '')
            return echo_str
        print request
        # POST request
        if encrypt_type == 'raw':
            # plaintext mode
            msg = parse_message(request.data)
            if msg.type == 'text':
                reply = create_reply(msg.content, msg)
            elif msg.type == 'event':
                if msg.event == 'subscribe_scan' or msg.event == 'scan':
                    reply=create_reply('ok',msg)
                else:
    		 reply = create_reply('ok2', msg)
            else:
                reply = create_reply('ok3', msg)
        else:
            reply = create_reply('ok4', msg)
        return reply.render()
    if __name__ == '__main__':
        app.run('0.0.0.0', 80,debug=True, use_reloader=False)
    
  • 继承了 WeChatClient,但是 __new__ 并没有正确的执行

    继承了 WeChatClient,但是 __new__ 并没有正确的执行

    Hi, 我继承了 WeChatClient,重写了 init,access_token,fetch_access_token 这三个方法,但是我发现 BaseWeChatClient 的 new 并没有正确的执行,导致 api._client 为 None

    我尝试在继承的类中手动执行 WeChatClient.new 也没有用

  • 退款时报错 SSLError

    退款时报错 SSLError

    问题描述 (Description)

    调用退款功能的时候报错

    配置信息 (Environment/Version)

    • OS Mac

    • Python 3.6

    • wechatpy 1.8.13

    报错信息

    Error handling request Traceback (most recent call last): File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/urllib3/connectionpool.py", line 677, in urlopen chunked=chunked, File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/urllib3/connectionpool.py", line 381, in _make_request self._validate_conn(conn) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/urllib3/connectionpool.py", line 976, in validate_conn conn.connect() File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/urllib3/connection.py", line 370, in connect ssl_context=context, File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/urllib3/util/ssl.py", line 365, in ssl_wrap_socket context.load_cert_chain(certfile, keyfile) ssl.SSLError: [SSL] PEM lib (_ssl.c:3401) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/requests/adapters.py", line 449, in send timeout=timeout File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/urllib3/connectionpool.py", line 725, in urlopen method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2] File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/urllib3/util/retry.py", line 439, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.mch.weixin.qq.com', port=443): Max retries exceeded with url: /secapi/pay/refund (Caused by SSLError(SSLError(336445449, '[SSL] PEM lib (_ssl.c:3401)'),)) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/aiohttp/web_protocol.py", line 381, in start resp = await self._request_handler(request) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/aiohttp/web_app.py", line 310, in _handle resp = await handler(request) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/aiohttp/web_middlewares.py", line 88, in impl return await handler(request) File "/Users/wuyazi/italki/mississippi/src/middlewares/error.py", line 11, in middleware_handler response = await handler(request) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/aiohttp/web_urldispatcher.py", line 741, in _iter resp = await method() File "/Users/wuyazi/italki/mississippi/src/common/validate.py", line 31, in wrapper return await func(self, *args, **kwargs) File "/Users/wuyazi/italki/mississippi/src/apis/refund.py", line 35, in post fee_type=params.get('fee_type', 'CNY')) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/wechatpy/pay/api/refund.py", line 43, in apply return self._post('secapi/pay/refund', data=data) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/wechatpy/pay/base.py", line 18, in _post return self._client.post(url, **kwargs) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/wechatpy/pay/init.py", line 193, in post **kwargs File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/wechatpy/pay/init.py", line 138, in _request **kwargs File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/requests/sessions.py", line 530, in request resp = self.send(prep, **send_kwargs) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/requests/sessions.py", line 643, in send r = adapter.send(request, **kwargs) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/requests/adapters.py", line 514, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='api.mch.weixin.qq.com', port=443): Max retries exceeded with url: /secapi/pay/refund (Caused by SSLError(SSLError(336445449, '[SSL] PEM lib (_ssl.c:3401)'),))

  • Looking for maintainers

    Looking for maintainers

    You will be given write access to this repository.

    Requirements:

    1. Understand advanced Python techniques (mostly meta-programming).
    2. Understand wechatpy's internal design.
  • fix json decode

    fix json decode

    我这边有一个用户资料是这样的 {"subscribe":1,"openid":"*","nickname":"monk","sex":1,"language":"zh_CN","city":"Y'Qt","province":"SN¬","country":"","headimgurl":"http:\/\/wx.qlogo.cn\/mmopen\/ajNVdqHZLLBGnfR2C0W8cSLBbkeQASsMaSQsOKPwL9vIGr1Zen9zj9Jwibt06kpicNvH1NU7uWFZQ8rG4CrPD7uA\/0","subscribe_time":1376237570,"unionid":"*","remark":"","groupid":0,"tagid_list":[]}

    其中 province 字段最后一个字符的 unicode 是 172 ,无法正常 decode,需要加 strict 参数。

    image

    代码中其他地方也可能有这种问题。

  • 图文消息回复时图文个数一直在递增

    图文消息回复时图文个数一直在递增

    if isinstance(message, TextMessage):
                print u'文本消息'
                reply = ArticlesReply(message=message)
                reply.add_article({
                    'title': '猫',
                    'description': '描述文字……',
                    'image': 'http://a.hiphotos.baidu.com/image/w%3D310/sign=595a29f639c79f3d8fe1e2318aa0cdbc/43a7d933c895d1433d2c882a71f082025aaf0764.jpg',
                    'url': 'http://www.baidu.com'
                })
                return HttpResponse(reply, mimetype='application/javascript')
    

    20150514160140435

  • 目前企业微信有三种类型access_token,看框架文档及相关代码,没有找到框架相关API

    目前企业微信有三种类型access_token,看框架文档及相关代码,没有找到框架相关API

    三种类型access_token: https://work.weixin.qq.com/api/doc/90001/90143/91201#%E5%8C%BA%E5%88%86%E4%B8%89%E7%A7%8D%E7%B1%BB%E5%9E%8Baccess_token

    wechatpy version: 1.8.15

  • 【微信】又有幺蛾子了,长链转短链的接口下线了

    【微信】又有幺蛾子了,长链转短链的接口下线了

    功能描述

    如题。 感觉咱们得把这个接口也下了,按照微信的描述这个接口不可用(但实际上似乎还可以用) 再不济也得加个 DeprecatedWarning

    相关资料

    https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&announce_id=11615366683l3hgk&version=&lang=zh_CN&token=

  • 文档快速上手中,解析加密XML消息报错问题,并且已经发现原因在哪里

    文档快速上手中,解析加密XML消息报错问题,并且已经发现原因在哪里

    问题描述 (Description)

    文档快速上手中,解析加密XML消息报错

    配置信息 (Environment/Version)

    • OS

    Windows

    • Python

    3.6

    • wechatpy

    1.8.14?我pip list中打印的版本号

    重现步骤 (Reproducing)

    1. 服务器获取微信的ComponentVerifyTicket推送
    2. 把推送按照文档快速上手中的示例代码执行
    3. 报错: Traceback (most recent call last): File "parse.py", line 36, in msg = parse_message(decrypted_xml) File "C:\Users\shan\AppData\Local\Programs\Python\Python36\lib\site-packages\wechatpy\parser.py", line 30, in parse_message message_type = message['MsgType'].lower() KeyError: 'MsgType'

    然后我到报错路径下看了一下,报错中的message中没有MsgType这个字段,打印message如下: OrderedDict([('AppId', 'wxxxxxxxxxxx'), ('CreateTime', '1613799402'), ('InfoType', 'component_verify_ticket'), ('ComponentVerifyTicket', '[email protected]@@GFBIxrYKYD9VG3tlFTOELaqaM7edWUwRbOb58mtcMFvmV0reptOv8UnBFaWvjESNHmeKVvrs_a1afk9n6zOiiA')])

    我现在是采取如下方案解决了问题: import xmltodict from wechatpy.utils import to_text

    crypto = WeChatCrypto(token, encoding_aes_key, appid) try: decrypted_xml = crypto.decrypt_message( xml, msg_signature, timestamp, nonce ) except (InvalidAppIdException, InvalidSignatureException): # 处理异常或忽略 pass

    msg = xmltodict.parse(to_text(decrypted_xml))['xml']

    是我哪里调用的方式出错了吗?

WeChat SDK for Python
WeChat SDK for Python

___ __ _______ ________ ___ ___ ________ _________ ________ ___ ___ |\ \ |\ \|\ ___ \ |\ ____\|\ \|\ \|\ __ \|\___

May 14, 2022
Shiny Wechat Pay SDK for Python
Shiny Wechat Pay SDK for Python

WeChat third-party Python SDK master: Read the Documentation Features Common public platforms passively respond and actively call APIs WeChat Pay API

Feb 3, 2022
Graviti-python-sdk - Graviti Data Platform Python SDK

Graviti Python SDK Graviti Python SDK is a python library to access Graviti Data

Mar 22, 2022
Send GitHub Issues, PRs or Discussions Updates to Wechat
Send GitHub Issues, PRs or Discussions Updates to Wechat

Send GitHub Issues, PRs or Discussions Updates to Wechat

Nov 30, 2021
Wechat based auto reply with pyautogui

Python-微信 自动回复 练手~ 一直想做个给微信发个消息,就可以跑Python程序,并将结果发送给我的东西,之前看了 B站@不高兴就喝水 的视频,终于有了灵感~ 使用的是模拟点击方案,请求期间是不能操作了。 库 pyautogui 用于模拟鼠标键盘操作和定位操作位置 pyperclip 剪贴板

Dec 1, 2021
A wrapper for aqquiring Choice Coin directly through a Python Terminal. Leverages the TinyMan Python-SDK.

CHOICE_TinyMan_Wrapper A wrapper that allows users to acquire Choice Coin directly through their Terminal using ALGO and various Algorand Standard Ass

Jan 30, 2022
AWS SDK for Python

Boto3 - The AWS SDK for Python Boto3 is the Amazon Web Services (AWS) Software Development Kit (SDK) for Python, which allows Python developers to wri

May 15, 2022
Python SDK for Facebook's Graph API

Facebook Python SDK This client library is designed to support the Facebook Graph API and the official Facebook JavaScript SDK, which is the canonical

May 18, 2022
Box SDK for Python

Box Python SDK Installing Getting Started Authorization Server-to-Server Auth with JWT Traditional 3-legged OAuth2 Other Auth Options Usage Documentat

May 12, 2022
The Official Dropbox API V2 SDK for Python
The Official Dropbox API V2 SDK for Python

The offical Dropbox SDK for Python. Documentation can be found on Read The Docs. Installation Create an app via the Developer Console. Install via pip

May 11, 2022
Evernote SDK for Python

Evernote SDK for Python Evernote API version 1.28 This SDK is intended for use with Python 2.X For Evernote's beta Python 3 SDK see https://github.com

May 3, 2022
Python SDK for IEX Cloud
Python SDK for IEX Cloud

iexfinance Python SDK for IEX Cloud. Architecture mirrors that of the IEX Cloud API (and its documentation). An easy-to-use toolkit to obtain data for

May 14, 2022
Unofficial Medium Python Flask API and SDK
Unofficial Medium Python Flask API and SDK

PyMedium - Unofficial Medium API PyMedium is an unofficial Medium API written in python flask. It provides developers to access to user, post list and

Sep 4, 2021
The Python SDK for the Rackspace Cloud

pyrax Python SDK for OpenStack/Rackspace APIs DEPRECATED: Pyrax is no longer being developed or supported. See openstacksdk and the rackspacesdk plugi

Apr 19, 2022
:snake: Python SDK to query Scaleway APIs.

Scaleway SDK Python SDK to query Scaleway's APIs. Stable release: Development: Installation The package is available on pip. To install it in a virtua

Feb 8, 2022
Skyscanner Python SDK

Skyscanner Python SDK Important As of May 1st, 2020, the project is deprecated and no longer maintained. The latest update in v1.1.5 includes changing

Feb 13, 2022
Python SDK for the Buycoins API.

This library provides easy access to the Buycoins API using the Python programming language. It provides all the feature of the API so that you don't need to interact with the API directly. This library can be used with Python 3.6+

May 4, 2022
Graviti TensorBay Python SDK

TensorBay Python SDK is a python library to access TensorBay and manage your datasets. It provides: A pythonic way to access your

Apr 7, 2022