python-libei 0.1.0__tar.gz → 0.2.0__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.
- {python_libei-0.1.0/src/python_libei.egg-info → python_libei-0.2.0}/PKG-INFO +35 -20
- {python_libei-0.1.0 → python_libei-0.2.0}/README.md +34 -19
- {python_libei-0.1.0 → python_libei-0.2.0}/pyproject.toml +1 -1
- {python_libei-0.1.0 → python_libei-0.2.0}/src/libei/__init__.py +1 -1
- {python_libei-0.1.0 → python_libei-0.2.0/src/python_libei.egg-info}/PKG-INFO +35 -20
- {python_libei-0.1.0 → python_libei-0.2.0}/tests/test_documentation_shape.py +10 -3
- {python_libei-0.1.0 → python_libei-0.2.0}/LICENSE +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/setup.cfg +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/src/libei/_capi/__init__.py +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/src/libei/_capi/libei.py +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/src/libei/_capi/libeis.py +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/src/libei/_capi/liboeffis.py +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/src/libei/_capi/loader.py +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/src/libei/_cobject.py +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/src/libei/ei.py +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/src/libei/eis.py +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/src/libei/oeffis.py +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/src/libei/py.typed +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/src/python_libei.egg-info/SOURCES.txt +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/src/python_libei.egg-info/dependency_links.txt +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/src/python_libei.egg-info/requires.txt +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/src/python_libei.egg-info/top_level.txt +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/tests/test_cobject.py +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/tests/test_documented_examples.py +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/tests/test_ei_objects.py +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/tests/test_eis_objects.py +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/tests/test_integration_extras.py +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/tests/test_integration_socketpair.py +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/tests/test_loader.py +0 -0
- {python_libei-0.1.0 → python_libei-0.2.0}/tests/test_oeffis.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-libei
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Inject and receive input on Wayland from Python: ctypes bindings for libei, libeis and liboeffis
|
|
5
5
|
Author: Dennis K. Paulsen
|
|
6
6
|
License-Expression: MIT
|
|
@@ -133,8 +133,9 @@ pointer.
|
|
|
133
133
|
|
|
134
134
|
## Status
|
|
135
135
|
|
|
136
|
-
Alpha (`0.
|
|
137
|
-
renames before 1.0. What
|
|
136
|
+
Alpha (`0.2.0`), published on [PyPI](https://pypi.org/project/python-libei/)
|
|
137
|
+
since `0.1.0`, and the API is not frozen — expect renames before 1.0. What
|
|
138
|
+
that qualifier covers, concretely:
|
|
138
139
|
|
|
139
140
|
- The injection path — connect, bind, wait for a device, send events — is
|
|
140
141
|
exercised end-to-end against the real libraries by
|
|
@@ -194,17 +195,29 @@ renames before 1.0. What that qualifier covers, concretely:
|
|
|
194
195
|
|
|
195
196
|
## Install
|
|
196
197
|
|
|
197
|
-
|
|
198
|
+
From [PyPI](https://pypi.org/project/python-libei/):
|
|
198
199
|
|
|
199
200
|
```sh
|
|
200
|
-
|
|
201
|
-
cd python-libei
|
|
202
|
-
pip install .
|
|
201
|
+
pip install python-libei
|
|
203
202
|
```
|
|
204
203
|
|
|
205
204
|
The distribution is named `python-libei`, the import is `libei` -- so
|
|
206
205
|
`pip show python-libei`, but `from libei import ei`.
|
|
207
206
|
|
|
207
|
+
Pure Python, no build step: the wheel is `py3-none-any` and ctypes talks to
|
|
208
|
+
the native libraries directly, so there is no compiler, no headers and no
|
|
209
|
+
`libei-devel` involved at install time. What `pip` does *not* bring is the
|
|
210
|
+
native libraries themselves -- see [Requirements](#requirements) above; on
|
|
211
|
+
Fedora, `sudo dnf install libei libeis liboeffis`.
|
|
212
|
+
|
|
213
|
+
To track `main` instead, or to hack on it, install from a checkout:
|
|
214
|
+
|
|
215
|
+
```sh
|
|
216
|
+
git clone https://github.com/ctrondlp/python-libei.git
|
|
217
|
+
cd python-libei
|
|
218
|
+
pip install . # or `pip install -e '.[dev]'` to develop
|
|
219
|
+
```
|
|
220
|
+
|
|
208
221
|
Importing is always safe, even where the native libraries are missing — they
|
|
209
222
|
are loaded on first use, not at import. Check before you rely on them:
|
|
210
223
|
|
|
@@ -724,9 +737,9 @@ tag. Nothing enforces that yet.
|
|
|
724
737
|
A release is an annotated, `v`-prefixed tag plus a GitHub Release:
|
|
725
738
|
|
|
726
739
|
```sh
|
|
727
|
-
git tag -a v0.
|
|
728
|
-
git push origin v0.
|
|
729
|
-
gh release create v0.
|
|
740
|
+
git tag -a v0.2.0 -m "0.2.0"
|
|
741
|
+
git push origin v0.2.0
|
|
742
|
+
gh release create v0.2.0 --generate-notes --prerelease
|
|
730
743
|
```
|
|
731
744
|
|
|
732
745
|
`--prerelease` while the API is unfrozen -- it keeps an alpha out of the
|
|
@@ -739,22 +752,24 @@ job in `ci.yml` handles it, uploading the artifacts the `build` job already
|
|
|
739
752
|
ran `twine check` over.
|
|
740
753
|
|
|
741
754
|
That job depends on two pieces of configuration outside this repository,
|
|
742
|
-
which
|
|
743
|
-
|
|
744
|
-
1. On pypi.org,
|
|
745
|
-
|
|
746
|
-
`
|
|
747
|
-
|
|
755
|
+
both of which are in place as of `0.1.0`:
|
|
756
|
+
|
|
757
|
+
1. On pypi.org, a trusted publisher on the `python-libei` project: owner
|
|
758
|
+
`ctrondlp`, repository `python-libei`, workflow `ci.yml`, environment
|
|
759
|
+
`pypi`. It started life as a **pending** publisher -- the flow for a
|
|
760
|
+
project with no releases yet -- and the first upload converted it into
|
|
761
|
+
an ordinary project-level one, so a fresh project is the only case that
|
|
762
|
+
needs the pending form again. Every field has to match the workflow
|
|
748
763
|
exactly; a mismatch surfaces as a rejected credential at upload time,
|
|
749
764
|
not when it is saved.
|
|
750
765
|
2. A GitHub environment named `pypi`, in the repository settings. A
|
|
751
766
|
required reviewer on it makes each publish a deliberate approval rather
|
|
752
767
|
than a side effect of pushing a tag.
|
|
753
768
|
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
769
|
+
PyPI filenames are immutable, so a bad upload can only be yanked and
|
|
770
|
+
superseded by a new version, never replaced -- worth rehearsing anything
|
|
771
|
+
unusual on TestPyPI first (separate account, separate pending publisher,
|
|
772
|
+
and `repository-url: https://test.pypi.org/legacy/` on the publish step).
|
|
758
773
|
|
|
759
774
|
## Design notes
|
|
760
775
|
|
|
@@ -100,8 +100,9 @@ pointer.
|
|
|
100
100
|
|
|
101
101
|
## Status
|
|
102
102
|
|
|
103
|
-
Alpha (`0.
|
|
104
|
-
renames before 1.0. What
|
|
103
|
+
Alpha (`0.2.0`), published on [PyPI](https://pypi.org/project/python-libei/)
|
|
104
|
+
since `0.1.0`, and the API is not frozen — expect renames before 1.0. What
|
|
105
|
+
that qualifier covers, concretely:
|
|
105
106
|
|
|
106
107
|
- The injection path — connect, bind, wait for a device, send events — is
|
|
107
108
|
exercised end-to-end against the real libraries by
|
|
@@ -161,17 +162,29 @@ renames before 1.0. What that qualifier covers, concretely:
|
|
|
161
162
|
|
|
162
163
|
## Install
|
|
163
164
|
|
|
164
|
-
|
|
165
|
+
From [PyPI](https://pypi.org/project/python-libei/):
|
|
165
166
|
|
|
166
167
|
```sh
|
|
167
|
-
|
|
168
|
-
cd python-libei
|
|
169
|
-
pip install .
|
|
168
|
+
pip install python-libei
|
|
170
169
|
```
|
|
171
170
|
|
|
172
171
|
The distribution is named `python-libei`, the import is `libei` -- so
|
|
173
172
|
`pip show python-libei`, but `from libei import ei`.
|
|
174
173
|
|
|
174
|
+
Pure Python, no build step: the wheel is `py3-none-any` and ctypes talks to
|
|
175
|
+
the native libraries directly, so there is no compiler, no headers and no
|
|
176
|
+
`libei-devel` involved at install time. What `pip` does *not* bring is the
|
|
177
|
+
native libraries themselves -- see [Requirements](#requirements) above; on
|
|
178
|
+
Fedora, `sudo dnf install libei libeis liboeffis`.
|
|
179
|
+
|
|
180
|
+
To track `main` instead, or to hack on it, install from a checkout:
|
|
181
|
+
|
|
182
|
+
```sh
|
|
183
|
+
git clone https://github.com/ctrondlp/python-libei.git
|
|
184
|
+
cd python-libei
|
|
185
|
+
pip install . # or `pip install -e '.[dev]'` to develop
|
|
186
|
+
```
|
|
187
|
+
|
|
175
188
|
Importing is always safe, even where the native libraries are missing — they
|
|
176
189
|
are loaded on first use, not at import. Check before you rely on them:
|
|
177
190
|
|
|
@@ -691,9 +704,9 @@ tag. Nothing enforces that yet.
|
|
|
691
704
|
A release is an annotated, `v`-prefixed tag plus a GitHub Release:
|
|
692
705
|
|
|
693
706
|
```sh
|
|
694
|
-
git tag -a v0.
|
|
695
|
-
git push origin v0.
|
|
696
|
-
gh release create v0.
|
|
707
|
+
git tag -a v0.2.0 -m "0.2.0"
|
|
708
|
+
git push origin v0.2.0
|
|
709
|
+
gh release create v0.2.0 --generate-notes --prerelease
|
|
697
710
|
```
|
|
698
711
|
|
|
699
712
|
`--prerelease` while the API is unfrozen -- it keeps an alpha out of the
|
|
@@ -706,22 +719,24 @@ job in `ci.yml` handles it, uploading the artifacts the `build` job already
|
|
|
706
719
|
ran `twine check` over.
|
|
707
720
|
|
|
708
721
|
That job depends on two pieces of configuration outside this repository,
|
|
709
|
-
which
|
|
710
|
-
|
|
711
|
-
1. On pypi.org,
|
|
712
|
-
|
|
713
|
-
`
|
|
714
|
-
|
|
722
|
+
both of which are in place as of `0.1.0`:
|
|
723
|
+
|
|
724
|
+
1. On pypi.org, a trusted publisher on the `python-libei` project: owner
|
|
725
|
+
`ctrondlp`, repository `python-libei`, workflow `ci.yml`, environment
|
|
726
|
+
`pypi`. It started life as a **pending** publisher -- the flow for a
|
|
727
|
+
project with no releases yet -- and the first upload converted it into
|
|
728
|
+
an ordinary project-level one, so a fresh project is the only case that
|
|
729
|
+
needs the pending form again. Every field has to match the workflow
|
|
715
730
|
exactly; a mismatch surfaces as a rejected credential at upload time,
|
|
716
731
|
not when it is saved.
|
|
717
732
|
2. A GitHub environment named `pypi`, in the repository settings. A
|
|
718
733
|
required reviewer on it makes each publish a deliberate approval rather
|
|
719
734
|
than a side effect of pushing a tag.
|
|
720
735
|
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
736
|
+
PyPI filenames are immutable, so a bad upload can only be yanked and
|
|
737
|
+
superseded by a new version, never replaced -- worth rehearsing anything
|
|
738
|
+
unusual on TestPyPI first (separate account, separate pending publisher,
|
|
739
|
+
and `repository-url: https://test.pypi.org/legacy/` on the publish step).
|
|
725
740
|
|
|
726
741
|
## Design notes
|
|
727
742
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "python-libei"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.2.0"
|
|
8
8
|
description = "Inject and receive input on Wayland from Python: ctypes bindings for libei, libeis and liboeffis"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-libei
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Inject and receive input on Wayland from Python: ctypes bindings for libei, libeis and liboeffis
|
|
5
5
|
Author: Dennis K. Paulsen
|
|
6
6
|
License-Expression: MIT
|
|
@@ -133,8 +133,9 @@ pointer.
|
|
|
133
133
|
|
|
134
134
|
## Status
|
|
135
135
|
|
|
136
|
-
Alpha (`0.
|
|
137
|
-
renames before 1.0. What
|
|
136
|
+
Alpha (`0.2.0`), published on [PyPI](https://pypi.org/project/python-libei/)
|
|
137
|
+
since `0.1.0`, and the API is not frozen — expect renames before 1.0. What
|
|
138
|
+
that qualifier covers, concretely:
|
|
138
139
|
|
|
139
140
|
- The injection path — connect, bind, wait for a device, send events — is
|
|
140
141
|
exercised end-to-end against the real libraries by
|
|
@@ -194,17 +195,29 @@ renames before 1.0. What that qualifier covers, concretely:
|
|
|
194
195
|
|
|
195
196
|
## Install
|
|
196
197
|
|
|
197
|
-
|
|
198
|
+
From [PyPI](https://pypi.org/project/python-libei/):
|
|
198
199
|
|
|
199
200
|
```sh
|
|
200
|
-
|
|
201
|
-
cd python-libei
|
|
202
|
-
pip install .
|
|
201
|
+
pip install python-libei
|
|
203
202
|
```
|
|
204
203
|
|
|
205
204
|
The distribution is named `python-libei`, the import is `libei` -- so
|
|
206
205
|
`pip show python-libei`, but `from libei import ei`.
|
|
207
206
|
|
|
207
|
+
Pure Python, no build step: the wheel is `py3-none-any` and ctypes talks to
|
|
208
|
+
the native libraries directly, so there is no compiler, no headers and no
|
|
209
|
+
`libei-devel` involved at install time. What `pip` does *not* bring is the
|
|
210
|
+
native libraries themselves -- see [Requirements](#requirements) above; on
|
|
211
|
+
Fedora, `sudo dnf install libei libeis liboeffis`.
|
|
212
|
+
|
|
213
|
+
To track `main` instead, or to hack on it, install from a checkout:
|
|
214
|
+
|
|
215
|
+
```sh
|
|
216
|
+
git clone https://github.com/ctrondlp/python-libei.git
|
|
217
|
+
cd python-libei
|
|
218
|
+
pip install . # or `pip install -e '.[dev]'` to develop
|
|
219
|
+
```
|
|
220
|
+
|
|
208
221
|
Importing is always safe, even where the native libraries are missing — they
|
|
209
222
|
are loaded on first use, not at import. Check before you rely on them:
|
|
210
223
|
|
|
@@ -724,9 +737,9 @@ tag. Nothing enforces that yet.
|
|
|
724
737
|
A release is an annotated, `v`-prefixed tag plus a GitHub Release:
|
|
725
738
|
|
|
726
739
|
```sh
|
|
727
|
-
git tag -a v0.
|
|
728
|
-
git push origin v0.
|
|
729
|
-
gh release create v0.
|
|
740
|
+
git tag -a v0.2.0 -m "0.2.0"
|
|
741
|
+
git push origin v0.2.0
|
|
742
|
+
gh release create v0.2.0 --generate-notes --prerelease
|
|
730
743
|
```
|
|
731
744
|
|
|
732
745
|
`--prerelease` while the API is unfrozen -- it keeps an alpha out of the
|
|
@@ -739,22 +752,24 @@ job in `ci.yml` handles it, uploading the artifacts the `build` job already
|
|
|
739
752
|
ran `twine check` over.
|
|
740
753
|
|
|
741
754
|
That job depends on two pieces of configuration outside this repository,
|
|
742
|
-
which
|
|
743
|
-
|
|
744
|
-
1. On pypi.org,
|
|
745
|
-
|
|
746
|
-
`
|
|
747
|
-
|
|
755
|
+
both of which are in place as of `0.1.0`:
|
|
756
|
+
|
|
757
|
+
1. On pypi.org, a trusted publisher on the `python-libei` project: owner
|
|
758
|
+
`ctrondlp`, repository `python-libei`, workflow `ci.yml`, environment
|
|
759
|
+
`pypi`. It started life as a **pending** publisher -- the flow for a
|
|
760
|
+
project with no releases yet -- and the first upload converted it into
|
|
761
|
+
an ordinary project-level one, so a fresh project is the only case that
|
|
762
|
+
needs the pending form again. Every field has to match the workflow
|
|
748
763
|
exactly; a mismatch surfaces as a rejected credential at upload time,
|
|
749
764
|
not when it is saved.
|
|
750
765
|
2. A GitHub environment named `pypi`, in the repository settings. A
|
|
751
766
|
required reviewer on it makes each publish a deliberate approval rather
|
|
752
767
|
than a side effect of pushing a tag.
|
|
753
768
|
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
769
|
+
PyPI filenames are immutable, so a bad upload can only be yanked and
|
|
770
|
+
superseded by a new version, never replaced -- worth rehearsing anything
|
|
771
|
+
unusual on TestPyPI first (separate account, separate pending publisher,
|
|
772
|
+
and `repository-url: https://test.pypi.org/legacy/` on the publish step).
|
|
758
773
|
|
|
759
774
|
## Design notes
|
|
760
775
|
|
|
@@ -94,9 +94,16 @@ def test_examples_pump_dispatch_before_draining_events() -> None:
|
|
|
94
94
|
)
|
|
95
95
|
|
|
96
96
|
|
|
97
|
-
def
|
|
98
|
-
# The package is
|
|
99
|
-
|
|
97
|
+
def test_readme_documents_the_pypi_install() -> None:
|
|
98
|
+
# The package is on PyPI as of 0.1.0, so the plain install has to be
|
|
99
|
+
# the one a reader sees first. This guard used to assert the opposite;
|
|
100
|
+
# it is inverted rather than deleted so that dropping the PyPI
|
|
101
|
+
# instruction is a test failure, not a silent regression to a checkout.
|
|
102
|
+
readme = _README.read_text()
|
|
103
|
+
assert "pip install python-libei" in readme
|
|
104
|
+
assert readme.index("pip install python-libei") < readme.index(
|
|
105
|
+
"git clone https://github.com/ctrondlp/python-libei.git"
|
|
106
|
+
), "the checkout install is documented before the PyPI one"
|
|
100
107
|
|
|
101
108
|
|
|
102
109
|
def test_readme_only_references_real_public_api() -> None:
|
|
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
|