Metadata-Version: 2.4
Name: omnichain
Version: 0.0.2
Summary: A Python SDK that enables developers and LLMs to seamlessly interact with multiple blockchain networks through a unified, chain-agnostic interface.
Project-URL: Homepage, https://github.com/getomnichain/omnichain
Project-URL: Issues, https://github.com/getomnichain/omnichain/issues
Author-email: Sinan Rıza <sinanrango@gmail.com>
License: MIT License
        
        Copyright (c) 2026 Rango Community
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: aiohttp-socks==0.8.4
Requires-Dist: async-lru==2.3.0
Requires-Dist: base58==2.1.1
Requires-Dist: betterproto2==0.9.1
Requires-Dist: bip-utils==2.9.3
Requires-Dist: bitcoin-coin-selection==1.5.0
Requires-Dist: embit-sinancrypto==0.8.2
Requires-Dist: httpx==0.28.1
Requires-Dist: mnemonic==0.21
Requires-Dist: pynacl==1.5.0
Requires-Dist: pysui-fastcrypto==0.7.3
Requires-Dist: pysui==0.99.1
Requires-Dist: python-dotenv==1.2.2
Requires-Dist: pyyaml==6.0.3
Requires-Dist: rango-basic-sdk==0.0.7
Requires-Dist: solana==0.36.12
Requires-Dist: solders==0.26.0
Requires-Dist: stellar-sdk[aiohttp]==13.0.0
Requires-Dist: tonutils==2.1.0
Requires-Dist: tronpy==0.6.2
Requires-Dist: web3==7.13.0
Requires-Dist: xrpl-py==4.3.0
Requires-Dist: zksync2==2.0.0
Description-Content-Type: text/markdown

# Omnichain

> Omnichain-py is a python library for humans and AI Agents to interact with all blockchain networks

## Supported Blockchain Networks

- EVM
- UTXO (Bitcoin and bit-like networks)
- Solana
- Sui
- Stellar
- XRP Ledger
- Tron
- TON

## Installation

```bash
pip install omnichain
```

## Development

This project uses [Hatch](https://hatch.pypa.io/) for environment, build, and
publish management.

```bash
# install hatch (once)
pip install hatch

# run tests inside the managed environment
hatch run test

# build sdist + wheel into ./dist
hatch build

# bump version (edits src/omnichain/__init__.py)
hatch version patch   # or: minor / major / "1.2.3"

# publish to PyPI (needs HATCH_INDEX_USER / HATCH_INDEX_AUTH or ~/.pypirc)
hatch publish
```

### Running tests

The default Hatch environment defines `test = "pytest {args:tests}"`, so any
arguments after `hatch run test` are forwarded to `pytest`.

```bash
# run the entire test suite
hatch run test

# run a specific file
hatch run test tests/impl/evm/test_evm_chain_e2e.py
hatch run test tests/impl/solana/test_solana_chain_e2e.py

# run a single class
hatch run test tests/impl/evm/test_evm_chain_e2e.py::TestEvmChains
hatch run test tests/impl/solana/test_solana_chain_e2e.py::TestSolanaChainGenesisHash

# run a single parametrized case (quote because of the brackets)
hatch run test "tests/impl/evm/test_evm_chain_e2e.py::TestEvmChains::test_asset_symbol_and_decimals_match_chain[ETHEREUM_USDC]"
hatch run test "tests/impl/solana/test_solana_chain_e2e.py::TestSolanaChainGenesisHash::test_asset_symbol_and_decimals_match_chain[SOLANA_MAINNET_USDC]"

# forward extra pytest flags
hatch run test tests/impl/solana/test_solana_chain_e2e.py -k genesis_hash -x -s

# one-off invocation without the script alias
hatch run pytest tests/impl/solana/test_solana_chain_e2e.py

# drop into the env shell and run pytest directly
hatch shell
pytest tests/impl/evm/test_evm_chain_e2e.py
```

#### Running groups of tests by marker

`pytest.ini` registers markers for both the kind of test (`unit`, `integration`,
`e2e`) and the network it exercises (`evm`, `solana`, `stellar`, `sui`,
`sui_graphql`, `tron`, `xrpl`). Use `-m` to select tests by marker:

```bash
# run all unit / integration / e2e tests
hatch run test -m unit
hatch run test -m integration
hatch run test -m e2e

# run all tests for a specific network
hatch run test -m evm
hatch run test -m solana
hatch run test -m sui_graphql

# combine markers with boolean expressions
hatch run test -m "e2e and evm"            # only EVM e2e tests
hatch run test -m "unit or integration"    # everything except e2e
hatch run test -m "evm and not e2e"        # EVM unit + integration only
hatch run test -m "e2e and (solana or sui)"

# chain a marker selection with a name filter and a path
hatch run test tests/impl/evm -m e2e -k genesis_hash
```

E2E tests load `tests/.test.env` themselves via `python-dotenv`, so Hatch needs
no extra config — just populate `tests/.test.env` with the RPC URLs and
`TEST_1_MNEMONIC` / `TEST_2_MNEMONIC` you want to exercise. Tests whose
required env vars are missing are skipped automatically.

## License

MIT — see [LICENSE](LICENSE).
