Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cython compilation error with Cython>=3 and scikit-learn<1.2 #26858

Closed
opennog opened this issue Jul 19, 2023 · 14 comments
Closed

Cython compilation error with Cython>=3 and scikit-learn<1.2 #26858

opennog opened this issue Jul 19, 2023 · 14 comments

Comments

@opennog
Copy link

opennog commented Jul 19, 2023

Workaround for this issue

➡️ The most likely reason you are reading this issue is that you are using a version of scikit-learn that does not support cython 3.0

The solution is to pin cython to cython<3 in your environment and use pip install --no-build-isolation scikit-learn to install scikit-learn.

(edit by @betatim to make the solution more visible. Please don't add a comment to this issue if all you are saying is "I also have this problem".)

Note: at the time of writing (September 2023) scikit-learn>=1.2 compiles fine with Cython 3 (latest release is Cython 3.0.2) but this can change with Cython development.


Original issue description

When installing scikit-learn==0.23.2 in a docker I get now the following error. I was not getting it ~1month ago.

I can pip install newer scikit-learn versions (i.e., 1.3.0), however, given that there is no across version compatibility my models do not work.

Thus, I'd like to ask for support to see if you knew why scikit-learn==0.23.2 can not compile and, if possible, to overcome this limitation.

ERROR:

Building wheels for collected packages: scikit-learn, sklearn, pyclamd, bctpy, fire, fpdf, yattag, construct
  Building wheel for scikit-learn (pyproject.toml): started
  Building wheel for scikit-learn (pyproject.toml): finished with status 'error'
[91m  error: subprocess-exited-with-error
 
  × Building wheel for scikit-learn (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [694 lines of output]
      <string>:12: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
      Partial import of sklearn during the build process.
      C compiler: gcc -pthread -B /opt/conda/compiler_compat -Wno-unused-result -Wsign-compare -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /opt/conda/include -fPIC -O2 -isystem /opt/conda/include -fPIC
	 
      compile options: '-c'
      gcc: test_program.c
      gcc -pthread -B /opt/conda/compiler_compat objects/test_program.o -o test_program
      C compiler: gcc -pthread -B /opt/conda/compiler_compat -Wno-unused-result -Wsign-compare -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /opt/conda/include -fPIC -O2 -isystem /opt/conda/include -fPIC
	 
      compile options: '-c'
      extra options: '-fopenmp'
      gcc: test_program.c
      gcc -pthread -B /opt/conda/compiler_compat objects/test_program.o -o test_program -fopenmp
      Compiling sklearn/__check_build/_check_build.pyx because it changed.
      Compiling sklearn/preprocessing/_csr_polynomial_expansion.pyx because it changed.
      Compiling sklearn/cluster/_dbscan_inner.pyx because it changed.
      Compiling sklearn/cluster/_hierarchical_fast.pyx because it changed.
      Compiling sklearn/cluster/_k_means_fast.pyx because it changed.
      Compiling sklearn/cluster/_k_means_lloyd.pyx because it changed.
      Compiling sklearn/cluster/_k_means_elkan.pyx because it changed.
      Compiling sklearn/datasets/_svmlight_format_fast.pyx because it changed.
      Compiling sklearn/decomposition/_online_lda_fast.pyx because it changed.
      Compiling sklearn/decomposition/_cdnmf_fast.pyx because it changed.
      Compiling sklearn/ensemble/_gradient_boosting.pyx because it changed.
      Compiling sklearn/ensemble/_hist_gradient_boosting/_gradient_boosting.pyx because it changed.
      Compiling sklearn/ensemble/_hist_gradient_boosting/histogram.pyx because it changed.
      Compiling sklearn/ensemble/_hist_gradient_boosting/splitting.pyx because it changed.
      Compiling sklearn/ensemble/_hist_gradient_boosting/_binning.pyx because it changed.
      Compiling sklearn/ensemble/_hist_gradient_boosting/_predictor.pyx because it changed.
      Compiling sklearn/ensemble/_hist_gradient_boosting/_loss.pyx because it changed.
      Compiling sklearn/ensemble/_hist_gradient_boosting/common.pyx because it changed.
      Compiling sklearn/ensemble/_hist_gradient_boosting/utils.pyx because it changed.
      Compiling sklearn/feature_extraction/_hashing_fast.pyx because it changed.
      Compiling sklearn/manifold/_utils.pyx because it changed.
      Compiling sklearn/manifold/_barnes_hut_tsne.pyx because it changed.
      Compiling sklearn/metrics/cluster/_expected_mutual_info_fast.pyx because it changed.
      Compiling sklearn/metrics/_pairwise_fast.pyx because it changed.
      Compiling sklearn/neighbors/_ball_tree.pyx because it changed.
      Compiling sklearn/neighbors/_kd_tree.pyx because it changed.
      Compiling sklearn/neighbors/_dist_metrics.pyx because it changed.
      Compiling sklearn/neighbors/_typedefs.pyx because it changed.
      Compiling sklearn/neighbors/_quad_tree.pyx because it changed.
      Compiling sklearn/tree/_tree.pyx because it changed.
      Compiling sklearn/tree/_splitter.pyx because it changed.
      Compiling sklearn/tree/_criterion.pyx because it changed.
      Compiling sklearn/tree/_utils.pyx because it changed.
      Compiling sklearn/utils/sparsefuncs_fast.pyx because it changed.
      Compiling sklearn/utils/_cython_blas.pyx because it changed.
      Compiling sklearn/utils/arrayfuncs.pyx because it changed.
      Compiling sklearn/utils/murmurhash.pyx because it changed.
      Compiling sklearn/utils/graph_shortest_path.pyx because it changed.
      Compiling sklearn/utils/_fast_dict.pyx because it changed.
      Compiling sklearn/utils/_openmp_helpers.pyx because it changed.
      Compiling sklearn/utils/_seq_dataset.pyx because it changed.
      Compiling sklearn/utils/_weight_vector.pyx because it changed.
      Compiling sklearn/utils/_random.pyx because it changed.
      Compiling sklearn/utils/_logistic_sigmoid.pyx because it changed.
      Compiling sklearn/svm/_libsvm.pyx because it changed.
      Compiling sklearn/svm/_liblinear.pyx because it changed.
      Compiling sklearn/svm/_libsvm_sparse.pyx because it changed.
      Compiling sklearn/linear_model/_cd_fast.pyx because it changed.
      Compiling sklearn/linear_model/_sgd_fast.pyx because it changed.
      Compiling sklearn/linear_model/_sag_fast.pyx because it changed.
      Compiling sklearn/_isotonic.pyx because it changed.
      warning: sklearn/cluster/_dbscan_inner.pyx:17:5: Only extern functions can throw C++ exceptions.
      warning: sklearn/neighbors/_dist_metrics.pxd:19:64: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:29:65: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:38:73: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:42:73: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:65:51: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:68:52: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:75:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:77:67: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pxd:61:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pxd:62:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pxd:63:63: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pxd:85:72: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pxd:90:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:57:45: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:58:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:59:48: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:60:57: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:49:75: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:87:61: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:119:56: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:137:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:139:71: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:160:71: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:161:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:76:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:95:51: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:98:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:99:63: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:100:80: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/ensemble/_hist_gradient_boosting/splitting.pyx:18:0: The 'IF' statement is deprecated and will be removed in a future Cython version. Consider using runtime conditions or C macros instead. See https://github.com/cython/cython/issues/4310
      warning: sklearn/ensemble/_hist_gradient_boosting/splitting.pyx:270:12: The 'IF' statement is deprecated and will be removed in a future Cython version. Consider using runtime conditions or C macros instead. See https://github.com/cython/cython/issues/4310
      warning: sklearn/linear_model/_sgd_fast.pyx:30:0: The 'DEF' statement is deprecated and will be removed in a future Cython version. Consider using global variables, constants, and in-place literals instead. See https://github.com/cython/cython/issues/4310
      warning: sklearn/linear_model/_sgd_fast.pyx:31:0: The 'DEF' statement is deprecated and will be removed in a future Cython version. Consider using global variables, constants, and in-place literals instead. See https://github.com/cython/cython/issues/4310
      warning: sklearn/linear_model/_sgd_fast.pyx:32:0: The 'DEF' statement is deprecated and will be removed in a future Cython version. Consider using global variables, constants, and in-place literals instead. See https://github.com/cython/cython/issues/4310
      warning: sklearn/linear_model/_sgd_fast.pyx:33:0: The 'DEF' statement is deprecated and will be removed in a future Cython version. Consider using global variables, constants, and in-place literals instead. See https://github.com/cython/cython/issues/4310
      warning: sklearn/linear_model/_sgd_fast.pyx:36:0: The 'DEF' statement is deprecated and will be removed in a future Cython version. Consider using global variables, constants, and in-place literals instead. See https://github.com/cython/cython/issues/4310
      warning: sklearn/linear_model/_sgd_fast.pyx:37:0: The 'DEF' statement is deprecated and will be removed in a future Cython version. Consider using global variables, constants, and in-place literals instead. See https://github.com/cython/cython/issues/4310
      warning: sklearn/linear_model/_sgd_fast.pyx:38:0: The 'DEF' statement is deprecated and will be removed in a future Cython version. Consider using global variables, constants, and in-place literals instead. See https://github.com/cython/cython/issues/4310
      warning: sklearn/linear_model/_sgd_fast.pyx:39:0: The 'DEF' statement is deprecated and will be removed in a future Cython version. Consider using global variables, constants, and in-place literals instead. See https://github.com/cython/cython/issues/4310
      warning: sklearn/linear_model/_sgd_fast.pyx:40:0: The 'DEF' statement is deprecated and will be removed in a future Cython version. Consider using global variables, constants, and in-place literals instead. See https://github.com/cython/cython/issues/4310
      warning: sklearn/linear_model/_sgd_fast.pyx:41:0: The 'DEF' statement is deprecated and will be removed in a future Cython version. Consider using global variables, constants, and in-place literals instead. See https://github.com/cython/cython/issues/4310
      warning: sklearn/neighbors/_quad_tree.pxd:76:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:95:51: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:98:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:99:63: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:100:80: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_binary_tree.pxi:593:66: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_binary_tree.pxi:601:49: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_binary_tree.pxi:663:57: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_binary_tree.pxi:1211:58: The keyword 'nogil' should appear at the end of the function sig[0m[91mnature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_binary_tree.pxi:1220:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_binary_tree.pxi:1801:78: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_ball_tree.pyx:109:57: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_ball_tree.pyx:125:82: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_ball_tree.pyx:136:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:19:64: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:29:65: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:38:73: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:42:73: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:65:51: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:68:52: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:75:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:77:67: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
	 
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
	 
     		 # determine number of levels in the tree, and from this
     		 # the number of nodes in the tree.  This results in leaf nodes
     		 # with numbers of points between leaf_size and 2 * leaf_size
     		 self.n_levels = np.log2(fmax(1, (n_samples - 1) / self.leaf_size)) + 1
     		 self.n_nodes = (2 ** self.n_levels) - 1
                                         		 ^
      ------------------------------------------------------------
	 
      sklearn/neighbors/_binary_tree.pxi:1075:44: Cannot assign type 'double' to 'ITYPE_t'
      Traceback (most recent call last):
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1325, in cythonize_one_helper
 		 return cythonize_one(*m)
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1301, in cythonize_one
 		 raise CompileError(None, pyx_file)
      Cython.Compiler.Errors.CompileError: sklearn/neighbors/_ball_tree.pyx
      warning: sklearn/neighbors/_dist_metrics.pxd:19:64: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:29:65: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:38:73: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:42:73: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:65:51: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:68:52: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:75:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:77:67: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:296:51: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:304:52: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:336:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:340:67: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:417:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:421:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:424:75: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:427:74: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:453:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:465:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:468:75: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:471:74: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:494:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:515:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:546:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:554:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:557:75: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:560:74: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:601:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:613:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:616:75: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:619:74: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:666:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:686:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:689:75: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:692:74: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:715:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:737:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:760:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:786:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:816:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:840:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:865:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:890:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:914:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:938:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:962:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:990:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:1000:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:1009:75: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:1012:74: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pyx:1109:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_binary_tree.pxi:593:66: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_binary_tree.pxi:601:49: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_binary_tree.pxi:663:57: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_binary_tree.pxi:1211:58: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_binary_tree.pxi:1220:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_binary_tree.pxi:1801:78: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_kd_tree.pyx:91:51: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_kd_tree.pyx:152:82: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:19:64: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:29:65: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:38:73: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:42:73: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:65:51: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:68:52: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:75:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_dist_metrics.pxd:77:67: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
	 
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
	 
     		 # determine number of levels in the tree, and from this
     		 # the number of nodes in the tree.  This results in leaf nodes
     		 # with numbers of points between leaf_size and 2 * leaf_size
     		 self.n_levels = np.log2(fmax(1, (n_samples - 1) / self.leaf_size)) + 1
     		 self.n_nodes = (2 ** self.n_levels) - 1
                                         		 ^
      ------------------------------------------------------------
	 
      sklearn/neighbors/_binary_tree.pxi:1075:44: Cannot assign type 'double' to 'ITYPE_t'
      Traceback (most recent call last):
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1325, in cythonize_one_helper
 		 return cythonize_one(*m)
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1301, in cythonize_one
 		 raise CompileError(None, pyx_file)
      Cython.Compiler.Errors.CompileError: sklearn/neighbors/_kd_tree.pyx
      warning: sklearn/neighbors/_quad_tree.pxd:76:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:95:51: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:98:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:99:63: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:100:80: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pyx:137:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pyx:326:51: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pyx:485:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pyx:579:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pyx:591:70: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:49:75: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:87:61: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:119:56: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:137:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:139:71: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:160:71: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:161:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pxd:61:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pxd:62:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pxd:63:63: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pxd:85:72: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pxd:90:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:57:45: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:58:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:59:48: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:60:57: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
	 
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
         		 raise ValueError(
             		 "QuadTree is incoherent. Size={} but found {} points "
             		 "in children."
             		 .format(self.n_points, self.cells[0].cumulative_size))
	 
 		 cdef long summarize(self, DTYPE_t[3] point, DTYPE_t* results,
      		 ^
      ------------------------------------------------------------
	 
      sklearn/neighbors/_quad_tree.pyx:392:9: Signature not compatible with previous declaration
	 
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
                                        		 ) nogil
 		 cdef SIZE_t _select_child(self, DTYPE_t[3] point, Cell* cell) nogil
 		 cdef bint _is_duplicate(self, DTYPE_t[3] point1, DTYPE_t[3] point2) nogil
	 
 		 # Create a summary of the Tree compare to a query point
 		 cdef long summarize(self, DTYPE_t[3] point, DTYPE_t* results,
                    		 ^
      ------------------------------------------------------------
	 
      sklearn/neighbors/_quad_tree.pxd:84:23: Previous declaration is here
	 
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
 		 def __cinit__(self, int n_dimensions, int verbose):
     		 """Constructor."""
     		 # Parameters of the tree
     		 self.n_dimensions = n_dimensions
     		 self.verbose = verbose
     		 self.n_cells_per_cell = 2 ** self.n_dimensions
                               		 ^
      ------------------------------------------------------------
	 
      sklearn/neighbors/_quad_tree.pyx:77:34: Cannot assign type 'double' to 'SIZE_t'
	 
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
     		 arr = PyArray_NewFromDescr(<PyTypeObject *> np.ndarray,
                                		 CELL_DTYPE, 1, shape,
                                		 strides, <void*> self.cells,
                                		 np.NPY_DEFAULT, None)
     		 Py_INCREF(self)
     		 arr.base = <PyObject*> self
        		 ^
      ------------------------------------------------------------
	 
      sklearn/neighbors/_quad_tree.pyx:576:11: Assignment to a read-only property
      Traceback (most recent call last):
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1325, in cythonize_one_helper
 		 return cythonize_one(*m)
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1301, in cythonize_one
 		 raise CompileError(None, pyx_file)
      Cython.Compiler.Errors.CompileError: sklearn/neighbors/_quad_tree.pyx
	 
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
     		 free_problem(problem)
     		 free_parameter(param)
     		 raise ValueError(error_msg)
	 
 		 cdef BlasFunctions blas_functions
 		 blas_functions.dot = _dot[double]
                          		 ^
      ------------------------------------------------------------
	 
      sklearn/svm/_liblinear.pyx:55:29: Cannot assign type 'double (int, double *, int, double *, int) except * nogil' to 'dot_func'
	 
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
     		 free_parameter(param)
     		 raise ValueError(error_msg)
	 
 		 cdef BlasFunctions blas_functions
 		 blas_functions.dot = _dot[double]
 		 blas_functions.axpy = _axpy[double]
                            		 ^
      ------------------------------------------------------------
	 
      sklearn/svm/_liblinear.pyx:56:31: Cannot assign type 'void (int, double, double *, int, double *, int) except * nogil' to 'axpy_func'
	 
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
     		 raise ValueError(error_msg)
	 
 		 cdef BlasFunctions blas_functions
 		 blas_functions.dot = _dot[double]
 		 blas_functions.axpy = _axpy[double]
 		 blas_functions.scal = _scal[double]
                            		 ^
      ------------------------------------------------------------
	 
      sklearn/svm/_liblinear.pyx:57:31: Cannot assign type 'void (int, double, double *, int) except * nogil' to 'scal_func'
	 
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
	 
 		 cdef BlasFunctions blas_functions
 		 blas_functions.dot = _dot[double]
 		 blas_functions.axpy = _axpy[double]
 		 blas_functions.scal = _scal[double]
 		 blas_functions.nrm2 = _nrm2[double]
                            		 ^
      ------------------------------------------------------------
	 
      sklearn/svm/_liblinear.pyx:58:31: Cannot assign type 'double (int, double *, int) except * nogil' to 'nrm2_func'
      Traceback (most recent call last):
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1325, in cythonize_one_helper
 		 return cythonize_one(*m)
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1301, in cythonize_one
 		 raise CompileError(None, pyx_file)
      Cython.Compiler.Errors.CompileError: sklearn/svm/_liblinear.pyx
      warning: sklearn/tree/_criterion.pxd:57:45: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:58:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:59:48: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:60:57: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pxd:61:68: The keyword 'nogil' [0m[91mshould appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pxd:62:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pxd:63:63: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pxd:85:72: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pxd:90:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pyx:56:45: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pyx:82:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pyx:90:48: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pyx:97:57: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pyx:281:76: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pyx:346:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pyx:373:48: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pyx:400:57: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pyx:742:45: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pyx:783:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pyx:794:48: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pyx:805:57: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pyx:1026:45: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pyx:1074:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pyx:1106:48: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pyx:1135:57: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:49:75: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:87:61: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:119:56: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:137:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:139:71: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:160:71: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:161:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:76:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:95:51: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:98:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:99:63: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:100:80: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pxd:85:72: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pxd:90:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:57:45: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:58:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:59:48: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:60:57: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pxd:61:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pxd:62:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pxd:63:63: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pyx:188:72: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pyx:218:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pyx:285:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pyx:601:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pyx:1119:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pyx:1348:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:49:75: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:87:61: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:119:56: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:137:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:139:71: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:160:71: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:161:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:76:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:95:51: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:98:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:99:63: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:100:80: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
	 
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
 		 if not is_samples_sorted[0]:
     		 n_samples = end - start
     		 memcpy(sorted_samples + start, samples + start,
            		 n_samples * sizeof(SIZE_t))
     		 qsort(sorted_samples + start, n_samples, sizeof(SIZE_t),
           		 compare_SIZE_t)
           		 ^
      ------------------------------------------------------------
	 
      sklearn/tree/_splitter.pyx:1056:14: Cannot assign type 'int (const void *, const void *) except? -1 nogil' to 'int (*)(const void *, const void *) noexcept nogil'
      Traceback (most recent call last):
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1325, in cythonize_one_helper
 		 return cythonize_one(*m)
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1301, in cythonize_one
 		 raise CompileError(None, pyx_file)
      Cython.Compiler.Errors.CompileError: sklearn/tree/_splitter.pyx
      warning: sklearn/tree/_tree.pxd:61:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pxd:62:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pxd:63:63: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pxd:85:72: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pxd:90:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:57:45: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:58:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:59:48: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:60:57: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pyx:284:71: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pyx:433:76: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pyx:683:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pyx:695:70: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pyx:729:73: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:49:75: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:87:61: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:119:56: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:137:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:139:71: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:160:71: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:161:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:76:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:95:51: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:98:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:99:63: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:100:80: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
	 
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
	 
     		 # Initial capacity
     		 cdef int init_capacity
	 
     		 if tree.max_depth <= 10:
         		 init_capacity = (2 ** (tree.max_depth + 1)) - 1
                                                     		 ^
      ------------------------------------------------------------
	 
      sklearn/tree/_tree.pyx:162:56: Cannot assign type 'double' to 'int'
	 
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
     		 shape[1] = <np.npy_intp> self.n_outputs
     		 shape[2] = <np.npy_intp> self.max_n_classes
     		 cdef np.ndarray arr
     		 arr = np.PyArray_SimpleNewFromData(3, shape, np.NPY_DOUBLE, self.value)
     		 Py_INCREF(self)
     		 arr.base = <PyObject*> self
        		 ^
      ------------------------------------------------------------
	 
      sklearn/tree/_tree.pyx:1103:11: Assignment to a read-only property
	 
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
     		 arr = PyArray_NewFromDescr(<PyTypeObject *> np.ndarray,
                                		 <np.dtype> NODE_DTYPE, 1, shape,
                                		 strides, <void*> self.nodes,
                                		 np.NPY_DEFAULT, None)
     		 Py_INCREF(self)
     		 arr.base = <PyObject*> self
        		 ^
      ------------------------------------------------------------
	 
      sklearn/tree/_tree.pyx:1124:11: Assignment to a read-only property
      Traceback (most recent call last):
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1325, in cythonize_one_helper
 		 return cythonize_one(*m)
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1301, in cythonize_one
 		 raise CompileError(None, pyx_file)
      Cython.Compiler.Errors.CompileError: sklearn/tree/_tree.pyx
      warning: sklearn/tree/_utils.pxd:49:75: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:87:61: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:119:56: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:137:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:139:71: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:160:71: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pxd:161:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pxd:61:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pxd:62:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_tree.pxd:63:63: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pxd:85:72: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_splitter.pxd:90:68: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:57:45: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:58:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:59:48: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_criterion.pxd:60:57: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:76:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:95:51: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:98:59: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:99:63: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/neighbors/_quad_tree.pxd:100:80: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pyx:29:75: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pyx:114:61: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pyx:230:56: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pyx:318:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pyx:335:71: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pyx:493:40: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: sklearn/tree/_utils.pyx:507:71: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
	 
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
     		 dec(end)
     		 # Construct our arguments
     		 cdef pair[ITYPE_t, DTYPE_t] args
     		 args.first = key
     		 args.second = value
     		 self.my_map.insert(end, args)
                        		 ^
      ------------------------------------------------------------
	 
      sklearn/utils/_fast_dict.pyx:138:27: Cannot assign type 'iterator' to 'const_iterator'
      Traceback (most recent call last):
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1325, in cythonize_one_helper
 		 return cythonize_one(*m)
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1301, in cythonize_one
 		 raise CompileError(None, pyx_file)
      Cython.Compiler.Errors.CompileError: sklearn/utils/_fast_dict.pyx
      warning: sklearn/utils/_openmp_helpers.pyx:1:0: The 'IF' statement is deprecated and will be removed in a future Cython version. Consider using runtime conditions or C macros instead. See https://github.com/cython/cython/issues/4310
      warning: sklearn/utils/_openmp_helpers.pyx:44:4: The 'IF' statement is deprecated and will be removed in a future Cython version. Consider using runtime conditions or C macros instead. See https://github.com/cython/cython/issues/4310
      [ 1/51] Cythonizing sklearn/__check_build/_check_build.pyx
      [ 2/51] Cythonizing sklearn/_isotonic.pyx
      [ 3/51] Cythonizing sklearn/cluster/_dbscan_inner.pyx
      [ 4/51] Cythonizing sklearn/cluster/_hierarchical_fast.pyx
      [ 5/51] Cythonizing sklearn/cluster/_k_means_elkan.pyx
      [ 6/51] Cythonizing sklearn/cluster/_k_means_fast.pyx
      [ 7/51] Cythonizing sklearn/cluster/_k_means_lloyd.pyx
      [ 8/51] Cythonizing sklearn/datasets/_svmlight_format_fast.pyx
      [ 9/51] Cythonizing sklearn/decomposition/_cdnmf_fast.pyx
      [10/51] Cythonizing sklearn/decomposition/_online_lda_fast.pyx
      [11/51] Cythonizing sklearn/ensemble/_gradient_boosting.pyx
      [12/51] Cythonizing sklearn/ensemble/_hist_gradient_boosting/_binning.pyx
      [13/51] Cythonizing sklearn/ensemble/_hist_gradient_boosting/_gradient_boosting.pyx
      [14/51] Cythonizing sklearn/ensemble/_hist_gradient_boosting/_loss.pyx
      [15/51] Cythonizing sklearn/ensemble/_hist_gradient_boosting/_predictor.pyx
      [16/51] Cythonizing sklearn/ensemble/_hist_gradient_boosting/common.pyx
      [17/51] Cythonizing sklearn/ensemble/_hist_gradient_boosting/histogram.pyx
      [18/51] Cythonizing sklearn/ensemble/_hist_gradient_boosting/splitting.pyx
      [19/51] Cythonizing sklearn/ensemble/_hist_gradient_boosting/utils.pyx
      [20/51] Cythonizing sklearn/feature_extraction/_hashing_fast.pyx
      [21/51] Cythonizing sklearn/linear_model/_cd_fast.pyx
      [22/51] Cythonizing sklearn/linear_model/_sag_fast.pyx
      [23/51] Cythonizing sklearn/linear_model/_sgd_fast.pyx
      [24/51] Cythonizing sklearn/manifold/_barnes_hut_tsne.pyx
      [25/51] Cythonizing sklearn/manifold/_utils.pyx
      [26/51] Cythonizing sklearn/metrics/_pairwise_fast.pyx
      [27/51] Cythonizing sklearn/metrics/cluster/_expected_mutual_info_fast.pyx
      [28/51] Cythonizing sklearn/neighbors/_ball_tree.pyx
      [29/51] Cythonizing sklearn/neighbors/_dist_metrics.pyx
      [30/51] Cythonizing sklearn/neighbors/_kd_tree.pyx
      [31/51] Cythonizing sklearn/neighbors/_quad_tree.pyx
      [32/51] Cythonizing sklearn/neighbors/_typedefs.pyx
      [33/51] Cythonizing sklearn/preprocessing/_csr_polynomial_expansion.pyx
      [34/51] Cythonizing sklearn/svm/_liblinear.pyx
      [35/51] Cythonizing sklearn/svm/_libsvm.pyx
      [36/51] Cythonizing sklearn/svm/_libsvm_sparse.pyx
      [37/51] Cythonizing sklearn/tree/_criterion.pyx
      [38/51] Cythonizing sklearn/tree/_splitter.pyx
      [39/51] Cythonizing sklearn/tree/_tree.pyx
      [40/51] Cythonizing sklearn/tree/_utils.pyx
      [41/51] Cythonizing sklearn/utils/_cython_blas.pyx
      [42/51] Cythonizing sklearn/utils/_fast_dict.pyx
      [43/51] Cythonizing sklearn/utils/_logistic_sigmoid.pyx
      [44/51] Cythonizing sklearn/utils/_openmp_helpers.pyx
      [45/51] Cythonizing sklearn/utils/_random.pyx
      [46/51] Cythonizing sklearn/utils/_seq_dataset.pyx
      [47/51] Cythonizing sklearn/utils/_weight_vector.pyx
      [48/51] Cythonizing sklearn/utils/arrayfuncs.pyx
      [49/51] Cythonizing sklearn/utils/graph_shortest_path.pyx
      [50/51] Cythonizing sklearn/utils/murmurhash.pyx
      [51/51] Cythonizing sklearn/utils/spar[0m[91msefuncs_fast.pyx
      multiprocessing.pool.RemoteTraceback:
      """
      Traceback (most recent call last):
   	 File "/opt/conda/lib/python3.9/multiprocessing/pool.py", line 125, in worker
 		 result = (True, func(*args, **kwds))
   	 File "/opt/conda/lib/python3.9/multiprocessing/pool.py", line 48, in mapstar
 		 return list(map(*args))
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1325, in cythonize_one_helper
 		 return cythonize_one(*m)
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1301, in cythonize_one
 		 raise CompileError(None, pyx_file)
      Cython.Compiler.Errors.CompileError: sklearn/neighbors/_ball_tree.pyx
      """
	 
      The above exception was the direct cause of the following exception:
	 
      Traceback (most recent call last):
   	 File "/opt/conda/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 363, in <module>
 		 main()
   	 File "/opt/conda/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 345, in main
 		 json_out['return_val'] = hook(**hook_input['kwargs'])
   	 File "/opt/conda/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 261, in build_wheel
 		 return _build_backend().build_wheel(wheel_directory, config_settings,
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 416, in build_wheel
 		 return self._build_with_temp_dir(['bdist_wheel'], '.whl',
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 401, in _build_with_temp_dir
 		 self.run_setup()
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 487, in run_setup
 		 super(_BuildMetaLegacyBackend,
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 338, in run_setup
 		 exec(code, locals())
   	 File "<string>", line 304, in <module>
   	 File "<string>", line 300, in setup_package
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/numpy/distutils/core.py", line 137, in setup
 		 config = configuration()
   	 File "<string>", line 183, in configuration
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/numpy/distutils/misc_util.py", line 1033, in add_subpackage
 		 config_list = self.get_subpackage(subpackage_name, subpackage_path,
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/numpy/distutils/misc_util.py", line 999, in get_subpackage
 		 config = self._get_configuration_from_setup_py(
   	 File "/tmp/pip-build-env-dtpfhb6q/overlay/lib/python3.9/site-packages/numpy/distutils/misc_util.py", 

Versions
scikit-learn==0.23.2
python 3.9
I can provide other versions if needed.

@github-actions github-actions bot added the Needs Triage Issue requires triage label Jul 19, 2023
@betatim
Copy link
Member

betatim commented Jul 19, 2023

We don't typically support such old versions.

My guess is that you have cython 3.0 installed now in your docker image and old versions of scikit-learn do not work with this new version of cython (it was released a few days ago). I'd check which version you have installed and if it is indeed 3.0.0, then manually specify that you want an older version of cython installed when you install your python packages.

@adrinjalali
Copy link
Member

We don't support old versions. If you want to use them, you can install old python and old dependencies and it would install.

@betatim
Copy link
Member

betatim commented Jul 20, 2023

I've pinned this issue in the hopes that it gets found more easily by people. Since cython 3.0 there are a lot of people arriving here reporting that they can't build old versions.

@ltsstar
Copy link

ltsstar commented Jul 20, 2023

I'm encountering the same problem using python 3.11 when trying to install scikit-learn==1.0.2
Using python 3.10 works.

@opennog
Copy link
Author

opennog commented Jul 20, 2023

In my case I've tried with the Cython I had before (0.29.30) and still does not work. So it must have been something else that I haven't been able to find yet.
If anyone finds out, it would be nice if he/she could share.

Thanks

@gtownend
Copy link

gtownend commented Jul 20, 2023

@opennog we also had this. In our case it is because we are using poetry and each package is built it in it's own venv. So even though we have pinned the Cython version in the main venv, scikit-learn doesn't use that version of Cython when it's built. It's using Cython 3.0.0 I guess because this just specifies greater than 0.29.33

Edit: To give more of a solution - the reason it still didn't work is isolated builds and inaccurate build requirements. You should be able to get around it using --no-build-isolation or --no-use-pep517 with pip install but you'll need to make sure you've installed the build dependencies for scikit-learn.

@bulletvullet
Copy link

agree with @gtownend
In my case, I managed to make it work with:

pip install Cython==0.29.36
pip install scikit-learn==0.23 --no-build-isolation

In this case, pip uses not a runtime package but local Cython to compile.
@opennog

@opennog
Copy link
Author

opennog commented Jul 21, 2023

yes that indeed solved the issue. Thank you very much!

@carl-offerfit
Copy link

I have this problem for scikit-learn==1.1.3 (required by other dependencies.) Using Python 3.8.13.

@lesteve lesteve changed the title Cannot compile/install scikit-learn==0.23.2 Cython compilation error with Cython>=3 and scikit-learn<1.2 Sep 6, 2023
Mikailo added a commit to mescobrad-project/data-analytics-and-visualisation-backend that referenced this issue Sep 13, 2023
-Fixed actigraphy bugs
-Added and fixed requirement bug due to cython upgrade scikit-learn/scikit-learn#26858 , have made a temporary fix in docker file to install some packages earlier, must be fixed eventually
@alerque
Copy link

alerque commented Sep 27, 2023

The current release (1.3.1) has regressed so the build says it requires Cython<3 again. This is a problem for distro packaging that only includes the latest version, such as on Arch Linux.

@adrinjalali
Copy link
Member

@alerque we have significant performance regressions with Cython>=3, hence the constraint till those issues are fixed on our and Cython's side.

@jjerphan
Copy link
Member

@alerque: the regression with Cython 3 have been resolved and Cython 3 is now used by default since the merge of #27627.

Moreover 1.4.1rc0 is built using Cython 3 thanks to conda-forge/scikit-learn-feedstock#245.

@jjerphan jjerphan unpinned this issue Feb 1, 2024
@jjerphan jjerphan pinned this issue Feb 1, 2024
@lorentzenchr lorentzenchr unpinned this issue Feb 6, 2024
@mabuimo
Copy link

mabuimo commented Feb 10, 2024

Hi, I can't install pytorch-forecasting in Python 3.11 under Windows 11. In Python 3.10 it works fine.

conda create --name pytorchfcst310 python=3.10
conda activate pytorchfcst310
pip install pytorch-forecasting
python --version # Python 3.10.13
Cython --version # Cython version 3.0.8

This is the line that fails to compile in Python 3.11
[55/55] Cythonizing sklearn\utils\sparsefuncs_fast.pyx

@alerque
Copy link

alerque commented Feb 10, 2024

@mabuimo Clearly that is a different issue than the one being discussed here. Please open a new issue. Appending your new issue to this old one that is closed both gets no triage/diagnosis for your issue and annoys all the people subscribed to the old ones for unrelated reasons.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants