diff --git a/AGENTS.md b/AGENTS.md index 3485eeb..e620e91 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -230,7 +230,7 @@ worktree so a test can see it. Read it in place. - The distribution name is `pythonx-compose` (`pyproject.toml`); the import package is `pythonx.compose`. - **Release.** After the maintainer approves, publish a GitHub Release whose tag is `v` - (the `pyproject.toml` version, e.g. `v0.1.0a1`; mark an alpha or beta as a pre-release) on the + (the `pyproject.toml` version, e.g. `v0.1.0a2`; mark an alpha or beta as a pre-release) on the commit to release; `.github/workflows/publish-pypi.yml` runs on the Release, checks, builds and publishes through PyPI trusted publishing (environment `pypi`). Pushing a tag alone publishes nothing. Never upload by hand, and never store a PyPI token. @@ -261,6 +261,6 @@ worktree so a test can see it. Read it in place. comma, colon or parentheses, whichever reads best. The en-dash in ranges (2023–2024, 3.11–3.13) is fine. - Install and run examples use only uv, ppp (pypackpack) and tcl (toolchain-lite): `uv add - --prerelease allow pythonx-compose`, `ppp core add "pythonx-compose==0.1.0a1"`, `tcl install + --prerelease allow pythonx-compose`, `ppp core add "pythonx-compose==0.1.0a2"`, `tcl install pythonx-compose`, `uv run ...`. No `pip` examples. The published 0.1.0a1 Release notes are a record and stay as they are. diff --git a/README.md b/README.md index c6d7b81..52d19f0 100644 --- a/README.md +++ b/README.md @@ -88,13 +88,13 @@ Each module is a real file whose `__init__.py` calls one re-export rule; names r ## πŸš€ Quick start > [!NOTE] -> `pythonx-compose` is an **alpha**. `0.1.0a1` is on [PyPI](https://pypi.org/project/pythonx-compose/); +> `pythonx-compose` is an **alpha**. `0.1.0a2` is on [PyPI](https://pypi.org/project/pythonx-compose/); > as a pre-release it installs with uv (or ppp, or tcl): ```bash uv add --prerelease allow pythonx-compose # or, with pypackpack, into a package of a ppp workspace: -ppp core add "pythonx-compose==0.1.0a1" +ppp core add "pythonx-compose==0.1.0a2" # or, with toolchain-lite: tcl install pythonx-compose ``` diff --git a/docs/SPEC.md b/docs/SPEC.md index 0f309f0..213580c 100644 --- a/docs/SPEC.md +++ b/docs/SPEC.md @@ -46,7 +46,7 @@ in Β§9 and are not counted as features. ### S1.1 Installed as `pythonx-compose`, importing `pythonx.compose`: `implemented` -`pyproject.toml` declares `name = "pythonx-compose"`, version `0.1.0a1`, setuptools build, +`pyproject.toml` declares `name = "pythonx-compose"`, version `0.1.0a2`, setuptools build, `requires-python >= 3.11` (the runtime reads the manifest with `tomllib`), and `packages.find include = ["pythonx.compose*"]`. diff --git a/docs/guide/getting-started.html b/docs/guide/getting-started.html index 2e63831..72f0035 100644 --- a/docs/guide/getting-started.html +++ b/docs/guide/getting-started.html @@ -30,7 +30,7 @@

Getting startedμ‹œμž‘ν•˜κΈ°

From clone to first call클둠뢀터 첫 ν˜ΈμΆœκΉŒμ§€

Five minutes, honest about what runs.5 λΆ„, λ™μž‘ν•˜λŠ” λ²”μœ„λ₯Ό μ†”μ§ν•˜κ²Œ.

-

pythonx-compose is an alpha: 0.1.0a1 is on PyPI. As a pre-release it installs with uv add --prerelease allow pythonx-compose; with ppp it is ppp core add "pythonx-compose==0.1.0a1", with tcl tcl install pythonx-compose. It needs Python 3.11 or later. This page shows how to get the source, run the tests, and what you can call today.

