pyweft 0.2.0__tar.gz → 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyweft-0.2.0 → pyweft-0.2.1}/CHANGELOG.md +5 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/PKG-INFO +25 -25
- {pyweft-0.2.0 → pyweft-0.2.1}/README.md +24 -24
- {pyweft-0.2.0 → pyweft-0.2.1}/docs/getting-started.md +7 -10
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/__init__.py +1 -1
- {pyweft-0.2.0 → pyweft-0.2.1}/.gitignore +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/LICENSE +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/pyproject.toml +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/__main__.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/background.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/binding.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/cli.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/component.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/desktop.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/dialogs.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/differ.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/dommodel.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/effects.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/events.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/expressions.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/hotreload.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/packaging.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/parser.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/prerender.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/renderer.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/routing.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/static/loading.html +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/static/runtime.js +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/static/shell.html +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/static/worker.js +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/store.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/styles.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/vdom.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_app_settings.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_async.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_background.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_cli.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_components_kit.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_compose.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_desktop.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_dialogs.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_differ.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_dynamic.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_effects.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_events.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_focus.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_folders.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_hotreload.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_inline_handlers.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_invalidate.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_libraries.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_packaging.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_parser.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_prerender.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_renderer.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_routing.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_store.py +0 -0
- {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_styles.py +0 -0
|
@@ -8,6 +8,11 @@ releasing moves them under the new version (see [RELEASING.md](RELEASING.md)).
|
|
|
8
8
|
|
|
9
9
|
## Unreleased
|
|
10
10
|
|
|
11
|
+
## 0.2.1
|
|
12
|
+
|
|
13
|
+
- The PyPI page installs from PyPI, and its links to the guide and the
|
|
14
|
+
toolkit work there.
|
|
15
|
+
|
|
11
16
|
## 0.2.0
|
|
12
17
|
|
|
13
18
|
The first release. (It starts at 0.2.0 because an earlier, unrelated
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: pyweft
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: A UI framework for Python: XML templates, Python code-behind, one render core for web, desktop and mobile.
|
|
5
5
|
Project-URL: Homepage, https://github.com/prassanthn/PyWeft
|
|
6
6
|
Project-URL: Documentation, https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md
|
|
@@ -56,7 +56,7 @@ is plain Python fields, and the page updates itself after every event.
|
|
|
56
56
|
|
|
57
57
|
> **Status:** a working proof of concept. Web apps and desktop apps (run
|
|
58
58
|
> locally or built into a program to hand out) work today. APIs may still
|
|
59
|
-
> change.
|
|
59
|
+
> change.
|
|
60
60
|
|
|
61
61
|
## Quick start
|
|
62
62
|
|
|
@@ -64,7 +64,7 @@ You need Python 3.10 or newer. With [uv](https://docs.astral.sh/uv/):
|
|
|
64
64
|
|
|
65
65
|
```bash
|
|
66
66
|
uv init myproject && cd myproject
|
|
67
|
-
uv add
|
|
67
|
+
uv add pyweft
|
|
68
68
|
uv run pyweft new myapp
|
|
69
69
|
uv run pyweft run myapp
|
|
70
70
|
```
|
|
@@ -76,7 +76,7 @@ time, cached after that); then it comes alive.
|
|
|
76
76
|
With pip instead:
|
|
77
77
|
|
|
78
78
|
```bash
|
|
79
|
-
pip install
|
|
79
|
+
pip install pyweft
|
|
80
80
|
pyweft new myapp
|
|
81
81
|
pyweft run myapp
|
|
82
82
|
```
|
|
@@ -130,13 +130,13 @@ height = 800
|
|
|
130
130
|
|
|
131
131
|
## Ready-made controls (no HTML or CSS needed)
|
|
132
132
|
|
|
133
|
-
[`pyweft-ui`](packages/pyweft-ui/README.md) gives you styled, accessible
|
|
133
|
+
[`pyweft-ui`](https://github.com/prassanthn/PyWeft/blob/main/packages/pyweft-ui/README.md) gives you styled, accessible
|
|
134
134
|
controls as components: buttons, text fields, selects, checkboxes, switches,
|
|
135
135
|
cards, tabs, sortable tables, dialogs, alerts, toasts, layout and light/dark
|
|
136
136
|
themes.
|
|
137
137
|
|
|
138
138
|
```bash
|
|
139
|
-
uv add
|
|
139
|
+
uv add pyweft-ui
|
|
140
140
|
```
|
|
141
141
|
|
|
142
142
|
Add `"pyweft-ui"` to the `dependencies` list in `myapp/pyproject.toml`, then
|
|
@@ -217,20 +217,20 @@ To see every control live, clone this repository and run
|
|
|
217
217
|
|
|
218
218
|
| You want to | Read |
|
|
219
219
|
|---|---|
|
|
220
|
-
| Learn the basics: state, templates, events | [Getting started](docs/getting-started.md), sections 1–3 |
|
|
221
|
-
| Run code when a component appears, updates or goes away | [Lifecycle](docs/getting-started.md#lifecycle-when-your-code-runs) |
|
|
222
|
-
| Split an app into components, use slots | [Composing components](docs/getting-started.md#4-composing-components) |
|
|
223
|
-
| Build an app with several pages | [Pages and navigation](docs/getting-started.md#pages-and-navigation) |
|
|
224
|
-
| Handle forms and keyboard input | [Binding form controls](docs/getting-started.md#binding-form-controls), [event modifiers](docs/getting-started.md#event-modifiers) |
|
|
225
|
-
| Load data, run async code, do heavy work | [Async handlers](docs/getting-started.md#async-handlers-and-background-work), [`run_in_background`](docs/getting-started.md#heavy-work-run_in_background) |
|
|
226
|
-
| Style with Tailwind or Bootstrap | [Using CSS frameworks](docs/getting-started.md#using-css-frameworks) |
|
|
227
|
-
| Build screens with the ready-made controls | [pyweft-ui guide](packages/pyweft-ui/docs/guide.md), then the [reference](packages/pyweft-ui/README.md) |
|
|
228
|
-
| Deploy your app | [Building for deployment](docs/getting-started.md#building-for-deployment) |
|
|
229
|
-
| Run it as a desktop app | [A desktop app](docs/getting-started.md#a-desktop-app-pyweft-run---desktop) |
|
|
230
|
-
| Hand out a desktop app (`.exe`, `.app`) | [Handing out a desktop app](docs/getting-started.md#handing-out-a-desktop-app-pyweft-build---desktop) |
|
|
231
|
-
| Open and save files, ask for confirmation | [Files and dialogs](docs/getting-started.md#files-and-dialogs) |
|
|
232
|
-
| Name the app, give it an icon | [The app's title and icon](docs/getting-started.md#the-apps-title-and-icon) |
|
|
233
|
-
| Test components without a browser | [Using the engine from plain Python](docs/getting-started.md#6-using-the-engine-from-plain-python) |
|
|
220
|
+
| Learn the basics: state, templates, events | [Getting started](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md), sections 1–3 |
|
|
221
|
+
| Run code when a component appears, updates or goes away | [Lifecycle](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#lifecycle-when-your-code-runs) |
|
|
222
|
+
| Split an app into components, use slots | [Composing components](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#4-composing-components) |
|
|
223
|
+
| Build an app with several pages | [Pages and navigation](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#pages-and-navigation) |
|
|
224
|
+
| Handle forms and keyboard input | [Binding form controls](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#binding-form-controls), [event modifiers](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#event-modifiers) |
|
|
225
|
+
| Load data, run async code, do heavy work | [Async handlers](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#async-handlers-and-background-work), [`run_in_background`](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#heavy-work-run_in_background) |
|
|
226
|
+
| Style with Tailwind or Bootstrap | [Using CSS frameworks](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#using-css-frameworks) |
|
|
227
|
+
| Build screens with the ready-made controls | [pyweft-ui guide](https://github.com/prassanthn/PyWeft/blob/main/packages/pyweft-ui/docs/guide.md), then the [reference](https://github.com/prassanthn/PyWeft/blob/main/packages/pyweft-ui/README.md) |
|
|
228
|
+
| Deploy your app | [Building for deployment](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#building-for-deployment) |
|
|
229
|
+
| Run it as a desktop app | [A desktop app](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#a-desktop-app-pyweft-run---desktop) |
|
|
230
|
+
| Hand out a desktop app (`.exe`, `.app`) | [Handing out a desktop app](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#handing-out-a-desktop-app-pyweft-build---desktop) |
|
|
231
|
+
| Open and save files, ask for confirmation | [Files and dialogs](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#files-and-dialogs) |
|
|
232
|
+
| Name the app, give it an icon | [The app's title and icon](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#the-apps-title-and-icon) |
|
|
233
|
+
| Test components without a browser | [Using the engine from plain Python](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#6-using-the-engine-from-plain-python) |
|
|
234
234
|
|
|
235
235
|
`examples/todo/` is a small complete app, and `examples/shop/` one with
|
|
236
236
|
pages; run them from a clone with `uv run pyweft run examples/todo`.
|
|
@@ -279,8 +279,8 @@ uv run pyweft run packages/pyweft-ui/gallery # every control
|
|
|
279
279
|
|
|
280
280
|
With pip: `pip install -e ".[dev]"` and `pip install -e packages/pyweft-ui`.
|
|
281
281
|
|
|
282
|
-
Releases go to PyPI by pushing a version tag; [RELEASING.md](RELEASING.md)
|
|
283
|
-
has the steps, and [CHANGELOG.md](CHANGELOG.md) what each release changed.
|
|
282
|
+
Releases go to PyPI by pushing a version tag; [RELEASING.md](https://github.com/prassanthn/PyWeft/blob/main/RELEASING.md)
|
|
283
|
+
has the steps, and [CHANGELOG.md](https://github.com/prassanthn/PyWeft/blob/main/CHANGELOG.md) what each release changed.
|
|
284
284
|
|
|
285
285
|
```
|
|
286
286
|
src/pyweft/ the framework (zero runtime dependencies)
|
|
@@ -311,9 +311,9 @@ handlers and Web Worker background work; file and confirmation dialogs on
|
|
|
311
311
|
both targets; the app's title and icon, and window settings; scoped styles
|
|
312
312
|
and CSS framework support; the `pyweft` CLI with hot reload, static builds
|
|
313
313
|
and pre-rendered first screens; `pyweft-ui` with 22 keyboard-accessible
|
|
314
|
-
controls and a gallery.
|
|
314
|
+
controls and a gallery; both released on PyPI.
|
|
315
315
|
|
|
316
|
-
**Next:**
|
|
316
|
+
**Next:** more controls (menus,
|
|
317
317
|
a date picker, form validation); installers (`.msi`, `.dmg`) and code
|
|
318
318
|
signing for desktop apps.
|
|
319
319
|
|
|
@@ -321,4 +321,4 @@ signing for desktop apps.
|
|
|
321
321
|
|
|
322
322
|
## License
|
|
323
323
|
|
|
324
|
-
MIT. See [LICENSE](LICENSE).
|
|
324
|
+
MIT. See [LICENSE](https://github.com/prassanthn/PyWeft/blob/main/LICENSE).
|
|
@@ -27,7 +27,7 @@ is plain Python fields, and the page updates itself after every event.
|
|
|
27
27
|
|
|
28
28
|
> **Status:** a working proof of concept. Web apps and desktop apps (run
|
|
29
29
|
> locally or built into a program to hand out) work today. APIs may still
|
|
30
|
-
> change.
|
|
30
|
+
> change.
|
|
31
31
|
|
|
32
32
|
## Quick start
|
|
33
33
|
|
|
@@ -35,7 +35,7 @@ You need Python 3.10 or newer. With [uv](https://docs.astral.sh/uv/):
|
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
37
|
uv init myproject && cd myproject
|
|
38
|
-
uv add
|
|
38
|
+
uv add pyweft
|
|
39
39
|
uv run pyweft new myapp
|
|
40
40
|
uv run pyweft run myapp
|
|
41
41
|
```
|
|
@@ -47,7 +47,7 @@ time, cached after that); then it comes alive.
|
|
|
47
47
|
With pip instead:
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
|
-
pip install
|
|
50
|
+
pip install pyweft
|
|
51
51
|
pyweft new myapp
|
|
52
52
|
pyweft run myapp
|
|
53
53
|
```
|
|
@@ -101,13 +101,13 @@ height = 800
|
|
|
101
101
|
|
|
102
102
|
## Ready-made controls (no HTML or CSS needed)
|
|
103
103
|
|
|
104
|
-
[`pyweft-ui`](packages/pyweft-ui/README.md) gives you styled, accessible
|
|
104
|
+
[`pyweft-ui`](https://github.com/prassanthn/PyWeft/blob/main/packages/pyweft-ui/README.md) gives you styled, accessible
|
|
105
105
|
controls as components: buttons, text fields, selects, checkboxes, switches,
|
|
106
106
|
cards, tabs, sortable tables, dialogs, alerts, toasts, layout and light/dark
|
|
107
107
|
themes.
|
|
108
108
|
|
|
109
109
|
```bash
|
|
110
|
-
uv add
|
|
110
|
+
uv add pyweft-ui
|
|
111
111
|
```
|
|
112
112
|
|
|
113
113
|
Add `"pyweft-ui"` to the `dependencies` list in `myapp/pyproject.toml`, then
|
|
@@ -188,20 +188,20 @@ To see every control live, clone this repository and run
|
|
|
188
188
|
|
|
189
189
|
| You want to | Read |
|
|
190
190
|
|---|---|
|
|
191
|
-
| Learn the basics: state, templates, events | [Getting started](docs/getting-started.md), sections 1–3 |
|
|
192
|
-
| Run code when a component appears, updates or goes away | [Lifecycle](docs/getting-started.md#lifecycle-when-your-code-runs) |
|
|
193
|
-
| Split an app into components, use slots | [Composing components](docs/getting-started.md#4-composing-components) |
|
|
194
|
-
| Build an app with several pages | [Pages and navigation](docs/getting-started.md#pages-and-navigation) |
|
|
195
|
-
| Handle forms and keyboard input | [Binding form controls](docs/getting-started.md#binding-form-controls), [event modifiers](docs/getting-started.md#event-modifiers) |
|
|
196
|
-
| Load data, run async code, do heavy work | [Async handlers](docs/getting-started.md#async-handlers-and-background-work), [`run_in_background`](docs/getting-started.md#heavy-work-run_in_background) |
|
|
197
|
-
| Style with Tailwind or Bootstrap | [Using CSS frameworks](docs/getting-started.md#using-css-frameworks) |
|
|
198
|
-
| Build screens with the ready-made controls | [pyweft-ui guide](packages/pyweft-ui/docs/guide.md), then the [reference](packages/pyweft-ui/README.md) |
|
|
199
|
-
| Deploy your app | [Building for deployment](docs/getting-started.md#building-for-deployment) |
|
|
200
|
-
| Run it as a desktop app | [A desktop app](docs/getting-started.md#a-desktop-app-pyweft-run---desktop) |
|
|
201
|
-
| Hand out a desktop app (`.exe`, `.app`) | [Handing out a desktop app](docs/getting-started.md#handing-out-a-desktop-app-pyweft-build---desktop) |
|
|
202
|
-
| Open and save files, ask for confirmation | [Files and dialogs](docs/getting-started.md#files-and-dialogs) |
|
|
203
|
-
| Name the app, give it an icon | [The app's title and icon](docs/getting-started.md#the-apps-title-and-icon) |
|
|
204
|
-
| Test components without a browser | [Using the engine from plain Python](docs/getting-started.md#6-using-the-engine-from-plain-python) |
|
|
191
|
+
| Learn the basics: state, templates, events | [Getting started](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md), sections 1–3 |
|
|
192
|
+
| Run code when a component appears, updates or goes away | [Lifecycle](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#lifecycle-when-your-code-runs) |
|
|
193
|
+
| Split an app into components, use slots | [Composing components](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#4-composing-components) |
|
|
194
|
+
| Build an app with several pages | [Pages and navigation](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#pages-and-navigation) |
|
|
195
|
+
| Handle forms and keyboard input | [Binding form controls](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#binding-form-controls), [event modifiers](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#event-modifiers) |
|
|
196
|
+
| Load data, run async code, do heavy work | [Async handlers](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#async-handlers-and-background-work), [`run_in_background`](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#heavy-work-run_in_background) |
|
|
197
|
+
| Style with Tailwind or Bootstrap | [Using CSS frameworks](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#using-css-frameworks) |
|
|
198
|
+
| Build screens with the ready-made controls | [pyweft-ui guide](https://github.com/prassanthn/PyWeft/blob/main/packages/pyweft-ui/docs/guide.md), then the [reference](https://github.com/prassanthn/PyWeft/blob/main/packages/pyweft-ui/README.md) |
|
|
199
|
+
| Deploy your app | [Building for deployment](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#building-for-deployment) |
|
|
200
|
+
| Run it as a desktop app | [A desktop app](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#a-desktop-app-pyweft-run---desktop) |
|
|
201
|
+
| Hand out a desktop app (`.exe`, `.app`) | [Handing out a desktop app](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#handing-out-a-desktop-app-pyweft-build---desktop) |
|
|
202
|
+
| Open and save files, ask for confirmation | [Files and dialogs](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#files-and-dialogs) |
|
|
203
|
+
| Name the app, give it an icon | [The app's title and icon](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#the-apps-title-and-icon) |
|
|
204
|
+
| Test components without a browser | [Using the engine from plain Python](https://github.com/prassanthn/PyWeft/blob/main/docs/getting-started.md#6-using-the-engine-from-plain-python) |
|
|
205
205
|
|
|
206
206
|
`examples/todo/` is a small complete app, and `examples/shop/` one with
|
|
207
207
|
pages; run them from a clone with `uv run pyweft run examples/todo`.
|
|
@@ -250,8 +250,8 @@ uv run pyweft run packages/pyweft-ui/gallery # every control
|
|
|
250
250
|
|
|
251
251
|
With pip: `pip install -e ".[dev]"` and `pip install -e packages/pyweft-ui`.
|
|
252
252
|
|
|
253
|
-
Releases go to PyPI by pushing a version tag; [RELEASING.md](RELEASING.md)
|
|
254
|
-
has the steps, and [CHANGELOG.md](CHANGELOG.md) what each release changed.
|
|
253
|
+
Releases go to PyPI by pushing a version tag; [RELEASING.md](https://github.com/prassanthn/PyWeft/blob/main/RELEASING.md)
|
|
254
|
+
has the steps, and [CHANGELOG.md](https://github.com/prassanthn/PyWeft/blob/main/CHANGELOG.md) what each release changed.
|
|
255
255
|
|
|
256
256
|
```
|
|
257
257
|
src/pyweft/ the framework (zero runtime dependencies)
|
|
@@ -282,9 +282,9 @@ handlers and Web Worker background work; file and confirmation dialogs on
|
|
|
282
282
|
both targets; the app's title and icon, and window settings; scoped styles
|
|
283
283
|
and CSS framework support; the `pyweft` CLI with hot reload, static builds
|
|
284
284
|
and pre-rendered first screens; `pyweft-ui` with 22 keyboard-accessible
|
|
285
|
-
controls and a gallery.
|
|
285
|
+
controls and a gallery; both released on PyPI.
|
|
286
286
|
|
|
287
|
-
**Next:**
|
|
287
|
+
**Next:** more controls (menus,
|
|
288
288
|
a date picker, form validation); installers (`.msi`, `.dmg`) and code
|
|
289
289
|
signing for desktop apps.
|
|
290
290
|
|
|
@@ -292,4 +292,4 @@ signing for desktop apps.
|
|
|
292
292
|
|
|
293
293
|
## License
|
|
294
294
|
|
|
295
|
-
MIT. See [LICENSE](LICENSE).
|
|
295
|
+
MIT. See [LICENSE](https://github.com/prassanthn/PyWeft/blob/main/LICENSE).
|
|
@@ -62,18 +62,17 @@ later mobile: only the transport differs.
|
|
|
62
62
|
|
|
63
63
|
## 1. Install
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
With uv:
|
|
66
66
|
|
|
67
67
|
```bash
|
|
68
68
|
uv init myproject && cd myproject
|
|
69
|
-
uv add
|
|
69
|
+
uv add pyweft
|
|
70
70
|
uv run pyweft new myapp
|
|
71
71
|
uv run pyweft run myapp
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
-
With pip, the equivalent is
|
|
75
|
-
`
|
|
76
|
-
and `pyweft run` directly.
|
|
74
|
+
With pip, the equivalent is `pip install pyweft`, then `pyweft new` and
|
|
75
|
+
`pyweft run` directly.
|
|
77
76
|
|
|
78
77
|
To hack on the framework itself, clone it and install in editable mode:
|
|
79
78
|
|
|
@@ -1729,15 +1728,13 @@ reference; and the gallery shows every control live:
|
|
|
1729
1728
|
uv run pyweft run packages/pyweft-ui/gallery
|
|
1730
1729
|
```
|
|
1731
1730
|
|
|
1732
|
-
|
|
1733
|
-
PyWeft:
|
|
1731
|
+
Install it into the same environment as PyWeft:
|
|
1734
1732
|
|
|
1735
1733
|
```bash
|
|
1736
|
-
uv add
|
|
1734
|
+
uv add pyweft-ui
|
|
1737
1735
|
```
|
|
1738
1736
|
|
|
1739
|
-
(with pip: `pip install "
|
|
1740
|
-
then add `"pyweft-ui"` to the `dependencies` in your app's own
|
|
1737
|
+
(with pip: `pip install pyweft-ui`), then add `"pyweft-ui"` to the `dependencies` in your app's own
|
|
1741
1738
|
`pyproject.toml`. PyWeft ships it to the browser for you (see "Components
|
|
1742
1739
|
from packages"). Inside a clone of this repository, `uv sync` already
|
|
1743
1740
|
installs it.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|