Skip to content

Commit d8c4b0d

Browse files
committed
style: apply ruff format to client.py, execution.py, server.py
Add required 2 blank lines between top-level function/class definitions. Fixes CI `ruff format --check` failure.
1 parent 80bf167 commit d8c4b0d

3 files changed

Lines changed: 29 additions & 0 deletions

File tree

src/arcp/_client/client.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,19 @@
3838

3939
_LOG = get_logger("arcp.client")
4040

41+
4142
def _now_iso() -> str:
4243
return datetime.now(UTC).isoformat().replace("+00:00", "Z")
4344

45+
4446
@dataclass(frozen=True)
4547
class AutoAckOptions:
4648
"""Coalesce acks: send `session.ack` every `every_n` events, or every `interval_sec`."""
4749

4850
every_n: int = 100
4951
interval_sec: float = 1.0
5052

53+
5154
class ARCPClient:
5255
"""ARCP client: open/resume a session, submit jobs, observe events."""
5356

@@ -276,4 +279,5 @@ async def close(self, *, reason: str = "client.close") -> None:
276279
async def aclose(self) -> None:
277280
await self.close()
278281

282+
279283
__all__ = ("ARCPClient", "AutoAckOptions")

src/arcp/_messages/execution.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
_AGENT_NAME_RE = re.compile(r"^[a-zA-Z][a-zA-Z0-9._-]*$")
3030
_AGENT_VERSION_RE = re.compile(r"^[a-zA-Z0-9][a-zA-Z0-9._-]*$")
3131

32+
3233
def parse_agent_ref(ref: str) -> tuple[str, str | None]:
3334
"""Parse `name` or `name@version`; raise `ValueError` on malformed input."""
3435
if "@" in ref:
@@ -40,12 +41,15 @@ def parse_agent_ref(ref: str) -> tuple[str, str | None]:
4041
raise ValueError(f"invalid agent name: {ref!r}")
4142
return ref, None
4243

44+
4345
def format_agent_ref(name: str, version: str | None) -> str:
4446
"""Inverse of `parse_agent_ref`."""
4547
return f"{name}@{version}" if version else name
4648

49+
4750
_BUDGET_AMOUNT_RE = re.compile(r"^([A-Za-z][A-Za-z0-9]{0,9}):([0-9]+(?:\.[0-9]+)?)$")
4851

52+
4953
def parse_budget_amount(amount: str) -> tuple[str, Decimal]:
5054
"""Parse `currency:decimal`; raise `ValueError` on malformed input."""
5155
m = _BUDGET_AMOUNT_RE.match(amount)
@@ -60,12 +64,15 @@ def parse_budget_amount(amount: str) -> tuple[str, Decimal]:
6064
raise ValueError("budget amount must be non-negative")
6165
return currency, value
6266

67+
6368
def format_budget_amount(currency: str, value: Decimal) -> str:
6469
return f"{currency}:{value}"
6570

71+
6672
Lease = dict[str, list[str]]
6773
"""A lease maps capability namespace to a list of glob patterns."""
6874

75+
6976
def _ensure_utc_iso8601(value: str) -> datetime:
7077
"""Parse a strict UTC ISO 8601 timestamp (`Z` or `+00:00` only)."""
7178
if not isinstance(value, str):
@@ -79,6 +86,7 @@ def _ensure_utc_iso8601(value: str) -> datetime:
7986
raise ValueError(f"expires_at must be UTC: {value!r}")
8087
return dt
8188

89+
8290
class LeaseConstraints(BaseModel):
8391
"""Optional lease constraints (v1.1 §9.5)."""
8492

@@ -93,6 +101,7 @@ def _check_expires_at(cls, v: str | None) -> str | None:
93101
_ensure_utc_iso8601(v)
94102
return v
95103

104+
96105
class JobSubmitPayload(BaseModel):
97106
model_config = ConfigDict(extra="allow")
98107
agent: str
@@ -110,6 +119,7 @@ def _check_agent(cls, v: str) -> str:
110119
parse_agent_ref(v)
111120
return v
112121

