httk.workflow.projects ====================== .. py:module:: httk.workflow.projects .. autoapi-nested-parse:: Compatibility shim over the project anchor, now owned by :mod:`httk.core.project`. The project anchor — the ``.httk-project`` directory, ``project.json`` and its validation, upward discovery, the identity key, and key pinning and trust — moved to *httk-core* as :mod:`httk.core.project` so a core-only installation has projects. This module re-exports that API unchanged (this is an internal move, so no deprecation is warranted and every public name keeps working) and keeps the pieces that are workflow policy rather than anchor: * :data:`DEFAULT_MANIFEST_EXCLUSIONS` and :func:`project_exclusions` — what a signed manifest never records, which is a property of the manifest format and therefore stays here beside :mod:`httk.workflow.manifests`. * :func:`initialize_project` and :func:`import_v1_project` — the anchor plus the detached-transfer *workspace* a workflow project also needs. Creating a workspace at ``init`` time is revisited in Phase 10; for now the behavior is exactly what it was before the anchor moved. Attributes ---------- .. autoapisummary:: httk.workflow.projects.DEFAULT_MANIFEST_EXCLUSIONS Functions --------- .. autoapisummary:: httk.workflow.projects.initialize_project httk.workflow.projects.import_v1_project httk.workflow.projects.project_exclusions Module Contents --------------- .. py:data:: DEFAULT_MANIFEST_EXCLUSIONS :value: ('.httk-project/project.json', '.httk-project/keys/*.seed', '.httk-project/keys/*.priv',... .. py:function:: initialize_project(root: str | os.PathLike[str], *, name: str, description: str = '', default_queue: str | None = None, manifest_exclusions: collections.abc.Iterable[str] = ()) -> dict[str, object] Initialize the project anchor and its detached-transfer workspace. The anchor is created by :func:`httk.core.project.initialize_project`; a workflow project additionally gets a ``detached-transfer-v1`` workspace. Creating the workspace at init time is the behavior Phase 10 revisits — the anchor and the workspace need not be born together — but it is preserved unchanged here. .. py:function:: import_v1_project(root: str | os.PathLike[str], *, source: str | os.PathLike[str] | None = None, name: str | None = None) -> dict[str, object] Create v2 project metadata from a legacy ``ht.project`` directory. The anchor and its adopted legacy identities come from :func:`httk.core.project.import_v1_project`; this adds the workflow workspace on top, exactly as it did before the anchor moved. .. py:function:: project_exclusions(metadata: dict[str, object]) -> tuple[str, Ellipsis]