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, illustration_constraint |
SketchSpec (prompt, negative prompt, LLM-chosen mp/prop) → PNGs rendered concurrently per scene (post-process) |
Templates live in templates/built-in/ and are selectable through the
Configuration keys below.
What flows down the tree
Each level materializes its plan via create(outline).update_from(plan).set_plan(plan),
with word counts assigned out-of-band via expect_ (the root takes the novel plan's
count, children take their allocated share); 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 |
RagStoryContext |
StoryContext subclass sealed with RagRetrieval settings; the RAG pipeline swaps it in before scene planning |
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 |
SketchSpec / IllustratedScene |
LLM-proposed generation instruction — positive/negative prompt plus per-scene mp/prop (comfyui model); 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 |
Composes the setting bible from the outline once; immutable for the run |
IllustrateScenes |
Post-process illustration: batch-proposes one complete generation instruction (SketchSpec: prompt, negative prompt, LLM-chosen mp/prop) per pending scene (honoring illustration_constraint), renders them concurrently 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 / RagPlanStoriesStage |
05_story_plans — fires before_compose_chapter_context per chapter, then plan_stories_phase + boundary drafting (RAG seals each chapter's stories) |
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. |
plan_requirement_template |
str |
"built-in/plan_requirement" |
template used to plan the chapters of the novel, the stories of a chapter and 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. |
scene_overlap_min_chars |
int |
40 |
minimum whitespace-normalized overlap between a new scene's prefix and the previous prose that gets stripped; shorter echoes are kept. |
scene_overlap_max_ratio |
float |
0.6 |
maximum fraction of a generated scene the overlap may cover before the content is kept untouched with a warning instead of stripped. |
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. |
boundary_requirement_template |
str |
"built-in/boundary_requirement" |
template used to draft the N-1 chapter- and the S-1 story-boundary cards from the parent'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_constraint |
str |
"" |
global style/content constraint merged into every scene illustration prompt proposal; empty when unset. |
illustration_negative_prompt |
str |
quality/anatomy exclusion list | negative prompt forwarded to ComfyUI for every scene illustration unless the proposal supplies its own. |
illustration_always_loras |
list[LoraEntry] |
[] |
LoRA entries chained into every scene illustration render before any selection — the slot for always-on style/character loras; each entry's trigger_words activate it in the prompt. Selectable loras live in the [ext.comfyui] loras catalog, where the LLM picks per scene on top of this chain. |
illustration_mp |
float | None |
None |
megapixel budget of each scene illustration's finished image (1.0 = 1,000,000 px); a per-scene proposal's mp wins, otherwise None falls back to [ext.comfyui] mp, then the active ComfyUI template's canvas. |
illustration_mp_max |
float |
1.2 |
hard ceiling on every scene illustration's megapixel budget, enforced at render time even when the LLM proposes a larger mp; the renderable quality brink (512x512x2.2x2.2) is ~1.27 MP, so 1.2 keeps a margin under it. |
illustration_prop |
Prop | None |
None |
aspect-ratio preset of each scene illustration — enum member names like prop_2_3 (portrait), coerced to the Prop enum at load; a per-scene proposal's prop wins, otherwise None falls back to [ext.comfyui] prop, then the active ComfyUI template's ratio. |
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. |
illustration_timeout_per_image |
float |
210.0 |
per-image render timeout in seconds; the total render timeout scales linearly with the batch size (value x pending renders) since all renders share one ComfyUI queue; 0 falls back to [ext.comfyui] timeout. |
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.25.0
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.25.0-cp314-cp314-win_amd64.whl
| Download URL | fabricatio_novel-0.25.0-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
18018fb4a649a4570323d0bb8e2a00f2ba7b466a869bc4d881f18c4cab9a99bb
|
|
BLAKE2b-256 checksum How to use checksums |
0589da295a08c32b25fbc80e19f80301e3dc41b1893d1435f5ca39f99b2ff4db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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.25.0-cp314-cp314-manylinux_2_34_x86_64.whl
| Download URL | fabricatio_novel-0.25.0-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 |
292a43d5b4a5fffacbe53d1ba6be1d85dad74820e903658880ca4da012f763df
|
|
BLAKE2b-256 checksum How to use checksums |
85c03938740765545c1383d70bde05aa15b3a7138f51716b4a2fa2ad993f5eca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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.25.0-cp314-cp314-manylinux_2_34_aarch64.whl
| Download URL | fabricatio_novel-0.25.0-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 |
0c7d365b0a716d708f8b14d3613e1c265a66d5c4919d7e68909264f02a02f6b2
|
|
BLAKE2b-256 checksum How to use checksums |
0a5ca8fbc4043cc028505f353fc5a988a6387f03e749109bfe60e89fdd558eb8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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.25.0-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | fabricatio_novel-0.25.0-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 |
b6813e6a48254469a2a2d3754b7c557359917f74462c27ab16b7dc6cc68479d9
|
|
BLAKE2b-256 checksum How to use checksums |
baa4e7b53ba55b0452e7d5893e723afcc861d7057a24f397ca7cd8350ea05723
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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.25.0-cp313-cp313-win_amd64.whl
| Download URL | fabricatio_novel-0.25.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
2b9b3e84ee7e4c64faecc4081d2368e652523457623e452b4c256de94b2dc836
|
|
BLAKE2b-256 checksum How to use checksums |
9bed7a67c27168ff5e9acd820bf3715a2aa885792e864b8bf6c57762c381d9bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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.25.0-cp313-cp313-manylinux_2_34_x86_64.whl
| Download URL | fabricatio_novel-0.25.0-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 |
9e467fcdafbd028f162222989215a8a1fdb027cc674abdf75625a955bd20db09
|
|
BLAKE2b-256 checksum How to use checksums |
8dc11b14c0b0c188323c566089434d5a2f6b9416650c2847c5c000c1c3a5f8a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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.25.0-cp313-cp313-manylinux_2_34_aarch64.whl
| Download URL | fabricatio_novel-0.25.0-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 |
006bb1475e0a9423b91772a0a4f89ec5bf1aa564382b569369bd778936ccca93
|
|
BLAKE2b-256 checksum How to use checksums |
13fd48ae9bf33f182f643c90f56f4b105b04a3995027c83b7af719d07be1b9ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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.25.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | fabricatio_novel-0.25.0-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 |
9f38ba993ac885478e6413524690b5a0de211fe6f92de486079937daefc9012a
|
|
BLAKE2b-256 checksum How to use checksums |
d361fec047fea3faf1b4102713700476054b5a16f1d3c6241d44890403341337
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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.25.0-cp312-cp312-win_amd64.whl
| Download URL | fabricatio_novel-0.25.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
cdee26dbf0784a497620d6cf3055c3c77e294833a3ab9515fd1b7ec8c81ae28e
|
|
BLAKE2b-256 checksum How to use checksums |
0b37f25d78cd340d00b737bf97e4bfd31281e9a8833089cf49ffcb22d88b3f5c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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.25.0-cp312-cp312-manylinux_2_34_x86_64.whl
| Download URL | fabricatio_novel-0.25.0-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 |
7506b98c1df479bd055a3901c7285e0c3ab33590320ab8b04c7572fd3209c95b
|
|
BLAKE2b-256 checksum How to use checksums |
19091fe8c00878040f82bfdad8e5ff19e3ee73b482ccb9b6780c2d9daee1c8b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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.25.0-cp312-cp312-manylinux_2_34_aarch64.whl
| Download URL | fabricatio_novel-0.25.0-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 |
464d58444703b07d1029b4d3d0083b664c5267ba118dac39ff55725baf0dd964
|
|
BLAKE2b-256 checksum How to use checksums |
90dbb2ce8d4e1bfa91b4aa49029e93711e51e3305b46fe946144b402ccd6df44
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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.25.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | fabricatio_novel-0.25.0-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 |
79d06cfa91e0e5faa5e2235afda3367206a658471c1c96609a8f79b400ea0e77
|
|
BLAKE2b-256 checksum How to use checksums |
ff621812e31d676484ab9b9f9df9ead877c130312abc4c7d87d45330fbf6f463
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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}
|