chore(deps): update dependency pipx:schemathesis to v4.19.0#10
Open
renovate-iws[bot] wants to merge 1 commit into
Open
chore(deps): update dependency pipx:schemathesis to v4.19.0#10renovate-iws[bot] wants to merge 1 commit into
renovate-iws[bot] wants to merge 1 commit into
Conversation
2209663 to
5eb69cc
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
4.1.3→4.19.0Release Notes
schemathesis/schemathesis (pipx:schemathesis)
v4.19.0Compare Source
🚀 Added
.schemathesis/; probing replays them to skip rediscovery.[dictionaries.<name>]and[generation.dictionaries]. #2121[parameters]withbody.<jsonpath>keys.🏎️ Performance
🐛 Fixed
$refpaths containing URI-reserved characters (e.g.paths/{id}/op.yaml). #4152$refstrings without a/separator.--report-allure-path(orreports.allure.path) cannot be used as a filesystem path.RecursionErrorin coverage phase on multi-branchallOfschemas thatcanonicalishcannot simplify.collectionFormat.minItems: 1arrays whenitemsis unsatisfiable.maxLengththresholds between 32 KB and 1 MB.allOfwhen a sibling property uses a bundled$ref.maxItemsnegatives foruniqueItems: truearrays whoseitems.enumdomain is exhausted.enumto that domain viaitems.enum.itemsis declared withouttype: array.maxLengthnegatives even when the schema'spatternis intrinsically unsatisfiable.patternnegatives for header and cookie parameters.Optional[Enum]query parameters (anyOfwith$refand siblingenum).repr.positive_data_acceptancefor body schemas withadditionalProperties: falseinherited viaallOf.positive_data_acceptanceformaxItems: 0arrays whoseitemsschema is satisfiable.positive_data_acceptancefornotclauses whose violations breach other outer constraints.positive_data_acceptancewhen a discriminator branch references a polymorphic schema.positive_data_acceptancewhen siblingoneOf/anyOfconstraints reference bundled$refschemas.v4.18.5Compare Source
🔧 Changed
negative_data_rejectionmutation descriptions cleanly: no trailingat, readable original values.🐛 Fixed
prefixItems. #4099negative_data_rejectionwhen abefore_callhook reassigns request parameters. #4101minItemsso per-item violations fire instead of length violations.formDataSwagger 2.0 parameters as form payloads whenconsumesonly declares non-form media types.additionalProperties: falsethrough deepallOfchains.sqlite-libsin docker images.discriminatorbranch when the type tag literal differs from the schema name.v4.18.4Compare Source
🐛 Fixed
oneOf: [array, string]parameters by forcing non-empty strings.Content-Typeto the body media type when it is declared as an explicit header parameter.pattern/minLength/maxLength(e.g. Kubernetes CRDs).$refschemas carrying sibling validation keywords.additionalProperties: {schema}on objects without explicittype: object.type: arrayparameters so item-level keywords reach coverage.*/*from Swagger 2.0consumesso coverage requests carry a concreteContent-Type.negative_data_rejection.--wait-for-schema. #4058negative_data_rejectionon query-leveladditionalPropertiesmutations. #3730$refinpositive_data_acceptancehint to avoid false "additional properties" suggestions.allOfwithreadOnlyrequired properties.uniqueItems.v4.18.3Compare Source
🐛 Fixed
application/x-www-form-urlencodedbodies declared as top-level arrays or scalars.$refbody before required-path propagation.idfield.v4.18.2Compare Source
🚀 Added
🐛 Fixed
patternagainstmaxLength.example/examples/defaultvalues that cannot be validated against the schema in positive coverage.phases.stateful.enabled = falsein the state machine.must not be blankfeedback as a body-required signal so generation stops emitting empty bodies.contentas a single-property response wrapper during dependency inference.use_after_freefalse positives when the DELETE itself returned a non-2xx status (server crash or 404).🏎️ Performance
v4.18.1Compare Source
🔧 Changed
add_single_exampleunconditionally so example generation is deterministic.application/jwt,text/json,application/x-jsonas JSON media types.🐛 Fixed
oneOfbranch when the branch is a$refwith sibling pin keywords.example/examples/defaulton array items so curated values reach populated arrays instead of synthetic empty fills.example/examples/defaultvalues that carry readOnly-stripped properties by dropping those keys before validating.oneOf/anyOfbranches when spec examples only match a sibling branch.multipart/form-datastring properties — stringification makes them wire-indistinguishable from enum violations.if/then/elseconstraints in positive and negative coverage.typeandenumwhen canonicalization drops the explicittype.$refin OpenAPI 3.0 / Swagger 2.0 schemas.maxPropertiesin positive coverage cases foradditionalPropertiesschemas.requiredforallOfschemas combined with nullable$ref.anyOf/oneOfconstraints.minItemsnegatives for array schemas that also declareexamples/example/default.maxLength/minLengthboundary strings for nullable string schemas (type: ["string", "null"]).itemsbranch in positive coverage when the array has size constraints.multipart/form-dataproperty mutations whose stringified value still satisfies the schema.defaultandexamplespec hints (0,"",false,[],{}) in positive coverage.example/defaultinto recursively-generated object templates instead of synthesising values that ignore them.type: ["string", "number", ...]schemas in positive coverage.propertyNames: emit objects with keys violating the sub-schema constraints.v4.18.0Compare Source
🚀 Added
Resource pool & captured IDs
{<id>: <object>, ...}map-by-id GET responses (e.g. team / pod / cluster status maps).Error feedback (4xx parsers)
Adaptive operation handling
405 Method Not Allowedand surface amethod_not_allowedwarning.GraphQL
Configuration
extra-data-sourcesconfig for the examples and coverage phases. #3972schemathesis.tomlfor editor autocompletion. #3971🐛 Fixed
Coverage phase
patternrewrites that collapse optional variable-length sub-groups to{0}.{}as positive coverage body for schemas withminPropertiesbut norequiredfields.oneOf/anyOfbranches violating a root-level constraint (e.g.type: objectbranch undertype: arrayroot) were yielded as valid.readOnlyfields nested inallOfand listed in parentrequired.minimum: 0/maximum: 0and Draft 4 booleanexclusiveMinimum/exclusiveMaximumin coverage-phase number generation.multipleOfdue to IEEE-754 subtraction (e.g.99999.99 - 0.01).exclusiveMinimum: 0+exclusiveMaximum: 1).minLength/maxLengthwhen thepatternrewrite cannot encode them.format: uuidnegative cases in coverage on OpenAPI 3.0 / Swagger 2.0 schemas.minProperties/maxPropertiesviolations for object schemas alongsideadditionalProperties.Resource pool & captured IDs
pathsordering.allOf/oneOf/anyOfcomposition.$reftargets when generating from cached schemas.positive_data_acceptancewhen a runtime pool body variant was missing required fields. #3949use_after_freecheckuse_after_freeon a second DELETE - DELETE is idempotent (RFC 7231 §4.3.5).use_after_freeafter a DELETE on a collection path with no path parameters.use_after_freereproduce when it is a sibling step.Validation false positives
negative_data_rejectionfor integer/number query parameters when an array element is a numeric string. #3931negative_data_rejectionon 405 responses from routing-level rejection.negative_data_rejectionfor body schemas combining$refwith sibling keywords.response_headers_conformancefor Swagger 2.0 array headers serialised viacollectionFormat.Reports & output
Other
{0,N}regex quantifiers (e.g.{0,404600}).Runtime Errorfrom invalid Schema Object when every required parameter of a set is excluded from generation.filenameon binarymultipart/form-dataparts; useencoding.headers.Content-Dispositionif present, field name otherwise. #3951.and..path-parameter values; URL normalisation routes the request to a different operation.🔧 Changed
Resource & foreign-key recognition
locationId,userUuid,orderId).site_ids,userUuids,session_guids)._name-suffixed body fields as attributes when no path or schema backs the inferred resource (first_name,last_name).Group/Group1,Member/Member1).Stateful & output
Generation
Schema & dependencies
jsonschema.application/jose+jweas JSON media type.🏎️ Performance
v4.17.0Compare Source
🚀 Added
st fuzzscenarios via inferred and schema Links, biased 80% toward link-driven steps.<resource>Name-style body fields on collection paths (e.g.POST /products {productName: ...}).username,containerGroupName).POST /resource/{name}as a producer when the response has no body.POST /collection {idField: ...}as a producer when the response has no body.GET /collectionreturning an array of identifier strings.{ids}path parameters (e.g.GET /persons/{ids}).🐛 Fixed
negative_data_rejectionfor body-level type mutations onmultipart/form-dataendpoints. #3801negative_data_rejectionfor body fields withformat: binaryorformat: byte.properties(e.g. an integer where a sub-schema is expected).hypothesis-jsonschemaconstants in the same process.$refwith sibling keywords when exploring the Python API outside the pytest runner.HypothesisRefResolutionErrorwhen a$refand its target both have distinctanyOflists.description: null) as a clean schema error.Unsatisfiablefor arrays withallOfof multiplecontainsrequiring distinctconstvalues.InvalidSchemainstead of a genericInvalidArgumentfrom the strategy generator.InfiniteRecursiveReferenceon cycles breakable throughpatternProperties.InfiniteRecursiveReferenceon cycles breakable throughoneOf/anyOf, top-levelallOf, or unuseddefinitions.\p{X}Unicode property escapes inside character classes (e.g.[\p{Alnum}_]+).[[:alnum:]_]) to Python equivalents instead of misparsing them.\p{X}patterns combine with PCRE class-set operators (||,&&) or nested classes.prefixItems. #3842discriminatorpin inoneOf/anyOfvalidation under Draft 4 (OpenAPI 2.0/3.0).FlakyStrategyDefinitionfromst fuzzwhen the time limit trips mid-scenario.format: binarydata alongside captured pool values.type: object.1when the path also contains an integer parameter.requestsimport race in the writer.🔧 Changed
metain NDJSON reports.v4.16.1Compare Source
🐛 Fixed
authAPI onLazySchemato matchBaseSchema. #3797v4.16.0Compare Source
🚀 Added
schemathesis.openapi.require_security_scheme()for scoping auth providers to specific OpenAPI security schemes. #3745🐛 Fixed
style/explodeare omitted from the spec, ignoring OpenAPI 3.0 defaults.encoding.contentType. #3785before_callhook setting a missing required header in the coverage phase had no effect. #3784positive_data_acceptancefalse positivesexamplevalues violating constraints (examples phase):examplehas a property violating a nestedformatconstraint (e.g.date-timewithout timezone).examplevalue violates its declared schema type.exampleviolates the parameter's own constraints (e.g.pattern).formatconstraint.exampleviolates its field's own type (also applies to the coverage phase).anyOf/oneOfconstraints via bundled$refs.minItems> 1 and object items.allOfwithadditionalProperties: false).Composition (
allOf/oneOf/anyOf/$ref) in the coverage phase:oneOfbranches with nested multi-$refallOf.oneOfbody schemas where generated values satisfy multiple branches simultaneously.oneOfbody schemas where a branch requires fields only defined in the parent schema.anyOfbranch hasconst: nullbut a siblingtypeconstraint excludesnull.allOfchain causes required properties from a base schema to be generated asnull.$ref+additionalProperties: falseandpattern/minLength/maxLengthconstraints.enumvs sibling constraints (coverage phase):enumconstraint.enumvalues violate a sibling constraint (e.g.maxLength).type(e.g. YAML-parsedfalsefortype: string).enumcontains values violating the declaredtypein template body generation.Structural
required/propertiesmismatches:requiredlists fields absent fromproperties(examples phase).requiredproperties absent fromproperties(coverage phase).type: objectalongsideitems(coverage phase).falseschema (coverage phase).type: stringproperties that also declareproperties: {}(coverage phase).Pattern / keyword combinations (coverage phase):
patterncontaining alternation inside a quantified group (e.g.([a-z]|-[a-z])*).format: uuidand optional-hyphenpattern.patternalongside a non-stringtype(e.g.number).propertyNamesrestricts object keys andadditionalPropertiesis present. #3771formatconstraints in negative mode.negative_data_rejectionfalse positivespattern+ length-constraint interaction:pattern+maxLengthwheremaxLengthwas silently lost into an unanchored regex quantifier.patternhas an inner quantifier (e.g.^[a-z]([-a-z]*[a-z])?$) andmaxLengthis present.patternoptional group wraps variable-length content andmaxLengthis present (coverage phase).patternwith nested quantifiers causedmaxLength/minLengthto be silently dropped from the schema.patternfields ending with\x1c–\x1fcontrol characters (coverage phase).Wire-identical type mutations:
application/x-www-form-urlencodedandapplication/xmlbody properties where type mutations are wire-identical (e.g.integerstringifies to a valid string).application/x-www-form-urlencodedbody properties whose schema contains$refto bundled definitions.application/x-www-form-urlencodedbody properties with nested array/object mutations whose serialized form satisfies the schema.Schema-shape edge cases (coverage phase):
additionalPropertiesis a schema object andrequiredhas exactly 2 fields.propertiesand exactly 2 required fields.additionalProperties: {}.maxLength,minLength, orformatconstraints.enumandmaxLength/minLength.type: integerand inapplicableminLength/maxLengthconstraints.multipart/form-datafields withformat: binaryandnullable: true. #3777maxItemsarray constraints with complex nested item schemas.Runtime errors in
negative_data_rejectionpatternproduces a large DFA (e.g.\S{1,8192}).patternthat jsonschema_rs rejects (e.g.{,3}as an incomplete quantifier).Crashes
integerform-urlencoded schema).application/x-www-form-urlencodedrequests withformat: binarybody fields in negative mode.not: {}).on:fields) in the coverage phase.Schema-invalid generated bodies (coverage phase)
requirednames a property absent frompropertiesin the coverage phase.enumat the array level withitemsalso defined in the coverage phase.allOf(with required fields) and outer-levelpropertiesin the coverage phase.defaultorexamplefailsformatvalidation (e.g."7.00:00:00"forformat: duration) in the coverage phase.v4.15.2Compare Source
🔧 Changed
🐛 Fixed
negative_data_rejectionfor integer query parameters with type mutations. #3712positive_data_acceptancefor arrays withuniqueItemsand enum items.v4.15.1Compare Source
🐛 Fixed
negative_data_rejectionfortype: numberbody fields in fuzzing. #3697negative_data_rejectionfortype: integerquery parameters mutated to array. #3697content: application/jsonquery parameters in coverage phase. #3701$refproperties ignored in examples phase for OAS 3.1 schemas. #3698positive_data_acceptancefor headers with RFC 9110 control characters. #3696positive_data_acceptancefor path parameters containing null bytes. #3696unsupported_methodfailures from coverage phase. #3699v4.15.0Compare Source
🚀 Added
st fuzzcommand for continuous multi-step API fuzzing across operation sequences.If-Match,If-None-Match,If-Modified-Since,If-Unmodified-Since, andRangeheaders.filter_caseandmap_casehooks in the coverage phase. #3675schemathesis.pytest.parametrize()for testing multiple named schemas in a single test function. #1409discriminatorproperty values against known schema mappings inresponse_schema_conformance. #1589discriminatorproperty to the correct value when generating data foroneOf/anyOfschemas. #1589🔧 Changed
--wait-for-schemaretry on HTTP 503 responses. #3672pytestplugin.schema.parametrize().response_schema_conformanceandresponse_headers_conformance. #1174🐛 Fixed
v4.14.3Compare Source
🐛 Fixed
deadline=Nonelost when@settingsapplied after@lazy_schema.parametrize().format: uuidnow generates RFC 4122 compliant UUIDs. #2909v4.14.2Compare Source
🐛 Fixed
AttributeErroronDoctestItemwhen schemathesis plugin is loaded. #3663[auth.dynamic.openapi.<scheme>]) work with WSGI & ASGI transports. #3664v4.14.1Compare Source
🐛 Fixed
ModuleNotFoundErroronxdistsession end when the allure extra is not installed.v4.14.0Compare Source
🚀 Added
pytestplugin viaschema.config.reports. #701after_validatehook fires after all checks run on a response, carrying a list ofCheckResultobjects.oneOf/anyOfbranch. #2371🐛 Fixed
format: emailfields generating values rejected byjsonschema_rsresponse validation.flatmap_*hooks raisingRuntimeErrorin negative testing mode. #3652allow-extra-parameters = falsenow also suppresses unexpected properties in request bodies.use_after_free) not triggering when run viaschema.as_state_machine().InvalidSchemaexceptions displayed an empty message inpytestoutput.🔧 Changed
HypothesisWarningwhen overriding built-in string formats viaschemathesis.openapi.format(). #3269v4.13.0Compare Source
🚀 Added
[auth.dynamic.openapi.<scheme>]config block for token fetch authentication that allows for dynamic authentication without writing Python code. #3620--request-retriesto retry requests on network failures with exponential back-off.🔧 Changed
🐛 Fixed
apply_to/skip_forfilter sets not updated between hook registrations, causing hooks registered after the first to silently receive the wrong filter set.minLength/maxLengthconstraints in the coverage phase whenupdate_quantifiercannot encode length into the pattern.v4.12.2Compare Source
🐛 Fixed
positive_data_acceptancein the coverage phase for path parameters withminLengthgreater than 1.v4.12.1Compare Source
🐛 Fixed
application.jsoninstead ofapplication/json) now report a clean "Schema Error" with the location in the schema instead of a raw Python traceback. #3615v4.12.0Compare Source
🚀 Added
🐛 Fixed
missing_required_headerduring the coverage phase when negative mode was active - the base test case used an invalid body, preventing header validation from being reached.negative_data_rejectionfor path parameters withformat: uuidand apatternconstraint in the fuzzing phase captured valid resource IDs are used. #3603positive_data_acceptancewhenrequestBodycontains list-style OAS3 Example Objects - the innervaluewas not extracted, sending{"value": ...}as the body.v4.11.2Compare Source
🚀 Added
positive_data_acceptancefailures now include a hint when Hypothesis-generated extra properties are the likely cause of rejection, suggestingadditionalProperties: false. #3583🐛 Fixed
retryfield as integer.ensure_resource_availabilityno longer fires a false positive when a successful DELETE on the same resource ID exists in a different root's subtree. #3588v4.11.1Compare Source
🚀 Added
SCHEMATHESIS_HOOKS.📝 Documentation
🐛 Fixed
retryfield values.eventfields asmessage.[auth.openapi.*]HTTP Basic authentication now correctly applied when using WSGI or ASGI apps in pytest mode. #3575[auth.openapi.*]scheme names (e.g. typos) now emit aUserWarningin pytest mode, matching the existing CLI behavior. #3575negative_data_rejectionforapplication/xmlbody string fields in the fuzzing phase due to type mutations producing wire-identical strings (e.g.False->"False"). #3525ValueErrorwhen validating a response containing lone Unicode surrogate characters (e.g.\uDCF3); now reported as aJSON deserialization errorsince lone surrogates are invalid JSON per RFC 8259.negative_data_rejectionforformat: hostnamein OpenAPI 3.0.x during the coverage phase. #3567Schema atpath in failure messages showing internal bundled form (e.g./x-bundled/schema1/...) instead of the original schema path (e.g./components/schemas/.../).format: durationduring the coverage phase.missing_authoperations.use_after_freewhen the server reuses freed resource IDs and a re-created resource is accessed in the same scenario. #3582$refinsideoneOf/anyOfsub-schemas during the coverage phase. #3584pytest.from_fixture().exclude()(and.include()) intermittently failing with "does not match any API operations" on repeated runs when no[[operations]]are configured inschemathesis.toml. #3572🔧 Changed
SCHEMATHESIS_HOOKSto/app/hooks.pyin Docker images with a stub hooks file to simplify the UX.v4.11.0Compare Source
🚀 Added
QUERYHTTP method.in: querystringparameters.text/event-stream) response validation. #3064🐛 Fixed
exclusiveMinimum: true) no longer silently ignored.ValueError: Unsupported type: 'Binary'when aoneOf/anyOfschema has a sub-schema withformat: binaryarray items.negative_data_rejectionforapplication/xmlbodies in coverage due to type mutations producing wire-identical bytes. #3525negative_data_rejectionin fuzzing for integer/number path parameters when string mutations serialize to URL-decoded numeric values (e.g.,%2B1->+1).anyOf/oneOfandrequiredconstraints. #3520missing_required_headernow accepts400,401,403, and422(in addition to406) for missing non-Authorizationrequired headers. #3521"value"when a custom format (e.g.,ipv4-network) generates strings containing/. #3527/now escaped in examples phase when some path parameters are generated from schema. #3533$refs inside parametercontentschemas now reported as schema errors at load time instead of crashing at generation time.filter_bodyand otherfilter_*hooks now filter values in negative mode.🚀 Performance
jsonschema_rs.canonical.json.to_stringinstead ofjson.dumps(sort_keys=True).hypothesis-jsonschemapatched to usejsonschema_rs.canonical.json.to_stringinstead of a custom encoder.can_negateresults during negative test generation.jsonschema-rsupgraded to 0.44.0 withvalidator_cls_forfor draft detection.deepclonereplaced withjsonschema_rs.canonical.schema.clone.hypothesis-jsonschemamerge path via cached repeated merges and identity-merge skips.🔧 Changed
jsonschema.coloramafrom dependencies.pyrate-limiter>=4.0.pytest-subtestsdependency removed. #3522v4.10.2Compare Source
🐛 Fixed
requests.Sessionacross threads. #3507v4.10.1Compare Source
🐛 Fixed
negative_data_rejectionfor integer/number path parameters in the coverage phase.v4.10.0Compare Source
🚀 Added
🐛 Fixed
filter_casehook rejects all generated cases. Now reports "Hook Error" with actionable guidance.negative_data_rejectionfailures forformat: passwordand other formats without validation semantics. #3480🔧 Changed
jsonschema-rsfor data validation instead ofjsonschema.PYTHON_GIL=0), providing up to 65% faster multi-worker execution.v4.9.5Compare Source
🐛 Fixed
RecursionErrorwhen multipleallOfitems reference the same schema target.v4.9.4Compare Source
🚀 Added
customer_id,order_ids) in responses and request bodies to generate additional stateful links.🐛 Fixed
map_*,filter_*, andflatmap_*hooks receivingGeneratedValuewrappers instead of rawdictvalues in negative generation mode. #3471v4.9.3Compare Source
🐛 Fixed
TypeErrorwhen schema contains non-stringpatternvalues (e.g.,"pattern": 0.0).v4.9.2Compare Source
🐛 Fixed
schemathesis.openapi.media_type()not being applied in the coverage phase when using@schema.parametrize(). #3345positive_data_acceptancefailures caused by RFC-invalid control characters in generated headers. Positive mode now generates only valid ASCII headers. #3462v4.9.1Compare Source
🐛 Fixed
requiredarray causing "non-unique elements" schema validation errors. #3460v4.9.0Compare Source
🚀 Added
--report=ndjson) for exporting all engine events as newline-delimited JSON.-Output,-Input,Out,In,DTO).items(e.g.,BackupFilefromAllBackups.imports[])._nameand-nameparameter suffixes for resource inference (e.g.,file_name->File).file_name->BackupFile.name,group_slug->GroupSummary.slug).🔧 Changed
🐛 Fixed
-H) not being passed to schema loading requests. #3440\p{L},\p{N}) in response schemas causing crashes during dependency analysis.anyOfarrays (e.g., differentconstvalues) causing crashes during dependency analysis.#/x-bundled/schema1instead of original refs like#/components/schemas/Item.v4.8.0Compare Source
🚀 Added
\p{L},\p{N}) to Python regex equivalents.🔧 Changed
nullandbooleantype mutations for path parameters to improve test budget efficiency.Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate.