Skip to main content

koon

npm PyPI License: MIT CI

An HTTP client that impersonates real browsers at the TLS, HTTP/2, and HTTP/3 fingerprint level.

Built in Rust on top of BoringSSL with native bindings for Node.js, Python, R, and a CLI. Passes Akamai, Cloudflare, and other bot detection systems by reproducing exact browser fingerprints — verified against real browser captures.

Install

Node.js

npm install koonjs

Python

pip install koon

R

# Install from source (requires Rust toolchain)
remotes::install_github("scrape-hub/koon", subdir = "crates/r")

CLI — download from Releases, or:

cargo install koon-cli

Quick start

Node.js

import { Koon } from 'koonjs';

const client = new Koon({ browser: 'chrome152' });
const resp = await client.get('https://httpbin.org/json');
console.log(resp.ok);      // true
console.log(resp.text());  // body as string
console.log(resp.json());  // parsed JSON

Python

from koon import KoonSync

client = KoonSync("chrome152")
resp = client.get("https://httpbin.org/json")
print(resp.ok)      # True
print(resp.json())  # parsed JSON

R

library(koon)

client <- Koon$new("chrome152")
resp <- client$get("https://httpbin.org/json")
resp$ok      # TRUE
resp$text    # body as string

CLI

koon -b chrome152 https://example.com

Rust

use koon_core::{Client, Chrome};

let client = Client::new(Chrome::v152_windows())?;
let r = client.get("https://example.com").await?;

What it does

koon reproduces three fingerprint layers that bot detection systems check:

Layer What's fingerprinted How koon matches it
TLS Cipher suites, curves, extensions, ALPN, GREASE, ALPS BoringSSL with per-browser config (JA3/JA4 verified)
HTTP/2 SETTINGS order, pseudo-header order, WINDOW_UPDATE, PRIORITY frames Forked h2 crate with header ordering API (Akamai hash verified)
HTTP/3 QUIC transport params, H3 settings Quinn + h3 with browser-matching config

All fingerprints are tested against hashes captured from real browsers. 19 integration tests verify JA3N, JA4, and Akamai hashes for Chrome, Firefox, Safari, Edge, and Opera.

Supported browsers

Browser Versions Platforms Profiles
Chrome 131 – 152 Windows, macOS, Linux, Android 88
Firefox 135 – 154 Windows, macOS, Linux, Android 80
Safari 15.6 – 26.6 macOS, iOS 23
Edge 131 – 151 Windows, macOS 42
Opera 124 – 134 Windows, macOS, Linux 33
OkHttp 4, 5 Android 2

268 profiles total. Use koon --list-browsers (CLI) to see all profiles.

Profile naming

Format: {browser}{version}{-os} — all parts except the browser name are optional. Both chrome152-macos and chrome152macos work (dash is optional).

Desktop browsers with OS variants:

Browser Default (macOS) Windows macOS Linux
Chrome 152 chrome152 chrome152-windows chrome152-macos chrome152-linux
Firefox 154 firefox154 firefox154-windows firefox154-macos firefox154-linux
Edge 151 edge151 edge151-windows edge151-macos
Opera 134 opera134 opera134-windows opera134-macos opera134-linux
Safari 26.6 safari266 safari266-macos

Mobile browsers:

Browser Example
Chrome Mobile (Android) chrome-mobile152
Firefox Mobile (Android) firefox-mobile154
Safari Mobile (iOS) safari-mobile266

OkHttp (Android apps):

Version Name
OkHttp 4 okhttp4
OkHttp 5 okhttp5

Shorthand — omit the version to get the latest:

Shorthand Resolves to
chrome Chrome 152 macOS
firefox Firefox 154 macOS
safari Safari 26.6 macOS
edge Edge 151 macOS
opera Opera 134 macOS
chrome-mobile Chrome Mobile 152 Android
firefox-mobile Firefox Mobile 154 Android
safari-mobile Safari Mobile 26.6 iOS
okhttp OkHttp 5

Features

  • TLS fingerprint — cipher list, curves, sigalgs, extension order, GREASE, ALPS, cert compression, delegated credentials
  • HTTP/2 fingerprint — SETTINGS order, pseudo-header order, stream dependencies, priority frames, window sizes
  • HTTP/3 (QUIC) — Alt-Svc discovery, QUIC transport parameter fingerprinting, H3 connection pooling
  • Header order preservation — HTTP/2 (via forked h2) and HTTP/1.1
  • Encrypted Client Hello — real ECH from DNS HTTPS records, with GREASE fallback
  • DNS-over-HTTPS — Cloudflare and Google resolvers with ECH config discovery
  • TLS session resumption — session ticket caching across requests
  • Cookie jar — automatic persistence with domain/path/expiry/Secure/HttpOnly/SameSite
  • Proxy — HTTP CONNECT and SOCKS5, with H3 fallback to H2 through proxies
  • MITM proxy server — local proxy that re-sends all traffic through koon's fingerprinted stack
  • WebSocketwss:// connections with browser-matching TLS handshake
  • Streaming responses — chunked body streaming with async iterator support
  • Multipart form-data — file uploads with custom content types
  • Per-request headers, timeout, and proxy — override defaults per request without affecting the client
  • Ergonomic response APIok, text(), json(), header() on every response
  • Session persistence — save/load cookies and TLS session tickets to JSON
  • Fingerprint randomization — slight jitter on UA build number, accept-language q-values, H2 window sizes
  • Response decompression — gzip, brotli, deflate, zstd (automatic)
  • Local address binding — bind outgoing connections to a specific local IP (multi-IP servers, IP rotation)
  • Connection pooling — H3 multiplexed + H2 multiplexed + H1.1 keep-alive
  • Custom redirect hookonRedirect(status, url, headers) → bool to intercept and stop redirects (captcha detection, geo-block handling)
  • Automatic retry — retry on transport errors (connection, TLS, timeout) with automatic proxy rotation
  • Request hooksonRequest/onResponse observe-only callbacks for logging and debugging
  • Proxy rotation — round-robin over multiple proxy URLs, proxy-aware connection pool
  • Bandwidth tracking — per-request bytesSent/bytesReceived + cumulative counters on the client
  • String bodypost(), put(), patch() accept strings directly (no Buffer.from() needed)
  • User-Agent propertyclient.userAgent exposes the profile UA for Puppeteer/Playwright sync
  • Geo-locale matchinglocale: 'fr-FR' generates Accept-Language matching proxy geography
  • Structured errors — machine-readable [CODE] prefix on all errors (TIMEOUT, TLS_ERROR, PROXY_ERROR, etc.)
  • Connection inforesp.tlsResumed and resp.connectionReused for debugging connection behavior
  • CONNECT proxy headers — custom headers in the HTTP CONNECT tunnel (session IDs, geo-targeting for Bright Data, Oxylabs)
  • IPv4/IPv6 toggle — restrict DNS resolution to a specific IP version
  • Mobile browser profiles — Chrome Mobile (Android), Firefox Mobile (Android), Safari Mobile (iOS) with platform-specific TLS/H2 fingerprints
  • OkHttp profiles — Android app impersonation (OkHttp 4.x, 5.x) with Conscrypt TLS stack fingerprint
  • Sync Python APIKoonSync wrapper for all HTTP methods without asyncio (WebSocket and streaming remain async-only)

Usage

Node.js

import { Koon } from 'koonjs';

// Browser profile + options
const client = new Koon({
  browser: 'chrome152',
  headers: { 'X-Custom': 'value' },
  proxy: 'socks5://127.0.0.1:1080',  // optional
  localAddress: '192.168.1.100',      // optional: bind to specific IP
  randomize: true,                     // optional: slight fingerprint jitter
  retries: 3,                          // optional: retry on transport errors
  locale: 'fr-FR',                     // optional: Accept-Language for proxy geo
  ipVersion: 4,                        // optional: force IPv4 DNS resolution
  proxyHeaders: {                      // optional: CONNECT tunnel headers
    'X-Session-Id': 'abc123',
  },
  onRedirect: (status, url, headers) => {
    return !url.includes('captcha');   // stop if redirect goes to captcha
  },
});

