allure-framework / allure-framework/allure-python

Not implemented type for Arrow list to pandas: fixed_size_binary[16]

Open
#811 0 comments 0 reactions 0 assignees View on GitHub
theme:pytest
Dominant language
Python
Stars
814
Forks
260
PR merge metrics
No merged PRs in 30d

Description

I'm submitting a ...
- [X] bug report
- [ ] feature request
- [ ] support request => Please do not submit support request here, see note at the top of this template.

#### What is the current behavior?
using pandas dataframe with dtype as pd.ArrowDtype(pa.list_(pa.binary(16)) in pytest

#### If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem
test.py:
```
import pytest
from uuid import UUID
import pandas as pd
import pyarrow as pa

uuid=UUID('5d212a78-cc48-e3b1-4235-b4d91473ee87').bytes
df=pd.DataFrame({'a': [[uuid, uuid, uuid], [uuid,uuid, uuid]]},dtype=pd.ArrowDtype(pa.list_(pa.binary(16))))

class TestUuid():

@pytest.mark.parametrize("data",[df])
def test_uuid(self,data):
pass
````

run codes:
pytest ./test.py --alluredir=allure-results

result:
```
(py311) PS D:\code\test> pytest ./test.py --alluredir=allure-results
======================================================================================================== test session starts ========================================================================================================
platform win32 -- Python 3.11.5, pytest-8.1.1, pluggy-1.5.0
benchmark: 4.0.0 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)
rootdir: D:\code\test
plugins: allure-pytest-2.13.5, benchmark-4.0.0, html-4.1.1, metadata-3.0.0, ordering-0.6, rerunfailures-13.0, xdist-3.5.0
collected 1 item

test.py E [100%]

============================================================================================================== ERRORS ===============================================================================================================
____________________________________________________________________________________________ ERROR at setup of TestUuid.test_uuid[data0] ____________________________________________________________________________________________

self = , item =

@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_setup(self, item):
if not self._cache.get(item.nodeid):
uuid = self._cache.push(item.nodeid)
test_result = TestResult(name=item.name, uuid=uuid, start=now(), stop=now())
self.allure_logger.schedule_test(uuid, test_result)
yield
self._update_fixtures_children(item)
uuid = self._cache.get(item.nodeid)
test_result = self.allure_logger.get_test(uuid)
params = self.__get_pytest_params(item)
param_id = self.__get_pytest_param_id(item)
test_result.name = allure_name(item, params, param_id)
full_name = allure_full_name(item)
test_result.fullName = full_name
test_result.testCaseId = md5(full_name)
test_result.description = allure_description(item)
test_result.descriptionHtml = allure_description_html(item)
current_param_names = [param.name for param in test_result.parameters]
> test_result.parameters.extend([
Parameter(name=name, value=represent(value))
for name, value in params.items()
if name not in current_param_names
])

D:\software\Anaconda3\envs\py311\Lib\site-packages\allure_pytest\listener.py:116:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
D:\software\Anaconda3\envs\py311\Lib\site-packages\allure_pytest\listener.py:117: in
Parameter(name=name, value=represent(value))
D:\software\Anaconda3\envs\py311\Lib\site-packages\allure_commons\utils.py:93: in represent
return repr(item)
D:\software\Anaconda3\envs\py311\Lib\site-packages\pandas\core\frame.py:1214: in __repr__
return self.to_string(**repr_params)
D:\software\Anaconda3\envs\py311\Lib\site-packages\pandas\util\_decorators.py:333: in wrapper
return func(*args, **kwargs)
D:\software\Anaconda3\envs\py311\Lib\site-packages\pandas\core\frame.py:1394: in to_string
return fmt.DataFrameRenderer(formatter).to_string(
D:\software\Anaconda3\envs\py311\Lib\site-packages\pandas\io\formats\format.py:962: in to_string
string = string_formatter.to_string()
D:\software\Anaconda3\envs\py311\Lib\site-packages\pandas\io\formats\string.py:29: in to_string
text = self._get_string_representation()
D:\software\Anaconda3\envs\py311\Lib\site-packages\pandas\io\formats\string.py:44: in _get_string_representation
strcols = self._get_strcols()
D:\software\Anaconda3\envs\py311\Lib\site-packages\pandas\io\formats\string.py:35: in _get_strcols
strcols = self.fmt.get_strcols()
D:\software\Anaconda3\envs\py311\Lib\site-packages\pandas\io\formats\format.py:476: in get_strcols
strcols = self._get_strcols_without_index()
D:\software\Anaconda3\envs\py311\Lib\site-packages\pandas\io\formats\format.py:740: in _get_strcols_without_index
fmt_values = self.format_col(i)
D:\software\Anaconda3\envs\py311\Lib\site-packages\pandas\io\formats\format.py:754: in format_col
return format_array(
D:\software\Anaconda3\envs\py311\Lib\site-packages\pandas\io\formats\format.py:1161: in format_array
return fmt_obj.get_result()
D:\software\Anaconda3\envs\py311\Lib\site-packages\pandas\io\formats\format.py:1194: in get_result
fmt_values = self._format_strings()
D:\software\Anaconda3\envs\py311\Lib\site-packages\pandas\io\formats\format.py:1528: in _format_strings
array = np.asarray(values, dtype=object)
D:\software\Anaconda3\envs\py311\Lib\site-packages\pandas\core\arrays\arrow\array.py:663: in __array__
return self.to_numpy(dtype=dtype)
D:\software\Anaconda3\envs\py311\Lib\site-packages\pandas\core\arrays\arrow\array.py:1399: in to_numpy
result = data._pa_array.to_numpy()
pyarrow\table.pxi:509: in pyarrow.lib.ChunkedArray.to_numpy
???
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

> ???
E pyarrow.lib.ArrowNotImplementedError: Not implemented type for Arrow list to pandas: fixed_size_binary[16]

pyarrow\error.pxi:91: ArrowNotImplementedError
========================================================================================================= warnings summary ==========================================================================================================
test.py::TestUuid::test_uuid[data0]
D:\software\Anaconda3\envs\py311\Lib\site-packages\_pytest\runner.py:240: PluggyTeardownRaisedWarning: A plugin raised an exception during an old-style hookwrapper teardown.
Plugin: allure_listener, Hook: pytest_runtest_setup
ArrowNotImplementedError: Not implemented type for Arrow list to pandas: fixed_size_binary[16]
For more information see https://pluggy.readthedocs.io/en/stable/api_reference.html#pluggy.PluggyTeardownRaisedWarning
lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
====================================================================================================== short test summary info ======================================================================================================
ERROR test.py::TestUuid::test_uuid[data0] - pyarrow.lib.ArrowNotImplementedError: Not implemented type for Arrow list to pandas: fixed_size_binary[16]
==================================================================================================== 1 warning, 1 error in 0.62s ====================================================================================================
```

#### What is the expected behavior?
no error raise

#### Please tell us about your environment:
- python: 3.11.5
- Test framework: pytest@8.1.1
- Allure adaptor: allure-pytest@2.13.5
- pandas: 2.2.2
- pyarrow: 14.0.1

Contributor guide

Open the contributing guide

Research direction

Start with the test.py reproducer and the allure_pytest listener.py stack frames around lines 116-117, then run the shown pytest command with the listed pandas and pyarrow versions. Done means the parameterized DataFrame case completes without ArrowNotImplementedError while preserving the reported Allure test handling.

Written by the indexing model from the issue text.

Assessment

Tech stack
pandas, python
Domain
testing
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.