#138460 Report by node gh-actions covering 200 tests from 61 modules resulted into 3 errors
Report
- ObsPy version
- 1.4.1.post0+137.g9349f560f1.o…
- GitHub Pull Request
- -
- Report file
- JSON document
- Total runtime
- 158.8 sec
- Report date/time
- May 8, 2024, 5:03 a.m.
System / Python
- Architecture
- 64bit
- Machine
- x86_64
- Node
- gh-actions
- Processor
- x86_64
- Python Compiler
- GCC 12.3.0
- Python Implementation
- CPython
- Python Version
- 3.12.3
- Release
- 6.5.0-1018-azure
- System
- Linux
- Version
- #19~22.04.2-Ubuntu SMP Thu Mar 21 16:45:46 UTC 2024
Dependencies
- cartopy
- 0.23.0
- decorator
- 5.1.1
- flake8
- ---
- geographiclib
- 2.0
- lxml
- 5.2.1
- matplotlib
- 3.8.4
- numpy
- 1.26.4
- obspy
- 1.4.1.post0+137.g9349f560f1.obspy.master
- pyproj
- 3.6.1
- pytest
- 8.2.0
- pytest-json-report
- 1.5.0
- requests
- 2.31.0
- scipy
- 1.13.0
- setuptools
- 69.5.1
- shapefile
- ---
- sqlalchemy
- 1.4.49
Modules (61)
Module | Errors / Failures | Tracebacks | ||||
---|---|---|---|---|---|---|
obspy.clients.earthworm | 1 | 9 | 9 | - | 4.59s | 1 |
obspy.clients.fdsn | 2 | 137 | 135 | 2 | 87.65s | 2 3 |
obspy.clients.filesystem | Not tested | - | - | - | - | - |
obspy.clients.iris | - | 15 | 15 | - | 8.99s | - |
obspy.clients.neic | - | 5 | 5 | - | 3.18s | - |
obspy.clients.nrl | - | 3 | 3 | - | 2.93s | - |
obspy.clients.seedlink | - | 12 | 9 | 3 | 9.11s | - |
obspy.clients.syngine | - | 18 | 18 | - | 21.34s | - |
obspy.core | - | 1 | 1 | - | 1.75s | - |
obspy.core.event | Not tested | - | - | - | - | - |
obspy.core.inventory | Not tested | - | - | - | - | - |
obspy.core.util | Not tested | - | - | - | - | - |
obspy.geodetics | Not tested | - | - | - | - | - |
obspy.imaging | Not tested | - | - | - | - | - |
obspy.io.ah | Not tested | - | - | - | - | - |
obspy.io.alsep | Not tested | - | - | - | - | - |
obspy.io.arclink | Not tested | - | - | - | - | - |
obspy.io.ascii | Not tested | - | - | - | - | - |
obspy.io.cmtsolution | Not tested | - | - | - | - | - |
obspy.io.cnv | Not tested | - | - | - | - | - |
obspy.io.css | Not tested | - | - | - | - | - |
obspy.io.csv | Not tested | - | - | - | - | - |
obspy.io.cybershake | Not tested | - | - | - | - | - |
obspy.io.dmx | Not tested | - | - | - | - | - |
obspy.io.focmec | Not tested | - | - | - | - | - |
obspy.io.gcf | Not tested | - | - | - | - | - |
obspy.io.gse2 | Not tested | - | - | - | - | - |
obspy.io.hypodd | Not tested | - | - | - | - | - |
obspy.io.iaspei | Not tested | - | - | - | - | - |
obspy.io.json | Not tested | - | - | - | - | - |
obspy.io.kinemetrics | Not tested | - | - | - | - | - |
obspy.io.kml | Not tested | - | - | - | - | - |
obspy.io.mseed | Not tested | - | - | - | - | - |
obspy.io.ndk | Not tested | - | - | - | - | - |
obspy.io.nied | Not tested | - | - | - | - | - |
obspy.io.nlloc | Not tested | - | - | - | - | - |
obspy.io.nordic | Not tested | - | - | - | - | - |
obspy.io.pdas | Not tested | - | - | - | - | - |
obspy.io.pde | Not tested | - | - | - | - | - |
obspy.io.quakeml | Not tested | - | - | - | - | - |
obspy.io.reftek | Not tested | - | - | - | - | - |
obspy.io.rg16 | Not tested | - | - | - | - | - |
obspy.io.sac | Not tested | - | - | - | - | - |
obspy.io.scardec | Not tested | - | - | - | - | - |
obspy.io.seg2 | Not tested | - | - | - | - | - |
obspy.io.segy | Not tested | - | - | - | - | - |
obspy.io.seisan | Not tested | - | - | - | - | - |
obspy.io.seiscomp | Not tested | - | - | - | - | - |
obspy.io.sh | Not tested | - | - | - | - | - |
obspy.io.shapefile | Not tested | - | - | - | - | - |
obspy.io.stationtxt | Not tested | - | - | - | - | - |
obspy.io.stationxml | Not tested | - | - | - | - | - |
obspy.io.wav | Not tested | - | - | - | - | - |
obspy.io.win | Not tested | - | - | - | - | - |
obspy.io.xseed | Not tested | - | - | - | - | - |
obspy.io.y | Not tested | - | - | - | - | - |
obspy.io.zmap | Not tested | - | - | - | - | - |
obspy.realtime | Not tested | - | - | - | - | - |
obspy.scripts | Not tested | - | - | - | - | - |
obspy.signal | Not tested | - | - | - | - | - |
obspy.taup | Not tested | - | - | - | - | - |
Summary | 3 | 200 | 195 | 5 | 158.75s | 3 |
Tracebacks (3)
Traceback (most recent call last): File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call result: Optional[TResult] = func() ^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/runner.py", line 241, in <lambda> lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__ return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 182, in _multicall return outcome.get_result() ^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_result.py", line 100, in get_result raise exc.with_traceback(exc.__traceback__) File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall teardown.throw(outcome._exception) File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/threadexception.py", line 87, in pytest_runtest_call yield from thread_exception_runtest_hook() File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/threadexception.py", line 63, in thread_exception_runtest_hook yield File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall teardown.throw(outcome._exception) File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 90, in pytest_runtest_call yield from unraisable_exception_runtest_hook() File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 65, in unraisable_exception_runtest_hook yield File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall teardown.throw(outcome._exception) File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call yield from self._runtest_for(item, "call") File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/logging.py", line 833, in _runtest_for yield File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall teardown.throw(outcome._exception) File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/capture.py", line 878, in pytest_runtest_call return (yield) ^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall teardown.throw(outcome._exception) File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/skipping.py", line 257, in pytest_runtest_call return (yield) ^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall res = hook_impl.function(*args) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/runner.py", line 183, in pytest_runtest_call raise e File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/runner.py", line 173, in pytest_runtest_call item.runtest() File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest self.ihook.pytest_pyfunc_call(pyfuncitem=self) File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__ return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall raise exception.with_traceback(exception.__traceback__) File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall res = hook_impl.function(*args) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/python.py", line 162, in pytest_pyfunc_call result = testfunction(**testargs) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/decorator.py", line 232, in fun return caller(func, *(extras + args), **kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/obspy/core/util/decorator.py", line 119, in skip_on_network_error return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/obspy/clients/earthworm/tests/test_client.py", line 111, in test_get_waveform_no_cleanup assert len(ew_stream) >= 2 AssertionError: assert 1 >= 2 + where 1 = len(<obspy.core.stream.Stream object at 0x7f9ad102cf50>)
113 endtime = UTCDateTime("2002-01-02") 114 cat = client.get_events(starttime=starttime, endtime=endtime, 115 minmagnitude=6, catalog="ISC") 116 cat.plot() 117 118 (3) :meth:`~obspy.clients.fdsn.client.Client.get_stations()`: Retrieves station 119 data from the server. Results are returned as an 120 :class:`~obspy.core.inventory.inventory.Inventory` object. 121 122 >>> inventory = client.get_stations(network="IU", station="A*", UNEXPECTED EXCEPTION: XMLSyntaxError("Start tag expected, '<' not found, line 1, column 1") Traceback (most recent call last): File "/home/runner/miniconda3/envs/test/lib/python3.12/doctest.py", line 1361, in __run exec(compile(example.source, filename, "single", File "<doctest obspy.clients.fdsn[13]>", line 1, in <module> File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/obspy/clients/fdsn/client.py", line 756, in get_stations inventory = read_inventory(data_stream, format='STATIONXML') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/decorator.py", line 232, in fun return caller(func, *(extras + args), **kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/obspy/core/util/decorator.py", line 298, in _map_example_filename return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/obspy/core/inventory/inventory.py", line 91, in read_inventory return _generic_reader(path_or_file_object, _read, format=format, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/obspy/core/util/base.py", line 625, in _generic_reader generic = callback_func(pathname_or_url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/decorator.py", line 232, in fun return caller(func, *(extras + args), **kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/obspy/core/util/decorator.py", line 143, in uncompress_file return func(filename, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/obspy/core/inventory/inventory.py", line 100, in _read inventory, format = _read_from_plugin('inventory', filename, format=format, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/obspy/core/util/base.py", line 424, in _read_from_plugin list_obj = read_format(filename, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/obspy/io/stationxml/core.py", line 152, in _read_stationxml root = etree.parse(path_or_file_object).getroot() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "src/lxml/etree.pyx", line 3570, in lxml.etree.parse File "src/lxml/parser.pxi", line 1969, in lxml.etree._parseDocument File "src/lxml/parser.pxi", line 1989, in lxml.etree._parseMemoryDocument File "src/lxml/parser.pxi", line 1876, in lxml.etree._parseDoc File "src/lxml/parser.pxi", line 1164, in lxml.etree._BaseParser._parseDoc File "src/lxml/parser.pxi", line 633, in lxml.etree._ParserContext._handleParseResultDoc File "src/lxml/parser.pxi", line 743, in lxml.etree._handleParseResult File "src/lxml/parser.pxi", line 672, in lxml.etree._raiseParseError File "<string>", line 1 lxml.etree.XMLSyntaxError: Start tag expected, '<' not found, line 1, column 1 /home/runner/miniconda3/envs/test/lib/python3.12/site-packages/obspy/clients/fdsn/__init__.py:122: UnexpectedException
Traceback (most recent call last): File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/threadexception.py", line 63, in thread_exception_runtest_hook yield File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall teardown.throw(outcome._exception) File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 90, in pytest_runtest_call yield from unraisable_exception_runtest_hook() File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 65, in unraisable_exception_runtest_hook yield File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall teardown.throw(outcome._exception) File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call yield from self._runtest_for(item, "call") File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/logging.py", line 833, in _runtest_for yield File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall teardown.throw(outcome._exception) File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/capture.py", line 878, in pytest_runtest_call return (yield) ^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall teardown.throw(outcome._exception) File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/skipping.py", line 257, in pytest_runtest_call return (yield) ^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall res = hook_impl.function(*args) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/runner.py", line 183, in pytest_runtest_call raise e File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/runner.py", line 173, in pytest_runtest_call item.runtest() File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest self.ihook.pytest_pyfunc_call(pyfuncitem=self) File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__ return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall raise exception.with_traceback(exception.__traceback__) File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall res = hook_impl.function(*args) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/python.py", line 162, in pytest_pyfunc_call result = testfunction(**testargs) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/unittest/mock.py", line 1390, in patched return func(*newargs, **newkeywargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/obspy/clients/fdsn/tests/test_client.py", line 1451, in test_authentication_exceptions Client(eida_token="TEST") File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/obspy/clients/fdsn/client.py", line 277, in __init__ self._discover_services() File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/obspy/clients/fdsn/client.py", line 1650, in _discover_services raise FDSNNoServiceException(msg) obspy.clients.fdsn.header.FDSNNoServiceException: No FDSN services could be discovered at 'http://service.iris.edu'. This could be due to a temporary service outage or an invalid FDSN service address. During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call result: Optional[TResult] = func() ^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/runner.py", line 241, in <lambda> lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__ return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 182, in _multicall return outcome.get_result() ^^^^^^^^^^^^^^^^^^^^ File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_result.py", line 100, in get_result raise exc.with_traceback(exc.__traceback__) File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall teardown.throw(outcome._exception) File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/threadexception.py", line 87, in pytest_runtest_call yield from thread_exception_runtest_hook() File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/_pytest/threadexception.py", line 77, in thread_exception_runtest_hook warnings.warn(pytest.PytestUnhandledThreadExceptionWarning(msg)) pytest.PytestUnhandledThreadExceptionWarning: Exception in thread Thread-103 Traceback (most recent call last): File "/home/runner/miniconda3/envs/test/lib/python3.12/threading.py", line 1073, in _bootstrap_inner self.run() File "/home/runner/miniconda3/envs/test/lib/python3.12/site-packages/obspy/clients/fdsn/client.py", line 1543, in run code, data = download_url( ^^^^^^^^^^ ValueError: not enough values to unpack (expected 2, got 0)
Skipped tests (5)
Submodule | Test | Skip message |
---|---|---|
clients.fdsn | clients/fdsn/tests/test_client.py::TestClient::test_trim_stream_after_get_waveform | Skipped: data no longer available |
clients.fdsn | clients/fdsn/tests/test_client.py::TestClient::test_eida_token_resolution | Skipped: Token is expired |
clients.seedlink | clients/seedlink/tests/test_slclient.py::TestSLClient::test_info | Skipped: test must be started manually |
clients.seedlink | clients/seedlink/tests/test_slclient.py::TestSLClient::test_time_window | Skipped: test must be started manually |
clients.seedlink | clients/seedlink/tests/test_slclient.py::TestSLClient::test_issue708 | Skipped: test must be started manually |