Skip to main content
Pre-release

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: NSCameraUsageDescription and, 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) launchCameraAsync fails 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 declare CAMERA. Android enforces CAMERA for those intents only when the app declares it; if your app (or another module) does, launchCameraAsync asks for it first and the permission functions report its real state. Photo and video in one capture (mediaTypes=["images", "videos"]) is iOS only and raises NotSupportedError on 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)

Source distribution for pyxpo-image-picker 0.1.0a1
File Size Uploaded
pyxpo_image_picker-0.1.0a1.tar.gz 15.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyxpo-image-picker 0.1.0a1
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.1.0a1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page