Skip to main content

Solana Python API

Project description


Actions Status PyPI version Python versions Codecov License: MIT PyPI Downloads

Solana.py

🐍 The Solana Python SDK 🐍

Solana.py is the base Python library for interacting with Solana. You can use it to build transactions and interact with the Solana JSON RPC API, much like you would do with solana-web3.js

It also covers the SPL Token Program.

Latest Documentation.

Note: This library uses many core types from the Solders package which used to be provided by solana-py itself. If you are upgrading from an old version and you're looking for something that was deleted, it's probably in solders now.

⚓︎ See also: AnchorPy, a Python client for Anchor-based programs on Solana. ⚓︎

⚡ Quickstart

Installation

  1. Install Python bindings for the solana-sdk.
pip install solders
  1. Install this package to interact with the Solana JSON RPC API.
pip install solana

General Usage

API Client

from solana.rpc.api import Client

http_client = Client("https://api.devnet.solana.com")

Async API Client

import asyncio
from solana.rpc.async_api import AsyncClient

async def main():
    async with AsyncClient("https://api.devnet.solana.com") as client:
        res = await client.is_connected()
    print(res)  # True

    # Alternatively, close the client explicitly instead of using a context manager:
    client = AsyncClient("https://api.devnet.solana.com")
    res = await client.is_connected()
    print(res)  # True
    await client.close()

asyncio.run(main())

Websockets Client

import asyncio
from asyncstdlib import enumerate
from solana.rpc.websocket_api import connect

async def main():
    async with connect("wss://api.devnet.solana.com") as websocket:
        await websocket.logs_subscribe()
        first_resp = await websocket.recv()
        subscription_id = first_resp[0].result
        next_resp = await websocket.recv()
        print(next_resp)
        await websocket.logs_unsubscribe(subscription_id)

    # Alternatively, use the client as an infinite asynchronous iterator:
    async with connect("wss://api.devnet.solana.com") as websocket:
        await websocket.logs_subscribe()
        first_resp = await websocket.recv()
        subscription_id = first_resp[0].result
        async for idx, msg in enumerate(websocket):
            if idx == 3:
                break
            print(msg)
        await websocket.logs_unsubscribe(subscription_id)

asyncio.run(main())

🔨 Development

Setup

  1. Install uv
  2. Install dev dependencies:
uv sync --all-groups --upgrade

Lint

make lint

Tests

# All tests
make tests
# Unit tests only
make unit-tests
# Integration tests only
make int-tests

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

solana_fork-0.36.12.tar.gz (49.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

solana_fork-0.36.12-py3-none-any.whl (63.8 kB view details)

Uploaded Python 3

File details

Details for the file solana_fork-0.36.12.tar.gz.

File metadata

  • Download URL: solana_fork-0.36.12.tar.gz
  • Upload date:
  • Size: 49.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for solana_fork-0.36.12.tar.gz
Algorithm Hash digest
SHA256 e14dde2cdc1d3e29499386cc8b99a3856ab4a364026104c785f33a3f0ce6595d
MD5 dfd4c5804ec1800bc224ed8e8213a9d3
BLAKE2b-256 3721108bf41a49a24c9c41b11575439f3993b740b662c2e293b146f57a523cd2

See more details on using hashes here.

File details

Details for the file solana_fork-0.36.12-py3-none-any.whl.

File metadata

  • Download URL: solana_fork-0.36.12-py3-none-any.whl
  • Upload date:
  • Size: 63.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for solana_fork-0.36.12-py3-none-any.whl
Algorithm Hash digest
SHA256 96e2ecfb74aab18abe1bec8c9ea8a002282a2adbd17948a49ce8cb1751f9ef3c
MD5 24967afb86d1593c013551affc0f7ef9
BLAKE2b-256 c36decb3d55d9ac66b1551176d1b4b895c40678fdd2f8fb26a96692250e03f91

See more details on using hashes here.

Supported by

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