pythonx-compose λŠ” μ•ŒνŒŒ 단계이며 0.1.0a1 이 PyPI 에 μžˆμŠ΅λ‹ˆλ‹€. ν”„λ¦¬λ¦΄λ¦¬μŠ€μ΄λ―€λ‘œ uv add --prerelease allow pythonx-compose 둜 μ„€μΉ˜ν•˜λ©°, ppp λ‘œλŠ” ppp core add "pythonx-compose==0.1.0a1", tcl λ‘œλŠ” tcl install pythonx-compose μž…λ‹ˆλ‹€. 파이썬 3.11 이상이 ν•„μš”ν•©λ‹ˆλ‹€. 이 νŽ˜μ΄μ§€λŠ” μ†ŒμŠ€λ₯Ό λ°›κ³ , ν…ŒμŠ€νŠΈλ₯Ό 돌리고, μ§€κΈˆ ν˜ΈμΆœν•  수 μžˆλŠ” 것을 λ³΄μ—¬μ€λ‹ˆλ‹€.

+

pythonx-compose is an alpha: 0.1.0a2 is on PyPI. As a pre-release it installs with uv add --prerelease allow pythonx-compose; with ppp it is ppp core add "pythonx-compose==0.1.0a2", with tcl tcl install pythonx-compose. It needs Python 3.11 or later. This page shows how to get the source, run the tests, and what you can call today.

pythonx-compose λŠ” μ•ŒνŒŒ 단계이며 0.1.0a2 κ°€ PyPI 에 μžˆμŠ΅λ‹ˆλ‹€. ν”„λ¦¬λ¦΄λ¦¬μŠ€μ΄λ―€λ‘œ uv add --prerelease allow pythonx-compose 둜 μ„€μΉ˜ν•˜λ©°, ppp λ‘œλŠ” ppp core add "pythonx-compose==0.1.0a2", tcl λ‘œλŠ” tcl install pythonx-compose μž…λ‹ˆλ‹€. 파이썬 3.11 이상이 ν•„μš”ν•©λ‹ˆλ‹€. 이 νŽ˜μ΄μ§€λŠ” μ†ŒμŠ€λ₯Ό λ°›κ³ , ν…ŒμŠ€νŠΈλ₯Ό 돌리고, μ§€κΈˆ ν˜ΈμΆœν•  수 μžˆλŠ” 것을 λ³΄μ—¬μ€λ‹ˆλ‹€.

1. Get the source1. μ†ŒμŠ€ λ°›κΈ°

diff --git a/docs/guide/status.html b/docs/guide/status.html index 05055b8..071684e 100644 --- a/docs/guide/status.html +++ b/docs/guide/status.html @@ -40,7 +40,7 @@

FAQ

-
Can I install it from PyPI?PyPI μ—μ„œ μ„€μΉ˜ν•  수 μžˆλ‚˜μš”?

Yes: uv add --prerelease allow pythonx-compose installs 0.1.0a1, the first alpha; with ppp use ppp core add "pythonx-compose==0.1.0a1", with tcl tcl install pythonx-compose. It needs a host app that embeds python-multiplatform to resolve Compose names.

λ„€: uv add --prerelease allow pythonx-compose 둜 첫 μ•ŒνŒŒ 0.1.0a1 을 μ„€μΉ˜ν•©λ‹ˆλ‹€. ppp λŠ” ppp core add "pythonx-compose==0.1.0a1", tcl 은 tcl install pythonx-compose μž…λ‹ˆλ‹€. Compose 이름을 μ“°λ €λ©΄ python-multiplatform 을 ν’ˆμ€ 호슀트 앱이 ν•„μš”ν•©λ‹ˆλ‹€.

Do I need to know Kotlin?Kotlin 을 μ•Œμ•„μ•Ό ν•˜λ‚˜μš”?

No. The widgets and parameters are Compose's, so Compose documentation applies; read onClick as on_click.

μ•„λ‹ˆμš”. μœ„μ ―κ³Ό λ§€κ°œλ³€μˆ˜κ°€ Compose 의 κ²ƒμ΄λ―€λ‘œ Compose λ¬Έμ„œκ°€ κ·ΈλŒ€λ‘œ μ μš©λ©λ‹ˆλ‹€. onClick 을 on_click 으둜 읽으면 λ©λ‹ˆλ‹€.

