python-libei 0.1.0__py3-none-any.whl → 0.2.0__py3-none-any.whl

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.
libei/__init__.py CHANGED
@@ -26,6 +26,6 @@ the full breakdown, including which features need which libei version.
26
26
  Alpha: the API is not frozen.
27
27
  """
28
28
 
29
- __version__ = "0.1.0"
29
+ __version__ = "0.2.0"
30
30
 
31
31
  __all__ = ["__version__"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-libei
3
- Version: 0.1.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.1.0`), not yet on PyPI, and the API is not frozen — expect
137
- renames before 1.0. What that qualifier covers, concretely:
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
- Not published to PyPI yet — install from a checkout:
198
+ From [PyPI](https://pypi.org/project/python-libei/):
198
199
 
199
200
  ```sh
200
- git clone https://github.com/ctrondlp/python-libei.git
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.1.0 -m "0.1.0"
728
- git push origin v0.1.0
729
- gh release create v0.1.0 --generate-notes --prerelease
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 have to exist before the first tag:
743
-
744
- 1. On pypi.org, under Account settings -> Publishing, a **pending**
745
- publisher -- the flow for a project that has no releases yet. Project
746
- `python-libei`, owner `ctrondlp`, repository `python-libei`, workflow
747
- `ci.yml`, environment `pypi`. Every field has to match the workflow
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
- Worth rehearsing on TestPyPI first: separate account, separate pending
755
- publisher, and `repository-url: https://test.pypi.org/legacy/` on the
756
- publish step. PyPI filenames are immutable, so a bad upload can only be
757
- yanked and superseded by a new version, never replaced.
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
 
@@ -1,4 +1,4 @@
1
- libei/__init__.py,sha256=iGbXyJLQl-zAV0AMAWdEMe0WxJivQCH4NLnwmlmub2I,1511
1
+ libei/__init__.py,sha256=EWlmUgk0QL_TNN53lDU1ypnOVJcEJAUpNwsn1TUkKxQ,1511
2
2
  libei/_cobject.py,sha256=msrbviABSWjc5fKsXHSCg7nQ0Y4Etcq_Dkh0fblW-sY,12845
3
3
  libei/ei.py,sha256=Da3ezXnFPXtejlcJFH8bcE5f4pxKZXXqb6ltCh2zAdE,46704
4
4
  libei/eis.py,sha256=aYWOCN1NlRchcWd6NjIUi1eYMFWJbp0UHMcQFEJ0ii4,43642
@@ -9,8 +9,8 @@ libei/_capi/libei.py,sha256=gpp42bhqPonhVD2zmFWCl4rdk_lm4XvD_7W2Rw5RsuI,11308
9
9
  libei/_capi/libeis.py,sha256=jQR0Z0YN9qa71mAcSJ__-UaoF8PsVsBs8OXwjfqstFk,13080
10
10
  libei/_capi/liboeffis.py,sha256=V8jdmJm3qOQUzzNiCAXt4Jr2JY11Y4-w6NIfIxbxGI4,1218
11
11
  libei/_capi/loader.py,sha256=k7fb_Nz0fg5QkuLJ_duKXj8bESSktLQ2ZyS5LNQ5v2I,4689
12
- python_libei-0.1.0.dist-info/licenses/LICENSE,sha256=l6xbMU6Y-JZDzmBciBj-J5t6h6jNg_Bcyp4bHxDepqU,1074
13
- python_libei-0.1.0.dist-info/METADATA,sha256=aY3gXPsVdtrASfC7m1JDV7-4v0wNyv8u2LTZCQLVFqs,35447
14
- python_libei-0.1.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
15
- python_libei-0.1.0.dist-info/top_level.txt,sha256=_DQXzGjDsUBENI_cNkiOxPB4xi8coCbQS1lq18FMudQ,6
16
- python_libei-0.1.0.dist-info/RECORD,,
12
+ python_libei-0.2.0.dist-info/licenses/LICENSE,sha256=l6xbMU6Y-JZDzmBciBj-J5t6h6jNg_Bcyp4bHxDepqU,1074
13
+ python_libei-0.2.0.dist-info/METADATA,sha256=tdUGfZwL_MtWeduTv8wRBmNhGo0jT04PnLRVbOR6eT0,36184
14
+ python_libei-0.2.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
15
+ python_libei-0.2.0.dist-info/top_level.txt,sha256=_DQXzGjDsUBENI_cNkiOxPB4xi8coCbQS1lq18FMudQ,6
16
+ python_libei-0.2.0.dist-info/RECORD,,