From b48ed285e5267de783db465f026daf1b00262d08 Mon Sep 17 00:00:00 2001 From: Jamie Hill-Daniel Date: Mon, 2 Feb 2026 15:55:42 +0000 Subject: [PATCH] chore(client): Update doctest and API for working examples --- Cargo.lock | 12 ++++++++++ Cargo.toml | 1 + client/Cargo.toml | 10 ++++++++ client/example/Cargo.toml | 4 ---- client/example/src/blocking.rs | 13 +++++----- client/example/src/main.rs | 2 +- client/example/src/nonblocking.rs | 13 +++++----- client/src/lib.rs | 24 +++++++++++-------- .../basic-1/programs/basic-1/Cargo.toml | 2 ++ .../basic-1/programs/basic-1/src/lib.rs | 3 +++ 10 files changed, 57 insertions(+), 27 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c575f26f78..97208b1fc8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -251,19 +251,24 @@ version = "0.32.1" dependencies = [ "anchor-lang", "anyhow", + "basic-1", "futures", "regex", "serde", "solana-account", "solana-account-decoder", "solana-commitment-config", + "solana-hash", "solana-instruction", + "solana-keypair", "solana-program", + "solana-pubkey 4.0.0", "solana-pubsub-client", "solana-rpc-client", "solana-rpc-client-api", "solana-signature", "solana-signer", + "solana-system-interface", "solana-transaction", "thiserror 1.0.66", "tokio", @@ -641,6 +646,13 @@ version = "1.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" +[[package]] +name = "basic-1" +version = "0.1.0" +dependencies = [ + "anchor-lang", +] + [[package]] name = "bincode" version = "1.3.3" diff --git a/Cargo.toml b/Cargo.toml index e7f7eea0df..431dfcda1a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,6 +25,7 @@ solana-cpi = "3.0.0" solana-define-syscall = "3.0.0" solana-faucet = "3.0.0" solana-feature-gate-interface = "3.0.0" +solana-hash = "3.0.0" solana-instruction = "3.0.0" solana-instructions-sysvar = "3.0.0" solana-invoke = "0.5.0" diff --git a/client/Cargo.toml b/client/Cargo.toml index 229f197b54..88be3465c1 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -24,14 +24,24 @@ serde = { version = "1", features = ["derive"] } solana-account.workspace = true solana-account-decoder.workspace = true solana-commitment-config.workspace = true +solana-hash.workspace = true solana-instruction.workspace = true +solana-keypair.workspace = true solana-program.workspace = true +solana-pubkey.workspace = true solana-pubsub-client.workspace = true solana-rpc-client.workspace = true solana-rpc-client-api.workspace = true solana-signature.workspace = true solana-signer.workspace = true +solana-system-interface.workspace = true solana-transaction.workspace = true thiserror = "1" tokio = { version = "1", features = ["rt", "sync"] } url = "2" + +[dev-dependencies] +solana-pubkey.workspace = true +my-program = { path = "../examples/tutorial/basic-1/programs/basic-1", package = "basic-1", features = [ + "no-entrypoint", +] } diff --git a/client/example/Cargo.toml b/client/example/Cargo.toml index d4e0436b76..920f74c3b6 100644 --- a/client/example/Cargo.toml +++ b/client/example/Cargo.toml @@ -19,8 +19,4 @@ events = { path = "../../tests/events/programs/events", features = ["no-entrypoi anyhow = "1.0.32" clap = { version = "4.2.4", features = ["derive"] } shellexpand = "2.1.0" -solana-commitment-config = "3.0.0" -solana-sdk = "3.0.0" -solana-signer = "3.0.0" -solana-system-interface = "2.0.0" tokio = { version = "1", features = ["full"] } diff --git a/client/example/src/blocking.rs b/client/example/src/blocking.rs index de77d90d57..960aca6180 100644 --- a/client/example/src/blocking.rs +++ b/client/example/src/blocking.rs @@ -1,12 +1,13 @@ +use anchor_client::solana_commitment_config::CommitmentConfig; +use anchor_client::solana_keypair::{read_keypair_file, Keypair}; +use anchor_client::solana_pubkey::Pubkey; +use anchor_client::solana_signer::Signer; +use anchor_client::solana_system_interface::{ + instruction as system_instruction, program as system_program, +}; use anchor_client::{Client, Cluster}; use anyhow::Result; use clap::Parser; -use solana_commitment_config::CommitmentConfig; -use solana_sdk::pubkey::Pubkey; -use solana_sdk::signature::read_keypair_file; -use solana_sdk::signature::{Keypair, Signer}; -use solana_system_interface::instruction as system_instruction; -use solana_system_interface::program as system_program; // The `accounts` and `instructions` modules are generated by the framework. use basic_2::accounts as basic_2_accounts; use basic_2::instruction as basic_2_instruction; diff --git a/client/example/src/main.rs b/client/example/src/main.rs index abc0048558..8974ebc6cb 100644 --- a/client/example/src/main.rs +++ b/client/example/src/main.rs @@ -1,6 +1,6 @@ use anyhow::Result; use clap::Parser; -use solana_sdk::pubkey::Pubkey; +use anchor_client::solana_pubkey::Pubkey; #[cfg(not(feature = "async"))] mod blocking; diff --git a/client/example/src/nonblocking.rs b/client/example/src/nonblocking.rs index 535146e18e..2e188df39c 100644 --- a/client/example/src/nonblocking.rs +++ b/client/example/src/nonblocking.rs @@ -1,12 +1,13 @@ +use anchor_client::solana_commitment_config::CommitmentConfig; +use anchor_client::solana_keypair::{read_keypair_file, Keypair}; +use anchor_client::solana_pubkey::Pubkey; +use anchor_client::solana_signer::Signer; +use anchor_client::solana_system_interface::{ + instruction as system_instruction, program as system_program, +}; use anchor_client::{Client, Cluster}; use anyhow::Result; use clap::Parser; -use solana_commitment_config::CommitmentConfig; -use solana_sdk::pubkey::Pubkey; -use solana_sdk::signature::read_keypair_file; -use solana_sdk::signature::{Keypair, Signer}; -use solana_system_interface::instruction as system_instruction; -use solana_system_interface::program as system_program; // The `accounts` and `instructions` modules are generated by the framework. use basic_2::accounts as basic_2_accounts; use basic_2::instruction as basic_2_instruction; diff --git a/client/src/lib.rs b/client/src/lib.rs index ebcf72e4ff..3f2728d854 100644 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -6,15 +6,13 @@ //! //! A simple example that creates a client, sends a transaction and fetches an account: //! -//! ```ignore +//! ```no_run //! use std::rc::Rc; //! //! use anchor_client::{ -//! solana_sdk::{ -//! signature::{read_keypair_file, Keypair}, -//! signer::Signer, -//! system_program, -//! }, +//! solana_keypair::{read_keypair_file, Keypair}, +//! solana_signer::Signer, +//! solana_system_interface::program as system_program, //! Client, Cluster, //! }; //! use my_program::{accounts, instruction, MyAccount}; @@ -33,16 +31,16 @@ //! .request() //! .accounts(accounts::Initialize { //! my_account: my_account_kp.pubkey(), -//! payer: program.payer(), +//! user: program.payer(), //! system_program: system_program::ID, //! }) -//! .args(instruction::Initialize { field: 42 }) +//! .args(instruction::Initialize { data: 42 }) //! .signer(&my_account_kp) //! .send()?; //! //! // Fetch account //! let my_account: MyAccount = program.account(my_account_kp.pubkey())?; -//! assert_eq!(my_account.field, 42); +//! assert_eq!(my_account.data, 42); //! //! Ok(()) //! } @@ -76,8 +74,8 @@ use futures::{Future, StreamExt}; use regex::Regex; use solana_account_decoder::{UiAccount, UiAccountEncoding}; use solana_commitment_config::CommitmentConfig; +use solana_hash::Hash; use solana_instruction::{AccountMeta, Instruction}; -use solana_program::hash::Hash; use solana_pubsub_client::nonblocking::pubsub_client::{PubsubClient, PubsubClientError}; use solana_rpc_client::nonblocking::rpc_client::RpcClient as AsyncRpcClient; use solana_rpc_client_api::{ @@ -112,7 +110,13 @@ pub use anchor_lang; pub use cluster::Cluster; #[cfg(feature = "async")] pub use nonblocking::ThreadSafeSigner; + pub use solana_account_decoder; +pub use solana_commitment_config; +pub use solana_keypair; +pub use solana_pubkey; +pub use solana_signer; +pub use solana_system_interface; mod cluster; diff --git a/examples/tutorial/basic-1/programs/basic-1/Cargo.toml b/examples/tutorial/basic-1/programs/basic-1/Cargo.toml index ffa64c0088..181e50eeaf 100644 --- a/examples/tutorial/basic-1/programs/basic-1/Cargo.toml +++ b/examples/tutorial/basic-1/programs/basic-1/Cargo.toml @@ -12,6 +12,8 @@ name = "basic_1" no-entrypoint = [] cpi = ["no-entrypoint"] idl-build = ["anchor-lang/idl-build"] +anchor-debug = ["anchor-lang/anchor-debug"] +no-log-ix-name = [] [dependencies] anchor-lang = { path = "../../../../../lang" } diff --git a/examples/tutorial/basic-1/programs/basic-1/src/lib.rs b/examples/tutorial/basic-1/programs/basic-1/src/lib.rs index b2d346ea97..a22e21111d 100644 --- a/examples/tutorial/basic-1/programs/basic-1/src/lib.rs +++ b/examples/tutorial/basic-1/programs/basic-1/src/lib.rs @@ -1,3 +1,6 @@ +// FIXME: This lint is being triggered somewhere in macro output +#![expect(clippy::diverging_sub_expression)] + use anchor_lang::prelude::*; declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");