- The README and
agg_start()'s failure message no longer say to wait foraggregate-api1.26 on PyPI; it has been there since 1.26.1. A failed start now shows the end of the server's log and nothing else.
agg_start(port, from)runsaggregate-apithroughuvxon127.0.0.1and points the session at it;agg_stop()stops it and restores the previous server. Quitting R stops it too.processxis now imported.- Without uv,
agg_start()gives the install line. Untilaggregate-api1.26 is on PyPI, it fails with uv's reason and asks forfrom, such as a git spec. - Measured on this machine: a cold start from git with an empty uv cache answered in 22 s, a warm start from a checkout in 6 s.
- The first request to the public server now says
agg_start()runs a private local server.
agg_library(database)lists the example library's entries, name and kind, in file order.agg_program(name, database)returns an entry's DecL program as its file spells it, ready foragg_build(). An unknown name says so and points atagg_library().- The listing is fetched once per R session, server and database; a refused database is not kept.
agg_frames(x)lists an object's frames with their rows and columns.agg_frame(x, which = "density_df")returns a whole frame as a plaindata.frame. It reads Parquet throughnanoparquet(now imported) when the server offers it, and CSV otherwise or on a 501.- Measured on a local server, a two-unit portfolio's
density_dfat log2 16 (65,536 by 33): Parquet 0.06 s, CSV 5.5 s. Finite values agree to 2.2e-16; gaps and infinities agree exactly. - The server's facts are fetched once per R session and server, for
frame_formats.
agg_exhibits(x)lists an object's exhibits: name, title and perspectives.agg_exhibit(x, name, perspective)returns anagg_exhibit, always a list:title,captionsandtables, the last two named by the server's block keys (summary_df,reins_stats_df). Its print shows each block's caption and table.- Exhibit tables hold data only: row labels as character with spanned labels repeated, values as the server's raw numbers (
NAwhere it has none), header levels joined into column names. They match the Excel add-in's spill cell for cell on its fixtures. agg_q(x, p, basis)returns exact quantiles forpin [0, 1], named likequantile()'s.- Every function that takes
xaccepts a handle or a DecL program.
agg_build(decl, log2, bs)builds a program and returns anagg_handle, or the number a value program such as(2+2)means. A character vector joins into one program, soreadLines()of a.aggfile works.- The handle carries its recipe and server, prints its grid, moments and validation, and survives
saveRDS()into a later R session. - A build memo: the same program on the same grid posts once per R session and server. Building a name to a new id (a redefinition) clears it.
- A read through a handle whose object the server evicted rebuilds it and retries. If the rebuild gives a different id, the call is refused and asks for
agg_build(). - A program naming the session's own declarations (
port P agg.A ...) survives a server restart: the client replays the missing declaration from its build log and retries.
- The package:
DESCRIPTION(BSD-3), the RStudio project, and testthat tests that need no server. agg_server()gets or sets the server: theaggregateR.serveroption, thenAGGREGATER_SERVER, then the publichttps://agg.mynl.com. The first request to the public server each R session says that programs are sent there.agg_meta()returns the server's facts: versions, grid caps, cache size and frame formats.- Requests carry a per-server session id and retry a 429 up to three times, honoring
Retry-Afterup to 60 s. - Failures raise
aggregateR_refusaloraggregateR_transient, both inheritingaggregateR_error, with the Excel add-in's readable text.