Modern CLI tools with better UX
Pure Python URL transfer tool
purl is a pure Python alternative to curl, providing HTTP request functionality without external dependencies. Perfect for downloading files, making API requests, and testing HTTP endpoints.
Full Name: Pure Python URL
Version: 0.1.1
Equivalent: curl
Repository: github.com/pynosaur/purl
# Via pget
pget install purl
# From source
git clone https://github.com/pynosaur/purl.git
cd purl
bazel build //:purl_bin
cp bazel-bin/purl ~/.local/bin/
# Basic GET request
purl https://example.com
# Show help
purl --help
# Show version
purl --version
# Save to file
purl -o page.html https://example.com
# Download archive
purl -o archive.tar.gz https://example.com/file.tar.gz
# Show response headers
purl -i https://api.github.com
# Check headers only
purl -i https://example.com
# Single header
purl -H "Accept: application/json" https://api.github.com
# Multiple headers
purl -H "Authorization: Bearer token" -H "Content-Type: application/json" https://api.example.com
# POST with data
purl -X POST -d "key=value" https://api.example.com
# POST JSON
purl -X POST -d '{"key":"value"}' -H "Content-Type: application/json" https://api.example.com
# PUT request
purl -X PUT -d "data" https://api.example.com/resource
# DELETE request
purl -X DELETE https://api.example.com/resource
# Show detailed output
purl --verbose https://example.com
-h, --help - Show help message-v, --version - Show version information-o, --output FILE - Write output to file instead of stdout-H, --header HEADER - Add custom header (can be used multiple times)-X, --request METHOD - HTTP method (GET, POST, PUT, DELETE)-d, --data DATA - HTTP POST data-i, --include - Include response headers in output-L, --location - Follow redirects (default behavior)--verbose - Show verbose outputFetch a webpage:
purl https://example.com
API request with JSON:
purl -H "Accept: application/json" https://api.github.com/users/pynosaur
POST to API:
purl -X POST \
-H "Content-Type: application/json" \
-d '{"name":"test"}' \
https://api.example.com/data
Download file with progress:
purl --verbose -o download.zip https://example.com/file.zip
Check API headers:
purl -i https://api.example.com/status