Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 17 additions & 17 deletions docs-site/src/content/docs/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ description: LLM imports that feel like a magic trick.

import { Code } from 'astro:components';

<section className="hero hero-grid">
<div className="hero-main">
<div className="hero-copy-kicker">
<section class="hero hero-grid">
<div class="hero-main">
<div class="hero-copy-kicker">
<span /> JIT codegen, import-shaped
</div>
<h1 className="hero-title">Write the import you wish existed.</h1>
<h1 class="hero-title">Write the import you wish existed.</h1>

<div className="hero-code">
<div class="hero-code">
<Code
code={`from wishful.static.text import extract_emails

Expand All @@ -21,25 +21,25 @@ emails = extract_emails(raw)
print(emails) # prints ["team@example.com","sales@demo.dev"] probably...`}
lang="python"
/>
<div className="hero-code-footer">
<div class="hero-code-footer">
<span><strong>First run:</strong> wishful asks the LLM, validates the code, and caches it under <code>.wishful/text.py</code>.</span>
<span><strong>Later runs:</strong> just a normal Python import β€” no latency, no API call.</span>
</div>
</div>

<p className="hero-subtitle">
<p class="hero-subtitle">
<code>import wishful</code> turns β€œsomeone should really write this
helper” into cached, type-aware Python modules β€” with safety checks,
offline-friendly stubs, and a dash of mischief.
</p>

<div className="hero-pill-row">
<div className="hero-pill">LLM-generated modules with real files on disk</div>
<div className="hero-pill">Static (cached) and dynamic (runtime-aware) imports</div>
<div className="hero-pill">Type- and context-aware prompts</div>
<div class="hero-pill-row">
<div class="hero-pill">LLM-generated modules with real files on disk</div>
<div class="hero-pill">Static (cached) and dynamic (runtime-aware) imports</div>
<div class="hero-pill">Type- and context-aware prompts</div>
</div>

<p className="hero-footnote">
<p class="hero-footnote">
Prefer reading code? Start with the{' '}
<a href="https://github.com/pyros-projects/wishful">README</a> and come
back here for the deeper β€œhow it works” tour.
Expand All @@ -49,29 +49,29 @@ print(emails) # prints ["team@example.com","sales@demo.dev"] probably...`}

## Moments that make this β€œclick”

<div className="aha-grid">
<div className="aha-card">
<div class="aha-grid">
<div class="aha-card">
<h4>Imports as intent</h4>
<p>
You describe the behavior in comments, write the import you wish you had,
and let the model do the boring glue work.
</p>
</div>
<div className="aha-card">
<div class="aha-card">
<h4>Real files you can edit</h4>
<p>
Generated modules land in <code>.wishful/</code> as plain <code>.py</code> files.
If the LLM gets close-but-not-perfect, tweak it once and you&apos;re done.
</p>
</div>
<div className="aha-card">
<div class="aha-card">
<h4>Types that steer the model</h4>
<p>
Register dataclasses, Pydantic models, or TypedDicts with <code>@wishful.type</code>
so the generated code returns exactly the shapes you expect.
</p>
</div>
<div className="aha-card">
<div class="aha-card">
<h4>Context-aware by default</h4>
<p>
wishful forwards nearby comments and call sites into the prompt, so
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "wishful"
version = "0.2.1"
version = "0.2.2"
description = "Wishful thinking for Python"
readme = "README.md"
authors = [
Expand Down