// HTTP methods
const r1 = await client.get('https://httpbin.org/get');
const r2 = await client.post('https://httpbin.org/post', 'data');
const r3 = await client.put('https://httpbin.org/put', 'data');
const r4 = await client.delete('https://httpbin.org/delete');
const r5 = await client.patch('https://httpbin.org/patch', 'data');
const r6 = await client.head('https://httpbin.org/get');

// User-Agent (useful for Puppeteer/Playwright sync)
console.log(client.userAgent);  // "Mozilla/5.0 ... Chrome/145..."

// Response
console.log(r1.ok);                             // true (status 2xx)
console.log(r1.status);                         // 200
console.log(r1.text());                         // body as string (charset-aware)
console.log(r1.json());                         // parsed JSON
console.log(r1.contentType);                    // e.g. "text/html; charset=utf-8"
console.log(r1.header('content-type'));          // case-insensitive header lookup
console.log(r1.body);                           // raw Buffer
console.log(r1.tlsResumed);                     // TLS session was reused
console.log(r1.connectionReused);               // pooled connection was reused
console.log(r1.remoteAddress);                   // remote peer IP, or null for H3
console.log(r1.bytesSent, r1.bytesReceived);    // bandwidth per request

// Per-request headers, timeout, and proxy
const r7 = await client.get('https://httpbin.org/get', {
  headers: { 'Authorization': 'Bearer token' },
  timeout: 5,                                 // 5s timeout for this request only
  proxy: 'http://user:pass@other-proxy:8080', // override proxy for this request
});

// Cookies persist automatically
await client.get('https://httpbin.org/cookies/set/name/value');
const r = await client.get('https://httpbin.org/cookies');

// Clear cookies (keeps TLS sessions and connection pool)
client.clearCookies();

// Session save/load
const session = client.saveSession();           // JSON string
const client2 = new Koon({ browser: 'chrome152' });
client2.loadSession(session);

// File: save/load to disk
client.saveSessionToFile('session.json');
client2.loadSessionFromFile('session.json');

// WebSocket
const ws = await client.websocket('wss://echo.websocket.org');
await ws.send('hello');
const msg = await ws.receive();  // { isText: true, data: Buffer }
await ws.close();

// Streaming
const stream = await client.requestStreaming('GET', 'https://example.com/large');
console.log(stream.status);
const body = await stream.collect();  // or iterate with nextChunk()

// Multipart upload
await client.postMultipart('https://httpbin.org/post', [
  { name: 'field', value: 'text' },
  { name: 'file', fileData: Buffer.from('...'), filename: 'upload.txt', contentType: 'text/plain' },
]);

// MITM proxy
import { KoonProxy } from 'koonjs';
const proxy = await KoonProxy.start({ browser: 'chrome152', listenAddr: '127.0.0.1:8080' });
console.log(proxy.url);         // http://127.0.0.1:8080
console.log(proxy.caCertPath);  // path to CA cert for trust
await proxy.shutdown();

Python

KoonSync provides a blocking API — no asyncio needed:

from koon import KoonSync

# Browser profile + options
client = KoonSync("chrome152",
    headers={"X-Custom": "value"},
    retries=3,                                   # retry on transport errors
    locale="fr-FR",                              # Accept-Language for proxy geo
    ip_version=4,                                # force IPv4 DNS resolution
    proxy_headers={"X-Session-Id": "abc123"},    # CONNECT tunnel headers
    on_redirect=lambda s, u, h: "captcha" not in u,
)

# HTTP methods
r = client.get("https://httpbin.org/get")
r = client.post("https://httpbin.org/post", "data")
r = client.put("https://httpbin.org/put", "data")
r = client.delete("https://httpbin.org/delete")
r = client.patch("https://httpbin.org/patch", "data")
r = client.head("https://httpbin.org/get")

