so I just wanted to add the solution i ended up going with, a hybrid of a few different ones.
It's frustrating the the esri documentation for Merge_Management()
doesn't actually say how it keeps/deletes fields but it will.
relevant code sample below.
pointfieldmappings = arcpy.FieldMappings()
point_keep_fields = ['RequestID','Prioritization_Bucket','Date_Initiated','Match_addr','X','Y',
'Description','Year','full_address','Sidewalk_Presence_Criteria',
'Bike_Network_Criteria','Lighting_Presence_Criteria','Equity_Criteria',
'City_Plans_Criteria','Crash_History_Criteria','Community_Requests_Criteria',
'Transit_Criteria','Functional_Classification_Criteria','Community_Center_Services_Criteria',
'Commercial_Retail_Criteria','Proximity_to_existing_speed_humps_Criteria','Senior_Center_Housing_Criteria','School_Zone_Criteria','Prioritization_Score','Priority_Bucket']
pointfieldmappings.addTable(point_table)
pointfieldmappings.addTable(point_master)
for field in pointfieldmappings.fields:
if field.name not in point_keep_fields and not field.required:
pointfieldmappings.removeFieldMap(pointfieldmappings.findFieldMapIndex(field.name))
point_combined_results = point_table + "_all"
arcpy.Merge_management(inputs = [point_table, point_master],
output=point_combined_results,
field_mappings=pointfieldmappings)
the point_keep_fields
variable could also be built using the a_fields ^ b_fields
code, but in my case that wasn't exactly what I needed.