fabricatio-novel
AI-powered novel generation — outline to publication-ready EPUB.
Full dataflow and generation-logic walkthrough: docs/superpowers/specs/2026-08-21-novel-generation-dataflow.md
Installation
pip install fabricatio[novel]
# or
uv pip install fabricatio[novel]
For the CLI tool:
pip install fabricatio-novel[cli]
Pipeline
Generation runs a staged, template-driven pipeline over a context tree
(NovelContext → ChapterContext → StoryContext → SceneContext), with every plan and
character state proposed by the LLM in batched calls:
- Metadata — outline →
NovelPlan(title, description, word count, global writing constraint, bible) - Characters — bible roster → one
CharacterSpan(start + end card) per character for the whole novel - Chapters — chapter plans, then N-1 boundary cards per character so chapter 1 starts at the roster start and the last chapter ends at the roster end
- Stories — per chapter: story plans, then S-1 boundary cards per character anchored on the chapter's start/end
- Scenes — per story: scene plans; the story's spans are broadcast to every scene, which is where the prose is actually written
- Assembly — the composed context tree becomes a
Novel;NovelBuilder(Rust/PyO3) produces the EPUB - Illustration (
wrionly) — one post-process pass proposes an image prompt per scene, renders it via ComfyUI, and embeds the PNGs in the EPUB
Character state is two pure cards, never an interpolated chain: the LLM is only asked for the coarsest boundary states, and code stitches them so continuity is guaranteed. Single-child levels inherit their parent's spans with no LLM call.
The CLI runs the pipeline as a staged workflow (DebugNovelWorkflow), persisting a
whole-tree JSON snapshot after every stage so any wrong result is traceable:
01_init → 02_metadata → 03_characters → 04_chapter_plans → 05_story_plans
→ 06_scene_plans → 07_scenes → 08_novel → 09_export
An optional RAG variant (RagDebugNovelWorkflow) retrieves WritingStyleDocument
entries from LanceDB once per story and renders them raw into the scene prompts.
The wri variant (RagIllustrationDebugNovelWorkflow) appends one final post-process
stage that illustrates every scene of the finished context before export; its stage
snapshots stay identical to wr's.
Data Flow & Prompt Assembly
The pipeline follows one principle: every LLM touchpoint is a template plus named context variables, and nothing else. Each stage renders a Handlebars template from the current context channel; planner calls parse the reply into validated pydantic models, while the single prose call captures raw paragraphs. Everything between calls — word-count allocation, character-arc stitching, prefix propagation, assembly — is deterministic code.
LLM call inventory
| Stage | Template · prompted with | Yields |
|---|---|---|
| Metadata | novel_metadata_requirement ← outline, language, constraint |
NovelPlan (adopted onto the root) |
| Roster spans | novel_character_span ← bible prompt block, title, description |
CharacterSpan[] — skipped without a roster |
| Chapter plans | chapter_plan ← outline, novel fields, word count, styles, constraint, characters |
ChapterPlan[] |
| Chapter boundaries | chapter_character_span ← roster spans, chapter titles/descriptions |
N−1 boundary cards per character |
| Story plans | story_plan ← chapter fields, styles, constraint, characters, cast |
StoryPlan[] |
| Story boundaries | story_character_span ← chapter spans, story titles/descriptions |
S−1 boundary cards per character |
| Scene plans | scene_plan ← story fields, styles, constraint, characters, cast |
ScenePlan[] |
| Scene prose | scene_requirement ← 11 variables, see below |
plain prose → Scene.content |
| Scene illustration | scene_illustration_prompt ← novel/chapter/story/scene titles, description, content, cast |
SceneIllustration → rendered PNG per scene (post-process) |
Templates live in templates/built-in/ and are selectable through the
Configuration keys below.
What flows down the tree
Plans materialize into child contexts via from_plan; each level then passes state down:
- Running manuscript — an append-only
ContextLog; every walk seeds each child with exactly the bytes that precede it in the final book (iter_prefixed_contexts) - Setting bible — rendered once at the root into a
setting_bibleprefix entry; every descendant inherits it through its own log - Word budget — each level splits its
expected_word_countamong children by plan weight - Writing constraint — accumulated verbatim down the chain
- Character arcs — the roster fixes both endpoints; intermediate boundary cards are proposed per level and stitched in code; scenes receive the finished span list read-only
Composed prose flows back up: scene content enters the logs, and Novel.from_context
aggregates the whole tree for export.
How a scene prompt is assembled
The scene write is the only content-producing call, so its prompt is engineered for
provider prefix caching: every row above ## Scene is byte-identical across the scenes
of a story, and divergence starts exactly at the per-scene tail.
Key Classes
Context channels
| Class | Role |
|---|---|
NovelContext |
Root channel: outline, language, roster charactor_span, chapter_context |
ChapterContext |
Chapter channel: charactor_span, story_context, heading block |
StoryContext |
Story channel: charactor_span, scene_context, accumulated writing_styles, optional rag retrieval settings |
SceneContext |
Leaf channel: broadcast charactor_span, content (the only composed prose) |
CharacterSpan |
Start + end CharacterCard; derive_child_spans stitches boundary cards |
ContextLog / ContextEntry |
Append-only manuscript log per channel: append, branch (fork history), clear (fresh fork); renders the prefixed-content prompt streams |
SeriesBible |
characters name list + background_settings fact list; rendered once into a setting_bible prefix entry at the root |
Every channel carries its running manuscript as an append-only ContextLog: composed
blocks enter as frozen ContextEntry records, parents seed children with pure log snapshots,
and prompts render them exactly like the former prefixed-content strings. Logs support
with_entry/with_entries appends, branch() to fork alternative continuations from any
point (copy-on-write), and clear() which returns a fresh empty log while the original
history stays intact.
Plans & models
| Class | Description |
|---|---|
NovelPlan |
Novel metadata: title, description, word count, global constraint, bible |
ChapterPlan / StoryPlan / ScenePlan |
Weighted per-element plans (title, description, weight, style, constraint, cast) |
Scene / Story / Chapter / Novel |
Materialized output tree with word-count satisfaction |
SceneIllustration / IllustratedScene |
LLM-proposed image prompt (plus negative prompt); the scene output carrying its rendered illustration |
WritingStyleDocument / EnrichedDocument |
LanceDB-backed writing-style references |
Capabilities (mixins)
| Class | Description |
|---|---|
SceneCompose |
Scene requirement rendering + prose generation |
StoryCompose |
Scene planning, scene write preparation, serial scene composition |
ChapterCompose |
Story planning, draft_story_spans (S-1 boundary cards), story composition |
NovelCompose |
Metadata, prepare_character_span (roster), chapter planning, draft_chapter_spans (N-1 boundary cards) |
RAGCompose |
Retrieves style docs once per story; extends scene prompts |
BibleCompose |
Creates/updates the setting bible from an outline |
IllustrateScenes |
Post-process illustration: proposes one image prompt per scene, renders it via ComfyUI into the run's images/ directory, and attaches IllustratedScene outputs |
Actions (staged workflow)
| Action | Stage |
|---|---|
InitNovelContext |
01_init — build context from outline/language/constraint/bible, then fire before_compose_novel_context |
ProposeNovelMetadataStage |
02_metadata — propose_novel_metadata |
PrepareCharacterSpanStage |
03_characters — prepare_character_span (roster) |
PlanChaptersStage |
04_chapter_plans — plan_chapters_phase + boundary drafting |
PlanStoriesStage |
05_story_plans — fires before_compose_chapter_context per chapter, then plan_stories_phase + boundary drafting |
PlanScenesStage / RagPlanScenesStage |
06_scene_plans — fires before_compose_story_context per story, then plan_scenes_phase (with RAG) |
ComposeScenesStage / RagComposeScenesStage |
07_scenes — writes scene prose, then closes each story (after_compose_story_context + post_process_story) and each chapter (after_compose_chapter_context + post_process_chapter) |
AssembleNovelStage |
08_novel — fires after_compose_novel_context, then assemble_novel |
IllustrateNovelStage |
DumpNovelStage whose post_process_novel resolves to per-scene illustration; adds no snapshot dir |
DumpNovelStage |
fires post_process_novel, then export — JSON always; EPUB and/or per-chapter chapters/NN.txt per format |
Every stage wraps one compose_novel chain segment and fires the chain's lifecycle hooks at their chain positions, so a hook override on a stage customizes the staged run exactly like it customizes the programmatic chain; the scene-level hooks fire inside compose_scenes_phase, exactly as they do in the chain.
Workflows
| Workflow | Description |
|---|---|
DebugNovelWorkflow |
Outline → exported novel (--format epub|txt|both), one stage per action with per-stage snapshots |
RagDebugNovelWorkflow |
Same, with writing-style RAG per story |
RagIllustrationDebugNovelWorkflow |
Same, plus a single post-process pass that renders a ComfyUI illustration for every scene into the EPUB |
Rust / PyO3
| Symbol | Description |
|---|---|
NovelBuilder |
Builder for EPUB 3.0 novels: title/description/authors, chapters (auto-XHTML), cover, fonts, CSS, TOC |
text_to_xhtml_paragraphs |
Plain text → <p>-wrapped XHTML paragraphs |
Configuration
All options below are read through the fabricatio configuration chain (see the
Configuration Guide). Set them under the
[ext.novel] table in fabricatio.toml, equivalently under
[tool.fabricatio.ext.novel] in pyproject.toml, or via
FABRICATIO_EXT__NOVEL__<FIELD_UPPER> environment variables.
[ext.novel]
novel_metadata_requirement_template = "built-in/novel_metadata_requirement"
| Option | Type | Default | Description |
|---|---|---|---|
novel_metadata_requirement_template |
str |
"built-in/novel_metadata_requirement" |
template used to extract the novel metadata (title, synopsis, word count) from the outline. |
chapter_plan_template |
str |
"built-in/chapter_plan" |
template used to plan the chapters of the novel from the outline and metadata. |
story_plan_template |
str |
"built-in/story_plan" |
template used to plan the stories of a chapter. |
scene_plan_template |
str |
"built-in/scene_plan" |
template used to plan the scenes of a story. |
scene_requirement_template |
str |
"built-in/scene_requirement" |
template used to write a single scene in full prose. |
render_chapter_xhtml_template |
str |
"built-in/render_chapter_xhtml" |
template used to render a chapter as a full XHTML document. |
setting_bible_characters_template |
str |
"built-in/setting_bible_characters" |
template used to propose the bible's character roster as a list of plain strings, one character per item. |
setting_bible_background_template |
str |
"built-in/setting_bible_background" |
template used to propose the bible's background settings as a list of strings. |
setting_bible_context_template |
str |
"built-in/setting_bible_context" |
template that renders the bible into the block seeded into the running manuscript prefix. |
setting_bible_export_template |
str |
"built-in/setting_bible_export" |
template used to render the bible as a human-readable markdown document. |
writing_style_as_prompt_template |
str |
"built-in/writing_style_as_prompt" |
template used to render writing style documents as prompts. |
enriched_as_prompt_template |
str |
"built-in/enriched_as_prompt" |
template used to render enriched reference documents as prompts. |
novel_character_span_template |
str |
"built-in/novel_character_span" |
template used to propose the novel roster as one CharacterSpan per character. |
chapter_character_span_template |
str |
"built-in/chapter_character_span" |
template used to draft the N-1 chapter-boundary cards from the novel roster spans. |
story_character_span_template |
str |
"built-in/story_character_span" |
template used to draft the S-1 story-boundary cards from the chapter's spans. |
scene_illustration_prompt_template |
str |
"built-in/scene_illustration_prompt" |
template used to propose one image-generation prompt for a composed scene. |
illustration_negative_prompt |
str |
"" |
negative prompt forwarded to ComfyUI for every scene illustration; empty when unset. |
illustration_width |
int | None |
None |
scene illustration width in pixels; None keeps the bundled ComfyUI template's value. |
illustration_height |
int | None |
None |
scene illustration height in pixels; None keeps the bundled ComfyUI template's value. |
illustration_seed |
int | None |
None |
scene illustration sampler seed; None keeps the bundled ComfyUI template's seed. |
illustration_skip_existing |
bool |
True |
skip scenes whose illustration PNG already exists so re-runs fill only the gaps. |
Access at runtime: from fabricatio_novel.config import novel_config.
Usage
CLI
# Generate a novel from an outline
fanvl w -o "In a world where dreams are currency..."
# Generate with writing style RAG (LanceDB)
fanvl wr -o "In a world where dreams are currency..." -rq "Hemingway terse prose style"
# Generate with RAG + ComfyUI scene illustrations embedded in the EPUB
fanvl wri -o "In a world where dreams are currency..." -rq "Hemingway terse prose style"
# Constrain generation with a setting bible + global writing constraint
fanvl w -o "..." -b settings/bible.json -c "first person view throughout"
# Export as plain text instead of (or besides) EPUB: chapters/01.txt, 02.txt, …
fanvl w -o "..." --format both
fanvl w -o "..." --format txt
# Create / update / show the setting bible
fanvl bible create -o "In a world where dreams are currency..." --out settings/bible.json
fanvl bible update settings/bible.json -o "..." --sections characters
fanvl bible show settings/bible.json
# Store reference texts as writing style documents in LanceDB
fanvl store-refs ./corpus/*.txt
fanvl enrich-refs ./corpus/*.txt -eg "Extract world-building facts"
Programmatic
from fabricatio_novel.workflows.novel import DebugNovelWorkflow
from fabricatio_core import Event
event = Event.instantiate("write")
event.payload["novel_outline"] = "In a world where dreams are currency..."
role = Role.with_bio(name="writer").subscribe(event, DebugNovelWorkflow).dispatch()
EPUB Builder (Rust)
from fabricatio_novel.rust import NovelBuilder, text_to_xhtml_paragraphs
xhtml = text_to_xhtml_paragraphs(raw_chapter_text)
builder = (
NovelBuilder()
.new_novel()
.set_title("My Novel")
.add_author("Author Name")
.add_chapter("Chapter 1", xhtml)
.add_inline_toc()
)
builder.export("output.epub")
Dependencies
fabricatio-core— Core interfaces, template management, LLM capabilitiesfabricatio-character— Character card modelspydantic— Data validation via models- Optional:
fabricatio-lancedb— writing style RAG,typer— CLI
License
MIT — see LICENSE
Metadata
Release files for fabricatio-novel 0.21.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 25.8 MB
Release files / fabricatio_novel-0.21.5-cp314-cp314-win_amd64.whl
| Download URL | fabricatio_novel-0.21.5-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
66e3d1eda715ed74a84bb531e301297b27cf4816243e06fbcf131e7cdba46828
|
|
BLAKE2b-256 checksum How to use checksums |
d3b17ca0ab302287f7333d9c6f0da2e16c3676ca2730bd99f21d1552c1084bb6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_novel-0.21.5-cp314-cp314-manylinux_2_34_x86_64.whl
| Download URL | fabricatio_novel-0.21.5-cp314-cp314-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.14 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
19f0d2692fb4e9eb8239e9e8272a581ea3d69b1babbd8cccabdbb57dd05c825c
|
|
BLAKE2b-256 checksum How to use checksums |
ec234b852f7f358f6c5401d95cab3c6c416c8edfb12c11859b4148f90f7d05f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_novel-0.21.5-cp314-cp314-manylinux_2_34_aarch64.whl
| Download URL | fabricatio_novel-0.21.5-cp314-cp314-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | CPython 3.14 Linux glibc 2.34+ ARM64 |
|
SHA-256 checksum How to use checksums |
d49706bd70f903bb1623d63cb53a23400e06b983467539933dd401b0d216ac31
|
|
BLAKE2b-256 checksum How to use checksums |
8d52d450894fe8b5108d70a160023c89c7bc1672f1c930be304fe348b0c2fc90
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_novel-0.21.5-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | fabricatio_novel-0.21.5-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a908e40753f1888b475d6621e1e859a748438414941a3f0e3db39d13f997e65f
|
|
BLAKE2b-256 checksum How to use checksums |
6a352b99b47505cbf731b318ad9565d6d7dc1745d170ac7ee7558cc07d045617
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_novel-0.21.5-cp313-cp313-win_amd64.whl
| Download URL | fabricatio_novel-0.21.5-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
ba92d62ac35c2f713a7bf9024444fa82e26ebfcb40ef62ab3f91d2509b503f79
|
|
BLAKE2b-256 checksum How to use checksums |
628ba34e223ccce2fc9bdc57229e381d0d4954db99b81f157573a4da3b2cc079
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_novel-0.21.5-cp313-cp313-manylinux_2_34_x86_64.whl
| Download URL | fabricatio_novel-0.21.5-cp313-cp313-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.13 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
23b4ab8b8fe7db05fd70b5ff660c9c05f0fd256fcf79d70805ca46d58e894e2b
|
|
BLAKE2b-256 checksum How to use checksums |
b44b070bebcad4e0b486d4335c46087bc632750298597e02f0cdcef82e3ced3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_novel-0.21.5-cp313-cp313-manylinux_2_34_aarch64.whl
| Download URL | fabricatio_novel-0.21.5-cp313-cp313-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | CPython 3.13 Linux glibc 2.34+ ARM64 |
|
SHA-256 checksum How to use checksums |
7a155bb524218ba7d5781194e59300c8d26350ff4bb9799c640b9f3c680fd874
|
|
BLAKE2b-256 checksum How to use checksums |
af1a0e66227b1c831b57a2951ddc19345d2b293ce147dafb7f5f5cf4a57d9fa2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_novel-0.21.5-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | fabricatio_novel-0.21.5-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
9cd9954c13e4b6d767051990a8b0eca3e84cb04489d69473fd9da89b1da13175
|
|
BLAKE2b-256 checksum How to use checksums |
fa3b6d638447977b130d3d401084751eda96370eb46c96bd6108d34c784dd86d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_novel-0.21.5-cp312-cp312-win_amd64.whl
| Download URL | fabricatio_novel-0.21.5-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
b15cd017e0f9dbd0e19289108ca27ecf50a95dbfb11ff157e463522ae698fa87
|
|
BLAKE2b-256 checksum How to use checksums |
e6d2bb96ef6fd1f3556bb6a00e09a88dbf8fa712d1be1764ec7bd588ba07f03b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_novel-0.21.5-cp312-cp312-manylinux_2_34_x86_64.whl
| Download URL | fabricatio_novel-0.21.5-cp312-cp312-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.12 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
d753b4c5655cf537f2f4b43647006743023a079724aeee2af702b62352877d90
|
|
BLAKE2b-256 checksum How to use checksums |
9e1823ef9f617d318c3c8cf34e724b48e7b92cfcaf89219f68d5bd6abbd0d245
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_novel-0.21.5-cp312-cp312-manylinux_2_34_aarch64.whl
| Download URL | fabricatio_novel-0.21.5-cp312-cp312-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | CPython 3.12 Linux glibc 2.34+ ARM64 |
|
SHA-256 checksum How to use checksums |
c1d1b390188486ec468f6310415b3a3460a7ff7d239867c81e5934fed664b45f
|
|
BLAKE2b-256 checksum How to use checksums |
3e3c963df7a75cedf43db97a0b78e703dd81bfe348a261f4112df8b2230920f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_novel-0.21.5-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | fabricatio_novel-0.21.5-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
43b115d462c25ffb29a40d558d79febeeb6ff863c34b5eabeedbcf95ee6555e3
|
|
BLAKE2b-256 checksum How to use checksums |
b5ba1bad8a87b187742b41e01dc1c0c0b468834c4c453e78b94e371b31f9af67
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|