No project description provided
Project description
Comprehensive Solana Diagnostic Tool
A Python tool for comprehensive diagnostics of Solana nodes and networks.
Installation
pip install comprehensive-solana-diagnostic
Usage
solana-diagnostic [options]
Features
- Network status monitoring
- Validator performance analysis
- RPC endpoint health checks
- Detailed error reporting
Project Structure
comprehensive_solana_diagnostic/
├── comprehensive_solana_diagnostic/
│ ├── __init__.py
│ ├── comprehensive_solana_diagnostic.py
│ └── network_handler.py
├── tests/
│ ├── __init__.py
│ ├── test_network_handler.py
│ └── test_main.py
├── setup.py
├── README.md
├── CHANGELOG.md
└── requirements.txt
This shows the main project structure with the core implementation, tests, and configuration files.
Example Output
$ python comprehensive_solana_diagnostic.py
🔍 Comprehensive Solana Library Diagnostic
==================================================
📋 Python Environment:
Version: 3.12.3 (main, Feb 4 2025, 14:48:35) [GCC 13.3.0]
Executable: /mnt/c/Users/Shane Holmes/CascadeProjects/windsurf-project/comprehensive_solana_diagnostic/venv/bin/python
Path: ['/mnt/c/Users/Shane Holmes/CascadeProjects/windsurf-project/comprehensive_solana_diagnostic/comprehensive_solana_diagnostic', '/usr/lib/python312.zip', '/usr/lib/python3.12', '/usr/lib/python3.12/lib-dynload', '/mnt/c/Users/Shane Holmes/CascadeProjects/windsurf-project/comprehensive_solana_diagnostic/venv/lib/python3.12/site-packages', '/mnt/c/Users/Shane Holmes/CascadeProjects/windsurf-project/soleco/backend']
🔬 Solana Library Inspection:
Solana Library Details:
{
"name": "solana",
"file": "/mnt/c/Users/Shane Holmes/CascadeProjects/windsurf-project/comprehensive_solana_diagnostic/venv/lib/python3.12/site-packages/solana/__init__.py",
"version": "N/A",
"doc": null,
"attributes": [
"__builtins__",
"__cached__",
"__doc__",
"__file__",
"__loader__",
"__name__",
"__package__",
"__path__",
"__spec__",
"sys"
]
}
Solana Library Structure:
{
"root_contents": [
"constants.py",
"exceptions.py",
"py.typed",
"rpc",
"utils",
"vote_program.py",
"_layouts",
"__init__.py",
"__pycache__"
],
"rpc_contents": [
"api.py",
"async_api.py",
"commitment.py",
"core.py",
"providers",
"types.py",
"websocket_api.py",
"__init__.py",
"__pycache__"
]
}
🌐 Solana RPC Connection Test:
{
"connection_successful": true,
"rpc_url": "https://api.mainnet-beta.solana.com",
"results": {
"cluster_nodes": 6030,
"version": "GetVersionResp(RpcVersionInfo(2.1.16))",
"epoch_info": "GetEpochInfoResp(EpochInfo(EpochInfo { epoch: 761, slot_index: 85967, slots_in_epoch: 432000, absolute_slot: 328837967, block_height: 307090328, transaction_count: Some(386760181997) }))"
}
}
📦 Dependency Information:
Solders Details:
{
"name": "solders",
"file": "/mnt/c/Users/Shane Holmes/CascadeProjects/windsurf-project/comprehensive_solana_diagnostic/venv/lib/python3.12/site-packages/solders/__init__.py",
"version": "0.26.0",
"doc": null,
"attributes": [
"__all__",
"__all_core",
"__builtins__",
"__cached__",
"__ctxlib",
"__doc__",
"__file__",
"__has_litesvm",
"__has_ring",
"__loader__",
"__name__",
"__package__",
"__path__",
"__ring_modules",
"__spec__",
"__version__",
"__with_ring_modules",
"account",
"account_decoder",
"address_lookup_table_account",
"clock",
"commitment_config",
"compute_budget",
"epoch_info",
"epoch_rewards",
"epoch_schedule",
"errors",
"hash",
"instruction",
"keypair",
"litesvm",
"message",
"null_signer",
"presigner",
"pubkey",
"rent",
"rpc",
"signature",
"slot_history",
"solders",
"stake_history",
"system_program",
"sysvar",
"token",
"transaction",
"transaction_metadata",
"transaction_status"
]
}
Httpx Details:
{
"name": "httpx",
"file": "/mnt/c/Users/Shane Holmes/CascadeProjects/windsurf-project/comprehensive_solana_diagnostic/venv/lib/python3.12/site-packages/httpx/__init__.py",
"version": "0.28.1",
"doc": null,
"attributes": [
"ASGITransport",
"AsyncBaseTransport",
"AsyncByteStream",
"AsyncClient",
"AsyncHTTPTransport",
"Auth",
"BaseTransport",
"BasicAuth",
"ByteStream",
"Client",
"CloseError",
"ConnectError",
"ConnectTimeout",
"CookieConflict",
"Cookies",
"DecodingError",
"DigestAuth",
"HTTPError",
"HTTPStatusError",
"HTTPTransport",
"Headers",
"InvalidURL",
"Limits",
"LocalProtocolError",
"MockTransport",
"NetRCAuth",
"NetworkError",
"PoolTimeout",
"ProtocolError",
"Proxy",
"ProxyError",
"QueryParams",
"ReadError",
"ReadTimeout",
"RemoteProtocolError",
"Request",
"RequestError",
"RequestNotRead",
"Response",
"ResponseNotRead",
"StreamClosed",
"StreamConsumed",
"StreamError",
"SyncByteStream",
"Timeout",
"TimeoutException",
"TooManyRedirects",
"TransportError",
"URL",
"USE_CLIENT_DEFAULT",
"UnsupportedProtocol",
"WSGITransport",
"WriteError",
"WriteTimeout",
"__all__",
"__builtins__",
"__cached__",
"__description__",
"__doc__",
"__file__",
"__loader__",
"__locals",
"__name",
"__name__",
"__package__",
"__path__",
"__spec__",
"__title__",
"__version__",
"_api",
"_auth",
"_client",
"_config",
"_content",
"_decoders",
"_exceptions",
"_main",
"_models",
"_multipart",
"_status_codes",
"_transports",
"_types",
"_urlparse",
"_urls",
"_utils",
"codes",
"create_ssl_context",
"delete",
"get",
"head",
"main",
"options",
"patch",
"post",
"put",
"request",
"stream"
]
}
Construct Details:
{
"name": "construct",
"file": "/mnt/c/Users/Shane Holmes/CascadeProjects/windsurf-project/comprehensive_solana_diagnostic/venv/lib/python3.12/site-packages/construct/__init__.py",
"version": "2.10.68",
"doc": "\nConstruct 2 -- Parsing Made Fun\n\nHomepage:\n\thttps://github.com/construct/construct\n http://construct.readthedocs.org\n\nHands-on example:\n >>> from construct import *\n >>> s = Struct(\n ... \"a\" / Byte,\n ... \"b\" / Short,\n ... )\n >>> print s.parse(b\"\\x01\\x02\\x03\")\n Container:\n a = 1\n b = 515\n >>> s.build(Container(a=1, b=0x0203))\n b\"\\x01\\x02\\x03\"\n",
"attributes": [
"AdaptationError",
"Adapter",
"Aligned",
"AlignedStruct",
"Array",
"BinExpr",
"Bit",
"BitStruct",
"BitsInteger",
"BitsSwapped",
"BitwisableString",
"Bitwise",
"Byte",
"ByteSwapped",
"Bytes",
"BytesInteger",
"Bytewise",
"CString",
"CancelParsing",
"Check",
"CheckError",
"Checksum",
"ChecksumError",
"CodeGen",
"Compiled",
"Compressed",
"CompressedLZ4",
"Computed",
"Const",
"ConstError",
"Construct",
"ConstructError",
"Container",
"Debugger",
"Default",
"Double",
"Enum",
"EnumInteger",
"EnumIntegerString",
"Error",
"ExplicitError",
"ExprAdapter",
"ExprMixin",
"ExprSymmetricAdapter",
"ExprValidator",
"Filter",
"FixedSized",
"Flag",
"FlagsEnum",
"Float16b",
"Float16l",
"Float16n",
"Float32b",
"Float32l",
"Float32n",
"Float64b",
"Float64l",
"Float64n",
"FocusedSeq",
"FormatField",
"FormatFieldError",
"FuncPath",
"GreedyBytes",
"GreedyRange",
"GreedyString",
"Half",
"Hex",
"HexDisplayedBytes",
"HexDisplayedDict",
"HexDisplayedInteger",
"HexDump",
"HexDumpDisplayedBytes",
"HexDumpDisplayedDict",
"If",
"IfThenElse",
"Index",
"IndexFieldError",
"Indexing",
"Int",
"Int16sb",
"Int16sl",
"Int16sn",
"Int16ub",
"Int16ul",
"Int16un",
"Int24sb",
"Int24sl",
"Int24sn",
"Int24ub",
"Int24ul",
"Int24un",
"Int32sb",
"Int32sl",
"Int32sn",
"Int32ub",
"Int32ul",
"Int32un",
"Int64sb",
"Int64sl",
"Int64sn",
"Int64ub",
"Int64ul",
"Int64un",
"Int8sb",
"Int8sl",
"Int8sn",
"Int8ub",
"Int8ul",
"Int8un",
"IntegerError",
"KsyGen",
"Lazy",
"LazyArray",
"LazyBound",
"LazyContainer",
"LazyListContainer",
"LazyStruct",
"ListContainer",
"Long",
"Mapping",
"MappingError",
"NamedTuple",
"NamedTupleError",
"Nibble",
"NoneOf",
"NullStripped",
"NullTerminated",
"Numpy",
"ONWINDOWS",
"Octet",
"OneOf",
"Optional",
"PY",
"PY2",
"PY3",
"PYPY",
"Padded",
"PaddedString",
"Padding",
"PaddingError",
"PascalString",
"Pass",
"Path",
"Path2",
"Peek",
"Pickled",
"Pointer",
"Prefixed",
"PrefixedArray",
"Probe",
"ProcessRotateLeft",
"ProcessXor",
"RangeError",
"RawCopy",
"RawCopyError",
"Rebuffered",
"RebufferedBytesIO",
"Rebuild",
"Renamed",
"RepeatError",
"RepeatUntil",
"RestreamData",
"Restreamed",
"RestreamedBytesIO",
"RotationError",
"Seek",
"Select",
"SelectError",
"Sequence",
"Short",
"Single",
"SizeofError",
"Slicing",
"StopFieldError",
"StopIf",
"StreamError",
"StringEncoded",
"StringError",
"Struct",
"Subconstruct",
"Switch",
"SwitchError",
"SymmetricAdapter",
"Tell",
"Terminated",
"TerminatedError",
"Timestamp",
"TimestampAdapter",
"TimestampError",
"Transformed",
"Tunnel",
"UniExpr",
"Union",
"UnionError",
"ValidationError",
"Validator",
"VarInt",
"ZigZag",
"__all__",
"__author__",
"__builtins__",
"__cached__",
"__doc__",
"__file__",
"__loader__",
"__name__",
"__package__",
"__path__",
"__spec__",
"__version__",
"abs_",
"binascii",
"bits2bytes",
"bits2integer",
"byte2int",
"bytes2bits",
"bytes2integer",
"bytes2integers",
"bytes2str",
"bytestringtype",
"collections",
"core",
"debug",
"encodingunit",
"evaluate",
"expr",
"extractfield",
"globalPrintFalseFlags",
"globalPrintFullStrings",
"hashlib",
"hexdump",
"hexlify",
"hexundump",
"hyphenatedict",
"hyphenatelist",
"importlib",
"inspect",
"int2byte",
"integer2bits",
"integer2bytes",
"integers2bytes",
"integertypes",
"io",
"itertools",
"len_",
"lib",
"list_",
"max_",
"min_",
"native",
"obj_",
"operator",
"opnames",
"os",
"pdb",
"pickle",
"possiblestringencodings",
"release_date",
"reprstring",
"setGlobalPrintFalseFlags",
"setGlobalPrintFullStrings",
"setGlobalPrintPrivateEntries",
"singleton",
"str2bytes",
"stream_iseof",
"stream_read",
"stream_read_entire",
"stream_seek",
"stream_size",
"stream_tell",
"stream_write",
"stringtypes",
"struct",
"sum_",
"swapbitsinbytes",
"swapbytes",
"swapbytesinbits",
"sys",
"this",
"traceback",
"trimstring",
"unhexlify",
"unicodestringtype",
"version",
"version_string"
]
}
🔧 Solana-Specific Diagnostics:
Solana Core Components:
Client Class: <class 'solana.rpc.api.Client'>
PublicKey/Pubkey Class: <class 'solders.pubkey.Pubkey'>
Transaction Class: <class 'solders.transaction.Transaction'>
Method Signatures:
Client.__init__: (self, endpoint: 'Optional[str]' = None, commitment: 'Optional[Commitment]' = None, timeout: 'float' = 10, extra_headers: 'Optional[Dict[str, str]]' = None, proxy: 'Optional[str]' = None)
PublicKey.__init__: (self, /, *args, **kwargs)
Transaction.__init__: (self, /, *args, **kwargs)
✅ Diagnostic Complete
Network status for https://api.mainnet-beta.solana.com
This shows the comprehensive diagnostic output the tool provides.
## Running Tests
Install test dependencies:
```bash
pip install -e .[test]
Run tests with coverage:
pytest
View coverage report:
pytest --cov-report html
License
MIT
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file comprehensive_solana_diagnostic-0.1.4.tar.gz.
File metadata
- Download URL: comprehensive_solana_diagnostic-0.1.4.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9666252a6cb26a031f694041a3b4ddab4ac17a1b09d57581d8f5b455fd0111a5
|
|
| MD5 |
b363a12efdad88f9b63ea60d0dd17e9a
|
|
| BLAKE2b-256 |
476f7d1deca8cdfac69b22745179683c6e6fb73aab2da9bda214d7ab09bdf724
|
File details
Details for the file comprehensive_solana_diagnostic-0.1.4-py3-none-any.whl.
File metadata
- Download URL: comprehensive_solana_diagnostic-0.1.4-py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
629df1a4746e35ee540b1f9306758f510126a245d6388edf462c8f1f9daeefc3
|
|
| MD5 |
702f066655f1072e92565432ad278a81
|
|
| BLAKE2b-256 |
568faa5ed7d0a226aff37756ee08136fd2fc89ae901f21f9d9dc97a0bc21f82a
|