Skip to main content

responses-validator

A more convenient HTTP response assertion tool, designed for the requests library (also compatible with httpx). It supports writing flexible response validation scripts using YAML syntax, including validation for status codes, headers, text content, and JSON data, inspired by GitHub Actions.

Introduction

responses-validator is a Python library for validating HTTP responses. It provides a declarative way to define complex response validation rules, supporting multiple validation modes such as wildcards, regular expressions, and JSON Schema. It is an indispensable tool for API testing, interface monitoring, and automation workflows.

The core philosophy of responses-validator is to separate validation rules from test code. In traditional testing, assertion logic is often tightly coupled with the code, making it difficult to maintain. This library abstracts validation rules into separate YAML files, implementing a "validation as data" pattern. This approach offers several benefits:

  • Separation of Concerns: Test engineers or QA can focus on writing and maintaining YAML validation files without needing to delve into the internal workings of the test framework.
  • Readability and Maintainability: YAML-formatted validation rules are easier to read and manage than Python code, especially when there are many assertions.
  • Reusability: The same set of validation rules can be easily reused across different test cases, or even different projects.

Features

  • 🚀 Easy to Use: Supports both YAML configuration and Python code.
  • 🎯 Multiple Validation Modes: Supports exact matching, wildcards, regular expressions, JSON Path, and more.
  • 📝 Detailed Error Messages: Provides clear reasons for validation failures.
  • 🔧 Highly Customizable: Supports custom validation functions.
  • 📋 Type Hinting: Full support for type annotations.
  • 🌟 Flexible Validation Rules: Each field supports both simple and detailed configuration methods.

Installation

Requirements: Python >= 3.12

pip install responses-validator

Basic Usage

YAML Mode

import requests
from responses_validator import validator
from yaml import safe_load

# Define validation rules (YAML format)
yaml_text = """
status_code: 200
headers:
  content-type: 'application/json'
json:
  id: 1
  name: "*"
text: "*success*"
"""
validate_config = safe_load(yaml_text)

# Send request and assert
resp = requests.get("https://api.example.com/users/1")
validator(resp, **validate_config) # Throws an exception if validation fails

Python Mode

import requests
from responses_validator import validator

# Send request
resp = requests.get("https://api.example.com/users/1")

# Use Python arguments directly
errors = validator(
    resp,
    status_code=200,
    headers={"content-type": "application/json*"},
    json={"id": 1, "name": "*"},
    text="*success*",
    raise_exception=False  # Don't raise an exception, return error information instead
)

if errors:
    print("Validation failed:", errors)
else:
    print("Validation successful!")

Advanced Usage

Status Code Validation

Status code validation supports a single value, wildcards, and multiple values (separated by |):

---
# Single status code
status_code: 200

---
# Wildcard matching
status_code: "2*"  # Matches all 2xx status codes. Note: quotes are required when using special characters.

---
# Multiple possible status codes
status_code: "200 | 201 | 204"

---
# Complex matching
status_code: "20* | 30*"  # Matches 2xx or 3xx status codes

Text Validation

Text supports both simple strings and detailed configurations (for detailed configuration, refer to TextFieldDict):

---
# Simple string matching (uses glob mode by default)
text: "Welcome*" # Note: quotes are required when using special characters.

---
# Number
text: 12345 # Numbers are automatically converted to strings

---
# Detailed configuration: you can define value, mode, and msg (failure message)
text: # Exactly the same as the first validation
  value: "Welcome *"
  mode: glob  # Use glob for wildcard matching

---
# Exact matching
text:
  value: "Welcome home"
  mode: same  # same mode for exact matching
  msg: Response content must be exactly 'Welcome home'!

---
# Regular expression matching
text:
  value: "^Welcome (?:to )?[a-zA-Z]+$"
  mode: re # re mode for regular expression matching
  msg: Response content must start with 'Welcome' or 'Welcome to'

---
# Custom function validation
text:
  value: "lambda text: len(text) > 100"
  mode: function
  msg: Response text length must be greater than 100 characters

