Skip to content
src.fastware._scope
Edit
On this page

Internal ASGI scope helpers that read request headers and cookies with a single case-insensitive linear scan, shared across middleware.

#src.fastware._scope

#src.fastware._scope

Scope-level header and cookie access shared across the ASGI layer.

ASGI headers arrive on the scope as a list of (name, value) byte tuples, with names lowercased per the ASGI spec. These helpers read them with a single linear scan -- never allocating a dict of all headers just to read one -- and are the single implementation used by the request wrapper (:mod:fastware.request), the auth/CSRF middleware (:mod:fastware.auth), and the pure-ASGI middleware (:mod:fastware.middleware).

Matching is case-insensitive: callers pass a lowercase name, and scope keys are case-folded before comparison so a non-compliant server that emits mixed-case header names still matches.

#_first_header

python
def _first_header(scope: Scope, name: bytes) -> bytes | None

Return the first raw value for header name, or None if absent.

Distinguishing "absent" from "present but empty" is why this returns None rather than b"" -- :func:header_str needs it to honor a caller-supplied default only when the header is truly missing.

#header_bytes

python
def header_bytes(scope: Scope, name: bytes) -> bytes

Return the first value of header name (lowercase bytes), or b"".

#header_str

python
def header_str(scope: Scope, name: str, default: str | None=None) -> str | None

Return header name decoded as latin-1, or default if absent.

ASGI header values are opaque bytes; latin-1 is the lossless byte<->str mapping used throughout the HTTP layer.

#cookies

python
def cookies(scope: Scope) -> dict[str, str]

Parse the Cookie header into a name->value dict ({} if none).

python
def cookie(scope: Scope, name: str, default: str='') -> str

Return a single cookie value by name, or default if absent.

More tools from this site

  • claudestream Drive Claude Code from Python: run it as a subprocess and read its output as typed events, with async and sync sessions, sandbox policies, and tools you define in Python
  • claudewheel A TUI Claude Code Launcher that lets you have more than one profile, manage sessions lifecycle, pick the exact CC version, model to use (even older unlisted ones), pick which GitHub account to use, etc.
  • dirstat Fast, single-binary directory statistics CLI: every file under a tree grouped by format, with counts, sizes, and lines of code, as a colored terminal table or as JSON
  • go-toml-edit Zero-dep TOML editing library for Go with comment preservation
  • howmuchleft The fastest Claude Code statusline: context window, 5-hour, and weekly limit usage as three customizable gradient bars, rendering in about 6 ms
  • orxtra
  • pgdesign
  • predraw Declarative rendering pipeline: describe a scene in JSON and get SVG, PNG and WebP out, with light and dark style tokens, reusable components and text converted to path outlines
  • reposummary Turn a git repository's history into a Markdown journal: pick a time window or revision range and get a readable digest of what changed, optionally narrated by an LLM
  • rlsbl Release orchestration and project scaffolding CLI that bumps versions, validates a structured JSONL changelog, tags only the commit CI verified, and publishes to npm, PyPI, Go and more
  • safegit git wrapper CLI that gives each commit its own temporary index and retries ref updates on conflict, so concurrent agents share one repository
  • saferm Command-line replacement for rm that archives every deletion with a mandatory reason and the context it ran in, so deleted files can be listed, inspected and restored
  • selfdoc Static Site Generator that builds a project's documentation site directly from its source code, so the docs can never drift from the code they describe, with SEO/AEO, first-class blog, search, and cross-project linking built in
  • strictcli
  • stricttest An always-on test-isolation floor: a pytest plugin and a Go env-hygiene module that make a test suite structurally unable to reach real credentials, the real HOME, the network, or the development repository.
  • wesktop A Python framework that turns an ASGI web app into a desktop application, serving it from a local Granian server and displaying it in a native OS window via pywebview
Search