You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 4ecdef1
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: docs/SPEC.md
+13-4Lines changed: 13 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,8 +21,8 @@ Run from a worktree with `python -m pytest tests -q -rs` (pytest 8, mypy 2.4, CP
21
21
22
22
| Environment | Result |
23
23
|---|---|
24
-
| No `PythonMultiplatform` checkout found |**133 passed, 112 skipped**, 167 subtests passed |
25
-
| python-multiplatform `develop` at `31c092f0` or later (property rows, #38; `describe_member`, #54; besides `add_member_resolver` and `describe(module, name)`) |**244 passed, 1 skipped**, 198 subtests passed |
24
+
| No `PythonMultiplatform` checkout found |**139 passed, 112 skipped**, 167 subtests passed |
25
+
| python-multiplatform `develop` at `31c092f0` or later (property rows, #38; `describe_member`, #54; besides `add_member_resolver` and `describe(module, name)`) |**250 passed, 1 skipped**, 198 subtests passed |
26
26
| an older checkout, without `describe_member` (python-multiplatform #54) | the same, with 7 more skipped |
27
27
| an older one, without `describe(module, name)` (python-multiplatform #36) | with 13 more skipped again |
28
28
| an older one still, without `add_member_resolver`| with 5 more skipped again |
@@ -36,7 +36,7 @@ binder returned skip as well, because that needs its member resolver (python-mul
36
36
`TheBinderPath` tests (S5.4). A binder without the `@Composable` binding (`push_composer`) skips the 13 text-field tests (S5.5). `tests/test_typing.py` skips where mypy is not installed. A skip is not a
37
37
pass.
38
38
39
-
Of the 133 that pass without a checkout, 73 check the type stubs and the wheel (S1.2); most of the
39
+
Of the 139 that pass without a checkout, 73 check the type stubs and the wheel (S1.2); most of the
40
40
rest assert **absence** (a retired token, a deleted file, a docstring that exists). Those are listed
41
41
in §9 and are not counted as features.
42
42
@@ -46,13 +46,22 @@ in §9 and are not counted as features.
46
46
47
47
### S1.1 Installed as `pythonx-compose`, importing `pythonx.compose` — `partial`
48
48
49
-
`pyproject.toml` declares `name = "pythonx-compose"`, version `0.0.1`, setuptools build,
49
+
`pyproject.toml` declares `name = "pythonx-compose"`, version `0.1.0a1`, setuptools build,
50
50
`requires-python >= 3.11` (the runtime reads the manifest with `tomllib`), and
51
51
`packages.find include = ["pythonx.compose*"]`.
52
52
53
53
- Shipped and tested: `tests/test_wheel.py` builds the wheel from a copy of the sources and finds
54
54
`pythonx/compose/pythonx-map.toml`, the re-export rule, and an `__init__.py` for every mapped
55
55
module (issue #13). The manifest lives inside the package directory so `package-data` carries it.
56
+
- PyPI metadata: description, `README.md` as the long description (its links are absolute, since
57
+
pypi.org cannot resolve relative ones), `license = "MIT"` with `LICENSE`, the two authors as
58
+
`LICENSE` names them (no emails), keywords, classifiers (Alpha, Python 3.11-3.13, Typed) and
59
+
project URLs. `build-system.requires` is `setuptools>=77`, which understands that license form.
60
+
- Released by pushing a tag `v<version>` (`.github/workflows/publish-pypi.yml`): the workflow checks
61
+
the tag equals `v` + the `pyproject.toml` version (`.github/scripts/check_release_version.py`,
62
+
`tests/test_release_version.py`), builds the sdist and wheel, runs `twine check`, smoke-installs
63
+
the wheel in a fresh venv, then uploads through PyPI trusted publishing (environment `pypi`, no
64
+
token). Nothing is uploaded by hand.
56
65
- Typed: the wheel carries `py.typed` and the generated `.pyi` stubs (S1.2, issue #12).
57
66
58
67
### S1.2 Type stubs ship in the wheel — `implemented`
Copy file name to clipboardExpand all lines: docs/guide/getting-started.html
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -30,7 +30,7 @@
30
30
<headerclass="page-head wrap"><pclass="kicker"><spandata-lang="en">Getting started</span><spandata-lang="ko">시작하기</span></p><h1><spandata-lang="en">From clone to first call</span><spandata-lang="ko">클론부터 첫 호출까지</span></h1><pclass="lead"><spandata-lang="en">Five minutes, honest about what runs.</span><spandata-lang="ko">5 분, 동작하는 범위를 솔직하게.</span></p></header>
31
31
32
32
<divclass="wrap doc narrow">
33
-
<divclass="note"><pdata-lang="en">pythonx-compose is pre-alpha and not yet on PyPI. This page shows how to get the source, run the tests, and what you can call today.</p><pdata-lang="ko">pythonx-compose 는 pre-alpha 이며 아직 PyPI 에 없습니다. 이 페이지는 소스를 받고, 테스트를 돌리고, 지금 호출할 수 있는 것을 보여줍니다.</p></div>
33
+
<divclass="note"><pdata-lang="en">pythonx-compose is pre-alpha. The first alpha, 0.1.0a1, is released to PyPI when the maintainer tags it; install a pre-release with <code>pip install --pre pythonx-compose</code>. This page shows how to get the source, run the tests, and what you can call today.</p><pdata-lang="ko">pythonx-compose 는 pre-alpha 입니다. 첫 알파 0.1.0a1 은 메인테이너가 태그를 달면 PyPI 에 배포되며, 프리릴리스는 <code>pip install --pre pythonx-compose</code> 로 설치합니다. 이 페이지는 소스를 받고, 테스트를 돌리고, 지금 호출할 수 있는 것을 보여줍니다.</p></div>
34
34
35
35
<sectionclass="flush">
36
36
<h2><spandata-lang="en">1. Get the source</span><spandata-lang="ko">1. 소스 받기</span></h2>
@@ -43,9 +43,9 @@ <h2><span data-lang="en">1. Get the source</span><span data-lang="ko">1. 소스
43
43
<section>
44
44
<h2><spandata-lang="en">2. Run the tests</span><spandata-lang="ko">2. 테스트 실행</span></h2>
<pdata-lang="en">Expect <strong>133 passed, 112 skipped</strong>. One skipped test reads the maintainer's <code>UI.ipynb</code>, which a clone does not have; mypy type-checks the stubs. The other skipped tests drive the binder's adaptation layer and need a <ahref="https://github.com/thisisthepy/python-multiplatform">python-multiplatform</a> checkout beside this one, or:</p><pdata-lang="ko"><strong>133 passed, 112 skipped</strong> 가 정상입니다. 건너뛴 테스트 하나는 클론에는 없는 메인테이너의 <code>UI.ipynb</code> 를 읽으며, mypy 는 스텁을 타입 검사합니다. 나머지 건너뛴 테스트는 바인더의 적응 계층을 구동하며, 옆에 <ahref="https://github.com/thisisthepy/python-multiplatform">python-multiplatform</a> 체크아웃이 있거나 다음이 필요합니다:</p>
46
+
<pdata-lang="en">Expect <strong>139 passed, 112 skipped</strong>. One skipped test reads the maintainer's <code>UI.ipynb</code>, which a clone does not have; mypy type-checks the stubs. The other skipped tests drive the binder's adaptation layer and need a <ahref="https://github.com/thisisthepy/python-multiplatform">python-multiplatform</a> checkout beside this one, or:</p><pdata-lang="ko"><strong>139 passed, 112 skipped</strong> 가 정상입니다. 건너뛴 테스트 하나는 클론에는 없는 메인테이너의 <code>UI.ipynb</code> 를 읽으며, mypy 는 스텁을 타입 검사합니다. 나머지 건너뛴 테스트는 바인더의 적응 계층을 구동하며, 옆에 <ahref="https://github.com/thisisthepy/python-multiplatform">python-multiplatform</a> 체크아웃이 있거나 다음이 필요합니다:</p>
<pdata-lang="en">With a current one (<code>31c092f0</code> or later) <strong>244 pass</strong> and 1 skips (the <code>UI.ipynb</code> test); an older one skips 5 that call a snake_case method on a proxy the binder returned. That is expected and recorded.</p><pdata-lang="ko">최신 체크아웃(<code>31c092f0</code> 이후)이면 <strong>230 개가 통과</strong>하고 1 개(<code>UI.ipynb</code> 테스트)를 건너뛰며, 오래된 체크아웃은 바인더가 돌려준 proxy 의 snake_case 메서드를 부르는 5 개를 <strong>건너뜁니다</strong>. 예상된 상태이며 기록되어 있습니다.</p>
48
+
<pdata-lang="en">With a current one (<code>31c092f0</code> or later) <strong>250 pass</strong> and 1 skips (the <code>UI.ipynb</code> test); an older one skips 5 that call a snake_case method on a proxy the binder returned. That is expected and recorded.</p><pdata-lang="ko">최신 체크아웃(<code>31c092f0</code> 이후)이면 <strong>230 개가 통과</strong>하고 1 개(<code>UI.ipynb</code> 테스트)를 건너뛰며, 오래된 체크아웃은 바인더가 돌려준 proxy 의 snake_case 메서드를 부르는 5 개를 <strong>건너뜁니다</strong>. 예상된 상태이며 기록되어 있습니다.</p>
0 commit comments