scikit-learn-intelex 2025.4.0__py39-none-win_amd64.whl → 2025.5.0__py39-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of scikit-learn-intelex might be problematic. Click here for more details.

Files changed (269) hide show
  1. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/__main__.py +1 -1
  2. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/daal4py/_daal4py.cp39-win_amd64.pyd +0 -0
  3. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/doc/third-party-programs.txt +1 -1
  4. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +83 -0
  5. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/daal4py/mb/gbt_convertors.py +855 -0
  6. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/daal4py/mb/logistic_regression_builders.py +217 -0
  7. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/mb/model_builders.py → scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/daal4py/mb/tree_based_builders.py +99 -91
  8. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/mpi_transceiver.cp39-win_amd64.pyd +0 -0
  9. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +6 -2
  10. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/_utils.py +1 -1
  11. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +2 -2
  12. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +6 -38
  13. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +12 -8
  14. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +2 -6
  15. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +3 -7
  16. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +41 -153
  17. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +13 -15
  18. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +7 -10
  19. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +22 -57
  20. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +3 -4
  21. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +8 -3
  22. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +30 -7
  23. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +2 -2
  24. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +6 -16
  25. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +4 -7
  26. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +3 -5
  27. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +4 -2
  28. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/base.py +8 -3
  29. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +82 -5
  30. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/__init__.py +125 -83
  31. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/_config.py +27 -2
  32. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/_device_offload.py +79 -83
  33. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp39-win_amd64.pyd +0 -0
  34. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp39-win_amd64.pyd +0 -0
  35. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +21 -17
  36. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +44 -39
  37. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/cluster/dbscan.py +35 -42
  38. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/cluster/kmeans.py +83 -74
  39. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/cluster/kmeans_init.py +57 -24
  40. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/onedal/common/_backend.py +233 -0
  41. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/common/hyperparameters.py +4 -4
  42. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/common/tests/test_sycl.py +27 -12
  43. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/covariance/covariance.py +27 -19
  44. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +35 -32
  45. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +6 -10
  46. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +179 -78
  47. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +39 -25
  48. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/decomposition/pca.py +28 -16
  49. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +2 -2
  50. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/ensemble/forest.py +130 -93
  51. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +76 -57
  52. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/linear_model.py +63 -37
  53. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +96 -68
  54. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/neighbors/neighbors.py +156 -119
  55. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/primitives/get_tree.py +5 -3
  56. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/primitives/kernel_functions.py +21 -18
  57. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +4 -4
  58. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/svm/svm.py +80 -32
  59. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +10 -9
  60. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +10 -10
  61. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +8 -8
  62. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svc.py +5 -5
  63. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svr.py +10 -10
  64. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +1 -13
  65. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/utils/_array_api.py +3 -1
  66. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/utils/_dpep_helpers.py +16 -1
  67. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py +147 -0
  68. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/utils/tests/test_validation.py +3 -3
  69. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/utils/validation.py +47 -16
  70. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/__init__.py +3 -2
  71. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/__main__.py +2 -2
  72. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/_config.py +48 -6
  73. scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +143 -0
  74. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/_utils.py +28 -2
  75. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +13 -20
  76. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +34 -40
  77. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +6 -8
  78. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +2 -6
  79. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +42 -60
  80. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/decomposition/pca.py +7 -17
  81. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +4 -4
  82. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +207 -2
  83. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +106 -362
  84. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +1 -1
  85. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +1 -1
  86. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +6 -6
  87. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +41 -126
  88. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +42 -85
  89. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/linear.py +48 -39
  90. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +34 -71
  91. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +14 -18
  92. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +60 -1
  93. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +2 -2
  94. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +2 -3
  95. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +1 -3
  96. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +1 -1
  97. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +1 -3
  98. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +7 -54
  99. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +3 -3
  100. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +31 -73
  101. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +30 -70
  102. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +5 -13
  103. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +3 -13
  104. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +48 -62
  105. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +10 -3
  106. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +8 -4
  107. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +13 -2
  108. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +10 -3
  109. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +7 -4
  110. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +13 -2
  111. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +9 -2
  112. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +7 -2
  113. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +25 -8
  114. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +6 -2
  115. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +12 -3
  116. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +12 -5
  117. {scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/mb → scikit_learn_intelex-2025.5.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors}/__init__.py +2 -2
  118. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +27 -5
  119. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +12 -25
  120. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +35 -128
  121. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +9 -21
  122. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +33 -126
  123. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +9 -21
  124. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_common.py +26 -11
  125. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +16 -23
  126. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +4 -4
  127. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/utils/base.py +2 -2
  128. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +8 -22
  129. {scikit_learn_intelex-2025.4.0.dist-info → scikit_learn_intelex-2025.5.0.dist-info}/METADATA +2 -2
  130. scikit_learn_intelex-2025.5.0.dist-info/RECORD +257 -0
  131. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/_daal4py.cp39-win_amd64.pyd +0 -0
  132. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp39-win_amd64.pyd +0 -0
  133. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp39-win_amd64.pyd +0 -0
  134. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/_base.py +0 -38
  135. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/_policy.py +0 -55
  136. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/_spmd_policy.py +0 -30
  137. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/tests/test_policy.py +0 -76
  138. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/utils/__init__.py +0 -49
  139. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -126
  140. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -19
  141. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -25
  142. scikit_learn_intelex-2025.4.0.dist-info/RECORD +0 -259
  143. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/__init__.py +0 -0
  144. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/__init__.py +0 -0
  145. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +0 -0
  146. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +0 -0
  147. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +0 -0
  148. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +0 -0
  149. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +0 -0
  150. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +0 -0
  151. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +0 -0
  152. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +0 -0
  153. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +0 -0
  154. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +0 -0
  155. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +0 -0
  156. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +0 -0
  157. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/__init__.py +0 -0
  158. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +0 -0
  159. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +0 -0
  160. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +0 -0
  161. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +0 -0
  162. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +0 -0
  163. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
  164. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +0 -0
  165. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +0 -0
  166. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +0 -0
  167. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +0 -0
  168. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +0 -0
  169. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +0 -0
  170. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +0 -0
  171. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +0 -0
  172. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +0 -0
  173. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +0 -0
  174. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/basic_statistics/__init__.py +0 -0
  175. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +0 -0
  176. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +0 -0
  177. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +0 -0
  178. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/cluster/__init__.py +0 -0
  179. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +0 -0
  180. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +0 -0
  181. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +0 -0
  182. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/common/_estimator_checks.py +0 -0
  183. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/common/_mixin.py +0 -0
  184. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/covariance/__init__.py +0 -0
  185. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +0 -0
  186. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +0 -0
  187. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/datatypes/__init__.py +0 -0
  188. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/datatypes/tests/common.py +0 -0
  189. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/decomposition/__init__.py +0 -0
  190. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/ensemble/__init__.py +0 -0
  191. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +0 -0
  192. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/__init__.py +0 -0
  193. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +0 -0
  194. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +0 -0
  195. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +0 -0
  196. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +0 -0
  197. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +0 -0
  198. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/neighbors/__init__.py +0 -0
  199. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +0 -0
  200. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/primitives/__init__.py +0 -0
  201. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/svm/__init__.py +0 -0
  202. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/tests/test_common.py +0 -0
  203. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +0 -0
  204. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +0 -0
  205. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +0 -0
  206. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +0 -0
  207. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +0 -0
  208. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +0 -0
  209. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -0
  210. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/conftest.py +0 -0
  211. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
  212. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +0 -0
  213. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
  214. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -0
  215. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
  216. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +0 -0
  217. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +0 -0
  218. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +0 -0
  219. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +0 -0
  220. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +0 -0
  221. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
  222. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -0
  223. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
  224. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
  225. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
  226. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
  227. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
  228. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +0 -0
  229. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +0 -0
  230. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
  231. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +0 -0
  232. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +0 -0
  233. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +0 -0
  234. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
  235. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +0 -0
  236. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
  237. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +0 -0
  238. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  239. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
  240. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  241. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +0 -0
  242. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +0 -0
  243. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +0 -0
  244. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +0 -0
  245. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +0 -0
  246. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
  247. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  248. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -0
  249. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +0 -0
  250. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +0 -0
  251. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
  252. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
  253. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
  254. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +0 -0
  255. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +0 -0
  256. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +0 -0
  257. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +0 -0
  258. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
  259. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +0 -0
  260. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +0 -0
  261. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +0 -0
  262. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +0 -0
  263. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
  264. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/utils/_array_api.py +0 -0
  265. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
  266. {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.5.0.data}/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +0 -0
  267. {scikit_learn_intelex-2025.4.0.dist-info → scikit_learn_intelex-2025.5.0.dist-info}/LICENSE.txt +0 -0
  268. {scikit_learn_intelex-2025.4.0.dist-info → scikit_learn_intelex-2025.5.0.dist-info}/WHEEL +0 -0
  269. {scikit_learn_intelex-2025.4.0.dist-info → scikit_learn_intelex-2025.5.0.dist-info}/top_level.txt +0 -0