# Response
print(r.ok)                 # True (status 2xx)
print(r.status)             # 200
print(r.text)               # body as string (charset-aware)
print(r.json())             # parsed JSON
print(r.content_type)       # e.g. "text/html; charset=utf-8"
print(r.header("content-type"))  # case-insensitive header lookup
print(r.tls_resumed)        # TLS session was reused
print(r.connection_reused)  # pooled connection was reused
print(r.bytes_sent, r.bytes_received)  # bandwidth per request

# Per-request headers, timeout, and proxy
r = client.get("https://httpbin.org/get",
    headers={"Authorization": "Bearer token"},
    timeout=5,                                   # 5s timeout for this request only
    proxy="http://user:pass@other-proxy:8080",   # override proxy for this request
)

# Cookies persist automatically
client.get("https://httpbin.org/cookies/set/name/value")
r = client.get("https://httpbin.org/cookies")

# Clear cookies (keeps TLS sessions and connection pool)
client.clear_cookies()

# Session save/load
session = client.save_session()
client2 = KoonSync("chrome152")
client2.load_session(session)

# User-Agent (useful for Puppeteer/Playwright sync)
print(client.user_agent)  # "Mozilla/5.0 ... Chrome/145..."

For async code, use Koon instead — same API, but all request methods are coroutines:

from koon import Koon

client = Koon("chrome152")
resp = await client.get("https://httpbin.org/get")

# WebSocket (async only)
ws = await client.websocket("wss://echo.websocket.org")
await ws.send("hello")
msg = await ws.receive()
await ws.close()

# Streaming (async only)
stream = await client.request_streaming("GET", "https://example.com/large")
body = await stream.collect()

R

library(koon)

# Browser profile + options
client <- Koon$new("chrome152", proxy = "socks5://127.0.0.1:1080", randomize = TRUE,
                    local_address = "192.168.1.100", retries = 3L,
                    locale = "fr-FR", ip_version = 4L,
                    proxy_headers = c(`X-Session-Id` = "abc123"),
                    on_redirect = function(status, url, headers) !grepl("captcha", url))

# HTTP methods (synchronous)
resp <- client$get("https://httpbin.org/get")
resp <- client$post("https://httpbin.org/post", "data")
resp <- client$put("https://httpbin.org/put", "data")
resp <- client$delete("https://httpbin.org/delete")
resp <- client$patch("https://httpbin.org/patch", "data")
resp <- client$head("https://httpbin.org/get")

# Response
resp$ok         # TRUE (status 2xx)
resp$status     # 200
resp$version    # "HTTP/2.0"
resp$text           # body as string (charset-aware)
resp$content_type   # e.g. "text/html; charset=utf-8"
resp$body           # raw vector
resp$headers        # data.frame with name + value columns

# Parse JSON (via jsonlite)
data <- jsonlite::fromJSON(resp$text)

# Per-request headers
resp <- client$get("https://httpbin.org/get",
  headers = c(Authorization = "Bearer token")
)

# Cookies persist automatically
client$get("https://httpbin.org/cookies/set/name/value")
resp <- client$get("https://httpbin.org/cookies")

# Clear cookies (keeps TLS sessions and connection pool)
client$clear_cookies()

# Session save/load
json <- client$save_session()
client2 <- Koon$new("chrome152")
client2$load_session(json)

# Export profile as JSON
client$export_profile()

# List all browsers
koon_browsers()

CLI

# GET with browser profile
koon -b chrome152 https://example.com

# POST with body
koon -b firefox154 -X POST -d '{"key":"value"}' https://httpbin.org/post

# Custom headers
koon -b safari266 -H "Authorization: Bearer token" https://api.example.com

# Verbose output (request/response headers)
koon -b chrome152 -v https://httpbin.org/get

# JSON output
koon -b chrome152 --json https://httpbin.org/get

# Save response to file
koon -b chrome152 -o page.html https://example.com

# Proxy
koon -b chrome152 --proxy socks5://127.0.0.1:1080 https://example.com

# Session persistence
koon -b chrome152 --save-session session.json https://example.com/login
koon -b chrome152 --load-session session.json https://example.com/dashboard

# DNS-over-HTTPS
koon -b chrome152 --doh cloudflare https://example.com

# OS-specific user-agent
koon -b chrome152-macos https://example.com

# Fingerprint randomization
koon -b chrome152 --randomize https://example.com

# List all browser profiles
koon --list-browsers

# Export profile as JSON
koon --export-profile chrome152

# Start MITM proxy
koon proxy --browser chrome152 --listen 127.0.0.1:8080

Rust

[dependencies]
koon-core = { git = "https://github.com/scrape-hub/koon.git" }
use koon_core::{BrowserProfile, Client};
use koon_core::profile::Chrome;

#[tokio::main]
async fn main() -> Result<(), koon_core::Error> {
    // From a specific profile constructor
    let client = Client::new(Chrome::v152_windows())?;

    // Or with builder for full control
    let profile = BrowserProfile::resolve("chrome152")?;
    let client = Client::builder(profile)
        .max_retries(3)
        .locale("fr-FR")
        .ip_version(koon_core::IpVersion::V4)
        .on_redirect(|status, url, _headers| {
            !url.contains("captcha")
        })
        .build()?;

    let r = client.get("https://example.com").await?;
    println!("{} {} ({} bytes)", r.status, r.version, r.body.len());

    // Clear cookies without resetting TLS/pool
    client.clear_cookies();

    Ok(())
}

Architecture

koon-core         Rust library — TLS, HTTP/2, HTTP/3, profiles, proxy
koon-node         Node.js native addon via napi-rs
koon-python       Python extension via PyO3 + maturin
koon-r            R package via extendr
koon-cli          Command-line interface via clap

Key dependencies:

  • boring2 — BoringSSL Rust bindings
  • http2 (fork) — HTTP/2 with header field ordering
  • quinn + h3 — QUIC / HTTP/3
  • napi-rs — Rust to Node.js bridge
  • PyO3 + maturin — Rust to Python bridge
  • extendr — Rust to R bridge

Building from source

Only needed if you want to build koon yourself instead of using the published packages.

Requirements:

  • Rust 1.85+
  • CMake
  • NASM (Windows only, for BoringSSL assembly)
  • C compiler — MSVC (Windows), GCC or Clang (Linux/macOS)
# Core library
cargo build --release -p koon-core

# Node.js addon
cargo build --release -p koon-node

# Python package
cd crates/python && pip install -e .

# R package
cd crates/r && Rscript -e "rextendr::document(); devtools::install()"

# CLI binary
cargo build --release -p koon-cli

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

