This will do some work for polygons not sharing edges:
arcpy.FeatureVerticesToPoints_management("PGON", "./vertices.shp", "ALL")
arcpy.DeleteIdentical_management("vertices", "Shape")
arcpy.PolygonToLine_management("PGON", "./singleLine.shp")
arcpy.SplitLine_management("singleLine", "/splits.shp")
arcpy.AddGeometryAttributes_management("splits", "LINE_BEARING")
Name your vertices and assign their names to fromNode and toNode fields in splits and transfer line bearings to vertices table using join with relevant fields. Vertices below are labelled by in/out bearings:
This field calculator expression computes internal angles:
def internalA (fr,to):
external=180-fr+to
if external<0:external+=360
if external>360:external-=360
return external
#--------------
internalA ( !fromB!, !toB! )
{}
button that enables you to format any highlighted code nicely.