122+
113123
class CredentialConstraintsPayload(BaseModel):
114124
model_config = ConfigDict(extra="allow", populate_by_name=True)
115125
cost_budget: tuple[str, ...] = Field(default=(), alias="cost.budget")
@@ -140,11 +150,13 @@ class JobAcceptedPayload(BaseModel):
140150
trace_id: str | None = None
141151
credentials: tuple[CredentialPayload, ...] | None = None
142152

153+
143154
class JobCancelPayload(BaseModel):
144155
model_config = ConfigDict(extra="allow")
145156
reason: str
146157
code: str | None = None
147158

159+
148160
class JobEventPayload(BaseModel):
149161
model_config = ConfigDict(extra="allow")
150162
kind: str
@@ -158,6 +170,7 @@ def _check_kind(cls, v: str) -> str:
158170
return v
159171
raise ValueError(f"unknown event kind: {v!r}")
160172

173+
161174
class JobResultPayload(BaseModel):
162175
model_config = ConfigDict(extra="allow")
163176
final_status: Literal["success", "cancelled", "timed_out"]
@@ -167,6 +180,7 @@ class JobResultPayload(BaseModel):
167180
summary: str | None = None
168181
completed_at: str
169182

183+
170184
class JobErrorPayload(BaseModel):
171185
model_config = ConfigDict(extra="allow")
172186
final_status: Literal["error"] = "error"
@@ -176,12 +190,14 @@ class JobErrorPayload(BaseModel):
176190
completed_at: str
177191
details: dict[str, Any] | None = None
178192

193+
179194
class JobSubscribePayload(BaseModel):
180195
model_config = ConfigDict(extra="allow")
181196
job_id: str
182197
history: bool = False
183198
from_event_seq: int | None = Field(default=None, ge=0)
184199

200+
185201
class JobSubscribedPayload(BaseModel):
186202
model_config = ConfigDict(extra="allow")
187203
request_id: str
@@ -194,10 +210,12 @@ class JobSubscribedPayload(BaseModel):
194210
subscribed_from: int = 0
195211
replayed: int = 0
196212

213+
197214
class JobUnsubscribePayload(BaseModel):
198215
model_config = ConfigDict(extra="allow")
199216
job_id: str
200217

218+
201219
__all__ = (
202220
"EVENT_KINDS",
203221
"ArtifactRefBody",

src/arcp/_runtime/server.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,14 @@
4242

4343
_LOG = get_logger("arcp.runtime.server")
4444

45+
4546
def _now_iso() -> str:
4647
return datetime.now(UTC).isoformat().replace("+00:00", "Z")
4748

49+
4850
JobAuthorizationPolicy = Callable[["AuthorizationContext"], bool]
4951

52+
5053
@dataclass(frozen=True)
5154
class AuthorizationContext:
5255
"""Inputs to the per-job authorization policy used by `list_jobs` and `subscribe`."""
@@ -55,17 +58,20 @@ class AuthorizationContext:
5558
job: Job
5659
operation: str # "list" | "subscribe" | "cancel"
5760

61+
5862
def _default_authz_policy(ctx: AuthorizationContext) -> bool:
5963
"""Same-principal default: requester must own the job (§14)."""
6064
return ctx.job.submitter_principal == ctx.requester_principal
6165

66+
6267
@dataclass
6368
class _AgentRegistration:
6469
name: str
6570
versions: dict[str, Agent] = field(default_factory=dict)
6671
default_version: str | None = None
6772
bare: Agent | None = None # registered without a version
6873

74+
6975
class ARCPRuntime:
7076
"""Server-side runtime: register agents, accept transports, dispatch envelopes."""
7177

@@ -220,6 +226,7 @@ async def close(self) -> None:
220226
await task
221227
await self.event_log.close()
222228

229+
223230
from . import _handlers # noqa: E402
224231

225232
_DISPATCH_TABLE: dict[

0 commit comments

Comments
 (0)