Skip to main content

A tool that automates presentation of software demos.

Project description

CodeAnim

CodeAnim is a tool to help you animate VS Code. It provides methods that enable you to type, move the cursor, and send commands to VS Code. It works by sending keystrokes using the pynput library.

Installation

We recommend install CodeAnim using uv.

uv tool install codeanim --python 3.12

Usage

CodeAnim runs commands from Markdown files where codeanim commands are enclosed in a python codeanim fence.

Example

Create a Markdown file called codeanim-markdown-demo.md with the following contents:

# A Markdown Header

Some text to be read.

```python codeanim
# Bring VS Code to the front
vscode.activate()

# Open myfile.py
vscode.focus("myfile.py")

# Insert print("Hello, World!") into myfile.py
write('print("Hello, World!")\n')

# Execute the script
vscode.run()
```

To execute the CodeAnim commands in the Markdown file:

codeanim run codeanim-markdown-demo.md

Flags

  • Set -v or --verbose to enable verbose mode. Commands will be printed out as they are executed.
  • Set --live to enable presentation mode. In this mode, a wait() will be injected after every codeanim fence.

Development

Formatting

This project adopts the Ruff formatter and is enforced by a GitHub action.

VS Code

Useful extensions when developing CodeAnim:

Tests

There aren't any unit tests yet. In the tests folder, there is an end-to-end test that uses CodeAnim to open the scratch.py file, types out some code, and executes it. To run the test:

./e2e-test.sh

Then, validate that it worked by observing that the animation runs, types out:

print("Hello, World!")

And executes the script.

Limitations

CodeAnim currently only works on MacOS because of a dependency on AppleScript, which is used to switch to the VS Code window. Also, many of the commands send Mac specific keystrokes. With some effort, CodeAnim can be made to work on other platforms.

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

codeanim-0.2.0.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

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

codeanim-0.2.0-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file codeanim-0.2.0.tar.gz.

File metadata

  • Download URL: codeanim-0.2.0.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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

Hashes for codeanim-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e962d2852ed34237798d86dafb0f6ff0c08f49f756018c3f4674ced5c31c0046
MD5 62c1d1332f934a26251ad0f65430bb8f
BLAKE2b-256 0eaf575f5f40cc8ef30362db398b7c41f79a70104cecb528b8ce8f650b3c9c66

See more details on using hashes here.

File details

Details for the file codeanim-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: codeanim-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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

Hashes for codeanim-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1a76e2e8c814d2637138f3e1f1d223c5af1d3bb39081d6f7454147aaf0d0341d
MD5 777dc1bf8794f5a35796cf4393144831
BLAKE2b-256 7ab6280bd022784f5c310caaca30f38a121b95cf5d810ead0bf9f24eae31b44a

See more details on using hashes here.

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