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

Parses and validates the [tool.fastware.dev] table from pyproject.toml into a typed DevConfig, failing hard on missing settings.

#src.fastware.devconfig

#src.fastware.devconfig

File-driven dev configuration for the fastware dev CLI.

Reads a [tool.fastware.dev] table from the nearest owning pyproject.toml and validates it into a :class:DevConfig. All fields are explicit -- there are no silent defaults for anything that changes behaviour; invalid or ambiguous configuration is a hard error (:class:DevConfigError).

Location rule (enforced by :func:find_dev_pyproject): starting from a directory, walk up to the filesystem root collecting every pyproject.toml that contains a [tool.fastware.dev] table. Zero found is an error naming the rule; two or more (a table nested under another table) is an ambiguity error listing both. Exactly one is required. In a monorepo the table lives in the package that owns the fastware app + frontend.

#DevConfigError

Raised for any missing, unknown, or contradictory dev-config value.

#BackendSpec

How to run the backend: in-process app OR an arbitrary spawn command.

Exactly one of app ("module:attr" served in-process via serve, wrapped with ViteDevProxy) or cmd (arbitrary argv spawned directly) must be set -- never both, never neither.

#is_in_process

python
def is_in_process(self) -> bool

#ViteSpec

Vite dev server: command, working dir, port, and env.

--strictPort is always enforced (appended if absent) so Vite fails loudly on a port collision instead of silently drifting to another port that the readiness probe and proxy would then miss.

#HealthCheck

A readiness check for an aux service: exactly one of http/tcp/cmd.

#AuxService

An ordered auxiliary service started (and health-gated) before the backend.

#PreSpawnGate

A pre-flight gate that must pass BEFORE anything spawns.

Exactly one probe kind (cmd/http/tcp/file) plus a mandatory human-readable message shown when the gate fails.

#DevConfig

Validated dev configuration resolved from [tool.fastware.dev].

#base_dir

python
def base_dir(self) -> Path

#resolve_cwd

python
def resolve_cwd(self, cwd: str | None) -> Path

Resolve a component cwd relative to the owning pyproject directory.

#build_dev_config

python
def build_dev_config(table: dict, *, source_path: Path | None=None, app_name: str='fastware') -> DevConfig

Build a :class:DevConfig from a raw [tool.fastware.dev] mapping.

#find_dev_pyproject

python
def find_dev_pyproject(start: Path | str | None=None) -> Path

Return the single owning pyproject.toml per the location rule.

Walks up from start (default CWD) to the filesystem root collecting every pyproject.toml that contains a [tool.fastware.dev] table:

  • zero found -> :class:DevConfigError naming the location rule
  • two or more -> :class:DevConfigError listing all candidates (ambiguous)
  • exactly one -> that path

#load_dev_config

python
def load_dev_config(start: Path | str | None=None) -> DevConfig

Locate and parse the dev config per the location rule.

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