Headers Validation

Headers are a dictionary (key-value pairs). Each key is a request header, and its value is a mini Text validation.

---
# Simple key-value matching
headers:
  content-type: "application/json"
  server: "nginx*"  # Supports wildcards

---
# Detailed configuration
headers:
  content-type:
    value: "application/json"
    mode: same  # Exact match
    msg: Response type must be JSON
  
  server:
    value: "nginx.*"
    mode: re  # Regular expression match
    msg: Server must be nginx
  
  x-rate-limit-remaining:
    value: "lambda x: int(x) > 0"
    mode: function  # Custom function validation
    msg: API call limit has been reached

---
# Mixed usage
headers:
  content-type: "application/json"  # Simple mode
  server:  # Detailed mode
    value: "nginx*"
    mode: glob
    msg: Server must be nginx

Cookies Validation

Cookies validation is identical to Headers validation:

---
# Simple key-value matching
cookies:
  session_id: "*"
  user_token: "abc*"

---
# Detailed configuration
cookies:
  session_id:
    value: "*"
    mode: glob
    msg: Session ID cannot be empty
  
  user_token:
    value: "[a-f0-9]{32}"
    mode: re
    msg: User token format is incorrect
  
  expires:
    value: "lambda x: int(x) > 1234567890"
    mode: function
    msg: Cookie must not be expired

JSON Validation

JSON validation is the most powerful feature, supporting multiple validation modes (for detailed configuration, refer to JSONFieldDict):

---
# Simple partial matching (glob mode by default)
json:
  id: 1
  name: John
  # The actual response can contain other fields

---
# Partial array matching
json:
  users:
    - id: 1
      name: John
    # The actual array can contain more elements

---
# Detailed configuration - Exact matching
json:
  value:
    id: 1
    name: John
    email: "john@example.com"
  mode: same  # Must match exactly
  msg: JSON structure and content must be identical

---
# JSON Schema validation
json:
  value: # No need to provide a schema, just an example that conforms to the schema.
    id: 99999
    name: string
    email: eamil@example.com
  mode: schema
  msg: JSON must conform to the same schema as the value

---
# JSONPath validation
json:
  value:
    "$.users[*].name": ["John", "Jane"]
    "$.total_count": 2 # Will be automatically converted to a list
    "$.data.status": active # Will be automatically converted to a list
  mode: jsonpath
  msg: JSONPath query result does not match

---
# KeyPath validation
json:
  value:
    "users[0].name": John  # This field uses the text `globe` mode
    "data.status":         # This field uses the text `function` mode
      value: "lambda data: data =='active' "
      model: function
  mode: keypath
  msg: KeyPath verification failed
  
---
# Custom function validation
json:
  value: "mymodule.validators.validate_user_response"
  mode: function
  msg: User response validation failed

---
# Lambda function validation
json:
  value: "lambda data: data.get('id', 0) > 0"
  mode: function
  msg: User ID must be greater than 0

Response Validation

For custom complex validation needs, you can implement a custom function to validate the entire Response object.

The function should accept one positional argument (resp) and return a boolean value (True: validation passed; False: validation failed):

# my_funcs.py
def ret_true(resp):
    print(f"call ret_true: {resp=}")
    return True

def ret_false(resp):
    print(f"call ret_false: {resp=}")
    return False
---
# Import a function from a file
function: 'my_funcs.ret_true'

---
# Status code validation
function: "lambda resp: resp.status_code == 200"

---
# Status code range validation
function: "lambda resp: 200 <= resp.status_code < 300"

---
# JSON data validation
function: "lambda resp: resp.json().get('status') == 'success'"

---
# Array length validation
function: "lambda resp: len(resp.json().get('data', [])) > 0"

---
# Text content validation
function: "lambda resp: 'error' not in resp.text.lower()"

---
# Composite condition validation
function: "lambda resp: resp.status_code == 200 and resp.json().get('total', 0) > 10"

Detailed Configuration Structure

