ocrbook/ocrinaction

按照第二章实战练习时,pybm3d安装失败

Opened this issue · 0 comments

请问这个改怎么解,搜了一圈没找到解决方法。
Ubuntu 20.04

Requirement already satisfied: cython>=0.27 in /home/foo/.local/lib/python3.8/site-packages (from pybm3d) (0.29.21)

Requirement already satisfied: numpy>=1.13 in /home/foo/.local/lib/python3.8/site-packages (from pybm3d) (1.19.5)

Requirement already satisfied: setuptools>=18.0 in /usr/lib/python3/dist-packages (from pybm3d) (45.2.0)

Building wheels for collected packages: pybm3d

Building wheel for pybm3d (setup.py) ... error

ERROR: Command errored out with exit status 1:

command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-zgwb7q52/pybm3d/setup.py'"'"'; file='"'"'/tmp/pip-install-zgwb7q52/pybm3d/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-nktybisv

   cwd: /tmp/pip-install-zgwb7q52/pybm3d/

Complete output (301 lines):

running bdist_wheel

running build

running build_py

creating build

creating build/lib.linux-x86_64-3.8

creating build/lib.linux-x86_64-3.8/pybm3d

copying pybm3d/init.py -> build/lib.linux-x86_64-3.8/pybm3d

running build_ext

skipping 'pybm3d/bm3d.cpp' Cython extension (up-to-date)

building 'pybm3d.bm3d' extension

creating build/temp.linux-x86_64-3.8

creating build/temp.linux-x86_64-3.8/pybm3d

creating build/temp.linux-x86_64-3.8/bm3d_src

x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.8 -I/home/foo/.local/lib/python3.8/site-packages/numpy/core/include -c pybm3d/bm3d.cpp -o build/temp.linux-x86_64-3.8/pybm3d/bm3d.o -march=native -Wall -Wextra

In file included from /home/foo/.local/lib/python3.8/site-packages/numpy/core/include/numpy/ndarraytypes.h:1822,

               from /home/foo/.local/lib/python3.8/site-packages/numpy/core/include/numpy/ndarrayobject.h:12,

               from /home/foo/.local/lib/python3.8/site-packages/numpy/core/include/numpy/arrayobject.h:4,

               from pybm3d/bm3d.cpp:536:

/home/foo/.local/lib/python3.8/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]

 17 | #warning "Using deprecated NumPy API, disable it with " \

    |  ^~~~~~~

pybm3d/bm3d.cpp:3583:75: warning: cast between incompatible function types from ‘PyObject* ()(PyObject, PyObject*, PyObject*)’ {aka ‘_object* ()(_object, _object*, _object*)’} to ‘PyCFunction’ {aka ‘_object* ()(_object, _object*)’} [-Wcast-function-type]

3583 | static PyMethodDef __pyx_mdef_6pybm3d_4bm3d_3bm3d = {"bm3d", (PyCFunction)__pyx_pw_6pybm3d_4bm3d_3bm3d, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6pybm3d_4bm3d_2bm3d};

    |                                                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

pybm3d/bm3d.cpp:19207:113: warning: cast between incompatible function types from ‘PyObject* ()(PyObject, PyObject*, PyObject*)’ {aka ‘_object* ()(_object, _object*, _object*)’} to ‘PyCFunction’ {aka ‘_object* ()(_object, _object*)’} [-Wcast-function-type]

19207 | static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};

    |                                                                                                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

pybm3d/bm3d.cpp:19853:1: warning: missing initializer for member ‘_typeobject::tp_vectorcall’ [-Wmissing-field-initializers]

19853 | };

    | ^

pybm3d/bm3d.cpp:19853:1: warning: missing initializer for member ‘_typeobject::tp_print’ [-Wmissing-field-initializers]

pybm3d/bm3d.cpp:19961:1: warning: missing initializer for member ‘_typeobject::tp_vectorcall’ [-Wmissing-field-initializers]

19961 | };

    | ^

pybm3d/bm3d.cpp:19961:1: warning: missing initializer for member ‘_typeobject::tp_print’ [-Wmissing-field-initializers]

pybm3d/bm3d.cpp:20211:1: warning: missing initializer for member ‘_typeobject::tp_vectorcall’ [-Wmissing-field-initializers]

20211 | };

    | ^

pybm3d/bm3d.cpp:20211:1: warning: missing initializer for member ‘_typeobject::tp_print’ [-Wmissing-field-initializers]

pybm3d/bm3d.cpp:20346:1: warning: missing initializer for member ‘_typeobject::tp_vectorcall’ [-Wmissing-field-initializers]

20346 | };

    | ^

pybm3d/bm3d.cpp:20346:1: warning: missing initializer for member ‘_typeobject::tp_print’ [-Wmissing-field-initializers]

pybm3d/bm3d.cpp:20349:34: warning: cast between incompatible function types from ‘PyObject* ()(PyObject, PyObject*, PyObject*)’ {aka ‘_object* ()(_object, _object*, _object*)’} to ‘PyCFunction’ {aka ‘_object* ()(_object, _object*)’} [-Wcast-function-type]

20349 | {"run_bm3d_wrap", (PyCFunction)__pyx_pw_6pybm3d_4bm3d_1run_bm3d_wrap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6pybm3d_4bm3d_run_bm3d_wrap},

    |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

pybm3d/bm3d.cpp: In function ‘int __pyx_pymod_exec_bm3d(PyObject*)’:

pybm3d/bm3d.cpp:21138:26: warning: ‘_typeobject::tp_print’ is deprecated [-Wdeprecated-declarations]

21138 | __pyx_type___pyx_array.tp_print = 0;

    |                          ^~~~~~~~

In file included from /usr/include/python3.8/object.h:746,

               from /usr/include/python3.8/pytime.h:6,

               from /usr/include/python3.8/Python.h:85,

               from pybm3d/bm3d.cpp:4:

/usr/include/python3.8/cpython/object.h:260:30: note: declared here

260 |     Py_DEPRECATED(3.8) int (*tp_print)(PyObject *, FILE *, int);

    |                              ^~~~~~~~

pybm3d/bm3d.cpp:21138:26: warning: ‘_typeobject::tp_print’ is deprecated [-Wdeprecated-declarations]

21138 | __pyx_type___pyx_array.tp_print = 0;

    |                          ^~~~~~~~

In file included from /usr/include/python3.8/object.h:746,

               from /usr/include/python3.8/pytime.h:6,

               from /usr/include/python3.8/Python.h:85,

               from pybm3d/bm3d.cpp:4:

/usr/include/python3.8/cpython/object.h:260:30: note: declared here

260 |     Py_DEPRECATED(3.8) int (*tp_print)(PyObject *, FILE *, int);

    |                              ^~~~~~~~

pybm3d/bm3d.cpp:21138:26: warning: ‘_typeobject::tp_print’ is deprecated [-Wdeprecated-declarations]

21138 | __pyx_type___pyx_array.tp_print = 0;

    |                          ^~~~~~~~

In file included from /usr/include/python3.8/object.h:746,

               from /usr/include/python3.8/pytime.h:6,

               from /usr/include/python3.8/Python.h:85,

               from pybm3d/bm3d.cpp:4:

/usr/include/python3.8/cpython/object.h:260:30: note: declared here

260 |     Py_DEPRECATED(3.8) int (*tp_print)(PyObject *, FILE *, int);

    |                              ^~~~~~~~

pybm3d/bm3d.cpp:21143:32: warning: ‘_typeobject::tp_print’ is deprecated [-Wdeprecated-declarations]

21143 | __pyx_type___pyx_MemviewEnum.tp_print = 0;

    |                                ^~~~~~~~

In file included from /usr/include/python3.8/object.h:746,

               from /usr/include/python3.8/pytime.h:6,

               from /usr/include/python3.8/Python.h:85,

               from pybm3d/bm3d.cpp:4:

/usr/include/python3.8/cpython/object.h:260:30: note: declared here

260 |     Py_DEPRECATED(3.8) int (*tp_print)(PyObject *, FILE *, int);

    |                              ^~~~~~~~

pybm3d/bm3d.cpp:21143:32: warning: ‘_typeobject::tp_print’ is deprecated [-Wdeprecated-declarations]

21143 | __pyx_type___pyx_MemviewEnum.tp_print = 0;

    |                                ^~~~~~~~

In file included from /usr/include/python3.8/object.h:746,

               from /usr/include/python3.8/pytime.h:6,

               from /usr/include/python3.8/Python.h:85,

               from pybm3d/bm3d.cpp:4:

