Hi, Has anyone a solution for the KeyError problem in Weave?
We encounter the same KeyError problem with SciPy (0.7.1) -weave on Scientific Linux / Python 2.6. After investigation, it turns out that some of the unit tests delivered with Scipy-Weave also fail with the same error. Below is a list of tests that fail in for example the "test_c_spec" file. They all raise a KeyError. I downloaded the latest Weave code again from the SVN repository (trunk), but the problem is not resolved. Any idea on how to tackle this problem? There are no posts that help me further other than this one. I don't have this problem with the Debian package of scipy that is available for Ubuntu 9.04 (apparently the weave version number is the same). It looks like the compilation that weave triggers works fine, see sample stdout also below. What could cause this? Is there a patch available? thanks for any help. Emmanuel ******************* SAMPLE OF STDOUT (compilation by weave) ****************** -------------------- >> begin captured stdout << --------------------- <weave: compiling> running build_ext running build_src building extension "sc_d133102ab45193e072f8dbb5a1f6848513" sources customize UnixCCompiler customize UnixCCompiler using build_ext customize UnixCCompiler customize UnixCCompiler using build_ext building 'sc_d133102ab45193e072f8dbb5a1f6848513' extension compiling C++ sources C compiler: g++ -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 - Wall -fPIC compile options: '-I/user/home/gent/vsc401/vsc40157/scipy-runtime/ scipy/weave -I/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/ weave/scxx -I/user/home/gent/vsc401/vsc40157/numpy-runtime/numpy/core/ include -I/apps/gent/gengar/harpertown/software/Python/2.6.2- gimkl-0.5.0/include/python2.6 -c' g++: /user/home/gent/vsc401/vsc40157/.python26_compiled/ sc_d133102ab45193e072f8dbb5a1f6848513.cpp g++ -pthread -shared /tmp/vsc40157/python26_intermediate/ compiler_c1b5f1b73f1ce7d0c836cdad4c7c5ded/user/home/gent/vsc401/ vsc40157/.python26_compiled/sc_d133102ab45193e072f8dbb5a1f6848513.o / tmp/vsc40157/python26_intermediate/ compiler_c1b5f1b73f1ce7d0c836cdad4c7c5ded/user/home/gent/vsc401/ vsc40157/scipy-runtime/scipy/weave/scxx/weave_imp.o -o /user/home/ gent/ vsc401/vsc40157/.python26_compiled/ sc_d133102ab45193e072f8dbb5a1f6848513.so running scons --------------------- >> end captured stdout << ---------------------- ********************** TESTS THAT FAIL *********************** -bash-3.2$ python ./test_c_spec.py E..........EE.................EEEE......E..........EE.................EEEE.............. ====================================================================== ERROR: test_call_function (test_c_spec.CallableConverter) ---------------------------------------------------------------------- Traceback (most recent call last): File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ tests/test_c_spec.py", line 296, in test_call_function compiler=self.compiler,force=1) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ inline_tools.py", line 301, in inline function_catalog.add_function(code,func,module_dir) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 648, in add_function self.cache[code] = self.get_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 615, in get_functions function_list = self.get_cataloged_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 529, in get_cataloged_functions if cat is not None and code in cat: File "/apps/gent/gengar/harpertown/software/Python/2.6.2-gimkl-0.5.0/ lib/python2.6/shelve.py", line 110, in __contains__ return key in self.dict File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/io/ dumbdbm_patched.py", line 73, in __getitem__ pos, siz = self._index[key] # may raise KeyError KeyError: 0 ====================================================================== ERROR: test_file_to_py (test_c_spec.FileConverter) ---------------------------------------------------------------------- Traceback (most recent call last): File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ tests/test_c_spec.py", line 262, in test_file_to_py force=1) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ inline_tools.py", line 301, in inline function_catalog.add_function(code,func,module_dir) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 648, in add_function self.cache[code] = self.get_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 615, in get_functions function_list = self.get_cataloged_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 529, in get_cataloged_functions if cat is not None and code in cat: File "/apps/gent/gengar/harpertown/software/Python/2.6.2-gimkl-0.5.0/ lib/python2.6/shelve.py", line 110, in __contains__ return key in self.dict File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/io/ dumbdbm_patched.py", line 73, in __getitem__ pos, siz = self._index[key] # may raise KeyError KeyError: 0 ====================================================================== ERROR: test_py_to_file (test_c_spec.FileConverter) ---------------------------------------------------------------------- Traceback (most recent call last): File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ tests/test_c_spec.py", line 246, in test_py_to_file inline_tools.inline(code,['file'],compiler=self.compiler,force=1) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ inline_tools.py", line 301, in inline function_catalog.add_function(code,func,module_dir) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 648, in add_function self.cache[code] = self.get_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 615, in get_functions function_list = self.get_cataloged_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 529, in get_cataloged_functions if cat is not None and code in cat: File "/apps/gent/gengar/harpertown/software/Python/2.6.2-gimkl-0.5.0/ lib/python2.6/shelve.py", line 110, in __contains__ return key in self.dict File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/io/ dumbdbm_patched.py", line 73, in __getitem__ pos, siz = self._index[key] # may raise KeyError KeyError: 0 ====================================================================== ERROR: test_convert_to_dict (test_c_spec.SequenceConverter) ---------------------------------------------------------------------- Traceback (most recent call last): File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ tests/test_c_spec.py", line 305, in test_convert_to_dict inline_tools.inline("",['d'],compiler=self.compiler,force=1) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ inline_tools.py", line 301, in inline function_catalog.add_function(code,func,module_dir) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 648, in add_function self.cache[code] = self.get_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 615, in get_functions function_list = self.get_cataloged_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 529, in get_cataloged_functions if cat is not None and code in cat: File "/apps/gent/gengar/harpertown/software/Python/2.6.2-gimkl-0.5.0/ lib/python2.6/shelve.py", line 110, in __contains__ return key in self.dict File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/io/ dumbdbm_patched.py", line 73, in __getitem__ pos, siz = self._index[key] # may raise KeyError KeyError: 0 ====================================================================== ERROR: test_convert_to_list (test_c_spec.SequenceConverter) ---------------------------------------------------------------------- Traceback (most recent call last): File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ tests/test_c_spec.py", line 309, in test_convert_to_list inline_tools.inline("",['l'],compiler=self.compiler,force=1) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ inline_tools.py", line 301, in inline function_catalog.add_function(code,func,module_dir) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 648, in add_function self.cache[code] = self.get_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 615, in get_functions function_list = self.get_cataloged_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 529, in get_cataloged_functions if cat is not None and code in cat: File "/apps/gent/gengar/harpertown/software/Python/2.6.2-gimkl-0.5.0/ lib/python2.6/shelve.py", line 110, in __contains__ return key in self.dict File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/io/ dumbdbm_patched.py", line 73, in __getitem__ pos, siz = self._index[key] # may raise KeyError KeyError: 0 ====================================================================== ERROR: test_convert_to_string (test_c_spec.SequenceConverter) ---------------------------------------------------------------------- Traceback (most recent call last): File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ tests/test_c_spec.py", line 313, in test_convert_to_string inline_tools.inline("",['s'],compiler=self.compiler,force=1) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ inline_tools.py", line 301, in inline function_catalog.add_function(code,func,module_dir) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 648, in add_function self.cache[code] = self.get_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 615, in get_functions function_list = self.get_cataloged_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 529, in get_cataloged_functions if cat is not None and code in cat: File "/apps/gent/gengar/harpertown/software/Python/2.6.2-gimkl-0.5.0/ lib/python2.6/shelve.py", line 110, in __contains__ return key in self.dict File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/io/ dumbdbm_patched.py", line 73, in __getitem__ pos, siz = self._index[key] # may raise KeyError KeyError: 0 ====================================================================== ERROR: test_convert_to_tuple (test_c_spec.SequenceConverter) ---------------------------------------------------------------------- Traceback (most recent call last): File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ tests/test_c_spec.py", line 317, in test_convert_to_tuple inline_tools.inline("",['t'],compiler=self.compiler,force=1) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ inline_tools.py", line 301, in inline function_catalog.add_function(code,func,module_dir) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 648, in add_function self.cache[code] = self.get_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 615, in get_functions function_list = self.get_cataloged_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 529, in get_cataloged_functions if cat is not None and code in cat: File "/apps/gent/gengar/harpertown/software/Python/2.6.2-gimkl-0.5.0/ lib/python2.6/shelve.py", line 110, in __contains__ return key in self.dict File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/io/ dumbdbm_patched.py", line 73, in __getitem__ pos, siz = self._index[key] # may raise KeyError KeyError: 0 ====================================================================== ERROR: test_call_function (test_c_spec.TestCallableConverterUnix) ---------------------------------------------------------------------- Traceback (most recent call last): File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ tests/test_c_spec.py", line 296, in test_call_function compiler=self.compiler,force=1) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ inline_tools.py", line 301, in inline function_catalog.add_function(code,func,module_dir) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 648, in add_function self.cache[code] = self.get_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 615, in get_functions function_list = self.get_cataloged_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 529, in get_cataloged_functions if cat is not None and code in cat: File "/apps/gent/gengar/harpertown/software/Python/2.6.2-gimkl-0.5.0/ lib/python2.6/shelve.py", line 110, in __contains__ return key in self.dict File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/io/ dumbdbm_patched.py", line 73, in __getitem__ pos, siz = self._index[key] # may raise KeyError KeyError: 0 ====================================================================== ERROR: test_file_to_py (test_c_spec.TestFileConverterUnix) ---------------------------------------------------------------------- Traceback (most recent call last): File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ tests/test_c_spec.py", line 262, in test_file_to_py force=1) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ inline_tools.py", line 301, in inline function_catalog.add_function(code,func,module_dir) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 648, in add_function self.cache[code] = self.get_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 615, in get_functions function_list = self.get_cataloged_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 529, in get_cataloged_functions if cat is not None and code in cat: File "/apps/gent/gengar/harpertown/software/Python/2.6.2-gimkl-0.5.0/ lib/python2.6/shelve.py", line 110, in __contains__ return key in self.dict File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/io/ dumbdbm_patched.py", line 73, in __getitem__ pos, siz = self._index[key] # may raise KeyError KeyError: 0 ====================================================================== ERROR: test_py_to_file (test_c_spec.TestFileConverterUnix) ---------------------------------------------------------------------- Traceback (most recent call last): File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ tests/test_c_spec.py", line 246, in test_py_to_file inline_tools.inline(code,['file'],compiler=self.compiler,force=1) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ inline_tools.py", line 301, in inline function_catalog.add_function(code,func,module_dir) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 648, in add_function self.cache[code] = self.get_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 615, in get_functions function_list = self.get_cataloged_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 529, in get_cataloged_functions if cat is not None and code in cat: File "/apps/gent/gengar/harpertown/software/Python/2.6.2-gimkl-0.5.0/ lib/python2.6/shelve.py", line 110, in __contains__ return key in self.dict File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/io/ dumbdbm_patched.py", line 73, in __getitem__ pos, siz = self._index[key] # may raise KeyError KeyError: 0 ====================================================================== ERROR: test_convert_to_dict (test_c_spec.TestSequenceConverterUnix) ---------------------------------------------------------------------- Traceback (most recent call last): File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ tests/test_c_spec.py", line 305, in test_convert_to_dict inline_tools.inline("",['d'],compiler=self.compiler,force=1) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ inline_tools.py", line 301, in inline function_catalog.add_function(code,func,module_dir) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 648, in add_function self.cache[code] = self.get_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 615, in get_functions function_list = self.get_cataloged_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 529, in get_cataloged_functions if cat is not None and code in cat: File "/apps/gent/gengar/harpertown/software/Python/2.6.2-gimkl-0.5.0/ lib/python2.6/shelve.py", line 110, in __contains__ return key in self.dict File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/io/ dumbdbm_patched.py", line 73, in __getitem__ pos, siz = self._index[key] # may raise KeyError KeyError: 0 ====================================================================== ERROR: test_convert_to_list (test_c_spec.TestSequenceConverterUnix) ---------------------------------------------------------------------- Traceback (most recent call last): File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ tests/test_c_spec.py", line 309, in test_convert_to_list inline_tools.inline("",['l'],compiler=self.compiler,force=1) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ inline_tools.py", line 301, in inline function_catalog.add_function(code,func,module_dir) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 648, in add_function self.cache[code] = self.get_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 615, in get_functions function_list = self.get_cataloged_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 529, in get_cataloged_functions if cat is not None and code in cat: File "/apps/gent/gengar/harpertown/software/Python/2.6.2-gimkl-0.5.0/ lib/python2.6/shelve.py", line 110, in __contains__ return key in self.dict File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/io/ dumbdbm_patched.py", line 73, in __getitem__ pos, siz = self._index[key] # may raise KeyError KeyError: 0 ====================================================================== ERROR: test_convert_to_string (test_c_spec.TestSequenceConverterUnix) ---------------------------------------------------------------------- Traceback (most recent call last): File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ tests/test_c_spec.py", line 313, in test_convert_to_string inline_tools.inline("",['s'],compiler=self.compiler,force=1) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ inline_tools.py", line 301, in inline function_catalog.add_function(code,func,module_dir) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 648, in add_function self.cache[code] = self.get_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 615, in get_functions function_list = self.get_cataloged_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 529, in get_cataloged_functions if cat is not None and code in cat: File "/apps/gent/gengar/harpertown/software/Python/2.6.2-gimkl-0.5.0/ lib/python2.6/shelve.py", line 110, in __contains__ return key in self.dict File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/io/ dumbdbm_patched.py", line 73, in __getitem__ pos, siz = self._index[key] # may raise KeyError KeyError: 0 ====================================================================== ERROR: test_convert_to_tuple (test_c_spec.TestSequenceConverterUnix) ---------------------------------------------------------------------- Traceback (most recent call last): File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ tests/test_c_spec.py", line 317, in test_convert_to_tuple inline_tools.inline("",['t'],compiler=self.compiler,force=1) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ inline_tools.py", line 301, in inline function_catalog.add_function(code,func,module_dir) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 648, in add_function self.cache[code] = self.get_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 615, in get_functions function_list = self.get_cataloged_functions(code) File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/weave/ catalog.py", line 529, in get_cataloged_functions if cat is not None and code in cat: File "/apps/gent/gengar/harpertown/software/Python/2.6.2-gimkl-0.5.0/ lib/python2.6/shelve.py", line 110, in __contains__ return key in self.dict File "/user/home/gent/vsc401/vsc40157/scipy-runtime/scipy/io/ dumbdbm_patched.py", line 73, in __getitem__ pos, siz = self._index[key] # may raise KeyError KeyError: 0 ---------------------------------------------------------------------- Ran 88 tests in 32.581s FAILED (errors=14) On 20 aug, 18:02, felix <fe...@neuro.uni-bremen.de> wrote: > Hi, > > this should have happened to other people, but I can't find some other > post on this one. I'm not sure which update exactly caused the bug, > since I didn't useweavesince Sage 3.something. All I can say is, > thatweavedoesn't work at all in Sage 4.1 and 4.11 (64 bit) under Mac > OS X 10.5.8 on my MacBook Pro Unibody rev. A. It used to work fine > before. > > Weavedoesn't even try to compile anything anymore it just produces a > KeyError: > > >>> from scipy importweave > >>>weave.inline("""printf("hello");""") > > File "<stdin>", line 1, in <module> > File "/Users/felix/Documents/uni/Promotion/sagenotebooks/ > critical_control/worksheets/admin/43/code/27.py", line 7, in <module> > weave.inline("""printf("hello");""") > File "", line 1, in <module> > > File > "/Applications/sage/local/lib/python2.6/site-packages/scipy/weave/inline_tools.py", > line 321, in inline > results = attempt_function_call(code,local_dict,global_dict) > File > "/Applications/sage/local/lib/python2.6/site-packages/scipy/weave/inline_tools.py", > line 389, in attempt_function_call > function_list = function_catalog.get_functions(code,module_dir) > File > "/Applications/sage/local/lib/python2.6/site-packages/scipy/weave/catalog.py", > line 612, in get_functions > function_list = self.get_cataloged_functions(code) > File > "/Applications/sage/local/lib/python2.6/site-packages/scipy/weave/catalog.py", > line 526, in get_cataloged_functions > if cat is not None and code in cat: > File "/Applications/sage/local/lib/python/shelve.py", line 110, in > __contains__ > return key in self.dict > File "/Applications/sage/local/lib/python2.6/site-packages/scipy/io/ > dumbdbm_patched.py", line 73, in __getitem__ > pos, siz = self._index[key] # may raise KeyError > KeyError: 0 > --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---