Does it run on its own?λ‹¨λ…μœΌλ‘œ μ‹€ν–‰λ˜λ‚˜μš”?

No. It runs inside an app that embeds CPython through python-multiplatform.

μ•„λ‹ˆμš”. python-multiplatform 으둜 CPython 을 μž„λ² λ”©ν•œ μ•± μ•ˆμ—μ„œ λ™μž‘ν•©λ‹ˆλ‹€.

Why not look classes up at run time?μ™œ λŸ°νƒ€μž„μ— 클래슀λ₯Ό μ°Ύμ§€ μ•Šλ‚˜μš”?

GraalVM native images and Kotlin/Native have no reflection, so bindings are generated at build time.

GraalVM λ„€μ΄ν‹°λΈŒ 이미지와 Kotlin/Native μ—λŠ” λ¦¬ν”Œλ ‰μ…˜μ΄ μ—†μœΌλ―€λ‘œ, 바인딩을 λΉŒλ“œ νƒ€μž„μ— μƒμ„±ν•©λ‹ˆλ‹€.

What happened to the test/ directory?test/ λ””λ ‰ν„°λ¦¬λŠ” μ–΄λ–»κ²Œ λ˜μ—ˆλ‚˜μš”?

It no longer exists. It was a 2023–2024 Kotlin Multiplatform sample from the project's first generation, and it was deleted; the tag archive/pre-restructure keeps it.

더 이상 μ—†μŠ΅λ‹ˆλ‹€. ν”„λ‘œμ νŠΈ 첫 μ„ΈλŒ€μ˜ 2023–2024 Kotlin Multiplatform μƒ˜ν”Œμ΄μ—ˆκ³  μ‚­μ œλ˜μ—ˆμœΌλ©°, νƒœκ·Έ archive/pre-restructure 둜 λ˜μ°Ύμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

+
Can I install it from PyPI?PyPI μ—μ„œ μ„€μΉ˜ν•  수 μžˆλ‚˜μš”?

Yes: uv add --prerelease allow pythonx-compose installs 0.1.0a2, the second alpha; with ppp use ppp core add "pythonx-compose==0.1.0a2", with tcl tcl install pythonx-compose. It needs a host app that embeds python-multiplatform to resolve Compose names.

λ„€: uv add --prerelease allow pythonx-compose 둜 두 번째 μ•ŒνŒŒ 0.1.0a2 λ₯Ό μ„€μΉ˜ν•©λ‹ˆλ‹€. ppp λŠ” ppp core add "pythonx-compose==0.1.0a2", tcl 은 tcl install pythonx-compose μž…λ‹ˆλ‹€. Compose 이름을 μ“°λ €λ©΄ python-multiplatform 을 ν’ˆμ€ 호슀트 앱이 ν•„μš”ν•©λ‹ˆλ‹€.

Do I need to know Kotlin?Kotlin 을 μ•Œμ•„μ•Ό ν•˜λ‚˜μš”?

No. The widgets and parameters are Compose's, so Compose documentation applies; read onClick as on_click.

μ•„λ‹ˆμš”. μœ„μ ―κ³Ό λ§€κ°œλ³€μˆ˜κ°€ Compose 의 κ²ƒμ΄λ―€λ‘œ Compose λ¬Έμ„œκ°€ κ·ΈλŒ€λ‘œ μ μš©λ©λ‹ˆλ‹€. onClick 을 on_click 으둜 읽으면 λ©λ‹ˆλ‹€.

Does it run on its own?λ‹¨λ…μœΌλ‘œ μ‹€ν–‰λ˜λ‚˜μš”?

No. It runs inside an app that embeds CPython through python-multiplatform.

μ•„λ‹ˆμš”. python-multiplatform 으둜 CPython 을 μž„λ² λ”©ν•œ μ•± μ•ˆμ—μ„œ λ™μž‘ν•©λ‹ˆλ‹€.

Why not look classes up at run time?μ™œ λŸ°νƒ€μž„μ— 클래슀λ₯Ό μ°Ύμ§€ μ•Šλ‚˜μš”?

