Skip to main content

Write response validation scripts for requests using flexible YAML syntax, including: status_code, headers, text, and json()

Project description

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

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

responses_validator-0.3.0-cp314-cp314t-win_amd64.whl (177.7 kB view details)

Uploaded CPython 3.14tWindows x86-64

responses_validator-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

responses_validator-0.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

responses_validator-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl (170.3 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

responses_validator-0.3.0-cp314-cp314t-macosx_10_13_x86_64.whl (175.0 kB view details)

Uploaded CPython 3.14tmacOS 10.13+ x86-64

responses_validator-0.3.0-cp314-cp314-win_amd64.whl (149.4 kB view details)

Uploaded CPython 3.14Windows x86-64

responses_validator-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl (971.5 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

responses_validator-0.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (972.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

responses_validator-0.3.0-cp314-cp314-macosx_11_0_arm64.whl (156.0 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

responses_validator-0.3.0-cp314-cp314-macosx_10_13_x86_64.whl (163.3 kB view details)

Uploaded CPython 3.14macOS 10.13+ x86-64

responses_validator-0.3.0-cp313-cp313-win_amd64.whl (146.8 kB view details)

Uploaded CPython 3.13Windows x86-64

responses_validator-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl (984.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

responses_validator-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (986.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

responses_validator-0.3.0-cp313-cp313-macosx_11_0_arm64.whl (155.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

responses_validator-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl (164.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

responses_validator-0.3.0-cp312-cp312-win_amd64.whl (148.4 kB view details)

Uploaded CPython 3.12Windows x86-64

responses_validator-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

responses_validator-0.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

responses_validator-0.3.0-cp312-cp312-macosx_11_0_arm64.whl (157.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

responses_validator-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl (166.5 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

File details

Details for the file responses_validator-0.3.0-cp314-cp314t-win_amd64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 1d02985f7b88fb8105d7f1e4bcbdb10508ea922ad5c7d5733f53fb812e9e8a17
MD5 6c441ac35b6eec5880e0488ee3e7360d
BLAKE2b-256 fb4e0ce6697635a2ed8ca5df199baa9a3d49dbd2311f0c44ef82f96b1155fe98

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp314-cp314t-win_amd64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f6f6612054ef1175aaf12f87e432905a2df0c9b0f6d26bb515bd46ba34b6109d
MD5 6ff50beec52b87235cad5ad734aed881
BLAKE2b-256 e14030ab612e823b2c95c5ac7459a8b0308aa5edb06bd2ec8acda558b25ac070

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ba99159cb3af1e089e33b10cc6a8e0f5355ce66440c3a17d50f22ea533f97853
MD5 da70623750dbe7c7a8e7566876e566a1
BLAKE2b-256 453733ae6e97fc9270f02f449d46bee870540b293ffdeeda0497e9e79c3b03dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ef0e6e9b8a81bb23097465c3a17186efa232a85c1e5726c555c6e5fd037ccfc2
MD5 04d6402a6b9c8769f4b18e9ee1e0c357
BLAKE2b-256 19b32fb23e1b33c75aa73ccab6d0a4d241d11a5318a5a56c683f4a8458286b65

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp314-cp314t-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp314-cp314t-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 97e7eb775338b4fbec8ae6b8bced02564be8c3b5eaebd4a86e58a76aa3908cba
MD5 1f6b5d2c7e6c7244209ccb130594d63b
BLAKE2b-256 e2116fa52c18b6bfca1b6f56193cb4591b44b1f33f96ec84aee1a79d4a7390c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp314-cp314t-macosx_10_13_x86_64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 276ec80ccfb027954dc180350e5194d96cd32055462cb0d79c68a330ea730fe8
MD5 53f2df3702384df3f8924425ef4c13da
BLAKE2b-256 e965c6cd2d83eef17b5b78c4eddb801c409b1f9db7b8f9f2b1812211b3f7109e

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp314-cp314-win_amd64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 418a033d25b7a3921ae769d0d9000620f5ca4c98a82b0f45a1a5a1c61a758ef7
MD5 44ccae4dfd15c1a35e289254a0b07fd8
BLAKE2b-256 3288a8903670b28b72d95fa3f55e334b4b0952de8d08797caf122bc7f00ff481

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d26da88f1e52466bd27b88994d1b0de8ecef55aad252920d6a1a2c13835909c5
MD5 47446a6b2bdd4a4c206da97faee3b07c
BLAKE2b-256 c90ec5e9140ddeaacaca2133586d2eb24b97c8a3d900d57536e63f60b649e8f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 15bd759137fd885834a541511738e9d7b9567dcc56489e36b4320c4defd1c8dd
MD5 e35c39642ff8183429646361dcb10e77
BLAKE2b-256 401c62d911f9ff7ffdde9cfa50fd1a6c8b5504c76ea767ae14650a8bc796fe5c

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp314-cp314-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp314-cp314-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 7fa53073692bcfc550d5dcf8a175055c325508db2631807db3c8c9fab8d46cfd
MD5 c7f389df4bfdf60f3029b5dfdc17e0c7
BLAKE2b-256 9fa716048917e21f05c8186eb50e0ce915dafd03be57cc6cdb2abf07925184e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp314-cp314-macosx_10_13_x86_64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b47ec28f9d957dfce67f21e8f18221ed20a3902c1981bb307bc62bcb803c166b
MD5 64cdb4fcc539ecdb642ced072bedccd6
BLAKE2b-256 c848e063bdc2b9cff47b90aa84baf4fa32120570225f204c5c3e22e2931f6bc9

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp313-cp313-win_amd64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d94b3654ffecc379f0dec5ae99b182ae6c3a020cfaf57de167b511431039227a
MD5 d3a1819359e96bf558f25ef728bbaff0
BLAKE2b-256 bed4e5bfd8159dc51bb56ac021381ad8143c3dda1a54ec9f41b5e2a84cede99c

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 271d7e40f2dcc5d851ac1e7c7b136281bc77cc9df348d7535741fb2f86f903fe
MD5 d8a4fc5b1f3633b7c96d7b338a9210cd
BLAKE2b-256 4e4681164b547ef015796c4a471f09ee6d4e465a8235bd58977ef2cc0e784b6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f6c8d438461e06753269d230d17112390f484ac6706cc15fc9fae7a4d7677be1
MD5 3a00d27848337783eb71ec869246c6eb
BLAKE2b-256 d34584de102e293878993dee18d5c199e0d1465daac75355b9e7dc7b5805c548

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 cebb4a2aaec43f6712f959d3f758170a2040db9e0deaf63e9a1eb16a8ff9f1f8
MD5 a3252ca5db2c03e5451a65f1025d4f0a
BLAKE2b-256 06945475c7e6dd9b3c5a10ee8eee45c9869ebafd162ffdc5be709c69ca8d8090

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 80e35acb0a804f974f393f76e465221adc8cbf02f4b2b5db9e713660f09d6ee7
MD5 a2248abdc927735bd9af70af3d7a9886
BLAKE2b-256 c11306fd65b069e4045994b19d81c64c8c0c0196c6deda9559117808785018b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp312-cp312-win_amd64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 851f6f920cf4563dd8b0df6fb02fb4921f2fc46850d61e2eaf067e1fd6e7a1ab
MD5 2aea60bb5f89251f300750881187dd60
BLAKE2b-256 e0f9fd051b147082e91826723d5d98046be478a8010a57ddfc27fa5f83dcab82

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6de06728cf6a0eaac95292a432bc9b4454659fd1930c75fa78c711786d9b2f30
MD5 7c5f83f60f62f40395c5d4c79ac1a369
BLAKE2b-256 1152a76f33cedfa21d6ab5a5d44ffe2f0315130f95440fb8617f4bd693a3ebfb

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f2a72db29ff0119a439f00924db4305d12c6a47053a7236af9e90917876d9241
MD5 06fc7eef7bd2eecff41902b35399179a
BLAKE2b-256 fe9f2d84c731bd9ac246121d9e76bdaebcfc9689fc488c177dd2b5f2241b69d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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

File details

Details for the file responses_validator-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for responses_validator-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 2988128a6e3775aa75feeb128f1e24ef847178a373b7f8dacff464bbd3466fe7
MD5 b1ae82d1ff5ed79d1d43cbb1cd619d64
BLAKE2b-256 fc12ee32e1b7932ca8f77418a7ddc2d2c0ea8c681b7654f95367a5e67a596852

See more details on using hashes here.

Provenance

The following attestation bundles were made for responses_validator-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: publish-to-pypi.yml on dongfangtianyu/responses-validator

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