def __init__(self, gtfssource=None, print_progress=True):
if isinstance(gtfssource, string_types + (dict,)):<EOL><INDENT>_gtfs_sources = [gtfssource]<EOL><DEDENT>else:<EOL><INDENT>assert isinstance(gtfssource, list)<EOL>_gtfs_sources = gtfssource<EOL><DEDENT>self.print_progress = print_progress<EOL>self.gtfs_sources = []<EOL>for source in _gtfs_sources:<EOL><INDENT>if isinstance(source, dict):<EOL><INDENT>self.gtfs_sources.append(source)<EOL><DEDENT>elif isinstance(source, string_types):<EOL><INDENT>if os.path.isdir(source):<EOL><INDENT>self.gtfs_sources.append(source)<EOL><DEDENT>else:<EOL><INDENT>z = zipfile.ZipFile(source, mode='<STR_LIT:r>')<EOL>zip_commonprefix = os.path.commonprefix(z.namelist())<EOL>zip_source_datum = {<EOL>"<STR_LIT>": source,<EOL>"<STR_LIT>": zip_commonprefix<EOL>}<EOL>self.gtfs_sources.append(zip_source_datum)<EOL><DEDENT><DEDENT><DEDENT>
Parameters
----------
gtfssource: str, dict, list
    str: path to GTFS directory or zipfile
    dict:
        dictionary of files to use to as the GTFS files.  This
        is mainly useful for testing, not for any normal use of
        GTFS.  For example, to provide an agency.txt file,
        do this:
            d = {'agency.txt':
                     'agency_id, agency_name, agency_timezone,agency_url\n' \
                     '555,CompNet,Europe/Lala,http://x'
                  }
        Of course you probably wouldn't want all the string data
        inline like that. You can provide the data as a string or
        a file-like object (with a .read() attribute and line
        iteration).
    list: a list of the above elements to import (i.e. "merge") multiple GTFS feeds to the same database

print_progress: boolean
    whether to print progress of the