mirror of
https://github.com/pyscript/pyscript.git
synced 2025-12-19 18:27:29 -05:00
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 :).
PyScript Demonstrator
A simple webapp to demonstrate the capabilities of PyScript.
Getting started
-
If you don't already have Node.js, install it. The official installer for the LTS version of Node is available from nodejs.org.
-
If you don't already have Rollup, install it. Rollup can be installed as a global resource using:
$ npm install --global rollup -
Install the demo apps requirements:
$ npm install -
Start the server:
$ npm run devThis will compile the resources for the app, and start the development server.
-
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