koon-0.8.1.tar.gz (145.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

koon-0.8.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

koon-0.8.1-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ x86-64

koon-0.8.1-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

koon-0.8.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

koon-0.8.1-cp314-cp314-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.14Windows x86-64

koon-0.8.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

koon-0.8.1-cp314-cp314-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

koon-0.8.1-cp314-cp314-macosx_10_12_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

koon-0.8.1-cp313-cp313-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.13Windows x86-64

koon-0.8.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

koon-0.8.1-cp313-cp313-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

koon-0.8.1-cp313-cp313-macosx_10_12_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

koon-0.8.1-cp312-cp312-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.12Windows x86-64

koon-0.8.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

koon-0.8.1-cp312-cp312-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

koon-0.8.1-cp312-cp312-macosx_10_12_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

koon-0.8.1-cp311-cp311-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.11Windows x86-64

koon-0.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

koon-0.8.1-cp311-cp311-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

koon-0.8.1-cp311-cp311-macosx_10_12_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

koon-0.8.1-cp310-cp310-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.10Windows x86-64

koon-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

koon-0.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

File details

Details for the file koon-0.8.1.tar.gz.

File metadata

  • Download URL: koon-0.8.1.tar.gz
  • Upload date:
  • Size: 145.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for koon-0.8.1.tar.gz
Algorithm Hash digest
SHA256 ac864961c0b346b5041035c0766a87b779fa56d1b3b21d63b648273beb1845ef
MD5 98c2493d4af12a4f8d56cf890078d8b8
BLAKE2b-256 5ee935510ab9659795fcacdfbf4ff947ca819c6db8cf911e4c629ab5ddd7d5b4

See more details on using hashes here.

File details

Details for the file koon-0.8.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7fb887e95137fffe7497c1bc004aad484b63f929e2ac240f0058a86b29aa35bd
MD5 994acf5b93f04a0791638c7d518aac35
BLAKE2b-256 8550e6f26df8f43974eb580cf6a87f3a3eb9b95853b1b24762c3f770e8782258

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6d204da7ca7dfe0274cb9f2eb0b495edc65504dc4e2881738fc9a0f9002a6878
MD5 d28ecc09292b98b0063b17b487b68b31
BLAKE2b-256 b0d5683c5d14df84a3670f63b41a09f0e0354f26fbe30a32a397e656ad31ef20

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 65e2ce2856cbbe36b7cdb5909b9ef37402b7600f831f84c744ba74183a89373d
MD5 f4b720a40db2c3614974ab246ffa657b
BLAKE2b-256 8edf4a1ca3d41aea171ba465ad9339b01e54d26e90444a8e24e96467f1830d47

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d8918095c7fa47a1d18f7201554a51d6f0299601fe777493475a152989004805
MD5 74443957e3ae6bc56200909e6e596329
BLAKE2b-256 dcd2c9605acdf8ad9c4cf09b72b2c657d0b5a7daac5940dcd3d3a15ebd7d4d29

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: koon-0.8.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for koon-0.8.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0f5d61fc19504e1707bd344b0a41d4ea1146ee411ff7dbbffef605dbba284a5c
MD5 7990713091f1b1f33c91cf262b518795
BLAKE2b-256 d37b6c370a5b21880db791549123c573525f662474138ec927024c9166283ab3

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 38e9d25e894f720dfed74adccc1ff17335c47d5b98c69245c17b0c2840ebd681
MD5 6f1b4316021e643ff7069d625bda3548
BLAKE2b-256 ab1dec6064285f2e8069c5fb257aab7431ab8abd463d1fa5fb20f80e988f5ba5

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc64c1271efebad665ad1757da1103e925bf1cc953f41632493d9369b36c55a1
MD5 98d09f548ffab552bad4b4e775e42f7b
BLAKE2b-256 977def86926aed7d182ef61c7c650f7248e0a52cd9db9e1bef8532b8d5931989

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 431fca945da674ddbe747ae0f1ed79af474511a200fe1b99f74690e2ad128d81
MD5 3bfc072537709a08aeb886723fdd0b6b
BLAKE2b-256 ecb651bd9485591e2bca572b66331c8403f0535b5666ef765804a7b7679a1ceb

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: koon-0.8.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for koon-0.8.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 7297a074411617e67911646494f4ee7f4803b24076f448e875d5530961f932a8
MD5 7b28752179d9a7a70b046b64b7d415d2
BLAKE2b-256 6c4d85171aff823d9c63f68046f5d340ae8e58b51e39bf7cf152128f5c200dbd

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 532eedaa9f1fe89f44c4139a9e10984d1db78b358b249a6481428fa4bfafb5b2
MD5 b73cec1682783bc593601879833184a5
BLAKE2b-256 9f70939a9447d2d39a833bf8153c1ec3b51b289a2eb0210d4739dc917d60fea5

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2ba76e9843e60daf59c2b6feb6283a73c60c6313266ba3552250f4a945369976
MD5 a8f2c472f8744dd07843c06a3c98b6b9
BLAKE2b-256 e57ff67be00b38435df259a0f31724b1efb7786a42068cc085ee800483d6b876

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 eb9b0d05ef9d2485594b09a8c2794dc9eae6e8dd2ae8c7d47f1907eeef18b0e4
MD5 a7c0c8c576e3d50d75c09c2aa1bcd414
BLAKE2b-256 9ef25381a3cbd62d3b1bcb83466094335d1f1b4bb27277be41c2174a963204ff

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: koon-0.8.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for koon-0.8.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 eae64ca518de9d5db2318839242244c08bc94121a6320dd178d5997b0353515c
MD5 c12ec66f91995773da74fb5c2e0bc4b4
BLAKE2b-256 bde3609fdc4aae686ba6d9932d8e922d6389347ab8c2bb73826c5964a435ee7b

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 76b72c486ec1aec40fa67aa4be46437ca7c09697c076c1d982c6578ba9c82738
MD5 9e00b043b15541520a855d37af97d706
BLAKE2b-256 c92cd2f3fd01e740747a4bcc06de7f3a76edb2b26d5dc38e43d4142ae6404963

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3f6c0eaa01fbff5faeae5aaa20be93e0c9e1cbd7511c1ea330dd096917926991
MD5 b0325daed16c4650fc38d56bfe839b35
BLAKE2b-256 26e25638d60cb162186a6a6a87b3e772585579d88ab8c4cfe61588b961e22651

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 af8b2dc89bca9bc7207dea6d7e51d847ad8a6b2309a951420e182116a3b9eb43
MD5 eefa3efe0f7c8b161e2b1b8dc6ac3ad5
BLAKE2b-256 808af52454c8eb500acce136d70bb408b38aaced247d2b1bdd7f0f0aaccadac7

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: koon-0.8.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for koon-0.8.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fa15c32bc22cc73493f2f717f726ed28b41a6051c682310566626148ea0ee62c
MD5 50906bed83759daff2a01c6dac2d3a8a
BLAKE2b-256 21f9d935d01f2e9304938e30904f0a2c22aff7b2675a9906f053af50b218e168

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b6f42ce2a193323e5a00d12106d478b26d65d5fd9540d33355f27a7164b3f68d
MD5 6b86c27007d6bf524a58a4f0f47de827
BLAKE2b-256 7cfcd7f89a7d679de214f92324a4c0c6efb8ae754e8cfd3a992130c72625355f

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0bafdf14b76e3a69c11cbffe3573a82fcc2a5545b66754dc404da459ba160fbd
MD5 0a13a6181151ce16c50304cdc62e23e4
BLAKE2b-256 37dbd4f89ca83bc7dadc6cace7bc08f04e6875e255b565928ba0121ff0f7d836

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 224fb63bd5063a0e9bfecf949c971659a1d67b3f505a405c1f5983f012982386
MD5 2851e84f05bff283d887a13e3bd30a43
BLAKE2b-256 5075b83a5562b4b3b20b4c904ee912c20faa9861e75324cb4adac331d4413031

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: koon-0.8.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for koon-0.8.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 eb37745dbdee7e49d49413f1c9db63aeeaba001b8bcf92a0fee2d54e37075f8a
MD5 3aa23c38e1286cab227530f545c11f22
BLAKE2b-256 4a108395fbe4c44bbba53e58d2b3280bcb9a9fc76634bf73cddef166bb7a1887

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 46268d08361383608dbc16cf1d70542fb9cf3335702a0fe1a6ee07e602cb4dd3
MD5 db8e0a0812c6441134e3ad5a2355973f
BLAKE2b-256 a0e7f715aa53e686a18ca4f2e2ee14acdabc8d79af00f0be71ff6ccee159f791

See more details on using hashes here.

File details

Details for the file koon-0.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for koon-0.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5d5f7c667ce1a8d449e1b479fc89a03c9adaa5f2c13c4806b854bbf1dcdd67de
MD5 00577cda26dbf1fc4b8cb82a4664bb92
BLAKE2b-256 0868003b439929cc2a638d1a211e07b7f2d7fef26c04576e346dcf8b98c066dd

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.8.1 This release

24 files

0.8.0

24 files

0.7.0

21 files

0.6.3

21 files

0.6.2

21 files

0.6.1

13 files

0.6.0

13 files

0.5.6

13 files

0.5.3

6 files

0.5.2

6 files

0.5.0

24 files

0.4.5

24 files

0.4.4

24 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page