@@ -14,7 +14,7 @@
14
14
  # limitations under the License.
15
15
  # ==============================================================================
16
16
 
17
- """ Utilities for Data Parallel Extensions libs, such as DPNP, DPCtl.
17
+ """Utilities for Data Parallel Extensions libs, such as DPNP, DPCtl.
18
18
  See `Data Parallel Extensions for Python <https://github.com/IntelPython/DPEP>`__
19
19
  """
20
20
 
@@ -54,3 +54,18 @@ def is_dpnp_available(version=None):
54
54
 
55
55
  dpctl_available = is_dpctl_available()
56
56
  dpnp_available = is_dpnp_available()
57
+
58
+
59
+ if dpnp_available:
60
+ import dpnp
61
+ if dpctl_available:
62
+ import dpctl.tensor as dpt
63
+
64
+
65
+ def get_unique_values_with_dpep(X):
66
+ if dpnp_available:
67
+ return dpnp.unique(X)
68
+ elif dpctl_available:
69
+ return dpt.unique_values(X)
70
+ else:
71
+ raise RuntimeError("No DPEP package available to provide `unique` function.")
@@ -0,0 +1,147 @@
1
+ # ==============================================================================
2
+ # Copyright 2025 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ==============================================================================
16
+
17
+ from contextlib import contextmanager
18
+
19
+ from .._config import _get_config
20
+ from ..utils._dpep_helpers import dpctl_available
21
+
22
+ if dpctl_available:
23
+ from dpctl import SyclQueue
24
+ else:
25
+ from onedal import _dpc_backend
26
+
27
+ SyclQueue = getattr(_dpc_backend, "SyclQueue", None)
28
+
29
+ # single instance of global queue
30
+ __global_queue = None
31
+
32
+
33
+ def __create_sycl_queue(target):
34
+ if SyclQueue is None:
35
+ # we don't have SyclQueue support
36
+ return None
37
+ if target is None:
38
+ return None
39
+ if isinstance(target, SyclQueue):
40
+ return target
41
+ if isinstance(target, (str, int)):
42
+ return SyclQueue(target)
43
+ raise ValueError(f"Invalid queue or device selector {target=}.")
44
+
45
+
46
+ def get_global_queue():
47
+ """Get the global queue. Retrieve it from the config if not set."""
48
+ if (queue := __global_queue) is not None:
49
+ if SyclQueue and not isinstance(queue, SyclQueue):
50
+ raise ValueError("Global queue is not a SyclQueue object.")
51
+ return queue
52
+
53
+ target = _get_config()["target_offload"]
54
+ if target == "auto":
55
+ # queue will be created from the provided data to each function call
56
+ return None
57
+
58
+ q = __create_sycl_queue(target)
59
+ update_global_queue(q)
60
+ return q
61
+
62
+
63
+ def remove_global_queue():
64
+ """Remove the global queue."""
65
+ global __global_queue
66
+ __global_queue = None
67
+
68
+
69
+ def update_global_queue(queue):
70
+ """Update the global queue."""
71
+ global __global_queue
72
+ queue = __create_sycl_queue(queue)
73
+ __global_queue = queue
74
+
75
+
76
+ def from_data(*data):
77
+ """Extract the queue from provided data. This updates the global queue as well."""
78
+ for item in data:
79
+ # iterate through all data objects, extract the queue, and verify that all data objects are on the same device
80
+ try:
81
+ usm_iface = getattr(item, "__sycl_usm_array_interface__", None)
82
+ except RuntimeError as e:
83
+ if "SUA interface" in str(e):
84
+ # ignore SUA interface errors and move on
85
+ continue
86
+ else:
87
+ # unexpected, re-raise
88
+ raise e
89
+
90
+ if usm_iface is None:
91
+ # no interface found - try next data object
92
+ continue
93
+
94
+ # extract the queue
95
+ global_queue = get_global_queue()
96
+ data_queue = usm_iface["syclobj"]
97
+ if not data_queue:
98
+ # no queue, i.e. host data, no more work to do
99
+ continue
100
+
101
+ # update the global queue if not set
102
+ if global_queue is None:
103
+ update_global_queue(data_queue)
104
+ global_queue = data_queue
105
+
106
+ # if either queue points to a device, assert it's always the same device
107
+ data_dev = data_queue.sycl_device
108
+ global_dev = global_queue.sycl_device
109
+ if (data_dev and global_dev) is not None and data_dev != global_dev:
110
+ raise ValueError(
111
+ "Data objects are located on different target devices or not on selected device."
112
+ )
113
+
114
+ # after we went through the data, global queue is updated and verified (if any queue found)
115
+ return get_global_queue()
116
+
117
+
118
+ @contextmanager
119
+ def manage_global_queue(queue, *args):
120
+ """
121
+ Context manager to manage the global SyclQueue.
122
+
123
+ This context manager updates the global queue with the provided queue,
124
+ verifies that all data objects are on the same device, and restores the
125
+ original queue after work is done.
126
+ Note: For most applications, the original queue should be `None`, but
127
+ if there are nested calls to `manage_global_queue()`, it is
128
+ important to restore the outer queue, rather than setting it to
129
+ `None`.
130
+
131
+ Parameters:
132
+ queue (SyclQueue or None): The queue to set as the global queue. If None,
133
+ the global queue will be determined from the provided data.
134
+ *args: Additional data objects to verify their device placement.
135
+
136
+ Yields:
137
+ SyclQueue: The global queue after verification.
138
+ """
139
+ original_queue = get_global_queue()
140
+ try:
141
+ # update the global queue with what is provided, it can be None, then we will get it from provided data
142
+ update_global_queue(queue)
143
+ # find the queues in data to verify that all data objects are on the same device
144
+ yield from_data(*args)
145
+ finally:
146
+ # restore the original queue
147
+ update_global_queue(original_queue)
@@ -40,7 +40,7 @@ from onedal.utils.validation import assert_all_finite
40
40
  )
41
41
  @pytest.mark.parametrize("allow_nan", [False, True])
42
42
  @pytest.mark.parametrize(
43
- "dataframe, queue", get_dataframes_and_queues("numpy,dpnp,dpctl")
43
+ "dataframe, queue", get_dataframes_and_queues("numpy,dpnp,dpctl,array_api")
44
44
  )
45
45
  def test_sum_infinite_actually_finite(dtype, shape, allow_nan, dataframe, queue):
46
46
  X = np.empty(shape, dtype=dtype)
@@ -65,7 +65,7 @@ def test_sum_infinite_actually_finite(dtype, shape, allow_nan, dataframe, queue)
65
65
  @pytest.mark.parametrize("check", ["inf", "NaN", None])
66
66
  @pytest.mark.parametrize("seed", [0, 123456])
67
67
  @pytest.mark.parametrize(
68
- "dataframe, queue", get_dataframes_and_queues("numpy,dpnp,dpctl")
68
+ "dataframe, queue", get_dataframes_and_queues("numpy,dpnp,dpctl,array_api")
69
69
  )
70
70
  def test_assert_finite_random_location(
71
71
  dtype, shape, allow_nan, check, seed, dataframe, queue
@@ -92,7 +92,7 @@ def test_assert_finite_random_location(
92
92
  @pytest.mark.parametrize("check", ["inf", "NaN", None])
93
93
  @pytest.mark.parametrize("seed", [0, 123456])
94
94
  @pytest.mark.parametrize(
95
- "dataframe, queue", get_dataframes_and_queues("numpy,dpnp,dpctl")
95
+ "dataframe, queue", get_dataframes_and_queues("numpy,dpnp,dpctl,array_api")
96
96
  )
97
97
  def test_assert_finite_random_shape_and_location(
98
98
  dtype, allow_nan, check, seed, dataframe, queue
@@ -14,6 +14,7 @@
14
14
  # limitations under the License.
15
15
  # ==============================================================================
16
16
 
17
+ import inspect
17
18
  import warnings
18
19
  from collections.abc import Sequence
19
20
  from numbers import Integral
@@ -21,6 +22,9 @@ from numbers import Integral
21
22
  import numpy as np
22
23
  from scipy import sparse as sp
23
24
 
25
+ from onedal.common._backend import BackendFunction
26
+ from onedal.utils import _sycl_queue_manager as QM
27
+
24
28
  if np.lib.NumpyVersion(np.__version__) >= np.lib.NumpyVersion("2.0.0a0"):
25
29
  # numpy_version >= 2.0
26
30
  from numpy.exceptions import VisibleDeprecationWarning
@@ -34,8 +38,7 @@ from sklearn.utils.validation import check_array
34
38
  from daal4py.sklearn.utils.validation import (
35
39
  _assert_all_finite as _daal4py_assert_all_finite,
36
40
  )
37
- from onedal import _backend
38
- from onedal.common._policy import _get_policy
41
+ from onedal import _default_backend as backend
39
42
  from onedal.datatypes import to_table
40
43
 
41
44
 
@@ -127,6 +130,16 @@ def _validate_targets(y, class_weight, dtype):
127
130
  return np.asarray(y, dtype=dtype, order="C"), class_weight_res, classes
128
131
 
129
132
 
133
+ def get_finite_keyword():
134
+ """Gets the argument name for scikit-learn's validation functions compatible with
135
+ the current version of scikit-learn and using function inspection instead of
136
+ version check due to `onedal` design rule: sklearn versioning should occur
137
+ in `sklearnex` module."""
138
+ if "ensure_all_finite" in inspect.signature(check_array).parameters:
139
+ return "ensure_all_finite"
140
+ return "force_all_finite"
141
+
142
+
130
143
  def _check_array(
131
144
  array,
132
145
  dtype="numeric",
@@ -136,6 +149,7 @@ def _check_array(
136
149
  force_all_finite=True,
137
150
  ensure_2d=True,
138
151
  accept_large_sparse=True,
152
+ _finite_keyword=get_finite_keyword(),
139
153
  ):
140
154
  if force_all_finite:
141
155
  if sp.issparse(array):
@@ -145,15 +159,19 @@ def _check_array(
145
159
  else:
146
160
  _daal4py_assert_all_finite(array)
147
161
  force_all_finite = False
162
+ check_kwargs = {
163
+ "array": array,
164
+ "dtype": dtype,
165
+ "accept_sparse": accept_sparse,
166
+ "order": order,
167
+ "copy": copy,
168
+ "ensure_2d": ensure_2d,
169
+ "accept_large_sparse": accept_large_sparse,
170
+ }
171
+ check_kwargs[_finite_keyword] = force_all_finite
172
+
148
173
  array = check_array(
149
- array=array,
150
- dtype=dtype,
151
- accept_sparse=accept_sparse,
152
- order=order,
153
- copy=copy,
154
- force_all_finite=force_all_finite,
155
- ensure_2d=ensure_2d,
156
- accept_large_sparse=accept_large_sparse,
174
+ **check_kwargs,
157
175
  )
158
176
 
159
177
  if sp.issparse(array):
@@ -437,18 +455,22 @@ def _is_csr(x):
437
455
 
438
456
 
439
457
  def _assert_all_finite(X, allow_nan=False, input_name=""):
440
- policy = _get_policy(None, X)
458
+ backend_method = BackendFunction(
459
+ backend.finiteness_checker.compute.compute, backend, "compute", no_policy=False
460
+ )
441
461
  X_t = to_table(X)
442
462
  params = {
443
463
  "fptype": X_t.dtype,
444
464
  "method": "dense",
445
465
  "allow_nan": allow_nan,
446
466
  }
447
- if not _backend.finiteness_checker.compute.compute(policy, params, X_t).finite:
448
- type_err = "infinity" if allow_nan else "NaN, infinity"
449
- padded_input_name = input_name + " " if input_name else ""
450
- msg_err = f"Input {padded_input_name}contains {type_err}."
451
- raise ValueError(msg_err)
467
+ with QM.manage_global_queue(None, X):
468
+ # Must use the queue provided by X
469
+ if not backend_method(params, X_t).finite:
470
+ type_err = "infinity" if allow_nan else "NaN, infinity"
471
+ padded_input_name = input_name + " " if input_name else ""
472
+ msg_err = f"Input {padded_input_name}contains {type_err}."
473
+ raise ValueError(msg_err)
452
474
 
453
475
 
454
476
  def assert_all_finite(
@@ -462,3 +484,12 @@ def assert_all_finite(
462
484
  allow_nan=allow_nan,
463
485
  input_name=input_name,
464
486
  )
487
+
488
+
489
+ def is_contiguous(X):
490
+ if hasattr(X, "flags"):
491
+ return X.flags["C_CONTIGUOUS"] or X.flags["F_CONTIGUOUS"]
492
+ elif hasattr(X, "__dlpack__"):
493
+ return backend.dlpack_memory_order(X) is not None
494
+ else:
495
+ return False
@@ -52,12 +52,13 @@ __all__ = [
52
52
  "unpatch_sklearn",
53
53
  "utils",
54
54
  ]
55
+ __version__ = "2199.9.9"
55
56
  onedal_iface_flag = os.environ.get("OFF_ONEDAL_IFACE", "0")
56
57
  if onedal_iface_flag == "0":
57
- from onedal import _is_spmd_backend
58
+ from onedal import _spmd_backend
58
59
  from onedal.common.hyperparameters import get_hyperparameters
59
60
 
60
- if _is_spmd_backend:
61
+ if _spmd_backend is not None:
61
62
  __all__.append("spmd")
62
63
 
63
64
 
@@ -25,9 +25,9 @@ def _main():
25
25
  parser = argparse.ArgumentParser(
26
26
  prog="python -m sklearnex",
27
27
  description="""
