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

Bump hyperspy>1.7.5 to ensure 3.12 compatibility #682

Open
TLCFEM opened this issue Sep 13, 2024 · 10 comments
Open

Bump hyperspy>1.7.5 to ensure 3.12 compatibility #682

TLCFEM opened this issue Sep 13, 2024 · 10 comments
Labels
maintenance This relates to package maintenance
Milestone

Comments

@TLCFEM
Copy link

TLCFEM commented Sep 13, 2024

hyperspy==1.7.5 cannot be compiled in 3.12.

hyperspy==1.7.6 can be compiled and installed.

Maybe bump the version so that downstream packages can pick a compatible version.

@hakonanes
Copy link
Member

Hi @TLCFEM, the HyperSpy version range in our config file is:

"hyperspy >= 1.7.3, < 2",

This means that you should be able to install kikuchipy v0.10 with HyperSpy 1.7.6. Are you not able to? If so, can you print your error output here?

@TLCFEM
Copy link
Author

TLCFEM commented Sep 21, 2024

Hi @TLCFEM, the HyperSpy version range in our config file is:

"hyperspy >= 1.7.3, < 2",

This means that you should be able to install kikuchipy v0.10 with HyperSpy 1.7.6. Are you not able to? If so, can you print your error output here?

Resolver may pick a version that satisfies constraint but fail to install (<1.7.6).

@hakonanes
Copy link
Member

Hm, OK, that's unfortunate. Can you paste the log you get in this situation?

@TLCFEM
Copy link
Author

TLCFEM commented Sep 21, 2024

The dependency resolver could pick a version, say 1.7.5, due to other constraints in the downstream projects, not necessarily the exact hyperspy package. But eventually it ends up to pip install hyperspy==1.7.5 in 3.12.

Then you get.

      hyperspy/io_plugins/unbcf_fast.c: In function ‘__pyx_pf_8hyperspy_10io_plugins_10unbcf_fast_parse_to_numpy’:
      hyperspy/io_plugins/unbcf_fast.c:7318:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       7318 |   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 319, __pyx_L1_error)
            |   ^~~~~~~~~~~~~~~~~~~~~~~~~
      In file included from /home/theodore/.pyenv/versions/3.12.6/include/python3.12/dictobject.h:90,
                       from /home/theodore/.pyenv/versions/3.12.6/include/python3.12/Python.h:64,
                       from hyperspy/io_plugins/unbcf_fast.c:19:
      /home/theodore/.pyenv/versions/3.12.6/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      hyperspy/io_plugins/unbcf_fast.c:7367:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       7367 |   __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 321, __pyx_L1_error)
            |   ^~~~~~~~~~~~~~~~~~~~~~~~~
      /home/theodore/.pyenv/versions/3.12.6/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      hyperspy/io_plugins/unbcf_fast.c:7423:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       7423 |   __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 324, __pyx_L1_error)
            |   ^~~~~~~~~~~~~~~~~~~~~~~~~
      /home/theodore/.pyenv/versions/3.12.6/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      hyperspy/io_plugins/unbcf_fast.c:7479:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       7479 |   __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 327, __pyx_L1_error)
            |   ^~~~~~~~~~~~~~~~~~~~~~~~~
      /home/theodore/.pyenv/versions/3.12.6/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__pyx_pf___pyx_MemviewEnum___reduce_cython__’:
      hyperspy/io_plugins/unbcf_fast.c:9726:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       9726 |     __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 13, __pyx_L1_error)
            |     ^~~~~~~~~~~~~~~~~~~~~~~~~
      /home/theodore/.pyenv/versions/3.12.6/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      hyperspy/io_plugins/unbcf_fast.c:9772:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       9772 |     __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 15, __pyx_L1_error)
            |     ^~~~~~~~~~~~~~~~~~~~~~~~~
      /home/theodore/.pyenv/versions/3.12.6/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__pyx_memview_slice’:
      hyperspy/io_plugins/unbcf_fast.c:14909:3: warning: ‘Py_OptimizeFlag’ is deprecated [-Wdeprecated-declarations]
      14909 |   if (unlikely(!Py_OptimizeFlag)) {
            |   ^~
      In file included from /home/theodore/.pyenv/versions/3.12.6/include/python3.12/Python.h:48:
      /home/theodore/.pyenv/versions/3.12.6/include/python3.12/cpython/pydebug.h:13:37: note: declared here
         13 | Py_DEPRECATED(3.12) PyAPI_DATA(int) Py_OptimizeFlag;
            |                                     ^~~~~~~~~~~~~~~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__pyx_pymod_exec_unbcf_fast’:
      hyperspy/io_plugins/unbcf_fast.c:22375:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
      22375 |   __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
            |   ^~~~~~~~~~~~~~~~~~~~~~~~~
      /home/theodore/.pyenv/versions/3.12.6/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__Pyx_Raise’:
      hyperspy/io_plugins/unbcf_fast.c:23089:34: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘curexc_traceback’
      23089 |         PyObject* tmp_tb = tstate->curexc_traceback;
            |                                  ^~
      hyperspy/io_plugins/unbcf_fast.c:23092:19: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘curexc_traceback’
      23092 |             tstate->curexc_traceback = tb;
            |                   ^~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__Pyx_get_tp_dict_version’:
      hyperspy/io_plugins/unbcf_fast.c:23575:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
      23575 |     return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
            |     ^~~~~~
      /home/theodore/.pyenv/versions/3.12.6/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__Pyx_get_object_dict_version’:
      hyperspy/io_plugins/unbcf_fast.c:23587:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
      23587 |     return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
            |     ^~~~~~
      /home/theodore/.pyenv/versions/3.12.6/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__Pyx_object_dict_version_matches’:
      hyperspy/io_plugins/unbcf_fast.c:23591:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
      23591 |     if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
            |     ^~
      /home/theodore/.pyenv/versions/3.12.6/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__Pyx__GetModuleGlobalName’:
      hyperspy/io_plugins/unbcf_fast.c:23608:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
      23608 |     __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
            |     ^~~~~~~~~~~~~~~~~~~~~~~
      /home/theodore/.pyenv/versions/3.12.6/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__Pyx_PyUnicode_Equals’:
      hyperspy/io_plugins/unbcf_fast.c:570:51: warning: implicit declaration of function ‘_PyUnicode_Ready’; did you mean ‘PyUnicode_READY’? [-Wimplicit-function-declaration]
        570 |                                               0 : _PyUnicode_Ready((PyObject *)(op)))
            |                                                   ^~~~~~~~~~~~~~~~
      hyperspy/io_plugins/unbcf_fast.c:951:43: note: in definition of macro ‘unlikely’
        951 |   #define unlikely(x) __builtin_expect(!!(x), 0)
            |                                           ^
      hyperspy/io_plugins/unbcf_fast.c:23896:22: note: in expansion of macro ‘__Pyx_PyUnicode_READY’
      23896 |         if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
            |                      ^~~~~~~~~~~~~~~~~~~~~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__Pyx_PyInt_AddObjC’:
      hyperspy/io_plugins/unbcf_fast.c:24458:51: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      24458 |         const digit* digits = ((PyLongObject*)op1)->ob_digit;
            |                                                   ^~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__Pyx_CLineForTraceback’:
      hyperspy/io_plugins/unbcf_fast.c:24812:9: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
      24812 |         __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
            |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /home/theodore/.pyenv/versions/3.12.6/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      hyperspy/io_plugins/unbcf_fast.c:24812:9: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
      24812 |         __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
            |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /home/theodore/.pyenv/versions/3.12.6/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__Pyx_PyInt_As_int’:
      hyperspy/io_plugins/unbcf_fast.c:26039:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      26039 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      hyperspy/io_plugins/unbcf_fast.c:26094:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      26094 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__Pyx_PyInt_As_uint32_t’:
      hyperspy/io_plugins/unbcf_fast.c:26235:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      26235 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      hyperspy/io_plugins/unbcf_fast.c:26290:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      26290 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__Pyx_PyInt_As_uint64_t’:
      hyperspy/io_plugins/unbcf_fast.c:26431:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      26431 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      hyperspy/io_plugins/unbcf_fast.c:26486:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      26486 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__Pyx_PyInt_As_uint16_t’:
      hyperspy/io_plugins/unbcf_fast.c:26703:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      26703 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      hyperspy/io_plugins/unbcf_fast.c:26758:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      26758 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__Pyx_PyInt_As_long’:
      hyperspy/io_plugins/unbcf_fast.c:26975:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      26975 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      hyperspy/io_plugins/unbcf_fast.c:27030:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      27030 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__Pyx_PyInt_As_char’:
      hyperspy/io_plugins/unbcf_fast.c:27209:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      27209 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      hyperspy/io_plugins/unbcf_fast.c:27264:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      27264 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      hyperspy/io_plugins/unbcf_fast.c: In function ‘__Pyx_PyIndex_AsSsize_t’:
      hyperspy/io_plugins/unbcf_fast.c:27615:45: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      27615 |     const digit* digits = ((PyLongObject*)b)->ob_digit;
            |                                             ^~
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for hyperspy
  Building wheel for asciitree (pyproject.toml) ... done
  Created wheel for asciitree: filename=asciitree-0.3.3-py3-none-any.whl size=5034 sha256=23ca201993b8b2d33660c1be3744568ea5764b41fcf3629cfe2d183c1da389f5
  Stored in directory: /home/theodore/.cache/pip/wheels/a5/d7/98/f56ae733748cd0fa577172bda0e73e0b1f1793c98e09b9e458