TextFieldDict

Used for validating text-based content like text, headers, and cookies:

from typing import TypedDict, NotRequired, Required
from responses_validator.fields import TextFieldMode

class TextFieldDict(TypedDict):
    name: NotRequired[str]          # Field name (set automatically, usually not specified manually)
    value: Required[str]            # Validation value (required)
    mode: NotRequired[TextFieldMode]  # Validation mode (optional, defaults to glob)
    msg: NotRequired[str]           # Custom error message (optional)

About name:

  • When validating text, the name field is automatically populated with text.
  • When validating headers and cookies, the name field is automatically populated with the dictionary key (e.g., content-type).

Supported Validation Modes (TextFieldMode):

  • same: Exact match; the value must be perfectly equal.
  • glob: Wildcard matching; supports * and ? (default mode).
  • re: Regular expression matching.
  • function: Custom function validation. The value should be a string in one of two formats:
    1. Module import path: e.g., "mymodule.validators.validate_session"
    2. Lambda expression: e.g., "lambda x: int(x) > 0"

Example:

# Examples of various TextFieldDict usages
headers:
  # glob mode (default)
  content-type: "application/*"
  
  # same mode
  server:
    value: "nginx/1.21.5"
    mode: same
    msg: Server version must match exactly
  
  # re mode
  x-request-id:
    value: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
    mode: re
    msg: Request ID must be a standard UUID format
  
  # function mode
  content-length:
    value: "lambda x: int(x) > 0"
    mode: function
    msg: Content length must be greater than 0

text:
  value: "Welcome, .*!"
  mode: re
  msg: Welcome message format is incorrect

cookies:
  session:
    value: "mymodule.validators.validate_session"
    mode: function
    msg: Session validation failed

JSONFieldDict

The detailed assertion dictionary structure for json:

from typing import TypedDict, NotRequired, Required, Union
from responses_validator.fields import JSONFieldMode

class JSONFieldDict(TypedDict):
    name: NotRequired[str]              # Field name (set automatically)
    value: Required[Union[dict, str]]   # Validation value, can be a dict or string (required)
    mode: NotRequired[JSONFieldMode]    # Validation mode (optional, defaults to `glob`)
    msg: NotRequired[str]               # Custom error message (optional)

About name:

  • When validating json, the name field is automatically populated with json.

Supported Validation Modes (JSONFieldMode):

  • glob: Partial matching, recursively matches a subset of the JSON structure (default mode).
  • same: Exact matching; the JSON must be completely identical.
  • "schema": JSON Schema validation; validates that the actual JSON and expected JSON have the same schema.
  • "jsonpath": JSONPath expression validation; uses path queries.
  • "keypath": Simple selection, advanced verification; Perform 'TextFieldDict' multimodal validation on each field.
  • function: Custom function validation. The value should be a string in one of two formats:
    1. Module import path: e.g., "mymodule.validators.validate_user"
    2. Lambda expression: e.g., "lambda data: data['id'] > 0"

Detailed Examples:

---
json:
  # glob mode - Partial matching (default)
  value:
    user:
      id: 1
      name: John
    # The actual JSON can have more fields, as long as it includes these
  mode: glob
  msg: User information does not match

---
json:
  # same mode - Exact matching
  mode: same
  msg: Response structure and content must match exactly
  value:
    status: success
    data: [{"user":{"id":1, "name":"aaa"}}, {"user":{"id":2, "name":"bb"}}]
    count: 2

---
json:
  # schema mode - JSON Schema validation
  value:
    status: string
    data: []
    count: 0
  mode: schema
  msg: Response structure must match exactly
---
json:
  # jsonpath mode - Path query validation
  value:
    "$.users[*].id": [1, 2, 3]       # Key is the jsonpath, value is the expected result (list)
    "$.users[0].name": ["John"]          
    "$.total": 3                     # If the value is not a list, it's automatically converted
    "$.status": success              
  mode: jsonpath
  msg: JSONPath query result does not meet expectations

