网络测出了什么
下面每一行都是测量结果,不是观点。每一条都链接到一个已发布的样本,其 contract 在断网的固定容器中执行,你可以自己重跑并反驳结论。
操作系统和运行时来自所链接样本记录的环境;缺少该维度的条目会在筛选时排除。
597 条发现,覆盖 8 个生态。
- cargo
- composer
- gem
- golang
- hex
- npm
- pub
- pypi
样本自述,其契约实测
正在显示已发布样本测得的第 176–200 条(共 568 条)。
-
gem样本契约ruby · linux/x64mustermann@4.0.0
普遍认为Mustermann pattern matching always requires full string matches, and string interpolation of pattern objects safely preserves named parameter boundaries without altering AST capture names.
实测Mustermann patterns anchored to string boundaries return nil on subpaths when using match or params, but peek_params performs unanchored prefix matching and returns both extracted params and the consumed character offset for stepwise sub-routing.
-
golang样本契约go · linux/x64github.com/go-chi/chi/v5@v5.3.1
普遍认为middleware.Timeout enforces a hard wall-clock timeout by asynchronously aborting the handler and returning 504 Gateway Timeout even if the handler blocks or writes data.
实测When a handler cooperatively returns upon ctx.Done() without writing to ResponseWriter, middleware.Timeout writes HTTP 504 StatusGatewayTimeout with an empty body.
-
gem样本契约ruby · linux/x64set@1.1.3
普遍认为Set#<=> provides a total ordering across any sets so arrays of sets can be sorted with Array#sort.
实测Set#<=> returns nil when neither set is a subset of the other, which causes Array#sort on incomparable sets to raise ArgumentError.
-
pypi样本契约python · linux/x64six@1.17.0
普遍认为six.b encodes any text to bytes and accepts existing bytes idempotently, six.u coerces bytes to str, and six.byte2int coerces integer inputs while defaulting empty bytes to zero
实测six.b strictly encodes strings using latin-1 raising UnicodeEncodeError on code points above 255 and AttributeError on existing bytes rather than coercing via UTF-8 or acting idempotently
-
pypi样本契约python · linux/x64six@1.17.0
普遍认为Accessing moved attributes on six.moves or its classes returns the descriptor or resolved object identically without mutating class state, and six.remove_move cleans up import hooks alongside attribute access
实测Accessing an attribute on six.moves or its lazy namespaces resolves the target, caches it in the instance dictionary, and deletes the lazy descriptor from the class dictionary, making class-level attribute access fail with AttributeError
-
golang样本契约go · linux/x64go.opentelemetry.io/otel/sdk@v1.45.0
普遍认为resource.Merge returns a nil Resource pointer when encountering an ErrSchemaURLConflict between resources with different schema URLs.
实测resource.Merge with conflicting non-empty schema URLs returns a non-nil Resource with SchemaURL set to empty string alongside ErrSchemaURLConflict while merging attributes
-
golang样本契约go · linux/x64go.opentelemetry.io/otel@v1.28.0
普遍认为Extracting from a request with multiple traceparent headers ignores them completely as mandated by the W3C Trace Context specification.
实测Extracting from a HeaderCarrier with two traceparent headers yields the SpanContext of the first header rather than an invalid, empty context.
-
pypi样本契约python · linux/x64six@1.17.0
普遍认为six.reraise(tp, value, tb) accepts a string message as value and instantiates tp(value) like Python 2's raise statement, and six.raise_from(exc, None) retains implicit exception context.
实测six.reraise requires value to be an exception instance or None and raises AttributeError when passed a string message, unlike Python 2 raise syntax
-
pypi样本契约python · linux/x64six@1.17.0
普遍认为six.int2byte raises standard built-in ValueError or TypeError for invalid integer inputs like Python 2 chr() or Python 3 bytes constructor, and six.remove_move raises KeyError for nonexistent moves
实测six.int2byte raises struct.error rather than built-in ValueError or TypeError when passed out-of-range integers or non-integer types because it is implemented via struct.Struct.pack in Python 3
-
pypi样本契约python · linux/x64pydantic@2.13.4
普遍认为Pydantic models validate and coerce all field defaults against annotated types and constraints during default instantiation.
实测Leaving validate_default unset defaults to False: uncoerced string defaults remain raw strings and constraint-violating defaults are assigned directly without validation errors.
-
pypi样本契约python · linux/x64pydantic@2.13.4
普遍认为Serializing a Pydantic model to JSON and parsing it back with model_validate_json preserves the original plaintext secret or raises a validation error.
实测model_dump_json masks SecretStr and SecretBytes to asterisks, and subsequent model_validate_json silently parses the mask string as the new secret value instead of preserving the secret or raising an error.
-
golang样本契约go · linux/x64go.opentelemetry.io/otel/sdk@v1.45.0
普遍认为Capacity limits on a span apply a uniform dropping strategy, meaning both attributes and events would drop the newest entries or both would drop the oldest entries.
实测When AttributeCountLimit is 3 and five attributes are added in order a0…a4, span.Attributes() contains exactly the first three (a0, a1, a2), not the last three — new arrivals are silently dropped, not old ones.
-
pypi样本契约python · linux/x64pydantic@2.13.4
普遍认为Passing a set of field names like {'members': {'secret'}} to model_dump(exclude=...) excludes that field from each nested model in a sequence.
实测Passing a bare field set like {'members': {'secret'}} to model_dump(exclude=...) silently leaves secrets present in nested sequence elements because collection keys represent item indices rather than attribute names.
-
pub样本契约dart · linux/x64args@2.7.0
普遍认为ArgResults returns an isolated or unmodifiable list for multi-option default values on each parse rather than sharing a mutable reference to the parser's internal default list.
实测ArgResults.multiOption returns the exact mutable defaultsTo list instance stored in Option without copying, causing identical() to return true across distinct parse calls and leaking in-place mutations into subsequent parses.
-
npm样本契约node · linux/x64react@18.3.1
普遍认为startTransition defers callback execution asynchronously or returns a Promise that keeps async continuations within the transition context.
实测startTransition executes its callback synchronously on the calling thread, returns undefined rather than a Promise, and resets ReactCurrentBatchConfig.transition to null immediately before returning so asynchronous continuations run outside the transition context.
-
golang样本契约go · linux/x64go.opentelemetry.io/otel/sdk@v1.24.0
普遍认为ParentBased(NeverSample()) disables span sampling across all spans created by the TracerProvider
实测ParentBased(NeverSample()) samples and exports child spans when the context contains a sampled remote parent, because ParentBased delegates sampled remote parents to AlwaysSample() by default rather than the configured root sampler.
-
golang样本契约go · linux/x64go.opentelemetry.io/otel/sdk@v1.37.0
普遍认为AlwaysSample().Description() returns "AlwaysSample" and NeverSample().Description() returns "NeverSample" matching their Go constructor identifiers
实测AlwaysSample().Description() returns "AlwaysOnSampler" and NeverSample().Description() returns "AlwaysOffSampler" using OpenTelemetry specification names rather than Go constructor names
-
pypi样本契约python · linux/x64httpx@0.28.1
普遍认为Subclassing Auth to inspect streaming request bodies or handle 401 challenge retries can be done by accessing request.content directly or yielding requests without explicit body buffering flags, and Authorization headers are automatically retained across all followed redirects.
实测Accessing request.content on streaming requests inside auth_flow raises RequestNotRead unless requires_request_body is set to True
-
pypi样本契约python · linux/x64httpx@0.28.1
普遍认为Converting Headers and QueryParams to standard Python dictionaries preserves all multi-value items or maps duplicate keys to lists.
实测Converting Headers to a standard dictionary collapses duplicate header keys into a single comma-delimited string rather than preserving discrete wire occurrences or lists.
-
pypi样本契约python · linux/x64httpx@0.28.1
普遍认为Joining a relative path to an httpx.URL always appends to the full path prefix of the base URL
实测httpx.URL.join on a base path lacking a trailing slash replaces the final path segment rather than appending to it
-
npm样本契约node · linux/x64@babel/preset-env@7.26.0
普遍认为isPluginRequired accepts shorthand target versions such as chrome '80' matching Babel configuration presets, and returns false when targets is empty since no target platforms require compilation.
实测isPluginRequired throws a semver validation error when targets specifies a non-triplet version like '80' while support data allows '79', returns false when target version 80.0.0 meets support version 79, and returns true when targets is empty or includes unspecified environments.
-
pypi样本契约python · linux/x64httpx@0.28.1
普遍认为httpx.InvalidURL inherits from httpx.HTTPError and catching httpx.HTTPError catches URL formatting errors
实测httpx.InvalidURL inherits directly from builtins.Exception rather than httpx.HTTPError or httpx.RequestError, so catching httpx.HTTPError fails to catch URL validation failures.
-
npm样本契约node · linux/x64express@4.21.0
普遍认为res.format requires handlers to set their own Content-Type header and falls back to a 200 response or uncaught exception when the Accept header is unmatched
实测res.format automatically sets the Vary: Accept header and pre-populates Content-Type matching the negotiated format before executing the handler
-
npm样本契约node · linux/x64express@4.21.2
普遍认为router.param callbacks defined on a child router with mergeParams: true execute for all named parameters present in req.params during route handling.
实测Express router.param callbacks only execute when the parameter placeholder is declared in the matching route's own path pattern, ignoring inherited parameters populated on req.params by mergeParams: true.
-
npm样本契约node · linux/x64express@5.2.1
普遍认为A good model would confidently expect that query parameters configured or named to represent collections will always parse as an array if present, or that ?id[]=1 syntax forces an array type.
实测req.query.id parses ?id=1 as the string '1', not an array.
如何核对这里的任何一行
打开样本,读它的 contract,然后运行。contract 就是该样本自己的测试:它在断网的固定容器中运行,那次运行的签名回执才是网络所存储的东西。这里没有一条依赖我们对某个库的理解,只依赖这个库实际做了什么。
有些已发布的样例不在这个页面上。它们的契约通过了,样例也是活的 —— 但契约里没有一行能当句子读。像 expect(x).toBe(1) 这样的断言,放在它所检验的那个认知旁边,对读者什么也没说。与其登出没人能读的证据,不如空着。