2025-09-07T21:56:16,835 Created temporary directory: /tmp/pip-build-tracker-7u2txkzl 2025-09-07T21:56:16,836 Initialized build tracking at /tmp/pip-build-tracker-7u2txkzl 2025-09-07T21:56:16,836 Created build tracker: /tmp/pip-build-tracker-7u2txkzl 2025-09-07T21:56:16,836 Entered build tracker: /tmp/pip-build-tracker-7u2txkzl 2025-09-07T21:56:16,836 Created temporary directory: /tmp/pip-wheel-uxq1xhtg 2025-09-07T21:56:16,839 Created temporary directory: /tmp/pip-ephem-wheel-cache-2827d4f8 2025-09-07T21:56:16,895 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2025-09-07T21:56:16,897 2 location(s) to search for versions of quaternion-algebra: 2025-09-07T21:56:16,897 * https://pypi.org/simple/quaternion-algebra/ 2025-09-07T21:56:16,897 * https://www.piwheels.org/simple/quaternion-algebra/ 2025-09-07T21:56:16,897 Fetching project page and analyzing links: https://pypi.org/simple/quaternion-algebra/ 2025-09-07T21:56:16,898 Getting page https://pypi.org/simple/quaternion-algebra/ 2025-09-07T21:56:16,899 Found index url https://pypi.org/simple/ 2025-09-07T21:56:17,021 Fetched page https://pypi.org/simple/quaternion-algebra/ as application/vnd.pypi.simple.v1+json 2025-09-07T21:56:17,023 Found link https://files.pythonhosted.org/packages/5a/32/76c60f33820b5ad6bb1947037f07099f63e9201803b1d04e8316f9d46a06/quaternion-algebra-1.0.tar.gz (from https://pypi.org/simple/quaternion-algebra/), version: 1.0 2025-09-07T21:56:17,023 Found link https://files.pythonhosted.org/packages/fa/8c/33aae81422632d8d878103dddd6508d832136ac1b58a9b4ae02c79f3face/quaternion-algebra-1.0.1.tar.gz (from https://pypi.org/simple/quaternion-algebra/), version: 1.0.1 2025-09-07T21:56:17,024 Fetching project page and analyzing links: https://www.piwheels.org/simple/quaternion-algebra/ 2025-09-07T21:56:17,024 Getting page https://www.piwheels.org/simple/quaternion-algebra/ 2025-09-07T21:56:17,026 Found index url https://www.piwheels.org/simple/ 2025-09-07T21:56:17,146 Fetched page https://www.piwheels.org/simple/quaternion-algebra/ as text/html 2025-09-07T21:56:17,147 Skipping link: not a file: https://www.piwheels.org/simple/quaternion-algebra/ 2025-09-07T21:56:17,148 Skipping link: not a file: https://pypi.org/simple/quaternion-algebra/ 2025-09-07T21:56:17,182 Given no hashes to check 1 links for project 'quaternion-algebra': discarding no candidates 2025-09-07T21:56:17,183 Collecting quaternion-algebra==1.0.1 2025-09-07T21:56:17,184 Created temporary directory: /tmp/pip-unpack-y6wyg345 2025-09-07T21:56:17,322 Downloading quaternion-algebra-1.0.1.tar.gz (16 kB) 2025-09-07T21:56:17,344 Added quaternion-algebra==1.0.1 from https://files.pythonhosted.org/packages/fa/8c/33aae81422632d8d878103dddd6508d832136ac1b58a9b4ae02c79f3face/quaternion-algebra-1.0.1.tar.gz to build tracker '/tmp/pip-build-tracker-7u2txkzl' 2025-09-07T21:56:17,346 Running setup.py (path:/tmp/pip-wheel-uxq1xhtg/quaternion-algebra_edccfbcd79e8457e8d5aa164e367f9a1/setup.py) egg_info for package quaternion-algebra 2025-09-07T21:56:17,346 Created temporary directory: /tmp/pip-pip-egg-info-rxgyetjm 2025-09-07T21:56:17,347 Preparing metadata (setup.py): started 2025-09-07T21:56:17,348 Running command python setup.py egg_info 2025-09-07T21:56:18,026 /usr/local/lib/python3.13/dist-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'test_suite' 2025-09-07T21:56:18,026 warnings.warn(msg) 2025-09-07T21:56:18,493 running egg_info 2025-09-07T21:56:18,569 creating /tmp/pip-pip-egg-info-rxgyetjm/quaternion_algebra.egg-info 2025-09-07T21:56:18,570 writing /tmp/pip-pip-egg-info-rxgyetjm/quaternion_algebra.egg-info/PKG-INFO 2025-09-07T21:56:18,571 writing dependency_links to /tmp/pip-pip-egg-info-rxgyetjm/quaternion_algebra.egg-info/dependency_links.txt 2025-09-07T21:56:18,571 writing top-level names to /tmp/pip-pip-egg-info-rxgyetjm/quaternion_algebra.egg-info/top_level.txt 2025-09-07T21:56:18,572 writing manifest file '/tmp/pip-pip-egg-info-rxgyetjm/quaternion_algebra.egg-info/SOURCES.txt' 2025-09-07T21:56:18,869 reading manifest file '/tmp/pip-pip-egg-info-rxgyetjm/quaternion_algebra.egg-info/SOURCES.txt' 2025-09-07T21:56:18,869 reading manifest template 'MANIFEST.in' 2025-09-07T21:56:18,874 warning: no previously-included files matching '*.pyc' found anywhere in distribution 2025-09-07T21:56:18,874 warning: no previously-included files matching '*.so' found anywhere in distribution 2025-09-07T21:56:18,876 writing manifest file '/tmp/pip-pip-egg-info-rxgyetjm/quaternion_algebra.egg-info/SOURCES.txt' 2025-09-07T21:56:18,989 Preparing metadata (setup.py): finished with status 'done' 2025-09-07T21:56:18,994 Source in /tmp/pip-wheel-uxq1xhtg/quaternion-algebra_edccfbcd79e8457e8d5aa164e367f9a1 has version 1.0.1, which satisfies requirement quaternion-algebra==1.0.1 from https://files.pythonhosted.org/packages/fa/8c/33aae81422632d8d878103dddd6508d832136ac1b58a9b4ae02c79f3face/quaternion-algebra-1.0.1.tar.gz 2025-09-07T21:56:18,994 Removed quaternion-algebra==1.0.1 from https://files.pythonhosted.org/packages/fa/8c/33aae81422632d8d878103dddd6508d832136ac1b58a9b4ae02c79f3face/quaternion-algebra-1.0.1.tar.gz from build tracker '/tmp/pip-build-tracker-7u2txkzl' 2025-09-07T21:56:18,997 Created temporary directory: /tmp/pip-unpack-dz94c6d4 2025-09-07T21:56:18,997 Created temporary directory: /tmp/pip-unpack-eltgmnom 2025-09-07T21:56:18,997 Building wheels for collected packages: quaternion-algebra 2025-09-07T21:56:18,999 Created temporary directory: /tmp/pip-wheel-2af3cmyu 2025-09-07T21:56:18,999 DEPRECATION: Building 'quaternion-algebra' using the legacy setup.py bdist_wheel mechanism, which will be removed in a future version. pip 25.3 will enforce this behaviour change. A possible replacement is to use the standardized build interface by setting the `--use-pep517` option, (possibly combined with `--no-build-isolation`), or adding a `pyproject.toml` file to the source tree of 'quaternion-algebra'. Discussion can be found at https://github.com/pypa/pip/issues/6334 2025-09-07T21:56:19,000 Building wheel for quaternion-algebra (setup.py): started 2025-09-07T21:56:19,001 Destination directory: /tmp/pip-wheel-2af3cmyu 2025-09-07T21:56:19,001 Running command python setup.py bdist_wheel 2025-09-07T21:56:19,677 /usr/local/lib/python3.13/dist-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'test_suite' 2025-09-07T21:56:19,677 warnings.warn(msg) 2025-09-07T21:56:20,063 running bdist_wheel 2025-09-07T21:56:20,427 running build 2025-09-07T21:56:20,427 running build_py 2025-09-07T21:56:20,503 creating build/lib.linux-armv7l-cpython-313/quaternion 2025-09-07T21:56:20,504 copying src/quaternion/__init__.py -> build/lib.linux-armv7l-cpython-313/quaternion 2025-09-07T21:56:20,504 copying src/quaternion/quaternion.py -> build/lib.linux-armv7l-cpython-313/quaternion 2025-09-07T21:56:20,506 running build_ext 2025-09-07T21:56:20,863 building 'quaternion._quaternion' extension 2025-09-07T21:56:20,863 creating build/temp.linux-armv7l-cpython-313/src/quaternion 2025-09-07T21:56:20,864 arm-linux-gnueabihf-gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O2 -Wall -fPIC -I/usr/include/python3.13 -c src/quaternion/quaternion.c -o build/temp.linux-armv7l-cpython-313/src/quaternion/quaternion.o 2025-09-07T21:56:21,213 src/quaternion/quaternion.c: In function ‘Quaternion_dealloc’: 2025-09-07T21:56:21,213 src/quaternion/quaternion.c:11:9: error: ‘Quaternion’ has no member named ‘ob_type’ 2025-09-07T21:56:21,213 11 | self->ob_type->tp_free((PyObject*)self); 2025-09-07T21:56:21,214 | ^~ 2025-09-07T21:56:21,229 src/quaternion/quaternion.c: In function ‘Quaternion_str’: 2025-09-07T21:56:21,229 src/quaternion/quaternion.c:90:18: error: implicit declaration of function ‘PyString_FromString’; did you mean ‘PyLong_FromString’? [-Wimplicit-function-declaration] 2025-09-07T21:56:21,229 90 | format = PyString_FromString("(%s%s %s %si %s %sj %s %sk)"); 2025-09-07T21:56:21,229 | ^~~~~~~~~~~~~~~~~~~ 2025-09-07T21:56:21,230 | PyLong_FromString 2025-09-07T21:56:21,230 src/quaternion/quaternion.c:90:16: error: assignment to ‘PyObject *’ {aka ‘struct _object *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion] 2025-09-07T21:56:21,230 90 | format = PyString_FromString("(%s%s %s %si %s %sj %s %sk)"); 2025-09-07T21:56:21,230 | ^ 2025-09-07T21:56:21,243 src/quaternion/quaternion.c:97:14: error: implicit declaration of function ‘PyString_Format’; did you mean ‘PyErr_Format’? [-Wimplicit-function-declaration] 2025-09-07T21:56:21,244 97 | result = PyString_Format(format, args); 2025-09-07T21:56:21,244 | ^~~~~~~~~~~~~~~ 2025-09-07T21:56:21,244 | PyErr_Format 2025-09-07T21:56:21,244 src/quaternion/quaternion.c:97:12: error: assignment to ‘PyObject *’ {aka ‘struct _object *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion] 2025-09-07T21:56:21,244 97 | result = PyString_Format(format, args); 2025-09-07T21:56:21,244 | ^ 2025-09-07T21:56:21,246 src/quaternion/quaternion.c: At top level: 2025-09-07T21:56:21,246 src/quaternion/quaternion.c:197:5: error: initialization of ‘int (*)(PyObject *)’ {aka ‘int (*)(struct _object *)’} from incompatible pointer type ‘PyObject * (*)(PyObject *)’ {aka ‘struct _object * (*)(struct _object *)’} [-Wincompatible-pointer-types] 2025-09-07T21:56:21,246 197 | (unaryfunc)Quaternion_absolute, /* nb_absolute */ 2025-09-07T21:56:21,246 | ^ 2025-09-07T21:56:21,246 src/quaternion/quaternion.c:197:5: note: (near initialization for ‘Quaternion_as_number.nb_bool’) 2025-09-07T21:56:21,246 src/quaternion/quaternion.c:224:5: warning: excess elements in struct initializer 2025-09-07T21:56:21,246 224 | 0, /* nb_inplace_floor_divide */ 2025-09-07T21:56:21,246 | ^ 2025-09-07T21:56:21,246 src/quaternion/quaternion.c:224:5: note: (near initialization for ‘Quaternion_as_number’) 2025-09-07T21:56:21,247 src/quaternion/quaternion.c:225:5: warning: excess elements in struct initializer 2025-09-07T21:56:21,247 225 | 0, /* nb_inplace_true_divide */ 2025-09-07T21:56:21,247 | ^ 2025-09-07T21:56:21,247 src/quaternion/quaternion.c:225:5: note: (near initialization for ‘Quaternion_as_number’) 2025-09-07T21:56:21,247 src/quaternion/quaternion.c:226:5: warning: excess elements in struct initializer 2025-09-07T21:56:21,247 226 | 0, /* nb_index */ 2025-09-07T21:56:21,247 | ^ 2025-09-07T21:56:21,247 src/quaternion/quaternion.c:226:5: note: (near initialization for ‘Quaternion_as_number’) 2025-09-07T21:56:21,247 src/quaternion/quaternion.c:230:38: warning: missing braces around initializer [-Wmissing-braces] 2025-09-07T21:56:21,247 230 | static PyTypeObject QuaternionType = { 2025-09-07T21:56:21,248 | ^ 2025-09-07T21:56:21,248 In file included from /usr/include/python3.13/Python.h:72, 2025-09-07T21:56:21,248 from src/quaternion/quaternion.c:1: 2025-09-07T21:56:21,249 /usr/include/python3.13/object.h:138:9: error: initialization of ‘int’ from ‘void *’ makes integer from pointer without a cast [-Wint-conversion] 2025-09-07T21:56:21,249 138 | (type) \ 2025-09-07T21:56:21,249 | ^ 2025-09-07T21:56:21,249 src/quaternion/quaternion.c:231:5: note: in expansion of macro ‘PyObject_HEAD_INIT’ 2025-09-07T21:56:21,249 231 | PyObject_HEAD_INIT(NULL) 2025-09-07T21:56:21,249 | ^~~~~~~~~~~~~~~~~~ 2025-09-07T21:56:21,249 /usr/include/python3.13/object.h:138:9: note: (near initialization for ‘QuaternionType.ob_base.ob_size’) 2025-09-07T21:56:21,249 138 | (type) \ 2025-09-07T21:56:21,249 | ^ 2025-09-07T21:56:21,249 src/quaternion/quaternion.c:231:5: note: in expansion of macro ‘PyObject_HEAD_INIT’ 2025-09-07T21:56:21,250 231 | PyObject_HEAD_INIT(NULL) 2025-09-07T21:56:21,250 | ^~~~~~~~~~~~~~~~~~ 2025-09-07T21:56:21,250 src/quaternion/quaternion.c:230:38: warning: missing braces around initializer [-Wmissing-braces] 2025-09-07T21:56:21,250 230 | static PyTypeObject QuaternionType = { 2025-09-07T21:56:21,250 | ^ 2025-09-07T21:56:21,250 src/quaternion/quaternion.c:233:5: error: initialization of ‘int’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion] 2025-09-07T21:56:21,250 233 | "_quaternion.Quaternion", /* tp_name */ 2025-09-07T21:56:21,250 | ^~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-07T21:56:21,250 src/quaternion/quaternion.c:233:5: note: (near initialization for ‘QuaternionType.tp_basicsize’) 2025-09-07T21:56:21,250 src/quaternion/quaternion.c:236:5: error: initialization of ‘int’ from ‘void (*)(PyObject *)’ {aka ‘void (*)(struct _object *)’} makes integer from pointer without a cast [-Wint-conversion] 2025-09-07T21:56:21,250 236 | (destructor)Quaternion_dealloc, /* tp_dealloc */ 2025-09-07T21:56:21,251 | ^ 2025-09-07T21:56:21,251 src/quaternion/quaternion.c:236:5: note: (near initialization for ‘QuaternionType.tp_vectorcall_offset’) 2025-09-07T21:56:21,251 src/quaternion/quaternion.c:242:5: error: initialization of ‘PySequenceMethods *’ from incompatible pointer type ‘PyNumberMethods *’ [-Wincompatible-pointer-types] 2025-09-07T21:56:21,251 242 | &Quaternion_as_number, /* tp_as_number */ 2025-09-07T21:56:21,251 | ^ 2025-09-07T21:56:21,251 src/quaternion/quaternion.c:242:5: note: (near initialization for ‘QuaternionType.tp_as_sequence’) 2025-09-07T21:56:21,251 src/quaternion/quaternion.c:247:5: error: initialization of ‘PyObject * (*)(PyObject *, PyObject *)’ {aka ‘struct _object * (*)(struct _object *, struct _object *)’} from incompatible pointer type ‘PyObject * (*)(PyObject *)’ {aka ‘struct _object * (*)(struct _object *)’} [-Wincompatible-pointer-types] 2025-09-07T21:56:21,251 247 | (reprfunc)Quaternion_str, /* tp_str */ 2025-09-07T21:56:21,251 | ^ 2025-09-07T21:56:21,251 src/quaternion/quaternion.c:247:5: note: (near initialization for ‘QuaternionType.tp_getattro’) 2025-09-07T21:56:21,252 /usr/include/python3.13/object.h:729:29: error: initialization of ‘const char *’ from ‘long unsigned int’ makes pointer from integer without a cast [-Wint-conversion] 2025-09-07T21:56:21,252 729 | #define Py_TPFLAGS_DEFAULT ( \ 2025-09-07T21:56:21,252 | ^ 2025-09-07T21:56:21,252 src/quaternion/quaternion.c:251:5: note: in expansion of macro ‘Py_TPFLAGS_DEFAULT’ 2025-09-07T21:56:21,252 251 | Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ 2025-09-07T21:56:21,252 | ^~~~~~~~~~~~~~~~~~ 2025-09-07T21:56:21,252 /usr/include/python3.13/object.h:729:29: note: (near initialization for ‘QuaternionType.tp_doc’) 2025-09-07T21:56:21,252 729 | #define Py_TPFLAGS_DEFAULT ( \ 2025-09-07T21:56:21,252 | ^ 2025-09-07T21:56:21,252 src/quaternion/quaternion.c:251:5: note: in expansion of macro ‘Py_TPFLAGS_DEFAULT’ 2025-09-07T21:56:21,252 251 | Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ 2025-09-07T21:56:21,252 | ^~~~~~~~~~~~~~~~~~ 2025-09-07T21:56:21,253 src/quaternion/quaternion.c:252:5: error: initialization of ‘int (*)(PyObject *, int (*)(PyObject *, void *), void *)’ {aka ‘int (*)(struct _object *, int (*)(struct _object *, void *), void *)’} from incompatible pointer type ‘char *’ [-Wincompatible-pointer-types] 2025-09-07T21:56:21,253 252 | "Quaternion object", /* tp_doc */ 2025-09-07T21:56:21,253 | ^~~~~~~~~~~~~~~~~~~ 2025-09-07T21:56:21,253 src/quaternion/quaternion.c:252:5: note: (near initialization for ‘QuaternionType.tp_traverse’) 2025-09-07T21:56:21,253 src/quaternion/quaternion.c:259:5: error: initialization of ‘PyMemberDef *’ from incompatible pointer type ‘PyMethodDef *’ [-Wincompatible-pointer-types] 2025-09-07T21:56:21,253 259 | Quaternion_methods, /* tp_methods */ 2025-09-07T21:56:21,253 | ^~~~~~~~~~~~~~~~~~ 2025-09-07T21:56:21,253 src/quaternion/quaternion.c:259:5: note: (near initialization for ‘QuaternionType.tp_members’) 2025-09-07T21:56:21,254 src/quaternion/quaternion.c:260:5: error: initialization of ‘PyGetSetDef *’ from incompatible pointer type ‘PyMemberDef *’ [-Wincompatible-pointer-types] 2025-09-07T21:56:21,254 260 | Quaternion_members, /* tp_members */ 2025-09-07T21:56:21,254 | ^~~~~~~~~~~~~~~~~~ 2025-09-07T21:56:21,254 src/quaternion/quaternion.c:260:5: note: (near initialization for ‘QuaternionType.tp_getset’) 2025-09-07T21:56:21,254 src/quaternion/quaternion.c:267:5: error: initialization of ‘PyObject * (*)(PyTypeObject *, Py_ssize_t)’ {aka ‘struct _object * (*)(struct _typeobject *, int)’} from incompatible pointer type ‘int (*)(PyObject *, PyObject *, PyObject *)’ {aka ‘int (*)(struct _object *, struct _object *, struct _object *)’} [-Wincompatible-pointer-types] 2025-09-07T21:56:21,254 267 | (initproc)Quaternion_init, /* tp_init */ 2025-09-07T21:56:21,254 | ^ 2025-09-07T21:56:21,254 src/quaternion/quaternion.c:267:5: note: (near initialization for ‘QuaternionType.tp_alloc’) 2025-09-07T21:56:21,254 src/quaternion/quaternion.c:269:5: error: initialization of ‘void (*)(void *)’ from incompatible pointer type ‘PyObject * (*)(PyTypeObject *, PyObject *, PyObject *)’ {aka ‘struct _object * (*)(struct _typeobject *, struct _object *, struct _object *)’} [-Wincompatible-pointer-types] 2025-09-07T21:56:21,254 269 | Quaternion_new, /* tp_new */ 2025-09-07T21:56:21,255 | ^~~~~~~~~~~~~~ 2025-09-07T21:56:21,255 src/quaternion/quaternion.c:269:5: note: (near initialization for ‘QuaternionType.tp_free’) 2025-09-07T21:56:21,255 src/quaternion/quaternion.c:230:38: warning: missing braces around initializer [-Wmissing-braces] 2025-09-07T21:56:21,255 230 | static PyTypeObject QuaternionType = { 2025-09-07T21:56:21,255 | ^ 2025-09-07T21:56:21,255 src/quaternion/quaternion.c: In function ‘init_quaternion’: 2025-09-07T21:56:21,255 src/quaternion/quaternion.c:283:44: error: ‘return’ with no value, in function returning non-void [-Wreturn-mismatch] 2025-09-07T21:56:21,255 283 | if (PyType_Ready(&QuaternionType) < 0) return; 2025-09-07T21:56:21,255 | ^~~~~~ 2025-09-07T21:56:21,255 src/quaternion/quaternion.c:279:1: note: declared here 2025-09-07T21:56:21,255 279 | init_quaternion(void) 2025-09-07T21:56:21,256 | ^~~~~~~~~~~~~~~ 2025-09-07T21:56:21,267 src/quaternion/quaternion.c:285:9: error: implicit declaration of function ‘Py_InitModule’ [-Wimplicit-function-declaration] 2025-09-07T21:56:21,267 285 | m = Py_InitModule("_quaternion", quaternion_funcs); 2025-09-07T21:56:21,267 | ^~~~~~~~~~~~~ 2025-09-07T21:56:21,268 src/quaternion/quaternion.c:285:7: error: assignment to ‘PyObject *’ {aka ‘struct _object *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion] 2025-09-07T21:56:21,268 285 | m = Py_InitModule("_quaternion", quaternion_funcs); 2025-09-07T21:56:21,268 | ^ 2025-09-07T21:56:21,268 src/quaternion/quaternion.c:287:20: error: ‘return’ with no value, in function returning non-void [-Wreturn-mismatch] 2025-09-07T21:56:21,268 287 | if (m == NULL) return; 2025-09-07T21:56:21,268 | ^~~~~~ 2025-09-07T21:56:21,268 src/quaternion/quaternion.c:279:1: note: declared here 2025-09-07T21:56:21,268 279 | init_quaternion(void) 2025-09-07T21:56:21,268 | ^~~~~~~~~~~~~~~ 2025-09-07T21:56:21,278 error: command '/usr/bin/arm-linux-gnueabihf-gcc' failed with exit code 1 2025-09-07T21:56:21,427 ERROR: python setup.py bdist_wheel exited with 1 2025-09-07T21:56:21,439 [bold magenta]full command[/]: [blue]/usr/bin/python3 -u -c ' 2025-09-07T21:56:21,439 exec(compile('"'"''"'"''"'"' 2025-09-07T21:56:21,439 # This is -- a caller that pip uses to run setup.py 2025-09-07T21:56:21,439 # 2025-09-07T21:56:21,439 # - It imports setuptools before invoking setup.py, to enable projects that directly 2025-09-07T21:56:21,439 # import from `distutils.core` to work with newer packaging standards. 2025-09-07T21:56:21,439 # - It provides a clear error message when setuptools is not installed. 2025-09-07T21:56:21,439 # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so 2025-09-07T21:56:21,439 # setuptools doesn'"'"'t think the script is `-c`. This avoids the following warning: 2025-09-07T21:56:21,439 # manifest_maker: standard file '"'"'-c'"'"' not found". 2025-09-07T21:56:21,439 # - It generates a shim setup.py, for handling setup.cfg-only projects. 2025-09-07T21:56:21,439 import os, sys, tokenize, traceback 2025-09-07T21:56:21,439 2025-09-07T21:56:21,439 try: 2025-09-07T21:56:21,439 import setuptools 2025-09-07T21:56:21,439 except ImportError: 2025-09-07T21:56:21,439 print( 2025-09-07T21:56:21,439 "ERROR: Can not execute `setup.py` since setuptools failed to import in " 2025-09-07T21:56:21,439 "the build environment with exception:", 2025-09-07T21:56:21,439 file=sys.stderr, 2025-09-07T21:56:21,439 ) 2025-09-07T21:56:21,439 traceback.print_exc() 2025-09-07T21:56:21,439 sys.exit(1) 2025-09-07T21:56:21,439 2025-09-07T21:56:21,439 __file__ = %r 2025-09-07T21:56:21,439 sys.argv[0] = __file__ 2025-09-07T21:56:21,439 2025-09-07T21:56:21,439 if os.path.exists(__file__): 2025-09-07T21:56:21,439 filename = __file__ 2025-09-07T21:56:21,439 with tokenize.open(__file__) as f: 2025-09-07T21:56:21,439 setup_py_code = f.read() 2025-09-07T21:56:21,439 else: 2025-09-07T21:56:21,439 filename = "" 2025-09-07T21:56:21,439 setup_py_code = "from setuptools import setup; setup()" 2025-09-07T21:56:21,439 2025-09-07T21:56:21,439 exec(compile(setup_py_code, filename, "exec")) 2025-09-07T21:56:21,439 '"'"''"'"''"'"' % ('"'"'/tmp/pip-wheel-uxq1xhtg/quaternion-algebra_edccfbcd79e8457e8d5aa164e367f9a1/setup.py'"'"',), "", "exec"))' bdist_wheel -d /tmp/pip-wheel-2af3cmyu[/] 2025-09-07T21:56:21,439 [bold magenta]cwd[/]: /tmp/pip-wheel-uxq1xhtg/quaternion-algebra_edccfbcd79e8457e8d5aa164e367f9a1/ 2025-09-07T21:56:21,439 Building wheel for quaternion-algebra (setup.py): finished with status 'error' 2025-09-07T21:56:21,440 ERROR: Failed building wheel for quaternion-algebra 2025-09-07T21:56:21,441 Running setup.py clean for quaternion-algebra 2025-09-07T21:56:21,441 Running command python setup.py clean 2025-09-07T21:56:22,116 /usr/local/lib/python3.13/dist-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'test_suite' 2025-09-07T21:56:22,116 warnings.warn(msg) 2025-09-07T21:56:22,572 running clean 2025-09-07T21:56:22,716 removing 'build/temp.linux-armv7l-cpython-313' (and everything under it) 2025-09-07T21:56:22,717 removing 'build/lib.linux-armv7l-cpython-313' (and everything under it) 2025-09-07T21:56:22,717 'build/bdist.linux-armv7l' does not exist -- can't clean it 2025-09-07T21:56:22,717 'build/scripts-3.13' does not exist -- can't clean it 2025-09-07T21:56:22,717 removing 'build' 2025-09-07T21:56:22,830 Failed to build quaternion-algebra 2025-09-07T21:56:22,830 ERROR: Failed to build one or more wheels 2025-09-07T21:56:22,831 Exception information: 2025-09-07T21:56:22,831 Traceback (most recent call last): 2025-09-07T21:56:22,831 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 105, in _run_wrapper 2025-09-07T21:56:22,831 status = _inner_run() 2025-09-07T21:56:22,831 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 96, in _inner_run 2025-09-07T21:56:22,831 return self.run(options, args) 2025-09-07T21:56:22,831 ~~~~~~~~^^^^^^^^^^^^^^^ 2025-09-07T21:56:22,831 File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 68, in wrapper 2025-09-07T21:56:22,831 return func(self, options, args) 2025-09-07T21:56:22,831 File "/usr/lib/python3/dist-packages/pip/_internal/commands/wheel.py", line 180, in run 2025-09-07T21:56:22,831 raise CommandError("Failed to build one or more wheels") 2025-09-07T21:56:22,831 pip._internal.exceptions.CommandError: Failed to build one or more wheels 2025-09-07T21:56:22,835 Removed build tracker: '/tmp/pip-build-tracker-7u2txkzl'