This release is a pre-release and may not be stable for production use.
pyxpo-image-picker
Photo library picker and camera for pyxpo apps (expo-image-picker shape).
This is an optional pyxpo native module. Apps that do not list it carry none of its code, permissions or dependencies.
Install
pip install pyxpo-image-picker
Then link it into your app in pyproject.toml:
[tool.pyxpo]
modules = ["image-picker"]
and rebuild (pyxpo run ios, pyxpo build android, ...). The build copies the module's Swift and Kotlin
sources into the native project and its Python package into the app.
Use
from pyxpo_image_picker import ImagePicker
res = await ImagePicker.launchImageLibraryAsync(allowsMultipleSelection=True, selectionLimit=5)
shot = await ImagePicker.launchCameraAsync(mediaTypes="images") # or "videos", videoMaxDuration=30
perm = await ImagePicker.requestCameraPermissionsAsync() # {"status", "granted", "canAskAgain", "expires"}
Permissions and Info.plist keys:
- Library: none (uses the system photo picker).
- Camera, iOS:
NSCameraUsageDescriptionand, for video sound,NSMicrophoneUsageDescription. Set the text with[tool.pyxpo.module_options.image-picker] cameraUsageDescription = "..."/microphoneUsageDescription = "...". On a device without a camera (simulators before iOS 27)launchCameraAsyncfails with a clear error. - Camera, Android: none. The module uses the system camera app (
ACTION_IMAGE_CAPTURE/ACTION_VIDEO_CAPTURE), which needs no permission, so it does not declareCAMERA. Android enforcesCAMERAfor those intents only when the app declares it; if your app (or another module) does,launchCameraAsyncasks for it first and the permission functions report its real state. Photo and video in one capture (mediaTypes=["images", "videos"]) is iOS only and raisesNotSupportedErroron Android. - Android may kill the app while the camera app is in front (low memory). That capture is lost (the call never returns in the new process); the leftover file in the cache is removed on the next capture.
What is in the package
pyxpo_image_picker/__init__.py: the Python API.pyxpo_image_picker/pyxpo-module.json: autolink metadata (bridge name, Swift and Kotlin classes, Android namespace and dependencies, Info.plist keys).pyxpo_image_picker/ios/: Swift sources compiled into the iOS app.pyxpo_image_picker/android/src/main/: Kotlin sources and the manifest merged into the Android app.
Metadata
Release files for pyxpo-image-picker 0.1.0a1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyxpo_image_picker-0.1.0a1.tar.gz | 15.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyxpo_image_picker-0.1.0a1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.2 kB
Release files / pyxpo_image_picker-0.1.0a1.tar.gz
| Download URL | pyxpo_image_picker-0.1.0a1.tar.gz |
|---|---|
| Size | 15.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
11718275bbd84d9ffa415ab8ddf1166bed027444335ebf0abf4795ad06f5806b
|
|
BLAKE2b-256 checksum How to use checksums |
5c5e7549bc34de173252c6ee63b715f05fd001e73ebfc1869738fda4271e6087
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency logRelease files / pyxpo_image_picker-0.1.0a1-py3-none-any.whl
| Download URL | pyxpo_image_picker-0.1.0a1-py3-none-any.whl |
|---|---|
| Size | 16.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1002609af80c64bd179c17115f37ef324c42b1f21df9e0c7e391ae5910493853
|
|
BLAKE2b-256 checksum How to use checksums |
d4d1b77d88ade2595aea41eac23b191001aace0ca36e77a64907056de31f4037
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency log