A lightweight archive downloader for pre-build binary dependencies.
Project description
Poks
Source Code: https://github.com/cuinixam/poks
A lightweight, cross-platform archive downloader for pre-built binary dependencies. Inspired by Scoop, Poks provides a uniform way to install and manage developer tools using simple JSON manifests.
While Poks includes a CLI, its main purpose is to be used programmatically to manage dependencies in your Python projects and automation scripts.
Features
- Programmatic API: First-class Python support for integrating into your tools
- Cross-Platform: Works on Windows, Linux, and macOS
- No Admin Rights: Installs tools in user space
- Deterministic: Pin exact versions in manifests for reproducible builds
- Relocatable: The apps directory is self-contained and portable
Installation
Install via pip (or your favorite package manager):
pip install poks
Programmatic Usage
Poks is designed to be easily integrated into your Python scripts.
Quick Start
from pathlib import Path
from poks.poks import Poks
# Initialize Poks with a root directory for apps/cache
poks = Poks(root_dir=Path("./.tools"))
# Install a specific application
# (Automatically searches configured buckets)
poks.install_app("cmake@3.28.1")
# Install from a configuration file (poks.json)
poks.install(Path("poks.json"))
# Uninstall
poks.uninstall(app_name="cmake", version="3.28.1")
CLI Usage
You can also use Poks from the command line.
Installation (CLI)
Install via pipx:
pipx install poks
Quick Start
Create a poks.json configuration file:
{
"buckets": [
{
"name": "main",
"url": "https://github.com/poks/main-bucket.git"
}
],
"apps": [
{
"name": "cmake",
"version": "3.28.1",
"bucket": "main"
}
]
}
Install the defined tools:
poks install -c poks.json
CLI Reference
# Install tools from config file
poks install -c poks.json
# Install a specific tool
poks install zephyr-sdk@0.16.5-1 --bucket main
# Uninstall a specific version
poks uninstall zephyr-sdk@0.16.5-1
# Uninstall all versions of an app
poks uninstall zephyr-sdk
# Uninstall everything
poks uninstall --all
Documentation
For detailed specifications and manifest format, see docs/specs.md.
Contributing
We welcome contributions! Please see our development guidelines below.
Setup and Development
This project uses pypeline for build automation and uv for dependency management.
-
Install Prerequisites: Ensure you have Python 3.10+ and
uvinstalled. pypeline will automatically useuvto create virtual environments. -
Install Pypeline:
uv tool install pypeline-runner
-
Run the Pipeline: The pipeline handles environment setup, linting, and testing.
# Run full pipeline (lint + tests) pypeline run # Run only linting (pre-commit hooks) pypeline run --step PreCommit # Run tests with specific Python version pypeline run --step CreateVEnv --step PyTest --single --input python_version=3.13
AI Agents
For AI agents contributing to this project, please explicitly read and follow AGENTS.md for detailed instructions on workflows, coding standards, and verification steps.
Credits
This package was created with Copier and the browniebroke/pypackage-template project template.
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 poks-0.2.0.tar.gz.
File metadata
- Download URL: poks-0.2.0.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3dfc1b985a682baea3d249c70922c53b39b0cfea3d2bbdc3cf7ae39bd2d05464
|
|
| MD5 |
912b7c3ffcc7d7c5baeed30f5db2983e
|
|
| BLAKE2b-256 |
407e8f7e603c4062e2ad159d9b5bb1cb62298ef2b1383ff927c08398f4d4b9f2
|
Provenance
The following attestation bundles were made for poks-0.2.0.tar.gz:
Publisher:
ci.yml on cuinixam/poks
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
poks-0.2.0.tar.gz -
Subject digest:
3dfc1b985a682baea3d249c70922c53b39b0cfea3d2bbdc3cf7ae39bd2d05464 - Sigstore transparency entry: 949568268
- Sigstore integration time:
-
Permalink:
cuinixam/poks@e95f461a1c95d44ab86b4b0ae8ebc9160d1af6b3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/cuinixam
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@e95f461a1c95d44ab86b4b0ae8ebc9160d1af6b3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file poks-0.2.0-py3-none-any.whl.
File metadata
- Download URL: poks-0.2.0-py3-none-any.whl
- Upload date:
- Size: 18.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
646354c01bf208076a59d4b65906284c47bcdd88fa499e4074e7d2173995416e
|
|
| MD5 |
94eeadfa46388988cb7dc6b86bdcb020
|
|
| BLAKE2b-256 |
87ba6337095423dacbd6f6a0cf98f587f2cf8f1bd3d8bd3f9e2a400d598c1290
|
Provenance
The following attestation bundles were made for poks-0.2.0-py3-none-any.whl:
Publisher:
ci.yml on cuinixam/poks
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
poks-0.2.0-py3-none-any.whl -
Subject digest:
646354c01bf208076a59d4b65906284c47bcdd88fa499e4074e7d2173995416e - Sigstore transparency entry: 949568346
- Sigstore integration time:
-
Permalink:
cuinixam/poks@e95f461a1c95d44ab86b4b0ae8ebc9160d1af6b3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/cuinixam
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@e95f461a1c95d44ab86b4b0ae8ebc9160d1af6b3 -
Trigger Event:
push
-
Statement type: