Here is a solution I found on here many years ago, which I cannot find now. This is for ArcMap.
import arcpy, os
from arcpy import env
env.overwriteOutput = True
print "initializing"
inPoints = arcpy.GetParameterAsText(0)
outPath = arcpy.GetParameterAsText(1)
outName = arcpy.GetParameterAsText(2)
buf1 = float(arcpy.GetParameterAsText(3))
buf2 = float(arcpy.GetParameterAsText(4))
bufDist1 = buf1/2
bufDist2 = buf2/2
outPolys = outPath+"//"+outName+".shp"
print "creating new blank feature"
arcpy.env.outputCoordinateSystem = arcpy.GetParameterAsText(5)
arcpy.CreateFeatureclass_management(outPath, outName,"POLYGON","","","", "", "","","","")
print "created"
inRows = arcpy.SearchCursor(inPoints)
outRows = arcpy.InsertCursor(outPolys)
pntObj = arcpy.Point()
arrayObj = arcpy.Array()
print "writing geomety"
for inRow in inRows:
inShape = inRow.shape
pnt = inShape.getPart(0)
for vertex in [0,1,2,3,4]:
pntObj.ID = vertex
if vertex in [0,3,4]:
pntObj.X = pnt.X + bufDist1
else:
pntObj.X = pnt.X - bufDist1
if vertex in [0,1,5]:
pntObj.Y = pnt.Y + bufDist2
else:
pntObj.Y = pnt.Y - bufDist2
arrayObj.add(pntObj)
feat = outRows.newRow()
feat.shape = arrayObj
outRows.insertRow(feat)
arrayObj.removeAll()
del outRows
print "done"