diff --git a/.github/workflows/check-urls.yml b/.github/workflows/check-urls.yml index e3fc14d..b348ab2 100644 --- a/.github/workflows/check-urls.yml +++ b/.github/workflows/check-urls.yml @@ -23,7 +23,7 @@ jobs: - uses: actions/checkout@v3 - name: urls-checker-code - uses: urlstechie/urlchecker-action@master + uses: urlstechie/urlchecker-action@main with: subfolder: mlinsights file_types: .md,.py,.rst,.ipynb @@ -35,7 +35,7 @@ jobs: # force_pass : true - name: urls-checker-docs - uses: urlstechie/urlchecker-action@master + uses: urlstechie/urlchecker-action@main with: subfolder: _doc file_types: .md,.py,.rst,.ipynb diff --git a/.github/workflows/wheels-mac.yml b/.github/workflows/wheels-mac.yml index 403f5a1..5c06eb0 100644 --- a/.github/workflows/wheels-mac.yml +++ b/.github/workflows/wheels-mac.yml @@ -26,7 +26,7 @@ jobs: # Used to host cibuildwheel - uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: '3.11' - name: Install cibuildwheel run: python -m pip install cibuildwheel diff --git a/CHANGELOGS.rst b/CHANGELOGS.rst index 2f98249..6afd296 100644 --- a/CHANGELOGS.rst +++ b/CHANGELOGS.rst @@ -5,6 +5,7 @@ Change Logs 0.5.1 ===== +* :pr:`130` numpy 2.0 * :pr:`132` builds against scikit-learn==1.5.0, python 3.12 0.5.0 diff --git a/_doc/index.rst b/_doc/index.rst index 61b856f..e0881fb 100644 --- a/_doc/index.rst +++ b/_doc/index.rst @@ -98,4 +98,5 @@ Source are available at `sdpython/mlinsights `_ * `0.5.0 <../v0.5.0/index.html>`_ diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 73d8d4b..3e54602 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -5,7 +5,7 @@ jobs: strategy: matrix: Python311-Linux: - python.version: '3.11' + python.version: '3.12' maxParallel: 3 steps: diff --git a/mlinsights/ext_test_case.py b/mlinsights/ext_test_case.py index b5fdf4b..32dc71d 100644 --- a/mlinsights/ext_test_case.py +++ b/mlinsights/ext_test_case.py @@ -45,6 +45,39 @@ def call_f(self): return wrapper +def is_azure() -> bool: + "Tells if the job is running on Azure DevOps." + return os.environ.get("AZURE_HTTP_USER_AGENT", "undefined") != "undefined" + + +def is_windows() -> bool: + return sys.platform == "win32" + + +def is_apple() -> bool: + return sys.platform == "darwin" + + +def skipif_ci_windows(msg) -> Callable: + """ + Skips a unit test if it runs on :epkg:`azure pipeline` on :epkg:`Windows`. + """ + if is_windows() and is_azure(): + msg = f"Test does not work on azure pipeline (Windows). {msg}" + return unittest.skip(msg) + return lambda x: x + + +def skipif_ci_apple(msg) -> Callable: + """ + Skips a unit test if it runs on :epkg:`azure pipeline` on :epkg:`Windows`. + """ + if is_apple() and is_azure(): + msg = f"Test does not work on azure pipeline (Apple). {msg}" + return unittest.skip(msg) + return lambda x: x + + def measure_time( stmt: Union[str, Callable], context: Optional[Dict[str, Any]] = None, @@ -547,36 +580,3 @@ def unzip_files( elif not info.filename.endswith("/"): files.append(tos) return files - - -def is_azure() -> bool: - "Tells if the job is running on Azure DevOps." - return os.environ.get("AZURE_HTTP_USER_AGENT", "undefined") != "undefined" - - -def is_windows() -> bool: - return sys.platform == "win32" - - -def is_apple() -> bool: - return sys.platform == "darwin" - - -def skipif_ci_windows(msg) -> Callable: - """ - Skips a unit test if it runs on :epkg:`azure pipeline` on :epkg:`Windows`. - """ - if is_windows() and is_azure(): - msg = f"Test does not work on azure pipeline (Windows). {msg}" - return unittest.skip(msg) - return lambda x: x - - -def skipif_ci_apple(msg) -> Callable: - """ - Skips a unit test if it runs on :epkg:`azure pipeline` on :epkg:`Windows`. - """ - if is_apple() and is_azure(): - msg = f"Test does not work on azure pipeline (Apple). {msg}" - return unittest.skip(msg) - return lambda x: x diff --git a/pyproject.toml b/pyproject.toml index 0ee0257..abe94ef 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ license = {file = "LICENSE.txt"} name = "mlinsights" readme = "README.rst" requires-python = ">=3.9" -version = "0.5.0" +version = "0.5.1" [project.urls] homepage = "https://sdpython.github.io/doc/mlinsights/dev/" @@ -39,17 +39,19 @@ dev = [ "clang-format", "cmakelang", "coverage", - "cython", + "cython>=3.0.10", "cython-lint", "furo", "isort", "joblib", "lightgbm", "matplotlib", + "numpy>=2.0", "onnx-array-api", "onnxruntime", "pandas", "psutil", + "pybind11>=2.12.0", "pytest", "pytest-cov", "ruff", @@ -67,10 +69,10 @@ dev = [ requires = [ "abi3audit; sys_platform == 'linux'", "auditwheel-symbols; sys_platform == 'linux'", - "Cython", + "Cython>=3.0.10", "cmake", - "numpy", - "pybind11", + "numpy>=2.0", + "pybind11>=2.12.0", "scikit-learn>=1.3.0", "scipy", "setuptools", @@ -106,7 +108,7 @@ manylinux-x86_64-image = "manylinux2014" [tool.cibuildwheel.linux] archs = ["x86_64"] build = "cp*" -skip = "cp36-* cp37-* cp38-* cp39-* cp313-* pypy* *musllinux*" +skip = "cp36-* cp37-* cp38-* cp39-* cp313-* cp314-* pypy* *musllinux*" manylinux-x86_64-image = "manylinux2014" before-build = "pip install auditwheel-symbols abi3audit" build-verbosity = 1 @@ -114,15 +116,15 @@ repair-wheel-command = "auditwheel-symbols --manylinux 2014 {wheel} ; abi3audit # repair-wheel-command = "auditwheel-symbols --manylinux 2014 {wheel} || exit 0" [tool.cibuildwheel.macos] -archs = ["x86_64"] +archs = ["arm64", "universal2"] build = "cp*" -skip = "cp36-* cp37-* cp38-* cp39-* cp313-* pypy* pp*" +skip = "cp36-* cp37-* cp38-* cp39-* cp313-* cp314-* pypy* pp*" before-build = "brew install libomp llvm&&echo 'export PATH=\"/opt/homebrew/opt/llvm/bin:$PATH\"' >> /Users/runner/.bash_profile" [tool.cibuildwheel.windows] archs = ["AMD64"] build = "cp*" -skip = "cp36-* cp37-* cp38-* cp39-* cp313-* pypy*" +skip = "cp36-* cp37-* cp38-* cp39-* cp313-* cp314-* pypy*" [tool.cython-lint] max-line-length = 88 diff --git a/requirements-dev.txt b/requirements-dev.txt index d77508d..d8a8ef7 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -4,7 +4,7 @@ chardet clang-format cmakelang coverage -cython>=3.0.5 +cython>=3.0.10 cython-lint furo; sys_platform == 'linux' ijson @@ -14,14 +14,16 @@ matplotlib memory_profiler>=0.55 notebook numba +numpy>=2.0 onnxruntime pandas_streaming -pybind11 +pybind11>=2.12.0 pytest pytest-cov pytest-subtests rstcheck[sphinx,toml] ruff +scikit-learn>=1.5.0 seaborn skl2onnx>=1.14.1 sphinx<7.2; sys_platform == 'linux' # furo still fails with sphinx==7.2.0 (issue unused furo.css) diff --git a/requirements.txt b/requirements.txt index 9822557..b389725 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ -cython>=3.0.5 -pybind11 +cython>=3.0.10 +numpy +pybind11>=2.12.0 scikit-learn>=1.3.0 diff --git a/setup.py b/setup.py index 6bb630d..983267e 100644 --- a/setup.py +++ b/setup.py @@ -670,7 +670,7 @@ def get_package_data(): setup( name="mlinsights", - version=get_version_str(here, "0.5.0"), + version=get_version_str(here, "0.5.1"), description=get_description(), long_description=get_long_description(here), author="Xavier Dupré", pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy