2023-09-07T22:34:56,316 Created temporary directory: /tmp/pip-build-tracker-jmry59wv 2023-09-07T22:34:56,318 Initialized build tracking at /tmp/pip-build-tracker-jmry59wv 2023-09-07T22:34:56,318 Created build tracker: /tmp/pip-build-tracker-jmry59wv 2023-09-07T22:34:56,319 Entered build tracker: /tmp/pip-build-tracker-jmry59wv 2023-09-07T22:34:56,319 Created temporary directory: /tmp/pip-wheel-vxd5h7wn 2023-09-07T22:34:56,322 Created temporary directory: /tmp/pip-ephem-wheel-cache-ee1171ht 2023-09-07T22:34:56,345 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-09-07T22:34:56,349 2 location(s) to search for versions of lsystem2: 2023-09-07T22:34:56,349 * https://pypi.org/simple/lsystem2/ 2023-09-07T22:34:56,349 * https://www.piwheels.org/simple/lsystem2/ 2023-09-07T22:34:56,349 Fetching project page and analyzing links: https://pypi.org/simple/lsystem2/ 2023-09-07T22:34:56,351 Getting page https://pypi.org/simple/lsystem2/ 2023-09-07T22:34:56,352 Found index url https://pypi.org/simple/ 2023-09-07T22:34:56,490 Fetched page https://pypi.org/simple/lsystem2/ as application/vnd.pypi.simple.v1+json 2023-09-07T22:34:56,492 Found link https://files.pythonhosted.org/packages/3e/3a/de290d4a116fb83b7dd0541512779834fad1ed2e5b71003125dbff2a97b0/LSystem2-1.0.tar.gz (from https://pypi.org/simple/lsystem2/), version: 1.0 2023-09-07T22:34:56,493 Found link https://files.pythonhosted.org/packages/0a/b5/f647be4871dc0a01065ea9b60cf690245e74d293f87ce2a1872be301a3bb/LSystem2-1.1.tar.gz (from https://pypi.org/simple/lsystem2/), version: 1.1 2023-09-07T22:34:56,494 Found link https://files.pythonhosted.org/packages/99/c2/35b374b41e323394182a817c9422c455fd9fdf8aa5dddee367ed79451a8b/LSystem2-1.2.tar.gz (from https://pypi.org/simple/lsystem2/), version: 1.2 2023-09-07T22:34:56,495 Skipping link: unsupported archive format: .rpm: https://files.pythonhosted.org/packages/d1/32/4090a218eea059077616f7ea13e93891173782ed033f07bbddaa1f9b6cc0/LSystem2-1.3-1.pentium3.rpm (from https://pypi.org/simple/lsystem2/) 2023-09-07T22:34:56,495 Skipping link: unsupported archive format: .rpm: https://files.pythonhosted.org/packages/27/12/d929f3480d9e51a70bcfe18cb4bf045ae5ac1efb69d61520a0ed30217742/LSystem2-1.3-1.src.rpm (from https://pypi.org/simple/lsystem2/) 2023-09-07T22:34:56,496 Found link https://files.pythonhosted.org/packages/0b/52/d40df9b0f631dd6b254a115f02384c8d2ded72b4297e842a24784b975231/LSystem2-1.3.tar.gz (from https://pypi.org/simple/lsystem2/), version: 1.3 2023-09-07T22:34:56,497 Found link https://files.pythonhosted.org/packages/ab/4b/ca78228f9b7686e7e620d8f896d58cb69c5d972516e1550dbb0227f5afc3/LSystem2-1.5.tar.gz (from https://pypi.org/simple/lsystem2/), version: 1.5 2023-09-07T22:34:56,497 Found link https://files.pythonhosted.org/packages/0a/9f/924cf25744f53044458493f8fbcc76bff76ac5b11a787c1aa8a4d8d827df/LSystem2-1.6.tar.gz (from https://pypi.org/simple/lsystem2/), version: 1.6 2023-09-07T22:34:56,498 Fetching project page and analyzing links: https://www.piwheels.org/simple/lsystem2/ 2023-09-07T22:34:56,499 Getting page https://www.piwheels.org/simple/lsystem2/ 2023-09-07T22:34:56,500 Found index url https://www.piwheels.org/simple/ 2023-09-07T22:34:56,765 Fetched page https://www.piwheels.org/simple/lsystem2/ as text/html 2023-09-07T22:34:56,766 Skipping link: not a file: https://www.piwheels.org/simple/lsystem2/ 2023-09-07T22:34:56,767 Skipping link: not a file: https://pypi.org/simple/lsystem2/ 2023-09-07T22:34:56,786 Given no hashes to check 1 links for project 'lsystem2': discarding no candidates 2023-09-07T22:34:56,804 Collecting lsystem2==1.1 2023-09-07T22:34:56,806 Created temporary directory: /tmp/pip-unpack-d7qzrg_i 2023-09-07T22:34:57,032 Downloading LSystem2-1.1.tar.gz (7.6 kB) 2023-09-07T22:34:57,065 Added lsystem2==1.1 from https://files.pythonhosted.org/packages/0a/b5/f647be4871dc0a01065ea9b60cf690245e74d293f87ce2a1872be301a3bb/LSystem2-1.1.tar.gz to build tracker '/tmp/pip-build-tracker-jmry59wv' 2023-09-07T22:34:57,067 Running setup.py (path:/tmp/pip-wheel-vxd5h7wn/lsystem2_bd90876f012a4e88b8f7cce39323ec21/setup.py) egg_info for package lsystem2 2023-09-07T22:34:57,072 Created temporary directory: /tmp/pip-pip-egg-info-27omzesf 2023-09-07T22:34:57,074 Preparing metadata (setup.py): started 2023-09-07T22:34:57,075 Running command python setup.py egg_info 2023-09-07T22:34:57,779 Preparing metadata (setup.py): finished with status 'done' 2023-09-07T22:34:57,782 Source in /tmp/pip-wheel-vxd5h7wn/lsystem2_bd90876f012a4e88b8f7cce39323ec21 has version 1.1, which satisfies requirement lsystem2==1.1 from https://files.pythonhosted.org/packages/0a/b5/f647be4871dc0a01065ea9b60cf690245e74d293f87ce2a1872be301a3bb/LSystem2-1.1.tar.gz 2023-09-07T22:34:57,783 Removed lsystem2==1.1 from https://files.pythonhosted.org/packages/0a/b5/f647be4871dc0a01065ea9b60cf690245e74d293f87ce2a1872be301a3bb/LSystem2-1.1.tar.gz from build tracker '/tmp/pip-build-tracker-jmry59wv' 2023-09-07T22:34:57,787 Created temporary directory: /tmp/pip-unpack-f3mo7m0e 2023-09-07T22:34:57,788 Created temporary directory: /tmp/pip-unpack-9lcxgfse 2023-09-07T22:34:57,791 Building wheels for collected packages: lsystem2 2023-09-07T22:34:57,794 Created temporary directory: /tmp/pip-wheel-_dqaam6r 2023-09-07T22:34:57,795 Building wheel for lsystem2 (setup.py): started 2023-09-07T22:34:57,796 Destination directory: /tmp/pip-wheel-_dqaam6r 2023-09-07T22:34:57,797 Running command python setup.py bdist_wheel 2023-09-07T22:34:58,975 _LSystem.c: In function ‘LSystem_dealloc’: 2023-09-07T22:34:58,975 _LSystem.c:96:7: error: ‘LSystemObject’ has no member named ‘ob_type’ 2023-09-07T22:34:58,976 96 | self->ob_type->tp_free(self); 2023-09-07T22:34:58,977 | ^~ 2023-09-07T22:34:58,977 _LSystem.c: In function ‘LSystem_set_state’: 2023-09-07T22:34:58,978 _LSystem.c:165:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:58,978 165 | for(j = 0; j < self->power; j++){ 2023-09-07T22:34:58,979 | ^ 2023-09-07T22:34:58,980 _LSystem.c:169:9: warning: suggest explicit braces to avoid ambiguous ‘else’ [-Wdangling-else] 2023-09-07T22:34:58,980 169 | if(item == NULL) 2023-09-07T22:34:58,981 | ^ 2023-09-07T22:34:58,982 _LSystem.c: In function ‘LSystem_set_production’: 2023-09-07T22:34:58,982 _LSystem.c:229:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:58,983 229 | for(i = 0; i < self->power; s[i++] = 0); 2023-09-07T22:34:58,983 | ^ 2023-09-07T22:34:58,984 _LSystem.c:240:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:58,984 240 | for(j = 0; j < self->power; j++){ 2023-09-07T22:34:58,985 | ^ 2023-09-07T22:34:58,986 _LSystem.c:244:9: warning: suggest explicit braces to avoid ambiguous ‘else’ [-Wdangling-else] 2023-09-07T22:34:58,986 244 | if(item == NULL) 2023-09-07T22:34:58,987 | ^ 2023-09-07T22:34:58,987 _LSystem.c:273:24: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:58,988 273 | for(pp = p; pp - p < lp * self->power; pp += self->power){ 2023-09-07T22:34:58,988 | ^ 2023-09-07T22:34:58,989 _LSystem.c:282:24: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:58,990 282 | for(pp = p; pp - p < lp * self->power; pp += self->power){ 2023-09-07T22:34:58,990 | ^ 2023-09-07T22:34:58,991 _LSystem.c:298:26: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:58,992 298 | for(pp = p; pp - p < lp * self->power; pp += self->power){ 2023-09-07T22:34:58,992 | ^ 2023-09-07T22:34:58,993 _LSystem.c:311:26: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:58,994 311 | for(pp = p; pp - p < lp * self->power; pp += self->power){ 2023-09-07T22:34:58,994 | ^ 2023-09-07T22:34:58,995 _LSystem.c: In function ‘LSystem_get_zero’: 2023-09-07T22:34:58,995 _LSystem.c:347:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:58,996 347 | for(i = 0; i < self->power; i++){ 2023-09-07T22:34:58,996 | ^ 2023-09-07T22:34:58,997 _LSystem.c: In function ‘LSystem_set_zero’: 2023-09-07T22:34:58,997 _LSystem.c:378:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:58,998 378 | for(i = 0; i < self->power; i++){ 2023-09-07T22:34:58,998 | ^ 2023-09-07T22:34:58,999 _LSystem.c:382:7: warning: suggest explicit braces to avoid ambiguous ‘else’ [-Wdangling-else] 2023-09-07T22:34:58,999 382 | if(item == NULL) 2023-09-07T22:34:59,000 | ^ 2023-09-07T22:34:59,000 _LSystem.c: In function ‘LSystem_get_bounds’: 2023-09-07T22:34:59,001 _LSystem.c:428:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:59,001 428 | for(i = 0; i < self->power; i++){ 2023-09-07T22:34:59,002 | ^ 2023-09-07T22:34:59,002 _LSystem.c: In function ‘LSystem_step’: 2023-09-07T22:34:59,003 _LSystem.c:462:43: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:59,003 462 | for(p = s, ps = self->s; ps - self->s < self->ls * self->power; ps += self->power){ 2023-09-07T22:34:59,004 | ^ 2023-09-07T22:34:59,004 _LSystem.c:465:38: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:59,005 465 | for(pp = self->p; pp - self->p < self->ls * self->power; pp += self->power, p += self->power){ 2023-09-07T22:34:59,006 | ^ 2023-09-07T22:34:59,006 _LSystem.c:471:43: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:59,007 471 | for(p = s, ps = self->s; ps - self->s < self->ls * self->power; ps += self->power){ 2023-09-07T22:34:59,007 | ^ 2023-09-07T22:34:59,008 _LSystem.c:474:38: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:59,008 474 | for(pp = self->p; pp - self->p < self->lp * self->power; pp += self->power, p += self->power){ 2023-09-07T22:34:59,009 | ^ 2023-09-07T22:34:59,009 _LSystem.c:481:43: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:59,010 481 | for(p = s, ps = self->s; ps - self->s < self->ls * self->power; ps += self->power){ 2023-09-07T22:34:59,011 | ^ 2023-09-07T22:34:59,011 _LSystem.c:486:40: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:59,012 486 | for(pp = self->p; pp - self->p < self->lp * self->power; pp += self->power, p += self->power){ 2023-09-07T22:34:59,012 | ^ 2023-09-07T22:34:59,013 _LSystem.c:498:40: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:59,013 498 | for(pp = self->p; pp - self->p < self->lp * self->power; pp += self->power, p += self->power){ 2023-09-07T22:34:59,014 | ^ 2023-09-07T22:34:59,014 _LSystem.c: At top level: 2023-09-07T22:34:59,015 _LSystem.c:534:36: warning: missing braces around initializer [-Wmissing-braces] 2023-09-07T22:34:59,015 534 | static PyTypeObject LSystem_Type = { 2023-09-07T22:34:59,016 | ^ 2023-09-07T22:34:59,016 _LSystem.c:534:36: warning: missing braces around initializer [-Wmissing-braces] 2023-09-07T22:34:59,017 _LSystem.c: In function ‘LSystemIterator_iternext’: 2023-09-07T22:34:59,017 _LSystem.c:560:36: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:59,017 560 | }else if(self->p - self->self->s >= self->self->ls * self->self->power){ 2023-09-07T22:34:59,018 | ^~ 2023-09-07T22:34:59,018 _LSystem.c:561:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:59,019 561 | for(i = 0; i < self->self->power; i++){ 2023-09-07T22:34:59,019 | ^ 2023-09-07T22:34:59,020 _LSystem.c:570:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:59,020 570 | for(i = 0; i < self->self->power; i++){ 2023-09-07T22:34:59,021 | ^ 2023-09-07T22:34:59,021 _LSystem.c: At top level: 2023-09-07T22:34:59,022 _LSystem.c:601:44: warning: missing braces around initializer [-Wmissing-braces] 2023-09-07T22:34:59,022 601 | static PyTypeObject LSystemIterator_Type = { 2023-09-07T22:34:59,023 | ^ 2023-09-07T22:34:59,024 _LSystem.c:601:44: warning: missing braces around initializer [-Wmissing-braces] 2023-09-07T22:34:59,025 _LSystem.c: In function ‘LSystemVIterator_iternext’: 2023-09-07T22:34:59,026 _LSystem.c:625:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 2023-09-07T22:34:59,027 625 | for(i = 0; i < self->self->power; i++){ 2023-09-07T22:34:59,028 | ^ 2023-09-07T22:34:59,028 _LSystem.c: At top level: 2023-09-07T22:34:59,029 _LSystem.c:649:45: warning: missing braces around initializer [-Wmissing-braces] 2023-09-07T22:34:59,029 649 | static PyTypeObject LSystemVIterator_Type = { 2023-09-07T22:34:59,030 | ^ 2023-09-07T22:34:59,031 _LSystem.c:649:45: warning: missing braces around initializer [-Wmissing-braces] 2023-09-07T22:34:59,031 _LSystem.c: In function ‘init_LSystem’: 2023-09-07T22:34:59,032 _LSystem.c:672:14: warning: implicit declaration of function ‘Py_InitModule’ [-Wimplicit-function-declaration] 2023-09-07T22:34:59,032 672 | _LSystem = Py_InitModule("_LSystem", _LSystem_methods); 2023-09-07T22:34:59,033 | ^~~~~~~~~~~~~ 2023-09-07T22:34:59,034 _LSystem.c:672:12: warning: assignment to ‘PyObject *’ {aka ‘struct _object *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion] 2023-09-07T22:34:59,034 672 | _LSystem = Py_InitModule("_LSystem", _LSystem_methods); 2023-09-07T22:34:59,035 | ^ 2023-09-07T22:34:59,035 _LSystem.c:680:3: warning: ‘return’ with no value, in function returning non-void [-Wreturn-type] 2023-09-07T22:34:59,036 680 | return; 2023-09-07T22:34:59,036 | ^~~~~~ 2023-09-07T22:34:59,037 _LSystem.c:663:16: note: declared here 2023-09-07T22:34:59,038 663 | PyMODINIT_FUNC init_LSystem(void){ 2023-09-07T22:34:59,038 | ^~~~~~~~~~~~ 2023-09-07T22:34:59,039 _LSystem.c:683:3: warning: ‘return’ with no value, in function returning non-void [-Wreturn-type] 2023-09-07T22:34:59,040 683 | return; 2023-09-07T22:34:59,040 | ^~~~~~ 2023-09-07T22:34:59,041 _LSystem.c:663:16: note: declared here 2023-09-07T22:34:59,041 663 | PyMODINIT_FUNC init_LSystem(void){ 2023-09-07T22:34:59,042 | ^~~~~~~~~~~~ 2023-09-07T22:34:59,044 _LSystem.c: At top level: 2023-09-07T22:34:59,045 _LSystem.c:99:12: warning: ‘LSystem_length’ defined but not used [-Wunused-function] 2023-09-07T22:34:59,046 99 | static int LSystem_length(LSystemObject *self){ 2023-09-07T22:34:59,046 | ^~~~~~~~~~~~~~ 2023-09-07T22:34:59,049 error: command '/usr/bin/arm-linux-gnueabihf-gcc' failed with exit code 1 2023-09-07T22:34:59,142 ERROR: [present-rich] python setup.py bdist_wheel exited with 1 2023-09-07T22:34:59,155 [bold magenta]full command[/]: [blue]/usr/bin/python3 -u -c ' 2023-09-07T22:34:59,155 exec(compile('"'"''"'"''"'"' 2023-09-07T22:34:59,155 # This is -- a caller that pip uses to run setup.py 2023-09-07T22:34:59,155 # 2023-09-07T22:34:59,155 # - It imports setuptools before invoking setup.py, to enable projects that directly 2023-09-07T22:34:59,155 # import from `distutils.core` to work with newer packaging standards. 2023-09-07T22:34:59,155 # - It provides a clear error message when setuptools is not installed. 2023-09-07T22:34:59,155 # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so 2023-09-07T22:34:59,155 # setuptools doesn'"'"'t think the script is `-c`. This avoids the following warning: 2023-09-07T22:34:59,155 # manifest_maker: standard file '"'"'-c'"'"' not found". 2023-09-07T22:34:59,155 # - It generates a shim setup.py, for handling setup.cfg-only projects. 2023-09-07T22:34:59,155 import os, sys, tokenize 2023-09-07T22:34:59,155 2023-09-07T22:34:59,155 try: 2023-09-07T22:34:59,155 import setuptools 2023-09-07T22:34:59,155 except ImportError as error: 2023-09-07T22:34:59,155 print( 2023-09-07T22:34:59,155 "ERROR: Can not execute `setup.py` since setuptools is not available in " 2023-09-07T22:34:59,155 "the build environment.", 2023-09-07T22:34:59,155 file=sys.stderr, 2023-09-07T22:34:59,155 ) 2023-09-07T22:34:59,155 sys.exit(1) 2023-09-07T22:34:59,155 2023-09-07T22:34:59,155 __file__ = %r 2023-09-07T22:34:59,155 sys.argv[0] = __file__ 2023-09-07T22:34:59,155 2023-09-07T22:34:59,155 if os.path.exists(__file__): 2023-09-07T22:34:59,155 filename = __file__ 2023-09-07T22:34:59,155 with tokenize.open(__file__) as f: 2023-09-07T22:34:59,155 setup_py_code = f.read() 2023-09-07T22:34:59,155 else: 2023-09-07T22:34:59,155 filename = "" 2023-09-07T22:34:59,155 setup_py_code = "from setuptools import setup; setup()" 2023-09-07T22:34:59,155 2023-09-07T22:34:59,155 exec(compile(setup_py_code, filename, "exec")) 2023-09-07T22:34:59,155 '"'"''"'"''"'"' % ('"'"'/tmp/pip-wheel-vxd5h7wn/lsystem2_bd90876f012a4e88b8f7cce39323ec21/setup.py'"'"',), "", "exec"))' bdist_wheel -d /tmp/pip-wheel-_dqaam6r[/] 2023-09-07T22:34:59,155 [bold magenta]cwd[/]: /tmp/pip-wheel-vxd5h7wn/lsystem2_bd90876f012a4e88b8f7cce39323ec21/ 2023-09-07T22:34:59,156 Building wheel for lsystem2 (setup.py): finished with status 'error' 2023-09-07T22:34:59,157 ERROR: Failed building wheel for lsystem2 2023-09-07T22:34:59,159 Running setup.py clean for lsystem2 2023-09-07T22:34:59,160 Running command python setup.py clean 2023-09-07T22:34:59,676 'build/bdist.linux-armv7l' does not exist -- can't clean it 2023-09-07T22:34:59,677 'build/scripts-3.11' does not exist -- can't clean it 2023-09-07T22:34:59,750 Failed to build lsystem2 2023-09-07T22:34:59,752 ERROR: Failed to build one or more wheels 2023-09-07T22:34:59,753 Exception information: 2023-09-07T22:34:59,753 Traceback (most recent call last): 2023-09-07T22:34:59,753 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/cli/base_command.py", line 180, in exc_logging_wrapper 2023-09-07T22:34:59,753 status = run_func(*args) 2023-09-07T22:34:59,753 ^^^^^^^^^^^^^^^ 2023-09-07T22:34:59,753 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/cli/req_command.py", line 248, in wrapper 2023-09-07T22:34:59,753 return func(self, options, args) 2023-09-07T22:34:59,753 ^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-07T22:34:59,753 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/commands/wheel.py", line 181, in run 2023-09-07T22:34:59,753 raise CommandError("Failed to build one or more wheels") 2023-09-07T22:34:59,753 pip._internal.exceptions.CommandError: Failed to build one or more wheels 2023-09-07T22:34:59,756 Removed build tracker: '/tmp/pip-build-tracker-jmry59wv'