diff --git a/docs/API/api.md b/docs/API/api.md index 96a297a4..cda25a4a 100644 --- a/docs/API/api.md +++ b/docs/API/api.md @@ -10,6 +10,7 @@ All API implementations inherit from [`BaseMinerAPI`][pyasic.API.BaseMinerAPI], [`BaseMinerAPI`][pyasic.API.BaseMinerAPI] cannot be instantiated directly, it will raise a `TypeError`. Use these instead - +#### [BFGMiner API][pyasic.API.bfgminer.BFGMinerAPI] #### [BMMiner API][pyasic.API.bmminer.BMMinerAPI] #### [BOSMiner API][pyasic.API.bosminer.BOSMinerAPI] #### [BTMiner API][pyasic.API.btminer.BTMinerAPI] diff --git a/docs/API/bfgminer.md b/docs/API/bfgminer.md new file mode 100644 index 00000000..a63b0de4 --- /dev/null +++ b/docs/API/bfgminer.md @@ -0,0 +1,7 @@ +# pyasic +## BFGMinerAPI +::: pyasic.API.bfgminer.BFGMinerAPI + handler: python + options: + show_root_heading: false + heading_level: 4 diff --git a/docs/index.md b/docs/index.md index b9f7c2f8..3e375d0f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -42,21 +42,27 @@ if __name__ == "__main__":
## Creating miners based on IP -If you already know the IP address of your miner or miners, you can use the [`MinerFactory`][pyasic.miners.miner_factory.MinerFactory] to communicate and identify the miners. -The function [`MinerFactory().get_miner()`][pyasic.miners.miner_factory.MinerFactory.get_miner] will return any miner it found at the IP address specified, or an `UnknownMiner` if it cannot identify the miner. +If you already know the IP address of your miner or miners, you can use the [`MinerFactory`][pyasic.miners.miner_factory.MinerFactory] to communicate and identify the miners, or an abstraction of its functionality, [`get_miner()`][pyasic.miners.miner_factory.MinerFactory.get_miner]. +The function [`get_miner()`][pyasic.miners.miner_factory.MinerFactory.get_miner] will return any miner it found at the IP address specified, or an `UnknownMiner` if it cannot identify the miner. ```python import asyncio # asyncio for handling the async part -from pyasic.miners.miner_factory import MinerFactory # miner factory handles miners creation +from pyasic import get_miner # handles miner creation async def get_miners(): # define async scan function to allow awaiting - # get the miner with miner factory - # miner factory is a singleton, and will always use the same object and cache - # this means you can always call it as MinerFactory().get_miner() - miner_1 = await MinerFactory().get_miner("192.168.1.75") - miner_2 = await MinerFactory().get_miner("192.168.1.76") + # get the miner with the miner factory + # the miner factory is a singleton, and will always use the same object and cache + # this means you can always call it as MinerFactory().get_miner(), or just get_miner() + miner_1 = await get_miner("192.168.1.75") + miner_2 = await get_miner("192.168.1.76") print(miner_1, miner_2) + # can also gather these, since they are async + tasks = [get_miner("192.168.1.75"), get_miner("192.168.1.76")] + miners = await asyncio.gather(*tasks) + print(miners) + + if __name__ == "__main__": asyncio.run(get_miners()) # get the miners asynchronously with asyncio.run() ``` @@ -66,7 +72,7 @@ if __name__ == "__main__": ## Getting data from miners Once you have your miner(s) identified, you will likely want to get data from the miner(s). You can do this using a built in function in each miner called `get_data()`. -This function will return a instance of the dataclass [`MinerData`][pyasic.data.MinerData] with all data it can gather from the miner. +This function will return an instance of the dataclass [`MinerData`][pyasic.data.MinerData] with all data it can gather from the miner. Each piece of data in a [`MinerData`][pyasic.data.MinerData] instance can be referenced by getting it as an attribute, such as [`MinerData().hashrate`][pyasic.data.MinerData]. ```python import asyncio diff --git a/docs/miners/backends/bfgminer.md b/docs/miners/backends/bfgminer.md index 2c83b387..61b6417f 100644 --- a/docs/miners/backends/bfgminer.md +++ b/docs/miners/backends/bfgminer.md @@ -1,7 +1,7 @@ # pyasic ## BFGMiner Backend -::: pyasic.miners.kda._backends.bfgminer.BFGMiner +::: pyasic.miners.backends.bfgminer.BFGMiner handler: python options: show_root_heading: false diff --git a/mkdocs.yml b/mkdocs.yml index b8dc120e..38a61618 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,54 +1,54 @@ site_name: pyasic repo_url: https://github.com/UpstreamData/pyasic nav: - - Introduction: "index.md" - - Miners: - - Supported Miners: "miners/supported_types.md" - - Miner Factory: "miners/miner_factory.md" - - Backends: - - BMMiner: "miners/backends/bmminer.md" - - BOSMiner: "miners/backends/bosminer.md" - - BFGMiner: "miners/backends/bfgminer.md" - - BTMiner: "miners/backends/btminer.md" - - CGMiner: "miners/backends/cgminer.md" - - Hiveon: "miners/backends/hiveon.md" - - Classes: - - Antminer X3: "miners/antminer/X3.md" - - Antminer X5: "miners/antminer/X5.md" - - Antminer X7: "miners/antminer/X7.md" - - Antminer X9: "miners/antminer/X9.md" - - Antminer X15: "miners/antminer/X15.md" - - Antminer X17: "miners/antminer/X17.md" - - Antminer X19: "miners/antminer/X19.md" - - Avalon 7X: "miners/avalonminer/A7X.md" - - Avalon 8X: "miners/avalonminer/A8X.md" - - Avalon 9X: "miners/avalonminer/A9X.md" - - Avalon 10X: "miners/avalonminer/A10X.md" - - Whatsminer M2X: "miners/whatsminer/M2X.md" - - Whatsminer M3X: "miners/whatsminer/M3X.md" - - Whatsminer M5X: "miners/whatsminer/M5X.md" - - Innosilicon T3X: "miners/innosilicon/T3X.md" - - Innosilicon A10X: "miners/innosilicon/A10X.md" - - Goldshell CKX: "miners/goldshell/CKX.md" - - Goldshell HSX: "miners/goldshell/HSX.md" - - Goldshell KDX: "miners/goldshell/KDX.md" - - Network: - - Miner Network: "network/miner_network.md" - - Miner Network Range: "network/miner_network_range.md" - - Dataclasses: - - Miner Data: "data/miner_data.md" - - Error Codes: "data/error_codes.md" - - Miner Config: "config/miner_config.md" - - Advanced: - - Miner APIs: - - Intro: "API/api.md" - - BMMiner: "API/bmminer.md" - - BOSMiner: "API/bosminer.md" - - BTMiner: "API/btminer.md" - - CGMiner: "API/cgminer.md" - - Unknown: "API/unknown.md" - - - Base Miner: "miners/base_miner.md" +- Introduction: "index.md" +- Miners: + - Supported Miners: "miners/supported_types.md" + - Miner Factory: "miners/miner_factory.md" +- Network: + - Miner Network: "network/miner_network.md" + - Miner Network Range: "network/miner_network_range.md" +- Dataclasses: + - Miner Data: "data/miner_data.md" + - Error Codes: "data/error_codes.md" + - Miner Config: "config/miner_config.md" +- Advanced: + - Miner APIs: + - Intro: "API/api.md" + - BFGMiner: "API/bfgminer.md" + - BMMiner: "API/bmminer.md" + - BOSMiner: "API/bosminer.md" + - BTMiner: "API/btminer.md" + - CGMiner: "API/cgminer.md" + - Unknown: "API/unknown.md" + - Backends: + - BMMiner: "miners/backends/bmminer.md" + - BOSMiner: "miners/backends/bosminer.md" + - BFGMiner: "miners/backends/bfgminer.md" + - BTMiner: "miners/backends/btminer.md" + - CGMiner: "miners/backends/cgminer.md" + - Hiveon: "miners/backends/hiveon.md" + - Classes: + - Antminer X3: "miners/antminer/X3.md" + - Antminer X5: "miners/antminer/X5.md" + - Antminer X7: "miners/antminer/X7.md" + - Antminer X9: "miners/antminer/X9.md" + - Antminer X15: "miners/antminer/X15.md" + - Antminer X17: "miners/antminer/X17.md" + - Antminer X19: "miners/antminer/X19.md" + - Avalon 7X: "miners/avalonminer/A7X.md" + - Avalon 8X: "miners/avalonminer/A8X.md" + - Avalon 9X: "miners/avalonminer/A9X.md" + - Avalon 10X: "miners/avalonminer/A10X.md" + - Whatsminer M2X: "miners/whatsminer/M2X.md" + - Whatsminer M3X: "miners/whatsminer/M3X.md" + - Whatsminer M5X: "miners/whatsminer/M5X.md" + - Innosilicon T3X: "miners/innosilicon/T3X.md" + - Innosilicon A10X: "miners/innosilicon/A10X.md" + - Goldshell CKX: "miners/goldshell/CKX.md" + - Goldshell HSX: "miners/goldshell/HSX.md" + - Goldshell KDX: "miners/goldshell/KDX.md" + - Base Miner: "miners/base_miner.md" plugins: diff --git a/pyasic/miners/miner_factory.py b/pyasic/miners/miner_factory.py index c09f6470..5e17d986 100644 --- a/pyasic/miners/miner_factory.py +++ b/pyasic/miners/miner_factory.py @@ -560,7 +560,7 @@ MINER_CLASSES = { class MinerFactory(metaclass=Singleton): - """A factory to handle identification and selection of the proper class of miner""" + """A factory to handle identification and selection of the proper class of miner.""" def __init__(self) -> None: self.miners = {}