'Construct a `Header` from an iterable and/or text file.
Parameters
cards : A list of `Card` objects, optional
The cards to initialize the header with. Also allowed are other
`Header` (or `dict`-like) objects.
.. versionchanged:: 1.2
Allowed ``cards`` to be a `dict`-like object.
copy : bool, optional
If ``True`` copies the ``cards`` if they were another `Header`
instance.
Default is ``False``.
.. versionadded:: 1.3'

def __init__(self, cards=[], copy=False):

    self.clear()
    if isinstance(cards, Header):
        if copy:
            cards = cards.copy()
        cards = cards.cards
    elif isinstance(cards, dict):
        cards = six.iteritems(cards)
    for card in cards:
        self.append(card, end=True)
    self._modified = False
