@@ -176,22 +176,6 @@ class DuplicateWarning(Warning):
176
176
# formats
177
177
_FORMAT_MAP = {"f" : "fixed" , "fixed" : "fixed" , "t" : "table" , "table" : "table" }
178
178
179
- # storer class map
180
- _STORER_MAP = {
181
- "series" : "SeriesFixed" ,
182
- "frame" : "FrameFixed" ,
183
- }
184
-
185
- # table class map
186
- _TABLE_MAP = {
187
- "generic_table" : "GenericTable" ,
188
- "appendable_series" : "AppendableSeriesTable" ,
189
- "appendable_multiseries" : "AppendableMultiSeriesTable" ,
190
- "appendable_frame" : "AppendableFrameTable" ,
191
- "appendable_multiframe" : "AppendableMultiFrameTable" ,
192
- "worm" : "WORMTable" ,
193
- }
194
-
195
179
# axes map
196
180
_AXES_MAP = {DataFrame : [0 ]}
197
181
@@ -1553,12 +1537,17 @@ def _create_storer(
1553
1537
self ,
1554
1538
group ,
1555
1539
format = None ,
1556
- value = None ,
1540
+ value : Optional [ FrameOrSeries ] = None ,
1557
1541
encoding : str = "UTF-8" ,
1558
1542
errors : str = "strict" ,
1559
1543
) -> Union ["GenericFixed" , "Table" ]:
1560
1544
""" return a suitable class to operate """
1561
1545
1546
+ cls : Union [Type ["GenericFixed" ], Type ["Table" ]]
1547
+
1548
+ if value is not None and not isinstance (value , (Series , DataFrame )):
1549
+ raise TypeError ("value must be None, Series, or DataFrame" )
1550
+
1562
1551
def error (t ):
1563
1552
# return instead of raising so mypy can tell where we are raising
1564
1553
return TypeError (
@@ -1587,23 +1576,20 @@ def error(t):
1587
1576
)
1588
1577
else :
1589
1578
_TYPE_MAP = {Series : "series" , DataFrame : "frame" }
1590
- try :
1591
- pt = _TYPE_MAP [type (value )]
1592
- except KeyError :
1593
- raise error ("_TYPE_MAP" )
1579
+ pt = _TYPE_MAP [type (value )]
1594
1580
1595
1581
# we are actually a table
1596
1582
if format == "table" :
1597
1583
pt += "_table"
1598
1584
1599
1585
# a storer node
1600
1586
if "table" not in pt :
1587
+ _STORER_MAP = {"series" : SeriesFixed , "frame" : FrameFixed }
1601
1588
try :
1602
- return globals ()[_STORER_MAP [pt ]](
1603
- self , group , encoding = encoding , errors = errors
1604
- )
1589
+ cls = _STORER_MAP [pt ]
1605
1590
except KeyError :
1606
1591
raise error ("_STORER_MAP" )
1592
+ return cls (self , group , encoding = encoding , errors = errors )
1607
1593
1608
1594
# existing node (and must be a table)
1609
1595
if tt is None :
@@ -1625,29 +1611,22 @@ def error(t):
1625
1611
tt = "appendable_frame"
1626
1612
elif index .nlevels > 1 :
1627
1613
tt = "appendable_multiframe"
1628
- elif pt == "wide_table" :
1629
- tt = "appendable_panel"
1630
- elif pt == "ndim_table" :
1631
- tt = "appendable_ndim"
1632
-
1633
- else :
1634
-
1635
- # distinguish between a frame/table
1636
- tt = "legacy_panel"
1637
- try :
1638
- fields = group .table ._v_attrs .fields
1639
- if len (fields ) == 1 and fields [0 ] == "value" :
1640
- tt = "legacy_frame"
1641
- except IndexError :
1642
- pass
1643
1614
1615
+ _TABLE_MAP = {
1616
+ "generic_table" : GenericTable ,
1617
+ "appendable_series" : AppendableSeriesTable ,
1618
+ "appendable_multiseries" : AppendableMultiSeriesTable ,
1619
+ "appendable_frame" : AppendableFrameTable ,
1620
+ "appendable_multiframe" : AppendableMultiFrameTable ,
1621
+ "worm" : WORMTable ,
1622
+ }
1644
1623
try :
1645
- return globals ()[_TABLE_MAP [tt ]](
1646
- self , group , encoding = encoding , errors = errors
1647
- )
1624
+ cls = _TABLE_MAP [tt ]
1648
1625
except KeyError :
1649
1626
raise error ("_TABLE_MAP" )
1650
1627
1628
+ return cls (self , group , encoding = encoding , errors = errors )
1629
+
1651
1630
def _write_to_group (
1652
1631
self ,
1653
1632
key : str ,
0 commit comments