buckethead.config¶
Pydantic configuration models.
buckethead.config
¶
Configuration subsystem.
Aggregates Pydantic data models, env-driven settings, persistent user config, and the secret-reference resolver registry.
BucketConfig
¶
Bases: BaseModel
Where BucketHead stores snapshots and filestore blobs.
for_r2
classmethod
¶
for_r2(
*,
account_id: str,
bucket: str,
access_key_id: str,
secret_access_key: str,
key: str | None = None,
files_prefix: str | None = None,
) -> Self
Construct a BucketConfig pointed at Cloudflare R2.
Fills in the account-specific S3 endpoint and the mandatory region='auto'.
Source code in src/buckethead/config/models.py
SnapshotConfig
¶
Bases: BaseModel
How often BucketHead flushes and what it keeps.
BucketEnv
¶
Bases: BaseModel
S3-compatible bucket addressing + credentials.
BucketHeadSettings
¶
Bases: BaseSettings
to_bucket_config
¶
to_bucket_config() -> BucketConfig
Resolve runtime config into a BucketConfig.
Raises ValueError when required fields aren't set. Derives the
R2 endpoint from cloudflare.account_id when bucket.endpoint_url
is unset and cloud == 'cloudflare-r2'.
Source code in src/buckethead/config/settings.py
CloudflareEnv
¶
Bases: BaseModel
Cloudflare-specific knobs.
account_id is dual-purpose: provisioning uses it for API calls,
and runtime uses it to derive the S3 endpoint when
bucket.endpoint_url is unset and cloud == 'cloudflare-r2'.
OnePasswordEnv
¶
Bases: BaseModel
1Password-specific knobs used by provisioning.
SnapshotEnv
¶
Bases: BaseModel
Where the snapshot lives inside the bucket.
UserConfig
¶
Bases: BaseSettings
load
classmethod
¶
forget_project
¶
Remove a project mapping (primary + share) and persist.
bucket_for_project
¶
Return the primary bucket for project; generate and persist on miss.
Source code in src/buckethead/config/user.py
configure_share_for_project
¶
configure_share_for_project(
project: str,
*,
share_bucket: str,
mode: str,
public_base_url: str | None = None,
path: Path | None = None,
) -> None
Attach or update share config on an existing project entry.
Raises KeyError if the project isn't present — call
bucket_for_project first to create the primary.
Source code in src/buckethead/config/user.py
forget_share_for_project
¶
Detach the share bucket; demote to string form if only primary remains.
Source code in src/buckethead/config/user.py
register_resolver
¶
Register a resolver for URL-shaped refs with the given scheme.
The resolver receives the full ref (without the secret: prefix)
and returns the resolved secret value.
Source code in src/buckethead/config/secret_refs.py
resolve_value
¶
Resolve a TOML value. Only secret:<scheme>://... strings are
resolved — everything else (including bare op://... or https://)
passes through as a literal.