Skip to content

PYTHON-5737 - BSON encoding/decoding performance improvements#2715

Open
NoahStapp wants to merge 3 commits intomongodb:masterfrom
NoahStapp:PYTHON-5211
Open

PYTHON-5737 - BSON encoding/decoding performance improvements#2715
NoahStapp wants to merge 3 commits intomongodb:masterfrom
NoahStapp:PYTHON-5211

Conversation

@NoahStapp
Copy link
Contributor

@NoahStapp NoahStapp commented Feb 26, 2026

PYTHON-5737

Changes in this PR

Add four optimizations to the C extension BSON implementation:

  1. Skip _type_marker lookup for common built-in types.
  2. Use PyDict_New() instead of PyObject_CallObject() where possible.
  3. Use PyDict_SetItem() instead of PyObject_SetItem() where possible.
  4. Use PyObject_Vectorcall() and its ilk instead of PyObject_CallFunctionObjArgs() and similar functions.

These changes result in the following BSON benchmark performance improvements on Python 3.14.3:

# Before
Completed TestFlatEncoding 462.762 MB/s, MEDIAN=0.131s, total time=30.105s, iterations=230
Completed TestFlatDecoding 437.150 MB/s, MEDIAN=0.138s, total time=30.060s, iterations=217
Completed TestDeepEncoding 165.417 MB/s, MEDIAN=0.119s, total time=30.086s, iterations=252
Completed TestDeepDecoding 158.894 MB/s, MEDIAN=0.124s, total time=30.116s, iterations=242
Completed TestFullEncoding 274.749 MB/s, MEDIAN=0.147s, total time=30.073s, iterations=203
Completed TestFullDecoding 157.580 MB/s, MEDIAN=0.255s, total time=30.108s, iterations=116

# After
Completed TestFlatEncoding 547.545 MB/s, MEDIAN=0.110s, total time=30.074s, iterations=271
Completed TestFlatDecoding 446.351 MB/s, MEDIAN=0.135s, total time=30.041s, iterations=221
Completed TestDeepEncoding 206.715 MB/s, MEDIAN=0.095s, total time=30.084s, iterations=316
Completed TestDeepDecoding 177.857 MB/s, MEDIAN=0.111s, total time=30.081s, iterations=268
Completed TestFullEncoding 333.103 MB/s, MEDIAN=0.121s, total time=30.064s, iterations=247
Completed TestFullDecoding 165.150 MB/s, MEDIAN=0.244s, total time=30.032s, iterations=123

# Python 3.11.14, the last version before seeing significant regressions in Python internals
Completed TestFlatEncoding 559.832 MB/s, MEDIAN=0.011s, total time=0.108s, iterations=10
Completed TestFlatDecoding 475.089 MB/s, MEDIAN=0.013s, total time=0.103s, iterations=8
Completed TestDeepEncoding 209.326 MB/s, MEDIAN=0.009s, total time=0.104s, iterations=11
Completed TestDeepDecoding 167.511 MB/s, MEDIAN=0.012s, total time=0.106s, iterations=9
Completed TestFullEncoding 331.071 MB/s, MEDIAN=0.012s, total time=0.111s, iterations=9
Completed TestFullDecoding 173.523 MB/s, MEDIAN=0.023s, total time=0.117s, iterations=5

This represents up to a ~25% improvement for some benchmarks and brings them close to the high mark of Python 3.11 performance.

Test Plan

Verified with the existing test suite.

Checklist

Checklist for Author

  • Did you update the changelog (if necessary)?
  • Is there test coverage?
  • Is any followup work tracked in a JIRA ticket? If so, add link(s).

Checklist for Reviewer

  • Does the title of the PR reference a JIRA Ticket?
  • Do you fully understand the implementation? (Would you be comfortable explaining how this code works to someone else?)
  • Is all relevant documentation (README or docstring) updated?

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR implements three performance optimizations to the BSON C extension to improve encode/decode performance by up to ~25% on Python 3.14, bringing it close to Python 3.11 performance levels.

Changes:

  • Skip expensive _type_marker attribute lookups for common built-in types that are known not to have this attribute
  • Use direct PyDict_New() API instead of generic PyObject_CallObject() when document_class is dict
  • Use direct PyDict_SetItem() API instead of generic PyObject_SetItem() when document_class is dict

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
bson/_cbsonmodule.h Add is_dict_class field to codec_options_t struct to track when document_class is dict
bson/_cbsonmodule.c Implement three performance optimizations: skip _type_marker lookup for built-in types, use PyDict_New() and PyDict_SetItem() when possible

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@NoahStapp NoahStapp marked this pull request as ready for review February 26, 2026 21:40
@NoahStapp NoahStapp requested a review from a team as a code owner February 26, 2026 21:40
Copy link
Member

@ShaneHarvey ShaneHarvey left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work!

/* Built-in types don't have _type_marker, skip the lookup */
type = 0;
} else {
type = _type_marker(value, state->_type_marker_str);
Copy link
Member

@ShaneHarvey ShaneHarvey Feb 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can further optimize the _type_marker function to use PyObject_GetOptionalAttr on >=3.13 like this:

static long _type_marker(PyObject* object, PyObject* _type_marker_str) {
    PyObject* type_marker = NULL;
    long type = 0;

#if PY_VERSION_HEX >= 0x030D0000
    // 3.13
    if (PyObject_GetOptionalAttr(object, _type_marker_str, &type_marker) == -1) {
        return -1;
    }
# else
    if (PyObject_HasAttr(object, _type_marker_str)) {
        type_marker = PyObject_GetAttr(object, _type_marker_str);
        if (type_marker == NULL) {
            return -1;
        }
    }
#endif

https://docs.python.org/3/c-api/object.html#c.PyObject_GetOptionalAttr

ShaneHarvey
ShaneHarvey previously approved these changes Feb 26, 2026
@NoahStapp NoahStapp changed the title PYTHON-5211 - Improve BSON encode/decode performance PYTHON-5737 BSON encoding/decoding performance improvements Feb 26, 2026
@NoahStapp NoahStapp changed the title PYTHON-5737 BSON encoding/decoding performance improvements PYTHON-5737 - BSON encoding/decoding performance improvements Feb 26, 2026
Copy link
Member

@ShaneHarvey ShaneHarvey left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@codecov-commenter
Copy link

codecov-commenter commented Feb 27, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 87.57%. Comparing base (b60d266) to head (ec11ab8).
⚠️ Report is 5 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #2715      +/-   ##
==========================================
+ Coverage   87.55%   87.57%   +0.01%     
==========================================
  Files         141      141              
  Lines       24098    24182      +84     
  Branches     4118     4146      +28     
==========================================
+ Hits        21100    21177      +77     
- Misses       2108     2114       +6     
- Partials      890      891       +1     
Flag Coverage Δ
auth-aws-rhel8-test-auth-aws-rapid-web-identity-python3.14-cov 35.08% <ø> (ø)
auth-aws-win64-test-auth-aws-rapid-web-identity-python3.14-cov 35.10% <ø> (+0.02%) ⬆️
auth-enterprise-macos-test-standard-auth-latest-python3.11-auth-ssl-sharded-cluster-cov 43.73% <ø> (ø)
auth-enterprise-rhel8-test-standard-auth-latest-python3.11-auth-ssl-sharded-cluster-cov 43.73% <ø> (ø)
auth-enterprise-win64-test-standard-auth-latest-python3.11-auth-ssl-sharded-cluster-cov 43.76% <ø> (+0.03%) ⬆️
auth-oidc-local-ubuntu-22-test-auth-oidc-default 48.72% <ø> (ø)
compression-snappy-rhel8-test-standard-latest-python3.11-async-noauth-nossl-standalone-cov 55.18% <ø> (-0.01%) ⬇️
compression-snappy-rhel8-test-standard-latest-python3.12-async-noauth-ssl-replica-set-cov 57.11% <ø> (+<0.01%) ⬆️
compression-snappy-rhel8-test-standard-latest-python3.13-async-auth-ssl-sharded-cluster-cov 56.51% <ø> (ø)
compression-snappy-rhel8-test-standard-latest-python3.14-async-noauth-nossl-standalone-cov 54.82% <ø> (ø)
compression-zlib-rhel8-test-standard-latest-python3.11-async-noauth-nossl-standalone-cov 55.19% <ø> (+0.01%) ⬆️
compression-zlib-rhel8-test-standard-latest-python3.12-async-noauth-ssl-replica-set-cov 57.11% <ø> (ø)
compression-zlib-rhel8-test-standard-latest-python3.13-async-auth-ssl-sharded-cluster-cov 56.52% <ø> (+0.01%) ⬆️
compression-zlib-rhel8-test-standard-latest-python3.14-async-noauth-nossl-standalone-cov 54.82% <ø> (ø)
compression-zstd-rhel8-test-standard-latest-python3.11-async-noauth-nossl-standalone-cov 55.17% <ø> (-0.01%) ⬇️
compression-zstd-rhel8-test-standard-latest-python3.12-async-noauth-ssl-replica-set-cov 57.11% <ø> (ø)
compression-zstd-rhel8-test-standard-latest-python3.13-async-auth-ssl-sharded-cluster-cov 56.51% <ø> (ø)
compression-zstd-rhel8-test-standard-latest-python3.14-async-noauth-nossl-standalone-cov 54.82% <ø> (ø)
compression-zstd-ubuntu-22-test-standard-latest-python3.14-async-noauth-nossl-standalone-cov 54.80% <ø> (ø)
coverage-report-coverage-report 87.39% <ø> (+1.31%) ⬆️
disable-test-commands-rhel8-test-standard-latest-python3.11-async-noauth-nossl-standalone-cov 55.18% <ø> (-0.01%) ⬇️
disable-test-commands-rhel8-test-standard-latest-python3.12-async-noauth-ssl-replica-set-cov 57.11% <ø> (ø)
disable-test-commands-rhel8-test-standard-latest-python3.13-async-auth-ssl-sharded-cluster-cov 56.51% <ø> (ø)
disable-test-commands-rhel8-test-standard-latest-python3.14-async-noauth-nossl-standalone-cov 54.82% <ø> (+<0.01%) ⬆️
encryption-crypt_shared-macos-test-non-standard-latest-python3.13-noauth-nossl-standalone-cov 53.19% <ø> (+<0.01%) ⬆️
encryption-crypt_shared-macos-test-non-standard-latest-python3.14-auth-ssl-sharded-cluster-cov 55.00% <ø> (+0.05%) ⬆️
encryption-crypt_shared-macos-test-non-standard-latest-python3.14t-noauth-ssl-replica-set-cov 54.82% <ø> (+<0.01%) ⬆️
encryption-crypt_shared-rhel8-test-non-standard-latest-python3.13-noauth-nossl-standalone-cov 53.18% <ø> (-0.02%) ⬇️
encryption-crypt_shared-rhel8-test-non-standard-latest-python3.14-auth-ssl-sharded-cluster-cov 54.86% <ø> (-0.01%) ⬇️
encryption-crypt_shared-rhel8-test-non-standard-latest-python3.14t-noauth-ssl-replica-set-cov 54.78% <ø> (-0.01%) ⬇️
encryption-crypt_shared-win64-test-non-standard-latest-python3.13-noauth-nossl-standalone-cov 53.06% <ø> (-0.07%) ⬇️
encryption-crypt_shared-win64-test-non-standard-latest-python3.14-auth-ssl-sharded-cluster-cov 54.92% <ø> (+<0.01%) ⬆️
encryption-crypt_shared-win64-test-non-standard-latest-python3.14t-noauth-ssl-replica-set-cov 54.88% <ø> (+0.04%) ⬆️
encryption-macos-test-non-standard-latest-python3.13-noauth-nossl-standalone-cov 53.19% <ø> (-0.01%) ⬇️
encryption-macos-test-non-standard-latest-python3.14-auth-ssl-sharded-cluster-cov 55.01% <ø> (+0.03%) ⬆️
encryption-macos-test-non-standard-latest-python3.14t-noauth-ssl-replica-set-cov 54.78% <ø> (-0.01%) ⬇️
encryption-pyopenssl-rhel8-test-non-standard-latest-python3.13-noauth-nossl-standalone-cov 53.86% <ø> (+0.01%) ⬆️
encryption-pyopenssl-rhel8-test-non-standard-latest-python3.14-auth-ssl-sharded-cluster-cov 55.56% <ø> (-0.02%) ⬇️
encryption-pyopenssl-rhel8-test-non-standard-latest-python3.14t-noauth-ssl-replica-set-cov 55.48% <ø> (ø)
encryption-rhel8-test-non-standard-latest-python3.13-noauth-nossl-standalone-cov 53.18% <ø> (ø)
encryption-rhel8-test-non-standard-latest-python3.14-auth-ssl-sharded-cluster-cov 54.93% <ø> (+0.05%) ⬆️
encryption-rhel8-test-non-standard-latest-python3.14t-noauth-ssl-replica-set-cov 54.81% <ø> (-0.01%) ⬇️
encryption-win64-test-non-standard-latest-python3.13-noauth-nossl-standalone-cov 53.06% <ø> (ø)
encryption-win64-test-non-standard-latest-python3.14-auth-ssl-sharded-cluster-cov 54.91% <ø> (-0.01%) ⬇️
encryption-win64-test-non-standard-latest-python3.14t-noauth-ssl-replica-set-cov 54.86% <ø> (-0.01%) ⬇️
load-balancer-test-non-standard-latest-python3.14-auth-ssl-sharded-cluster-cov 48.33% <ø> (+<0.01%) ⬆️
mongodb-latest-test-server-version-python3.10-async-auth-ssl-sharded-cluster-min-deps-cov 56.91% <ø> (ø)
mongodb-latest-test-server-version-python3.10-async-noauth-nossl-standalone-min-deps-cov 55.20% <ø> (ø)
mongodb-latest-test-server-version-python3.10-sync-auth-ssl-sharded-cluster-min-deps-cov 59.09% <ø> (ø)
mongodb-latest-test-server-version-python3.10-sync-noauth-nossl-replica-set-min-deps-cov 59.25% <ø> (ø)
mongodb-latest-test-server-version-python3.11-async-noauth-nossl-replica-set-cov 57.05% <ø> (-0.02%) ⬇️
mongodb-rapid-test-server-version-python3.10-async-auth-ssl-sharded-cluster-min-deps-cov 56.90% <ø> (+<0.01%) ⬆️
mongodb-rapid-test-server-version-python3.10-async-noauth-nossl-standalone-min-deps-cov 55.20% <ø> (ø)
mongodb-rapid-test-server-version-python3.10-sync-auth-ssl-sharded-cluster-min-deps-cov 59.09% <ø> (ø)
mongodb-rapid-test-server-version-python3.10-sync-noauth-nossl-replica-set-min-deps-cov 59.25% <ø> (ø)
mongodb-rapid-test-server-version-python3.11-async-noauth-nossl-replica-set-cov 57.04% <ø> (+<0.01%) ⬆️
mongodb-v4.2-test-server-version-python3.10-async-auth-ssl-sharded-cluster-min-deps-cov 54.60% <ø> (-0.03%) ⬇️
mongodb-v4.2-test-server-version-python3.10-async-noauth-nossl-standalone-min-deps-cov 53.17% <ø> (-0.01%) ⬇️
mongodb-v4.2-test-server-version-python3.10-sync-auth-ssl-sharded-cluster-min-deps-cov 56.79% <ø> (ø)
mongodb-v4.2-test-server-version-python3.10-sync-noauth-nossl-replica-set-min-deps-cov 56.93% <ø> (ø)
mongodb-v4.2-test-server-version-python3.11-async-noauth-nossl-replica-set-cov 54.78% <ø> (ø)
mongodb-v4.4-test-server-version-python3.10-async-auth-ssl-sharded-cluster-min-deps-cov 55.01% <ø> (+0.01%) ⬆️
mongodb-v4.4-test-server-version-python3.10-async-noauth-nossl-standalone-min-deps-cov 53.44% <ø> (+<0.01%) ⬆️
mongodb-v4.4-test-server-version-python3.10-sync-auth-ssl-sharded-cluster-min-deps-cov 57.19% <ø> (ø)
mongodb-v4.4-test-server-version-python3.10-sync-noauth-nossl-replica-set-min-deps-cov 57.29% <ø> (ø)
mongodb-v4.4-test-server-version-python3.11-async-noauth-nossl-replica-set-cov 55.08% <ø> (+<0.01%) ⬆️
mongodb-v5.0-test-server-version-python3.10-async-auth-ssl-sharded-cluster-min-deps-cov 55.18% <ø> (ø)
mongodb-v5.0-test-server-version-python3.10-async-noauth-nossl-standalone-min-deps-cov 53.58% <ø> (-0.01%) ⬇️
mongodb-v5.0-test-server-version-python3.10-sync-auth-ssl-sharded-cluster-min-deps-cov 57.39% <ø> (ø)
mongodb-v5.0-test-server-version-python3.10-sync-noauth-nossl-replica-set-min-deps-cov 57.53% <ø> (ø)
mongodb-v5.0-test-server-version-python3.11-async-noauth-nossl-replica-set-cov 55.31% <ø> (+<0.01%) ⬆️
mongodb-v6.0-test-server-version-python3.10-async-auth-ssl-sharded-cluster-min-deps-cov 55.20% <ø> (-0.02%) ⬇️
mongodb-v6.0-test-server-version-python3.10-async-noauth-nossl-standalone-min-deps-cov 53.61% <ø> (+<0.01%) ⬆️
mongodb-v6.0-test-server-version-python3.10-sync-auth-ssl-sharded-cluster-min-deps-cov 57.41% <ø> (ø)
mongodb-v6.0-test-server-version-python3.10-sync-noauth-nossl-replica-set-min-deps-cov 57.57% <ø> (ø)
mongodb-v6.0-test-server-version-python3.11-async-noauth-nossl-replica-set-cov 55.35% <ø> (-0.01%) ⬇️
mongodb-v7.0-test-server-version-python3.10-async-auth-ssl-sharded-cluster-min-deps-cov 55.21% <ø> (+0.01%) ⬆️
mongodb-v7.0-test-server-version-python3.10-async-noauth-nossl-standalone-min-deps-cov 53.61% <ø> (+<0.01%) ⬆️
mongodb-v7.0-test-server-version-python3.10-sync-auth-ssl-sharded-cluster-min-deps-cov 57.41% <ø> (+<0.01%) ⬆️
mongodb-v7.0-test-server-version-python3.10-sync-noauth-nossl-replica-set-min-deps-cov 57.57% <ø> (+<0.01%) ⬆️
mongodb-v7.0-test-server-version-python3.11-async-noauth-nossl-replica-set-cov 55.34% <ø> (-0.02%) ⬇️
mongodb-v8.0-test-server-version-python3.10-async-auth-ssl-sharded-cluster-min-deps-cov 56.92% <ø> (+0.02%) ⬆️
mongodb-v8.0-test-server-version-python3.10-async-noauth-nossl-standalone-min-deps-cov 55.21% <ø> (+0.01%) ⬆️
mongodb-v8.0-test-server-version-python3.10-sync-auth-ssl-sharded-cluster-min-deps-cov 59.09% <ø> (+<0.01%) ⬆️
mongodb-v8.0-test-server-version-python3.10-sync-noauth-nossl-replica-set-min-deps-cov 59.25% <ø> (+<0.01%) ⬆️
mongodb-v8.0-test-server-version-python3.11-async-noauth-nossl-replica-set-cov 57.05% <ø> (+0.01%) ⬆️
no-c-ext-rhel8-test-standard-latest-python3.11-async-noauth-nossl-standalone-cov 56.40% <ø> (+0.01%) ⬆️
no-c-ext-rhel8-test-standard-latest-python3.12-async-noauth-ssl-replica-set-cov 58.33% <ø> (ø)
no-c-ext-rhel8-test-standard-latest-python3.13-async-auth-ssl-sharded-cluster-cov 57.73% <ø> (ø)
no-c-ext-rhel8-test-standard-latest-python3.14-async-noauth-nossl-standalone-cov 56.04% <ø> (ø)
ocsp-rhel8-test-ocsp-ecdsa-valid-cert-server-staples-latest-python3.14-cov 34.05% <ø> (ø)
ocsp-rhel8-test-ocsp-rsa-valid-cert-server-staples-latest-python3.14-cov 34.05% <ø> (ø)
pyopenssl-macos-test-standard-latest-python3.12-async-noauth-ssl-replica-set-cov 57.02% <ø> (ø)
pyopenssl-rhel8-test-standard-latest-python3.12-async-noauth-ssl-replica-set-cov 57.02% <ø> (ø)
pyopenssl-win64-test-standard-latest-python3.12-async-noauth-ssl-replica-set-cov 56.96% <ø> (ø)
stable-api-accept-v2-rhel8-auth-test-standard-latest-python3.11-async-noauth-nossl-standalone-cov 55.17% <ø> (+<0.01%) ⬆️
stable-api-accept-v2-rhel8-auth-test-standard-latest-python3.14-async-noauth-nossl-standalone-cov 54.82% <ø> (ø)
stable-api-require-v1-rhel8-auth-test-standard-latest-python3.11-async-noauth-nossl-standalone-cov 55.16% <ø> (ø)
stable-api-require-v1-rhel8-auth-test-standard-latest-python3.13-async-auth-ssl-sharded-cluster-cov 56.38% <ø> (+<0.01%) ⬆️
stable-api-require-v1-rhel8-auth-test-standard-latest-python3.14-async-noauth-nossl-standalone-cov 54.80% <ø> (ø)
storage-inmemory-rhel8-test-standard-latest-python3.11-async-noauth-nossl-standalone-cov 55.19% <ø> (+0.01%) ⬆️
storage-inmemory-rhel8-test-standard-latest-python3.14-async-noauth-nossl-standalone-cov 54.82% <ø> (+<0.01%) ⬆️
test-macos-arm64-test-standard-latest-python3.11-async-noauth-nossl-standalone-cov 55.14% <ø> (+<0.01%) ⬆️
test-macos-arm64-test-standard-latest-python3.12-async-noauth-ssl-replica-set-cov 57.10% <ø> (ø)
test-macos-arm64-test-standard-latest-python3.13-async-auth-ssl-sharded-cluster-cov 56.51% <ø> (ø)
test-macos-arm64-test-standard-latest-python3.14-async-noauth-nossl-standalone-cov 54.78% <ø> (+<0.01%) ⬆️
test-macos-test-standard-latest-python3.11-async-noauth-nossl-standalone-cov 55.15% <ø> (-0.02%) ⬇️
test-macos-test-standard-latest-python3.12-async-noauth-ssl-replica-set-cov 57.10% <ø> (ø)
test-macos-test-standard-latest-python3.13-async-auth-ssl-sharded-cluster-cov 56.51% <ø> (ø)
test-macos-test-standard-latest-python3.14-async-noauth-nossl-standalone-cov 54.79% <ø> (+<0.01%) ⬆️
test-numpy-macos-arm64-test-numpy-python3.14-python3.14-cov 32.27% <ø> (-0.02%) ⬇️
test-numpy-macos-test-numpy-python3.14-python3.14-cov 32.27% <ø> (-0.02%) ⬇️
test-numpy-rhel8-test-numpy-python3.14-python3.14-cov 32.27% <ø> (-0.01%) ⬇️
test-numpy-win32-test-numpy-python3.14-python3.14-cov 32.25% <ø> (+0.01%) ⬆️
test-numpy-win64-test-numpy-python3.14-python3.14-cov 32.25% <ø> (ø)
test-win32-test-standard-latest-python3.11-async-noauth-nossl-standalone-cov 55.04% <ø> (+0.03%) ⬆️
test-win32-test-standard-latest-python3.12-async-noauth-ssl-replica-set-cov 57.04% <ø> (+<0.01%) ⬆️
test-win32-test-standard-latest-python3.13-async-auth-ssl-sharded-cluster-cov 56.44% <ø> (+<0.01%) ⬆️
test-win32-test-standard-latest-python3.14-async-noauth-nossl-standalone-cov 54.66% <ø> (+<0.01%) ⬆️
test-win64-test-standard-latest-python3.11-async-noauth-nossl-standalone-cov 55.01% <ø> (+<0.01%) ⬆️
test-win64-test-standard-latest-python3.12-async-noauth-ssl-replica-set-cov 57.05% <ø> (ø)
test-win64-test-standard-latest-python3.13-async-auth-ssl-sharded-cluster-cov 56.44% <ø> (ø)
test-win64-test-standard-latest-python3.14-async-noauth-nossl-standalone-cov 54.65% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Contributor

@sleepyStick sleepyStick left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lol this sent me straight to reading docs land so it took me a hot minute to review but i've learned!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants