Package: jupiter-python-sdk
🐍 JUPITER PYTHON SDK 🪐📖 IntroductionJupiter Python SDKis a Python library that allows you to use most ofJupiterfeatures.It enables executing swaps, limit orders, DCA, swap pairs, tokens prices, fetching wallet infos, stats, data and more!This library is using packages like:solana-py,solders,anchorpy.There is documentation inside each function, however, you can access to theofficial Jupiter APIfor more information.⚠️ DisclaimerPlease note that I'm not responsible for any loss of funds, damages, or other libailities resulting from the use of this software or any associated services.This tool is provided for educational purposes only and should not be used as financial advice, it is still in expiremental phase so use it at your own risk.✨ Quickstart🛠️ Installationpipinstalljupiter-python-sdk📃 General UsageProviding the private key and RPC client is not mandatory if you only intend to execute functions for retrieving data.Otherwise, this is required, for instance, to open a DCA account or to close one.If you encounterImportError: cannot import name 'sync_native' from 'spl.token.instructionserror when trying to import Jupiter, Jupiter_DCA from jupiter_python_sdk.jupiter, follow these steps:Go tohttps://github.com/michaelhly/solana-py/tree/master/src/spl/tokenand downloadinstructions.pyIn your packages folder, replacespl/token/instructions.pywith the one you just downloaded.Here is a code snippet on how to use the SDKimportbase58importbase64importjsonfromsoldersimportmessagefromsolders.pubkeyimportPubkeyfromsolders.keypairimportKeypairfromsolders.transactionimportVersionedTransactionfromsolana.rpc.typesimportTxOptsfromsolana.rpc.async_apiimportAsyncClientfromsolana.rpc.commitmentimportProcessedfromjupiter_python_sdk.jupiterimportJupiter,Jupiter_DCAprivate_key=Keypair.from_bytes(base58.b58decode(os.getenv("PRIVATE-KEY")))# Private key as stringasync_client=AsyncClient("SOLANA-RPC-ENDPOINT-URL")jupiter=Jupiter(async_client,private_key)"""EXECUTE A SWAP"""transaction_data=awaitjupiter.swap(input_mint="So11111111111111111111111111111111111111112",output_mint="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",amount=5_000_000,slippage_bps=1,)# Returns str: serialized transactions to execute the swap.raw_transaction=VersionedTransaction.from_bytes(base64.b64decode(transaction_data))signature=private_key.sign_message(message.to_bytes_versioned(raw_transaction.message))signed_txn=VersionedTransaction.populate(raw_transaction.message,[signature])opts=TxOpts(skip_preflight=False,preflight_commitment=Processed)result=awaitasync_client.send_raw_transaction(txn=bytes(signed_txn),opts=opts)transaction_id=json.loads(result.to_json())['result']print(f"Transaction sent: https://explorer.solana.com/tx/{transaction_id}")"""OPEN LIMIT ORDER"""transaction_data=awaitjupiter.open_order(input_mint=So11111111111111111111111111111111111111112",output_mint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",in_amount=5_000_000,out_amount=100_000,)# Returns dict: {'transaction_data': serialized transactions to create the limit order, 'signature2': signature of the account that will be opened}raw_transaction=VersionedTransaction.from_bytes(base64.b64decode(transaction_data['transaction_data']))signature=private_key.sign_message(message.to_bytes_versioned(raw_transaction.message))signed_txn=VersionedTransaction.populate(raw_transaction.message,[signature,transaction_data['signature2']])opts=TxOpts(skip_preflight=False,preflight_commitment=Processed)result=awaitasync_client.send_raw_transaction(txn=bytes(signed_txn),opts=opts)transaction_id=json.loads(result.to_json())['result']print(f"Transaction sent: https://explorer.solana.com/tx/{transaction_id}")"""CREATE DCA ACCOUNT"""create_dca_account=awaitjupiter.dca.create_dca(input_mint=Pubkey.from_string("So11111111111111111111111111111111111111112"),output_mint=Pubkey.from_string("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),total_in_amount=5_000_000,in_amount_per_cycle=100_000,cycle_frequency=60,min_out_amount_per_cycle=0,max_out_amount_per_cycle=0,start=0)# Returns DCA Account Pubkey and transaction hash."""CLOSE DCA ACCOUNT"""close_dca_account=awaitjupiter.dca.close_dca(dca_pubkey=Pubkey.from_string("45iYdjmFUHSJCQHnNpWNFF9AjvzRcsQUP9FDBvJCiNS1"))# Returns transaction hash.📜 All available features-quote-swap-open_order-cancel_orders-create_dca-close_dca-fetch_user_dca_accounts-fetch_dca_account_fills_history-get_available_dca_tokens-fetch_dca_data-query_open_orders-query_orders_history-query_trades_history-get_jupiter_stats-get_token_price-get_indexed_route_map-get_tokens_list-get_all_tickers-get_all_swap_pairs-get_swap_pairs-get_token_stats_by_date-program_id_to_label📝 TO-DOBridge 🌉Perpetual 💸🤝 ContributionsIf you are interesting in contributing, fork the repository and submit a pull request in order to merge your improvements into the main repository.Contact me for any inquiry, I will reach you as soon as possible.👑 DonationsThis project doesn't include platform fees. If you find value in it and would like to support its development, your donations are greatly appreciated.SOLANA ADDRESSAyWu89SjZBW1MzkxiREmgtyMKxSkS1zVy8Uo23RyLphX