def _url_paths(self, filename=None):
        """
        Load URL metadata from a CSV file.

        The CSV file should follow the conventsions described at
        http://docs.openelections.net/guide/#populating-urlpathscsv

        Args:
            filename: Path to a URL paths CSV file.  Default is
                 openelex/{state_abbrev}/mappings/url_paths.csv

        Returns:
            A list of dictionaries, with each dict corresponding to a row
            in the CSV file.

        """
        if filename is None:
            filename = join(self.mappings_dir, 'url_paths.csv')

        try:
            # We cache the URL paths to avoid having to do multiple filesystem
            # reads.  We also cache per origin filename to accomodate states
            # like Arkansas where we generate multiple multiple URL path files
            # from scraping
            return self._cached_url_paths[filename]
        except __HOLE__:
            cached = self._cached_url_paths[filename] = []
            with open(filename, 'rU') as csvfile:
                reader = unicodecsv.DictReader(csvfile)
                for row in reader:
                    cached.append(self._parse_url_path(row))
            return cached
dataset/ETHPy150Open openelections/openelections-core/openelex/base/datasource.py/BaseDatasource._url_paths