/usr/include/python3.8/cpython/object.h:260:30: note: declared here

260 |     Py_DEPRECATED(3.8) int (*tp_print)(PyObject *, FILE *, int);

    |                              ^~~~~~~~

pybm3d/bm3d.cpp:21143:32: warning: ‘_typeobject::tp_print’ is deprecated [-Wdeprecated-declarations]

21143 | __pyx_type___pyx_MemviewEnum.tp_print = 0;

    |                                ^~~~~~~~

In file included from /usr/include/python3.8/object.h:746,

               from /usr/include/python3.8/pytime.h:6,

               from /usr/include/python3.8/Python.h:85,

               from pybm3d/bm3d.cpp:4:

/usr/include/python3.8/cpython/object.h:260:30: note: declared here

260 |     Py_DEPRECATED(3.8) int (*tp_print)(PyObject *, FILE *, int);

    |                              ^~~~~~~~

pybm3d/bm3d.cpp:21155:31: warning: ‘_typeobject::tp_print’ is deprecated [-Wdeprecated-declarations]

21155 | __pyx_type___pyx_memoryview.tp_print = 0;

    |                               ^~~~~~~~

In file included from /usr/include/python3.8/object.h:746,

               from /usr/include/python3.8/pytime.h:6,

               from /usr/include/python3.8/Python.h:85,

               from pybm3d/bm3d.cpp:4:

/usr/include/python3.8/cpython/object.h:260:30: note: declared here

260 |     Py_DEPRECATED(3.8) int (*tp_print)(PyObject *, FILE *, int);

    |                              ^~~~~~~~

pybm3d/bm3d.cpp:21155:31: warning: ‘_typeobject::tp_print’ is deprecated [-Wdeprecated-declarations]

21155 | __pyx_type___pyx_memoryview.tp_print = 0;

    |                               ^~~~~~~~

In file included from /usr/include/python3.8/object.h:746,

               from /usr/include/python3.8/pytime.h:6,

               from /usr/include/python3.8/Python.h:85,

               from pybm3d/bm3d.cpp:4:

/usr/include/python3.8/cpython/object.h:260:30: note: declared here

260 |     Py_DEPRECATED(3.8) int (*tp_print)(PyObject *, FILE *, int);

    |                              ^~~~~~~~

pybm3d/bm3d.cpp:21155:31: warning: ‘_typeobject::tp_print’ is deprecated [-Wdeprecated-declarations]

21155 | __pyx_type___pyx_memoryview.tp_print = 0;

    |                               ^~~~~~~~

In file included from /usr/include/python3.8/object.h:746,

               from /usr/include/python3.8/pytime.h:6,

               from /usr/include/python3.8/Python.h:85,

               from pybm3d/bm3d.cpp:4:

/usr/include/python3.8/cpython/object.h:260:30: note: declared here

260 |     Py_DEPRECATED(3.8) int (*tp_print)(PyObject *, FILE *, int);

    |                              ^~~~~~~~

pybm3d/bm3d.cpp:21165:36: warning: ‘_typeobject::tp_print’ is deprecated [-Wdeprecated-declarations]

21165 | __pyx_type___pyx_memoryviewslice.tp_print = 0;

    |                                    ^~~~~~~~

In file included from /usr/include/python3.8/object.h:746,

               from /usr/include/python3.8/pytime.h:6,

               from /usr/include/python3.8/Python.h:85,

               from pybm3d/bm3d.cpp:4:

/usr/include/python3.8/cpython/object.h:260:30: note: declared here

260 |     Py_DEPRECATED(3.8) int (*tp_print)(PyObject *, FILE *, int);

    |                              ^~~~~~~~

pybm3d/bm3d.cpp:21165:36: warning: ‘_typeobject::tp_print’ is deprecated [-Wdeprecated-declarations]

21165 | __pyx_type___pyx_memoryviewslice.tp_print = 0;

    |                                    ^~~~~~~~

In file included from /usr/include/python3.8/object.h:746,

               from /usr/include/python3.8/pytime.h:6,

               from /usr/include/python3.8/Python.h:85,

               from pybm3d/bm3d.cpp:4:

/usr/include/python3.8/cpython/object.h:260:30: note: declared here

260 |     Py_DEPRECATED(3.8) int (*tp_print)(PyObject *, FILE *, int);

    |                              ^~~~~~~~

