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
2 changes: 1 addition & 1 deletion examples/defer_import_slow_startup/defer_import/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@ class MeanCommand:


def main():
return cappa.invoke(DeferImport)
cappa.invoke(DeferImport)
7 changes: 4 additions & 3 deletions examples/defer_import_slow_startup/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,19 @@
name = "defer-import"
version = "0.0.1"
dependencies = [
"pandas >= 2.2.3",
"pandas",
"cappa",
]
requires-python = ">=3.8,<4"

[project.scripts]
defer-import = "defer_import.main:main"

[tool.uv.sources]
cappa = {path = "../.."}

[tool.uv]
dev-dependencies = [
[dependency-groups]
dev = [
"mypy >= 1.0.0",
"pyright >= 1.1.398",
"basedpyright >= 1.29.1",
Expand Down
581 changes: 470 additions & 111 deletions examples/defer_import_slow_startup/uv.lock

Large diffs are not rendered by default.

34 changes: 34 additions & 0 deletions meow.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import asyncio
from dataclasses import dataclass
from typing import Annotated, TypeVar

from rich.prompt import IntPrompt

import cappa
from cappa import ValueFrom

T = TypeVar("T")


async def test() -> list[int]:
return [1]


async def gen() -> int:
ids = await test()
business = IntPrompt.ask("choices a business", choices=[str(_id) for _id in ids])
return business


@dataclass
class Test:
business: Annotated[
int,
cappa.Arg(default=ValueFrom(gen), help="Business ID"),
]

async def __call__(self):
print(self.business)


asyncio.run(cappa.invoke_async(Test))
5 changes: 3 additions & 2 deletions src/cappa/__init__.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
from cappa.base import collect, command, invoke, invoke_async, parse
from cappa.base import collect, command, invoke, invoke_async, parse, parse_async
from cappa.command import Command
from cappa.completion.types import Completion
from cappa.default import Confirm, Default, Env, Prompt, ValueFrom
from cappa.file_io import FileMode
from cappa.help import HelpFormattable, HelpFormatter
from cappa.invoke import Dep, Self
from cappa.invoke.types import Dep, Self
from cappa.output import Exit, HelpExit, Output
from cappa.parse import default_parse, unpack_arguments
from cappa.state import State
Expand Down Expand Up @@ -52,5 +52,6 @@
"invoke",
"invoke_async",
"parse",
"parse_async",
"unpack_arguments",
]
2 changes: 1 addition & 1 deletion src/cappa/argparse.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from cappa.arg import Arg, ArgAction, Group
from cappa.command import Command, Subcommand
from cappa.help import ArgGroup
from cappa.invoke import fulfill_deps
from cappa.invoke.base import fulfill_deps
from cappa.output import Exit, HelpExit, Output
from cappa.parser import RawOption, Value
from cappa.typing import assert_type
Expand Down
Loading
Loading