Files
pyscript/pyscriptjs
Antonio Cuni c75f885cb4 Refactor py-config and the general initialization logic of the page (#806)
This PR is the first step to improve and rationalize the life-cycle of a pyscript app along the lines of what I described in #763 .
It is not a complete solution, more PRs will follow.
Highlights:

- py-config is no longer a web component: the old code relied on PyConfig.connectedCallback to do some logic, but then if no <py-config> tag was present, we had to introduce a dummy one with the sole goal of activating the callback. Now the logic is much more linear.

- the new pyconfig.ts only contains the code which is needed to parse the config; I also moved some relevant code from utils.ts because it didn't really belong to it

- the old PyConfig class did much more than dealing with the config: in particular, it contained the code to initialize the env and the runtime. Now this logic has been moved directly into main.ts, inside the new PyScriptApp class. I plan to refactor the initialization code in further PRs

- the current code relies too much on global state and global variables, they are everywhere. This PR is a first step to solve the problem by introducing a PyScriptApp class, which will hold all the mutable state of the page. Currently only config is stored there, but eventually I will migrate more state to it, until we will have only one global singleton, globalApp

- thanks to what I described above, I could kill the appConfig svelte store: one less store to kill :).
2022-10-04 14:26:12 +02:00
..
2022-10-04 13:13:24 +05:30
2022-10-04 13:13:24 +05:30

PyScript Demonstrator

A simple webapp to demonstrate the capabilities of PyScript.

Getting started

  1. If you don't already have Node.js, install it. The official installer for the LTS version of Node is available from nodejs.org.

  2. If you don't already have Rollup, install it. Rollup can be installed as a global resource using:

    $ npm install --global rollup
    
  3. Install the demo apps requirements:

    $ npm install
    
  4. Start the server:

    $ npm run dev
    

    This will compile the resources for the app, and start the development server.

  5. When the compilation completes, it will display something like:

      Your application is ready~! 🚀
    
      - Local:      http://localhost:8080
      - Network:    Add `--host` to expose
    
    ────────────────── LOGS ──────────────────
    

    Once this is visible, open a browser at http://localhost:8080. This will provide a list of demos that you can run.

More information

There is a forum PyScript where you can discuss the project or ask questions at https://community.anaconda.cloud/c/pyscript