Skip to content

pyasic

BTMiner Backend

Bases: StockFirmware

Source code in pyasic/miners/backends/btminer.py
class BTMiner(StockFirmware):
    def __new__(cls, ip: str, version: str | None = None):
        bases = cls.__bases__
        bases = bases[1:]

        def get_new(v: str | None):
            if v is None:
                return BTMinerV2
            try:
                semantic = semver.Version(
                    major=int(v[0:4]),
                    minor=int(v[4:6]),
                    patch=int(v[6:8]),
                )
            except ValueError:
                return BTMinerV2
            if semantic > semver.Version(major=2024, minor=11, patch=0):
                return BTMinerV3
            return BTMinerV2

        inject = get_new(version)

        bases = (inject,) + bases

        cls = type(cls.__name__, bases, {})(ip=ip, version=version)
        return cls