28
- Run your Python script with Intel(R) Extension for
28
+ Run your Python script with Extension for
29
29
  scikit-learn, optimizing solvers of
30
- scikit-learn with Intel(R) oneAPI Data Analytics Library.
30
+ scikit-learn with oneAPI Data Analytics Library.
31
31
  """,
32
32
  formatter_class=argparse.ArgumentDefaultsHelpFormatter,
33
33
  )
@@ -26,10 +26,12 @@ from onedal._config import _get_config as onedal_get_config
26
26
 
27
27
  def get_config():
28
28
  """Retrieve current values for configuration set by :func:`set_config`
29
+
29
30
  Returns
30
31
  -------
31
32
  config : dict
32
33
  Keys are parameter names that can be passed to :func:`set_config`.
34
+
33
35
  See Also
34
36
  --------
35
37
  config_context : Context manager for global configuration.
@@ -44,28 +46,45 @@ def set_config(
44
46
  target_offload=None,
45
47
  allow_fallback_to_host=None,
46
48
  allow_sklearn_after_onedal=None,
49
+ use_raw_input=None,
47
50
  **sklearn_configs,
48
51
  ):
49
52
  """Set global configuration
53
+
50
54
  Parameters
51
55
  ----------
52
- target_offload : string or dpctl.SyclQueue, default=None
56
+ target_offload : string or dpctl.SyclQueue or None, default=None
53
57
  The device primarily used to perform computations.
54
58
  If string, expected to be "auto" (the execution context
55
59
  is deduced from input data location),
56
60
  or SYCL* filter selector string. Global default: "auto".
57
- allow_fallback_to_host : bool, default=None
61
+
62
+ allow_fallback_to_host : bool or None, default=None
58
63
  If True, allows to fallback computation to host device
59
64
  in case particular estimator does not support the selected one.
60
65
  Global default: False.
61
- allow_sklearn_after_onedal : bool, default=None
66
+
67
+ allow_sklearn_after_onedal : bool or None, default=None
62
68
  If True, allows to fallback computation to sklearn after onedal
63
69
  backend in case of runtime error on onedal backend computations.
64
70
  Global default: True.
71
+
72
+ use_raw_input : bool or None, default=None
73
+ .. deprecated:: 2026.0
74
+ If True, uses the raw input data in some SPMD onedal backend computations
75
+ without any checks on data consistency or validity.
76
+ Not recommended for general use.
77
+ Global default: False.
78
+
65
79
  See Also
66
80
  --------
67
81
  config_context : Context manager for global configuration.
68
82
  get_config : Retrieve current values of the global configuration.
83
+
84
+ Warnings
85
+ --------
86
+ Using ``use_raw_input=True`` is not recommended for general use as it
87
+ bypasses data consistency checks, which may lead to unexpected behavior.
69
88
  """
