Circular import of _quad_tree ?

### Describe the bug

Cannot run pytest on the latest development version, when collecting the tests:
```python
AttributeError: partially initialized module 'sklearn.neighbors._quad_tree' from '/Users/abaker/scikit-learn/build/cp313/sklearn/neighbors/_quad_tree.cpython-313-darwin.so' has no attribute '__pyx_capi__' (most likely due to a circular import)
```

### Steps/Code to Reproduce

```python
from sklearn.neighbors import _quad_tree
```

### Expected Results

No error.

### Actual Results

```python
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[4], [line 1](vscode-notebook-cell:?execution_count=4&line=1)
----> [1](vscode-notebook-cell:?execution_count=4&line=1) from sklearn.neighbors import _quad_tree

File ~/scikit-learn/sklearn/neighbors/_quad_tree.pyx:1, in init sklearn.neighbors._quad_tree()
----> [1](https://file+.vscode-resource.vscode-cdn.net/Users/abaker/scikit-learn/~/scikit-learn/sklearn/neighbors/_quad_tree.pyx:1) # Authors: The scikit-learn developers
      2 # SPDX-License-Identifier: BSD-3-Clause
      3 

File ~/scikit-learn/sklearn/tree/__init__.py:6
      1 """Decision tree based models for classification and regression."""
      3 # Authors: The scikit-learn developers
      4 # SPDX-License-Identifier: BSD-3-Clause
----> [6](https://file+.vscode-resource.vscode-cdn.net/Users/abaker/scikit-learn/~/scikit-learn/sklearn/tree/__init__.py:6) from sklearn.tree._classes import (
      7     BaseDecisionTree,
      8     DecisionTreeClassifier,
      9     DecisionTreeRegressor,
     10     ExtraTreeClassifier,
     11     ExtraTreeRegressor,
     12 )
     13 from sklearn.tree._export import export_graphviz, export_text, plot_tree
     15 __all__ = [
     16     "BaseDecisionTree",
     17     "DecisionTreeClassifier",
   (...)     23     "plot_tree",
     24 ]

File ~/scikit-learn/sklearn/tree/_classes.py:27
     16 from scipy.sparse import issparse
     18 from sklearn.base import (
     19     BaseEstimator,
     20     ClassifierMixin,
   (...)     25     is_classifier,
     26 )
---> [27](https://file+.vscode-resource.vscode-cdn.net/Users/abaker/scikit-learn/~/scikit-learn/sklearn/tree/_classes.py:27) from sklearn.tree import _criterion, _splitter, _tree
     28 from sklearn.tree._criterion import Criterion
     29 from sklearn.tree._splitter import Splitter

File ~/scikit-learn/sklearn/tree/_criterion.pyx:1, in init sklearn.tree._criterion()
----> [1](https://file+.vscode-resource.vscode-cdn.net/Users/abaker/scikit-learn/~/scikit-learn/sklearn/tree/_criterion.pyx:1) # Authors: The scikit-learn developers
      2 # SPDX-License-Identifier: BSD-3-Clause
      3 

File ~/scikit-learn/sklearn/tree/_splitter.pyx:1, in init sklearn.tree._splitter()
----> [1](https://file+.vscode-resource.vscode-cdn.net/Users/abaker/scikit-learn/~/scikit-learn/sklearn/tree/_splitter.pyx:1) """Splitting algorithms in the construction of a tree.
      2 
      3 This module contains the main splitting algorithms for constructing a tree.

File ~/scikit-learn/sklearn/tree/_tree.pyx:1, in init sklearn.tree._tree()
----> [1](https://file+.vscode-resource.vscode-cdn.net/Users/abaker/scikit-learn/~/scikit-learn/sklearn/tree/_tree.pyx:1) # Authors: The scikit-learn developers
      2 # SPDX-License-Identifier: BSD-3-Clause
      3 

File ~/scikit-learn/sklearn/tree/_utils.pyx:1, in init sklearn.tree._utils()
----> [1](https://file+.vscode-resource.vscode-cdn.net/Users/abaker/scikit-learn/~/scikit-learn/sklearn/tree/_utils.pyx:1) # Authors: The scikit-learn developers
      2 # SPDX-License-Identifier: BSD-3-Clause
      3 

AttributeError: partially initialized module 'sklearn.neighbors._quad_tree' from '/Users/abaker/scikit-learn/build/cp313/sklearn/neighbors/_quad_tree.cpython-313-darwin.so' has no attribute '__pyx_capi__' (most likely due to a circular import
```


### Versions

```shell
System:
    python: 3.13.5 | packaged by conda-forge | (main, Jun 16 2025, 08:24:05) [Clang 18.1.8 ]
executable: /Users/abaker/miniforge3/envs/sklearn-dev/bin/python
   machine: macOS-14.5-arm64-arm-64bit-Mach-O

Python dependencies:
      sklearn: 1.8.dev0
          pip: 25.2
   setuptools: 80.9.0
        numpy: 2.3.2
        scipy: 1.16.1
       Cython: 3.1.3
       pandas: 2.3.2
   matplotlib: 3.10.5
       joblib: 1.5.1
threadpoolctl: 3.6.0

Built with OpenMP: True

threadpoolctl info:
       user_api: blas
   internal_api: openblas
    num_threads: 8
         prefix: libopenblas
       filepath: /Users/abaker/miniforge3/envs/sklearn-dev/lib/libopenblas.0.dylib
        version: 0.3.30
threading_layer: openmp
   architecture: VORTEX

       user_api: openmp
   internal_api: openmp
    num_threads: 8
         prefix: libomp
       filepath: /Users/abaker/miniforge3/envs/sklearn-dev/lib/libomp.dylib
        version: None
```

COMMENT:
I had the same issue this morning, it was reported by others as well I think. A clean + pip install fixes it. According to @lesteve it's probably a weird meson issue that is not worth investigating.

Labels: Bug