Or do I need to rewrite my script using "pure Python" and PyQGIS? My script is basically a recreation of ArcMap's Tabulate Area tool (vector layers only for now). The goal is to make it official in the QGIS plugin repository
Code snippet
data = []
for a in range(gdf1.shape[0]):
muni = gdf1.loc[gdf1['NAME_2'] == gdf1['NAME_2'][a]]
intersection = gpd.overlay(muni, gdf2, how='intersection')
area = intersection['geometry'].map(lambda p: p.area)
type_in = intersection['DESCRIPT'].values.tolist()
type_all = gdf2['DESCRIPT'].values.tolist()
...
df3 = pd.DataFrame(data, columns = cols) # creates df
df3.insert(0, 'zones', rows) # creates df's rows
df3.to_csv('munis_landCover_tabulated.csv')