httk.serve.web.widgets.table ============================ .. py:module:: httk.serve.web.widgets.table .. autoapi-nested-parse:: The built-in, cursor-paginated ``httk.serve.table`` widget. Attributes ---------- .. autoapisummary:: httk.serve.web.widgets.table.TABLE_ENDPOINT httk.serve.web.widgets.table.TABLE_ASSET_ROOT httk.serve.web.widgets.table.DEFAULT_PAGE_SIZE httk.serve.web.widgets.table.MAX_PAGE_SIZE httk.serve.web.widgets.table.MAX_CURSOR_CHARS httk.serve.web.widgets.table.MAX_TOKEN_BYTES httk.serve.web.widgets.table.MAX_TOKEN_PAYLOAD_BYTES httk.serve.web.widgets.table.MAX_TABLE_HTML_BYTES httk.serve.web.widgets.table.MAX_TABLE_RESPONSE_BYTES httk.serve.web.widgets.table.TOKEN_VERSION httk.serve.web.widgets.table.DEFAULT_TOKEN_TTL_SECONDS Exceptions ---------- .. autoapisummary:: httk.serve.web.widgets.table.TableProtocolError httk.serve.web.widgets.table.TableContinuationError httk.serve.web.widgets.table.TableContinuationExpired httk.serve.web.widgets.table.TableProviderError httk.serve.web.widgets.table.TableRevisionMismatch Classes ------- .. autoapisummary:: httk.serve.web.widgets.table.TableTokenSigner httk.serve.web.widgets.table.TableRuntime httk.serve.web.widgets.table.TableWidget Module Contents --------------- .. py:data:: TABLE_ENDPOINT :value: '/_httk/serve/table/page' .. py:data:: TABLE_ASSET_ROOT :value: '/_httk/serve/assets' .. py:data:: DEFAULT_PAGE_SIZE :value: 50 .. py:data:: MAX_PAGE_SIZE :value: 500 .. py:data:: MAX_CURSOR_CHARS :value: 16384 .. py:data:: MAX_TOKEN_BYTES :value: 48000 .. py:data:: MAX_TOKEN_PAYLOAD_BYTES :value: 32768 .. py:data:: MAX_TABLE_HTML_BYTES :value: 512000 .. py:data:: MAX_TABLE_RESPONSE_BYTES :value: 600000 .. py:data:: TOKEN_VERSION :value: 1 .. py:data:: DEFAULT_TOKEN_TTL_SECONDS :value: 900 .. py:exception:: TableProtocolError Bases: :py:obj:`ValueError` An expected bad table declaration, continuation, or provider result. .. py:exception:: TableContinuationError Bases: :py:obj:`TableProtocolError` A continuation token did not meet the endpoint protocol. .. py:exception:: TableContinuationExpired Bases: :py:obj:`TableContinuationError` A valid continuation token has passed its expiry. .. py:exception:: TableProviderError Bases: :py:obj:`TableProtocolError` A site-local provider could not safely supply the requested page. .. py:exception:: TableRevisionMismatch Bases: :py:obj:`TableProviderError` A provider changed a revision-pinned result while paging. .. py:class:: TableTokenSigner(secret: str | bytes | None = None) Authenticate the canonical, bounded continuation envelope. .. py:method:: sign(payload: collections.abc.Mapping[str, object]) -> str .. py:method:: verify(token: object) -> dict[str, object] .. py:class:: TableRuntime(*, engine: httk.serve.web.engine.site_engine.SiteEngine, token_secret: str | bytes | None = None, token_ttl_seconds: int = DEFAULT_TOKEN_TTL_SECONDS) Engine-local table dispatcher, renderer, and continuation authority. .. py:attribute:: engine .. py:attribute:: signer .. py:attribute:: token_ttl_seconds :value: 900 .. py:method:: render(context: httk.serve.web.widgets.core.WidgetContext, **props: object) -> httk.serve.web.widgets.core.WidgetRenderResult .. py:method:: continuation(payload: object) -> dict[str, object] .. py:class:: TableWidget Built-in adapter supplied with :class:`httk.serve.web.widgets.WidgetContext`. .. py:attribute:: name :value: 'httk.serve.table' .. py:attribute:: source :value: 'httk.serve.web.widgets.table' .. py:method:: render(context: httk.serve.web.widgets.core.WidgetContext, **props: object) -> httk.serve.web.widgets.core.WidgetRenderResult