Successfully built asciitree
Failed to build hyperspy
ERROR: Could not build wheels for hyperspy, which is required to install pyproject.toml-based projects

Somehow they probably have fixed it in 1.7.6, thus, to ensure successful installation, better bump up the version.

If the resolver fails to resolve, it will fail anyway so not a concern I guess.

@hakonanes
Copy link
Member

hakonanes commented Sep 21, 2024

Thanks, your output is from trying to install kikuchipy? From PyPI or conda-forge?

I cannot reproduce when installing kikuchipy v0.10 from PyPI in a clean conda environment:

> mamba create -n kp12 python=3.12 -y

Looking for: ['python=3.12']

conda-forge/osx-arm64                               11.9MB @  25.7MB/s  0.5s
conda-forge/noarch                                  16.5MB @  33.7MB/s  0.5s
default/osx-arm64                                             No change
default/noarch                                                No change
Transaction

  Prefix: /opt/homebrew/Caskroom/mambaforge/base/envs/kp12

  Updating specs:

   - python=3.12


  Package              Version  Build               Channel           Size
────────────────────────────────────────────────────────────────────────────
  Install:
────────────────────────────────────────────────────────────────────────────

  + xz                   5.2.6  h57fd34a_0          conda-forge     Cached
  + libexpat             2.6.3  hf9b8971_0          conda-forge     Cached
  + ncurses                6.5  h7bae524_1          conda-forge     Cached
  + bzip2                1.0.8  h99b78c6_7          conda-forge     Cached
  + libffi               3.4.2  h3422bc3_5          conda-forge     Cached
  + libzlib              1.3.1  hfb2fe0b_1          conda-forge     Cached
  + ca-certificates  2024.8.30  hf0a4a13_0          conda-forge     Cached
  + readline               8.2  h92ec313_1          conda-forge     Cached
  + tk                  8.6.13  h5083fa2_1          conda-forge     Cached
  + libsqlite           3.46.1  hc14010f_0          conda-forge     Cached
  + openssl              3.3.2  h8359307_0          conda-forge     Cached
  + tzdata               2024a  h8827d51_1          conda-forge     Cached
  + python              3.12.6  h739c21a_0_cpython  conda-forge     Cached
  + wheel               0.44.0  pyhd8ed1ab_0        conda-forge     Cached
  + setuptools          74.1.2  pyhd8ed1ab_0        conda-forge     Cached
  + pip                   24.2  pyh8b19718_1        conda-forge     Cached

  Summary:

  Install: 16 packages

  Total download: 0 B

