in #34875 several checks were added to the main Dataframe construction to handle extension arrays, in particular extension scalars

this introduced multiple checks like

if is_extensions_drype(,,): ... else: ...

these should be refactored and pushed down to more understandable functions

this construction is now so complicated that bugs are certain to happen

Comment From: jbrockmendel

constructor has been nicely-ish refactored since OP, closing.