GraalVM native images and Kotlin/Native have no reflection, so bindings are generated at build time.

GraalVM λ„€μ΄ν‹°λΈŒ 이미지와 Kotlin/Native μ—λŠ” λ¦¬ν”Œλ ‰μ…˜μ΄ μ—†μœΌλ―€λ‘œ, 바인딩을 λΉŒλ“œ νƒ€μž„μ— μƒμ„±ν•©λ‹ˆλ‹€.

What happened to the test/ directory?test/ λ””λ ‰ν„°λ¦¬λŠ” μ–΄λ–»κ²Œ λ˜μ—ˆλ‚˜μš”?

It no longer exists. It was a 2023–2024 Kotlin Multiplatform sample from the project's first generation, and it was deleted; the tag archive/pre-restructure keeps it.

더 이상 μ—†μŠ΅λ‹ˆλ‹€. ν”„λ‘œμ νŠΈ 첫 μ„ΈλŒ€μ˜ 2023–2024 Kotlin Multiplatform μƒ˜ν”Œμ΄μ—ˆκ³  μ‚­μ œλ˜μ—ˆμœΌλ©°, νƒœκ·Έ archive/pre-restructure 둜 λ˜μ°Ύμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

diff --git a/docs/locale/README_ko.md b/docs/locale/README_ko.md index b4f1c9c..e9f324c 100644 --- a/docs/locale/README_ko.md +++ b/docs/locale/README_ko.md @@ -86,13 +86,13 @@ flowchart LR ## πŸš€ λΉ λ₯Έ μ‹œμž‘ > [!NOTE] -> `pythonx-compose` λŠ” **μ•ŒνŒŒ** λ‹¨κ³„μž…λ‹ˆλ‹€. `0.1.0a1` 이 [PyPI](https://pypi.org/project/pythonx-compose/) 에 +> `pythonx-compose` λŠ” **μ•ŒνŒŒ** λ‹¨κ³„μž…λ‹ˆλ‹€. `0.1.0a2` κ°€ [PyPI](https://pypi.org/project/pythonx-compose/) 에 > 있으며, ν”„λ¦¬λ¦΄λ¦¬μŠ€μ΄λ―€λ‘œ uv(λ˜λŠ” ppp, tcl)둜 μ„€μΉ˜ν•©λ‹ˆλ‹€. ```bash uv add --prerelease allow pythonx-compose # λ˜λŠ” pypackpack 으둜, ppp μ›Œν¬μŠ€νŽ˜μ΄μŠ€μ˜ νŒ¨ν‚€μ§€μ— μΆ”κ°€: -ppp core add "pythonx-compose==0.1.0a1" +ppp core add "pythonx-compose==0.1.0a2" # λ˜λŠ” toolchain-lite 둜: tcl install pythonx-compose ``` diff --git a/docs/style/writing.md b/docs/style/writing.md index b6c0093..5dc39f9 100644 --- a/docs/style/writing.md +++ b/docs/style/writing.md @@ -44,7 +44,7 @@ visible string of the guide in `data-lang="en"` and `data-lang="ko"`). or parentheses. The en-dash in ranges (2023–2024) is fine. - **Install and run examples use uv, ppp (pypackpack) and tcl (toolchain-lite) only.** No `pip` examples. Show uv first: `uv add --prerelease allow pythonx-compose`, then - `ppp core add "pythonx-compose==0.1.0a1"` and `tcl install pythonx-compose`; run with `uv run ...`. + `ppp core add "pythonx-compose==0.1.0a2"` and `tcl install pythonx-compose`; run with `uv run ...`. - **Numbers carry their source.** A test count names the environment it was measured in; a claim about upstream names the commit, PR or issue. - **Links** in README files are absolute (they are read on pypi.org too), and README files never diff --git a/pyproject.toml b/pyproject.toml index 6b25fd3..e931373 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "pythonx-compose" -version = "0.1.0a1" +version = "0.1.0a2" description = "Build Compose Multiplatform UIs in Python: Python Declarative UI Framework" readme = {file = "README.md", content-type = "text/markdown"} license = "Apache-2.0"