---
json:
  # function mode - Module function
  value: "validators.complex_json_validator"
  mode: function
  msg: Complex JSON validation failed

---
json:
  # function mode - Lambda expression
  value: "lambda data: len(data.get('users', [])) > 0 and all('email' in user for user in data['users'])"
  mode: function
  msg: All users must have an email field

Complete Example

# test_api.yaml
# A complete validation configuration example

status_code: "200 | 201"

headers:
  content-type: "application/json*"
  server:
    value: "nginx.*"
    mode: re
    msg: Must be an nginx server
  x-rate-limit-remaining:
    value: "lambda x: int(x) > 10"
    mode: function
    msg: API call quota is insufficient

cookies:
  session_id: "*"
  auth_token:
    value: "[a-f0-9]{64}"
    mode: re
    msg: Authentication token format is incorrect

text:
  value: "*success*"
  mode: glob
  msg: Response text must contain the success flag

json:
  value:
    "$.data[*].id": [1, 2, 3]
    "$.meta.total": 3
    "$.status": ok
  mode: jsonpath
  msg: Data structure validation failed

function: "lambda resp: resp.elapsed.total_seconds() < 2.0"

Error Handling

When validation fails, the library provides detailed error messages:

from responses_validator import validator, ResponseAssertionError
import requests

resp = requests.get('https://api.example.com')

try:
    # Exception-raising mode
    validator(resp, status_code=200, raise_exception=True)
    print("✅ Validation passed!")
except ResponseAssertionError as e:
    print(f"❌ Validation failed: {e}")

# Or, non-exception-raising mode
errors = validator(resp, status_code=200, raise_exception=False)
if errors:
    for field, message in errors.items():
        print(f"{field}: {message}")
else:
    print("✅ Validation passed!")

Best Practices

  1. Use YAML Configuration: For complex validation rules, it is recommended to manage them in YAML files.
  2. Choose Validation Modes Wisely: Select the appropriate validation mode based on your needs to avoid over-complication.
  3. Provide Clear Error Messages: Provide clear error messages (msg) for important validation rules.
  4. Modularize Validation Functions: Extract complex validation logic into separate, reusable functions.
  5. Performance Considerations: For high-frequency validations, prioritize simpler validation modes.

FAQ

Q: How do I validate a specific element in an array?

A: Use the JSONPath mode, for example, "$.users[0].name": ["John"].

Q: Are Headers and Cookies case-sensitive?

A: No, the library automatically converts keys to lowercase for matching.

Q: Are there security restrictions on Lambda expressions?

A: Yes, Lambda expressions are executed in a restricted environment and can only use the following built-in functions:

  • Basic types: len, str, int, float, bool, list, dict, tuple, set
  • Math functions: abs, max, min, sum
  • Logical functions: any, all
  • Other safe functions: sorted, reversed, enumerate, zip, range, isinstance, hasattr, getattr
  • Allowed modules: re (for regular expressions)

Q: How can I use simple and detailed configurations at the same time?

A: You can mix them. For any given field, the detailed configuration will take precedence.

Q: jsonpath VS keypath: How to choose?

A:

Comparison jsonpath keypath
Example $.user_list.[?(@.age >=18)].name user_list[2].name
Syntax Complex syntax, powerful features Simple value retrieval expression
Result List String
Validation Validates if the query results are equal Uses Text validation
Advantage Powerful features of jsonpath expressions Multiple modes of Text validation

In short:

  • In jsonpath mode, all fields undergo equality validation.
  • In keypath mode, individual fields can use different validation modes.

Feedback

wx: python_sanmu

Release files for responses-validator 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for responses-validator 0.3.0
File
responses_validator-0.3.0-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
responses_validator-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 Details
responses_validator-0.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
responses_validator-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
responses_validator-0.3.0-cp314-cp314t-macosx_10_13_x86_64.whl CPython 3.14 CPython 3.14 free-threading macOS 10.13+ x86-64 Details
responses_validator-0.3.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
responses_validator-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
responses_validator-0.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
responses_validator-0.3.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
responses_validator-0.3.0-cp314-cp314-macosx_10_13_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.13+ x86-64 Details
responses_validator-0.3.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
responses_validator-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
responses_validator-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
responses_validator-0.3.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
responses_validator-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
responses_validator-0.3.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
responses_validator-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
responses_validator-0.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
responses_validator-0.3.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
responses_validator-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details

Total release size: 10.0 MB

Release files / responses_validator-0.3.0-cp314-cp314t-win_amd64.whl

Download URL responses_validator-0.3.0-cp314-cp314t-win_amd64.whl
Size 177.7 kB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
1d02985f7b88fb8105d7f1e4bcbdb10508ea922ad5c7d5733f53fb812e9e8a17
BLAKE2b-256 checksum
How to use checksums
fb4e0ce6697635a2ed8ca5df199baa9a3d49dbd2311f0c44ef82f96b1155fe98
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL responses_validator-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 1.1 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
f6f6612054ef1175aaf12f87e432905a2df0c9b0f6d26bb515bd46ba34b6109d
BLAKE2b-256 checksum
How to use checksums
e14030ab612e823b2c95c5ac7459a8b0308aa5edb06bd2ec8acda558b25ac070
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL responses_validator-0.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 1.1 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
ba99159cb3af1e089e33b10cc6a8e0f5355ce66440c3a17d50f22ea533f97853
BLAKE2b-256 checksum
How to use checksums
453733ae6e97fc9270f02f449d46bee870540b293ffdeeda0497e9e79c3b03dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl

Download URL responses_validator-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl
Size 170.3 kB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ef0e6e9b8a81bb23097465c3a17186efa232a85c1e5726c555c6e5fd037ccfc2
BLAKE2b-256 checksum
How to use checksums
19b32fb23e1b33c75aa73ccab6d0a4d241d11a5318a5a56c683f4a8458286b65
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp314-cp314t-macosx_10_13_x86_64.whl

Download URL responses_validator-0.3.0-cp314-cp314t-macosx_10_13_x86_64.whl
Size 175.0 kB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
97e7eb775338b4fbec8ae6b8bced02564be8c3b5eaebd4a86e58a76aa3908cba
BLAKE2b-256 checksum
How to use checksums
e2116fa52c18b6bfca1b6f56193cb4591b44b1f33f96ec84aee1a79d4a7390c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp314-cp314-win_amd64.whl

Download URL responses_validator-0.3.0-cp314-cp314-win_amd64.whl
Size 149.4 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
276ec80ccfb027954dc180350e5194d96cd32055462cb0d79c68a330ea730fe8
BLAKE2b-256 checksum
How to use checksums
e965c6cd2d83eef17b5b78c4eddb801c409b1f9db7b8f9f2b1812211b3f7109e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL responses_validator-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl
Size 971.5 kB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
418a033d25b7a3921ae769d0d9000620f5ca4c98a82b0f45a1a5a1c61a758ef7
BLAKE2b-256 checksum
How to use checksums
3288a8903670b28b72d95fa3f55e334b4b0952de8d08797caf122bc7f00ff481
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL responses_validator-0.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 972.3 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d26da88f1e52466bd27b88994d1b0de8ecef55aad252920d6a1a2c13835909c5
BLAKE2b-256 checksum
How to use checksums
c90ec5e9140ddeaacaca2133586d2eb24b97c8a3d900d57536e63f60b649e8f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL responses_validator-0.3.0-cp314-cp314-macosx_11_0_arm64.whl
Size 156.0 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
15bd759137fd885834a541511738e9d7b9567dcc56489e36b4320c4defd1c8dd
BLAKE2b-256 checksum
How to use checksums
401c62d911f9ff7ffdde9cfa50fd1a6c8b5504c76ea767ae14650a8bc796fe5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp314-cp314-macosx_10_13_x86_64.whl

