Skip to content

Commit d91b889

Browse files
committed
farmer
1 parent 70fbd21 commit d91b889

File tree

4 files changed

+93
-4
lines changed

4 files changed

+93
-4
lines changed

chia/apis/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
from __future__ import annotations
22

33
from chia.apis.api_protocol_registry import ApiProtocolRegistry
4+
from chia.apis.farmer_stub import FarmerApiStub
45
from chia.apis.harvester_stub import HarvesterApiStub
56
from chia.apis.timelord_stub import TimelordApiStub
67

7-
__all__ = ["ApiProtocolRegistry", "HarvesterApiStub", "TimelordApiStub"]
8+
__all__ = ["ApiProtocolRegistry", "FarmerApiStub", "HarvesterApiStub", "TimelordApiStub"]

chia/apis/api_protocol_registry.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from __future__ import annotations
22

3+
from chia.apis.farmer_stub import FarmerApiStub
34
from chia.apis.harvester_stub import HarvesterApiStub
45
from chia.apis.timelord_stub import TimelordApiStub
5-
from chia.farmer.farmer_api import FarmerAPI
66
from chia.full_node.full_node_api import FullNodeAPI
77
from chia.introducer.introducer_api import IntroducerAPI
88
from chia.protocols.outbound_message import NodeType
@@ -14,6 +14,6 @@
1414
NodeType.WALLET: WalletNodeAPI,
1515
NodeType.INTRODUCER: IntroducerAPI,
1616
NodeType.TIMELORD: TimelordApiStub,
17-
NodeType.FARMER: FarmerAPI,
17+
NodeType.FARMER: FarmerApiStub,
1818
NodeType.HARVESTER: HarvesterApiStub,
1919
}

chia/apis/farmer_stub.py

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
from __future__ import annotations
2+
3+
import logging
4+
from typing import TYPE_CHECKING, ClassVar, Optional, cast
5+
6+
if TYPE_CHECKING:
7+
from chia.server.api_protocol import ApiProtocol
8+
9+
# Minimal imports to avoid circular dependencies
10+
from chia.protocols import farmer_protocol, harvester_protocol
11+
from chia.protocols.harvester_protocol import (
12+
PlotSyncDone,
13+
PlotSyncPathList,
14+
PlotSyncPlotList,
15+
PlotSyncStart,
16+
RespondPlots,
17+
)
18+
from chia.protocols.outbound_message import Message
19+
from chia.server.api_protocol import ApiMetadata
20+
from chia.server.ws_connection import WSChiaConnection
21+
22+
23+
class FarmerApiStub:
24+
"""Lightweight API stub for FarmerAPI to break circular dependencies."""
25+
26+
if TYPE_CHECKING:
27+
_protocol_check: ClassVar[ApiProtocol] = cast("FarmerApiStub", None)
28+
29+
log: logging.Logger
30+
metadata: ClassVar[ApiMetadata] = ApiMetadata()
31+
32+
def ready(self) -> bool:
33+
"""Check if the farmer is ready."""
34+
return True
35+
36+
@metadata.request(peer_required=True)
37+
async def new_proof_of_space(
38+
self, new_proof_of_space: harvester_protocol.NewProofOfSpace, peer: WSChiaConnection
39+
) -> None:
40+
"""Handle new proof of space from harvester."""
41+
42+
@metadata.request()
43+
async def respond_signatures(self, response: harvester_protocol.RespondSignatures) -> None:
44+
"""Handle signature response from harvester."""
45+
46+
@metadata.request()
47+
async def new_signage_point(self, new_signage_point: farmer_protocol.NewSignagePoint) -> None:
48+
"""Handle new signage point from full node."""
49+
50+
@metadata.request()
51+
async def request_signed_values(self, full_node_request: farmer_protocol.RequestSignedValues) -> Optional[Message]:
52+
"""Handle request for signed values from full node."""
53+
return None
54+
55+
@metadata.request(peer_required=True)
56+
async def farming_info(self, request: farmer_protocol.FarmingInfo, peer: WSChiaConnection) -> None:
57+
"""Handle farming info from full node."""
58+
59+
@metadata.request(peer_required=True)
60+
async def respond_plots(self, _: RespondPlots, peer: WSChiaConnection) -> None:
61+
"""Handle plot response from harvester."""
62+
63+
@metadata.request(peer_required=True)
64+
async def plot_sync_start(self, message: PlotSyncStart, peer: WSChiaConnection) -> None:
65+
"""Handle plot sync start from harvester."""
66+
67+
@metadata.request(peer_required=True)
68+
async def plot_sync_loaded(self, message: PlotSyncPlotList, peer: WSChiaConnection) -> None:
69+
"""Handle plot sync loaded from harvester."""
70+
71+
@metadata.request(peer_required=True)
72+
async def plot_sync_removed(self, message: PlotSyncPathList, peer: WSChiaConnection) -> None:
73+
"""Handle plot sync removed from harvester."""
74+
75+
@metadata.request(peer_required=True)
76+
async def plot_sync_invalid(self, message: PlotSyncPathList, peer: WSChiaConnection) -> None:
77+
"""Handle plot sync invalid from harvester."""
78+
79+
@metadata.request(peer_required=True)
80+
async def plot_sync_keys_missing(self, message: PlotSyncPathList, peer: WSChiaConnection) -> None:
81+
"""Handle plot sync keys missing from harvester."""
82+
83+
@metadata.request(peer_required=True)
84+
async def plot_sync_duplicates(self, message: PlotSyncPathList, peer: WSChiaConnection) -> None:
85+
"""Handle plot sync duplicates from harvester."""
86+
87+
@metadata.request(peer_required=True)
88+
async def plot_sync_done(self, message: PlotSyncDone, peer: WSChiaConnection) -> None:
89+
"""Handle plot sync done from harvester."""

tach.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ depends_on = [
8888
[[modules]]
8989
path = "chia.apis"
9090
depends_on = [
91-
{ path = "chia.farmer", deprecated = false },
9291
{ path = "chia.introducer", deprecated = false },
9392
{ path = "chia.wallet", deprecated = false },
9493
{ path = "chia.full_node", deprecated = false },

0 commit comments

Comments
 (0)