────────────────────────────────────────────────────────────────────────────



Downloading and Extracting Packages:

Preparing transaction: done
Verifying transaction: done
Executing transaction: done

To activate this environment, use

     $ mamba activate kp12

To deactivate an active environment, use

     $ mamba deactivate
> pip install kikuchipy
Collecting kikuchipy
  Downloading kikuchipy-0.10.0-py3-none-any.whl.metadata (13 kB)
Collecting dask>=2021.8.1 (from dask[array]>=2021.8.1->kikuchipy)
  Using cached dask-2024.9.0-py3-none-any.whl.metadata (3.7 kB)
Collecting diffpy.structure>=3 (from kikuchipy)
  Using cached diffpy.structure-3.2.1-py3-none-any.whl
Collecting diffsims>=0.5.2 (from kikuchipy)
  Downloading diffsims-0.6.0-py3-none-any.whl.metadata (6.2 kB)
Collecting hyperspy<2,>=1.7.3 (from kikuchipy)
  Downloading hyperspy-1.7.6.tar.gz (45.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 45.8/45.8 MB 9.1 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting h5py>=2.10 (from kikuchipy)
  Using cached h5py-3.11.0-cp312-cp312-macosx_11_0_arm64.whl.metadata (2.5 kB)
Collecting imageio (from kikuchipy)
  Using cached imageio-2.35.1-py3-none-any.whl.metadata (4.9 kB)
Collecting matplotlib>=3.5 (from kikuchipy)
  Using cached matplotlib-3.9.2-cp312-cp312-macosx_11_0_arm64.whl.metadata (11 kB)
Collecting numba>=0.57 (from kikuchipy)
  Using cached numba-0.60.0-cp312-cp312-macosx_11_0_arm64.whl.metadata (2.7 kB)
Collecting numpy>=1.23.0 (from kikuchipy)
  Using cached numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl.metadata (60 kB)
Collecting orix>=0.12.1 (from kikuchipy)
  Using cached orix-0.13.1-py3-none-any.whl.metadata (47 kB)
Collecting pooch>=1.3.0 (from kikuchipy)
  Using cached pooch-1.8.2-py3-none-any.whl.metadata (10 kB)
Collecting pyyaml (from kikuchipy)
  Using cached PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl.metadata (2.1 kB)
Collecting tqdm>=0.5.2 (from kikuchipy)
  Using cached tqdm-4.66.5-py3-none-any.whl.metadata (57 kB)
Collecting scikit-image>=0.16.2 (from kikuchipy)
  Using cached scikit_image-0.24.0-cp312-cp312-macosx_12_0_arm64.whl.metadata (14 kB)
Collecting scikit-learn (from kikuchipy)
  Using cached scikit_learn-1.5.2-cp312-cp312-macosx_12_0_arm64.whl.metadata (13 kB)
Collecting scipy>=1.7 (from kikuchipy)
  Using cached scipy-1.14.1-cp312-cp312-macosx_14_0_arm64.whl.metadata (60 kB)
Collecting click>=8.1 (from dask>=2021.8.1->dask[array]>=2021.8.1->kikuchipy)
  Using cached click-8.1.7-py3-none-any.whl.metadata (3.0 kB)
Collecting cloudpickle>=3.0.0 (from dask>=2021.8.1->dask[array]>=2021.8.1->kikuchipy)
  Using cached cloudpickle-3.0.0-py3-none-any.whl.metadata (7.0 kB)
Collecting fsspec>=2021.09.0 (from dask>=2021.8.1->dask[array]>=2021.8.1->kikuchipy)
  Using cached fsspec-2024.9.0-py3-none-any.whl.metadata (11 kB)
Collecting packaging>=20.0 (from dask>=2021.8.1->dask[array]>=2021.8.1->kikuchipy)
  Using cached packaging-24.1-py3-none-any.whl.metadata (3.2 kB)
Collecting partd>=1.4.0 (from dask>=2021.8.1->dask[array]>=2021.8.1->kikuchipy)
  Using cached partd-1.4.2-py3-none-any.whl.metadata (4.6 kB)
Collecting toolz>=0.10.0 (from dask>=2021.8.1->dask[array]>=2021.8.1->kikuchipy)
  Using cached toolz-0.12.1-py3-none-any.whl.metadata (5.1 kB)
Collecting numpy>=1.23.0 (from kikuchipy)
  Using cached numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl.metadata (61 kB)
Collecting pycifrw (from diffpy.structure>=3->kikuchipy)
  Using cached PyCifRW-4.4.6-cp312-cp312-macosx_11_0_arm64.whl
Collecting psutil (from diffsims>=0.5.2->kikuchipy)
  Using cached psutil-6.0.0-cp38-abi3-macosx_11_0_arm64.whl.metadata (21 kB)
Collecting transforms3d (from diffsims>=0.5.2->kikuchipy)
  Downloading transforms3d-0.4.2-py3-none-any.whl.metadata (2.8 kB)
Collecting traits>=4.5.0 (from hyperspy<2,>=1.7.3->kikuchipy)
  Downloading traits-6.4.3-cp312-cp312-macosx_10_9_universal2.whl.metadata (5.0 kB)
Collecting natsort (from hyperspy<2,>=1.7.3->kikuchipy)
  Downloading natsort-8.4.0-py3-none-any.whl.metadata (21 kB)
Collecting requests (from hyperspy<2,>=1.7.3->kikuchipy)
  Using cached requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
Collecting sympy (from hyperspy<2,>=1.7.3->kikuchipy)
  Downloading sympy-1.13.3-py3-none-any.whl.metadata (12 kB)
Collecting dill (from hyperspy<2,>=1.7.3->kikuchipy)
  Downloading dill-0.3.8-py3-none-any.whl.metadata (10 kB)
Collecting jinja2 (from hyperspy<2,>=1.7.3->kikuchipy)
  Using cached jinja2-3.1.4-py3-none-any.whl.metadata (2.6 kB)
Collecting python-dateutil>=2.5.0 (from hyperspy<2,>=1.7.3->kikuchipy)
  Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting ipyparallel (from hyperspy<2,>=1.7.3->kikuchipy)
  Downloading ipyparallel-8.8.0-py3-none-any.whl.metadata (6.4 kB)
Collecting ipython!=8.0.* (from hyperspy<2,>=1.7.3->kikuchipy)
  Using cached ipython-8.27.0-py3-none-any.whl.metadata (5.0 kB)
Collecting pint>=0.10 (from hyperspy<2,>=1.7.3->kikuchipy)
  Downloading Pint-0.24.3-py3-none-any.whl.metadata (8.5 kB)
Collecting numexpr (from hyperspy<2,>=1.7.3->kikuchipy)
  Downloading numexpr-2.10.1-cp312-cp312-macosx_11_0_arm64.whl.metadata (1.2 kB)
Collecting sparse (from hyperspy<2,>=1.7.3->kikuchipy)
  Downloading sparse-0.15.4-py2.py3-none-any.whl.metadata (4.5 kB)
Collecting imageio (from kikuchipy)
  Downloading imageio-2.27.0-py3-none-any.whl.metadata (4.8 kB)
Collecting pillow<10.1 (from hyperspy<2,>=1.7.3->kikuchipy)
  Downloading Pillow-10.0.1-cp312-cp312-macosx_11_0_arm64.whl.metadata (9.5 kB)
Collecting prettytable (from hyperspy<2,>=1.7.3->kikuchipy)
  Downloading prettytable-3.11.0-py3-none-any.whl.metadata (30 kB)
Collecting tifffile>=2020.2.16 (from hyperspy<2,>=1.7.3->kikuchipy)
  Downloading tifffile-2024.9.20-py3-none-any.whl.metadata (32 kB)
Collecting importlib-metadata>=3.6 (from hyperspy<2,>=1.7.3->kikuchipy)
  Using cached importlib_metadata-8.5.0-py3-none-any.whl.metadata (4.8 kB)
Collecting contourpy>=1.0.1 (from matplotlib>=3.5->kikuchipy)
  Using cached contourpy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl.metadata (5.4 kB)
Collecting cycler>=0.10 (from matplotlib>=3.5->kikuchipy)
  Using cached cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)
