Skip to content

fix(cosmosdb): replace distutils.strtobool removed in Python 3.12#1018

Merged
alexanderankin merged 2 commits into
testcontainers:mainfrom
FidelusAleksander:fix/cosmosdb-remove-distutils
Jun 2, 2026
Merged

fix(cosmosdb): replace distutils.strtobool removed in Python 3.12#1018
alexanderankin merged 2 commits into
testcontainers:mainfrom
FidelusAleksander:fix/cosmosdb-remove-distutils

Conversation

@FidelusAleksander
Copy link
Copy Markdown
Contributor

@FidelusAleksander FidelusAleksander commented May 29, 2026

Problem

The cosmosdb module imports distutils.util.strtobool in _emulator.py. The distutils module was deprecated in Python 3.10 (PEP 632) and removed in Python 3.12. This causes an ImportError when using the CosmosDB module on Python 3.12+:

ModuleNotFoundError: No module named 'distutils'

distutils was deprecated in Python 3.10 (PEP 632) and removed in 3.12.
The cosmosdb module imports distutils.util.strtobool, which causes an
ImportError on Python 3.12+.

Replace with inline env-var truthiness checks against a module-level
constant — no helper function or external dependency needed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@FidelusAleksander FidelusAleksander force-pushed the fix/cosmosdb-remove-distutils branch from 21d2c2f to faaebc1 Compare May 29, 2026 15:09
@codecov
Copy link
Copy Markdown

codecov Bot commented May 29, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.06%. Comparing base (1fadb40) to head (238fc23).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1018   +/-   ##
=======================================
  Coverage   83.06%   83.06%           
=======================================
  Files          16       16           
  Lines        1730     1730           
  Branches      190      190           
=======================================
  Hits         1437     1437           
  Misses        236      236           
  Partials       57       57           

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

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@Tranquility2
Copy link
Copy Markdown
Contributor

LGTM

@alexanderankin alexanderankin merged commit 3e487f4 into testcontainers:main Jun 2, 2026
12 checks passed
alexanderankin added a commit that referenced this pull request Jun 3, 2026
🤖 I have created a release *beep* *boop*
---


##
[4.15.0-rc3](testcontainers-v4.15.0-rc2...testcontainers-v4.15.0-rc3)
(2026-06-03)


### Features

* **core:** add Podman compatibility
([#1028](#1028))
([37093ab](37093ab))
* **core:** auto-detect DOCKER_HOST from current docker context
([#1026](#1026))
([d4b8ff6](d4b8ff6)),
closes
[#1025](#1025)


### Bug Fixes

* **core:** add container logs to TimeoutError when wait strategy times
out
([#1007](#1007))
([1fadb40](1fadb40))
* **core:** close Reaper socket at interpreter exit to prevent
ResourceWarning
([#1017](#1017))
([d3a1517](d3a1517))
* **cosmosdb:** replace distutils.strtobool removed in Python 3.12
([#1018](#1018))
([3e487f4](3e487f4))
* **mongodb:** Use wait strategy instead of deprecated wait_for_logs
([#943](#943))
([c8118e7](c8118e7))
* **mssql:** use `ExecWaitStrategy` instead of deprecated
`wait_container_is_ready`
([#1016](#1016))
([4c53b89](4c53b89)),
closes
[#874](#874)
* **neo4j:** Swap out use of depricated wait utils for wait_strategies
([#1012](#1012))
([6deaf3b](6deaf3b))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: David Ankin <daveankin@gmail.com>
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.

3 participants