parameters: (tzdataDir, ignoreBackzone, ignoreFactory)
return_statement: return (zones, links)
docstring: Read the IANA time zone information from `tzdataDir`.
docstring_summary: Read the IANA time zone information from `tzdataDir`.
docstring_tokens: Read the IANA time zone information from tzdataDir .
function: def readIANATimeZones(tzdataDir, ignoreBackzone, ignoreFactory):
      """ Read the IANA time zone information from `tzdataDir`. """
  
      backzoneFiles = {"backzone"}
      (bkfiles, tzfiles) = partition(listIANAFiles(tzdataDir), backzoneFiles.__contains__)
  
      # Read zone and link infos.
      (zones, links) = readIANAFiles(tzdataDir, tzfiles)
      (backzones, backlinks) = readIANAFiles(tzdataDir, bkfiles)
  
      # Remove the placeholder time zone "Factory".
      if ignoreFactory:
          zones.remove(Zone("Factory"))
  
      # Merge with backzone data.
      if not ignoreBackzone:
          zones |= backzones
          links = {name: target for name, target in links.iteritems() if name not in backzones}
          links.update(backlinks)
  
      validateTimeZones(zones, links)
  
      return (zones, links)
function_tokens: def readIANATimeZones ( tzdataDir , ignoreBackzone , ignoreFactory ) : backzoneFiles = { "backzone" } ( bkfiles , tzfiles ) = partition ( listIANAFiles ( tzdataDir ) , backzoneFiles . __contains__ ) # Read zone and link infos. ( zones , links ) = readIANAFiles ( tzdataDir , tzfiles ) ( backzones , backlinks ) = readIANAFiles ( tzdataDir , bkfiles ) # Remove the placeholder time zone "Factory". if ignoreFactory : zones . remove ( Zone ( "Factory" ) ) # Merge with backzone data. if not ignoreBackzone : zones |= backzones links = { name : target for name , target in links . iteritems ( ) if name not in backzones } links . update ( backlinks ) validateTimeZones ( zones , links ) return ( zones , links )