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())

*_unsubscribe() takes the server-assigned subscription ID (first_resp[0].result, as above). As a convenience it also accepts the request ID returned by the matching *_subscribe() helper, which is translated once the subscription confirmation has been received. Server-assigned IDs are resolved first, so prefer that form when you have it.

🔨 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

Metadata

Release files for solana-fork 0.40.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for solana-fork 0.40.4
File Size Uploaded Provenance Actions
solana_fork-0.40.4.tar.gz 498.1 kB Without provenance Details for solana_fork-0.40.4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for solana-fork 0.40.4
File Interpreter ABI Platform Actions
solana_fork-0.40.4-py3-none-any.whl Python 3 none any Details for solana_fork-0.40.4-py3-none-any.whl

Total release size: 547.2 kB

Release files / solana_fork-0.40.4.tar.gz

Download URL solana_fork-0.40.4.tar.gz
Size 498.1 kB
Tags Source
SHA-256 checksum
How to use checksums
628ccfb09a081405f35eb700b4c60dc25f0f4513da562d8b749dc2f8ee48b9e3
BLAKE2b-256 checksum
How to use checksums
64f6679a699fbf9007f5dfa3bd610e071da0aee547e6201638c46c2eb9b9fd19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.12 {"installer":{"name":"uv","version":"0.12.12","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}

Release files / solana_fork-0.40.4-py3-none-any.whl

Download URL solana_fork-0.40.4-py3-none-any.whl
Size 49.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8ed1b78a022ff3e00de10166a19dc15bb315920481d4a4d80ed1ec50ea2cbfd8
BLAKE2b-256 checksum
How to use checksums
e09726029cb7fa47a91f274e81d7c0d903e957d77c95ead5dc5e2298785fb154
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.12 {"installer":{"name":"uv","version":"0.12.12","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}

Security for solana-fork 0.40.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page