Collecting fonttools>=4.22.0 (from matplotlib>=3.5->kikuchipy)
  Using cached fonttools-4.53.1-cp312-cp312-macosx_11_0_arm64.whl.metadata (162 kB)
Collecting kiwisolver>=1.3.1 (from matplotlib>=3.5->kikuchipy)
  Using cached kiwisolver-1.4.7-cp312-cp312-macosx_11_0_arm64.whl.metadata (6.3 kB)
Collecting pyparsing>=2.3.1 (from matplotlib>=3.5->kikuchipy)
  Using cached pyparsing-3.1.4-py3-none-any.whl.metadata (5.1 kB)
Collecting llvmlite<0.44,>=0.43.0dev0 (from numba>=0.57->kikuchipy)
  Using cached llvmlite-0.43.0-cp312-cp312-macosx_11_0_arm64.whl.metadata (4.8 kB)
Collecting matplotlib-scalebar (from orix>=0.12.1->kikuchipy)
  Using cached matplotlib_scalebar-0.8.1-py2.py3-none-any.whl.metadata (13 kB)
Collecting typing-extensions (from orix>=0.12.1->kikuchipy)
  Using cached typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB)
Collecting platformdirs>=2.5.0 (from pooch>=1.3.0->kikuchipy)
  Using cached platformdirs-4.3.6-py3-none-any.whl.metadata (11 kB)
Collecting networkx>=2.8 (from scikit-image>=0.16.2->kikuchipy)
  Using cached networkx-3.3-py3-none-any.whl.metadata (5.1 kB)
INFO: pip is looking at multiple versions of scikit-image to determine which version is compatible with other requirements. This could take a while.
Collecting scikit-image>=0.16.2 (from kikuchipy)
  Downloading scikit_image-0.23.2-cp312-cp312-macosx_12_0_arm64.whl.metadata (14 kB)
  Downloading scikit_image-0.23.1-cp312-cp312-macosx_12_0_arm64.whl.metadata (14 kB)
  Downloading scikit_image-0.22.0-cp312-cp312-macosx_12_0_arm64.whl.metadata (13 kB)
Collecting lazy_loader>=0.3 (from scikit-image>=0.16.2->kikuchipy)
  Using cached lazy_loader-0.4-py3-none-any.whl.metadata (7.6 kB)
Collecting joblib>=1.2.0 (from scikit-learn->kikuchipy)
  Using cached joblib-1.4.2-py3-none-any.whl.metadata (5.4 kB)
Collecting threadpoolctl>=3.1.0 (from scikit-learn->kikuchipy)
  Using cached threadpoolctl-3.5.0-py3-none-any.whl.metadata (13 kB)
