Skip to main content

JAnim Stdio Interact

MIT License PyPI Latest Release

> English < | 简体中文

A utility library for interacting with JAnim GUI and managing windows via standard input/output

Basic Usage

Interact with the JAnim GUI by passing JSON commands via stdio to open and close specific instances.

First, start the janim-stdio-i program:

janim-stdio-i host

For example, to compile a code snippet and build the Timeline within it for display in a preview window, send the following to stdin:

{"type": "execute", "key": "id1", "source": "from janim.examples import *\nclass A(HelloJAnimExample): pass"}

You will see a preview window open displaying the classic HelloJAnimExample.

[!WARNING] All commands sent to stdin must be on a single line. Multi-line commands will be truncated.

Here, "key": "id1" is used for window reuse. If you send an execute command with the same key, the Timeline in the existing window will be replaced without opening a new window.

{"type": "execute", "key": "id1", "source": "from janim.examples import *\nclass A(RotatingPieExample): ..."}

Sending the command above replaces the HelloJAnimExample in the original window with RotatingPieExample.

[!NOTE] If a code snippet contains multiple Timelines, the first one is used for the initial build.

On subsequent rebuilds (replacements), it attempts to find a Timeline with the same name as the previous one; if not found, it defaults to the first one.

If we use a different key, for example:

{"type": "execute", "key": "id2", "source": "from janim.examples import *\nclass A(ArrowPointingExample): ..."}

A new window will open. Essentially, one key corresponds to one window.

In addition to compiling and building Timelines via stdin, information generated by the GUI is returned via stdout. See below for details.

API Reference

stdin

  • "type": "execute"

    Required parameters:

    • "key": Unique identifier for the window.
    • "source": Source code for compilation.

    Compiles and builds the Timeline to display in the preview window.

    If the window corresponding to key already exists, the original Timeline in that window is replaced with the new one.

    Example:

    {"type": "execute", "key": "id1", "source": "from janim.examples import *\nclass A(HelloJAnimExample): pass"}
    
  • "type": "close"

    Required parameters:

    • "key": Unique identifier for the window.

    Closes the window corresponding to key.

    Example:

    {"type": "close", "key": "id1"}
    

stdout

{"type": "viewer-msg", "key": "...", "from": "...", "janim": { ... }}
Field Type Description
type string Fixed as "viewer-msg", identifying the message category
key string Corresponds to the identifier key used during creation
from string Sender source. Possible values: "execute", "close", "gui"
janim object The specific event payload, containing the event type and data

When "from": "execute", it represents the result of the execute command sent to stdin:

  • When source code compilation fails, the payload is

    "janim": {"type": "error", "reason": "compile-failed"}
    
  • When the source code contains no usable Timeline, the payload is:

    "janim": {"type": "error", "reason": "no-timeline"}
    
  • When the Timeline build fails, the payload is:

    "janim": {"type": "error", "reason": "build-failed"}
    
  • When execution is successful, the payload is:

    "janim": {"type": "success"}
    

When "from": "close", it represents the result of the close command sent to stdin:

  • When no preview interface is found for the identifier, the payload is:

    "janim": {"type": "error", "reason": "not-found"}
    
  • When executed successfully, the payload is:

    "janim": {"type": "success"}
    

When "from": "gui", it represents information generated by the GUI:

  • When the interface is created, the payload is:

    "janim": {"type": "created"}
    
  • When the interface content is replaced, the payload is:

    "janim": {"type": "rebuilt"}
    
  • When the preview progress changes, the payload is:

    "janim": {"type": "lineno", "data": <current_line_number>}
    
  • When the interface is closed, the payload is:

    "janim": {"type": "close_event"}
    

Metadata

Release files for janim-stdio-interact 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for janim-stdio-interact 0.1.3
File Size Uploaded
janim_stdio_interact-0.1.3.tar.gz 11.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for janim-stdio-interact 0.1.3
File Interpreter ABI Platform
janim_stdio_interact-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 23.0 kB

Release files / janim_stdio_interact-0.1.3.tar.gz

Download URL janim_stdio_interact-0.1.3.tar.gz
Size 11.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a042027750d90e03ac768dcc861d55d6b7260374438474a74b9e42229f4e7edf
BLAKE2b-256 checksum
How to use checksums
1401635a5026626a9c6c3b18d1e224070760fd2309c46137420e1b20c65a8a5d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.32.5

Release files / janim_stdio_interact-0.1.3-py3-none-any.whl

Download URL janim_stdio_interact-0.1.3-py3-none-any.whl
Size 11.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4847d18448141405c45ecd65f134b4dc8201b741a738fe94d3a260f7c74db169
BLAKE2b-256 checksum
How to use checksums
006df3e10a220abf6c3be10e341317cc098e1b219b56e49e72ea12f22ca9033f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.32.5

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page