pybm3d/bm3d.cpp:21165:36: warning: ‘_typeobject::tp_print’ is deprecated [-Wdeprecated-declarations]

21165 | __pyx_type___pyx_memoryviewslice.tp_print = 0;

    |                                    ^~~~~~~~

In file included from /usr/include/python3.8/object.h:746,

               from /usr/include/python3.8/pytime.h:6,

               from /usr/include/python3.8/Python.h:85,

               from pybm3d/bm3d.cpp:4:

/usr/include/python3.8/cpython/object.h:260:30: note: declared here

260 |     Py_DEPRECATED(3.8) int (*tp_print)(PyObject *, FILE *, int);

    |                              ^~~~~~~~

pybm3d/bm3d.cpp: In function ‘PyObject* __Pyx_PyCFunction_FastCall(PyObject*, PyObject**, Py_ssize_t)’:

pybm3d/bm3d.cpp:21503:54: warning: cast between incompatible function types from ‘PyCFunction’ {aka ‘_object* ()(_object, _object*)’} to ‘_PyCFunctionFastWithKeywords’ {aka ‘_object* ()(_object, _object* const*, long int, _object*)’} [-Wcast-function-type]

21503 | return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);

    |                                                      ^~~~

pybm3d/bm3d.cpp:21505:42: warning: cast between incompatible function types from ‘PyCFunction’ {aka ‘_object* ()(_object, _object*)’} to ‘_PyCFunctionFast’ {aka ‘_object* ()(_object, _object* const*, long int)’} [-Wcast-function-type]

21505 | return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);

    |                                          ^~~~

pybm3d/bm3d.cpp: In function ‘void __Pyx__ExceptionSave(PyThreadState*, PyObject**, PyObject**, PyObject**)’:

pybm3d/bm3d.cpp:22355:21: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_type’; did you mean ‘curexc_type’?

22355 | *type = tstate->exc_type;

    |                     ^~~~~~~~

    |                     curexc_type

pybm3d/bm3d.cpp:22356:22: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_value’; did you mean ‘curexc_value’?

22356 | *value = tstate->exc_value;

    |                      ^~~~~~~~~

    |                      curexc_value

pybm3d/bm3d.cpp:22357:19: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?

22357 | *tb = tstate->exc_traceback;

    |                   ^~~~~~~~~~~~~

    |                   curexc_traceback

pybm3d/bm3d.cpp: In function ‘void __Pyx__ExceptionReset(PyThreadState*, PyObject*, PyObject*, PyObject*)’:

pybm3d/bm3d.cpp:22364:24: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_type’; did you mean ‘curexc_type’?

22364 | tmp_type = tstate->exc_type;

    |                        ^~~~~~~~

    |                        curexc_type

pybm3d/bm3d.cpp:22365:25: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_value’; did you mean ‘curexc_value’?

22365 | tmp_value = tstate->exc_value;

    |                         ^~~~~~~~~

    |                         curexc_value

pybm3d/bm3d.cpp:22366:22: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?

22366 | tmp_tb = tstate->exc_traceback;

    |                      ^~~~~~~~~~~~~

    |                      curexc_traceback

pybm3d/bm3d.cpp:22367:13: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_type’; did you mean ‘curexc_type’?

22367 | tstate->exc_type = type;

    |             ^~~~~~~~

    |             curexc_type

pybm3d/bm3d.cpp:22368:13: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_value’; did you mean ‘curexc_value’?

22368 | tstate->exc_value = value;

    |             ^~~~~~~~~

    |             curexc_value

pybm3d/bm3d.cpp:22369:13: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?

22369 | tstate->exc_traceback = tb;

    |             ^~~~~~~~~~~~~

    |             curexc_traceback

pybm3d/bm3d.cpp: In function ‘int __Pyx__GetException(PyThreadState*, PyObject**, PyObject**, PyObject**)’:

pybm3d/bm3d.cpp:22439:24: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_type’; did you mean ‘curexc_type’?

22439 | tmp_type = tstate->exc_type;

    |                        ^~~~~~~~

    |                        curexc_type

pybm3d/bm3d.cpp:22440:25: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_value’; did you mean ‘curexc_value’?

22440 | tmp_value = tstate->exc_value;

    |                         ^~~~~~~~~

    |                         curexc_value

