Skip to content

GO-ness mismatch could be handled better #8

@chaburkland

Description

@chaburkland
import frame_fixtures as ff

ff.parse("f(Fg)|s(4, 4)|c(I, str)")                                                                                                                                                                                                                            
---------------------------------------------------------------------------
ErrorInitFrame                            Traceback (most recent call last)
<ipython-input-1-525dac2ecbdb> in <module>
----> 1 ff.parse("f(Fg)|s(4, 4)|c(I, str)")

~/.env38/lib/python3.8/site-packages/frame_fixtures/core.py in parse(dsl)
    730     Given a FrameFixtures DSL string, return a Fraem.
    731     '''
--> 732     return Fixture.parse(dsl=dsl)
    733 
    734 

~/.env38/lib/python3.8/site-packages/frame_fixtures/core.py in parse(cls, dsl, module_sf)
    715             builder = str_to_type['F']
    716 
--> 717         return builder(tb, #type: ignore
    718                 index=index,
    719                 columns=columns,

~/.env38/lib/python3.8/site-packages/static_frame/core/frame.py in __init__(self, data, index, columns, name, index_constructor, columns_constructor, own_data, own_index, own_columns)
   3318         # check after creation, as we cannot determine from the constructor (it might be a method on a class)
   3319         if self._COLUMNS_CONSTRUCTOR.STATIC != self._columns.STATIC:
-> 3320             raise ErrorInitFrame(f'Supplied `columns_constructor` does not match required static attribute: {self._COLUMNS_CONSTRUCTOR.STATIC}')
   3321 
   3322         #-----------------------------------------------------------------------

ErrorInitFrame: Supplied `columns_constructor` does not match required static attribute: False

This is fixed by changing the type of columns to IndexGO, like so:

ff.parse("f(Fg)|s(4, 4)|c(Ig, str)")

I feel the error message for this could be more helpful/clear. Something like:

`FrameFixtureSyntaxError: object type is `FrameGO`, but columns are specified as `Index`. Either change f(Fg) -> f(F), or c(I) -> c(Ig)`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions