Skip to main content

CLI client for PieUI.

Project description

pie

Python CLI and runtime helpers for PieUI applications.

The installed console script is pie and its entrypoint is pie.__main__:main. Commands are grouped by area:

pie web ...
pie card ...
pie page ...
pie create ...
pie login

Setup

uv sync --python 3.14

Run commands from this repository with:

uv run pie --help

The project requires Python >=3.14.

Configuration

The CLI loads .env through python-dotenv and reads these variables:

PIE_USER_ID=default-user
PIE_PROJECT=default-project
PIE_PROJECT_SLUG=default-project
PIE_COMPONENTS_DIR=pages/components
PIE_API_KEY=dev-master-key

Notes:

  • PIE_COMPONENTS_DIR defaults to pages/components.
  • PIE_PROJECT wins over PIE_PROJECT_SLUG; if both are absent, the current directory name is used.
  • PIE_API_KEY is sent to pieui-storage as the x-api-key header.
  • The storage API base URL is currently https://cdn-pieui.swarm.ing/api.

Create A Project

Create a new project, install pieui, write the starter files, and start a dev server on port 8008:

uv run pie create my-app

Generated layout:

my-app/
  web.py
  pages/
    main.py
    components/

The command runs:

uv init my-app
uv add pieui
uv run uvicorn web:app --port 8008

Web Commands

Load a Web object from module:attribute:

uv run pie web web:web

Verify that every page has a fields attribute:

uv run pie web web:web verify

Build static JSON from page fields into build.json:

uv run pie web web:web build

Card Commands

Add

Create a Python card file in PIE_COMPONENTS_DIR.

uv run pie card add simple MyCard
uv run pie card add complex MyCard
uv run pie card add container MyCard
uv run pie card add complex-container MyCard

Optional template modifiers:

uv run pie card add simple MyCard --io
uv run pie card add simple MyCard --ajax
uv run pie card add simple MyCard --io --ajax

Names are normalized to a Python class and snake-case filename. For example:

MyCard -> MyCard -> pages/components/my_card.py
trade widget -> TradeWidget -> pages/components/trade_widget_card.py

If the target file already exists, the command prints the existing path and does not overwrite it.

List

Scan PIE_COMPONENTS_DIR recursively for Python classes inheriting Card or InputCard:

uv run pie card list

The table includes inferred card type, Ajax support, IO support, and file path.

View

Print a plain-text report for one card:

uv run pie card view MyCard

The command reads the expected file from PIE_COMPONENTS_DIR, parses the class, and prints:

Name
File
Props
Ajax
IO
Events

List Events

Print events returned by get_supported_events():

uv run pie card list-events MyCard

If the card file or events are absent, the command prints No events found for MyCard.

Add Event

This command exists in the CLI, but Python source editing is not implemented:

uv run pie card add-event MyCard alert

It exits with:

[pie] Error: add-event requires TypeScript AST editing and is not implemented

Remote Push

Upload one local Python card file to pieui-storage through the language batch API:

uv run pie card remote push MyCard

For MyCard, the CLI uploads:

pages/components/my_card.py

Remote key shape:

PIE_USER_ID/PIE_PROJECT/MyCard/python/my_card.py

The file request uses:

PUT /api/components/{user_id}/{project_slug}/{component_name}/batch/python

The command also uploads component capability metadata to eventSchema:

{
  "component": "MyCard",
  "input": false,
  "ajax": false,
  "io": false
}

Flags are inferred from the Python class:

  • input: the class inherits InputCard.
  • ajax: the class declares any of pathname, deps_names, or kwargs.
  • io: the class declares any of use_socketio_support, use_centrifuge_support, use_mitt_support, or centrifuge_channel.

PIE_USER_ID is required for storage writes. PIE_PROJECT or PIE_PROJECT_SLUG selects the project.

Remote List

List remote components for a user/project:

uv run pie card remote list
uv run pie card remote list --user alice
uv run pie card remote list --user alice --project demo

Without flags, the command uses PIE_USER_ID and PIE_PROJECT / PIE_PROJECT_SLUG.

Remote Pull

Pull a component from the configured PIE_USER_ID and project:

uv run pie card remote pull MyCard

Downloaded Python files are written under PIE_COMPONENTS_DIR.

Remote Remove

Delete a component from storage for the configured PIE_USER_ID and project:

uv run pie card remote remove MyCard

Page Commands

Add

Create a page module under the parent directory of PIE_COMPONENTS_DIR and register it in web.py:

uv run pie page add dashboard
uv run pie page add admin/users

With the default PIE_COMPONENTS_DIR=pages/components, page files are written to pages/.

Examples:

dashboard -> pages/dashboard.py -> route "dashboard"
admin/users -> pages/admin_users.py -> route "admin/users"

web.py must exist next to the pages/ directory and contain a web = Web({...}) assignment with a literal pages dictionary.

View

Import a page module and print page details:

uv run pie page view dashboard

The report includes:

Page
Module
Path
is_typed
Form process
Ajax

Login

Start the browser login flow:

uv run pie login

The command:

  1. Generates a one-time code.
  2. Opens https://pieui.swarm.ing/connect?code=....
  3. Polls https://api-pieui.swarm.ing/api/external/credentials.
  4. Saves the returned config to .pie/config.json.
  5. Appends PIE_USER_ID, PIE_PROJECT, and PIE_API_KEY to .env.

The returned config must contain these keys:

user_id
project
api_key

Current Command Reference

pie --help
pie web MODULE:ATTR [verify|build]
pie card add {simple,complex,container,complex-container} NAME [--io] [--ajax]
pie card list
pie card view NAME
pie card list-events NAME
pie card add-event NAME EVENT_NAME
pie card remote list [--user USER_ID] [--project SLUG]
pie card remote push NAME
pie card remote pull NAME
pie card remote remove NAME
pie page add NAME
pie page view NAME
pie create NAME
pie login

Code Layout

pie/__main__.py                 CLI argument parsing and dispatch
pie/config.py                   environment-backed settings
pie/code/card_add.py            card template generation
pie/code/card_list.py           local card discovery
pie/code/card_inspect.py        card view and event inspection
pie/code/card_remote.py         PieUI storage: remote push/pull/remove/list
pie/code/page_create.py         page generation, web.py registration, page view
pie/code/create.py              project scaffolding
pie/code/login.py               PieUI login flow
pie/code/web.py                 Web loader and verifier
pie/code/build.py               build.json generation
pie/code/services/storage.py    pieui-storage API client
pie/code/services/models.py     storage response models

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pieui-0.1.12.tar.gz (47.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pieui-0.1.12-py3-none-any.whl (75.0 kB view details)

Uploaded Python 3

File details

Details for the file pieui-0.1.12.tar.gz.

File metadata

  • Download URL: pieui-0.1.12.tar.gz
  • Upload date:
  • Size: 47.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pieui-0.1.12.tar.gz
Algorithm Hash digest
SHA256 8efb26b1fa2522acaf8e2627200038ab79e337ce5a625e79a79763ef2df10229
MD5 1b09de36830b556e1b43a72d9e21cd30
BLAKE2b-256 e175975e1b07da859508b947c76a1824bab1164a982e0e4fd9290fa1b6def249

See more details on using hashes here.

Provenance

The following attestation bundles were made for pieui-0.1.12.tar.gz:

Publisher: publish.yml on Swarm-AI-Labs/pie

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pieui-0.1.12-py3-none-any.whl.

File metadata

  • Download URL: pieui-0.1.12-py3-none-any.whl
  • Upload date:
  • Size: 75.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pieui-0.1.12-py3-none-any.whl
Algorithm Hash digest
SHA256 ff313223c6907a95aa4ff20b23d40e1ac2a196fb461057739ff4590012beccad
MD5 14482674cac19139ff5142386203f973
BLAKE2b-256 6742fa206d94bded2e9e2fc1d8175c4388c656ea4f6088ed94278df62591feb6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pieui-0.1.12-py3-none-any.whl:

Publisher: publish.yml on Swarm-AI-Labs/pie

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page