scikit-learn-intelex 2025.6.1__py313-none-win_amd64.whl → 2025.8.0__py313-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 (274) hide show
  1. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/daal4py/_daal4py.cp313-win_amd64.pyd +0 -0
  2. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/mb/__init__.py +2 -2
  3. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/mb/gbt_convertors.py +258 -2
  4. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/mb/tree_based_builders.py +30 -5
  5. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/mpi_transceiver.cp313-win_amd64.pyd +0 -0
  6. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +2 -2
  7. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +4 -4
  8. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +616 -0
  9. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +1 -1
  10. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +1 -1
  11. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +15 -16
  12. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/__init__.py +26 -1
  13. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/_config.py +5 -4
  14. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/_device_offload.py +84 -94
  15. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp313-win_amd64.pyd +0 -0
  16. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp313-win_amd64.pyd +0 -0
  17. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +151 -0
  18. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +42 -57
  19. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +6 -7
  20. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +11 -11
  21. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/dbscan.py +7 -25
  22. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/kmeans.py +18 -2
  23. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/common/_backend.py +62 -37
  24. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/common/hyperparameters.py +32 -9
  25. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/common/tests/test_sycl.py +6 -1
  26. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/covariance/covariance.py +10 -12
  27. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +8 -16
  28. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/datatypes/__init__.py +12 -2
  29. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +156 -0
  30. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/datatypes/_dlpack.py +61 -0
  31. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/datatypes/_sycl_usm.py +63 -0
  32. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/datatypes/tests/common.py +8 -3
  33. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +61 -19
  34. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +8 -17
  35. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/decomposition/pca.py +6 -4
  36. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/ensemble/forest.py +15 -9
  37. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +201 -0
  38. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +230 -0
  39. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +14 -15
  40. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +10 -17
  41. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/primitives/kernel_functions.py +64 -17
  42. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/svm.py +0 -12
  43. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/tests/test_common.py +15 -1
  44. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +23 -6
  45. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +1 -1
  46. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/utils/_array_api.py +25 -25
  47. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py +106 -54
  48. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/utils/_third_party.py +220 -0
  49. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/utils/validation.py +11 -3
  50. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/__init__.py +2 -1
  51. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/_config.py +17 -8
  52. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/_device_offload.py +45 -34
  53. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/_utils.py +52 -3
  54. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/base.py +1 -1
  55. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +31 -45
  56. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +50 -55
  57. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +30 -27
  58. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +1 -0
  59. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +14 -5
  60. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/decomposition/pca.py +21 -9
  61. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +54 -2
  62. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +13 -7
  63. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +17 -5
  64. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +22 -7
  65. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +2 -0
  66. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +90 -73
  67. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +83 -60
  68. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/linear.py +53 -41
  69. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +11 -4
  70. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +47 -27
  71. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +27 -61
  72. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +577 -0
  73. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +1 -1
  74. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +1 -1
  75. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +8 -6
  76. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +3 -4
  77. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +54 -8
  78. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +7 -4
  79. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +6 -3
  80. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +12 -8
  81. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +26 -0
  82. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +0 -8
  83. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +11 -4
  84. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +0 -7
  85. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +299 -0
  86. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +21 -4
  87. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +0 -7
  88. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +7 -4
  89. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +16 -8
  90. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +12 -4
  91. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +1 -1
  92. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +31 -0
  93. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_common.py +41 -2
  94. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +77 -6
  95. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +111 -0
  96. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +0 -8
  97. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +1 -1
  98. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +13 -13
  99. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/utils/base.py +4 -22
  100. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/utils/_array_api.py +71 -0
  101. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +97 -0
  102. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +29 -11
  103. {scikit_learn_intelex-2025.6.1.dist-info → scikit_learn_intelex-2025.8.0.dist-info}/METADATA +2 -2
  104. scikit_learn_intelex-2025.8.0.dist-info/RECORD +259 -0
  105. scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/daal4py/_daal4py.cp313-win_amd64.pyd +0 -0
  106. scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +0 -1025
  107. scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp313-win_amd64.pyd +0 -0
  108. scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/onedal/_onedal_py_host.cp313-win_amd64.pyd +0 -0
  109. scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +0 -111
  110. scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +0 -117
  111. scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +0 -311
  112. scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +0 -351
  113. scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/onedal/utils/_dpep_helpers.py +0 -71
  114. scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -134
  115. scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -50
  116. scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -71
  117. scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +0 -43
  118. scikit_learn_intelex-2025.6.1.data/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -59
  119. scikit_learn_intelex-2025.6.1.dist-info/RECORD +0 -257
  120. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/__init__.py +0 -0
  121. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/__main__.py +0 -0
  122. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/mb/logistic_regression_builders.py +0 -0
  123. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/__init__.py +0 -0
  124. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +0 -0
  125. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/_utils.py +0 -0
  126. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +0 -0
  127. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +0 -0
  128. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +0 -0
  129. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +0 -0
  130. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +0 -0
  131. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +0 -0
  132. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +0 -0
  133. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +0 -0
  134. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +0 -0
  135. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +0 -0
  136. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +0 -0
  137. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +0 -0
  138. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +0 -0
  139. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +0 -0
  140. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +0 -0
  141. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +0 -0
  142. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +0 -0
  143. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +0 -0
  144. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +0 -0
  145. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/__init__.py +0 -0
  146. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +0 -0
  147. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +0 -0
  148. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +0 -0
  149. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +0 -0
  150. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +0 -0
  151. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +0 -0
  152. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
  153. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +0 -0
  154. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +0 -0
  155. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +0 -0
  156. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +0 -0
  157. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +0 -0
  158. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +0 -0
  159. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +0 -0
  160. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +0 -0
  161. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +0 -0
  162. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +0 -0
  163. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +0 -0
  164. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +0 -0
  165. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +0 -0
  166. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/base.py +0 -0
  167. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +0 -0
  168. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/basic_statistics/__init__.py +0 -0
  169. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +0 -0
  170. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/__init__.py +0 -0
  171. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/kmeans_init.py +0 -0
  172. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +0 -0
  173. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +0 -0
  174. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +0 -0
  175. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/common/_estimator_checks.py +0 -0
  176. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/common/_mixin.py +0 -0
  177. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/covariance/__init__.py +0 -0
  178. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +0 -0
  179. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +0 -0
  180. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/decomposition/__init__.py +0 -0
  181. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +0 -0
  182. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/ensemble/__init__.py +0 -0
  183. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +0 -0
  184. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/__init__.py +0 -0
  185. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +0 -0
  186. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +0 -0
  187. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +0 -0
  188. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +0 -0
  189. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/neighbors/__init__.py +0 -0
  190. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/neighbors/neighbors.py +0 -0
  191. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +0 -0
  192. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/primitives/__init__.py +0 -0
  193. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/primitives/get_tree.py +0 -0
  194. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +0 -0
  195. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/__init__.py +0 -0
  196. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +0 -0
  197. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +0 -0
  198. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +0 -0
  199. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svc.py +0 -0
  200. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svr.py +0 -0
  201. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/utils/tests/test_validation.py +0 -0
  202. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
  203. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +0 -0
  204. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +0 -0
  205. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +0 -0
  206. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +0 -0
  207. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +0 -0
  208. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -0
  209. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/conftest.py +0 -0
  210. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
  211. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +0 -0
  212. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
  213. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
  214. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
  215. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
  216. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +0 -0
  217. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +0 -0
  218. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +0 -0
  219. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +0 -0
  220. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +0 -0
  221. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
  222. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +0 -0
  223. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
  224. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +0 -0
  225. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +0 -0
  226. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
  227. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
  228. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +0 -0
  229. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
  230. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
  231. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +0 -0
  232. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +0 -0
  233. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +0 -0
  234. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +0 -0
  235. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +0 -0
  236. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
  237. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +0 -0
  238. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +0 -0
  239. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +0 -0
  240. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
  241. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +0 -0
  242. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +0 -0
  243. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  244. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  245. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +0 -0
  246. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +0 -0
  247. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +0 -0
  248. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +0 -0
  249. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +0 -0
  250. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +0 -0
  251. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
  252. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +0 -0
  253. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +0 -0
  254. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  255. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +0 -0
  256. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
  257. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +0 -0
  258. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
  259. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +0 -0
  260. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
  261. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +0 -0
  262. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +0 -0
  263. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +0 -0
  264. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +0 -0
  265. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +0 -0
  266. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
  267. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +0 -0
  268. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +0 -0
  269. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +0 -0
  270. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
  271. {scikit_learn_intelex-2025.6.1.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +0 -0
  272. {scikit_learn_intelex-2025.6.1.dist-info → scikit_learn_intelex-2025.8.0.dist-info}/LICENSE.txt +0 -0
  273. {scikit_learn_intelex-2025.6.1.dist-info → scikit_learn_intelex-2025.8.0.dist-info}/WHEEL +0 -0
  274. {scikit_learn_intelex-2025.6.1.dist-info → scikit_learn_intelex-2025.8.0.dist-info}/top_level.txt +0 -0
@@ -99,9 +99,11 @@ def test_incremental_linear_regression_fit_spmd_gold(
99
99
  inclin.fit(dpt_X, dpt_y)
100
100
 
101
101
  rtol = 1e-5 if (dtype == np.float32) else 1e-7
102
- assert_allclose(inclin.coef_, inclin_spmd.coef_, rtol=rtol)
102
+ assert_allclose(_as_numpy(inclin.coef_), _as_numpy(inclin_spmd.coef_), rtol=rtol)
103
103
  if fit_intercept:
104
- assert_allclose(inclin.intercept_, inclin_spmd.intercept_, rtol=rtol)
104
+ assert_allclose(
105
+ _as_numpy(inclin.intercept_), _as_numpy(inclin_spmd.intercept_), rtol=rtol
106
+ )
105
107
 
106
108
 
107
109
  @pytest.mark.skipif(
@@ -184,9 +186,11 @@ def test_incremental_linear_regression_partial_fit_spmd_gold(
184
186
  inclin.fit(dpt_X, dpt_y)
185
187
 
186
188
  rtol = 1e-5 if (dtype == np.float32) else 1e-7
187
- assert_allclose(inclin.coef_, inclin_spmd.coef_, rtol=rtol)
189
+ assert_allclose(_as_numpy(inclin.coef_), _as_numpy(inclin_spmd.coef_), rtol=rtol)
188
190
  if fit_intercept:
189
- assert_allclose(inclin.intercept_, inclin_spmd.intercept_, rtol=rtol)
191
+ assert_allclose(
192
+ _as_numpy(inclin.intercept_), _as_numpy(inclin_spmd.intercept_), rtol=rtol
193
+ )
190
194
 
191
195
 
192
196
  @pytest.mark.skipif(
@@ -242,9 +246,11 @@ def test_incremental_linear_regression_fit_spmd_random(
242
246
  inclin_spmd.fit(local_dpt_X, local_dpt_y)
243
247
  inclin.fit(dpt_X, dpt_y)
244
248
 
245
- assert_allclose(inclin.coef_, inclin_spmd.coef_, atol=tol)
249
+ assert_allclose(_as_numpy(inclin.coef_), _as_numpy(inclin_spmd.coef_), atol=tol)
246
250
  if fit_intercept:
247
- assert_allclose(inclin.intercept_, inclin_spmd.intercept_, atol=tol)
251
+ assert_allclose(
252
+ _as_numpy(inclin.intercept_), _as_numpy(inclin_spmd.intercept_), atol=tol
253
+ )
248
254
 
249
255
  y_pred_spmd = inclin_spmd.predict(dpt_X_test)
250
256
  y_pred = inclin.predict(dpt_X_test)
@@ -325,9 +331,11 @@ def test_incremental_linear_regression_partial_fit_spmd_random(
325
331
  inclin_spmd.partial_fit(local_dpt_X, local_dpt_y)
326
332
  inclin.partial_fit(dpt_X, dpt_y)
327
333
 
328
- assert_allclose(inclin.coef_, inclin_spmd.coef_, atol=tol)
334
+ assert_allclose(_as_numpy(inclin.coef_), _as_numpy(inclin_spmd.coef_), atol=tol)
329
335
  if fit_intercept:
330
- assert_allclose(inclin.intercept_, inclin_spmd.intercept_, atol=tol)
336
+ assert_allclose(
337
+ _as_numpy(inclin.intercept_), _as_numpy(inclin_spmd.intercept_), atol=tol
338
+ )
331
339
 
332
340
  y_pred_spmd = inclin_spmd.predict(dpt_X_test)
333
341
  y_pred = inclin.predict(dpt_X_test)
@@ -19,6 +19,7 @@ import pytest
19
19
  from numpy.testing import assert_allclose
20
20
 
21
21
  from onedal.tests.utils._dataframes_support import (
22
+ _as_numpy,
22
23
  _convert_to_dataframe,
23
24
  get_dataframes_and_queues,
24
25
  )
@@ -83,8 +84,8 @@ def test_linear_spmd_gold(dataframe, queue):
83
84
  spmd_model = LinearRegression_SPMD().fit(local_dpt_X_train, local_dpt_y_train)
84
85
  batch_model = LinearRegression_Batch().fit(X_train, y_train)
85
86
 
86
- assert_allclose(spmd_model.coef_, batch_model.coef_)
87
- assert_allclose(spmd_model.intercept_, batch_model.intercept_)
87
+ assert_allclose(_as_numpy(spmd_model.coef_), _as_numpy(batch_model.coef_))
88
+ assert_allclose(_as_numpy(spmd_model.intercept_), _as_numpy(batch_model.intercept_))
88
89
 
89
90
  # ensure predictions of batch algo match spmd
90
91
  spmd_result = spmd_model.predict(local_dpt_X_test)
@@ -142,8 +143,15 @@ def test_linear_spmd_synthetic(
142
143
  batch_model = LinearRegression_Batch().fit(X_train, y_train)
143
144
 
144
145
  tol = 1e-3 if dtype == np.float32 else 1e-7
145
- assert_allclose(spmd_model.coef_, batch_model.coef_, rtol=tol, atol=tol)
146
- assert_allclose(spmd_model.intercept_, batch_model.intercept_, rtol=tol, atol=tol)
146
+ assert_allclose(
147
+ _as_numpy(spmd_model.coef_), _as_numpy(batch_model.coef_), rtol=tol, atol=tol
148
+ )
149
+ assert_allclose(
150
+ _as_numpy(spmd_model.intercept_),
151
+ _as_numpy(batch_model.intercept_),
152
+ rtol=tol,
153
+ atol=tol,
154
+ )
147
155
 
148
156
  # ensure predictions of batch algo match spmd
149
157
  # Configure raw input status for spmd estimator
@@ -233,7 +233,7 @@ class BaseSVC(BaseSVM):
233
233
 
234
234
  le = LabelEncoder()
235
235
  y_ind = le.fit_transform(y_)
236
- if not all(np.in1d(classes, le.classes_)):
236
+ if not np.isin(classes, le.classes_).all():
237
237
  raise ValueError("classes should have valid labels that are in y")
238
238
 
239
239
  recip_freq = len(y_) / (len(le.classes_) * np.bincount(y_ind).astype(np.float64))
@@ -18,6 +18,11 @@ import numpy as np
18
18
  import pytest
19
19
  from numpy.testing import assert_allclose
20
20
 
21
+ try:
22
+ from scipy.sparse import csr_array as csr_class
23
+ except ImportError:
24
+ from scipy.sparse import csr_matrix as csr_class
25
+
21
26
  from onedal.tests.utils._dataframes_support import (
22
27
  _as_numpy,
23
28
  _convert_to_dataframe,
@@ -91,3 +96,29 @@ def test_sklearnex_import_nusvr(dataframe, queue):
91
96
  _as_numpy(svc.dual_coef_), [[-1.0, 0.611111, 1.0, -0.611111]], rtol=1e-3
92
97
  )
93
98
  assert_allclose(_as_numpy(svc.support_), [1, 2, 3, 5])
99
+
100
+
101
+ # https://github.com/uxlfoundation/scikit-learn-intelex/issues/1880
102
+ def test_works_with_unsorted_indices():
103
+ from sklearnex.svm import SVC
104
+
105
+ X = csr_class(
106
+ (
107
+ np.array(
108
+ [0.44943642, 0.6316672, 0.6316672, 0.44943642, 0.6316672, 0.6316672]
109
+ ),
110
+ np.array([1, 4, 3, 1, 2, 0], dtype=np.int32),
111
+ np.array([0, 3, 6], dtype=np.int32),
112
+ ),
113
+ shape=(2, 5),
114
+ )
115
+ y = np.array([1, 0])
116
+ X_test_single = np.array([[1, 0, 0, 0, 0]], dtype=np.float64)
117
+ X_test_multi = np.array([[1, 0, 0, 0, 0], [1, 0, 0, 0, 0]], dtype=np.float64)
118
+ model = SVC(probability=True).fit(X, y)
119
+ pred_single = model.predict_proba(X_test_single)
120
+ pred_multi = model.predict_proba(X_test_multi)[0]
121
+ np.testing.assert_array_equal(
122
+ pred_single.reshape(-1),
123
+ pred_multi.reshape(-1),
124
+ )
@@ -20,6 +20,7 @@ import os
20
20
  import pathlib
21
21
  import pkgutil
22
22
  import re
23
+ import subprocess
23
24
  import sys
24
25
  import trace
25
26
  from contextlib import redirect_stdout
@@ -31,6 +32,7 @@ from sklearn.utils import all_estimators
31
32
 
32
33
  from daal4py.sklearn._utils import sklearn_check_version
33
34
  from onedal.tests.test_common import _check_primitive_usage_ban
35
+ from onedal.tests.utils._dataframes_support import test_frameworks
34
36
  from sklearnex.base import oneDALEstimator
35
37
  from sklearnex.tests.utils import (
36
38
  PATCHED_MODELS,
@@ -118,7 +120,7 @@ def test_target_offload_ban():
118
120
  allowed_locations=TARGET_OFFLOAD_ALLOWED_LOCATIONS,
119
121
  )
120
122
  output = "\n".join(output)
121
- assert output == "", f"target offloading is occuring in: \n{output}"
123
+ assert output == "", f"target offloading is occurring in: \n{output}"
122
124
 
123
125
 
124
126
  def _sklearnex_walk(func):
@@ -146,7 +148,7 @@ def test_class_trailing_underscore_ban(monkeypatch):
146
148
  estimators = all_estimators() # list of tuples
147
149
  for name, obj in estimators:
148
150
  if "preview" not in obj.__module__ and "daal4py" not in obj.__module__:
149
- # propeties also occur in sklearn, especially in deprecations and are expected
151
+ # properties also occur in sklearn, especially in deprecations and are expected
150
152
  # to error if queried and the estimator is not fitted
151
153
  assert all(
152
154
  [
@@ -201,6 +203,43 @@ def test_oneDALEstimator_inheritance(monkeypatch):
201
203
  ), f"oneDALEstimator should be inherited just before BaseEstimator in {name}"
202
204
 
203
205
 
206
+ def test_frameworks_lazy_import(monkeypatch):
207
+ """Check that all estimators defined in sklearnex do not actively
208
+ load data frameworks which are not numpy or pandas.
209
+ """
210
+ active = ["numpy", "pandas", "dpctl.tensor"]
211
+ # handle naming conventions for data frameworks in testing
212
+ frameworks = test_frameworks.replace("dpctl", "dpctl.tensor")
213
+ frameworks = frameworks.replace("array_api", "array_api_strict")
214
+ lazy = ",".join([i for i in frameworks.split(",") if i not in active])
215
+ if not lazy:
216
+ pytest.skip("No lazily-imported data frameworks available in testing")
217
+
218
+ monkeypatch.setattr(pkgutil, "walk_packages", _sklearnex_walk(pkgutil.walk_packages))
219
+ estimators = all_estimators() # list of tuples
220
+
221
+ filtered_modules = []
222
+ for name, obj in estimators:
223
+ # do not test spmd or preview, as they are exempt
224
+ if "preview" not in obj.__module__ and "spmd" not in obj.__module__:
225
+ filtered_modules += [obj.__module__]
226
+
227
+ modules = ",".join(filtered_modules)
228
+
229
+ # import all modules with estimators and check sys.modules for the lazily-imported data
230
+ # frameworks. It is done in a subprocess to isolate the impact of testing infrastructure
231
+ # on sys.modules, which may have actively loaded those frameworks into the test env
232
+ teststr = (
233
+ "import sys,{mod};assert all([i not in sys.modules for i in '{l}'.split(',')])"
234
+ )
235
+ cmd = [sys.executable, "-c", teststr.format(mod=modules, l=lazy)]
236
+
237
+ try:
238
+ subprocess.run(cmd, check=True, capture_output=True, text=True)
239
+ except subprocess.CalledProcessError as e:
240
+ raise AssertionError(f"a framework in '{lazy}' is being actively loaded") from e
241
+
242
+
204
243
  def _fullpath(path):
205
244
  return os.path.realpath(os.path.expanduser(path))
206
245
 
@@ -15,7 +15,10 @@
15
15
  # ==============================================================================
16
16
 
17
17
  import logging
18
+ from contextlib import nullcontext
19
+ from unittest.mock import patch
18
20
 
21
+ import numpy as np
19
22
  import pytest
20
23
  import sklearn
21
24
 
@@ -127,6 +130,27 @@ def test_config_context_works():
127
130
  assert onedal_default_config_after_cc[param] == onedal_default_config[param]
128
131
 
129
132
 
133
+ @pytest.mark.skipif(
134
+ onedal._default_backend.is_dpc, reason="requires host default backend"
135
+ )
136
+ @pytest.mark.parametrize("target", ["auto", "cpu", "cpu:0", "gpu", 3])
137
+ def test_host_backend_target_offload(target):
138
+ from sklearnex.neighbors import NearestNeighbors
139
+
140
+ err_msg = (
141
+ r"device use via \`target_offload\` is only supported with the DPC\+\+ backend"
142
+ )
143
+
144
+ est = NearestNeighbors()
145
+ if target != "auto":
146
+ with pytest.raises(ValueError, match=err_msg):
147
+ with sklearnex.config_context(target_offload=target):
148
+ est.fit(np.eye(5, 8))
149
+ else:
150
+ with sklearnex.config_context(target_offload=target):
151
+ est.fit(np.eye(5, 8))
152
+
153
+
130
154
  @pytest.mark.skipif(
131
155
  not is_dpctl_device_available(["gpu"]), reason="Requires a gpu for fallback testing"
132
156
  )
@@ -138,6 +162,11 @@ def test_fallback_to_host(caplog):
138
162
  from sklearnex._device_offload import dispatch
139
163
  from sklearnex._utils import PatchingConditionsChain
140
164
 
165
+ # This is done due to the use of name mangling in _sycl_queue_manager which
166
+ # doesn't operate in classes directly. This impacts sklearnex's ``dispatch``
167
+ # routine, which expects class methods rather than instance methods.
168
+ is_fallback = lambda: QM.__global_queue == QM.__fallback_queue
169
+
141
170
  class _Estimator:
142
171
  def _onedal_gpu_supported(self, method_name, *data):
143
172
  patching_status = PatchingConditionsChain("")
@@ -150,11 +179,7 @@ def test_fallback_to_host(caplog):
150
179
 
151
180
  def _onedal_test(self, *args, queue=None):
152
181
  if args[0] == "cpu":
153
- assert (
154
- queue is None
155
- and QM.__global_queue == QM.__fallback_queue
156
- and QM.get_global_queue() is None
157
- )
182
+ assert queue is None and is_fallback() and QM.get_global_queue() is None
158
183
  elif args[0] == "gpu":
159
184
  assert queue is not None and QM.get_global_queue() is not None
160
185
 
@@ -172,7 +197,7 @@ def test_fallback_to_host(caplog):
172
197
  dispatch(
173
198
  est,
174
199
  "test",
175
- {"onedal": est._onedal_test, "sklearn": None},
200
+ {"onedal": _Estimator._onedal_test, "sklearn": None},
176
201
  "cpu" if fallback else "gpu",
177
202
  )
178
203
 
@@ -183,3 +208,49 @@ def test_fallback_to_host(caplog):
183
208
  in caplog.messages[start:]
184
209
  )
185
210
  start = len(caplog.messages)
211
+
212
+
213
+ def test_other_device_fallback():
214
+ # force a fallback to cpu with direct use of dispatch and PatchingConditionsChain
215
+ # it should complete with allow_fallback_to_host. The data should be moved to cpu
216
+ # by calling ``to_device``.
217
+ from onedal.utils import _sycl_queue_manager as QM
218
+ from sklearnex._device_offload import dispatch
219
+ from sklearnex._utils import PatchingConditionsChain
220
+
221
+ class FakeCUDA:
222
+ def __init__(self, data):
223
+ self.__data = data
224
+
225
+ def to_device(self, *args):
226
+ return self.__data
227
+
228
+ def __dlpack_device__(self):
229
+ return (2, 0)
230
+
231
+ class _CPUEstimator:
232
+ def _onedal_cpu_supported(self, method_name, *data):
233
+ patching_status = PatchingConditionsChain("")
234
+ return patching_status
235
+
236
+ def _onedal_test(self, data, queue=None):
237
+ assert queue is None and QM.get_global_queue() is None
238
+ assert isinstance(data, np.ndarray)
239
+
240
+ est = _CPUEstimator()
241
+ err_msg = "Device support is not implemented for the supplied data type."
242
+ data = FakeCUDA(np.eye(5, 8))
243
+
244
+ for fallback in [True, False]:
245
+ ctx = nullcontext() if fallback else pytest.raises(RuntimeError, match=err_msg)
246
+ _mock = patch.object(FakeCUDA, "to_device", wraps=data.to_device)
247
+ with sklearnex.config_context(allow_fallback_to_host=fallback), ctx, _mock as spy:
248
+ dispatch(
249
+ est,
250
+ "test",
251
+ {"onedal": _CPUEstimator._onedal_test, "sklearn": None},
252
+ data,
253
+ )
254
+ if fallback:
255
+ # verify ``FakeCUDA.to_device`` was used
256
+ spy.assert_called_once_with("cpu")
@@ -0,0 +1,111 @@
1
+ # ==============================================================================
2
+ # Copyright 2024 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
+ import numpy as np
18
+ import pytest
19
+ from sklearn.datasets import make_classification, make_regression
20
+
21
+ from daal4py.sklearn._utils import daal_check_version
22
+ from sklearnex.decomposition import PCA
23
+ from sklearnex.ensemble import RandomForestClassifier
24
+ from sklearnex.linear_model import IncrementalLinearRegression, LinearRegression
25
+ from sklearnex.preview.covariance import EmpiricalCovariance
26
+
27
+ # Table of estimators to test hyperparameter reset functionality.
28
+ # Each row contains the following elements:
29
+ #
30
+ # [estimator, estimator_type, operation, hyperparameter_name, non_default_value]
31
+ #
32
+ # estimator: the estimator class to test. For example, EmpiricalCovariance.
33
+ # estimator_type: the type of operation to get.
34
+ # Possible values: "compute", "regression", "classification".
35
+ # operation: the argument used in get_hyperparameters() and reset_hyperparameters()
36
+ # methods of the estimator.
37
+ # hyperparameter_name: the name of the hyperparameter to test.
38
+ # non_default_value: the value to set for the hyperparameter before resetting it.
39
+ # This value should be different from the default value of the hyperparameter.
40
+ test_estimators = [
41
+ [EmpiricalCovariance, "compute", "fit", "cpu_macro_block", 10],
42
+ [IncrementalLinearRegression, "regression", "fit", "cpu_macro_block", 10],
43
+ [IncrementalLinearRegression, "regression", "partial_fit", "cpu_macro_block", 10],
44
+ [LinearRegression, "regression", "fit", "cpu_macro_block", 10],
45
+ ]
46
+
47
+ if daal_check_version((2024, "P", 300)):
48
+ test_estimators.append(
49
+ [RandomForestClassifier, "classification", "predict", "block_size", 8]
50
+ )
51
+
52
+ if daal_check_version((2025, "P", 700)):
53
+ test_estimators.append([EmpiricalCovariance, "compute", "fit", "cpu_grain_size", 2])
54
+ test_estimators.append([PCA, "compute", "fit", "cpu_macro_block", 10])
55
+
56
+
57
+ def call_estimator(estimator_object, estimator_type, op, X, y=None):
58
+ if estimator_type == "compute":
59
+ return estimator_object.fit(X)
60
+ elif estimator_type == "regression" or estimator_type == "classification":
61
+ if y is None:
62
+ raise ValueError("y must be provided for regression or classification tasks")
63
+ if op == "partial_fit":
64
+ result = estimator_object.partial_fit(X, y)
65
+ else:
66
+ result = estimator_object.fit(X, y)
67
+ if op == "predict":
68
+ return estimator_object.predict(X)
69
+ else:
70
+ return result
71
+ else:
72
+ raise ValueError(f"Unknown estimator type: {estimator_type}")
73
+
74
+
75
+ def test_reset_hyperparameters():
76
+ for estimator, estimator_type, op, param_name, non_default_value in test_estimators:
77
+
78
+ if estimator_type == "compute":
79
+ X = np.random.rand(100, 5)
80
+ y = None
81
+ elif estimator_type == "regression":
82
+ X, y = make_regression(n_features=5, n_informative=5, random_state=777)
83
+ elif estimator_type == "classification":
84
+ X, y = make_classification(n_features=5, random_state=777)
85
+
86
+ # Create an instance of the estimator
87
+ est_object = estimator()
88
+
89
+ # Fit the model to the data with the default hyperparameters
90
+ call_estimator(est_object, estimator_type, op, X, y)
91
+
92
+ # Get the hyperparameters before resetting
93
+ hparams_before = estimator.get_hyperparameters(op)
94
+ default_hparam_value = getattr(hparams_before, param_name)
95
+
96
+ # Fit the model to the data with non-default hyperparameters
97
+ setattr(hparams_before, param_name, non_default_value)
98
+ call_estimator(est_object, estimator_type, op, X, y)
99
+
100
+ # Check if the hyperparameters have been set to non-default values
101
+ assert getattr(hparams_before, param_name) == non_default_value
102
+ assert getattr(estimator.get_hyperparameters(op), param_name) == non_default_value
103
+
104
+ # Reset the hyperparameters
105
+ estimator.reset_hyperparameters(op)
106
+ call_estimator(est_object, estimator_type, op, X, y)
107
+
108
+ # Check if the hyperparameters have been reset to default values
109
+ assert (
110
+ getattr(estimator.get_hyperparameters(op), param_name) == default_hparam_value
111
+ )
@@ -35,7 +35,6 @@ from onedal.tests.utils._dataframes_support import (
35
35
  )
36
36
  from onedal.tests.utils._device_selection import get_queues, is_dpctl_device_available
37
37
  from onedal.utils._array_api import _get_sycl_namespace
38
- from onedal.utils._dpep_helpers import dpctl_available, dpnp_available
39
38
  from sklearnex import config_context
40
39
  from sklearnex.tests.utils import (
41
40
  PATCHED_FUNCTIONS,
@@ -44,13 +43,6 @@ from sklearnex.tests.utils import (
44
43
  DummyEstimator,
45
44
  )
46
45
 
47
- if dpctl_available:
48
- from dpctl.tensor import usm_ndarray
49
-
50
- if dpnp_available:
51
- import dpnp
52
-
53
-
54
46
  CPU_SKIP_LIST = (
55
47
  "TSNE", # too slow for using in testing on common data size
56
48
  "config_context", # does not malloc
@@ -95,7 +95,7 @@ def test_n_jobs_support(estimator, n_jobs, caplog):
95
95
  "NearestNeighbors" in estimator and "radius" in method_name
96
96
  ):
97
97
  # radius_neighbors and radius_neighbors_graph violate sklearn fallback guard
98
- # but use sklearnex interally, additional development must be done to those
98
+ # but use sklearnex internally, additional development must be done to those
99
99
  # functions to bring them to design compliance.
100
100
  continue
101
101
  try:
@@ -168,25 +168,25 @@ def test_standard_estimator_patching(caplog, dataframe, queue, dtype, estimator,
168
168
  )
169
169
  elif method and not hasattr(est, method):
170
170
  pytest.skip(f"sklearn available_if prevents testing {estimator}.{method}")
171
- elif dataframe == "array_api" and estimator == "PCA" and "score" in method:
172
- pytest.skip(
173
- f"PCA.{method} has sklearn array_api support which breaks with array_api_dispatching"
174
- )
175
- elif (
176
- dataframe == "array_api"
177
- and not sklearn_check_version("1.3")
178
- and estimator == "IncrementalEmpiricalCovariance"
179
- and method == "score"
180
- ):
181
- pytest.skip(
182
- f"array checking in sklearn <1.3 does not fully support array_api inputs, causes sklearnex-only estimator failure"
183
- )
184
171
 
185
172
  if dataframe == "array_api":
186
173
  # as array_api dispatching is experimental, sklearn support isn't guaranteed.
187
174
  # the infrastructure from sklearn that sklearnex depends on is also susceptible
188
175
  # to failure. In this case compare to sklearn for the same failure. By design
189
176
  # the patching of sklearn should act similarly. Technically this is conformance.
177
+ if estimator == "PCA" and "score" in method:
178
+ pytest.skip(
179
+ f"PCA.{method} has sklearn array_api support which breaks with array_api_dispatching"
180
+ )
181
+ elif (
182
+ not sklearn_check_version("1.3")
183
+ and estimator == "IncrementalEmpiricalCovariance"
184
+ and method == "score"
185
+ ):
186
+ pytest.skip(
187
+ f"array checking in sklearn <1.3 does not fully support array_api inputs, causes sklearnex-only estimator failure"
188
+ )
189
+
190
190
  with config_context(array_api_dispatch=True):
191
191
  try:
192
192
  _check_estimator_patching(caplog, dataframe, queue, dtype, est, method)
@@ -153,7 +153,7 @@ def gen_models_info(algorithms, required_inputs=["X", "y"], fit=False, daal4py=T
153
153
  required_inputs : list, tuple of strings or None
154
154
  list of required args/kwargs for callable attribute (only non-private,
155
155
  non-BaseEstimator attributes). Only one must be present, None
156
- signifies taking all non-private attribues, callable or not.
156
+ signifies taking all non-private attributes, callable or not.
157
157
 
158
158
  fit: bool (default False)
159
159
  Include "fit" method as an estimator-attribute pair
@@ -398,25 +398,13 @@ def _get_processor_info():
398
398
  class DummyEstimator(BaseEstimator):
399
399
 
400
400
  def fit(self, X, y=None):
401
- sua_iface, xp, _ = _get_sycl_namespace(X)
402
401
  X_table = to_table(X)
403
402
  y_table = to_table(y)
404
403
  # The presence of the fitted attributes (ending with a trailing
405
404
  # underscore) is required for the correct check. The cleanup of
406
405
  # the memory will occur at the estimator instance deletion.
407
- if sua_iface:
408
- self.x_attr_ = from_table(
409
- X_table, sua_iface=sua_iface, sycl_queue=X.sycl_queue, xp=xp
410
- )
411
- self.y_attr_ = from_table(
412
- y_table,
413
- sua_iface=sua_iface,
414
- sycl_queue=X.sycl_queue if y is None else y.sycl_queue,
415
- xp=xp,
416
- )
417
- else:
418
- self.x_attr_ = from_table(X_table)
419
- self.y_attr_ = from_table(y_table)
406
+ self.x_attr_ = from_table(X_table, like=X)
407
+ self.y_attr_ = from_table(y_table, like=X if y is None else y)
420
408
 
421
409
  return self
422
410
 
@@ -424,13 +412,7 @@ class DummyEstimator(BaseEstimator):
424
412
  # Checks if the estimator is fitted by verifying the presence of
425
413
  # fitted attributes (ending with a trailing underscore).
426
414
  check_is_fitted(self)
427
- sua_iface, xp, _ = _get_sycl_namespace(X)
428
415
  X_table = to_table(X)
429
- if sua_iface:
430
- returned_X = from_table(
431
- X_table, sua_iface=sua_iface, sycl_queue=X.sycl_queue, xp=xp
432
- )
433
- else:
434
- returned_X = from_table(X_table)
416
+ returned_X = from_table(X_table, like=X)
435
417
 
436
418
  return returned_X
@@ -16,11 +16,19 @@
16
16
 
17
17
  """Tools to support array_api."""
18
18
 
19
+ from collections.abc import Callable
20
+ from typing import Union
21
+
19
22
  import numpy as np
20
23
 
21
24
  from daal4py.sklearn._utils import sklearn_check_version
22
25
  from onedal.utils._array_api import _get_sycl_namespace
23
26
 
27
+ from ..base import oneDALEstimator
28
+
29
+ if sklearn_check_version("1.6"):
30
+ from ..base import Tags
31
+
24
32
  if sklearn_check_version("1.2"):
25
33
  from sklearn.utils._array_api import get_namespace as sklearn_get_namespace
26
34
 
@@ -80,3 +88,66 @@ def get_namespace(*arrays):
80
88
  return sklearn_get_namespace(*arrays)
81
89
  else:
82
90
  return np, False
91
+
92
+
93
+ def _enable_array_api(original_class: type[oneDALEstimator]) -> type[oneDALEstimator]:
94
+ if sklearn_check_version("1.6"):
95
+
96
+ def __sklearn_tags__(self) -> Tags:
97
+ sktags = super(original_class, self).__sklearn_tags__()
98
+ sktags.onedal_array_api = True
99
+ return sktags
100
+
101
+ original_class.__sklearn_tags__ = __sklearn_tags__
102
+
103
+ elif sklearn_check_version("1.3"):
104
+
105
+ def _more_tags(self) -> dict[str, bool]:
106
+ return {"onedal_array_api": True}
107
+
108
+ original_class._more_tags = _more_tags
109
+
110
+ return original_class
111
+
112
+
113
+ def enable_array_api(
114
+ class_or_str: Union[type[oneDALEstimator], str],
115
+ ) -> Union[type[oneDALEstimator], Callable]:
116
+ """Enable sklearnex to use dpctl, dpnp or array API inputs in oneDAL offloading.
117
+
118
+ This wrapper sets the proper flags/tags for the sklearnex infrastructure
119
+ to maintain the data framework, as the estimator can use it natively.
120
+
121
+ Parameters
122
+ ----------
123
+ class_or_str : oneDALEstimator subclass or str
124
+ Class which should enable data zero-copy support in sklearnex. By
125
+ default it will enable for sklearn versions >1.3. If the wrapper is
126
+ decorated with an argument, it must be a string defining the oldest
127
+ sklearn version where array API support begins.
128
+
129
+ Returns
130
+ -------
131
+ cls or wrapper : modified oneDALEstimator subclass or wrapper
132
+ Estimator class or wrapper.
133
+
134
+ Examples
135
+ --------
136
+ @enable_array_api # default array API support
137
+ class PCA():
138
+ ...
139
+
140
+ @enable_array_api("1.5") # array API support for sklearn > 1.5
141
+ class Ridge():
142
+ ...
143
+ """
144
+ if isinstance(class_or_str, str):
145
+ # enable array_api for the estimator for a given sklearn version str
146
+ if sklearn_check_version(class_or_str):
147
+ return _enable_array_api
148
+ else:
149
+ # do not apply the wrapper as it is not supported
150
+ return lambda x: x
151
+ else:
152
+ # default setting (apply array_api enablement for sklearn >=1.3)
153
+ return _enable_array_api(class_or_str)