allure-framework / allure-framework/allure-python

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

Ouverte
#811 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
theme:pytest
Langage dominant
Python
Étoiles
814
Forks
260
Métriques de merge des PR
Aucune PR mergée en 30 j

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

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par le reproducteur dans test.py et les stack frames de allure_pytest listener.py autour des lignes 116-117, puis exécutez la commande pytest indiquée avec les versions de pandas et pyarrow listées. C’est terminé lorsque le cas DataFrame paramétré s’achève sans ArrowNotImplementedError tout en préservant la gestion de test Allure signalée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
pandas, python
Domaine
testing
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.