Collecting zipp>=3.20 (from importlib-metadata>=3.6->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached zipp-3.20.2-py3-none-any.whl.metadata (3.7 kB)
Collecting decorator (from ipython!=8.0.*->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached decorator-5.1.1-py3-none-any.whl.metadata (4.0 kB)
Collecting jedi>=0.16 (from ipython!=8.0.*->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached jedi-0.19.1-py2.py3-none-any.whl.metadata (22 kB)
Collecting matplotlib-inline (from ipython!=8.0.*->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached matplotlib_inline-0.1.7-py3-none-any.whl.metadata (3.9 kB)
Collecting prompt-toolkit<3.1.0,>=3.0.41 (from ipython!=8.0.*->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached prompt_toolkit-3.0.47-py3-none-any.whl.metadata (6.4 kB)
Collecting pygments>=2.4.0 (from ipython!=8.0.*->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached pygments-2.18.0-py3-none-any.whl.metadata (2.5 kB)
Collecting stack-data (from ipython!=8.0.*->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached stack_data-0.6.3-py3-none-any.whl.metadata (18 kB)
Collecting traitlets>=5.13.0 (from ipython!=8.0.*->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached traitlets-5.14.3-py3-none-any.whl.metadata (10 kB)
Collecting pexpect>4.3 (from ipython!=8.0.*->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached pexpect-4.9.0-py2.py3-none-any.whl.metadata (2.5 kB)
Collecting locket (from partd>=1.4.0->dask>=2021.8.1->dask[array]>=2021.8.1->kikuchipy)
  Using cached locket-1.0.0-py2.py3-none-any.whl.metadata (2.8 kB)
Collecting appdirs>=1.4.4 (from pint>=0.10->hyperspy<2,>=1.7.3->kikuchipy)
  Downloading appdirs-1.4.4-py2.py3-none-any.whl.metadata (9.0 kB)
Collecting flexcache>=0.3 (from pint>=0.10->hyperspy<2,>=1.7.3->kikuchipy)
  Downloading flexcache-0.3-py3-none-any.whl.metadata (7.0 kB)
Collecting flexparser>=0.3 (from pint>=0.10->hyperspy<2,>=1.7.3->kikuchipy)
  Downloading flexparser-0.3.1-py3-none-any.whl.metadata (18 kB)
Collecting six>=1.5 (from python-dateutil>=2.5.0->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB)
Collecting charset-normalizer<4,>=2 (from requests->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl.metadata (33 kB)
Collecting idna<4,>=2.5 (from requests->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached idna-3.10-py3-none-any.whl.metadata (10 kB)
Collecting urllib3<3,>=1.21.1 (from requests->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached urllib3-2.2.3-py3-none-any.whl.metadata (6.5 kB)
Collecting certifi>=2017.4.17 (from requests->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached certifi-2024.8.30-py3-none-any.whl.metadata (2.2 kB)
Collecting entrypoints (from ipyparallel->hyperspy<2,>=1.7.3->kikuchipy)
  Downloading entrypoints-0.4-py3-none-any.whl.metadata (2.6 kB)
Collecting ipykernel>=4.4 (from ipyparallel->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached ipykernel-6.29.5-py3-none-any.whl.metadata (6.3 kB)
Collecting jupyter-client>=5 (from ipyparallel->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached jupyter_client-8.6.3-py3-none-any.whl.metadata (8.3 kB)
Collecting pyzmq>=18 (from ipyparallel->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl.metadata (6.2 kB)
Collecting tornado>=5.1 (from ipyparallel->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl.metadata (2.5 kB)
Collecting MarkupSafe>=2.0 (from jinja2->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl.metadata (3.0 kB)
Collecting wcwidth (from prettytable->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached wcwidth-0.2.13-py2.py3-none-any.whl.metadata (14 kB)
Collecting ply (from pycifrw->diffpy.structure>=3->kikuchipy)
  Using cached ply-3.11-py2.py3-none-any.whl.metadata (844 bytes)
Collecting mpmath<1.4,>=1.1.0 (from sympy->hyperspy<2,>=1.7.3->kikuchipy)
  Downloading mpmath-1.3.0-py3-none-any.whl.metadata (8.6 kB)
Collecting appnope (from ipykernel>=4.4->ipyparallel->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached appnope-0.1.4-py2.py3-none-any.whl.metadata (908 bytes)
Collecting comm>=0.1.1 (from ipykernel>=4.4->ipyparallel->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached comm-0.2.2-py3-none-any.whl.metadata (3.7 kB)
Collecting debugpy>=1.6.5 (from ipykernel>=4.4->ipyparallel->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached debugpy-1.8.5-cp312-cp312-macosx_12_0_universal2.whl.metadata (1.1 kB)
Collecting jupyter-core!=5.0.*,>=4.12 (from ipykernel>=4.4->ipyparallel->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached jupyter_core-5.7.2-py3-none-any.whl.metadata (3.4 kB)
Collecting nest-asyncio (from ipykernel>=4.4->ipyparallel->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached nest_asyncio-1.6.0-py3-none-any.whl.metadata (2.8 kB)
Collecting parso<0.9.0,>=0.8.3 (from jedi>=0.16->ipython!=8.0.*->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached parso-0.8.4-py2.py3-none-any.whl.metadata (7.7 kB)
Collecting ptyprocess>=0.5 (from pexpect>4.3->ipython!=8.0.*->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached ptyprocess-0.7.0-py2.py3-none-any.whl.metadata (1.3 kB)
Collecting executing>=1.2.0 (from stack-data->ipython!=8.0.*->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached executing-2.1.0-py2.py3-none-any.whl.metadata (8.9 kB)
Collecting asttokens>=2.1.0 (from stack-data->ipython!=8.0.*->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached asttokens-2.4.1-py2.py3-none-any.whl.metadata (5.2 kB)
Collecting pure-eval (from stack-data->ipython!=8.0.*->hyperspy<2,>=1.7.3->kikuchipy)
  Using cached pure_eval-0.2.3-py3-none-any.whl.metadata (6.3 kB)
Downloading kikuchipy-0.10.0-py3-none-any.whl (1.8 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 13.4 MB/s eta 0:00:00
Using cached dask-2024.9.0-py3-none-any.whl (1.3 MB)
Downloading diffsims-0.6.0-py3-none-any.whl (229 kB)
Using cached h5py-3.11.0-cp312-cp312-macosx_11_0_arm64.whl (2.9 MB)
Downloading imageio-2.27.0-py3-none-any.whl (3.4 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.4/3.4 MB 13.5 MB/s eta 0:00:00
Using cached matplotlib-3.9.2-cp312-cp312-macosx_11_0_arm64.whl (7.8 MB)
Using cached numba-0.60.0-cp312-cp312-macosx_11_0_arm64.whl (2.7 MB)
Using cached numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl (13.7 MB)
Using cached orix-0.13.1-py3-none-any.whl (342 kB)
Using cached pooch-1.8.2-py3-none-any.whl (64 kB)
Using cached PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl (173 kB)
Downloading scikit_image-0.22.0-cp312-cp312-macosx_12_0_arm64.whl (13.3 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.3/13.3 MB 8.4 MB/s eta 0:00:00
Using cached scipy-1.14.1-cp312-cp312-macosx_14_0_arm64.whl (23.1 MB)
Using cached tqdm-4.66.5-py3-none-any.whl (78 kB)
Using cached scikit_learn-1.5.2-cp312-cp312-macosx_12_0_arm64.whl (11.0 MB)
Using cached click-8.1.7-py3-none-any.whl (97 kB)
Using cached cloudpickle-3.0.0-py3-none-any.whl (20 kB)
Using cached contourpy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl (251 kB)
Using cached cycler-0.12.1-py3-none-any.whl (8.3 kB)
Using cached fonttools-4.53.1-cp312-cp312-macosx_11_0_arm64.whl (2.2 MB)
Using cached fsspec-2024.9.0-py3-none-any.whl (179 kB)
Using cached importlib_metadata-8.5.0-py3-none-any.whl (26 kB)
Using cached ipython-8.27.0-py3-none-any.whl (818 kB)
Using cached joblib-1.4.2-py3-none-any.whl (301 kB)
Using cached kiwisolver-1.4.7-cp312-cp312-macosx_11_0_arm64.whl (63 kB)
Using cached lazy_loader-0.4-py3-none-any.whl (12 kB)
Using cached llvmlite-0.43.0-cp312-cp312-macosx_11_0_arm64.whl (28.8 MB)
Using cached networkx-3.3-py3-none-any.whl (1.7 MB)
Using cached packaging-24.1-py3-none-any.whl (53 kB)
Using cached partd-1.4.2-py3-none-any.whl (18 kB)
Downloading Pillow-10.0.1-cp312-cp312-macosx_11_0_arm64.whl (3.3 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.3/3.3 MB 7.5 MB/s eta 0:00:00
Downloading Pint-0.24.3-py3-none-any.whl (301 kB)
Using cached platformdirs-4.3.6-py3-none-any.whl (18 kB)
Using cached pyparsing-3.1.4-py3-none-any.whl (104 kB)
Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
Using cached requests-2.32.3-py3-none-any.whl (64 kB)
Using cached threadpoolctl-3.5.0-py3-none-any.whl (18 kB)
Downloading tifffile-2024.9.20-py3-none-any.whl (228 kB)
Using cached toolz-0.12.1-py3-none-any.whl (56 kB)
Downloading traits-6.4.3-cp312-cp312-macosx_10_9_universal2.whl (5.0 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.0/5.0 MB 12.5 MB/s eta 0:00:00
Downloading dill-0.3.8-py3-none-any.whl (116 kB)
Downloading ipyparallel-8.8.0-py3-none-any.whl (293 kB)
Using cached jinja2-3.1.4-py3-none-any.whl (133 kB)
Using cached matplotlib_scalebar-0.8.1-py2.py3-none-any.whl (17 kB)
Downloading natsort-8.4.0-py3-none-any.whl (38 kB)
Downloading numexpr-2.10.1-cp312-cp312-macosx_11_0_arm64.whl (131 kB)
Downloading prettytable-3.11.0-py3-none-any.whl (28 kB)
Using cached psutil-6.0.0-cp38-abi3-macosx_11_0_arm64.whl (251 kB)
Downloading sparse-0.15.4-py2.py3-none-any.whl (237 kB)
Downloading sympy-1.13.3-py3-none-any.whl (6.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.2/6.2 MB 62.0 MB/s eta 0:00:00
Downloading transforms3d-0.4.2-py3-none-any.whl (1.4 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.4/1.4 MB 59.0 MB/s eta 0:00:00
Using cached typing_extensions-4.12.2-py3-none-any.whl (37 kB)
Downloading appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
Using cached certifi-2024.8.30-py3-none-any.whl (167 kB)
Using cached charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl (119 kB)
Downloading flexcache-0.3-py3-none-any.whl (13 kB)
Downloading flexparser-0.3.1-py3-none-any.whl (27 kB)
Using cached idna-3.10-py3-none-any.whl (70 kB)
Using cached ipykernel-6.29.5-py3-none-any.whl (117 kB)
Using cached jedi-0.19.1-py2.py3-none-any.whl (1.6 MB)
Using cached jupyter_client-8.6.3-py3-none-any.whl (106 kB)
Using cached MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl (18 kB)
Using cached matplotlib_inline-0.1.7-py3-none-any.whl (9.9 kB)
Downloading mpmath-1.3.0-py3-none-any.whl (536 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 536.2/536.2 kB 21.1 MB/s eta 0:00:00
Using cached pexpect-4.9.0-py2.py3-none-any.whl (63 kB)
Using cached prompt_toolkit-3.0.47-py3-none-any.whl (386 kB)
Using cached pygments-2.18.0-py3-none-any.whl (1.2 MB)
Using cached pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl (1.3 MB)
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Using cached tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl (435 kB)
Using cached traitlets-5.14.3-py3-none-any.whl (85 kB)
Using cached urllib3-2.2.3-py3-none-any.whl (126 kB)
Using cached zipp-3.20.2-py3-none-any.whl (9.2 kB)
Using cached decorator-5.1.1-py3-none-any.whl (9.1 kB)
Downloading entrypoints-0.4-py3-none-any.whl (5.3 kB)
Using cached locket-1.0.0-py2.py3-none-any.whl (4.4 kB)
Using cached ply-3.11-py2.py3-none-any.whl (49 kB)
Using cached stack_data-0.6.3-py3-none-any.whl (24 kB)
Using cached wcwidth-0.2.13-py2.py3-none-any.whl (34 kB)
Using cached asttokens-2.4.1-py2.py3-none-any.whl (27 kB)
Using cached comm-0.2.2-py3-none-any.whl (7.2 kB)
Using cached debugpy-1.8.5-cp312-cp312-macosx_12_0_universal2.whl (1.4 MB)
Using cached executing-2.1.0-py2.py3-none-any.whl (25 kB)
Using cached jupyter_core-5.7.2-py3-none-any.whl (28 kB)
Using cached parso-0.8.4-py2.py3-none-any.whl (103 kB)
Using cached ptyprocess-0.7.0-py2.py3-none-any.whl (13 kB)
Using cached appnope-0.1.4-py2.py3-none-any.whl (4.3 kB)
Using cached nest_asyncio-1.6.0-py3-none-any.whl (5.2 kB)
Using cached pure_eval-0.2.3-py3-none-any.whl (11 kB)
Building wheels for collected packages: hyperspy
  Building wheel for hyperspy (pyproject.toml) ... done
  Created wheel for hyperspy: filename=hyperspy-1.7.6-cp312-cp312-macosx_11_0_arm64.whl size=32576589 sha256=c711b39c78353827028af5bb9e2ce81a5026eed1c9bf02801caedd483efc9888
  Stored in directory: /Users/hakon/Library/Caches/pip/wheels/a1/47/5d/e5378eeba6d24d7b883baf7fbe9362061b6875acfb10212671
Successfully built hyperspy
Installing collected packages: wcwidth, pure-eval, ptyprocess, ply, mpmath, appdirs, zipp, urllib3, typing-extensions, traits, traitlets, tqdm, tornado, toolz, threadpoolctl, sympy, six, pyzmq, pyyaml, pyparsing, pygments, psutil, prompt-toolkit, prettytable, platformdirs, pillow, pexpect, parso, packaging, numpy, networkx, nest-asyncio, natsort, MarkupSafe, locket, llvmlite, kiwisolver, joblib, idna, fsspec, fonttools, executing, entrypoints, dill, decorator, debugpy, cycler, cloudpickle, click, charset-normalizer, certifi, appnope, transforms3d, tifffile, scipy, requests, python-dateutil, pycifrw, partd, numexpr, numba, matplotlib-inline, lazy_loader, jupyter-core, jinja2, jedi, importlib-metadata, imageio, h5py, flexparser, flexcache, contourpy, comm, asttokens, stack-data, sparse, scikit-learn, scikit-image, pooch, pint, matplotlib, jupyter-client, diffpy.structure, dask, matplotlib-scalebar, ipython, orix, ipykernel, ipyparallel, diffsims, hyperspy, kikuchipy
Successfully installed MarkupSafe-2.1.5 appdirs-1.4.4 appnope-0.1.4 asttokens-2.4.1 certifi-2024.8.30 charset-normalizer-3.3.2 click-8.1.7 cloudpickle-3.0.0 comm-0.2.2 contourpy-1.3.0 cycler-0.12.1 dask-2024.9.0 debugpy-1.8.5 decorator-5.1.1 diffpy.structure-3.2.1 diffsims-0.6.0 dill-0.3.8 entrypoints-0.4 executing-2.1.0 flexcache-0.3 flexparser-0.3.1 fonttools-4.53.1 fsspec-2024.9.0 h5py-3.11.0 hyperspy-1.7.6 idna-3.10 imageio-2.27.0 importlib-metadata-8.5.0 ipykernel-6.29.5 ipyparallel-8.8.0 ipython-8.27.0 jedi-0.19.1 jinja2-3.1.4 joblib-1.4.2 jupyter-client-8.6.3 jupyter-core-5.7.2 kikuchipy-0.10.0 kiwisolver-1.4.7 lazy_loader-0.4 llvmlite-0.43.0 locket-1.0.0 matplotlib-3.9.2 matplotlib-inline-0.1.7 matplotlib-scalebar-0.8.1 mpmath-1.3.0 natsort-8.4.0 nest-asyncio-1.6.0 networkx-3.3 numba-0.60.0 numexpr-2.10.1 numpy-1.26.4 orix-0.13.1 packaging-24.1 parso-0.8.4 partd-1.4.2 pexpect-4.9.0 pillow-10.0.1 pint-0.24.3 platformdirs-4.3.6 ply-3.11 pooch-1.8.2 prettytable-3.11.0 prompt-toolkit-3.0.47 psutil-6.0.0 ptyprocess-0.7.0 pure-eval-0.2.3 pycifrw-4.4.6 pygments-2.18.0 pyparsing-3.1.4 python-dateutil-2.9.0.post0 pyyaml-6.0.2 pyzmq-26.2.0 requests-2.32.3 scikit-image-0.22.0 scikit-learn-1.5.2 scipy-1.14.1 six-1.16.0 sparse-0.15.4 stack-data-0.6.3 sympy-1.13.3 threadpoolctl-3.5.0 tifffile-2024.9.20 toolz-0.12.1 tornado-6.4.1 tqdm-4.66.5 traitlets-5.14.3 traits-6.4.3 transforms3d-0.4.2 typing-extensions-4.12.2 urllib3-2.2.3 wcwidth-0.2.13 zipp-3.20.2
> pip list
Package             Version
------------------- -----------
appdirs             1.4.4
appnope             0.1.4
asttokens           2.4.1
certifi             2024.8.30
charset-normalizer  3.3.2
click               8.1.7
cloudpickle         3.0.0
comm                0.2.2
contourpy           1.3.0
cycler              0.12.1
dask                2024.9.0
debugpy             1.8.5
decorator           5.1.1
diffpy.structure    3.2.1
diffsims            0.6.0
dill                0.3.8
entrypoints         0.4
executing           2.1.0
flexcache           0.3
flexparser          0.3.1
fonttools           4.53.1
fsspec              2024.9.0
h5py                3.11.0
hyperspy            1.7.6
idna                3.10
imageio             2.27.0
importlib_metadata  8.5.0
ipykernel           6.29.5
ipyparallel         8.8.0
ipython             8.27.0
jedi                0.19.1
Jinja2              3.1.4
joblib              1.4.2
jupyter_client      8.6.3
jupyter_core        5.7.2
kikuchipy           0.10.0
kiwisolver          1.4.7
lazy_loader         0.4
llvmlite            0.43.0
locket              1.0.0
MarkupSafe          2.1.5
matplotlib          3.9.2
matplotlib-inline   0.1.7
matplotlib-scalebar 0.8.1
mpmath              1.3.0
natsort             8.4.0
nest-asyncio        1.6.0
networkx            3.3
numba               0.60.0
numexpr             2.10.1
numpy               1.26.4
orix                0.13.1
packaging           24.1
parso               0.8.4
partd               1.4.2
pexpect             4.9.0
Pillow              10.0.1
Pint                0.24.3
pip                 24.2
platformdirs        4.3.6
ply                 3.11
pooch               1.8.2
prettytable         3.11.0
prompt_toolkit      3.0.47
psutil              6.0.0
ptyprocess          0.7.0
pure_eval           0.2.3
PyCifRW             4.4.6
Pygments            2.18.0
pyparsing           3.1.4
python-dateutil     2.9.0.post0
PyYAML              6.0.2
pyzmq               26.2.0
requests            2.32.3
scikit-image        0.22.0
scikit-learn        1.5.2
scipy               1.14.1
setuptools          74.1.2
six                 1.16.0
sparse              0.15.4
stack-data          0.6.3
sympy               1.13.3
threadpoolctl       3.5.0
tifffile            2024.9.20
toolz               0.12.1
tornado             6.4.1
tqdm                4.66.5
traitlets           5.14.3
traits              6.4.3
transforms3d        0.4.2
typing_extensions   4.12.2
urllib3             2.2.3
wcwidth             0.2.13
wheel               0.44.0
zipp                3.20.2

@hakonanes
Copy link
Member

hakonanes commented Sep 21, 2024

OK, sorry, now I understand what you're telling me. I can reproduce in an environment with Python 3.12 and calling pip install kikuchipy hyperspy==1.7.5.

Can you explain how your resolver ends up using the non-3.12-compatible HyperSpy 1.7.5 instead of the compatible 1.7.6? Since kikuchipy is compatible with HyperSpy 1.7.6 for Python 3.12 and HyperSpy 1.7.3 for Python 3.8-11, I'm not sure I consider the problem you encounter to be the responsibility of kikuchipy. Rather, the package requiring HyperSpy < 1.7.6 should require Python <= 3.11.

@TLCFEM
Copy link
Author

TLCFEM commented Sep 21, 2024

The dependency resolver could pick a version, say 1.7.5, due to other constraints in the downstream projects, not necessarily the exact hyperspy package. But eventually it ends up to pip install hyperspy==1.7.5 in 3.12.

Installing kikuchipy alone does not raise error because the resolver picks 1.7.6.
But downstream projects would have more other constraints due to probably other packages as well, resolver is not bounded to pick the good versions.

I'm not sure I consider the problem you encounter to be the responsibility of kikuchipy.

No, it is not, it is hyperspy that shall have better constraints.
It's more like a quality of life fix, that could save some hassle for downstream projects.

@hakonanes
Copy link
Member

Thank you for clarifying.

What we want is to update our dependencies so that HyperSpy 1.7.6 is required if the environment has Python >= 3.12. I didn't think this was easily done, but apparently it is with Hatch and their environment markers:

"hyperspy>=1.7.3,<2; python_version<'3.12'",
"hyperspy==1.7.6; python_version>='3.12'",

We will switch package configuration to use pyproject.toml and hatchling as build backend soon, which will enable this.

Also, note that kikuchipy will be compatible with HyperSpy v2 soon...

@hakonanes hakonanes added the maintenance This relates to package maintenance label Sep 21, 2024
@hakonanes hakonanes added this to the v0.10.1 milestone Sep 21, 2024
@TLCFEM
Copy link
Author

TLCFEM commented Sep 21, 2024

"hyperspy>=1.7.3,<2; python_version<'3.12'",
"hyperspy==1.7.6; python_version>='3.12'",

This also helps.

@hakonanes
Copy link
Member

Indeed. I think this is better than requiring HyperSpy 1.7.6, less restrictive.

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

No branches or pull requests

2 participants