Download URL responses_validator-0.3.0-cp314-cp314-macosx_10_13_x86_64.whl
Size 163.3 kB
Tags CPython 3.14 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
7fa53073692bcfc550d5dcf8a175055c325508db2631807db3c8c9fab8d46cfd
BLAKE2b-256 checksum
How to use checksums
9fa716048917e21f05c8186eb50e0ce915dafd03be57cc6cdb2abf07925184e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp313-cp313-win_amd64.whl

Download URL responses_validator-0.3.0-cp313-cp313-win_amd64.whl
Size 146.8 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
b47ec28f9d957dfce67f21e8f18221ed20a3902c1981bb307bc62bcb803c166b
BLAKE2b-256 checksum
How to use checksums
c848e063bdc2b9cff47b90aa84baf4fa32120570225f204c5c3e22e2931f6bc9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL responses_validator-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl
Size 984.3 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
d94b3654ffecc379f0dec5ae99b182ae6c3a020cfaf57de167b511431039227a
BLAKE2b-256 checksum
How to use checksums
bed4e5bfd8159dc51bb56ac021381ad8143c3dda1a54ec9f41b5e2a84cede99c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL responses_validator-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 986.4 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
271d7e40f2dcc5d851ac1e7c7b136281bc77cc9df348d7535741fb2f86f903fe
BLAKE2b-256 checksum
How to use checksums
4e4681164b547ef015796c4a471f09ee6d4e465a8235bd58977ef2cc0e784b6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL responses_validator-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Size 155.1 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f6c8d438461e06753269d230d17112390f484ac6706cc15fc9fae7a4d7677be1
BLAKE2b-256 checksum
How to use checksums
d34584de102e293878993dee18d5c199e0d1465daac75355b9e7dc7b5805c548
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl

Download URL responses_validator-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl
Size 164.0 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
cebb4a2aaec43f6712f959d3f758170a2040db9e0deaf63e9a1eb16a8ff9f1f8
BLAKE2b-256 checksum
How to use checksums
06945475c7e6dd9b3c5a10ee8eee45c9869ebafd162ffdc5be709c69ca8d8090
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp312-cp312-win_amd64.whl

Download URL responses_validator-0.3.0-cp312-cp312-win_amd64.whl
Size 148.4 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
80e35acb0a804f974f393f76e465221adc8cbf02f4b2b5db9e713660f09d6ee7
BLAKE2b-256 checksum
How to use checksums
c11306fd65b069e4045994b19d81c64c8c0c0196c6deda9559117808785018b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL responses_validator-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl
Size 1.0 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
851f6f920cf4563dd8b0df6fb02fb4921f2fc46850d61e2eaf067e1fd6e7a1ab
BLAKE2b-256 checksum
How to use checksums
e0f9fd051b147082e91826723d5d98046be478a8010a57ddfc27fa5f83dcab82
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL responses_validator-0.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 1.0 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6de06728cf6a0eaac95292a432bc9b4454659fd1930c75fa78c711786d9b2f30
BLAKE2b-256 checksum
How to use checksums
1152a76f33cedfa21d6ab5a5d44ffe2f0315130f95440fb8617f4bd693a3ebfb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL responses_validator-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Size 157.3 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f2a72db29ff0119a439f00924db4305d12c6a47053a7236af9e90917876d9241
BLAKE2b-256 checksum
How to use checksums
fe9f2d84c731bd9ac246121d9e76bdaebcfc9689fc488c177dd2b5f2241b69d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release files / responses_validator-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl

Download URL responses_validator-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl
Size 166.5 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
2988128a6e3775aa75feeb128f1e24ef847178a373b7f8dacff464bbd3466fe7
BLAKE2b-256 checksum
How to use checksums
fc12ee32e1b7932ca8f77418a7ddc2d2c0ea8c681b7654f95367a5e67a596852
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.0 This release

20 release files

0.2.0

20 release files

0.1.6

5 release files

0.1.5

5 release files

0.1.4

5 release files

0.1.3

5 release files

0.1.2

5 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page