typedframe icon indicating copy to clipboard operation
typedframe copied to clipboard

list attributes "TypeError: Cannot interpret 'list[str]' as a data type"

Open danodonovan opened this issue 2 years ago • 1 comments

Apologies if this is an incorrect implementation, but I think there may be an issue with list types; for example

import pandas as pd
from typedframe import TypedDataFrame


class StringFrame(TypedDataFrame):
    schema = {
        "col1": int,
        "col2": str,
        "col3": list[str]
    }

df = pd.DataFrame({"col1": [0], "col2": ["test-str"], "col3": [["test-list"]]})

tdf = StringFrame.convert(df)

When calling StringFrame.convert(df) we see this exception

  File "/.../lib/python3.11/site-packages/pandas/core/dtypes/common.py", line 1691, in pandas_dtype
    npdtype = np.dtype(dtype)
              ^^^^^^^^^^^^^^^
TypeError: Cannot interpret 'list[str]' as a data type

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/dan/healx/healnet/healnet/example.py", line 14, in <module>
    tdf = StringFrame.convert(df)
          ^^^^^^^^^^^^^^^^^^^^^^^
  File "/.../lib/python3.11/site-packages/typedframe/pandas_.py", line 82, in convert
    raise AssertionError(f"Failed to convert column: {col}") from e
AssertionError: Failed to convert column: col3

danodonovan avatar Nov 10 '23 15:11 danodonovan

I'm running into the same issue. In my case, I'm trying to use Optional[str] as a type.

It would seem that the current codebase does not allow for the more complex types. It only supports int str bool etc. (the types are mentioned in the docs.)

@areshytko any plans to continue the work here? If not I might try extending it myself.

DurivetMatthias avatar Jan 23 '24 15:01 DurivetMatthias