Skip to main content

Rust-powered HTTP cassette recorder for Python tests. Safe by default.

Project description

Cassetter

Rust-powered HTTP cassette recorder for Python tests. Safe by default.

Why?

VCR.py works, but has fundamental problems:

  • Unsafe by default - doesn't filter sensitive headers, tokens, or API keys
  • Unsafe YAML - uses yaml.load() with an unsafe loader that can execute arbitrary Python code from cassette files
  • Slow - pure Python YAML parsing, matching, and serialization
  • Fragile - relies on undocumented internals that break on minor version bumps
  • Poor readability - JSON bodies stored as escaped strings in YAML

cassetter fixes all of this with a Rust core (PyO3) for speed, safe-by-default security filtering, and secure YAML parsing.

Install

uv add cassetter

Quick start

With pytest (recommended)

Mark tests with @pytest.mark.vcr:

import httpx
import pytest

@pytest.mark.vcr
async def test_api_call():
    async with httpx.AsyncClient() as client:
        response = await client.get("https://api.example.com/users")
    assert response.status_code == 200

First run records real HTTP interactions. Subsequent runs replay from the cassette file - no network needed.

If you need direct access to the cassette (e.g. to inspect recorded interactions), request the fixture explicitly:

from cassetter import Cassette

@pytest.mark.vcr
async def test_with_cassette(vcr_cassette: Cassette):
    ...
    assert len(vcr_cassette.interactions) == 1

With the context manager

from cassetter import use_cassette

async with use_cassette("tests/cassettes/my_test.yaml", record_mode="once"):
    async with httpx.AsyncClient() as client:
        response = await client.get("https://api.example.com/users")

Record modes

Mode Behavior
none Replay only. Raises if no match found.
once Record if cassette doesn't exist. Replay if it does.
new_episodes Replay existing interactions. Record new ones.
all Record everything, overwriting the cassette.

Set via CLI: pytest --record-mode=none

Safe by default

Sensitive data is filtered at write time - cassettes never contain secrets. These headers are stripped automatically:

authorization, cookie, set-cookie, x-api-key, api-key, x-auth-token, proxy-authorization, www-authenticate

Query params like api_key, access_token, token, client_secret are replaced with [FILTERED].

JSON body fields like password, access_token, refresh_token, client_secret are scrubbed.

Customize filtering:

from cassetter import use_cassette

async with use_cassette(
    "cassette.yaml",
    filtered_headers=["x-custom-secret"],
    body_scrub_patterns=["my_secret_field"],
    filter_replacement="***REDACTED***",
):
    ...

Cassette format

JSON bodies are stored as structured YAML - not escaped strings:

version: 1
interactions:
  - request:
      method: POST
      uri: https://api.openai.com/v1/chat/completions
      headers:
        content-type:
          - application/json
      body:
        type: json
        content:
          model: gpt-4o
          messages:
            - role: user
              content: Hello!
    response:
      status: 200
      headers:
        content-type:
          - application/json
      body:
        type: json
        content:
          id: chatcmpl-abc123
          choices:
            - message:
                role: assistant
                content: Hi there!
    recorded_at: '2026-02-20T10:30:01Z'

Request matching

Default: match on method + URI. Configurable:

from cassetter import use_cassette

async with use_cassette(
    "cassette.yaml",
    match_on=["method", "uri", "json_body"],
    ignore_json_paths=["request_id", "timestamp"],
):
    ...

Available matchers: method, uri, headers, body, json_body.

Supported libraries

Library Protocol Interception method
httpx HTTP AsyncBaseTransport / BaseTransport
aiohttp HTTP Session _request patch
requests HTTP Session send patch
urllib3 HTTP HTTPConnectionPool.urlopen patch
grpcio gRPC grpc.aio.Channel wrapper
websockets WebSocket websockets.connect patch

By default, interceptors are auto-detected based on which libraries are installed. To limit interception to specific libraries:

async with use_cassette("cassette.yaml", intercept=["httpx", "aiohttp"]):
    ...

gRPC support

Install the gRPC extra:

uv add "cassetter[grpc]"

Record and replay gRPC calls by adding "grpc" to the interceptor list:

async with use_cassette("cassette.yaml", intercept=["grpc"]):
    channel = grpc.aio.insecure_channel("localhost:50051")
    stub = my_service_pb2_grpc.MyServiceStub(channel)
    response = await stub.Echo(my_service_pb2.EchoRequest(message="hello"))

All four gRPC call patterns are supported: unary-unary, server streaming, client streaming, and bidirectional streaming. Request and response bodies are stored as binary in the cassette, with an optional json_debug section for human-readable protobuf representation (when google.protobuf is available):

grpc_interactions:
  - request:
      method: /mypackage.MyService/Echo
      metadata: {}
      body:
        type: binary
        content: 0a0568656c6c6f
    response:
      status_code: 0
      status_message: OK
      metadata: {}
      body:
        type: binary
        content: 0a0568656c6c6f
    json_debug:
      request:
        message: hello
      response:
        message: hello

Streaming responses use length-prefixed binary encoding - multiple response chunks are stored in a single body field and decoded back into individual messages on replay.

WebSocket support

Install the WebSocket extra:

uv add "cassetter[websockets]"

Record and replay WebSocket connections:

async with use_cassette("cassette.yaml", intercept=["websockets"]):
    async with websockets.connect("wss://ws.example.com/stream") as ws:
        await ws.send('{"subscribe": "ticker"}')
        data = await ws.recv()

WebSocket interactions record each frame with direction, type, and timing offset:

ws_interactions:
  - uri: wss://ws.example.com/stream
    headers: {}
    frames:
      - direction: send
        frame_type: text
        body:
          type: text
          content: '{"subscribe": "ticker"}'
        offset_ms: 0
      - direction: recv
        frame_type: text
        body:
          type: json
          content:
            price: 42.5
        offset_ms: 120

On replay, recv() returns recorded frames in order without a real connection. send() is a no-op. Both text and binary frames are supported.

Streaming / SSE support

SSE (Server-Sent Events) responses - used by OpenAI, Anthropic, Groq, and other LLM APIs for streaming - work out of the box. The full response body is recorded as readable text in the cassette:

response:
  status: 200
  headers:
    content-type:
      - text/event-stream
  body:
    type: text
    content: |+
      data: {"id":"chatcmpl-abc","choices":[{"delta":{"role":"assistant"}}]}

      data: {"id":"chatcmpl-abc","choices":[{"delta":{"content":"Hello"}}]}

      data: [DONE]

On replay, the buffered body is returned to the client SDK, which parses SSE events from it. This matches how VCR.py handles streaming - chunk boundaries aren't preserved, but SSE parsers split on \n\n boundaries regardless of how bytes are delivered.

Request filtering

Ignore hosts

Bypass the cassette entirely for requests to specific hosts. Matched requests pass through to the real server - no recording, no replay:

async with use_cassette(
    "cassette.yaml",
    ignore_hosts=["*.googleapis.com", "accounts.google.com"],
):
    ...

Patterns use fnmatch syntax (* matches any sequence of characters). Combine with ignore_localhost for full control:

async with use_cassette(
    "cassette.yaml",
    ignore_localhost=True,
    ignore_hosts=["*.googleapis.com"],
):
    ...

Before record request hook

For advanced filtering, use a callback that runs before each request is recorded or replayed. Raise BypassCassette to let the request pass through live:

from cassetter import BypassCassette, RawRequest, use_cassette

def my_hook(request: RawRequest) -> None:
    if not request.uri.startswith("https://api.mycompany.com"):
        raise BypassCassette

async with use_cassette("cassette.yaml", before_record_request=my_hook):
    ...

Both options work with the pytest plugin via vcr_config:

@pytest.fixture(scope="module")
def vcr_config():
    return {
        "ignore_hosts": ["*.googleapis.com"],
    }

Cassette expiry

Force re-recording when cassettes get stale:

async with use_cassette("cassette.yaml", max_age="30d", on_expiry="rerecord"):
    ...

max_age accepts durations like "24h", "7d", "4w". on_expiry controls the behavior:

Action Behavior
warn Emit a warning (default)
fail Raise CassetteExpiredError
rerecord Delete and re-record the cassette

Also configurable via pytest:

[tool.pytest.ini_options]
vcr_max_age = "30d"
vcr_on_expiry = "warn"

Or per-test:

@pytest.mark.vcr(max_age="7d", on_expiry="fail")
async def test_fresh_data():
    ...

Orphan detection

Find cassette files that no test uses:

pytest --vcr-check-orphans=tests/cassettes/

Performance

Rust-powered YAML parsing and serialization is 3-6x faster than vcrpy (which uses PyYAML/libyaml):

  1000 interactions
                    cassetter    vcrpy         speedup
  load              13.53 ms          58.90 ms      4.4x
  match             0.98 ms           1.29 ms       1.3x
  save              7.58 ms           45.64 ms      6.0x

Run uv run python benchmarks/bench.py to reproduce.

YAML safety

vcrpy uses yaml.load() with an unsafe loader (CLoader/Loader) that can execute arbitrary Python via !!python/object tags. A malicious cassette file could run code when loaded.

cassetter parses YAML in Rust, which has no concept of Python object construction - only data types are supported.

Development

Requires Rust toolchain and Python 3.10+.

git clone https://github.com/marcelotryle/cassetter.git
cd cassetter
uv sync
uv run maturin develop
uv run pytest

Project details


Download files

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

Source Distribution

cassetter-0.2.0.tar.gz (41.4 kB view details)

Uploaded Source

Built Distributions

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

cassetter-0.2.0-cp314-cp314-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.14Windows x86-64

cassetter-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

cassetter-0.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

cassetter-0.2.0-cp314-cp314-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cassetter-0.2.0-cp314-cp314-macosx_10_12_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

cassetter-0.2.0-cp313-cp313-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.13Windows x86-64

cassetter-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

cassetter-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

cassetter-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cassetter-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

cassetter-0.2.0-cp312-cp312-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.12Windows x86-64

cassetter-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

cassetter-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

cassetter-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cassetter-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

cassetter-0.2.0-cp311-cp311-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.11Windows x86-64

cassetter-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cassetter-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

cassetter-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cassetter-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

cassetter-0.2.0-cp310-cp310-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.10Windows x86-64

cassetter-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cassetter-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

cassetter-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cassetter-0.2.0-cp310-cp310-macosx_10_12_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file cassetter-0.2.0.tar.gz.

File metadata

  • Download URL: cassetter-0.2.0.tar.gz
  • Upload date:
  • Size: 41.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cassetter-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2c2a65473bfc281f06ac50f11e16e63425396e50dd3ca9de4388dbb74c98e6be
MD5 137bef75c3d9e0f6706c21405a7ab123
BLAKE2b-256 18d4e2f204a12611f09b58959af062eb485d5eefdce6ecb9dd3b1b0f7c9f20b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0.tar.gz:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: cassetter-0.2.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cassetter-0.2.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 b7311abd26c7c411c26bd427f236e349d321fedf4f0744c24b8076f1d88b76eb
MD5 295769dfbdebbfb867f5c9657e8eb75b
BLAKE2b-256 0e6e804745163d2a85b2e88a1207b52befe5fe46f421516c73c1d5e43494f2bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4a5e942588211bd15872513572ef4ba6246e6db8b7a066d136a8b92cf9af0704
MD5 a7e1469e40e706f0f3b199e75c58e288
BLAKE2b-256 72c4017a064febc4e99c655bd2c72e6fee9195f41f2fb2eb7d5c7d3a0d4c0fb2

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8a939314fb8d933429fbd57b1bef610c7eeb0ba4dfb581d1b557fd8eee2941de
MD5 2da878dd3fc16498394c229ee83f6700
BLAKE2b-256 bc3046b936270b0f46ca19dd98da4fce512d892667bccf0f114a61e8bf68a247

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2e94225ab850799e9dbdefee486862d3429962482b6bdf3171a48592a3b79c0d
MD5 f3d59ee342e3bc0d3847068dcfab584c
BLAKE2b-256 a8c3c146b4d315a2d655e65c2357c68777c7b325193ce14a427870af22b1de1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c10a5f67a8ee9cf1c51dd80d0ca3da25173c39a9100a44f3a5a13f193e723570
MD5 f3ca23a59de767b81891385a50601c04
BLAKE2b-256 afe0373142a9b60b1417aee434a44a60d3b51bba81fc3608d7073dec9c6961ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp314-cp314-macosx_10_12_x86_64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cassetter-0.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cassetter-0.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 90ddf1c718612a9271d596dc76c2c3d0b89988c1f666a7aa0e66967e40c32192
MD5 1a7b804b0b01bae3d6f572e770f45a4f
BLAKE2b-256 89a3860552d0b99869a261b23ca83d44b6e90f342a47d894f636e037cd37a205

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6fcaceb38851cb3ccb105874a5abf559357fff367944982c025d76c1fdb23efb
MD5 fa4ba34debab00844b5e7b0f7b960ed7
BLAKE2b-256 e6a55dd1eb73b6f77a48510a04a5004c73ea98ab6fe6ce4c42dfad6e66e2ec93

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7bad6f51301ae5118593e41d8e7a84477b4de0b17261cda696295884c1f4585f
MD5 1bf632cc49ebfd1090476a2c87d731d6
BLAKE2b-256 376354c946b78f8a91e0ae6bf308a012c3d7c13637cd8dae880360c394168ef4

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9a5ca257f84232590b065708af61093e4c581d1c375633aa6c1c21c863200b60
MD5 fe5f3f7f6b238915c99b2f4779eafa5e
BLAKE2b-256 f126de94727244e8546cbc6987191706c9942db799e3877441642171be8ef549

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8373adf9d481f31489c1b980080ef9c23de7142e52adee231eca4c974246d913
MD5 9359272cba7eee897618e8b27e05e514
BLAKE2b-256 a3feaeafc5a25139d475fe0b77b4ab3b1613b4f6382ebbba5d5f3cf1af01723b

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cassetter-0.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cassetter-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 157e0acf01d6df0b435db24629e6417922b4aaf0bb0f31e46bcb9069b681affb
MD5 610b1d83618695c9a360343b3fdf3bb0
BLAKE2b-256 70f23fe2238dc224de087f2c26bc48e6f36037e5e22302991f60193f9cb7ff0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 74b45c9ba6282c6322e7f5af4ea261fa307ef4e5ab7e95f8180c7410f854d6e5
MD5 5677cb130140d0d1519877a5fe432b60
BLAKE2b-256 b452e826652fe9a358b4fc37c2a9e7c6416428d9b95a83fb2afa752afe29922b

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9a668b3e8f3f26c4ae77f7b91b3b6aaf23a3cd6e6616d3ffdcb2f970b01b4d0b
MD5 ffecd62c13058bd9300db8d122f7d874
BLAKE2b-256 2c474cc7827e8108f37698c5d2259bcf959ae4d940814af9d149b892e81d2a31

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a130e47faddf76f824fa5c2a68542a55fa89560c4c1cadae11b80330ee68a46d
MD5 ddd464ab55bbd53c496bba8d7eefc870
BLAKE2b-256 ed7eb566495b191e558c7c491b877081a2543d54df2558570452f5ab60714656

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2edc4dac4159d6d4a05f2c11ec13f6e2d1cd7966ab88a94263dd81d1781dbb47
MD5 95f575832039101954a3ba02ac29a758
BLAKE2b-256 c9921a4196240e4e70af3c3490cd0f452d55686218b3cdfcaf4b6491459197a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cassetter-0.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cassetter-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 22564e86c718d873b37b8736d96fa36503e30c53f998dde3f521f880ba829d0e
MD5 e13199ece479d83c4b6b0172e17ad36b
BLAKE2b-256 1cd6dc3e40c8877abf7d73738d9c94bf8bea838d8b5e265981667518bda0502d

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2b9d97bbc99942aa7f804a3654150d95c9f46f38a0b8bb36b2ff26abf7a42ae9
MD5 0f22e232c168bd830a3fd8d0d4bac73e
BLAKE2b-256 7db8131ce53d2b67bb6302f1bd254f5f9ada2bf987d2c01f18716a2f9216b68f

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d0378c526479b6111c82f98bdc26019752d1df8994f00b896a224f7eb7c9847f
MD5 2baf92882342c6a5a4c9449c0214bd74
BLAKE2b-256 bc8a78e8d6dae189c637677e91077058769a6e3c064bfc74536ecb50cce7dc0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6df82021366ab9fd3648fddc89bff82bca5f4562b493fa18f0be76b231a1ac1c
MD5 f471ee109f0849bedf2d4bb4031f7d51
BLAKE2b-256 06812466d26b46b1408e65875ccfde64493e8002a60f809944f407121000a82e

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f5c44b4e58d959b56af088ba39e54e7a37ebf639ce1d96b2fd98cb16ca7f5fbf
MD5 63dfcb464118186970708ed76c55d224
BLAKE2b-256 6337336acf0e600e652bfa989c150ba113aa8c3abcc6ab0cd766e51120022f96

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cassetter-0.2.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cassetter-0.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e211bdd01daccd1873481da3d7b984338cadee0ed1316435920c29f0c54157d8
MD5 766693cf423397a11a657e42c4ee8177
BLAKE2b-256 aba60be5e0b4d5b1908e7839400f7cda5949a74b9b06f6e3134f2acdf1a0e88b

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 192859836a4eb2a8b23e3bfcef2655e2db5293909366a6a58ad31695d325311c
MD5 e94cdda4586d2613f4c8029472681369
BLAKE2b-256 a3a70f8d77e4e2cfb2a2dda64c9cad38da973e870cc6fa140716973d3d210354

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 51183078329c30f6f45ab095fc22aa7c98a34d6a4d5eeb3bd1b8c159f1127dd1
MD5 003782d4cb874a730474eac8bf4ef6c3
BLAKE2b-256 e8e437a0561b2b6613a682aef15ac3f925251258387fd2e0b83411180eb15b95

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5e5fbfeecf47774741c908ff6c0dfd1c4f33e81305e9abc0b81a18145e78040f
MD5 554b523b73223f2c48c56b056c74a6fa
BLAKE2b-256 2d788ab17b93bcd27c6377fc81171da7bb489265917aea9f47b488eba2395ea1

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cassetter-0.2.0-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cassetter-0.2.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e4aa20c525c903bc8e29855b921dda1243b5ad1b4138da3899cf96f7b0d007ff
MD5 ce55f225b864fd759b5d591ae1dc972e
BLAKE2b-256 b0544eaa275281f4f3baf640860a929576622d8c38f9a163fe9a28c21b653493

See more details on using hashes here.

Provenance

The following attestation bundles were made for cassetter-0.2.0-cp310-cp310-macosx_10_12_x86_64.whl:

Publisher: publish.yml on Kludex/cassetter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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