pybm3d/bm3d.cpp:22441:22: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?

22441 | tmp_tb = tstate->exc_traceback;

    |                      ^~~~~~~~~~~~~

    |                      curexc_traceback

pybm3d/bm3d.cpp:22442:13: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_type’; did you mean ‘curexc_type’?

22442 | tstate->exc_type = local_type;

    |             ^~~~~~~~

    |             curexc_type

pybm3d/bm3d.cpp:22443:13: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_value’; did you mean ‘curexc_value’?

22443 | tstate->exc_value = local_value;

    |             ^~~~~~~~~

    |             curexc_value

pybm3d/bm3d.cpp:22444:13: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?

22444 | tstate->exc_traceback = local_tb;

    |             ^~~~~~~~~~~~~

    |             curexc_traceback

pybm3d/bm3d.cpp: In function ‘void __Pyx__ExceptionSwap(PyThreadState*, PyObject**, PyObject**, PyObject**)’:

pybm3d/bm3d.cpp:22681:24: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_type’; did you mean ‘curexc_type’?

22681 | tmp_type = tstate->exc_type;

    |                        ^~~~~~~~

    |                        curexc_type

pybm3d/bm3d.cpp:22682:25: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_value’; did you mean ‘curexc_value’?

22682 | tmp_value = tstate->exc_value;

    |                         ^~~~~~~~~

    |                         curexc_value

pybm3d/bm3d.cpp:22683:22: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?

22683 | tmp_tb = tstate->exc_traceback;

    |                      ^~~~~~~~~~~~~

    |                      curexc_traceback

pybm3d/bm3d.cpp:22684:13: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_type’; did you mean ‘curexc_type’?

22684 | tstate->exc_type = *type;

    |             ^~~~~~~~

    |             curexc_type

pybm3d/bm3d.cpp:22685:13: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_value’; did you mean ‘curexc_value’?

22685 | tstate->exc_value = *value;

    |             ^~~~~~~~~

    |             curexc_value

pybm3d/bm3d.cpp:22686:13: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?

22686 | tstate->exc_traceback = *tb;

    |             ^~~~~~~~~~~~~

    |             curexc_traceback

pybm3d/bm3d.cpp: In function ‘PyObject* __Pyx_PyInt_AddObjC(PyObject*, PyObject*, long int, int)’:

pybm3d/bm3d.cpp:21953:28: warning: this statement may fall through [-Wimplicit-fallthrough=]

21953 | } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {

    |                            ^~

pybm3d/bm3d.cpp:21958:17: note: here

21958 | case 3:

    |                 ^~~~

pybm3d/bm3d.cpp:21963:28: warning: this statement may fall through [-Wimplicit-fallthrough=]

21963 | } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {

    |                            ^~

pybm3d/bm3d.cpp:21968:17: note: here

21968 | case -4:

    |                 ^~~~

pybm3d/bm3d.cpp:21973:28: warning: this statement may fall through [-Wimplicit-fallthrough=]

21973 | } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {

    |                            ^~

pybm3d/bm3d.cpp:21978:17: note: here

21978 | case 4:

    |                 ^~~~

pybm3d/bm3d.cpp:21983:28: warning: this statement may fall through [-Wimplicit-fallthrough=]

21983 | } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {

    |                            ^~

pybm3d/bm3d.cpp:21988:17: note: here

21988 | default: return PyLong_Type.tp_as_number->nb_add(op1, op2);

    |                 ^~~~~~~

pybm3d/bm3d.cpp: In function ‘const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context*, const char*)’:

pybm3d/bm3d.cpp:23792:9: warning: this statement may fall through [-Wimplicit-fallthrough=]

23792 | if (*ts != 'f' && *ts != 'd' && *ts != 'g') {

    |         ^~

pybm3d/bm3d.cpp:23796:7: note: here

23796 | case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I':

    |       ^~~~

pybm3d/bm3d.cpp:23800:9: warning: this statement may fall through [-Wimplicit-fallthrough=]

23800 | if (ctx->enc_type == *ts && got_Z == ctx->is_complex &&

    |         ^~

pybm3d/bm3d.cpp:23808:7: note: here

23808 | case 's':

    |       ^~~~

error: command 'x86_64-linux-gnu-gcc' failed with exit status 1


ERROR: Failed building wheel for pybm3d