Skip to main content

A Python package for creative coding on the web.

Project description

proceso

A Python package for creative coding on the web.

proceso provides a Pythonic interface to the p5.js library. The package is designed for Pyodide-based environments including PyScript and (soonish) JupyterLite. Similar to py5, proceso's goal is to integrate p5.js into the Python ecosystem with thoughtful choices about how to do so in the browser.

Here is an example of how to create a proceso sketch with PyScript:

<!DOCTYPE html>
<html lang="en-us">

<head>
    <title>My Sketch</title>
    <meta charset="utf-8" />

    <link rel="stylesheet" href="https://pyscript.net/releases/2023.03.1/pyscript.css" />
    <script defer src="https://pyscript.net/releases/2023.03.1/pyscript.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.6.0/p5.min.js"></script>
    <py-config>
        packages = ["numpy", "proceso"]
    </py-config>
</head>

<body>
    <main></main>
    <py-script src="sketch.py"></py-script>
</body>

</html>

Static Sketches

Similar to Processing, proceso enables beginners to start programming with "static sketches" before introducing animation and interaction. The following example draws a few shapes and a flower on the screen.

from proceso import Sketch


p5 = Sketch()

# Create the canvas
p5.create_canvas(720, 400)
p5.background(200)

# Set colors
p5.fill(204, 101, 192, 127)
p5.stroke(127, 63, 120)

# A rectangle
p5.rect(40, 120, 120, 40)
# An ellipse
p5.ellipse(240, 240, 80, 80)
# A triangle
p5.triangle(300, 100, 320, 100, 310, 80)

# A design for a simple flower
p5.translate(580, 200)
p5.no_stroke()
for _ in range(10):
    p5.ellipse(0, 30, 20, 80)
    p5.rotate(p5.PI / 5)

Active Sketches

proceso's "active sketches" provide the run_sketch() method to handle initialization, looping, and events. The sketch below animates a ball bouncing around the canvas and clears the canvas when a mouse press is detected.

from proceso import Sketch


p5 = Sketch()


pos = p5.Vector(200, 200)
vel = p5.Vector.random(2)
r = 25


def setup():
    p5.create_canvas(400, 400)
    p5.background("#1e90ff")
    p5.fill("orchid")
    p5.stroke(255)


def draw():
    global pos, vel
    pos += vel

    p5.circle(pos.x, pos.y, 2 * r)

    if pos.x < r or pos.x > p5.width - r:
        vel.x *= -1
    if pos.y < r or pos.y > p5.height - r:
        vel.y *= -1

    if p5.is_mouse_pressed == True:
        p5.background("dodgerblue")


p5.run_sketch(setup=setup, draw=draw)

Roadmap

  • Improve documentation
  • Fix known bugs
  • Finish API
  • Support JupyterLite
  • Translate p5.js test suite?
  • Add CLI with hot reload
  • Add bindings for p5.js addon libraries

Acknowledgements

  • proceso is, first and foremost, an interface to the p5.js library. Nearly all of the package's documentation and examples are adapted from their p5.js counterparts. Portions of the source code are also adapted from the original JavaScript implementation.
  • The Vector class is lovingly borrowed from py5 as are most of py5's naming conventions.
  • Basthon, Py5.js, and pyp5js all pointed the way.

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

proceso-0.0.7.tar.gz (58.7 kB view details)

Uploaded Source

Built Distribution

proceso-0.0.7-py3-none-any.whl (64.5 kB view details)

Uploaded Python 3

File details

Details for the file proceso-0.0.7.tar.gz.

File metadata

  • Download URL: proceso-0.0.7.tar.gz
  • Upload date:
  • Size: 58.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.11

File hashes

Hashes for proceso-0.0.7.tar.gz
Algorithm Hash digest
SHA256 9376f56a24987307bf76c941142c19e7ea6f05e410e0093301eb1aa19c7a17b4
MD5 f32ded77bd15a419acc886b09f1c681d
BLAKE2b-256 085b2f46b3ed80167bdf13ac5d1776e25db575e4de7d2771b49f6905f9f2ade0

See more details on using hashes here.

File details

Details for the file proceso-0.0.7-py3-none-any.whl.

File metadata

  • Download URL: proceso-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 64.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.11

File hashes

Hashes for proceso-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 eb841a7a888fbb3ebf58b48f33a98fa034b2e8f10b382565e927a31c9d381ac4
MD5 f6465d1256238e470c5324eeadc84770
BLAKE2b-256 2c327eed5564c32c6a997dbb1d441f9559bebef4d4b11821e67fc5ae95634413

See more details on using hashes here.

Supported by

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