Skip to main content

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

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
  1. Activate the virtual environment.
.venv\Scripts\activate   # Windows
source .venv/bin/activate  # Linux/macOS

Lint

make lint

Tests

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

Documentation

To build documentation from source files run:

make build-docs

To serve documentation locally run:

make serve

Download files

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

Source Distribution

solana-0.40.1.tar.gz (474.4 kB view details)

Uploaded Source

Built Distribution

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

solana-0.40.1-py3-none-any.whl (48.3 kB view details)

Uploaded Python 3

File details

Details for the file solana-0.40.1.tar.gz.

File metadata

  • Download URL: solana-0.40.1.tar.gz
  • Upload date:
  • Size: 474.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"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-0.40.1.tar.gz
Algorithm Hash digest
SHA256 75fd05aabba2dfeb4f6810e785e4aded3e119daee9cc8752584f244d82ef2c11
MD5 771dff01137013c8bca9d1b351b79c3c
BLAKE2b-256 07fff1728d9f44c479dbbf9d46814511d1a2b46affb314f72bf5810e7b0facd6

See more details on using hashes here.

File details

Details for the file solana-0.40.1-py3-none-any.whl.

File metadata

  • Download URL: solana-0.40.1-py3-none-any.whl
  • Upload date:
  • Size: 48.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"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-0.40.1-py3-none-any.whl
Algorithm Hash digest
SHA256 25a093bf2b5dfa439a99390088878feca0694703b8dd2dc6786ed84c72da1c20
MD5 c0428b065d1b047815c4db0098e6b48e
BLAKE2b-256 4daf64ac2e9bc18d4f75e946af41d605213c82c3fa75525837bbe68f68cc7211

See more details on using hashes here.

Release history Release notifications | RSS feed

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