70
89
 
71
90
  array_api_dispatch = sklearn_configs.get("array_api_dispatch", False)
@@ -82,30 +101,53 @@ def set_config(
82
101
  local_config["allow_fallback_to_host"] = allow_fallback_to_host
83
102
  if allow_sklearn_after_onedal is not None:
84
103
  local_config["allow_sklearn_after_onedal"] = allow_sklearn_after_onedal
104
+ if use_raw_input is not None:
105
+ local_config["use_raw_input"] = use_raw_input
85
106
 
86
107
 
87
108
  @contextmanager
88
109
  def config_context(**new_config):
89
110
  """Context manager for global scikit-learn configuration
111
+
90
112
  Parameters
91
113
  ----------
92
- target_offload : string or dpctl.SyclQueue, default=None
114
+ target_offload : string or dpctl.SyclQueue or None, default=None
93
115
  The device primarily used to perform computations.
94
116
  If string, expected to be "auto" (the execution context
95
117
  is deduced from input data location),
96
118
  or SYCL* filter selector string. Global default: "auto".
97
- allow_fallback_to_host : bool, default=None
119
+
120
+ allow_fallback_to_host : bool or None, default=None
98
121
  If True, allows to fallback computation to host device
99
122
  in case particular estimator does not support the selected one.
100
123
  Global default: False.
101
- Notes
124
+
125
+ allow_sklearn_after_onedal : bool or None, default=None
126
+ If True, allows to fallback computation to sklearn after onedal
127
+ backend in case of runtime error on onedal backend computations.
128
+ Global default: True.
129
+
130
+ use_raw_input : bool or None, default=None
131
+ .. deprecated:: 2026.0
132
+ If True, uses the raw input data in some SPMD onedal backend computations
133
+ without any checks on data consistency or validity.
134
+ Not recommended for general use.
135
+ Global default: False.
136
+
137
+ Note
102
138
  -----
103
139
  All settings, not just those presently modified, will be returned to
104
140
  their previous values when the context manager is exited.
141
+
105
142
  See Also
106
143
  --------
107
144
  set_config : Set global scikit-learn configuration.
108
145
  get_config : Retrieve current values of the global configuration.
146
+
147
+ Warnings
148
+ --------
149
+ Using ``use_raw_input=True`` is not recommended for general use as it
150
+ bypasses data consistency checks, which may lead to unexpected behavior.
109
151
  """
110
152
  old_config = get_config()
111
153
  set_config(**new_config)
@@ -0,0 +1,143 @@
1
+ # ==============================================================================
2
+ # Copyright 2021 Intel Corporation
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ==============================================================================
16
+
17
+ from functools import wraps
18
+
19
+ from onedal._device_offload import _copy_to_usm, _transfer_to_host
20
+ from onedal.utils import _sycl_queue_manager as QM
21
+ from onedal.utils._array_api import _asarray
22
+ from onedal.utils._dpep_helpers import dpnp_available
23
+
24
+ if dpnp_available:
25
+ import dpnp
26
+ from onedal.utils._array_api import _convert_to_dpnp
27
+
28
+ from ._config import get_config
29
+
30
+
31
+ def _get_backend(obj, queue, method_name, *data):
32
+ with QM.manage_global_queue(queue, *data) as queue:
33
+ cpu_device = queue is None or getattr(queue.sycl_device, "is_cpu", True)
34
+ gpu_device = queue is not None and getattr(queue.sycl_device, "is_gpu", False)
35
+
36
+ if cpu_device:
37
+ patching_status = obj._onedal_cpu_supported(method_name, *data)
38
+ if patching_status.get_status():
39
+ return "onedal", patching_status
40
+ else:
41
+ return "sklearn", patching_status
42
+
43
+ allow_fallback_to_host = get_config()["allow_fallback_to_host"]
44
+
45
+ if gpu_device:
46
+ patching_status = obj._onedal_gpu_supported(method_name, *data)
47
+ if patching_status.get_status():
48
+ return "onedal", patching_status
49
+ else:
50
+ QM.remove_global_queue()
51
+ if allow_fallback_to_host:
52
+ patching_status = obj._onedal_cpu_supported(method_name, *data)
53
+ if patching_status.get_status():
54
+ return "onedal", patching_status
55
+ else:
56
+ return "sklearn", patching_status
57
+ else:
58
+ return "sklearn", patching_status
59
+
60
+ raise RuntimeError("Device support is not implemented")
61
+
62
+
63
+ def get_array_api_support_tag(estimator):
64
+ """Gets the value of the 'array_api_support' tag from the estimator
65
+ using correct code path depending on the scikit-learn version."""
66
+ if hasattr(estimator, "__sklearn_tags__"):
67
+ return estimator.__sklearn_tags__().array_api_support
68
+ elif hasattr(estimator, "_get_tags"):
69
+ tags = estimator._get_tags()
70
+ if "array_api_support" in tags:
71
+ return tags["array_api_support"]
72
+ return False
73
+
74
+
75
+ def dispatch(obj, method_name, branches, *args, **kwargs):
76
+ if get_config()["use_raw_input"] is False:
77
+ with QM.manage_global_queue(None, *args) as queue:
78
+ has_usm_data_for_args, hostargs = _transfer_to_host(*args)
79
+ has_usm_data_for_kwargs, hostvalues = _transfer_to_host(*kwargs.values())
80
+ hostkwargs = dict(zip(kwargs.keys(), hostvalues))
81
+
82
+ backend, patching_status = _get_backend(obj, queue, method_name, *hostargs)
83
+ has_usm_data = has_usm_data_for_args or has_usm_data_for_kwargs
84
+ if backend == "onedal":
85
+ # Host args only used before onedal backend call.
86
+ # Device will be offloaded when onedal backend will be called.
87
+ patching_status.write_log(queue=queue, transferred_to_host=False)
88
+ return branches[backend](obj, *hostargs, **hostkwargs, queue=queue)
89
+ if backend == "sklearn":
90
+ if (
91
+ "array_api_dispatch" in get_config()
92
+ and get_config()["array_api_dispatch"]
93
+ and get_array_api_support_tag(obj)
94
+ and not has_usm_data
95
+ ):
96
+ # USM ndarrays are also excluded for the fallback Array API. Currently, DPNP.ndarray is
97
+ # not compliant with the Array API standard, and DPCTL usm_ndarray Array API is compliant,
98
+ # except for the linalg module. There is no guarantee that stock scikit-learn will
99
+ # work with such input data. The condition will be updated after DPNP.ndarray and
100
+ # DPCTL usm_ndarray enabling for conformance testing and these arrays supportance
101
+ # of the fallback cases.
102
+ # If `array_api_dispatch` enabled and array api is supported for the stock scikit-learn,
103
+ # then raw inputs are used for the fallback.
104
+ patching_status.write_log(transferred_to_host=False)
105
+ return branches[backend](obj, *args, **kwargs)
106
+ else:
107
+ patching_status.write_log()
108
+ return branches[backend](obj, *hostargs, **hostkwargs)
109
+ raise RuntimeError(
110
+ f"Undefined backend {backend} in " f"{obj.__class__.__name__}.{method_name}"
111
+ )
112
+ else:
113
+ return branches["onedal"](obj, *args, **kwargs)
114
+
115
+
116
+ def wrap_output_data(func):
117
+ """
118
+ Converts and moves the output arrays of the decorated function
119
+ to match the input array type and device.
120
+ """
121
+
122
+ @wraps(func)
123
+ def wrapper(self, *args, **kwargs):
124
+ result = func(self, *args, **kwargs)
125
+ if not (len(args) == 0 and len(kwargs) == 0):
126
+ data = (*args, *kwargs.values())
127
+ usm_iface = getattr(data[0], "__sycl_usm_array_interface__", None)
128
+ if usm_iface is not None:
129
+ result = _copy_to_usm(usm_iface["syclobj"], result)
130
+ if dpnp_available and isinstance(data[0], dpnp.ndarray):
131
+ result = _convert_to_dpnp(result)
132
+ return result
133
+ config = get_config()
134
+ if not ("transform_output" in config and config["transform_output"]):
135
+ input_array_api = getattr(data[0], "__array_namespace__", lambda: None)()
136
+ if input_array_api:
137
+ input_array_api_device = data[0].device
138
+ result = _asarray(
139
+ result, input_array_api, device=input_array_api_device
140
+ )
141
+ return result
142
+
143
+ return wrapper
@@ -17,6 +17,7 @@
17
17
  import logging
18
18
  import os
19
19
  import re
20
+ import sys
20
21
  import warnings
21
22
  from abc import ABC
22
23
 
@@ -51,7 +52,7 @@ class PatchingConditionsChain(daal4py_PatchingConditionsChain):
51
52
  else:
52
53
  self.logger.debug(
53
54
  f"{self.scope_name}: debugging for the patch is enabled to track"
54
- " the usage of Intel® oneAPI Data Analytics Library (oneDAL)"
55
+ " the usage of oneAPI Data Analytics Library (oneDAL)"
55
56
  )
56
57
  for message in self.messages:
57
58
  self.logger.debug(
@@ -143,7 +144,7 @@ def register_hyperparameters(hyperparameters_map):
143
144
 
144
145
  # This abstract class is meant to generate a clickable doc link for classses
145
146
  # in sklearnex that are not part of base scikit-learn.
146
- class IntelEstimator(BaseForHTMLDocLink):
147
+ class ExtensionEstimator(BaseForHTMLDocLink):
147
148
  @property
148
149
  def _doc_link_module(self) -> str:
149
150
  return "sklearnex"
@@ -155,6 +156,31 @@ class IntelEstimator(BaseForHTMLDocLink):
155
156
  return f"https://uxlfoundation.github.io/scikit-learn-intelex/latest/non-scikit-algorithms.html#{module_path}.{class_name}"
156
157
 
157
158
 
159
+ def _add_inc_serialization_note(class_docstrings: str) -> str:
160
+ """Adds a small note note about serialization for extension estimators that are incremental.
161
+ The class docstrings should leave a placeholder '%incremental_serialization_note%' inside
162
+ their docstrings, which will be replaced by this note.
163
+ """
164
+ # In python versions >=3.13, leading whitespace in docstrings defined through
165
+ # static strings (but **not through other ways**) is automatically removed
166
+ # from the final docstrings, while in earlier versions is kept.
167
+ inc_serialization_note = """Note
168
+ ----
169
+ Serializing instances of this class will trigger a forced finalization of calculations
170
+ when the inputs are in a sycl queue or when using GPUs. Since (internal method)
171
+ finalize_fit can't be dispatched without directly provided queue and the dispatching
172
+ policy can't be serialized, the computation is finalized during serialization call and
173
+ the policy is not saved in serialized data."""
174
+ if sys.version_info.major == 3 and sys.version_info.minor <= 12:
175
+ inc_serialization_note = re.sub(
176
+ r"^", " " * 4, inc_serialization_note, flags=re.MULTILINE
177
+ )
178
+ inc_serialization_note = inc_serialization_note.strip()
179
+ return class_docstrings.replace(
180
+ r"%incremental_serialization_note%", inc_serialization_note
181
+ )
182
+
183
+
158
184
  # This abstract class is meant to generate a clickable doc link for classses
159
185
  # in sklearnex that have counterparts in scikit-learn.
160
186
  class PatchableEstimator(BaseForHTMLDocLink):