Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.12"
python-version: "3.14"
- name: Install black
run: |
pip install black==25.1.0
pip install black==26.5.1
- name: Run black
run: |
black --check --diff .
Expand Down Expand Up @@ -73,9 +73,9 @@ jobs:
INSTALL_OPENCV: "true"

# MacOS env with OpenMP installed through homebrew
- name: py39_conda_homebrew_libomp
- name: py310_conda_homebrew_libomp
os: macos-latest
PYTHON_VERSION: "3.9"
PYTHON_VERSION: "3.10"
PACKAGER: "conda"
BLAS: "openblas"
CC_OUTER_LOOP: "clang"
Expand All @@ -101,16 +101,16 @@ jobs:

# Linux environments to test that packages that comes with Ubuntu 22.04
# are correctly handled.
- name: py39_ubuntu_atlas_gcc_gcc
- name: py310_ubuntu_atlas_gcc_gcc
os: ubuntu-22.04
PYTHON_VERSION: "3.9"
PYTHON_VERSION: "3.10"
PACKAGER: "ubuntu"
APT_BLAS: "libatlas3-base libatlas-base-dev"
CC_OUTER_LOOP: "gcc"
CC_INNER_LOOP: "gcc"
- name: py39_ubuntu_openblas_gcc_gcc
- name: py310_ubuntu_openblas_gcc_gcc
os: ubuntu-22.04
PYTHON_VERSION: "3.9"
PYTHON_VERSION: "3.10"
PACKAGER: "ubuntu"
APT_BLAS: "libopenblas-base libopenblas-dev"
CC_OUTER_LOOP: "gcc"
Expand All @@ -125,11 +125,11 @@ jobs:
CC_INNER_LOOP: "gcc"
INSTALL_OPENCV: "true"

# Linux + Python 3.9 and homogeneous runtime nesting.
- name: py39_conda_openblas_clang_clang
# Linux + Python 3.10 and homogeneous runtime nesting.
- name: py310_conda_openblas_clang_clang
os: ubuntu-latest
PACKAGER: "conda"
PYTHON_VERSION: "3.9"
PYTHON_VERSION: "3.10"
BLAS: "openblas"
CC_OUTER_LOOP: "clang-18"
CC_INNER_LOOP: "clang-18"
Expand Down
3 changes: 3 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@
closures that can abort after ``os.fork()`` on some libffi builds.
https://github.com/joblib/threadpoolctl/pull/242

- Dropped official support for Python 3.9.
https://github.com/joblib/threadpoolctl/pull/255

3.6.0 (2025-03-13)
==================

Expand Down
5 changes: 2 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,12 @@ build-backend = "flit_core.buildapi"
name = "threadpoolctl"
authors = [{name = "Thomas Moreau", email = "thomas.moreau.2010@gmail.com"}]
readme = "README.md"
requires-python = ">=3.9"
requires-python = ">=3.10"
license = "BSD-3-Clause"
dynamic = ["version", "description"]
classifiers = [
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
Expand All @@ -27,7 +26,7 @@ homepage = "https://github.com/joblib/threadpoolctl"

[tool.black]
line-length = 88
target_version = ['py39', 'py310', 'py311', 'py312', 'py313']
target_version = ['py310', 'py311', 'py312', 'py313', 'py314']
preview = true

[tool.ruff]
Expand Down
3 changes: 0 additions & 3 deletions tests/test_threadpoolctl.py
Original file line number Diff line number Diff line change
Expand Up @@ -595,9 +595,6 @@ def test_command_line_command_flag():
assert lib_info in this_process_info


@pytest.mark.skipif(
sys.version_info < (3, 7), reason="need recent subprocess.run options"
)
def test_command_line_import_flag():
result = subprocess.run(
[
Expand Down
6 changes: 2 additions & 4 deletions threadpoolctl.py
Original file line number Diff line number Diff line change
Expand Up @@ -1664,17 +1664,15 @@ def _warn_if_incompatible_openmp(self):
return

prefixes = [lib_controller.prefix for lib_controller in self.lib_controllers]
msg = textwrap.dedent(
"""
msg = textwrap.dedent("""
Found Intel OpenMP ('libiomp') and LLVM OpenMP ('libomp') loaded at
the same time. Both libraries are known to be incompatible and this
can cause random crashes or deadlocks on Linux when loaded in the
same Python program.
Using threadpoolctl may cause crashes or deadlocks. For more
information and possible workarounds, please see
https://github.com/joblib/threadpoolctl/blob/master/multiple_openmp.md
"""
)
""")
if "libomp" in prefixes and "libiomp" in prefixes:
warnings.warn(msg, RuntimeWarning)

Expand Down
Loading