A bundeld set of tools, clients for the lange-suite of tools and more.
Project description
lange-python
Python helpers and clients for Lange services.
Distribution CLI
Publish a distribution artifact to the app services distribution system:
export LANGE_LABS_API_KEY="your-api-key"
lange distribution publish \
--path ./dist/app.dmg \
--version 1.2.3 \
--distribution-name desktop-app \
--os macos
Apply a macOS app update after downloading the published zip artifact:
from pathlib import Path
from lange.distribution import DistributionClient
client = DistributionClient(distribution_name="desktop-app", api_key="your-api-key")
latest = client.check_for_update("1.2.3")
if latest:
version, artifact_path = client.download(current_version="1.2.3")
print(version, artifact_path)
update_metadata = client.update(
current_version="1.2.3",
installed_app_path=Path("/Applications/Desktop App.app"),
relaunch=True,
)
print(update_metadata["version"])
# The caller should now shut down so the detached helper can replace and relaunch the app.
The distribution client also exposes status and reload() for refresh-aware integrations:
client = DistributionClient(distribution_name="desktop-app", api_key="your-api-key")
latest_version = client.search_for_update("1.2.3")
print(client.status) # connected
print(client.update_state["can_download"])
client.reload() # repeats the last update check
client.reload(api_key=None) # clears authentication and marks the client unauthenticated
Tunnel worker
from lange.tunnel import Tunnel
tunnel = Tunnel(
host="wss://api.lange-labs.com",
api_key="your-bearer-token",
target="http://localhost:3000",
)
tunnel.start()
# ...
tunnel.reload() # restarts the connection flow with the current API key
tunnel.reload(api_key=None) # clears authentication and leaves the client unauthenticated
tunnel.stop()
Tunnel clients also expose a status property with one of:
"unauthenticated", "off", "pending", "connected", or "failed".
The worker connects to /api/v1/tunnels/worker, consumes the
worker_connected welcome payload, forwards HTTP bodies as base64-encoded
bytes, and supports websocket relay sessions through the same control socket.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lange_python-0.3.30.tar.gz.
File metadata
- Download URL: lange_python-0.3.30.tar.gz
- Upload date:
- Size: 23.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.13.9 Darwin/25.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6fd09c261cc3563bbf17bfdf42d0ff72867665c4841fc4b25cd44475ea8ce671
|
|
| MD5 |
3824cce2158595115e5f491439c444d9
|
|
| BLAKE2b-256 |
97e0c28a0a284fb40fb5041753f96dba1896baa751d60298ccc9f64a69f1909d
|
File details
Details for the file lange_python-0.3.30-py3-none-any.whl.
File metadata
- Download URL: lange_python-0.3.30-py3-none-any.whl
- Upload date:
- Size: 33.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.13.9 Darwin/25.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ccc2d3bc6b806eb815b7769e77c2e400fa102452f42859d74010ec1b70b8a899
|
|
| MD5 |
4271357c1914d6bdaba3a1e2fff3e0b4
|
|
| BLAKE2b-256 |
a0c385c6253c39fab1594fc36e1e7278d3fc2afef2393585580085f2087f3e9f
|