'Initializes on an exterior ring and a sequence of holes (both
instances may be either LinearRing instances, or a tuple/list
that may be constructed into a LinearRing).
Examples of initialization, where shell, hole1, and hole2 are
valid LinearRing geometries:
>>> poly = Polygon(shell, hole1, hole2)
>>> poly = Polygon(shell, (hole1, hole2))
Example where a tuple parameters are used:
>>> poly = Polygon(((0, 0), (0, 10), (10, 10), (0, 10), (0, 0)),
((4, 4), (4, 6), (6, 6), (6, 4), (4, 4)))'

def __init__(self, *args, **kwargs):

    if (not args):
        raise TypeError('Must    provide    at    least    one    LinearRing,    or    a    tuple,    to    initialize    a    Polygon.')
    ext_ring = args[0]
    init_holes = args[1:]
    n_holes = len(init_holes)
    if ((n_holes == 1) and isinstance(init_holes[0], (tuple, list))):
        if (len(init_holes[0]) == 0):
            init_holes = ()
            n_holes = 0
        elif isinstance(init_holes[0][0], LinearRing):
            init_holes = init_holes[0]
            n_holes = len(init_holes)
    polygon = self._create_polygon((n_holes + 1), ((ext_ring,) + init_holes))
    super(Polygon, self).__init__(polygon, **kwargs)
