Once you get a polygon there is loads you can get
p = array_poly(sq2, "POLYGON")
p
[(<Polygon object at 0x190d54416c8[0x190d53f25a0]>,), ... snip ...,
(<Polygon object at 0x190d5441888[0x190d5455510]>,)]
p0 = p[0][0]
dir(p0)
['JSON', 'WKB', 'WKT', '__add__', '__class__', '__cmp__', '__delattr__',
'__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__from_scripting_arc_object__', '__ge__', '__geo_interface__',
'__getSVG__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__',
'__module__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__sub__',
'__subclasshook__', '__type_mapping__', '__type_string__', '__weakref__', '__xor__', '_arc_object', '_fromGeoJson', '_go', '_passthrough',
'_repr_svg_', 'angleAndDistanceTo', 'area', 'boundary', 'buffer',
'centroid', 'clip', 'contains', 'convexHull', 'crosses', 'cut',
'densify', 'difference', 'disjoint', 'distanceTo', 'equals', 'extent',
'firstPoint', 'generalize', 'getArea', 'getGeohash', 'getLength', 'getPart',
'hasCurves', 'hullRectangle', 'intersect', 'isMultipart', 'labelPoint',
'lastPoint', 'length', 'length3D', 'measureOnLine', 'overlaps', 'partCount',
'pointCount', 'pointFromAngleAndDistance', 'positionAlongLine', 'projectAs',
'queryPointAndDistance', 'segmentAlongLine', 'snapToLine',
'spatialReference', 'symmetricDifference', 'touches', 'trueCentroid', 'type', 'union', 'within']
until such time, you have just the polygon
But there is lots of other stuff you can explore on your own from the above
p0.isMultipart
False
p0.hullRectangle
'2.94135809733738 11.7648938434666 11.1766832588924 9.70596830869874 8.23532516155499 -2.05892553476782 0 0'
Or if you want to convert shapes or get things like the convex hull etc
explore, there is loads of stuff that can be obtained directly from the object itself
... sort of retired...