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.
Files changed (58) hide show
  1. {pyweft-0.2.0 → pyweft-0.2.1}/CHANGELOG.md +5 -0
  2. {pyweft-0.2.0 → pyweft-0.2.1}/PKG-INFO +25 -25
  3. {pyweft-0.2.0 → pyweft-0.2.1}/README.md +24 -24
  4. {pyweft-0.2.0 → pyweft-0.2.1}/docs/getting-started.md +7 -10
  5. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/__init__.py +1 -1
  6. {pyweft-0.2.0 → pyweft-0.2.1}/.gitignore +0 -0
  7. {pyweft-0.2.0 → pyweft-0.2.1}/LICENSE +0 -0
  8. {pyweft-0.2.0 → pyweft-0.2.1}/pyproject.toml +0 -0
  9. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/__main__.py +0 -0
  10. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/background.py +0 -0
  11. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/binding.py +0 -0
  12. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/cli.py +0 -0
  13. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/component.py +0 -0
  14. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/desktop.py +0 -0
  15. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/dialogs.py +0 -0
  16. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/differ.py +0 -0
  17. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/dommodel.py +0 -0
  18. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/effects.py +0 -0
  19. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/events.py +0 -0
  20. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/expressions.py +0 -0
  21. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/hotreload.py +0 -0
  22. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/packaging.py +0 -0
  23. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/parser.py +0 -0
  24. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/prerender.py +0 -0
  25. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/renderer.py +0 -0
  26. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/routing.py +0 -0
  27. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/static/loading.html +0 -0
  28. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/static/runtime.js +0 -0
  29. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/static/shell.html +0 -0
  30. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/static/worker.js +0 -0
  31. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/store.py +0 -0
  32. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/styles.py +0 -0
  33. {pyweft-0.2.0 → pyweft-0.2.1}/src/pyweft/vdom.py +0 -0
  34. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_app_settings.py +0 -0
  35. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_async.py +0 -0
  36. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_background.py +0 -0
  37. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_cli.py +0 -0
  38. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_components_kit.py +0 -0
  39. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_compose.py +0 -0
  40. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_desktop.py +0 -0
  41. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_dialogs.py +0 -0
  42. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_differ.py +0 -0
  43. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_dynamic.py +0 -0
  44. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_effects.py +0 -0
  45. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_events.py +0 -0
  46. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_focus.py +0 -0
  47. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_folders.py +0 -0
  48. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_hotreload.py +0 -0
  49. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_inline_handlers.py +0 -0
  50. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_invalidate.py +0 -0
  51. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_libraries.py +0 -0
  52. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_packaging.py +0 -0
  53. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_parser.py +0 -0
  54. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_prerender.py +0 -0
  55. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_renderer.py +0 -0
  56. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_routing.py +0 -0
  57. {pyweft-0.2.0 → pyweft-0.2.1}/tests/test_store.py +0 -0
  58. {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.0
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. Not on PyPI yet, so you install from GitHub (below).
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 git+https://github.com/prassanthn/PyWeft.git
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 git+https://github.com/prassanthn/PyWeft.git
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 "pyweft-ui @ git+https://github.com/prassanthn/PyWeft.git#subdirectory=packages/pyweft-ui"
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:** publishing `pyweft` and `pyweft-ui` to PyPI; more controls (menus,
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. Not on PyPI yet, so you install from GitHub (below).
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 git+https://github.com/prassanthn/PyWeft.git
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 git+https://github.com/prassanthn/PyWeft.git
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 "pyweft-ui @ git+https://github.com/prassanthn/PyWeft.git#subdirectory=packages/pyweft-ui"
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:** publishing `pyweft` and `pyweft-ui` to PyPI; more controls (menus,
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
- PyWeft is not on PyPI yet, so install it straight from GitHub. With uv:
65
+ With uv:
66
66
 
67
67
  ```bash
68
68
  uv init myproject && cd myproject
69
- uv add git+https://github.com/prassanthn/PyWeft.git
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
- `pip install git+https://github.com/prassanthn/PyWeft.git`, then `pyweft new`
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
- It is not on PyPI yet. Install it from GitHub into the same environment as
1733
- PyWeft:
1731
+ Install it into the same environment as PyWeft:
1734
1732
 
1735
1733
  ```bash
1736
- uv add "pyweft-ui @ git+https://github.com/prassanthn/PyWeft.git#subdirectory=packages/pyweft-ui"
1734
+ uv add pyweft-ui
1737
1735
  ```
1738
1736
 
1739
- (with pip: `pip install "git+https://github.com/prassanthn/PyWeft.git#subdirectory=packages/pyweft-ui"`),
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.
@@ -24,7 +24,7 @@ from .store import Store
24
24
  from .styles import collect_styles, scope_css
25
25
  from .vdom import Element, Node, Text, to_dicts
26
26
 
27
- __version__ = "0.2.0"
27
+ __version__ = "0.2.1"
28
28
 
29
29
  __all__ = [
30
30
  "Component",
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