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
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.
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 |
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 |
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 |
Actions (staged workflow)
| Action | Stage |
|---|---|
InitNovelContext |
01_init — build context from outline/language/constraint/bible |
MetadataStage |
02_metadata — propose novel plan |
CharactersStage |
03_characters — propose roster spans |
ChapterPlanStage |
04_chapter_plans — plan chapters + draft boundaries |
StoryPlanStage |
05_story_plans — plan stories + draft boundaries |
ScenePlanStage / RagScenePlanStage |
06_scene_plans — plan scenes (with RAG) |
SceneWriteStage / RagSceneWriteStage |
07_scenes — broadcast spans + write scene prose |
AssembleStage |
08_novel — materialize Novel |
DumpNovelStage |
export — JSON always; EPUB and/or per-chapter chapters/NN.txt per format |
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 |
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. |
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"
# 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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fabricatio_novel-0.21.0-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: fabricatio_novel-0.21.0-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
12b9fb0e0dc74b87220ec5ab57f64368d4a0267129b1ffa88d662050d5d880bd
|
|
| MD5 |
e7f0a7b16b2dda80371ad5cb77306aac
|
|
| BLAKE2b-256 |
e94637bd952211ac10266409791d5993324d6db662a3a9692fcf2392a4d2de11
|
File details
Details for the file fabricatio_novel-0.21.0-cp314-cp314-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: fabricatio_novel-0.21.0-cp314-cp314-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 2.4 MB
- Tags: CPython 3.14, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d76479cee493d62ca327504f8360cc049773e5be05c28d961fa67ec0b65fea5
|
|
| MD5 |
524f6f0c8e3a8a15129b61deccf9cfd7
|
|
| BLAKE2b-256 |
e23162e5ea9294640ff6d0febf6081f699b02d45a8695d29d2b31cc8299c76c6
|
File details
Details for the file fabricatio_novel-0.21.0-cp314-cp314-manylinux_2_34_aarch64.whl.
File metadata
- Download URL: fabricatio_novel-0.21.0-cp314-cp314-manylinux_2_34_aarch64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.14, manylinux: glibc 2.34+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39d4b094b575a2bbf14264d0407898d90f83d7b045bf5b43ed259b6d966b6a6b
|
|
| MD5 |
ce17f4d614bcd25426624857630ab341
|
|
| BLAKE2b-256 |
7b26f1f497143ec187324d8b285bfcd58f6d99738a1e025088dbd90fc5777d25
|
File details
Details for the file fabricatio_novel-0.21.0-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: fabricatio_novel-0.21.0-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.0 MB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
204915f60af93b14b94cfebecbece8fef9812f7d8d9e3a3fe3cce5bfb0ac507c
|
|
| MD5 |
861709afa1909dc8863238fba6448ac9
|
|
| BLAKE2b-256 |
ac29410aca4935f71e596e0cc023f1e32c1225dc712d22e544ebac266e0ddd65
|
File details
Details for the file fabricatio_novel-0.21.0-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: fabricatio_novel-0.21.0-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35e84055c7413cde22afaa99ecb9903a313899db2ced96f98c0ffa2efef0d93a
|
|
| MD5 |
00322350246a848771d72616223c644b
|
|
| BLAKE2b-256 |
dca99d9b1af49fb682314de1c66cc0cc890c0aa89131e54243b7abe2efaf4634
|
File details
Details for the file fabricatio_novel-0.21.0-cp313-cp313-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: fabricatio_novel-0.21.0-cp313-cp313-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 2.4 MB
- Tags: CPython 3.13, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f5eac41b1b6d36c035e4091fa0c8664eef7bc1c827a1a25c2a9a4150dd467e8
|
|
| MD5 |
24a1156493b0654c3ebde0a76e864139
|
|
| BLAKE2b-256 |
6e0a6a93998c1dae7279bec25106b966167906d4982272fda46fb7553d7a6a3d
|
File details
Details for the file fabricatio_novel-0.21.0-cp313-cp313-manylinux_2_34_aarch64.whl.
File metadata
- Download URL: fabricatio_novel-0.21.0-cp313-cp313-manylinux_2_34_aarch64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.13, manylinux: glibc 2.34+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f6eaca145942e7bcab192bf999f8e42a343f214cb679d91dfa10e3092995fac
|
|
| MD5 |
429a60ab6f398f9e5b6a1de112dc5f34
|
|
| BLAKE2b-256 |
c80e344fd4a0b66023d3a93d6b676ddd5576a048bcaa8a994614d102d8b0b34c
|
File details
Details for the file fabricatio_novel-0.21.0-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: fabricatio_novel-0.21.0-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.0 MB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ebc0dc239d06911b3a66735a337cbc93fbe82ee221baf6617c383ba1472bb36
|
|
| MD5 |
9d2a30e5fc79479e3b1f5b8102492195
|
|
| BLAKE2b-256 |
09d55ef3bf813209fc794989beb06604c1db45b11303760100298094eec6783d
|
File details
Details for the file fabricatio_novel-0.21.0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: fabricatio_novel-0.21.0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
047470c71906bbf8c950f0a1daebd17d36046ec51a42a46d70d722d498daf616
|
|
| MD5 |
c88dcfa4c8fde9015022daccc50a989a
|
|
| BLAKE2b-256 |
cb9e3af72a8d52966d6b866fbdee15bde8cb468f98b7646d05d413def93b948a
|
File details
Details for the file fabricatio_novel-0.21.0-cp312-cp312-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: fabricatio_novel-0.21.0-cp312-cp312-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 2.4 MB
- Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1299e07d853a43b6ff24a6fdc459148e3bf349b8de72e9f0a11f2b68dcab06df
|
|
| MD5 |
cd717fe8edf66e8aaf4da2c10e617b6b
|
|
| BLAKE2b-256 |
b6c4daa8b75fff1e1097da3a743132f9f59277437656af6364768409dfb35d7f
|
File details
Details for the file fabricatio_novel-0.21.0-cp312-cp312-manylinux_2_34_aarch64.whl.
File metadata
- Download URL: fabricatio_novel-0.21.0-cp312-cp312-manylinux_2_34_aarch64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.12, manylinux: glibc 2.34+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f73f50b00a9825edc685ad0beea8e9bfb00eb8ebbdad6b3a21ad967f858315e6
|
|
| MD5 |
5db1d783096c5b252bc98beb90a2d708
|
|
| BLAKE2b-256 |
1c2b8b7d724c033796c03e31b68a6567976bd71f9e2df50657e4eccc0f636a83
|
File details
Details for the file fabricatio_novel-0.21.0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: fabricatio_novel-0.21.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.0 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0314373d8cac23fb0e9252c4865bdaf7da4e37ec9f5172188ffe9e7251a783c
|
|
| MD5 |
9c2ebdd839435fcb5bdd4cfe8ea10677
|
|
| BLAKE2b-256 |
d938c79978f459323d634d32c4b5069a1849e4d77c369d6d8185151bfcea0572
|