Skip to main content

Python SDK for Free TON

Project description

TON Client

TON SDK Client library Python bindings. Works for Python 3.6+

PyPI - Python Version PyPI PyPI - Downloads TonClient Ubuntu 20.04 TonClient MacOS Latest

Installation

  1. Create python virtual environment using pipenv or virtualenv
  2. Activate created environment
  3. Run pip install ton-client-py

Tests

  1. Create python virtual environment using pipenv or virtualenv and activate it
  2. Clone git repository and enter it
  3. Run python -m unittest

Client

Core client library has sync and async request modes. Some core methods are available only in async request mode and this mode is more prefferable, so python client is created with async core requests by default.

Create client

from tonclient.client import TonClient

client = TonClient()

# If you need sync core requests for some reason
client_sync_core = TonClient(is_core_async=False)

Client is created with default config

CLIENT_DEFAULT_SETUP = {
    'network': {
        'server_address': 'http://localhost',
        'network_retries_count': 5,
        'message_retries_count': 5,
        'message_processing_timeout': 40000,
        'wait_for_timeout': 40000,
        'out_of_sync_threshold': 15000,
        'access_key': ''
    },
    'crypto': {
        'mnemonic_dictionary': 1,
        'mnemonic_word_count': 12,
        'hdkey_derivation_path': "m/44'/396'/0'/0/0",
        'hdkey_compliant': True
    },
    'abi': {
        'workchain': 0,
        'message_expiration_timeout': 40000,
        'message_expiration_timeout_grow_factor': 1.5
    }
}

You can override initial config while creating a client

from tonclient.client import TonClient, DEVNET_BASE_URL

client = TonClient(network={'server_address': DEVNET_BASE_URL}, abi={'message_expiration_timeout': 30000})
version = client.version()

Client contains all core modules and its' methods. You can get full list of modules and methods here: https://github.com/tonlabs/TON-SDK/blob/master/docs/modules.md
Module method is called by template client.[module].[method]

from tonclient.client import TonClient, DEVNET_BASE_URL

client = TonClient(network={'server_address': DEVNET_BASE_URL})

# Generate random signing keys
keypair = client.crypto.generate_random_sign_keys()
# Parse account
parsed = client.boc.parse_account(boc='Account base64 BOC')

You always can get information about method and its' arguments in method docstring.

Net module and GraphQL queries

To create GraphQL query for net module methods use builtin factory.
collection and result are required for all queries, other filters are optional.

from tonclient.net import TonQLQuery

# Create query collection
query = TonQLQuery(collection='messages')

# Set filter
# `set_filter` methods accepts any number of kwargs for filtering data.
# kwarg name contains field name and condition separated by __.
# E.g. field__gt=111 is equal to GraphQL {'field': {'gt': 111}}
query = query.set_filter(field__gt=111, field__eq='0:')

# Set result
query = query.set_result('id boc')
# or you can set result fields as separate args
query = query.set_result('id', 'boc')
# or you can combine all of this
query = query.set_result('id boc', 'field')

# Set order (you can pass arguments in the same way as for `set_result`)
query = query.set_order('created_at')  # ASC sorting
query = query.set_order('-created_at')  # DESC sorting

# Set limit
query = query.set_limit(5)

Methods with events

Some library methods net.subscribe_collection, proccessing.send_message, processing.wait_for_transaction, processing.process_message may return either result or generator.

  • net.subscribe_collection always returns a generator
  • proccessing.send_message, processing.wait_for_transaction, processing.process_message return generator only if send_events argument is set to True

Please, dig in tonclient/test/test_net.py, tonclient/test/test_processing.py to get example how to work with generators.

Client and asyncio

from tonclient.client import TonClient, DEVNET_BASE_URL

# Create client with `is_async=True` argument.
client = TonClient(network={'server_address': DEVNET_BASE_URL}, is_async=True)

# Get version (simple method with result)
version = await client.version()

# Generators
generator = client.net.subscribe_collection(query=TonQLQuery)
async for event in generator:
    # Work with event
    pass

Please, dig in tonclient/test/test_async.py to get more info.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ton-client-py-1.0.0.6.tar.gz (14.4 MB view details)

Uploaded Source

Built Distribution

ton_client_py-1.0.0.6-py3-none-any.whl (14.5 MB view details)

Uploaded Python 3

File details

Details for the file ton-client-py-1.0.0.6.tar.gz.

File metadata

  • Download URL: ton-client-py-1.0.0.6.tar.gz
  • Upload date:
  • Size: 14.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.1 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.6

File hashes

Hashes for ton-client-py-1.0.0.6.tar.gz
Algorithm Hash digest
SHA256 b3bce3087780b240f2ca78e39a6e688c613a2dc59597c5675b8ffb039fbddda9
MD5 7f0cb438a4fc3a85cd0367911d7e0f2d
BLAKE2b-256 6c99dd18af427c7d7afb0557d043f8727ff93f824a45d0e617806e3bd6a7e0d9

See more details on using hashes here.

File details

Details for the file ton_client_py-1.0.0.6-py3-none-any.whl.

File metadata

  • Download URL: ton_client_py-1.0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 14.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.1 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.6

File hashes

Hashes for ton_client_py-1.0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 381b30d366da6a2672c7c245a6c9294dc733ac0cdb529f001ca92adb572e8680
MD5 bee3b14797896fce24f8d11ff4d52b8d
BLAKE2b-256 471f17d4f0ae67b76e08680600e5a6269bdea277289e799830787f27cb0e94a9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page