Skip to main content

A Python SDK for interacting with JPYCv2 contracts

Project description

Core SDK

License: MIT build

A Python SDK to interact with the JPYCv2's core contracts. Ideal for those who want to interact with JPYC protocol in any Python-backend environments.

🪄 Usage

1. Install jpyc_core_sdk Package

# uv
$ uv add jpyc_core_sdk
# poetry
$ poetry add jpyc_core_sdk
# pip
$ pip install jpyc_core_sdk

2. Configure SDK Clients

from jpyc_core_sdk.client import SdkClient
from jpyc_core_sdk.jpyc import JPYC

# Configure SDK client using default RPC endpoint
client = SdkClient(
    chain_name="ethereum",
    network_name="mainnet",
    private_key={PRIVATE_KEY},
)

# Or configure SDK client using custom RPC endpoint
client = SdkClient(
    chain_name="ethereum",
    network_name="mainnet",
    private_key={PRIVATE_KEY},
    rpc_endpoint={CUSTOM_RPC_ENDPOINT},
)

# Configure JPYC client
jpyc = JPYC(client=client)

[!TIP] As for sensitive data such as private keys or api keys, we strongly recommend using some secure storage and read them from the securely embedded environment variables. This reflects our design decision of not using any environment variables within the SDK itself, aiming to make it as flexible as possible for the developers. Also, using some arbitrary environmental variables often results in unexpected behaviors (e.g., naming conflicts).

3. Call JPYC Contracts

Use the configured JPYC client to call JPYC's contract functions wherever you would like.

from {CONFIG_FILE} import jpyc

...
# Call a contract function (e.g., transfer)
tx_hash = jpyc.transfer(
    to={TO_ADDRESS},
    value=2025,
)
...

[!NOTE]

⛓️ Supported Networks

Please use one of the combinations of chain-network names when configuring the SDK clients.

[!TIP] For local testing & development, you could use localhost-devnet pair.

Chain Name Network Names
ethereum mainnet, sepolia
polygon mainnet, amoy
gnosis mainnet, chiado
avalanche mainnet, fuji
astar mainnet
shiden mainnet
localhost devnet

💬 Supported Providers

We're currently supporting HTTPProvider (the most simple & widely-used one) only. More providers (notably WebSocketProvider) are to be supported in the near future, so stay tuned!

🛠 Development

[!IMPORTANT] Sections below are mainly for the advanced users (e.g., contributors of this repo).

📦 Package Management

Add packages

# add packages for production
$ uv add {package_name}
# add packages for development
$ uv add --dev {package_name}

Remove packages

# remove production packages
$ uv remove {package_name}
# remove development packages
$ uv remove --dev {package_name}

🔎 Testing

Please see README at tests directory.

✅ Static Code Analysis

[!NOTE] Analysis results are also to be checked on our CI workflow.

Linting

# run linter without fixing
$ uv run ruff check {dir_name}
# run linter & auto-fix (if available)
$ uv run ruff check {dir_name} --fix

Formatting

# run formatter without fixing
$ uv run ruff format {dir_name} --check
# run formatter & auto-fix
$ uv run ruff format {dir_name}

Type Checking

# run mypy
$ uv run mypy {dir_name}

Pre-Commit Hooks

Pre-commit script is configured at .pre-commit-config.yaml. This automatically runs the configured hooks before executing any git commit commands. You could also simulate the hooks by running the following.

# simulate pre-commit hooks without creating an actual commit
$ uv run pre-commit run --all-files

📝 Comments & Docstrings

Docstrings should be written in the Google-style.

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

jpyc_core_sdk-1.0.2.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

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

jpyc_core_sdk-1.0.2-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

Details for the file jpyc_core_sdk-1.0.2.tar.gz.

File metadata

  • Download URL: jpyc_core_sdk-1.0.2.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.6

File hashes

Hashes for jpyc_core_sdk-1.0.2.tar.gz
Algorithm Hash digest
SHA256 e40794187576df25f80197b107fda0a80ace24fd85577f0f9d59db1ce089b8f0
MD5 992620c62087bc7b19e51f50d65b9b7e
BLAKE2b-256 f65902bff8bfdae4fd7c60469e423d01e239e23d0f3a7a1338faa56e3ed58167

See more details on using hashes here.

File details

Details for the file jpyc_core_sdk-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for jpyc_core_sdk-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d3342ec3b556016f545b0f2c5cd6a4bce9ae333c039ccb813aa6eb306b0624bc
MD5 551e133477a8b5d740999a949eb893f8
BLAKE2b-256 789312a699d44eadb579dc9ea50764b35c328e22ec6972337975ba476ead2cd8

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