'Open an IERS table, reading it from a file if not loaded before.
Parameters
file : str or None
full local or network path to the ascii file holding IERS data,
for passing on to the ``read`` class methods (further optional
arguments that are available for some IERS subclasses can be added).
If None, use the default location from the ``read`` class method.
cache : bool
Whether to use cache. Defaults to False, since IERS files
are regularly updated.
Returns
An IERS table class instance
Notes
On the first call in a session, the table will be memoized (in the
``iers_table`` class attribute), and further calls to ``open`` will
return this stored table if ``file=None`` (the default).
If a table needs to be re-read from disk, pass on an explicit file
location or use the (sub-class) close method and re-open.
If the location is a network location it is first downloaded via
download_file.
For the IERS class itself, an IERS_B sub-class instance is opened.'

@classmethod
def open(cls, file=None, cache=False, **kwargs):

    if ((file is not None) or (cls.iers_table is None)):
        if (file is not None):
            if urlparse(file).netloc:
                kwargs.update(file=download_file(file, cache=cache))
            else:
                kwargs.update(file=file)
        cls.iers_table = cls.read(**kwargs)
    return cls.iers_table
