├── .gitignore ├── .travis.yml ├── README.md ├── _config.yml ├── _layouts └── default.html ├── dataconverters ├── __init__.py ├── arff.py ├── cli.py ├── commas.py ├── jsondata.py ├── kml.py ├── shp.py └── xls.py ├── index.md ├── requirements.txt ├── setup.py ├── testdata ├── csv │ ├── bus-stops.csv │ ├── long.csv │ ├── october_2011.csv │ ├── readme.txt │ ├── simple.csv │ ├── simple_dup_title.csv │ ├── simple_empty_title.csv │ ├── spanish_chars.csv │ └── spendings.csv ├── kml │ └── AngolaTelecoms.kml ├── shapefiles │ ├── karnataka_poi.dbf │ ├── karnataka_poi.prj │ ├── karnataka_poi.shp │ └── karnataka_poi.shx ├── tsv │ └── simple.tsv └── xls │ ├── simple.xls │ └── simple.xlsx └── tests ├── __init__.py ├── test_arff.py ├── test_commas.py ├── test_kml.py ├── test_shp.py ├── test_tsv_json.py └── test_xls_json.py /.gitignore: -------------------------------------------------------------------------------- 1 | local_settings.py 2 | *.pyc 3 | fabfile.py 4 | build 5 | *.egg-info 6 | .*.swp 7 | sandbox/* 8 | _site/* 9 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | dist: trusty 2 | sudo: required 3 | language: python 4 | python: 5 | - "2.7" 6 | install: 7 | - sudo apt-get update 8 | - sudo apt-get install libgdal1-dev 9 | - pip install -r requirements.txt 10 | script: nosetests 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Data Converters 2 | 3 | Unified **python library** and **command line interface** to convert data from 4 | one format to another (especially *tabular* data). 5 | 6 | Please [file bugs][issues] for any unexpected behavior. 7 | 8 | [![Build 9 | Status](https://travis-ci.org/okfn/dataconverters.png?branch=master)](https://travis-ci.org/okfn/dataconverters) 10 | 11 | [issues]: https://github.com/okfn/dataconverters/issues 12 | 13 | ## Usage and Documentation 14 | 15 | See 16 | 17 | ## License 18 | 19 | Copyright 2007-2013 Open Knowledge Foundation. Licensed under the MIT license. 20 | 21 | Developed with support from Google. 22 | 23 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | pygments: true 2 | auto: true 3 | markdown: kramdown 4 | title: Data Converter Library and Tool 5 | github: http://github.com/okfn/dataconverters 6 | googleanalytics: UA-33874954-3 7 | 8 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{site.title}} - Open Knowledge Foundation 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 |
23 | 24 |
25 |
26 | 29 |
30 |
31 | 32 | 57 |
58 |
59 | 67 |
68 |
69 | {{content}} 70 |
71 |
72 |
73 |
74 | 75 | 95 | 96 | 97 | 98 | 99 | 110 | 111 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /dataconverters/__init__.py: -------------------------------------------------------------------------------- 1 | __all__ = ['dataconvert'] 2 | 3 | import dataconverters.commas as dcsv 4 | import dataconverters.arff as arff 5 | import urllib2 6 | import mimetypes 7 | import sys 8 | import itertools 9 | 10 | def dataconvert(inpath, outpath, 11 | sheet=1, 12 | guess_types=False, 13 | records=None, 14 | format='', 15 | encoding='' 16 | ): 17 | '''Run a data conversion based on args object. 18 | 19 | @param inpath: path / url to file 20 | @parma outpath: path to resulting output 21 | 22 | all other arguments are like the arguments to dataconvert command line tool 23 | (e.g. --records on command line becomes records=... kw argument) 24 | 25 | Example: 26 | 27 | from dataconverters import dataconvert 28 | dataconvert('myfile.xls', 'myfile.csv') 29 | ''' 30 | args = AttrDict(locals()) 31 | _dataconvert(args) 32 | 33 | # HACK: args can come either from CLI in which case not dict and has 34 | # attribute OR can come from normal client user in which case we need 35 | # attribute style access 36 | def _dataconvert(args): 37 | 38 | # What is the type of input file? 39 | if args.format: 40 | intype = args.format 41 | else: 42 | intype = guess_type(args.inpath) 43 | 44 | # What is the type of output file? 45 | outtype = guess_type(args.outpath) 46 | 47 | # If outtype is ARFF then we need to guess field-types. 48 | # Thus we overwrite the args.guess_types to True. 49 | if outtype == arff.MIMETYPE: 50 | args.guess_types = True 51 | 52 | if is_url_path(args.inpath): 53 | instream = urllib2.urlopen(args.inpath) 54 | else: 55 | instream = open(args.inpath) 56 | 57 | tsv_types = ['tsv', 'text/tsv', 'text/tab-separated-values'] 58 | if intype in ['text/csv', 'csv'] + tsv_types: 59 | records, metadata = dcsv.parse(instream, guess_types=args.guess_types) 60 | elif intype in ['application/vnd.ms-excel', 61 | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 62 | 'xls' 63 | ]: 64 | import dataconverters.xls 65 | excel_type = 'xls' if intype == 'application/vnd.ms-excel' else 'xlsx' 66 | records, metadata = dataconverters.xls.parse(instream, 67 | excel_type=excel_type, 68 | sheet=args.sheet, 69 | guess_types=args.guess_types, 70 | encoding=args.encoding 71 | ) 72 | else: 73 | raise ValueError( 74 | 'No support for reading file type %s - support for csv or xls only at present' % intype) 75 | 76 | if args.outpath.startswith('_.'): 77 | outstream = sys.stdout 78 | else: 79 | outstream = open(args.outpath, 'w') 80 | 81 | if (args.records): 82 | records = itertools.islice(records, int(args.records)) 83 | 84 | if outtype == 'text/csv': 85 | dcsv.write(outstream, records, metadata) 86 | elif outtype == 'application/json': 87 | import dataconverters.jsondata as js 88 | js.write(outstream, records, metadata) 89 | elif outtype == arff.MIMETYPE: 90 | arff.write(outstream, records, metadata) 91 | else: 92 | raise ValueError('Only support writing to csv and json at present') 93 | 94 | def guess_type(path): 95 | # Adding ARFF to IANA types. 96 | mimetypes.add_type(arff.MIMETYPE, '.arff', strict=True) 97 | out = mimetypes.guess_type(path) 98 | return out[0] 99 | 100 | def is_url_path(path): 101 | schemes = ['http', 'https', 'ftp'] 102 | for s in schemes: 103 | if path.startswith(s + '://'): 104 | return True 105 | return False 106 | 107 | class AttrDict(dict): 108 | def __init__(self, *args, **kwargs): 109 | super(AttrDict, self).__init__(*args, **kwargs) 110 | self.__dict__ = self 111 | 112 | -------------------------------------------------------------------------------- /dataconverters/arff.py: -------------------------------------------------------------------------------- 1 | import datetime 2 | 3 | MIMETYPE = 'application/weka' 4 | 5 | class ARFF: 6 | 7 | def __init__(self, dataset_name='dataset'): 8 | self.header = u'' 9 | self.data = u'\n@DATA\n' 10 | self.attr_list = [] 11 | self._add_relation(dataset_name=dataset_name) 12 | 13 | def __str__(self): 14 | return self.header + self.data 15 | 16 | def _to_arff_type(self, attr_type): 17 | if attr_type == 'String': 18 | return 'STRING' 19 | elif attr_type == 'Integer': 20 | return 'NUMERIC' 21 | elif attr_type == 'Float': 22 | return 'NUMERIC' 23 | elif attr_type == 'Decimal': 24 | return 'NUMERIC' 25 | elif attr_type == 'DateTime': 26 | return 'DATE' 27 | 28 | def _to_arff_data(self, attr_val, attr_type): 29 | if not attr_val: 30 | return u'?' 31 | if attr_type == 'DATE': 32 | return unicode(attr_val).replace(' ', 'T') 33 | if attr_type == 'STRING': 34 | return u'\'%s\'' % unicode(attr_val).replace('\'', '\"') 35 | else: 36 | return unicode(attr_val) 37 | 38 | def _add_relation(self, dataset_name): 39 | self.header += u'@RELATION %s\n\n' % dataset_name 40 | 41 | def add_attr(self, attr_name, attr_type): 42 | attr_type = self._to_arff_type(attr_type) 43 | self.attr_list.append((attr_name, attr_type)) 44 | attr_name = attr_name.replace(' ','_') 45 | self.header += u'@ATTRIBUTE %s %s\n' % (attr_name, attr_type) 46 | 47 | def add_record(self, row): 48 | #for attr_name, attr_type in self.attr_list: 49 | # self.data += str(row[attr_name]) 50 | # self.data += ',' 51 | self.data += ','.join([self._to_arff_data(row[attr_name], attr_type) for attr_name, attr_type in self.attr_list]) 52 | self.data += '\n' 53 | 54 | def write(stream, records, metadata, dataset_name='dataset', **kwargs): 55 | '''Write data into Weka ARFF structure on the given stream 56 | 57 | :param stream: file-like object supporting writing. 58 | 59 | :return: null 60 | ''' 61 | 62 | #print 'ARFF\n' 63 | a = ARFF(dataset_name=dataset_name) 64 | for attribute in metadata['fields']: 65 | a.add_attr(attribute['id'], attribute['type']) 66 | for record in records: 67 | a.add_record(record) 68 | 69 | #print 'Writing...' 70 | stream.write(unicode(a).encode("UTF-8")) 71 | -------------------------------------------------------------------------------- /dataconverters/cli.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | from dataconverters import _dataconvert 3 | 4 | def make_argparser(): 5 | parser = argparse.ArgumentParser(description=\ 6 | '''Convert data between formats. Supported formats: 7 | 8 | Input: csv, tsv, excel (xls, xlsx). 9 | Output: csv, json 10 | 11 | Examples 12 | ======== 13 | 14 | # convert from simple.xls file online to out.csv in current directory 15 | dataconvert https://github.com/okfn/dataconverters/raw/master/testdata/xls/simple.xls out.csv 16 | 17 | # convert from simple.xls to json on stdout 18 | dataconvert https://github.com/okfn/dataconverters/raw/master/testdata/xls/simple.xls _.json 19 | 20 | Help 21 | ==== 22 | ''', 23 | epilog=\ 24 | '''Copyright Open Knowledge Foundation 2007-2013. Licensed under the MIT license. 25 | Part of the DataConverters project: https://github.com/okfn/dataconverters''', 26 | formatter_class=argparse.RawDescriptionHelpFormatter 27 | ) 28 | parser.add_argument('inpath', metavar='inpath', type=str, 29 | help='in file path or url') 30 | parser.add_argument('outpath', metavar='outpath', type=str, 31 | help='out file path to write to (use underscore "_" as filename to indicate stdout e.g. _.csv or _.json)') 32 | parser.add_argument('--no-guess-types', dest='guess_types', 33 | action='store_false', 34 | help='''Disable type-guessing (where it is used e.g. with CSVs). Type guessing may significantly affect performance''', 35 | default=True 36 | ) 37 | parser.add_argument('--sheet', metavar='NUM', 38 | help='''Index of sheet in spreadsheet to convert (index starts at 1)''', 39 | default=1 40 | ) 41 | parser.add_argument('--records', metavar='NUM', 42 | help='''Only convert a maximum of NUM records''' 43 | ) 44 | parser.add_argument('--format', 45 | help='''Format or mimetype of incoming file e.g. xls, csv, text/csv''' 46 | ) 47 | parser.add_argument('-e', '--encoding', 48 | help='''File encoding of incoming file''' 49 | ) 50 | return parser 51 | 52 | def main(): 53 | parser = make_argparser() 54 | args = parser.parse_args() 55 | _dataconvert(args) 56 | 57 | -------------------------------------------------------------------------------- /dataconverters/commas.py: -------------------------------------------------------------------------------- 1 | import json 2 | import datetime 3 | import unicodecsv 4 | 5 | from messytables import ( 6 | CSVTableSet, 7 | headers_guess, 8 | headers_processor, 9 | offset_processor, 10 | types_processor, 11 | type_guess, 12 | StringType, 13 | IntegerType, 14 | FloatType, 15 | DecimalType) 16 | from messytables.types import DateUtilType 17 | 18 | 19 | def parse(stream, guess_types=True, **kwargs): 20 | '''Parse CSV file and return row iterator plus metadata (fields etc). 21 | 22 | Additional CSV arguments as per 23 | http://docs.python.org/2/library/csv.html#csv-fmt-params 24 | 25 | :param delimiter: 26 | :param quotechar: 27 | :param window: the size of the sample used for analysis 28 | 29 | There is also support for: 30 | 31 | :param encoding: file encoding (will be guess with chardet if not provided) 32 | 33 | 34 | You can process csv as well as tsv files using this function. For tsv just 35 | pass:: 36 | 37 | delimiter='\t' 38 | ''' 39 | metadata = dict(**kwargs) 40 | delimiter = metadata.get('delimiter', None) 41 | quotechar = metadata.get('quotechar', None) 42 | window = metadata.get('window', None) 43 | encoding = metadata.get('encoding', None) 44 | table_set = CSVTableSet(stream, delimiter=delimiter, 45 | quotechar=quotechar, encoding=encoding, window=window) 46 | strict_type_guess = metadata.get('strict_type_guess', False) 47 | row_set = table_set.tables.pop() 48 | offset, headers = headers_guess(row_set.sample) 49 | 50 | fields = [] 51 | dup_columns = {} 52 | noname_count = 1 53 | if guess_types: 54 | guessable_types = [StringType, IntegerType, FloatType, DecimalType, 55 | DateUtilType] 56 | sample = row_set.sample 57 | for _ in range(offset + 1): 58 | sample.next() 59 | row_types = type_guess(sample, guessable_types, 60 | strict=strict_type_guess) 61 | for index, field in enumerate(headers): 62 | field_dict = {} 63 | if "" == field: 64 | field = '_'.join(['column', unicode(noname_count)]) 65 | headers[index] = field 66 | noname_count += 1 67 | if headers.count(field) == 1: 68 | field_dict['id'] = field 69 | else: 70 | dup_columns[field] = dup_columns.get(field, 0) + 1 71 | field_dict['id'] = u'_'.join([field, unicode(dup_columns[field])]) 72 | if guess_types: 73 | if isinstance(row_types[index], DateUtilType): 74 | field_dict['type'] = 'DateTime' 75 | else: 76 | field_dict['type'] = str(row_types[index]) 77 | fields.append(field_dict) 78 | row_set.register_processor(headers_processor([x['id'] for x in fields])) 79 | row_set.register_processor(offset_processor(offset + 1)) 80 | if guess_types: 81 | row_set.register_processor(types_processor(row_types, strict=strict_type_guess)) 82 | 83 | def row_iterator(): 84 | for row in row_set: 85 | data_row = {} 86 | for index, cell in enumerate(row): 87 | data_row[cell.column] = cell.value 88 | yield data_row 89 | return row_iterator(), {'fields': fields} 90 | 91 | 92 | class DateEncoder(json.JSONEncoder): 93 | def default(self, obj): 94 | if isinstance(obj, datetime.datetime): 95 | return obj.isoformat() 96 | 97 | return json.JSONEncoder.default(self, obj) 98 | 99 | 100 | def csv_to_json(stream, **kwargs): 101 | '''TODO: document output format''' 102 | iterator, metadata = parse(stream, **kwargs) 103 | # TODO: convert python types to json serializable stuff! 104 | # e.g. datetimes to isoformat strings etc 105 | out = json.dumps( 106 | { 107 | 'metadata': metadata, 108 | 'records': [row for row in iterator] 109 | }, 110 | cls=DateEncoder) 111 | return out, metadata 112 | 113 | 114 | def write(stream, records, metadata, **kwargs): 115 | '''Write records and metadata to CSV structure on the given stream 116 | 117 | :param stream: file-like object supporting writing. 118 | 119 | :param kwargs: passed directly through to the csv.DictWriter object 120 | 121 | :return: null 122 | ''' 123 | fields = [ f['id'] for f in metadata['fields'] ] 124 | # default encoding for unicodecsv DictWriter is utf-8 125 | writer = unicodecsv.DictWriter(stream, fields, **kwargs) 126 | # TODO: possibly using writerows would be faster (??) 127 | writer.writeheader() 128 | for r in records: 129 | writer.writerow(r) 130 | 131 | -------------------------------------------------------------------------------- /dataconverters/jsondata.py: -------------------------------------------------------------------------------- 1 | import json 2 | import datetime 3 | import decimal 4 | 5 | class JSONEncoder(json.JSONEncoder): 6 | def default(self, obj): 7 | if isinstance(obj, datetime.datetime): 8 | return obj.isoformat() 9 | if isinstance(obj, decimal.Decimal): 10 | return float(obj) 11 | if isinstance(obj, datetime.time): 12 | return obj.isoformat() 13 | return json.JSONEncoder.default(self, obj) 14 | 15 | 16 | def write(stream, records, metadata, indent=2, **kwargs): 17 | '''Write records and metadata to JSON structure on the given stream 18 | 19 | :param stream: file-like object supporting writing. 20 | 21 | :return: null 22 | ''' 23 | data = { 24 | 'metadata': metadata, 25 | 'records': [r for r in records] 26 | } 27 | json.dump(data, stream, indent=indent, cls=JSONEncoder) 28 | 29 | -------------------------------------------------------------------------------- /dataconverters/kml.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | from subprocess import Popen 4 | import tempfile 5 | 6 | 7 | def parse(stream, **kwargs): 8 | ''' 9 | Parse KML file and return python list and metadata. 10 | ''' 11 | # Get a temporary file 12 | o = tempfile.NamedTemporaryFile() 13 | o.close() 14 | with tempfile.NamedTemporaryFile() as i: 15 | i.write(stream.read()) 16 | 17 | i.flush() 18 | 19 | cmd = ['ogr2ogr', '-f', 'GeoJSON', o.name, i.name] 20 | inst = Popen(cmd) 21 | inst.communicate() 22 | 23 | stream = open(o.name, 'r') 24 | stream.seek(0) 25 | streamcontent = stream.read() 26 | stream.close() 27 | os.remove(o.name) 28 | 29 | decodedcontent = json.loads(streamcontent) 30 | 31 | return decodedcontent, {} 32 | 33 | -------------------------------------------------------------------------------- /dataconverters/shp.py: -------------------------------------------------------------------------------- 1 | # import fiona 2 | 3 | # not implemented 4 | def parse(path, **kwargs): 5 | # return fiona.collection(path), {} 6 | pass 7 | 8 | -------------------------------------------------------------------------------- /dataconverters/xls.py: -------------------------------------------------------------------------------- 1 | """Data Proxy - CSV dataconversion adapter""" 2 | from datetime import date, datetime 3 | from messytables import ( 4 | XLSTableSet, 5 | XLSXTableSet, 6 | headers_guess, 7 | headers_processor, 8 | offset_processor, 9 | type_guess, 10 | StringType, 11 | IntegerType, 12 | FloatType, 13 | DecimalType) 14 | from messytables.types import DateUtilType 15 | 16 | 17 | def parse(stream, excel_type='xls', sheet=1, guess_types=True, 18 | strict_type_guess=False, encoding=None): 19 | '''Parse Excel (xls or xlsx) to structured objects. 20 | 21 | :param excel_type: xls | xlsx 22 | :param sheet: index of sheet in spreadsheet to convert (starting from index = 1) 23 | ''' 24 | sheet_number = int(sheet) - 1 25 | 26 | xlsclass = XLSTableSet 27 | kwargs = { 'encoding': encoding } 28 | if excel_type == 'xlsx': 29 | xlsclass = XLSXTableSet 30 | # xlsx parser does not support encoding 31 | kwargs = {} 32 | table_set = xlsclass(stream, **kwargs) 33 | try: 34 | row_set = table_set.tables[sheet_number] 35 | except IndexError: 36 | raise Exception('This file does not have sheet number %d' % 37 | (sheet_number + 1)) 38 | offset, headers = headers_guess(row_set.sample) 39 | 40 | fields = [] 41 | dup_columns = {} 42 | noname_count = 1 43 | if guess_types: 44 | guess_types = [StringType, IntegerType, FloatType, DecimalType, 45 | DateUtilType] 46 | sample = row_set.sample 47 | for _ in range(offset + 1): 48 | sample.next() 49 | row_types = type_guess(sample, guess_types, 50 | strict=strict_type_guess) 51 | for index, field in enumerate(headers): 52 | if isinstance(field, datetime) or isinstance(field, date): 53 | field = field.isoformat() 54 | field_dict = {} 55 | if "" == field: 56 | field = '_'.join(['column', str(noname_count)]) 57 | headers[index] = field 58 | noname_count += 1 59 | if headers.count(field) == 1: 60 | field_dict['id'] = field 61 | else: 62 | dup_columns[field] = dup_columns.get(field, 0) + 1 63 | field_dict['id'] = u'_'.join([str(field), str(dup_columns[field])]) 64 | if guess_types: 65 | if isinstance(row_types[index], DateUtilType): 66 | field_dict['type'] = 'DateTime' 67 | else: 68 | field_dict['type'] = str(row_types[index]) 69 | fields.append(field_dict) 70 | row_set.register_processor(headers_processor([x['id'] for x in fields])) 71 | row_set.register_processor(offset_processor(offset + 1)) 72 | 73 | def row_iterator(): 74 | for row in row_set: 75 | data_row = {} 76 | for index, cell in enumerate(row): 77 | data_row[cell.column] = cell.value 78 | yield data_row 79 | 80 | return row_iterator(), {'fields': fields} 81 | -------------------------------------------------------------------------------- /index.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Data Converters 4 | --- 5 | 6 | Unified **python library** and **command line interface** to convert data from 7 | one format to another (especially *tabular* data). Supports: 8 | 9 | * CSV (to, from) - with type detection (dates, numbers etc) 10 | * XLS(X) (from) - ditto 11 | * JSON (to, from) 12 | * KML to GeoJSON 13 | * Shapefile to GeoJSON 14 | * ARFF (to) 15 | 16 | Please [file bugs][issues] for any unexpected behavior. If you like this sort of thing you may also like [Data Pipes - streaming data transforms in the browser][datapipes]! 17 | 18 | Copyright 2007-2013 Open Knowledge Foundation. Licensed under the MIT license. Developed with generous support from Google. 19 | 20 | [issues]: https://github.com/okfn/dataconverters/issues 21 | [datapipes]: http://datapipes.okfnlabs.org/ 22 | [existing]: docs/existing.html 23 | 24 | **Table of Contents** 25 | 26 | * This will become a table of contents (this text will be scraped). 27 | {:toc} 28 | 29 | ## Usage 30 | 31 | ### Command line 32 | 33 | From the command line: 34 | 35 | dataconvert simple.xls out.csv 36 | 37 | # use it with urls 38 | dataconvert https://github.com/okfn/dataconverters/raw/master/testdata/xls/simple.xls out.csv 39 | 40 | # pipe to stdout 41 | dataconvert simple.xls _.csv 42 | 43 | # other formats ... 44 | dataconvert simple.csv _.json 45 | 46 | # if it can't guess the data format ... (simple is an excel file) 47 | dataconvert --format=xls simple.i-am-xls-really out.csv 48 | 49 | For more details see the help: 50 | 51 | dataconvert -h 52 | 53 | ### As a Python Library 54 | 55 | The basic dataconvert convenience utility makes it very easy to convert data: 56 | 57 | from dataconverters import dataconvert 58 | dataconvert('infile-or-url.xls', 'outfile.csv') 59 | dataconvert('infile-or-url.xls', 'outfile.csv', sheet=3) 60 | dataconvert('infile-or-url.i-am-really-an-xls', 'outfile.csv', format='xls') 61 | 62 | Find out more: 63 | 64 | pydoc dataconverters 65 | 66 | Here's an example of doing a full parse of CSV to JSON. Note that this isn't 67 | just any old csv parsing! Headers (and column names) are extracted, types 68 | detected etc etc. 69 | 70 | import dataconverters.commas as commas 71 | with open('simple.csv') as f: 72 | # records is an iterator over the records 73 | # metadata is a dict containing a fields key which is a list of the fields 74 | records, metadata = commas.parse(f) 75 | print metadata 76 | print [r for r in records] 77 | 78 | For more examples see the source code. 79 | 80 | ---- 81 | 82 | ## Installation 83 | 84 | Install from PyPI: 85 | 86 | pip install dataconverters 87 | 88 | Or you can install from Source: 89 | 90 | # Clone the repository 91 | https://github.com/okfn/dataconverters 92 | 93 | # then install the lib ... 94 | 95 | # move into the directory 96 | cd dataconverters 97 | 98 | # install the library 99 | pip install -e . 100 | # you can use the more old-fashioned route if you do not have pip 101 | # python setup.py install 102 | 103 | ### Additional Dependencies 104 | 105 | For Geo functionality we require [Fiona](http://toblerity.github.com/fiona/). 106 | This in turn requires the libgdal bindings (see Fiona install instructions for 107 | more detail. On Ubuntu one does:: 108 | 109 | apt-get install libgdal1-dev 110 | # then install fiona 111 | pip install "Fiona>=0.12" 112 | 113 | ---- 114 | 115 | ## DataConverters Standard API 116 | 117 | There are 2 types of functionality within Data Converters: 118 | 119 | * "Parsing": A parse function takes a given input stream and returns python 120 | objects in a given structure. For example, CSV is converted to an iterator of 121 | rows. Parsing isn't always possible since there may not be a well-defined 122 | intermediate, iterable python structure one can hold the data in. 123 | * "Converting": A convert function takes a given input stream of a given format 124 | and produces an output stream in a specified output format. For example, 125 | converting CSV to JSON (in a specific structure), or taking KML to GeoJSON. 126 | 127 | In code terms method signatures look like: 128 | 129 | 130 | def parse(fileobj-like-stream, ....) 131 | :return: (iterator, metadata) 132 | where iterator is an iterator over rows / records in the data and 133 | metadata is metadata about the source (see below) 134 | 135 | def convert(fileobj-like-stream, ...) 136 | :return: (stream, metadata) 137 | 138 | There is some variation so some parse function only take a file path rather a file like object. 139 | 140 | ### Metadata 141 | 142 | Metadata is a dictionary for holding information extracted during the 143 | processing. For example, for tabular data it would include a `fields` key which 144 | contained information on the fields (columns) in the table as per the [JSON 145 | Table Schema](http://www.dataprotocols.org/en/latest/json-table-schema.html). 146 | 147 | 148 | ## Source Data Formats Supported 149 | 150 | ### CSV 151 | 152 | For CSV files, type should be `csv`. Empty column names will be auto-generated 153 | with column_1, column_2, etc. Duplicate column names will have _n added as 154 | well. For instance, two columns with name date will be date_1, date_2. 155 | 156 | 157 | ### XLS(X) 158 | 159 | For XLS input files type should be `xls`, and for XLSX files, type must be 160 | `xlsx`. Empty column names will be auto-generated with column_1, column_2, etc. 161 | Duplicate column names will have _n added as well. For instance, two columns 162 | with name date will be date_1, date_2. 163 | 164 | ### KML 165 | 166 | We can convert KML to GeoJSON 167 | 168 | ### Shape 169 | 170 | Support for coverting from Shapefiles using Fiona and GDAL. 171 | 172 | ---- 173 | 174 | ## Research - Existing Libraries and Services 175 | 176 | Please [add to this list »][edit] 177 | 178 | [edit]: https://github.com/okfn/dataconverters/edit/master/index.md 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 194 | 197 | 200 | 201 | 202 | 203 | 204 | 207 | 212 | 215 | 216 | 217 | 218 | 219 | 221 | 225 | 228 | 229 | 230 | 231 | 232 | 234 | 239 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 255 | 257 | 262 | 263 | 264 | 265 | 266 | 268 | 271 | 274 | 275 |
SourceDestServicesLibrariesComments
CSV... 192 | https://github.com/okfn/dataproxy 193 | 195 | Reasonably straightforward to do in most programming languages 196 | 198 | See https://github.com/okfn/dataconverters/issues/2 199 |
XLS 205 | Gut implementation, DataProxy 206 | 208 | * xlrd (python) 209 | * POI (Java) 210 | * messytables (builds on xlrd) 211 | 213 | See https://github.com/okfn/dataconverters/issues/6 214 |
Shapefiles... 220 | 222 | * GDAL and OGR 223 | * QGIS (tool) - not open 224 | 226 | See https://github.com/okfn/dataconverters/issues/1 227 |
KML... 233 | 235 | * GDAL can do this (but no Fiona bindings) - but see https://github.com/Toblerity/Fiona/issues/23 236 | * fastkml https://github.com/cleder/fastkml 237 | * sgillies keytree 238 | 240 | See https://github.com/okfn/dataconverters/issues/5 241 |
GeoJSON...Can parse with normal libraries
PDF... 254 | 256 | 258 | - See overview and list here https://gist.github.com/rgrp/5844485 259 | - Also the issue https://github.com/okfn/dataconverters/issues/9 260 | - and School of Data intro 261 |
Access (MDB)... 267 | 269 | http://mdbtools.sourceforge.net/ 270 | 272 | See https://github.com/okfn/dataconverters/issues/10 273 |
276 | 277 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | # messytables==0.15.1 2 | # 2017-02-07 right now we need a specific version for a bugfix 3 | # should be able to revert to a specific version soon 4 | git+git://github.com/okfn/messytables.git@b7faca40d2eb888cfe88a0505768a379c1b51152 5 | unicodecsv 6 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup 2 | 3 | setup(name='dataconverters', 4 | version='0.4', 5 | description='Data conversion python library and command line tool', 6 | author='Open Knowledge Foundation (Nigel Babu, Rufus Pollock, Dominik Moritz)', 7 | author_email='okfn-labs@lists.okfn.org', 8 | url='https://github.com/okfn/dataconverters/', 9 | packages=['dataconverters'], 10 | license='MIT', 11 | entry_points={ 12 | 'console_scripts': [ 13 | 'dataconvert = dataconverters.cli:main' 14 | ] 15 | }) 16 | -------------------------------------------------------------------------------- /testdata/csv/long.csv: -------------------------------------------------------------------------------- 1 | header 2 | foo 3 | foo 4 | foo 5 | foo 6 | foo 7 | foo 8 | foo 9 | foo 10 | foo 11 | foo 12 | foo 13 | foo 14 | foo 15 | foo 16 | foo 17 | foo 18 | foo 19 | foo 20 | foo 21 | foo 22 | foo 23 | foo 24 | foo 25 | foo 26 | foo 27 | foo 28 | foo 29 | foo 30 | foo 31 | foo 32 | foo 33 | foo 34 | foo 35 | foo 36 | foo 37 | foo 38 | foo 39 | foo 40 | foo 41 | foo 42 | foo 43 | foo 44 | foo 45 | foo 46 | foo 47 | foo 48 | foo 49 | foo 50 | foo 51 | foo 52 | foo 53 | foo 54 | foo 55 | foo 56 | foo 57 | foo 58 | foo 59 | foo 60 | foo 61 | foo 62 | foo 63 | foo 64 | foo 65 | foo 66 | foo 67 | foo 68 | foo 69 | foo 70 | foo 71 | foo 72 | foo 73 | foo 74 | foo 75 | foo 76 | foo 77 | foo 78 | foo 79 | foo 80 | foo 81 | foo 82 | foo 83 | foo 84 | foo 85 | foo 86 | foo 87 | foo 88 | foo 89 | foo 90 | foo 91 | foo 92 | foo 93 | foo 94 | foo 95 | foo 96 | foo 97 | foo 98 | foo 99 | foo 100 | foo 101 | foo 102 | foo 103 | foo 104 | foo 105 | foo 106 | foo 107 | foo 108 | foo 109 | foo 110 | foo 111 | foo 112 | foo 113 | foo 114 | foo 115 | foo 116 | foo 117 | foo 118 | foo 119 | foo 120 | foo 121 | foo 122 | foo 123 | foo 124 | foo 125 | foo 126 | foo 127 | foo 128 | foo 129 | foo 130 | foo 131 | foo 132 | foo 133 | foo 134 | foo 135 | foo 136 | foo 137 | foo 138 | foo 139 | foo 140 | foo 141 | foo 142 | foo 143 | foo 144 | foo 145 | foo 146 | foo 147 | foo 148 | foo 149 | foo 150 | foo 151 | foo 152 | foo 153 | foo 154 | foo 155 | foo 156 | foo 157 | foo 158 | foo 159 | foo 160 | foo 161 | foo 162 | foo 163 | foo 164 | foo 165 | foo 166 | foo 167 | foo 168 | foo 169 | foo 170 | foo 171 | foo 172 | foo 173 | foo 174 | foo 175 | foo 176 | foo 177 | foo 178 | foo 179 | foo 180 | foo 181 | foo 182 | foo 183 | foo 184 | foo 185 | foo 186 | foo 187 | foo 188 | foo 189 | foo 190 | foo 191 | foo 192 | foo 193 | foo 194 | foo 195 | foo 196 | foo 197 | foo 198 | foo 199 | foo 200 | foo 201 | foo 202 | foo 203 | foo 204 | foo 205 | foo 206 | foo 207 | foo 208 | foo 209 | foo 210 | foo 211 | foo 212 | foo 213 | foo 214 | foo 215 | foo 216 | foo 217 | foo 218 | foo 219 | foo 220 | foo 221 | foo 222 | foo 223 | foo 224 | foo 225 | foo 226 | foo 227 | foo 228 | foo 229 | foo 230 | foo 231 | foo 232 | foo 233 | foo 234 | foo 235 | foo 236 | foo 237 | foo 238 | foo 239 | foo 240 | foo 241 | foo 242 | foo 243 | foo 244 | foo 245 | foo 246 | foo 247 | foo 248 | foo 249 | foo 250 | foo 251 | foo 252 | foo 253 | foo 254 | foo 255 | foo 256 | foo 257 | foo 258 | foo 259 | foo 260 | foo 261 | foo 262 | foo 263 | foo 264 | foo 265 | foo 266 | foo 267 | foo 268 | foo 269 | foo 270 | foo 271 | foo 272 | foo 273 | foo 274 | foo 275 | foo 276 | foo 277 | foo 278 | foo 279 | foo 280 | foo 281 | foo 282 | foo 283 | foo 284 | foo 285 | foo 286 | foo 287 | foo 288 | foo 289 | foo 290 | foo 291 | foo 292 | foo 293 | foo 294 | foo 295 | foo 296 | foo 297 | foo 298 | foo 299 | foo 300 | foo 301 | foo 302 | foo 303 | foo 304 | foo 305 | foo 306 | foo 307 | foo 308 | foo 309 | foo 310 | foo 311 | foo 312 | foo 313 | foo 314 | foo 315 | foo 316 | foo 317 | foo 318 | foo 319 | foo 320 | foo 321 | foo 322 | foo 323 | foo 324 | foo 325 | foo 326 | foo 327 | foo 328 | foo 329 | foo 330 | foo 331 | foo 332 | foo 333 | foo 334 | foo 335 | foo 336 | foo 337 | foo 338 | foo 339 | foo 340 | foo 341 | foo 342 | foo 343 | foo 344 | foo 345 | foo 346 | foo 347 | foo 348 | foo 349 | foo 350 | foo 351 | foo 352 | foo 353 | foo 354 | foo 355 | foo 356 | foo 357 | foo 358 | foo 359 | foo 360 | foo 361 | foo 362 | foo 363 | foo 364 | foo 365 | foo 366 | foo 367 | foo 368 | foo 369 | foo 370 | foo 371 | foo 372 | foo 373 | foo 374 | foo 375 | foo 376 | foo 377 | foo 378 | foo 379 | foo 380 | foo 381 | foo 382 | foo 383 | foo 384 | foo 385 | foo 386 | foo 387 | foo 388 | foo 389 | foo 390 | foo 391 | foo 392 | foo 393 | foo 394 | foo 395 | foo 396 | foo 397 | foo 398 | foo 399 | foo 400 | foo 401 | foo 402 | foo 403 | foo 404 | foo 405 | foo 406 | foo 407 | foo 408 | foo 409 | foo 410 | foo 411 | foo 412 | foo 413 | foo 414 | foo 415 | foo 416 | foo 417 | foo 418 | foo 419 | foo 420 | foo 421 | foo 422 | foo 423 | foo 424 | foo 425 | foo 426 | foo 427 | foo 428 | foo 429 | foo 430 | foo 431 | foo 432 | foo 433 | foo 434 | foo 435 | foo 436 | foo 437 | foo 438 | foo 439 | foo 440 | foo 441 | foo 442 | foo 443 | foo 444 | foo 445 | foo 446 | foo 447 | foo 448 | foo 449 | foo 450 | foo 451 | foo 452 | foo 453 | foo 454 | foo 455 | foo 456 | foo 457 | foo 458 | foo 459 | foo 460 | foo 461 | foo 462 | foo 463 | foo 464 | foo 465 | foo 466 | foo 467 | foo 468 | foo 469 | foo 470 | foo 471 | foo 472 | foo 473 | foo 474 | foo 475 | foo 476 | foo 477 | foo 478 | foo 479 | foo 480 | foo 481 | foo 482 | foo 483 | foo 484 | foo 485 | foo 486 | foo 487 | foo 488 | foo 489 | foo 490 | foo 491 | foo 492 | foo 493 | foo 494 | foo 495 | foo 496 | foo 497 | foo 498 | foo 499 | foo 500 | foo 501 | foo 502 | foo 503 | foo 504 | foo 505 | foo 506 | foo 507 | foo 508 | foo 509 | foo 510 | foo 511 | foo 512 | foo 513 | foo 514 | foo 515 | foo 516 | foo 517 | foo 518 | foo 519 | foo 520 | foo 521 | foo 522 | foo 523 | foo 524 | foo 525 | foo 526 | foo 527 | foo 528 | foo 529 | foo 530 | foo 531 | foo 532 | foo 533 | foo 534 | foo 535 | foo 536 | foo 537 | foo 538 | foo 539 | foo 540 | foo 541 | foo 542 | foo 543 | foo 544 | foo 545 | foo 546 | foo 547 | foo 548 | foo 549 | foo 550 | foo 551 | foo 552 | foo 553 | foo 554 | foo 555 | foo 556 | foo 557 | foo 558 | foo 559 | foo 560 | foo 561 | foo 562 | foo 563 | foo 564 | foo 565 | foo 566 | foo 567 | foo 568 | foo 569 | foo 570 | foo 571 | foo 572 | foo 573 | foo 574 | foo 575 | foo 576 | foo 577 | foo 578 | foo 579 | foo 580 | foo 581 | foo 582 | foo 583 | foo 584 | foo 585 | foo 586 | foo 587 | foo 588 | foo 589 | foo 590 | foo 591 | foo 592 | foo 593 | foo 594 | foo 595 | foo 596 | foo 597 | foo 598 | foo 599 | foo 600 | foo 601 | foo 602 | foo 603 | foo 604 | foo 605 | foo 606 | foo 607 | foo 608 | foo 609 | foo 610 | foo 611 | foo 612 | foo 613 | foo 614 | foo 615 | foo 616 | foo 617 | foo 618 | foo 619 | foo 620 | foo 621 | foo 622 | foo 623 | foo 624 | foo 625 | foo 626 | foo 627 | foo 628 | foo 629 | foo 630 | foo 631 | foo 632 | foo 633 | foo 634 | foo 635 | foo 636 | foo 637 | foo 638 | foo 639 | foo 640 | foo 641 | foo 642 | foo 643 | foo 644 | foo 645 | foo 646 | foo 647 | foo 648 | foo 649 | foo 650 | foo 651 | foo 652 | foo 653 | foo 654 | foo 655 | foo 656 | foo 657 | foo 658 | foo 659 | foo 660 | foo 661 | foo 662 | foo 663 | foo 664 | foo 665 | foo 666 | foo 667 | foo 668 | foo 669 | foo 670 | foo 671 | foo 672 | foo 673 | foo 674 | foo 675 | foo 676 | foo 677 | foo 678 | foo 679 | foo 680 | foo 681 | foo 682 | foo 683 | foo 684 | foo 685 | foo 686 | foo 687 | foo 688 | foo 689 | foo 690 | foo 691 | foo 692 | foo 693 | foo 694 | foo 695 | foo 696 | foo 697 | foo 698 | foo 699 | foo 700 | foo 701 | foo 702 | foo 703 | foo 704 | foo 705 | foo 706 | foo 707 | foo 708 | foo 709 | foo 710 | foo 711 | foo 712 | foo 713 | foo 714 | foo 715 | foo 716 | foo 717 | foo 718 | foo 719 | foo 720 | foo 721 | foo 722 | foo 723 | foo 724 | foo 725 | foo 726 | foo 727 | foo 728 | foo 729 | foo 730 | foo 731 | foo 732 | foo 733 | foo 734 | foo 735 | foo 736 | foo 737 | foo 738 | foo 739 | foo 740 | foo 741 | foo 742 | foo 743 | foo 744 | foo 745 | foo 746 | foo 747 | foo 748 | foo 749 | foo 750 | foo 751 | foo 752 | foo 753 | foo 754 | foo 755 | foo 756 | foo 757 | foo 758 | foo 759 | foo 760 | foo 761 | foo 762 | foo 763 | foo 764 | foo 765 | foo 766 | foo 767 | foo 768 | foo 769 | foo 770 | foo 771 | foo 772 | foo 773 | foo 774 | foo 775 | foo 776 | foo 777 | foo 778 | foo 779 | foo 780 | foo 781 | foo 782 | foo 783 | foo 784 | foo 785 | foo 786 | foo 787 | foo 788 | foo 789 | foo 790 | foo 791 | foo 792 | foo 793 | foo 794 | foo 795 | foo 796 | foo 797 | foo 798 | foo 799 | foo 800 | foo 801 | foo 802 | foo 803 | foo 804 | foo 805 | foo 806 | foo 807 | foo 808 | foo 809 | foo 810 | foo 811 | foo 812 | foo 813 | foo 814 | foo 815 | foo 816 | foo 817 | foo 818 | foo 819 | foo 820 | foo 821 | foo 822 | foo 823 | foo 824 | foo 825 | foo 826 | foo 827 | foo 828 | foo 829 | foo 830 | foo 831 | foo 832 | foo 833 | foo 834 | foo 835 | foo 836 | foo 837 | foo 838 | foo 839 | foo 840 | foo 841 | foo 842 | foo 843 | foo 844 | foo 845 | foo 846 | foo 847 | foo 848 | foo 849 | foo 850 | foo 851 | foo 852 | foo 853 | foo 854 | foo 855 | foo 856 | foo 857 | foo 858 | foo 859 | foo 860 | foo 861 | foo 862 | foo 863 | foo 864 | foo 865 | foo 866 | foo 867 | foo 868 | foo 869 | foo 870 | foo 871 | foo 872 | foo 873 | foo 874 | foo 875 | foo 876 | foo 877 | foo 878 | foo 879 | foo 880 | foo 881 | foo 882 | foo 883 | foo 884 | foo 885 | foo 886 | foo 887 | foo 888 | foo 889 | foo 890 | foo 891 | foo 892 | foo 893 | foo 894 | foo 895 | foo 896 | foo 897 | foo 898 | foo 899 | foo 900 | foo 901 | foo 902 | foo 903 | foo 904 | foo 905 | foo 906 | foo 907 | foo 908 | foo 909 | foo 910 | foo 911 | foo 912 | foo 913 | foo 914 | foo 915 | foo 916 | foo 917 | foo 918 | foo 919 | foo 920 | foo 921 | foo 922 | foo 923 | foo 924 | foo 925 | foo 926 | foo 927 | foo 928 | foo 929 | foo 930 | foo 931 | foo 932 | foo 933 | foo 934 | foo 935 | foo 936 | foo 937 | foo 938 | foo 939 | foo 940 | foo 941 | foo 942 | foo 943 | foo 944 | foo 945 | foo 946 | foo 947 | foo 948 | foo 949 | foo 950 | foo 951 | foo 952 | foo 953 | foo 954 | foo 955 | foo 956 | foo 957 | foo 958 | foo 959 | foo 960 | foo 961 | foo 962 | foo 963 | foo 964 | foo 965 | foo 966 | foo 967 | foo 968 | foo 969 | foo 970 | foo 971 | foo 972 | foo 973 | foo 974 | foo 975 | foo 976 | foo 977 | foo 978 | foo 979 | foo 980 | foo 981 | foo 982 | foo 983 | foo 984 | foo 985 | foo 986 | foo 987 | foo 988 | foo 989 | foo 990 | foo 991 | foo 992 | foo 993 | foo 994 | foo 995 | foo 996 | foo 997 | foo 998 | foo 999 | foo 1000 | foo 1001 | foo 1002 | foo 1003 | foo 1004 | foo 1005 | foo 1006 | foo 1007 | foo 1008 | foo 1009 | foo 1010 | foo 1011 | foo 1012 | foo 1013 | foo 1014 | foo 1015 | foo 1016 | foo 1017 | foo 1018 | foo 1019 | foo 1020 | foo 1021 | foo 1022 | foo 1023 | foo 1024 | foo 1025 | foo 1026 | foo 1027 | foo 1028 | foo 1029 | foo 1030 | foo 1031 | foo 1032 | foo 1033 | foo 1034 | foo 1035 | foo 1036 | foo 1037 | foo 1038 | foo 1039 | foo 1040 | foo 1041 | foo 1042 | foo 1043 | foo 1044 | foo 1045 | foo 1046 | foo 1047 | foo 1048 | foo 1049 | foo 1050 | foo 1051 | foo 1052 | foo 1053 | foo 1054 | foo 1055 | foo 1056 | foo 1057 | foo 1058 | foo 1059 | foo 1060 | foo 1061 | foo 1062 | foo 1063 | foo 1064 | foo 1065 | foo 1066 | foo 1067 | foo 1068 | foo 1069 | foo 1070 | foo 1071 | foo 1072 | foo 1073 | foo 1074 | foo 1075 | foo 1076 | foo 1077 | foo 1078 | foo 1079 | foo 1080 | foo 1081 | foo 1082 | foo 1083 | foo 1084 | foo 1085 | foo 1086 | foo 1087 | foo 1088 | foo 1089 | foo 1090 | foo 1091 | foo 1092 | foo 1093 | foo 1094 | foo 1095 | foo 1096 | foo 1097 | foo 1098 | foo 1099 | foo 1100 | foo 1101 | foo 1102 | foo 1103 | foo 1104 | foo 1105 | foo 1106 | foo 1107 | foo 1108 | foo 1109 | foo 1110 | foo 1111 | foo 1112 | foo 1113 | foo 1114 | foo 1115 | foo 1116 | foo 1117 | foo 1118 | foo 1119 | foo 1120 | foo 1121 | foo 1122 | foo 1123 | foo 1124 | foo 1125 | foo 1126 | foo 1127 | foo 1128 | foo 1129 | foo 1130 | foo 1131 | foo 1132 | foo 1133 | foo 1134 | foo 1135 | foo 1136 | foo 1137 | foo 1138 | foo 1139 | foo 1140 | foo 1141 | foo 1142 | foo 1143 | foo 1144 | foo 1145 | foo 1146 | foo 1147 | foo 1148 | foo 1149 | foo 1150 | foo 1151 | foo 1152 | foo 1153 | foo 1154 | foo 1155 | foo 1156 | foo 1157 | foo 1158 | foo 1159 | foo 1160 | foo 1161 | foo 1162 | foo 1163 | foo 1164 | foo 1165 | foo 1166 | foo 1167 | foo 1168 | foo 1169 | foo 1170 | foo 1171 | foo 1172 | foo 1173 | foo 1174 | foo 1175 | foo 1176 | foo 1177 | foo 1178 | foo 1179 | foo 1180 | foo 1181 | foo 1182 | foo 1183 | foo 1184 | foo 1185 | foo 1186 | foo 1187 | foo 1188 | foo 1189 | foo 1190 | foo 1191 | foo 1192 | foo 1193 | foo 1194 | foo 1195 | foo 1196 | foo 1197 | foo 1198 | foo 1199 | foo 1200 | foo 1201 | foo 1202 | foo 1203 | foo 1204 | foo 1205 | foo 1206 | foo 1207 | foo 1208 | foo 1209 | foo 1210 | foo 1211 | foo 1212 | foo 1213 | foo 1214 | foo 1215 | foo 1216 | foo 1217 | foo 1218 | foo 1219 | foo 1220 | foo 1221 | foo 1222 | foo 1223 | foo 1224 | foo 1225 | foo 1226 | foo 1227 | foo 1228 | foo 1229 | foo 1230 | foo 1231 | foo 1232 | foo 1233 | foo 1234 | foo 1235 | foo 1236 | foo 1237 | foo 1238 | foo 1239 | foo 1240 | foo 1241 | foo 1242 | foo 1243 | foo 1244 | foo 1245 | foo 1246 | foo 1247 | foo 1248 | foo 1249 | foo 1250 | foo 1251 | foo 1252 | foo 1253 | foo 1254 | foo 1255 | foo 1256 | foo 1257 | foo 1258 | foo 1259 | foo 1260 | foo 1261 | foo 1262 | foo 1263 | foo 1264 | foo 1265 | foo 1266 | foo 1267 | foo 1268 | foo 1269 | foo 1270 | foo 1271 | foo 1272 | foo 1273 | foo 1274 | foo 1275 | foo 1276 | foo 1277 | foo 1278 | foo 1279 | foo 1280 | foo 1281 | foo 1282 | foo 1283 | foo 1284 | foo 1285 | foo 1286 | foo 1287 | foo 1288 | foo 1289 | foo 1290 | foo 1291 | foo 1292 | foo 1293 | foo 1294 | foo 1295 | foo 1296 | foo 1297 | foo 1298 | foo 1299 | foo 1300 | foo 1301 | foo 1302 | foo 1303 | foo 1304 | foo 1305 | foo 1306 | foo 1307 | foo 1308 | foo 1309 | foo 1310 | foo 1311 | foo 1312 | foo 1313 | foo 1314 | foo 1315 | foo 1316 | foo 1317 | foo 1318 | foo 1319 | foo 1320 | foo 1321 | foo 1322 | foo 1323 | foo 1324 | foo 1325 | foo 1326 | foo 1327 | foo 1328 | foo 1329 | foo 1330 | foo 1331 | foo 1332 | foo 1333 | foo 1334 | foo 1335 | foo 1336 | foo 1337 | foo 1338 | foo 1339 | foo 1340 | foo 1341 | foo 1342 | foo 1343 | foo 1344 | foo 1345 | foo 1346 | foo 1347 | foo 1348 | foo 1349 | foo 1350 | foo 1351 | foo 1352 | foo 1353 | foo 1354 | foo 1355 | foo 1356 | foo 1357 | foo 1358 | foo 1359 | foo 1360 | foo 1361 | foo 1362 | foo 1363 | foo 1364 | foo 1365 | foo 1366 | foo 1367 | foo 1368 | foo 1369 | foo 1370 | foo 1371 | foo 1372 | foo 1373 | foo 1374 | foo 1375 | foo 1376 | foo 1377 | foo 1378 | foo 1379 | foo 1380 | foo 1381 | foo 1382 | foo 1383 | foo 1384 | foo 1385 | foo 1386 | foo 1387 | foo 1388 | foo 1389 | foo 1390 | foo 1391 | foo 1392 | foo 1393 | foo 1394 | foo 1395 | foo 1396 | foo 1397 | foo 1398 | foo 1399 | foo 1400 | foo 1401 | foo 1402 | foo 1403 | foo 1404 | foo 1405 | foo 1406 | foo 1407 | foo 1408 | foo 1409 | foo 1410 | foo 1411 | foo 1412 | foo 1413 | foo 1414 | foo 1415 | foo 1416 | foo 1417 | foo 1418 | foo 1419 | foo 1420 | foo 1421 | foo 1422 | foo 1423 | foo 1424 | foo 1425 | foo 1426 | foo 1427 | foo 1428 | foo 1429 | foo 1430 | foo 1431 | foo 1432 | foo 1433 | foo 1434 | foo 1435 | foo 1436 | foo 1437 | foo 1438 | foo 1439 | foo 1440 | foo 1441 | foo 1442 | foo 1443 | foo 1444 | foo 1445 | foo 1446 | foo 1447 | foo 1448 | foo 1449 | foo 1450 | foo 1451 | foo 1452 | foo 1453 | foo 1454 | foo 1455 | foo 1456 | foo 1457 | foo 1458 | foo 1459 | foo 1460 | foo 1461 | foo 1462 | foo 1463 | foo 1464 | foo 1465 | foo 1466 | foo 1467 | foo 1468 | foo 1469 | foo 1470 | foo 1471 | foo 1472 | foo 1473 | foo 1474 | foo 1475 | foo 1476 | foo 1477 | foo 1478 | foo 1479 | foo 1480 | foo 1481 | foo 1482 | foo 1483 | foo 1484 | foo 1485 | foo 1486 | foo 1487 | foo 1488 | foo 1489 | foo 1490 | foo 1491 | foo 1492 | foo 1493 | foo 1494 | foo 1495 | foo 1496 | foo 1497 | foo 1498 | foo 1499 | foo 1500 | foo 1501 | foo 1502 | foo 1503 | foo 1504 | foo 1505 | foo 1506 | foo 1507 | foo 1508 | foo 1509 | foo 1510 | foo 1511 | foo 1512 | foo 1513 | foo 1514 | foo 1515 | foo 1516 | foo 1517 | foo 1518 | foo 1519 | foo 1520 | foo 1521 | foo 1522 | foo 1523 | foo 1524 | foo 1525 | foo 1526 | foo 1527 | foo 1528 | foo 1529 | foo 1530 | foo 1531 | foo 1532 | foo 1533 | foo 1534 | foo 1535 | foo 1536 | foo 1537 | foo 1538 | foo 1539 | foo 1540 | foo 1541 | foo 1542 | foo 1543 | foo 1544 | foo 1545 | foo 1546 | foo 1547 | foo 1548 | foo 1549 | foo 1550 | foo 1551 | foo 1552 | foo 1553 | foo 1554 | foo 1555 | foo 1556 | foo 1557 | foo 1558 | foo 1559 | foo 1560 | foo 1561 | foo 1562 | foo 1563 | foo 1564 | foo 1565 | foo 1566 | foo 1567 | foo 1568 | foo 1569 | foo 1570 | foo 1571 | foo 1572 | foo 1573 | foo 1574 | foo 1575 | foo 1576 | foo 1577 | foo 1578 | foo 1579 | foo 1580 | foo 1581 | foo 1582 | foo 1583 | foo 1584 | foo 1585 | foo 1586 | foo 1587 | foo 1588 | foo 1589 | foo 1590 | foo 1591 | foo 1592 | foo 1593 | foo 1594 | foo 1595 | foo 1596 | foo 1597 | foo 1598 | foo 1599 | foo 1600 | foo 1601 | foo 1602 | foo 1603 | foo 1604 | foo 1605 | foo 1606 | foo 1607 | foo 1608 | foo 1609 | foo 1610 | foo 1611 | foo 1612 | foo 1613 | foo 1614 | foo 1615 | foo 1616 | foo 1617 | foo 1618 | foo 1619 | foo 1620 | foo 1621 | foo 1622 | foo 1623 | foo 1624 | foo 1625 | foo 1626 | foo 1627 | foo 1628 | foo 1629 | foo 1630 | foo 1631 | foo 1632 | foo 1633 | foo 1634 | foo 1635 | foo 1636 | foo 1637 | foo 1638 | foo 1639 | foo 1640 | foo 1641 | foo 1642 | foo 1643 | foo 1644 | foo 1645 | foo 1646 | foo 1647 | foo 1648 | foo 1649 | foo 1650 | foo 1651 | foo 1652 | foo 1653 | foo 1654 | foo 1655 | foo 1656 | foo 1657 | foo 1658 | foo 1659 | foo 1660 | foo 1661 | foo 1662 | foo 1663 | foo 1664 | foo 1665 | foo 1666 | foo 1667 | foo 1668 | foo 1669 | foo 1670 | foo 1671 | foo 1672 | foo 1673 | foo 1674 | foo 1675 | foo 1676 | foo 1677 | foo 1678 | foo 1679 | foo 1680 | foo 1681 | foo 1682 | foo 1683 | foo 1684 | foo 1685 | foo 1686 | foo 1687 | foo 1688 | foo 1689 | foo 1690 | foo 1691 | foo 1692 | foo 1693 | foo 1694 | foo 1695 | foo 1696 | foo 1697 | foo 1698 | foo 1699 | foo 1700 | foo 1701 | foo 1702 | foo 1703 | foo 1704 | foo 1705 | foo 1706 | foo 1707 | foo 1708 | foo 1709 | foo 1710 | foo 1711 | foo 1712 | foo 1713 | foo 1714 | foo 1715 | foo 1716 | foo 1717 | foo 1718 | foo 1719 | foo 1720 | foo 1721 | foo 1722 | foo 1723 | foo 1724 | foo 1725 | foo 1726 | foo 1727 | foo 1728 | foo 1729 | foo 1730 | foo 1731 | foo 1732 | foo 1733 | foo 1734 | foo 1735 | foo 1736 | foo 1737 | foo 1738 | foo 1739 | foo 1740 | foo 1741 | foo 1742 | foo 1743 | foo 1744 | foo 1745 | foo 1746 | foo 1747 | foo 1748 | foo 1749 | foo 1750 | foo 1751 | foo 1752 | foo 1753 | foo 1754 | foo 1755 | foo 1756 | foo 1757 | foo 1758 | foo 1759 | foo 1760 | foo 1761 | foo 1762 | foo 1763 | foo 1764 | foo 1765 | foo 1766 | foo 1767 | foo 1768 | foo 1769 | foo 1770 | foo 1771 | foo 1772 | foo 1773 | foo 1774 | foo 1775 | foo 1776 | foo 1777 | foo 1778 | foo 1779 | foo 1780 | foo 1781 | foo 1782 | foo 1783 | foo 1784 | foo 1785 | foo 1786 | foo 1787 | foo 1788 | foo 1789 | foo 1790 | foo 1791 | foo 1792 | foo 1793 | foo 1794 | foo 1795 | foo 1796 | foo 1797 | foo 1798 | foo 1799 | foo 1800 | foo 1801 | foo 1802 | foo 1803 | foo 1804 | foo 1805 | foo 1806 | foo 1807 | foo 1808 | foo 1809 | foo 1810 | foo 1811 | foo 1812 | foo 1813 | foo 1814 | foo 1815 | foo 1816 | foo 1817 | foo 1818 | foo 1819 | foo 1820 | foo 1821 | foo 1822 | foo 1823 | foo 1824 | foo 1825 | foo 1826 | foo 1827 | foo 1828 | foo 1829 | foo 1830 | foo 1831 | foo 1832 | foo 1833 | foo 1834 | foo 1835 | foo 1836 | foo 1837 | foo 1838 | foo 1839 | foo 1840 | foo 1841 | foo 1842 | foo 1843 | foo 1844 | foo 1845 | foo 1846 | foo 1847 | foo 1848 | foo 1849 | foo 1850 | foo 1851 | foo 1852 | foo 1853 | foo 1854 | foo 1855 | foo 1856 | foo 1857 | foo 1858 | foo 1859 | foo 1860 | foo 1861 | foo 1862 | foo 1863 | foo 1864 | foo 1865 | foo 1866 | foo 1867 | foo 1868 | foo 1869 | foo 1870 | foo 1871 | foo 1872 | foo 1873 | foo 1874 | foo 1875 | foo 1876 | foo 1877 | foo 1878 | foo 1879 | foo 1880 | foo 1881 | foo 1882 | foo 1883 | foo 1884 | foo 1885 | foo 1886 | foo 1887 | foo 1888 | foo 1889 | foo 1890 | foo 1891 | foo 1892 | foo 1893 | foo 1894 | foo 1895 | foo 1896 | foo 1897 | foo 1898 | foo 1899 | foo 1900 | foo 1901 | foo 1902 | foo 1903 | foo 1904 | foo 1905 | foo 1906 | foo 1907 | foo 1908 | foo 1909 | foo 1910 | foo 1911 | foo 1912 | foo 1913 | foo 1914 | foo 1915 | foo 1916 | foo 1917 | foo 1918 | foo 1919 | foo 1920 | foo 1921 | foo 1922 | foo 1923 | foo 1924 | foo 1925 | foo 1926 | foo 1927 | foo 1928 | foo 1929 | foo 1930 | foo 1931 | foo 1932 | foo 1933 | foo 1934 | foo 1935 | foo 1936 | foo 1937 | foo 1938 | foo 1939 | foo 1940 | foo 1941 | foo 1942 | foo 1943 | foo 1944 | foo 1945 | foo 1946 | foo 1947 | foo 1948 | foo 1949 | foo 1950 | foo 1951 | foo 1952 | foo 1953 | foo 1954 | foo 1955 | foo 1956 | foo 1957 | foo 1958 | foo 1959 | foo 1960 | foo 1961 | foo 1962 | foo 1963 | foo 1964 | foo 1965 | foo 1966 | foo 1967 | foo 1968 | foo 1969 | foo 1970 | foo 1971 | foo 1972 | foo 1973 | foo 1974 | foo 1975 | foo 1976 | foo 1977 | foo 1978 | foo 1979 | foo 1980 | foo 1981 | foo 1982 | foo 1983 | foo 1984 | foo 1985 | foo 1986 | foo 1987 | foo 1988 | foo 1989 | foo 1990 | foo 1991 | foo 1992 | foo 1993 | foo 1994 | foo 1995 | foo 1996 | foo 1997 | foo 1998 | foo 1999 | foo 2000 | foo 2001 | foo 2002 | foo 2003 | foo 2004 | foo 2005 | foo 2006 | foo 2007 | foo 2008 | foo 2009 | foo 2010 | foo 2011 | foo 2012 | foo 2013 | foo 2014 | foo 2015 | foo 2016 | foo 2017 | foo 2018 | foo 2019 | foo 2020 | foo 2021 | foo 2022 | foo 2023 | foo 2024 | foo 2025 | foo 2026 | foo 2027 | foo 2028 | foo 2029 | foo 2030 | foo 2031 | foo 2032 | foo 2033 | foo 2034 | foo 2035 | foo 2036 | foo 2037 | foo 2038 | foo 2039 | foo 2040 | foo 2041 | foo 2042 | foo 2043 | foo 2044 | foo 2045 | foo 2046 | foo 2047 | foo 2048 | foo 2049 | foo 2050 | foo 2051 | foo 2052 | foo 2053 | foo 2054 | foo 2055 | foo 2056 | foo 2057 | foo 2058 | foo 2059 | foo 2060 | foo 2061 | foo 2062 | foo 2063 | foo 2064 | foo 2065 | foo 2066 | foo 2067 | foo 2068 | foo 2069 | foo 2070 | foo 2071 | foo 2072 | foo 2073 | foo 2074 | foo 2075 | foo 2076 | foo 2077 | foo 2078 | foo 2079 | foo 2080 | foo 2081 | foo 2082 | foo 2083 | foo 2084 | foo 2085 | foo 2086 | foo 2087 | foo 2088 | foo 2089 | foo 2090 | foo 2091 | foo 2092 | foo 2093 | foo 2094 | foo 2095 | foo 2096 | foo 2097 | foo 2098 | foo 2099 | foo 2100 | foo 2101 | foo 2102 | foo 2103 | foo 2104 | foo 2105 | foo 2106 | foo 2107 | foo 2108 | foo 2109 | foo 2110 | foo 2111 | foo 2112 | foo 2113 | foo 2114 | foo 2115 | foo 2116 | foo 2117 | foo 2118 | foo 2119 | foo 2120 | foo 2121 | foo 2122 | foo 2123 | foo 2124 | foo 2125 | foo 2126 | foo 2127 | foo 2128 | foo 2129 | foo 2130 | foo 2131 | foo 2132 | foo 2133 | foo 2134 | foo 2135 | foo 2136 | foo 2137 | foo 2138 | foo 2139 | foo 2140 | foo 2141 | foo 2142 | foo 2143 | foo 2144 | foo 2145 | foo 2146 | foo 2147 | foo 2148 | foo 2149 | foo 2150 | foo 2151 | foo 2152 | foo 2153 | foo 2154 | foo 2155 | foo 2156 | foo 2157 | foo 2158 | foo 2159 | foo 2160 | foo 2161 | foo 2162 | foo 2163 | foo 2164 | foo 2165 | foo 2166 | foo 2167 | foo 2168 | foo 2169 | foo 2170 | foo 2171 | foo 2172 | foo 2173 | foo 2174 | foo 2175 | foo 2176 | foo 2177 | foo 2178 | foo 2179 | foo 2180 | foo 2181 | foo 2182 | foo 2183 | foo 2184 | foo 2185 | foo 2186 | foo 2187 | foo 2188 | foo 2189 | foo 2190 | foo 2191 | foo 2192 | foo 2193 | foo 2194 | foo 2195 | foo 2196 | foo 2197 | foo 2198 | foo 2199 | foo 2200 | foo 2201 | foo 2202 | foo 2203 | foo 2204 | foo 2205 | foo 2206 | foo 2207 | foo 2208 | foo 2209 | foo 2210 | foo 2211 | foo 2212 | foo 2213 | foo 2214 | foo 2215 | foo 2216 | foo 2217 | foo 2218 | foo 2219 | foo 2220 | foo 2221 | foo 2222 | foo 2223 | foo 2224 | foo 2225 | foo 2226 | foo 2227 | foo 2228 | foo 2229 | foo 2230 | foo 2231 | foo 2232 | foo 2233 | foo 2234 | foo 2235 | foo 2236 | foo 2237 | foo 2238 | foo 2239 | foo 2240 | foo 2241 | foo 2242 | foo 2243 | foo 2244 | foo 2245 | foo 2246 | foo 2247 | foo 2248 | foo 2249 | foo 2250 | foo 2251 | foo 2252 | foo 2253 | foo 2254 | foo 2255 | foo 2256 | foo 2257 | foo 2258 | foo 2259 | foo 2260 | foo 2261 | foo 2262 | foo 2263 | foo 2264 | foo 2265 | foo 2266 | foo 2267 | foo 2268 | foo 2269 | foo 2270 | foo 2271 | foo 2272 | foo 2273 | foo 2274 | foo 2275 | foo 2276 | foo 2277 | foo 2278 | foo 2279 | foo 2280 | foo 2281 | foo 2282 | foo 2283 | foo 2284 | foo 2285 | foo 2286 | foo 2287 | foo 2288 | foo 2289 | foo 2290 | foo 2291 | foo 2292 | foo 2293 | foo 2294 | foo 2295 | foo 2296 | foo 2297 | foo 2298 | foo 2299 | foo 2300 | foo 2301 | foo 2302 | foo 2303 | foo 2304 | foo 2305 | foo 2306 | foo 2307 | foo 2308 | foo 2309 | foo 2310 | foo 2311 | foo 2312 | foo 2313 | foo 2314 | foo 2315 | foo 2316 | foo 2317 | foo 2318 | foo 2319 | foo 2320 | foo 2321 | foo 2322 | foo 2323 | foo 2324 | foo 2325 | foo 2326 | foo 2327 | foo 2328 | foo 2329 | foo 2330 | foo 2331 | foo 2332 | foo 2333 | foo 2334 | foo 2335 | foo 2336 | foo 2337 | foo 2338 | foo 2339 | foo 2340 | foo 2341 | foo 2342 | foo 2343 | foo 2344 | foo 2345 | foo 2346 | foo 2347 | foo 2348 | foo 2349 | foo 2350 | foo 2351 | foo 2352 | foo 2353 | foo 2354 | foo 2355 | foo 2356 | foo 2357 | foo 2358 | foo 2359 | foo 2360 | foo 2361 | foo 2362 | foo 2363 | foo 2364 | foo 2365 | foo 2366 | foo 2367 | foo 2368 | foo 2369 | foo 2370 | foo 2371 | foo 2372 | foo 2373 | foo 2374 | foo 2375 | foo 2376 | foo 2377 | foo 2378 | foo 2379 | foo 2380 | foo 2381 | foo 2382 | foo 2383 | foo 2384 | foo 2385 | foo 2386 | foo 2387 | foo 2388 | foo 2389 | foo 2390 | foo 2391 | foo 2392 | foo 2393 | foo 2394 | foo 2395 | foo 2396 | foo 2397 | foo 2398 | foo 2399 | foo 2400 | foo 2401 | foo 2402 | foo 2403 | foo 2404 | foo 2405 | foo 2406 | foo 2407 | foo 2408 | foo 2409 | foo 2410 | foo 2411 | foo 2412 | foo 2413 | foo 2414 | foo 2415 | foo 2416 | foo 2417 | foo 2418 | foo 2419 | foo 2420 | foo 2421 | foo 2422 | foo 2423 | foo 2424 | foo 2425 | foo 2426 | foo 2427 | foo 2428 | foo 2429 | foo 2430 | foo 2431 | foo 2432 | foo 2433 | foo 2434 | foo 2435 | foo 2436 | foo 2437 | foo 2438 | foo 2439 | foo 2440 | foo 2441 | foo 2442 | foo 2443 | foo 2444 | foo 2445 | foo 2446 | foo 2447 | foo 2448 | foo 2449 | foo 2450 | foo 2451 | foo 2452 | foo 2453 | foo 2454 | foo 2455 | foo 2456 | foo 2457 | foo 2458 | foo 2459 | foo 2460 | foo 2461 | foo 2462 | foo 2463 | foo 2464 | foo 2465 | foo 2466 | foo 2467 | foo 2468 | foo 2469 | foo 2470 | foo 2471 | foo 2472 | foo 2473 | foo 2474 | foo 2475 | foo 2476 | foo 2477 | foo 2478 | foo 2479 | foo 2480 | foo 2481 | foo 2482 | foo 2483 | foo 2484 | foo 2485 | foo 2486 | foo 2487 | foo 2488 | foo 2489 | foo 2490 | foo 2491 | foo 2492 | foo 2493 | foo 2494 | foo 2495 | foo 2496 | foo 2497 | foo 2498 | foo 2499 | foo 2500 | foo 2501 | foo 2502 | foo 2503 | foo 2504 | foo 2505 | foo 2506 | foo 2507 | foo 2508 | foo 2509 | foo 2510 | foo 2511 | foo 2512 | foo 2513 | foo 2514 | foo 2515 | foo 2516 | foo 2517 | foo 2518 | foo 2519 | foo 2520 | foo 2521 | foo 2522 | foo 2523 | foo 2524 | foo 2525 | foo 2526 | foo 2527 | foo 2528 | foo 2529 | foo 2530 | foo 2531 | foo 2532 | foo 2533 | foo 2534 | foo 2535 | foo 2536 | foo 2537 | foo 2538 | foo 2539 | foo 2540 | foo 2541 | foo 2542 | foo 2543 | foo 2544 | foo 2545 | foo 2546 | foo 2547 | foo 2548 | foo 2549 | foo 2550 | foo 2551 | foo 2552 | foo 2553 | foo 2554 | foo 2555 | foo 2556 | foo 2557 | foo 2558 | foo 2559 | foo 2560 | foo 2561 | foo 2562 | foo 2563 | foo 2564 | foo 2565 | foo 2566 | foo 2567 | foo 2568 | foo 2569 | foo 2570 | foo 2571 | foo 2572 | foo 2573 | foo 2574 | foo 2575 | foo 2576 | foo 2577 | foo 2578 | foo 2579 | foo 2580 | foo 2581 | foo 2582 | foo 2583 | foo 2584 | foo 2585 | foo 2586 | foo 2587 | foo 2588 | foo 2589 | foo 2590 | foo 2591 | foo 2592 | foo 2593 | foo 2594 | foo 2595 | foo 2596 | foo 2597 | foo 2598 | foo 2599 | foo 2600 | foo 2601 | foo 2602 | foo 2603 | foo 2604 | foo 2605 | foo 2606 | foo 2607 | foo 2608 | foo 2609 | foo 2610 | foo 2611 | foo 2612 | foo 2613 | foo 2614 | foo 2615 | foo 2616 | foo 2617 | foo 2618 | foo 2619 | foo 2620 | foo 2621 | foo 2622 | foo 2623 | foo 2624 | foo 2625 | foo 2626 | foo 2627 | foo 2628 | foo 2629 | foo 2630 | foo 2631 | foo 2632 | foo 2633 | foo 2634 | foo 2635 | foo 2636 | foo 2637 | foo 2638 | foo 2639 | foo 2640 | foo 2641 | foo 2642 | foo 2643 | foo 2644 | foo 2645 | foo 2646 | foo 2647 | foo 2648 | foo 2649 | foo 2650 | foo 2651 | foo 2652 | foo 2653 | foo 2654 | foo 2655 | foo 2656 | foo 2657 | foo 2658 | foo 2659 | foo 2660 | foo 2661 | foo 2662 | foo 2663 | foo 2664 | foo 2665 | foo 2666 | foo 2667 | foo 2668 | foo 2669 | foo 2670 | foo 2671 | foo 2672 | foo 2673 | foo 2674 | foo 2675 | foo 2676 | foo 2677 | foo 2678 | foo 2679 | foo 2680 | foo 2681 | foo 2682 | foo 2683 | foo 2684 | foo 2685 | foo 2686 | foo 2687 | foo 2688 | foo 2689 | foo 2690 | foo 2691 | foo 2692 | foo 2693 | foo 2694 | foo 2695 | foo 2696 | foo 2697 | foo 2698 | foo 2699 | foo 2700 | foo 2701 | foo 2702 | foo 2703 | foo 2704 | foo 2705 | foo 2706 | foo 2707 | foo 2708 | foo 2709 | foo 2710 | foo 2711 | foo 2712 | foo 2713 | foo 2714 | foo 2715 | foo 2716 | foo 2717 | foo 2718 | foo 2719 | foo 2720 | foo 2721 | foo 2722 | foo 2723 | foo 2724 | foo 2725 | foo 2726 | foo 2727 | foo 2728 | foo 2729 | foo 2730 | foo 2731 | foo 2732 | foo 2733 | foo 2734 | foo 2735 | foo 2736 | foo 2737 | foo 2738 | foo 2739 | foo 2740 | foo 2741 | foo 2742 | foo 2743 | foo 2744 | foo 2745 | foo 2746 | foo 2747 | foo 2748 | foo 2749 | foo 2750 | foo 2751 | foo 2752 | foo 2753 | foo 2754 | foo 2755 | foo 2756 | foo 2757 | foo 2758 | foo 2759 | foo 2760 | foo 2761 | foo 2762 | foo 2763 | foo 2764 | foo 2765 | foo 2766 | foo 2767 | foo 2768 | foo 2769 | foo 2770 | foo 2771 | foo 2772 | foo 2773 | foo 2774 | foo 2775 | foo 2776 | foo 2777 | foo 2778 | foo 2779 | foo 2780 | foo 2781 | foo 2782 | foo 2783 | foo 2784 | foo 2785 | foo 2786 | foo 2787 | foo 2788 | foo 2789 | foo 2790 | foo 2791 | foo 2792 | foo 2793 | foo 2794 | foo 2795 | foo 2796 | foo 2797 | foo 2798 | foo 2799 | foo 2800 | foo 2801 | foo 2802 | foo 2803 | foo 2804 | foo 2805 | foo 2806 | foo 2807 | foo 2808 | foo 2809 | foo 2810 | foo 2811 | foo 2812 | foo 2813 | foo 2814 | foo 2815 | foo 2816 | foo 2817 | foo 2818 | foo 2819 | foo 2820 | foo 2821 | foo 2822 | foo 2823 | foo 2824 | foo 2825 | foo 2826 | foo 2827 | foo 2828 | foo 2829 | foo 2830 | foo 2831 | foo 2832 | foo 2833 | foo 2834 | foo 2835 | foo 2836 | foo 2837 | foo 2838 | foo 2839 | foo 2840 | foo 2841 | foo 2842 | foo 2843 | foo 2844 | foo 2845 | foo 2846 | foo 2847 | foo 2848 | foo 2849 | foo 2850 | foo 2851 | foo 2852 | foo 2853 | foo 2854 | foo 2855 | foo 2856 | foo 2857 | foo 2858 | foo 2859 | foo 2860 | foo 2861 | foo 2862 | foo 2863 | foo 2864 | foo 2865 | foo 2866 | foo 2867 | foo 2868 | foo 2869 | foo 2870 | foo 2871 | foo 2872 | foo 2873 | foo 2874 | foo 2875 | foo 2876 | foo 2877 | foo 2878 | foo 2879 | foo 2880 | foo 2881 | foo 2882 | foo 2883 | foo 2884 | foo 2885 | foo 2886 | foo 2887 | foo 2888 | foo 2889 | foo 2890 | foo 2891 | foo 2892 | foo 2893 | foo 2894 | foo 2895 | foo 2896 | foo 2897 | foo 2898 | foo 2899 | foo 2900 | foo 2901 | foo 2902 | foo 2903 | foo 2904 | foo 2905 | foo 2906 | foo 2907 | foo 2908 | foo 2909 | foo 2910 | foo 2911 | foo 2912 | foo 2913 | foo 2914 | foo 2915 | foo 2916 | foo 2917 | foo 2918 | foo 2919 | foo 2920 | foo 2921 | foo 2922 | foo 2923 | foo 2924 | foo 2925 | foo 2926 | foo 2927 | foo 2928 | foo 2929 | foo 2930 | foo 2931 | foo 2932 | foo 2933 | foo 2934 | foo 2935 | foo 2936 | foo 2937 | foo 2938 | foo 2939 | foo 2940 | foo 2941 | foo 2942 | foo 2943 | foo 2944 | foo 2945 | foo 2946 | foo 2947 | foo 2948 | foo 2949 | foo 2950 | foo 2951 | foo 2952 | foo 2953 | foo 2954 | foo 2955 | foo 2956 | foo 2957 | foo 2958 | foo 2959 | foo 2960 | foo 2961 | foo 2962 | foo 2963 | foo 2964 | foo 2965 | foo 2966 | foo 2967 | foo 2968 | foo 2969 | foo 2970 | foo 2971 | foo 2972 | foo 2973 | foo 2974 | foo 2975 | foo 2976 | foo 2977 | foo 2978 | foo 2979 | foo 2980 | foo 2981 | foo 2982 | foo 2983 | foo 2984 | foo 2985 | foo 2986 | foo 2987 | foo 2988 | foo 2989 | foo 2990 | foo 2991 | foo 2992 | foo 2993 | foo 2994 | foo 2995 | foo 2996 | foo 2997 | foo 2998 | foo 2999 | foo 3000 | foo 3001 | foo 3002 | foo 3003 | foo 3004 | foo 3005 | foo 3006 | foo 3007 | foo 3008 | foo 3009 | foo 3010 | foo 3011 | foo 3012 | foo 3013 | foo 3014 | foo 3015 | foo 3016 | foo 3017 | foo 3018 | foo 3019 | foo 3020 | foo 3021 | foo 3022 | foo 3023 | foo 3024 | foo 3025 | foo 3026 | foo 3027 | foo 3028 | foo 3029 | foo 3030 | foo 3031 | foo 3032 | foo 3033 | foo 3034 | foo 3035 | foo 3036 | foo 3037 | foo 3038 | foo 3039 | foo 3040 | foo 3041 | foo 3042 | foo 3043 | foo 3044 | foo 3045 | foo 3046 | foo 3047 | foo 3048 | foo 3049 | foo 3050 | foo 3051 | foo 3052 | foo 3053 | foo 3054 | foo 3055 | foo 3056 | foo 3057 | foo 3058 | foo 3059 | foo 3060 | foo 3061 | foo 3062 | foo 3063 | foo 3064 | foo 3065 | foo 3066 | foo 3067 | foo 3068 | foo 3069 | foo 3070 | foo 3071 | foo 3072 | foo 3073 | foo 3074 | foo 3075 | foo 3076 | foo 3077 | foo 3078 | foo 3079 | foo 3080 | foo 3081 | foo 3082 | foo 3083 | foo 3084 | foo 3085 | foo 3086 | foo 3087 | foo 3088 | foo 3089 | foo 3090 | foo 3091 | foo 3092 | foo 3093 | foo 3094 | foo 3095 | foo 3096 | foo 3097 | foo 3098 | foo 3099 | foo 3100 | foo 3101 | foo 3102 | foo 3103 | foo 3104 | foo 3105 | foo 3106 | foo 3107 | foo 3108 | foo 3109 | foo 3110 | foo 3111 | foo 3112 | foo 3113 | foo 3114 | foo 3115 | foo 3116 | foo 3117 | foo 3118 | foo 3119 | foo 3120 | foo 3121 | foo 3122 | foo 3123 | foo 3124 | foo 3125 | foo 3126 | foo 3127 | foo 3128 | foo 3129 | foo 3130 | foo 3131 | foo 3132 | foo 3133 | foo 3134 | foo 3135 | foo 3136 | foo 3137 | foo 3138 | foo 3139 | foo 3140 | foo 3141 | foo 3142 | foo 3143 | foo 3144 | foo 3145 | foo 3146 | foo 3147 | foo 3148 | foo 3149 | foo 3150 | foo 3151 | foo 3152 | foo 3153 | foo 3154 | foo 3155 | foo 3156 | foo 3157 | foo 3158 | foo 3159 | foo 3160 | foo 3161 | foo 3162 | foo 3163 | foo 3164 | foo 3165 | foo 3166 | foo 3167 | foo 3168 | foo 3169 | foo 3170 | foo 3171 | foo 3172 | foo 3173 | foo 3174 | foo 3175 | foo 3176 | foo 3177 | foo 3178 | foo 3179 | foo 3180 | foo 3181 | foo 3182 | foo 3183 | foo 3184 | foo 3185 | foo 3186 | foo 3187 | foo 3188 | foo 3189 | foo 3190 | foo 3191 | foo 3192 | foo 3193 | foo 3194 | foo 3195 | foo 3196 | foo 3197 | foo 3198 | foo 3199 | foo 3200 | foo 3201 | foo 3202 | foo 3203 | foo 3204 | foo 3205 | foo 3206 | foo 3207 | foo 3208 | foo 3209 | foo 3210 | foo 3211 | foo 3212 | foo 3213 | foo 3214 | foo 3215 | foo 3216 | foo 3217 | foo 3218 | foo 3219 | foo 3220 | foo 3221 | foo 3222 | foo 3223 | foo 3224 | foo 3225 | foo 3226 | foo 3227 | foo 3228 | foo 3229 | foo 3230 | foo 3231 | foo 3232 | foo 3233 | foo 3234 | foo 3235 | foo 3236 | foo 3237 | foo 3238 | foo 3239 | foo 3240 | foo 3241 | foo 3242 | foo 3243 | foo 3244 | foo 3245 | foo 3246 | foo 3247 | foo 3248 | foo 3249 | foo 3250 | foo 3251 | foo 3252 | foo 3253 | foo 3254 | foo 3255 | foo 3256 | foo 3257 | foo 3258 | foo 3259 | foo 3260 | foo 3261 | foo 3262 | foo 3263 | foo 3264 | foo 3265 | foo 3266 | foo 3267 | foo 3268 | foo 3269 | foo 3270 | foo 3271 | foo 3272 | foo 3273 | foo 3274 | foo 3275 | foo 3276 | foo 3277 | foo 3278 | foo 3279 | foo 3280 | foo 3281 | foo 3282 | foo 3283 | foo 3284 | foo 3285 | foo 3286 | foo 3287 | foo 3288 | foo 3289 | foo 3290 | foo 3291 | foo 3292 | foo 3293 | foo 3294 | foo 3295 | foo 3296 | foo 3297 | foo 3298 | foo 3299 | foo 3300 | foo 3301 | foo 3302 | foo 3303 | foo 3304 | foo 3305 | foo 3306 | foo 3307 | foo 3308 | foo 3309 | foo 3310 | foo 3311 | foo 3312 | foo 3313 | foo 3314 | foo 3315 | foo 3316 | foo 3317 | foo 3318 | foo 3319 | foo 3320 | foo 3321 | foo 3322 | foo 3323 | foo 3324 | foo 3325 | foo 3326 | foo 3327 | foo 3328 | foo 3329 | foo 3330 | foo 3331 | foo 3332 | foo 3333 | foo 3334 | foo 3335 | foo 3336 | foo 3337 | foo 3338 | foo 3339 | foo 3340 | foo 3341 | foo 3342 | foo 3343 | foo 3344 | foo 3345 | foo 3346 | foo 3347 | foo 3348 | foo 3349 | foo 3350 | foo 3351 | foo 3352 | foo 3353 | foo 3354 | foo 3355 | foo 3356 | foo 3357 | foo 3358 | foo 3359 | foo 3360 | foo 3361 | foo 3362 | foo 3363 | foo 3364 | foo 3365 | foo 3366 | foo 3367 | foo 3368 | foo 3369 | foo 3370 | foo 3371 | foo 3372 | foo 3373 | foo 3374 | foo 3375 | foo 3376 | foo 3377 | foo 3378 | foo 3379 | foo 3380 | foo 3381 | foo 3382 | foo 3383 | foo 3384 | foo 3385 | foo 3386 | foo 3387 | foo 3388 | foo 3389 | foo 3390 | foo 3391 | foo 3392 | foo 3393 | foo 3394 | foo 3395 | foo 3396 | foo 3397 | foo 3398 | foo 3399 | foo 3400 | foo 3401 | foo 3402 | foo 3403 | foo 3404 | foo 3405 | foo 3406 | foo 3407 | foo 3408 | foo 3409 | foo 3410 | foo 3411 | foo 3412 | foo 3413 | foo 3414 | foo 3415 | foo 3416 | foo 3417 | foo 3418 | foo 3419 | foo 3420 | foo 3421 | foo 3422 | foo 3423 | foo 3424 | foo 3425 | foo 3426 | foo 3427 | foo 3428 | foo 3429 | foo 3430 | foo 3431 | foo 3432 | foo 3433 | foo 3434 | foo 3435 | foo 3436 | foo 3437 | foo 3438 | foo 3439 | foo 3440 | foo 3441 | foo 3442 | foo 3443 | foo 3444 | foo 3445 | foo 3446 | foo 3447 | foo 3448 | foo 3449 | foo 3450 | foo 3451 | foo 3452 | foo 3453 | foo 3454 | foo 3455 | foo 3456 | foo 3457 | foo 3458 | foo 3459 | foo 3460 | foo 3461 | foo 3462 | foo 3463 | foo 3464 | foo 3465 | foo 3466 | foo 3467 | foo 3468 | foo 3469 | foo 3470 | foo 3471 | foo 3472 | foo 3473 | foo 3474 | foo 3475 | foo 3476 | foo 3477 | foo 3478 | foo 3479 | foo 3480 | foo 3481 | foo 3482 | foo 3483 | foo 3484 | foo 3485 | foo 3486 | foo 3487 | foo 3488 | foo 3489 | foo 3490 | foo 3491 | foo 3492 | foo 3493 | foo 3494 | foo 3495 | foo 3496 | foo 3497 | foo 3498 | foo 3499 | foo 3500 | foo 3501 | foo 3502 | foo 3503 | foo 3504 | foo 3505 | foo 3506 | foo 3507 | foo 3508 | foo 3509 | foo 3510 | foo 3511 | foo 3512 | foo 3513 | foo 3514 | foo 3515 | foo 3516 | foo 3517 | foo 3518 | foo 3519 | foo 3520 | foo 3521 | foo 3522 | foo 3523 | foo 3524 | foo 3525 | foo 3526 | foo 3527 | foo 3528 | foo 3529 | foo 3530 | foo 3531 | foo 3532 | foo 3533 | foo 3534 | foo 3535 | foo 3536 | foo 3537 | foo 3538 | foo 3539 | foo 3540 | foo 3541 | foo 3542 | foo 3543 | foo 3544 | foo 3545 | foo 3546 | foo 3547 | foo 3548 | foo 3549 | foo 3550 | foo 3551 | foo 3552 | foo 3553 | foo 3554 | foo 3555 | foo 3556 | foo 3557 | foo 3558 | foo 3559 | foo 3560 | foo 3561 | foo 3562 | foo 3563 | foo 3564 | foo 3565 | foo 3566 | foo 3567 | foo 3568 | foo 3569 | foo 3570 | foo 3571 | foo 3572 | foo 3573 | foo 3574 | foo 3575 | foo 3576 | foo 3577 | foo 3578 | foo 3579 | foo 3580 | foo 3581 | foo 3582 | foo 3583 | foo 3584 | foo 3585 | foo 3586 | foo 3587 | foo 3588 | foo 3589 | foo 3590 | foo 3591 | foo 3592 | foo 3593 | foo 3594 | foo 3595 | foo 3596 | foo 3597 | foo 3598 | foo 3599 | foo 3600 | foo 3601 | foo 3602 | foo 3603 | foo 3604 | foo 3605 | foo 3606 | foo 3607 | foo 3608 | foo 3609 | foo 3610 | foo 3611 | foo 3612 | foo 3613 | foo 3614 | foo 3615 | foo 3616 | foo 3617 | foo 3618 | foo 3619 | foo 3620 | foo 3621 | foo 3622 | foo 3623 | foo 3624 | foo 3625 | foo 3626 | foo 3627 | foo 3628 | foo 3629 | foo 3630 | foo 3631 | foo 3632 | foo 3633 | foo 3634 | foo 3635 | foo 3636 | foo 3637 | foo 3638 | foo 3639 | foo 3640 | foo 3641 | foo 3642 | foo 3643 | foo 3644 | foo 3645 | foo 3646 | foo 3647 | foo 3648 | foo 3649 | foo 3650 | foo 3651 | foo 3652 | foo 3653 | foo 3654 | foo 3655 | foo 3656 | foo 3657 | foo 3658 | foo 3659 | foo 3660 | foo 3661 | foo 3662 | foo 3663 | foo 3664 | foo 3665 | foo 3666 | foo 3667 | foo 3668 | foo 3669 | foo 3670 | foo 3671 | foo 3672 | foo 3673 | foo 3674 | foo 3675 | foo 3676 | foo 3677 | foo 3678 | foo 3679 | foo 3680 | foo 3681 | foo 3682 | foo 3683 | foo 3684 | foo 3685 | foo 3686 | foo 3687 | foo 3688 | foo 3689 | foo 3690 | foo 3691 | foo 3692 | foo 3693 | foo 3694 | foo 3695 | foo 3696 | foo 3697 | foo 3698 | foo 3699 | foo 3700 | foo 3701 | foo 3702 | foo 3703 | foo 3704 | foo 3705 | foo 3706 | foo 3707 | foo 3708 | foo 3709 | foo 3710 | foo 3711 | foo 3712 | foo 3713 | foo 3714 | foo 3715 | foo 3716 | foo 3717 | foo 3718 | foo 3719 | foo 3720 | foo 3721 | foo 3722 | foo 3723 | foo 3724 | foo 3725 | foo 3726 | foo 3727 | foo 3728 | foo 3729 | foo 3730 | foo 3731 | foo 3732 | foo 3733 | foo 3734 | foo 3735 | foo 3736 | foo 3737 | foo 3738 | foo 3739 | foo 3740 | foo 3741 | foo 3742 | foo 3743 | foo 3744 | foo 3745 | foo 3746 | foo 3747 | foo 3748 | foo 3749 | foo 3750 | foo 3751 | foo 3752 | foo 3753 | foo 3754 | foo 3755 | foo 3756 | foo 3757 | foo 3758 | foo 3759 | foo 3760 | foo 3761 | foo 3762 | foo 3763 | foo 3764 | foo 3765 | foo 3766 | foo 3767 | foo 3768 | foo 3769 | foo 3770 | foo 3771 | foo 3772 | foo 3773 | foo 3774 | foo 3775 | foo 3776 | foo 3777 | foo 3778 | foo 3779 | foo 3780 | foo 3781 | foo 3782 | foo 3783 | foo 3784 | foo 3785 | foo 3786 | foo 3787 | foo 3788 | foo 3789 | foo 3790 | foo 3791 | foo 3792 | foo 3793 | foo 3794 | foo 3795 | foo 3796 | foo 3797 | foo 3798 | foo 3799 | foo 3800 | foo 3801 | foo 3802 | foo 3803 | foo 3804 | foo 3805 | foo 3806 | foo 3807 | foo 3808 | foo 3809 | foo 3810 | foo 3811 | foo 3812 | foo 3813 | foo 3814 | foo 3815 | foo 3816 | foo 3817 | foo 3818 | foo 3819 | foo 3820 | foo 3821 | foo 3822 | foo 3823 | foo 3824 | foo 3825 | foo 3826 | foo 3827 | foo 3828 | foo 3829 | foo 3830 | foo 3831 | foo 3832 | foo 3833 | foo 3834 | foo 3835 | foo 3836 | foo 3837 | foo 3838 | foo 3839 | foo 3840 | foo 3841 | foo 3842 | foo 3843 | foo 3844 | foo 3845 | foo 3846 | foo 3847 | foo 3848 | foo 3849 | foo 3850 | foo 3851 | foo 3852 | foo 3853 | foo 3854 | foo 3855 | foo 3856 | foo 3857 | foo 3858 | foo 3859 | foo 3860 | foo 3861 | foo 3862 | foo 3863 | foo 3864 | foo 3865 | foo 3866 | foo 3867 | foo 3868 | foo 3869 | foo 3870 | foo 3871 | foo 3872 | foo 3873 | foo 3874 | foo 3875 | foo 3876 | foo 3877 | foo 3878 | foo 3879 | foo 3880 | foo 3881 | foo 3882 | foo 3883 | foo 3884 | foo 3885 | foo 3886 | foo 3887 | foo 3888 | foo 3889 | foo 3890 | foo 3891 | foo 3892 | foo 3893 | foo 3894 | foo 3895 | foo 3896 | foo 3897 | foo 3898 | foo 3899 | foo 3900 | foo 3901 | foo 3902 | foo 3903 | foo 3904 | foo 3905 | foo 3906 | foo 3907 | foo 3908 | foo 3909 | foo 3910 | foo 3911 | foo 3912 | foo 3913 | foo 3914 | foo 3915 | foo 3916 | foo 3917 | foo 3918 | foo 3919 | foo 3920 | foo 3921 | foo 3922 | foo 3923 | foo 3924 | foo 3925 | foo 3926 | foo 3927 | foo 3928 | foo 3929 | foo 3930 | foo 3931 | foo 3932 | foo 3933 | foo 3934 | foo 3935 | foo 3936 | foo 3937 | foo 3938 | foo 3939 | foo 3940 | foo 3941 | foo 3942 | foo 3943 | foo 3944 | foo 3945 | foo 3946 | foo 3947 | foo 3948 | foo 3949 | foo 3950 | foo 3951 | foo 3952 | foo 3953 | foo 3954 | foo 3955 | foo 3956 | foo 3957 | foo 3958 | foo 3959 | foo 3960 | foo 3961 | foo 3962 | foo 3963 | foo 3964 | foo 3965 | foo 3966 | foo 3967 | foo 3968 | foo 3969 | foo 3970 | foo 3971 | foo 3972 | foo 3973 | foo 3974 | foo 3975 | foo 3976 | foo 3977 | foo 3978 | foo 3979 | foo 3980 | foo 3981 | foo 3982 | foo 3983 | foo 3984 | foo 3985 | foo 3986 | foo 3987 | foo 3988 | foo 3989 | foo 3990 | foo 3991 | foo 3992 | foo 3993 | foo 3994 | foo 3995 | foo 3996 | foo 3997 | foo 3998 | foo 3999 | foo 4000 | foo 4001 | foo -------------------------------------------------------------------------------- /testdata/csv/october_2011.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuspollock-okfn/dataconverters/58091c75c4a37e3d8d133795f0c776a5aef1aa1f/testdata/csv/october_2011.csv -------------------------------------------------------------------------------- /testdata/csv/readme.txt: -------------------------------------------------------------------------------- 1 | october_2011.csv 2 | ================ 3 | 4 | From: http://thedatahub.org/dataset/newcastle-city-council-payments-over-500/resource/1d1c9089-7037-48a3-a70d-fbecf146238f 5 | 6 | bus-stops.csv 7 | ============= 8 | 9 | From: http://data.gov.uk/dataset/sunderland-bus-stops 10 | License: OGL (https://www.nationalarchives.gov.uk/doc/open-government-licence/) 11 | 12 | 13 | spendings.csv 14 | ======================================== 15 | 16 | From http://datahub.io/dataset/795fb6c6-fedc-4450-bc7b-662fa346625f/resource/281dffa6-ea9b-4446-be41-05dced06591f 17 | -------------------------------------------------------------------------------- /testdata/csv/simple.csv: -------------------------------------------------------------------------------- 1 | date,temperature,place 2 | 2011-01-01,1,Galway 3 | 2011-01-02,-1,Galway 4 | 2011-01-03,0,Galway 5 | 2011-01-01,6,Berkeley 6 | 2011-01-02,8,Berkeley 7 | 2011-01-03,5,Berkeley 8 | -------------------------------------------------------------------------------- /testdata/csv/simple_dup_title.csv: -------------------------------------------------------------------------------- 1 | date,date,place 2 | 2011-01-01,1,Galway 3 | 2011-01-02,-1,Galway 4 | 2011-01-03,0,Galway 5 | 2011-01-01,6,Berkeley 6 | 2011-01-02,8,Berkeley 7 | 2011-01-03,5,Berkeley 8 | -------------------------------------------------------------------------------- /testdata/csv/simple_empty_title.csv: -------------------------------------------------------------------------------- 1 | date,,temperature,place 2 | 2011-01-01,,1,Galway 3 | 2011-01-02,,-1,Galway 4 | 2011-01-03,,0,Galway 5 | 2011-01-01,,6,Berkeley 6 | 2011-01-02,,8,Berkeley 7 | 2011-01-03,,5,Berkeley 8 | -------------------------------------------------------------------------------- /testdata/csv/spanish_chars.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuspollock-okfn/dataconverters/58091c75c4a37e3d8d133795f0c776a5aef1aa1f/testdata/csv/spanish_chars.csv -------------------------------------------------------------------------------- /testdata/csv/spendings.csv: -------------------------------------------------------------------------------- 1 | Body Name,Date,Transaction Number,Amount,Supplier,Expense Area 2 | Adur District Council,01/04/2009,136980,2840.5000,B H HAYES + SONS,HOUSIđßæđæßđæđđNG HEALTH + COMMUNITY SAFETY 3 | Adur District Council,01/04/2009,139471,997.8100,BADENOCH + CLARK,"STRATEGIC PERFORMANCE,HR&TRANSFORMATION" 4 | Adur District Council,01/04/2009,,356.4000,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 5 | Adur District Council,01/04/2009,139723,238.9500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 6 | Adur District Council,01/04/2009,139723,60.7500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 7 | Adur District Council,,139723,60.7500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 8 | Adur District Council,01/04/2009,139723,117.4500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 9 | Adur District Council,01/04/2009,139723,299.7000, 10 | Adur District Council,01/04/2009,139723,0.0000,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 11 | Adur District Council,01/04/2009,139723,218.7000,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 12 | Adur District Council,01/04/2009,139723,299.7000,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 13 | Adur District Council,01/04/2009,139723,117.4500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 14 | Adur District Council,01/04/2009,136979,1477.9800,BRAMBER CONSTRUCTION CO LTD,HOUSING HEALTH + COMMUNITY SAFETY 15 | Adur District Council,01/04/2009,137938,7250.0000,COMPANY PARADISO,PLANNING REGENERATION & WELLBEING 16 | Adur District Council,01/04/2009,,18.0000,DEIBEL + ALLEN,LEGAL & DEMOCRATIC DIVISION 17 | ,01/04/2009,,715.0000,DEIBEL + ALLEN,LEGAL & DEMOCRATIC DIVISION 18 | Adur District Council,01/04/2009,136981,3134.4000,DOMESTIC HEATING + ELECTRICAL SERVICES LTD,HOUSING HEALTH + COMMUNITY SAFETY 19 | Adur District Council,01/04/2009,138457,262.2800,EDF ENERGY,ADUR HOMES DIVISION 20 | Adur District Council,01/04/2009,138457,308.3300,EDF ENERGY,ADUR HOMES DIVISION 21 | Adur District Council,01/04/2009,140612,790.2100,GEMINI CONSULTANTS LTD, 22 | Adur District Council,01/04/2009,140955,7000.0000,OFFICE-SHADOW LTD,TECHNICAL SERVICES 23 | Adur District Council,01/04/2009,145273,0.0000,OTIS LIMITED,FINANCIAL SERVICES 24 | Adur District Council,01/04/2009,145273,2697.3100,OTIS LIMITED,FINANCIAL SERVICES 25 | Adur District Council,01/04/2009,137945,5800.0000,Redacted Personal Data,PLANNING REGENERATION & WELLBEING 26 | Adur District Council,01/04/2009,137939,3000.0000,SOUTHLANDERS,PLANNING REGENERATION & WELLBEING 27 | Adur District Council,01/04/2009,138403,592.3300,STANNAH LIFT SERVICES LTD,ADUR HOMES DIVISION 28 | Adur District Council,01/04/2009,137103,1000.0000,VOSA,RECYCLING & WASTE DIVISION 29 | Adur District Council,02/04/2009,138398,500.0000,CHANCTONBURY MEDIA LTD,PLANNING REGENERATION & WELLBEING 30 | Adur District Council,02/04/2009,138398,0.0000,CHANCTONBURY MEDIA LTD,PLANNING REGENERATION & WELLBEING 31 | Adur District Council,02/04/2009,137903,548.1200,KILLGERM CHEMICALS LTD,HOUSING HEALTH + COMMUNITY SAFETY 32 | Adur District Council,02/04/2009,139023,585.0000,NATIONAL DOOR AND DOMELIGHT COMPANY,ADUR HOMES DIVISION 33 | Adur District Council,02/04/2009,137299,1021.3100,Redacted Personal Data,ADUR HOMES DIVISION 34 | Adur District Council,03/04/2009,138343,1420.0000,1ST CLEAR FLOW LTD,ADUR HOMES DIVISION 35 | Adur District Council,03/04/2009,139742,7008.0000,COMPUTER COMPUTER LTD,TECHNICAL SERVICES 36 | Adur District Council,03/04/2009,137971,630.0000,MARIE PICKERING (Sports Trainer),PLANNING REGENERATION & WELLBEING 37 | Adur District Council,03/04/2009,137823,2223.0000,MAXSI SOLUTIONS ENGINEERING,TECHNICAL SERVICES 38 | Adur District Council,03/04/2009,137979,1501.5300,ROYAL MAIL,TECHNICAL SERVICES 39 | Adur District Council,03/04/2009,138341,299.7000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 40 | Adur District Council,03/04/2009,138341,60.7500,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 41 | Adur District Council,03/04/2009,138341,299.7000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 42 | Adur District Council,03/04/2009,138341,328.5600,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 43 | Adur District Council,03/04/2009,138341,299.7000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 44 | Adur District Council,03/04/2009,138341,299.7000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 45 | Adur District Council,04/04/2009,143723,48.7000,QC SUPPLIES LTD,TECHNICAL SERVICES 46 | Adur District Council,04/04/2009,143723,48.0800,QC SUPPLIES LTD,TECHNICAL SERVICES 47 | Adur District Council,04/04/2009,143723,287.4200,QC SUPPLIES LTD,TECHNICAL SERVICES 48 | Adur District Council,04/04/2009,143723,143.7200,QC SUPPLIES LTD,TECHNICAL SERVICES 49 | Adur District Council,04/04/2009,143723,59.9600,QC SUPPLIES LTD,TECHNICAL SERVICES 50 | Adur District Council,04/04/2009,143723,69.3000,QC SUPPLIES LTD,TECHNICAL SERVICES 51 | Adur District Council,04/04/2009,143723,99.9300,QC SUPPLIES LTD,TECHNICAL SERVICES 52 | Adur District Council,04/04/2009,143723,143.7100,QC SUPPLIES LTD,TECHNICAL SERVICES 53 | Adur District Council,04/04/2009,142305,865.8300,ROSSENDALES LTD,CENSUS 54 | Adur District Council,04/04/2009,142305,60.8000,ROSSENDALES LTD,CENSUS 55 | Adur District Council,04/04/2009,142305,805.0300,ROSSENDALES LTD,CENSUS 56 | Adur District Council,06/04/2009,138996,199.9800,ASPLI SAFETY LTD,RECYCLING & WASTE DIVISION 57 | Adur District Council,06/04/2009,138996,109.7600,ASPLI SAFETY LTD,RECYCLING & WASTE DIVISION 58 | Adur District Council,06/04/2009,138996,670.7700,ASPLI SAFETY LTD,RECYCLING & WASTE DIVISION 59 | Adur District Council,06/04/2009,139725,297.5000,LANDSCAPE SUPPLY COMPANY,RECYCLING & WASTE DIVISION 60 | Adur District Council,06/04/2009,139725,0.0000,LANDSCAPE SUPPLY COMPANY,RECYCLING & WASTE DIVISION 61 | Adur District Council,06/04/2009,139725,892.5000,LANDSCAPE SUPPLY COMPANY,RECYCLING & WASTE DIVISION 62 | Adur District Council,06/04/2009,153652,2448.7300,LOCATA (HOUSING SERVICES) LTD,ADUR HOMES DIVISION 63 | Adur District Council,06/04/2009,137856,3842.0500,NVIRO,ADUR HOMES DIVISION 64 | Adur District Council,06/04/2009,137855,770.0000,PENNINGTON CHOICES LTD,ADUR HOMES DIVISION 65 | Adur District Council,06/04/2009,137973,7000.0000,POSTAGE BY PHONE/PITNEY BOWES,TECHNICAL SERVICES 66 | Adur District Council,07/04/2009,139470,959.1900,BADENOCH + CLARK,"STRATEGIC PERFORMANCE,HR&TRANSFORMATION" 67 | Adur District Council,07/04/2009,138505,1260.0000,BERNICE GANDOLFI,HOUSING HEALTH + COMMUNITY SAFETY 68 | Adur District Council,07/04/2009,138505,5380.0000,BERNICE GANDOLFI,HOUSING HEALTH + COMMUNITY SAFETY 69 | Adur District Council,07/04/2009,138505,2020.0000,BERNICE GANDOLFI,HOUSING HEALTH + COMMUNITY SAFETY 70 | Adur District Council,07/04/2009,138980,243.0000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 71 | Adur District Council,07/04/2009,138980,299.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 72 | Adur District Council,07/04/2009,138980,56.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 73 | Adur District Council,07/04/2009,138980,299.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 74 | Adur District Council,07/04/2009,138980,243.0000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 75 | Adur District Council,07/04/2009,138980,299.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 76 | Adur District Council,07/04/2009,138980,299.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 77 | Adur District Council,07/04/2009,138980,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 78 | Adur District Council,07/04/2009,138980,182.2500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 79 | Adur District Council,07/04/2009,138980,299.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 80 | Adur District Council,07/04/2009,138980,56.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 81 | Adur District Council,07/04/2009,138980,299.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 82 | Adur District Council,07/04/2009,138980,299.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 83 | Adur District Council,07/04/2009,138980,0.0000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 84 | Adur District Council,07/04/2009,138980,168.2000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 85 | Adur District Council,07/04/2009,138980,238.9500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 86 | Adur District Council,07/04/2009,138980,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 87 | Adur District Council,07/04/2009,138980,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 88 | Adur District Council,07/04/2009,138980,299.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 89 | Adur District Council,07/04/2009,138980,56.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 90 | Adur District Council,07/04/2009,138980,182.2500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 91 | Adur District Council,07/04/2009,138980,117.4500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 92 | Adur District Council,07/04/2009,138980,56.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 93 | Adur District Council,07/04/2009,138980,243.0000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 94 | Adur District Council,07/04/2009,138980,238.9500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 95 | Adur District Council,07/04/2009,138980,182.2500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 96 | Adur District Council,07/04/2009,143696,1325.0000,BLB CHARTERED SURVEYORS,ADUR HOMES DIVISION 97 | Adur District Council,07/04/2009,138981,299.7000,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 98 | Adur District Council,07/04/2009,138981,60.7500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 99 | Adur District Council,07/04/2009,138981,60.7500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 100 | Adur District Council,07/04/2009,138981,299.7000,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 101 | Adur District Council,07/04/2009,138981,0.0000,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 102 | Adur District Council,07/04/2009,138981,299.7000,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 103 | Adur District Council,07/04/2009,138981,60.7500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 104 | Adur District Council,07/04/2009,138981,178.2000,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 105 | Adur District Council,07/04/2009,139457,800.0000,PENFOLD VERRALL LTD,ADUR HOMES DIVISION 106 | Adur District Council,07/04/2009,139751,1026.6000,SCARAB SWEEPERS LIMITED,RECYCLING & WASTE DIVISION 107 | Adur District Council,07/04/2009,139700,12.6000,SKIP-HOP LTD,PLANNING REGENERATION & WELLBEING 108 | Adur District Council,07/04/2009,139700,14.0000,SKIP-HOP LTD,PLANNING REGENERATION & WELLBEING 109 | Adur District Council,07/04/2009,139700,28.0000,SKIP-HOP LTD,PLANNING REGENERATION & WELLBEING 110 | Adur District Council,07/04/2009,139700,167.5800,SKIP-HOP LTD,PLANNING REGENERATION & WELLBEING 111 | Adur District Council,07/04/2009,139700,20.0000,SKIP-HOP LTD,PLANNING REGENERATION & WELLBEING 112 | Adur District Council,07/04/2009,139700,280.0000,SKIP-HOP LTD,PLANNING REGENERATION & WELLBEING 113 | Adur District Council,08/04/2009,139072,87.6500,HALCROW GROUP LTD,PLANNING REGENERATION & WELLBEING 114 | Adur District Council,08/04/2009,139072,2498.8800,HALCROW GROUP LTD,PLANNING REGENERATION & WELLBEING 115 | Adur District Council,08/04/2009,138725,2450.0000,MONSON ENGINEERING LIMITED,PLANNING REGENERATION & WELLBEING 116 | Adur District Council,08/04/2009,139919,1290.0000,UNITED LIFTING TECHNOLOGY LTD,RECYCLING & WASTE DIVISION 117 | Adur District Council,09/04/2009,137963,8397.8700,1ST SAXON - CLENMAY LTD IN ADMINISTRATION,ADUR HOMES DIVISION 118 | Adur District Council,09/04/2009,138761,5940.0000,BLOCKBUSTERS CONTRACTS LTD,HOUSING HEALTH + COMMUNITY SAFETY 119 | Adur District Council,09/04/2009,138748,714.8100,KENT COUNTY COUNCIL (KCS),ADUR HOMES DIVISION 120 | Adur District Council,09/04/2009,145293,4138.2600,SOUTH EAST EMPLOYERS,"STRATEGIC PERFORMANCE,HR&TRANSFORMATION" 121 | Adur District Council,09/04/2009,137962,3943.0000,STANDARD LIFE,FINANCIAL SERVICES 122 | Adur District Council,09/04/2009,138982,0.0000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 123 | Adur District Council,09/04/2009,138982,299.7000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 124 | Adur District Council,09/04/2009,138982,299.7000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 125 | Adur District Council,09/04/2009,138982,117.4500,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 126 | Adur District Council,09/04/2009,138982,328.5600,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 127 | Adur District Council,09/04/2009,138982,178.2000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 128 | Adur District Council,09/04/2009,138982,121.5000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 129 | Adur District Council,09/04/2009,138982,121.5000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 130 | Adur District Council,09/04/2009,138982,299.7000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 131 | Adur District Council,09/04/2009,143378,17272.0000,TOP LEVEL COMPUTING LTD,FINANCIAL SERVICES 132 | Adur District Council,09/04/2009,145458,1341.7500,UNIWORLD COMMUNICATIONS LTD,TECHNICAL SERVICES 133 | Adur District Council,09/04/2009,145458,698.9000,UNIWORLD COMMUNICATIONS LTD,TECHNICAL SERVICES 134 | Adur District Council,10/04/2009,139383,590.4400,HI-Q TYRESERVICES,RECYCLING & WASTE DIVISION 135 | Adur District Council,10/04/2009,137972,240.0000,JPA HEALTH SQUAD,PLANNING + COMMUNITY 136 | Adur District Council,10/04/2009,137972,760.0000,JPA HEALTH SQUAD,PLANNING + COMMUNITY 137 | Adur District Council,10/04/2009,138747,1860.8100,KENT COUNTY COUNCIL (KCS),ADUR HOMES DIVISION 138 | Adur District Council,10/04/2009,138749,1879.2900,KENT COUNTY COUNCIL (KCS),ADUR HOMES DIVISION 139 | Adur District Council,10/04/2009,138750,2838.9300,KENT COUNTY COUNCIL (KCS),ADUR HOMES DIVISION 140 | Adur District Council,10/04/2009,138752,2698.1100,KENT COUNTY COUNCIL (KCS),ADUR HOMES DIVISION 141 | Adur District Council,10/04/2009,138754,1884.7400,KENT COUNTY COUNCIL (KCS),ADUR HOMES DIVISION 142 | Adur District Council,10/04/2009,138765,169.0200,KENT COUNTY COUNCIL (KCS),ADUR HOMES DIVISION 143 | Adur District Council,10/04/2009,138765,3496.2600,KENT COUNTY COUNCIL (KCS),ADUR HOMES DIVISION 144 | Adur District Council,10/04/2009,140122,3020.3800,KENT COUNTY COUNCIL (KCS),ADUR HOMES DIVISION 145 | Adur District Council,11/04/2009,142306,1470.3000,ROSSENDALES LTD,CENSUS 146 | Adur District Council,11/04/2009,142306,1431.2000,ROSSENDALES LTD,CENSUS 147 | Adur District Council,11/04/2009,142306,39.1000,ROSSENDALES LTD,CENSUS 148 | Adur District Council,12/04/2009,138977,14.5200,AVS FENCING SUPPLIES LTD,ADUR HOMES DIVISION 149 | Adur District Council,12/04/2009,138977,4.0000,AVS FENCING SUPPLIES LTD,ADUR HOMES DIVISION 150 | Adur District Council,12/04/2009,138977,26.7200,AVS FENCING SUPPLIES LTD,ADUR HOMES DIVISION 151 | Adur District Council,12/04/2009,138977,2.1100,AVS FENCING SUPPLIES LTD,ADUR HOMES DIVISION 152 | Adur District Council,12/04/2009,138977,14.0800,AVS FENCING SUPPLIES LTD,ADUR HOMES DIVISION 153 | Adur District Council,12/04/2009,138977,0.0000,AVS FENCING SUPPLIES LTD,ADUR HOMES DIVISION 154 | Adur District Council,12/04/2009,138977,6.4200,AVS FENCING SUPPLIES LTD,ADUR HOMES DIVISION 155 | Adur District Council,12/04/2009,138977,9.2400,AVS FENCING SUPPLIES LTD,ADUR HOMES DIVISION 156 | Adur District Council,12/04/2009,138977,83.1600,AVS FENCING SUPPLIES LTD,ADUR HOMES DIVISION 157 | Adur District Council,12/04/2009,138977,78.0000,AVS FENCING SUPPLIES LTD,ADUR HOMES DIVISION 158 | Adur District Council,12/04/2009,138977,3.5000,AVS FENCING SUPPLIES LTD,ADUR HOMES DIVISION 159 | Adur District Council,12/04/2009,138977,243.6000,AVS FENCING SUPPLIES LTD,ADUR HOMES DIVISION 160 | Adur District Council,12/04/2009,138977,23.3600,AVS FENCING SUPPLIES LTD,ADUR HOMES DIVISION 161 | Adur District Council,12/04/2009,138977,38.8300,AVS FENCING SUPPLIES LTD,ADUR HOMES DIVISION 162 | Adur District Council,13/04/2009,141685,24922.6200,TIBBALDS,PLANNING REGENERATION & WELLBEING 163 | Adur District Council,14/04/2009,140348,2096.0000,CTMS,TECHNICAL SERVICES 164 | Adur District Council,14/04/2009,138737,645.8300,EDF ENERGY,ADUR HOMES DIVISION 165 | Adur District Council,15/04/2009,139730,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 166 | Adur District Council,15/04/2009,139730,121.5000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 167 | Adur District Council,15/04/2009,139730,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 168 | Adur District Council,15/04/2009,139730,121.5000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 169 | Adur District Council,15/04/2009,139730,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 170 | Adur District Council,15/04/2009,139730,263.2500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 171 | Adur District Council,15/04/2009,139730,261.0000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 172 | Adur District Council,15/04/2009,139730,87.0000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 173 | Adur District Council,15/04/2009,139730,182.2500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 174 | Adur District Council,15/04/2009,139730,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 175 | Adur District Council,15/04/2009,139730,182.2500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 176 | Adur District Council,15/04/2009,139730,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 177 | Adur District Council,15/04/2009,139730,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 178 | Adur District Council,15/04/2009,139730,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 179 | Adur District Council,15/04/2009,139730,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 180 | Adur District Council,15/04/2009,139730,121.5000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 181 | Adur District Council,15/04/2009,139730,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 182 | Adur District Council,15/04/2009,139730,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 183 | Adur District Council,15/04/2009,139730,121.5000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 184 | Adur District Council,15/04/2009,139730,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 185 | Adur District Council,15/04/2009,139730,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 186 | Adur District Council,15/04/2009,139730,243.0000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 187 | Adur District Council,15/04/2009,139730,56.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 188 | Adur District Council,15/04/2009,139730,121.5000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 189 | Adur District Council,15/04/2009,139730,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 190 | Adur District Council,15/04/2009,139730,243.0000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 191 | Adur District Council,15/04/2009,139730,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 192 | Adur District Council,15/04/2009,139730,121.5000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 193 | Adur District Council,15/04/2009,139730,121.5000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 194 | Adur District Council,15/04/2009,139730,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 195 | Adur District Council,15/04/2009,139730,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 196 | Adur District Council,15/04/2009,139721,182.2500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 197 | Adur District Council,15/04/2009,139721,0.0000,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 198 | Adur District Council,15/04/2009,139721,243.0000,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 199 | Adur District Council,15/04/2009,139721,60.7500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 200 | Adur District Council,15/04/2009,139721,60.7500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 201 | Adur District Council,15/04/2009,139721,60.7500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 202 | Adur District Council,15/04/2009,139721,243.0000,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 203 | Adur District Council,15/04/2009,139370,890.0000,CONNICK TREE CARE,LEISURE & CULTURAL DIVISION 204 | Adur District Council,15/04/2009,139370,112.0000,CONNICK TREE CARE,LEISURE & CULTURAL DIVISION 205 | Adur District Council,15/04/2009,139370,450.0000,CONNICK TREE CARE,LEISURE & CULTURAL DIVISION 206 | Adur District Council,15/04/2009,140468,0.0000,FACELIFT (GB) LIMITED,RECYCLING & WASTE DIVISION 207 | Adur District Council,15/04/2009,140468,660.0000,FACELIFT (GB) LIMITED,RECYCLING & WASTE DIVISION 208 | Adur District Council,15/04/2009,140468,392.0000,FACELIFT (GB) LIMITED,RECYCLING & WASTE DIVISION 209 | Adur District Council,15/04/2009,140468,29.5000,FACELIFT (GB) LIMITED,RECYCLING & WASTE DIVISION 210 | Adur District Council,15/04/2009,140468,472.0000,FACELIFT (GB) LIMITED,RECYCLING & WASTE DIVISION 211 | Adur District Council,15/04/2009,140468,30.0000,FACELIFT (GB) LIMITED,RECYCLING & WASTE DIVISION 212 | Adur District Council,15/04/2009,140468,232.5000,FACELIFT (GB) LIMITED,RECYCLING & WASTE DIVISION 213 | Adur District Council,15/04/2009,140468,235.0000,FACELIFT (GB) LIMITED,RECYCLING & WASTE DIVISION 214 | Adur District Council,15/04/2009,143705,1819.0000,PRINTWELL (UK) LIMITED,TECHNICAL SERVICES 215 | Adur District Council,15/04/2009,143705,200.0000,PRINTWELL (UK) LIMITED,TECHNICAL SERVICES 216 | Adur District Council,15/04/2009,148998,2804.0000,PRINTWELL (UK) LIMITED,TECHNICAL SERVICES 217 | Adur District Council,16/04/2009,139057,78.1200,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 218 | Adur District Council,16/04/2009,139057,135.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 219 | Adur District Council,16/04/2009,139057,58.9800,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 220 | Adur District Council,16/04/2009,139057,165.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 221 | Adur District Council,16/04/2009,139057,58.9800,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 222 | Adur District Council,16/04/2009,139057,270.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 223 | Adur District Council,16/04/2009,139057,25.0500,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 224 | Adur District Council,16/04/2009,139057,50.1000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 225 | Adur District Council,16/04/2009,139057,327.1800,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 226 | Adur District Council,16/04/2009,139057,180.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 227 | Adur District Council,16/04/2009,139057,78.1200,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 228 | Adur District Council,16/04/2009,139057,135.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 229 | Adur District Council,16/04/2009,139057,58.9800,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 230 | Adur District Council,16/04/2009,139057,105.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 231 | Adur District Council,16/04/2009,139057,58.9800,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 232 | Adur District Council,16/04/2009,139057,105.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 233 | Adur District Council,16/04/2009,139057,58.9800,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 234 | Adur District Council,16/04/2009,139057,105.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 235 | Adur District Council,16/04/2009,139057,26.0400,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 236 | Adur District Council,16/04/2009,139057,105.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 237 | Adur District Council,16/04/2009,139057,195.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 238 | Adur District Council,16/04/2009,139057,25.0500,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 239 | Adur District Council,16/04/2009,139057,52.0800,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 240 | Adur District Council,16/04/2009,139057,165.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 241 | Adur District Council,16/04/2009,139057,58.9800,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 242 | Adur District Council,16/04/2009,139057,135.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 243 | Adur District Council,16/04/2009,139057,165.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 244 | Adur District Council,16/04/2009,139057,78.1200,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 245 | Adur District Council,16/04/2009,139057,78.1200,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 246 | Adur District Council,16/04/2009,139929,14.7600,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 247 | Adur District Council,16/04/2009,139929,135.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 248 | Adur District Council,16/04/2009,139929,135.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 249 | Adur District Council,16/04/2009,139929,300.6000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 250 | Adur District Council,16/04/2009,139929,29.4900,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 251 | Adur District Council,16/04/2009,139929,538.3000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 252 | Adur District Council,16/04/2009,139929,135.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 253 | Adur District Council,16/04/2009,139929,26.0400,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 254 | Adur District Council,16/04/2009,139929,180.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 255 | Adur District Council,16/04/2009,139929,29.4900,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 256 | Adur District Council,16/04/2009,139929,29.4900,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 257 | Adur District Council,16/04/2009,139929,90.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 258 | Adur District Council,16/04/2009,139929,105.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 259 | Adur District Council,16/04/2009,139929,52.0800,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 260 | Adur District Council,16/04/2009,139929,180.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 261 | Adur District Council,16/04/2009,139929,88.4700,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 262 | Adur District Council,16/04/2009,139929,58.9800,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 263 | Adur District Council,16/04/2009,139929,58.9800,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 264 | Adur District Council,16/04/2009,139929,78.1200,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 265 | Adur District Council,16/04/2009,139929,105.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 266 | Adur District Council,16/04/2009,139929,52.0800,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 267 | Adur District Council,16/04/2009,139929,135.0000,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 268 | Adur District Council,16/04/2009,139929,26.0400,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 269 | Adur District Council,16/04/2009,139929,58.9800,ARUN SECURITY CENTRE,ADUR HOMES DIVISION 270 | Adur District Council,16/04/2009,138440,2344.8500,CHRIS HATCHER + SON,ADUR HOMES DIVISION 271 | Adur District Council,16/04/2009,139388,10500.0000,COMPUTERSHARE ELECTORAL MANAGEMENT SERVICES LTD,LEGAL & DEMOCRATIC DIVISION 272 | Adur District Council,16/04/2009,139371,1530.0000,CRAEMER UK LTD,RECYCLING & WASTE DIVISION 273 | Adur District Council,16/04/2009,140123,1893.0500,KENT COUNTY COUNCIL (KCS),ADUR HOMES DIVISION 274 | Adur District Council,16/04/2009,142199,5301.4800,KENT COUNTY COUNCIL (KCS),TECHNICAL SERVICES 275 | Adur District Council,16/04/2009,138438,7687.0700,MAXITHERM HEATING LTD,ADUR HOMES DIVISION 276 | Adur District Council,16/04/2009,139024,180.5000,NATIONAL DOOR AND DOMELIGHT COMPANY,ADUR HOMES DIVISION 277 | Adur District Council,16/04/2009,139024,240.2000,NATIONAL DOOR AND DOMELIGHT COMPANY,ADUR HOMES DIVISION 278 | Adur District Council,16/04/2009,139024,180.5000,NATIONAL DOOR AND DOMELIGHT COMPANY,ADUR HOMES DIVISION 279 | Adur District Council,16/04/2009,138436,263.1500,UTILICOM LTD,ADUR HOMES DIVISION 280 | Adur District Council,16/04/2009,138436,191.0000,UTILICOM LTD,ADUR HOMES DIVISION 281 | Adur District Council,16/04/2009,138436,185.7800,UTILICOM LTD,ADUR HOMES DIVISION 282 | Adur District Council,16/04/2009,138436,160.2700,UTILICOM LTD,ADUR HOMES DIVISION 283 | Adur District Council,16/04/2009,138436,274.3000,UTILICOM LTD,ADUR HOMES DIVISION 284 | Adur District Council,16/04/2009,138436,359.1000,UTILICOM LTD,ADUR HOMES DIVISION 285 | Adur District Council,16/04/2009,138436,105.0500,UTILICOM LTD,ADUR HOMES DIVISION 286 | Adur District Council,16/04/2009,138436,152.9300,UTILICOM LTD,ADUR HOMES DIVISION 287 | Adur District Council,16/04/2009,138436,142.4600,UTILICOM LTD,ADUR HOMES DIVISION 288 | Adur District Council,16/04/2009,138436,26.8300,UTILICOM LTD,ADUR HOMES DIVISION 289 | Adur District Council,16/04/2009,138436,141.5700,UTILICOM LTD,ADUR HOMES DIVISION 290 | Adur District Council,16/04/2009,138436,78.2500,UTILICOM LTD,ADUR HOMES DIVISION 291 | Adur District Council,16/04/2009,138436,84.6500,UTILICOM LTD,ADUR HOMES DIVISION 292 | Adur District Council,17/04/2009,138756,2833.0000,CJ LOCK + CO,ADUR HOMES DIVISION 293 | Adur District Council,17/04/2009,140610,1.2600,EDF ENERGY,ADUR HOMES DIVISION 294 | Adur District Council,17/04/2009,140610,632.1200,EDF ENERGY,ADUR HOMES DIVISION 295 | Adur District Council,17/04/2009,140721,1629.8300,ROYAL MAIL,TECHNICAL SERVICES 296 | Adur District Council,17/04/2009,144832,959.8100,SPECIALIST FLEET SERVICES LTD,FINANCIAL SERVICES 297 | Adur District Council,17/04/2009,139729,60.7500,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 298 | Adur District Council,17/04/2009,139729,0.0000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 299 | Adur District Council,17/04/2009,139729,60.7500,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 300 | Adur District Council,17/04/2009,139729,121.5000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 301 | Adur District Council,17/04/2009,139729,60.7500,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 302 | Adur District Council,17/04/2009,139729,182.2500,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 303 | Adur District Council,17/04/2009,139729,243.0000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 304 | Adur District Council,17/04/2009,139729,60.7500,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 305 | Adur District Council,17/04/2009,139729,243.0000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 306 | Adur District Council,17/04/2009,139729,60.7500,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 307 | Adur District Council,18/04/2009,142308,330.7100,ROSSENDALES LTD,CENSUS 308 | Adur District Council,18/04/2009,142308,37.0000,ROSSENDALES LTD,CENSUS 309 | Adur District Council,18/04/2009,142308,293.7100,ROSSENDALES LTD,CENSUS 310 | Adur District Council,19/04/2009,139107,537.2700,EDF ENERGY,ADUR HOMES DIVISION 311 | Adur District Council,19/04/2009,139358,192.2200,EDF ENERGY,ADUR HOMES DIVISION 312 | Adur District Council,19/04/2009,139358,1239.2400,EDF ENERGY,ADUR HOMES DIVISION 313 | Adur District Council,19/04/2009,139358,1911.2200,EDF ENERGY,ADUR HOMES DIVISION 314 | Adur District Council,19/04/2009,139358,2441.5400,EDF ENERGY,ADUR HOMES DIVISION 315 | Adur District Council,19/04/2009,139358,384.0300,EDF ENERGY,ADUR HOMES DIVISION 316 | Adur District Council,19/04/2009,140608,178.5700,EDF ENERGY,ADUR HOMES DIVISION 317 | Adur District Council,19/04/2009,140608,343.1200,EDF ENERGY,ADUR HOMES DIVISION 318 | Adur District Council,20/04/2009,156196,1650.0000,BARLOW LYDE + GILBERT,FINANCIAL SERVICES 319 | Adur District Council,20/04/2009,156196,1650.0000,BARLOW LYDE + GILBERT,FINANCIAL SERVICES 320 | Adur District Council,20/04/2009,140387,1260.0000,BERNICE GANDOLFI,HOUSING HEALTH + COMMUNITY SAFETY 321 | Adur District Council,20/04/2009,140387,2020.0000,BERNICE GANDOLFI,HOUSING HEALTH + COMMUNITY SAFETY 322 | Adur District Council,20/04/2009,140387,5380.0000,BERNICE GANDOLFI,HOUSING HEALTH + COMMUNITY SAFETY 323 | Adur District Council,20/04/2009,139738,962.3100,ROYAL MAIL,CENSUS 324 | Adur District Council,20/04/2009,139138,0.0000,TERBERG MATEC U K LTD,RECYCLING & WASTE DIVISION 325 | Adur District Council,20/04/2009,139138,1143.4900,TERBERG MATEC U K LTD,RECYCLING & WASTE DIVISION 326 | Adur District Council,21/04/2009,139357,1374.9700,EDF ENERGY,ADUR HOMES DIVISION 327 | Adur District Council,21/04/2009,139357,912.9400,EDF ENERGY,ADUR HOMES DIVISION 328 | Adur District Council,21/04/2009,140127,18138.1200,LEXISNEXIS UK,LEGAL & DEMOCRATIC DIVISION 329 | Adur District Council,21/04/2009,141109,963.2000,TPAS LIMITED,ADUR HOMES DIVISION 330 | Adur District Council,21/04/2009,141109,240.8000,TPAS LIMITED,ADUR HOMES DIVISION 331 | Adur District Council,21/04/2009,145761,2658.5600,TUNSTALL TELECOM,ADUR HOMES DIVISION 332 | Adur District Council,21/04/2009,147181,3725.0000,ZURICH MUNICIPAL,FINANCIAL SERVICES 333 | Adur District Council,21/04/2009,147181,3725.0000,ZURICH MUNICIPAL,FINANCIAL SERVICES 334 | Adur District Council,22/04/2009,139731,121.5000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 335 | Adur District Council,22/04/2009,139731,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 336 | Adur District Council,22/04/2009,139731,87.0000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 337 | Adur District Council,22/04/2009,139731,238.9500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 338 | Adur District Council,22/04/2009,139731,117.4500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 339 | Adur District Council,22/04/2009,139731,121.5000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 340 | Adur District Council,22/04/2009,139731,178.2000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 341 | Adur District Council,22/04/2009,139731,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 342 | Adur District Council,22/04/2009,139731,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 343 | Adur District Council,22/04/2009,139731,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 344 | Adur District Council,22/04/2009,139731,5.1000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 345 | Adur District Council,22/04/2009,139731,238.9500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 346 | Adur District Council,22/04/2009,139731,168.2000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 347 | Adur District Council,22/04/2009,139731,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 348 | Adur District Council,22/04/2009,139731,238.9500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 349 | Adur District Council,22/04/2009,139731,0.0000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 350 | Adur District Council,22/04/2009,139731,238.9500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 351 | Adur District Council,22/04/2009,139731,238.9500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 352 | Adur District Council,22/04/2009,139731,210.6000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 353 | Adur District Council,22/04/2009,139731,121.5000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 354 | Adur District Council,22/04/2009,139731,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 355 | Adur District Council,22/04/2009,139731,238.9500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 356 | Adur District Council,22/04/2009,139731,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 357 | Adur District Council,22/04/2009,139731,178.2000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 358 | Adur District Council,22/04/2009,139731,178.2000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 359 | Adur District Council,22/04/2009,139731,113.4000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 360 | Adur District Council,22/04/2009,139731,117.4500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 361 | Adur District Council,22/04/2009,139731,117.4500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 362 | Adur District Council,22/04/2009,139731,178.2000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 363 | Adur District Council,22/04/2009,139731,56.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 364 | Adur District Council,22/04/2009,139722,60.7500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 365 | Adur District Council,22/04/2009,139722,238.9500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 366 | Adur District Council,22/04/2009,139722,60.7500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 367 | Adur District Council,22/04/2009,139722,60.7500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 368 | Adur District Council,22/04/2009,139722,0.0000,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 369 | Adur District Council,22/04/2009,139722,238.9500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 370 | Adur District Council,22/04/2009,139709,2325.0000,OAKLEY COMMERCIAL,PLANNING REGENERATION & WELLBEING 371 | Adur District Council,22/04/2009,145093,8.7800,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 372 | Adur District Council,22/04/2009,145093,57.8400,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 373 | Adur District Council,22/04/2009,145093,20.3300,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 374 | Adur District Council,22/04/2009,145093,40.8400,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 375 | Adur District Council,22/04/2009,145093,15.3000,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 376 | Adur District Council,22/04/2009,145093,5.4300,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 377 | Adur District Council,22/04/2009,145093,6.3900,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 378 | Adur District Council,22/04/2009,145093,5.6300,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 379 | Adur District Council,22/04/2009,145093,4.3300,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 380 | Adur District Council,22/04/2009,145093,11.4400,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 381 | Adur District Council,22/04/2009,145093,10.1700,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 382 | Adur District Council,22/04/2009,145093,10.2000,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 383 | Adur District Council,22/04/2009,145093,34.1300,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 384 | Adur District Council,22/04/2009,145093,56.3500,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 385 | Adur District Council,22/04/2009,145093,58.7000,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 386 | Adur District Council,22/04/2009,145093,7.3000,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 387 | Adur District Council,22/04/2009,145093,5.6600,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 388 | Adur District Council,22/04/2009,145093,4.2600,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 389 | Adur District Council,22/04/2009,145093,51.2900,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 390 | Adur District Council,22/04/2009,145093,66.8000,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 391 | Adur District Council,22/04/2009,145093,15.2600,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 392 | Adur District Council,22/04/2009,145093,21.9900,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 393 | Adur District Council,22/04/2009,145093,15.0400,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 394 | Adur District Council,22/04/2009,145093,37.0100,SCREWFIX DIRECT LTD,ADUR HOMES DIVISION 395 | Adur District Council,23/04/2009,139466,917.0000,BAKER + SONS FUNERALCARE,HOUSING HEALTH + COMMUNITY SAFETY 396 | Adur District Council,23/04/2009,141148,330.3600,BRITISH TELECOM PLC,TECHNICAL SERVICES 397 | Adur District Council,23/04/2009,141148,1222.5000,BRITISH TELECOM PLC,TECHNICAL SERVICES 398 | Adur District Council,23/04/2009,140344,900.0000,DOLPHIN ECOLOGICAL SURVEYS,FINANCIAL SERVICES 399 | Adur District Council,23/04/2009,140402,1330.0000,MORRIS LUBRICANTS,RECYCLING & WASTE DIVISION 400 | Adur District Council,23/04/2009,139055,350.3000,NEW CONCEPT LTD,ADUR HOMES DIVISION 401 | Adur District Council,23/04/2009,139055,1350.0000,NEW CONCEPT LTD,ADUR HOMES DIVISION 402 | Adur District Council,23/04/2009,139055,1823.8000,NEW CONCEPT LTD,ADUR HOMES DIVISION 403 | Adur District Council,23/04/2009,150239,2734.2100,NOVAR SYSTEMS LTD,ADUR HOMES DIVISION 404 | Adur District Council,23/04/2009,140354,2908.7800,SCI PRINT LIMITED,LEGAL & DEMOCRATIC DIVISION 405 | Adur District Council,24/04/2009,139476,700.0000,CAERLEON LETTING AGENCY,HOUSING HEALTH + COMMUNITY SAFETY 406 | Adur District Council,24/04/2009,140571,2129.8000,EYRE + ELLISTON LTD,ADUR HOMES DIVISION 407 | Adur District Council,24/04/2009,139764,26452.1900,RAMBOLL,PLANNING REGENERATION & WELLBEING 408 | Adur District Council,24/04/2009,140333,68.0000,TUNSTALL TELECOM,ADUR HOMES DIVISION 409 | Adur District Council,24/04/2009,140333,552.0000,TUNSTALL TELECOM,ADUR HOMES DIVISION 410 | Adur District Council,24/04/2009,140333,210.0000,TUNSTALL TELECOM,ADUR HOMES DIVISION 411 | Adur District Council,24/04/2009,139737,6600.0000,VECTOR RESOURCING LTD,FINANCIAL SERVICES 412 | Adur District Council,25/04/2009,144555,509.7500,ROSSENDALES LTD,CENSUS 413 | Adur District Council,25/04/2009,144555,56.3000,ROSSENDALES LTD,CENSUS 414 | Adur District Council,25/04/2009,144555,453.4500,ROSSENDALES LTD,CENSUS 415 | Adur District Council,27/04/2009,139456,2797.0000,CJ LOCK + CO,HOUSING HEALTH + COMMUNITY SAFETY 416 | Adur District Council,27/04/2009,140472,925.0000,PTS PLUMBING TRADE SUPPLIES LTD,ADUR HOMES DIVISION 417 | Adur District Council,27/04/2009,140469,48.0000,SUSSEX SAFETYWEAR,RECYCLING & WASTE DIVISION 418 | Adur District Council,27/04/2009,140469,26.9100,SUSSEX SAFETYWEAR,RECYCLING & WASTE DIVISION 419 | Adur District Council,27/04/2009,140469,26.4000,SUSSEX SAFETYWEAR,RECYCLING & WASTE DIVISION 420 | Adur District Council,27/04/2009,140469,126.0000,SUSSEX SAFETYWEAR,RECYCLING & WASTE DIVISION 421 | Adur District Council,27/04/2009,140469,544.3200,SUSSEX SAFETYWEAR,RECYCLING & WASTE DIVISION 422 | Adur District Council,27/04/2009,140469,43.4000,SUSSEX SAFETYWEAR,RECYCLING & WASTE DIVISION 423 | Adur District Council,27/04/2009,140469,440.5500,SUSSEX SAFETYWEAR,RECYCLING & WASTE DIVISION 424 | Adur District Council,27/04/2009,140469,662.0000,SUSSEX SAFETYWEAR,RECYCLING & WASTE DIVISION 425 | Adur District Council,27/04/2009,143012,3622.5000,TYM + PARTNERS,PLANNING REGENERATION & WELLBEING 426 | Adur District Council,27/04/2009,141686,2340.0000,WSP ENVIRONMENTAL LTD,PLANNING REGENERATION & WELLBEING 427 | Adur District Council,28/04/2009,139697,778.5000,BACON & CO LETTINGS,HOUSING HEALTH + COMMUNITY SAFETY 428 | Adur District Council,28/04/2009,140463,206.5500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 429 | Adur District Council,28/04/2009,140463,299.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 430 | Adur District Council,28/04/2009,140463,238.9500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 431 | Adur District Council,28/04/2009,140463,238.9500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 432 | Adur District Council,28/04/2009,140463,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 433 | Adur District Council,28/04/2009,140463,117.4500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 434 | Adur District Council,28/04/2009,140463,121.5000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 435 | Adur District Council,28/04/2009,140463,182.2500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 436 | Adur District Council,28/04/2009,140463,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 437 | Adur District Council,28/04/2009,140463,238.9500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 438 | Adur District Council,28/04/2009,140463,117.4500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 439 | Adur District Council,28/04/2009,140463,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 440 | Adur District Council,28/04/2009,140463,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 441 | Adur District Council,28/04/2009,140463,342.2000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 442 | Adur District Council,28/04/2009,140463,66.6000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 443 | Adur District Council,28/04/2009,140463,299.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 444 | Adur District Council,28/04/2009,140463,299.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 445 | Adur District Council,28/04/2009,140463,182.2500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 446 | Adur District Council,28/04/2009,140463,117.4500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 447 | Adur District Council,28/04/2009,140463,5.1000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 448 | Adur District Council,28/04/2009,140463,299.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 449 | Adur District Council,28/04/2009,140463,56.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 450 | Adur District Council,28/04/2009,140463,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 451 | Adur District Council,28/04/2009,140463,315.9000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 452 | Adur District Council,28/04/2009,140463,0.0000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 453 | Adur District Council,28/04/2009,140463,182.2500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 454 | Adur District Council,28/04/2009,140463,299.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 455 | Adur District Council,28/04/2009,140463,299.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 456 | Adur District Council,28/04/2009,140463,56.7000,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 457 | Adur District Council,28/04/2009,140463,60.7500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 458 | Adur District Council,28/04/2009,140463,182.2500,BERRY RECRUITMENT LIMITED,RECYCLING & WASTE DIVISION 459 | Adur District Council,28/04/2009,145115,520.0000,CAPITA BUSINESS SERVICES LTD,CENSUS 460 | Adur District Council,28/04/2009,140973,1789.0500,EDF ENERGY,LEISURE & CULTURAL DIVISION 461 | Adur District Council,28/04/2009,140466,1300.0000,HAKO MACHINES LTD,RECYCLING & WASTE DIVISION 462 | Adur District Council,28/04/2009,140445,50.0000,KIDSROME,PLANNING REGENERATION & WELLBEING 463 | Adur District Council,28/04/2009,140445,56.8500,KIDSROME,PLANNING REGENERATION & WELLBEING 464 | Adur District Council,28/04/2009,140445,365.0000,KIDSROME,PLANNING REGENERATION & WELLBEING 465 | Adur District Council,28/04/2009,140445,56.8500,KIDSROME,PLANNING REGENERATION & WELLBEING 466 | Adur District Council,28/04/2009,140392,675.0000,KPR MIDLINK LTD,FINANCIAL SERVICES 467 | Adur District Council,28/04/2009,140452,3181.1800,NSL LIMITED,FINANCIAL SERVICES 468 | Adur District Council,28/04/2009,140454,6202.9300,NSL LIMITED,FINANCIAL SERVICES 469 | Adur District Council,28/04/2009,139477,960.0000,Redacted Personal Data,HOUSING HEALTH + COMMUNITY SAFETY 470 | Adur District Council,29/04/2009,140470,299.7000,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 471 | Adur District Council,29/04/2009,140470,0.0000,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 472 | Adur District Council,29/04/2009,140470,182.2500,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 473 | Adur District Council,29/04/2009,140470,299.7000,B-O-S RECRUITMENT SERVICES,RECYCLING & WASTE DIVISION 474 | Adur District Council,29/04/2009,139938,2232.0000,COMPUTERSHARE VOUCHER SERVICES,FINANCIAL SERVICES 475 | Adur District Council,29/04/2009,140125,965.0000,CONSILIUM TECHNOLOGIES,FINANCIAL SERVICES 476 | Adur District Council,29/04/2009,140574,1.0000,DENNIS EAGLE LIMITED,RECYCLING & WASTE DIVISION 477 | Adur District Council,29/04/2009,140574,981.8400,DENNIS EAGLE LIMITED,RECYCLING & WASTE DIVISION 478 | Adur District Council,29/04/2009,141688,2562.7300,DTZ,PLANNING REGENERATION & WELLBEING 479 | Adur District Council,29/04/2009,142300,2562.7300,DTZ,PLANNING REGENERATION & WELLBEING 480 | Adur District Council,29/04/2009,140601,1170.0000,L + F ELECTRICAL SERVICES LTD,ADUR HOMES DIVISION 481 | Adur District Council,29/04/2009,140421,2843.0000,MARILYN TAYLOR ASSOCIATES LTD,PLANNING REGENERATION & WELLBEING 482 | Adur District Council,29/04/2009,140582,132.0000,URIDGE TREE SURGEONS,LEISURE & CULTURAL DIVISION 483 | Adur District Council,29/04/2009,140582,368.0000,URIDGE TREE SURGEONS,LEISURE & CULTURAL DIVISION 484 | Adur District Council,30/04/2009,140422,0.0000,ALEXANDER ADVERTISING INTER LTD,"STRATEGIC PERFORMANCE,HR&TRANSFORMATION" 485 | Adur District Council,30/04/2009,140422,1142.5700,ALEXANDER ADVERTISING INTER LTD,"STRATEGIC PERFORMANCE,HR&TRANSFORMATION" 486 | Adur District Council,30/04/2009,141107,1429.2700,ALEXANDER ADVERTISING INTER LTD,ADUR HOMES DIVISION 487 | Adur District Council,30/04/2009,144771,13875.6300,BBP REGENERATION LTD,PLANNING REGENERATION & WELLBEING 488 | Adur District Council,30/04/2009,144573,0.0000,BELL CORNWELL,PLANNING REGENERATION & WELLBEING 489 | Adur District Council,30/04/2009,144573,3480.8000,BELL CORNWELL,PLANNING REGENERATION & WELLBEING 490 | Adur District Council,30/04/2009,142776,210.0000,BUSINESS HEALTH RESOURCES LTD,"STRATEGIC PERFORMANCE,HR&TRANSFORMATION" 491 | Adur District Council,30/04/2009,142776,30.0000,BUSINESS HEALTH RESOURCES LTD,"STRATEGIC PERFORMANCE,HR&TRANSFORMATION" 492 | Adur District Council,30/04/2009,142776,200.0000,BUSINESS HEALTH RESOURCES LTD,"STRATEGIC PERFORMANCE,HR&TRANSFORMATION" 493 | Adur District Council,30/04/2009,142776,800.0000,BUSINESS HEALTH RESOURCES LTD,"STRATEGIC PERFORMANCE,HR&TRANSFORMATION" 494 | Adur District Council,30/04/2009,142776,60.0000,BUSINESS HEALTH RESOURCES LTD,"STRATEGIC PERFORMANCE,HR&TRANSFORMATION" 495 | Adur District Council,30/04/2009,141712,720.0000,CCI CASH SERVICES,FINANCIAL SERVICES 496 | Adur District Council,30/04/2009,141050,1040.0000,COLAS LTD,PLANNING REGENERATION & WELLBEING 497 | Adur District Council,30/04/2009,141050,0.0000,COLAS LTD,PLANNING REGENERATION & WELLBEING 498 | Adur District Council,30/04/2009,140969,851.5900,GARDNER + SCARDIFIELD LTD,RECYCLING & WASTE DIVISION 499 | Adur District Council,30/04/2009,140969,506.9200,GARDNER + SCARDIFIELD LTD,RECYCLING & WASTE DIVISION 500 | Adur District Council,30/04/2009,140969,9.6000,GARDNER + SCARDIFIELD LTD,RECYCLING & WASTE DIVISION 501 | Adur District Council,30/04/2009,140969,62.6100,GARDNER + SCARDIFIELD LTD,RECYCLING & WASTE DIVISION 502 | Adur District Council,30/04/2009,140969,12.5700,GARDNER + SCARDIFIELD LTD,RECYCLING & WASTE DIVISION 503 | Adur District Council,30/04/2009,140969,269.0000,GARDNER + SCARDIFIELD LTD,RECYCLING & WASTE DIVISION 504 | Adur District Council,30/04/2009,140969,216.0000,GARDNER + SCARDIFIELD LTD,RECYCLING & WASTE DIVISION 505 | Adur District Council,30/04/2009,140969,0.0000,GARDNER + SCARDIFIELD LTD,RECYCLING & WASTE DIVISION 506 | Adur District Council,30/04/2009,140969,63.5500,GARDNER + SCARDIFIELD LTD,RECYCLING & WASTE DIVISION 507 | Adur District Council,30/04/2009,140969,33.5000,GARDNER + SCARDIFIELD LTD,RECYCLING & WASTE DIVISION 508 | Adur District Council,30/04/2009,140969,13.7700,GARDNER + SCARDIFIELD LTD,RECYCLING & WASTE DIVISION 509 | Adur District Council,30/04/2009,140969,60.7500,GARDNER + SCARDIFIELD LTD,RECYCLING & WASTE DIVISION 510 | Adur District Council,30/04/2009,141104,10617.8500,J R PLANNNG LTD,PLANNING REGENERATION & WELLBEING 511 | Adur District Council,30/04/2009,141103,7342.4000,NATURAL PR LTD,PLANNING REGENERATION & WELLBEING 512 | Adur District Council,30/04/2009,141324,819.0000,NSL LIMITED,TECHNICAL SERVICES 513 | Adur District Council,30/04/2009,141325,5245.2700,NSL LIMITED,TECHNICAL SERVICES 514 | Adur District Council,30/04/2009,141326,3652.4700,NSL LIMITED,TECHNICAL SERVICES 515 | Adur District Council,30/04/2009,141328,7121.8800,NSL LIMITED,TECHNICAL SERVICES 516 | Adur District Council,30/04/2009,141323,14.0500,OFFICE DEPOT,TECHNICAL SERVICES 517 | Adur District Council,30/04/2009,141323,7.2700,OFFICE DEPOT,TECHNICAL SERVICES 518 | Adur District Council,30/04/2009,141323,5.6000,OFFICE DEPOT,TECHNICAL SERVICES 519 | Adur District Council,30/04/2009,141323,31.2600,OFFICE DEPOT,TECHNICAL SERVICES 520 | Adur District Council,30/04/2009,141323,0.1200,OFFICE DEPOT,TECHNICAL SERVICES 521 | Adur District Council,30/04/2009,141323,0.6600,OFFICE DEPOT,TECHNICAL SERVICES 522 | Adur District Council,30/04/2009,141323,3.2100,OFFICE DEPOT,TECHNICAL SERVICES 523 | Adur District Council,30/04/2009,141323,7.2700,OFFICE DEPOT,TECHNICAL SERVICES 524 | Adur District Council,30/04/2009,141323,1.8500,OFFICE DEPOT,TECHNICAL SERVICES 525 | Adur District Council,30/04/2009,141323,6.6800,OFFICE DEPOT,TECHNICAL SERVICES 526 | Adur District Council,30/04/2009,141323,42.2000,OFFICE DEPOT,TECHNICAL SERVICES 527 | Adur District Council,30/04/2009,141323,37.8500,OFFICE DEPOT,TECHNICAL SERVICES 528 | Adur District Council,30/04/2009,141323,32.9600,OFFICE DEPOT,TECHNICAL SERVICES 529 | Adur District Council,30/04/2009,141323,7.3500,OFFICE DEPOT,TECHNICAL SERVICES 530 | Adur District Council,30/04/2009,141323,102.6900,OFFICE DEPOT,TECHNICAL SERVICES 531 | Adur District Council,30/04/2009,141323,14.4000,OFFICE DEPOT,TECHNICAL SERVICES 532 | Adur District Council,30/04/2009,141323,30.6000,OFFICE DEPOT,TECHNICAL SERVICES 533 | Adur District Council,30/04/2009,141323,94.8000,OFFICE DEPOT,TECHNICAL SERVICES 534 | Adur District Council,30/04/2009,141323,3.5000,OFFICE DEPOT,TECHNICAL SERVICES 535 | Adur District Council,30/04/2009,141323,21.8000,OFFICE DEPOT,TECHNICAL SERVICES 536 | Adur District Council,30/04/2009,141323,14.0500,OFFICE DEPOT,TECHNICAL SERVICES 537 | Adur District Council,30/04/2009,141323,38.2000,OFFICE DEPOT,TECHNICAL SERVICES 538 | Adur District Council,30/04/2009,141323,73.2200,OFFICE DEPOT,TECHNICAL SERVICES 539 | Adur District Council,30/04/2009,141323,0.4500,OFFICE DEPOT,TECHNICAL SERVICES 540 | Adur District Council,30/04/2009,141323,0.7600,OFFICE DEPOT,TECHNICAL SERVICES 541 | Adur District Council,30/04/2009,141323,4.0500,OFFICE DEPOT,TECHNICAL SERVICES 542 | Adur District Council,30/04/2009,141323,2.6000,OFFICE DEPOT,TECHNICAL SERVICES 543 | Adur District Council,30/04/2009,141323,4.1000,OFFICE DEPOT,TECHNICAL SERVICES 544 | Adur District Council,30/04/2009,141323,1.7000,OFFICE DEPOT,TECHNICAL SERVICES 545 | Adur District Council,30/04/2009,141323,9.4100,OFFICE DEPOT,TECHNICAL SERVICES 546 | Adur District Council,30/04/2009,141323,6.9000,OFFICE DEPOT,TECHNICAL SERVICES 547 | Adur District Council,30/04/2009,141323,1.1100,OFFICE DEPOT,TECHNICAL SERVICES 548 | Adur District Council,30/04/2009,141323,23.5000,OFFICE DEPOT,TECHNICAL SERVICES 549 | Adur District Council,30/04/2009,140628,96.0000,OLIVER AND GRAIMES DESIGN ASSOC,PLANNING REGENERATION & WELLBEING 550 | Adur District Council,30/04/2009,140628,6194.0000,OLIVER AND GRAIMES DESIGN ASSOC,PLANNING REGENERATION & WELLBEING 551 | Adur District Council,30/04/2009,140629,3130.0000,OLIVER AND GRAIMES DESIGN ASSOC,PLANNING REGENERATION & WELLBEING 552 | Adur District Council,30/04/2009,139762,12535.9700,Redacted Personal Data,ADUR HOMES DIVISION 553 | Adur District Council,30/04/2009,165380,3928.0700,RICOH UK LTD,TECHNICAL SERVICES 554 | Adur District Council,30/04/2009,141029,302.2500,SUPRA UK LTD,HOUSING HEALTH + COMMUNITY SAFETY 555 | Adur District Council,30/04/2009,141029,302.2500,SUPRA UK LTD,HOUSING HEALTH + COMMUNITY SAFETY 556 | Adur District Council,30/04/2009,140464,128.7600,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 557 | Adur District Council,30/04/2009,140464,60.7500,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 558 | Adur District Council,30/04/2009,140464,60.7500,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 559 | Adur District Council,30/04/2009,140464,238.9500,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 560 | Adur District Council,30/04/2009,140464,60.7500,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 561 | Adur District Council,30/04/2009,140464,121.5000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 562 | Adur District Council,30/04/2009,140464,56.7000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 563 | Adur District Council,30/04/2009,140464,60.7500,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 564 | Adur District Council,30/04/2009,140464,259.2000,THE BEST CONNECTION,RECYCLING & WASTE DIVISION 565 | Adur District Council,30/04/2009,141684,12549.5500,TIBBALDS,PLANNING REGENERATION & WELLBEING 566 | -------------------------------------------------------------------------------- /testdata/kml/AngolaTelecoms.kml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | AngolaTelecoms.kml 5 | 18 | 31 | 32 | 33 | normal 34 | #sn_ylw-pushpin1 35 | 36 | 37 | highlight 38 | #sh_ylw-pushpin0 39 | 40 | 41 | 54 | 55 | 56 | normal 57 | #sn_ylw-pushpin0 58 | 59 | 60 | highlight 61 | #sh_ylw-pushpin1 62 | 63 | 64 | 77 | 90 | 103 | 104 | 105 | normal 106 | #sn_ylw-pushpin 107 | 108 | 109 | highlight 110 | #sh_ylw-pushpin 111 | 112 | 113 | 114 | Angola Telecoms 115 | 1 116 | Name: Angola Telecoms National Backbone 117 | Cable type: 118 | ISO2:ao 119 | Source URL: http://www.flickr.com/photos/ssong/7261268726/ 120 | Notes: Parts of this are highly speculative. 121 | Contributor: Steve Song 122 | Contributor Email: stephen.song@gmail.com 123 | Source: 124 | Last update: 2012 125 | Go live date: 126 | Capacity: 127 | Access Model: 128 | Owner: Angola Telecoms 129 | Operator: Angola Telecoms 130 | Live: true 131 | Sharing: 132 | Validated by Operator: False 133 | Accuracy Confidence: 2 134 | 1 135 | 136 | Luanda - Soyo 137 | Name: Angola Telecoms National Backbone 138 | Phase Name: Phase 1 - 2006 - 2008 139 | Cable type: 140 | ISO2:ao 141 | Source URL: http://www.flickr.com/photos/ssong/7261268726/ 142 | Notes: Parts of this are highly speculative. 143 | Contributor: Steve Song 144 | Contributor Email: stephen.song@gmail.com 145 | Source: 146 | Last update: 2012 147 | Go live date: 148 | Capacity: 149 | Access Model: 150 | Owner: Angola Telecoms 151 | Operator: Angola Telecoms 152 | Live: true 153 | Sharing: 154 | Validated by Operator: False 155 | Accuracy Confidence: 2 156 | #msn_ylw-pushpin1 157 | 158 | 1 159 | 160 | 13.23808434545945,-8.834558781635126,0 13.47178787317102,-8.977856973120133,0 13.68948162044913,-9.095962108973602,0 13.85272703667258,-9.149672426005569,0 14.08109120653118,-9.224251273297906,0 14.12756612032814,-9.275944312442414,0 14.22565588269209,-9.313633290717299,0 14.38670070429489,-9.517613098648823,0 14.4448150140112,-9.696653455188182,0 14.53937374835096,-9.617473529863677,0 14.64304927995814,-9.53976054538885,0 14.7441858956732,-9.437233460875657,0 14.81376006707909,-9.358699436427019,0 14.87534621445961,-9.308760181317705,0 14.96756729081739,-9.305704619655415,0 15.10055037049599,-9.285410169661997,0 15.16985480757602,-9.26536951646327,0 15.24708634488029,-9.266294258303603,0 15.22931745471142,-9.167700383992292,0 15.25874029553865,-9.083403803052061,0 15.2945746264078,-8.975765951051132,0 15.37310139444739,-8.907327860292655,0 15.41442464108313,-8.799237143194475,0 15.41937514131785,-8.731460819445747,0 15.41923815505651,-8.589531826871688,0 15.42471597407038,-8.491832944951005,0 15.45354125898318,-8.494403533053127,0 15.47509449026891,-8.444031410166176,0 15.44395005863979,-8.375963267573166,0 15.44140521925017,-8.303378536206109,0 15.37476520519209,-8.192247848369963,0 15.33746860048179,-8.044597147007911,0 15.34063508842301,-7.97882661111567,0 15.2896582910273,-7.847421732672,0 15.2592952593057,-7.741785223980528,0 15.20306498636966,-7.669788234511593,0 15.16905602958235,-7.626206687221807,0 15.13513710343671,-7.605854592099921,0 15.11612517362009,-7.57372314120583,0 15.06721283320692,-7.605201323876138,0 15.11612517362009,-7.57372314120583,0 15.19886429621851,-7.602649949183804,0 15.26237107089529,-7.656329497138277,0 15.38465302235216,-7.742280170155095,0 15.48608450682279,-7.766542669169708,0 15.48851355336319,-7.766451607711411,0 15.60303332205761,-7.781388586575985,0 15.73734787403658,-7.701656495665691,0 15.8015868322528,-7.628624151990194,0 15.83760065677483,-7.53661079300551,0 15.8754829698889,-7.497742971090591,0 15.89227508687784,-7.453005304015674,0 15.90306126882293,-7.419727215343106,0 15.9263701538452,-7.396373454580638,0 15.92875902072962,-7.395478009807158,0 15.94512820687025,-7.380408559219843,0 15.9558531484843,-7.345526312093246,0 15.99741777409282,-7.313420225285309,0 16.01971372230454,-7.28447313465496,0 16.03232860653654,-7.235664453743951,0 16.02772488105387,-7.202166484709388,0 16.0647107300054,-7.176657587395542,0 16.0755873348208,-7.125713791018418,0 16.09219795233085,-7.076140811764853,0 16.11072983912509,-7.03369502758506,0 16.12986602968633,-6.984670914855803,0 16.13027040268082,-6.935706061680966,0 16.1283749471153,-6.909305904123453,0 16.15794677645959,-6.860003548470406,0 16.17670254457727,-6.80309391483399,0 16.1971961146552,-6.768565095999241,0 16.19916989554472,-6.721088467046846,0 16.22376292451876,-6.671168421635167,0 16.21659747976104,-6.614514170896119,0 16.25273335858799,-6.591185721130188,0 16.26337669757973,-6.584558684398838,0 16.26558716641794,-6.573879867497703,0 16.27561951281066,-6.558847682863611,0 16.28177531046678,-6.550678784939955,0 16.31830385134867,-6.531746185222518,0 16.32688543247119,-6.516630833668514,0 16.33510675624165,-6.5063282216814,0 16.35349138576297,-6.474988170128359,0 16.36257820669863,-6.44299988868285,0 16.36164673649536,-6.430775248308549,0 16.39103571407983,-6.37747413422385,0 16.39397235322376,-6.32998520693975,0 16.39418671874407,-6.329106105581756,0 16.39416203956219,-6.310080234676399,0 16.37923438372867,-6.214314267844726,0 16.32200851869831,-6.131649932042609,0 16.32086566840009,-6.131321739148004,0 16.25269505662726,-6.121338127055862,0 16.04866117780211,-6.148963387190469,0 15.96431158695469,-6.15792405547573,0 15.81600230208027,-6.126347103705439,0 15.81412271511458,-6.126421338601311,0 15.68957382418232,-6.090478252209127,0 15.52165916071107,-6.042750692736987,0 15.36572061017914,-6.021071457855276,0 15.29886759061518,-6.016498324340755,0 15.24956878740675,-6.03453128940904,0 15.19742958177851,-6.058613304292634,0 15.14723056871012,-6.065014353787255,0 15.09883336882961,-6.06910998994905,0 15.0665874603952,-6.055275722302736,0 15.01612904246973,-6.032205640158275,0 15.01535166670706,-6.030156925355318,0 15.01243096186471,-6.026802866652888,0 14.99502012117089,-6.009447715921715,0 14.99427035991901,-6.008090971907227,0 14.97103541766196,-5.984037240277747,0 14.9695638256407,-5.982015775580131,0 14.94040256562336,-5.966497292121294,0 14.93486482337818,-5.967396773849735,0 14.916167983052,-5.97017286318749,0 14.91408201142008,-5.9702509492366,0 14.88290427471719,-5.974185095028937,0 14.8815141401959,-5.974237081525496,0 14.87595386340846,-5.974445002844945,0 14.81457329626254,-5.970513146508981,0 14.80495335124333,-5.97363932861529,0 14.76369910356141,-5.986246066593573,0 14.75883762952694,-5.986427375307699,0 14.75258726727487,-5.986660461208304,0 14.72241300025583,-5.979485446875158,0 14.71960925544546,-5.978898297063061,0 14.71611110556407,-5.978337028397929,0 14.69803015560639,-5.978319104156632,0 14.6960508663881,-5.981159434780447,0 14.69345507205051,-5.986097735135162,0 14.68865963889554,-6.025012743940232,0 14.68873755649746,-6.027085228688405,0 14.66070906395818,-6.07725693543341,0 14.63037136743603,-6.10330826016252,0 14.62908450045231,-6.106125527834567,0 14.62710262780433,-6.108968878227276,0 14.61325241622159,-6.129567264377947,0 14.56234079880519,-6.146024208524038,0 14.52292102120868,-6.153745601501669,0 14.49842296634019,-6.169918086415529,0 14.48894798021912,-6.158495099227841,0 14.48605640831146,-6.136431241503642,0 14.46588865937376,-6.118487690575122,0 14.4530369294067,-6.129364916558423,0 14.4466730685994,-6.146236536647365,0 14.41176083305713,-6.167248044554361,0 14.37180972289165,-6.178393492316245,0 14.36977627078482,-6.17985116884284,0 14.31150913772059,-6.203419349677856,0 14.25570923629151,-6.237270903994276,0 14.24205721534173,-6.263365384111476,0 14.23849280663969,-6.23718375730673,0 14.22731317253837,-6.197820274639637,0 14.21920469767149,-6.170617397337513,0 14.21876283035815,-6.168775615509024,0 14.20821163175496,-6.136091083121251,0 14.18782528783522,-6.090014590661979,0 14.17450906449861,-6.06336788019785,0 14.15177704645909,-6.034823475813821,0 14.150270237335,-6.03450623600002,0 14.1072720075625,-5.995557344875112,0 14.07154300791785,-5.968982735401594,0 14.05124157611068,-5.965632776229185,0 13.98846924734418,-5.965674640590096,0 13.9482035778434,-5.968236392663669,0 13.89029967249207,-5.97959702882966,0 13.86989067388502,-5.984039925797696,0 13.78709453517346,-5.960341573185496,0 13.72731609879533,-5.95021815034526,0 13.7258234958759,-5.950271453870911,0 13.72395774609213,-5.95033806687484,0 13.70721963632168,-5.952421734736091,0 13.70647334836323,-5.952448309405106,0 13.70315514929694,-5.953681572245322,0 13.66284337813356,-5.975554983971385,0 13.66175057710444,-5.976337000954213,0 13.65620621777982,-5.978019905850767,0 13.61674959592101,-5.99279341263246,0 13.61416304774284,-5.993627953163054,0 13.61121644964724,-5.99484684559583,0 13.59346774341609,-6.000303934698711,0 13.59234745389771,-6.000343379432442,0 13.52907198252026,-5.992553906521076,0 13.49290532162401,-5.984531108072847,0 13.49215863837029,-5.984557234959762,0 13.45470900616652,-5.982890565839456,0 13.4381478655455,-5.987796155232905,0 13.40358773291149,-6.014291375938113,0 13.38104148901786,-6.031806249617793,0 13.34733408752842,-6.050820504499152,0 13.28837184124717,-6.061728747551159,0 13.1352126487383,-6.090487597353422,0 13.02967594336365,-6.118282842103008,0 12.93260977629562,-6.153563677631744,0 12.86665892012523,-6.191854000355995,0 12.80590705030758,-6.207670045497681,0 12.80331881527037,-6.208501336592828,0 12.72038596238275,-6.229143909432192,0 12.69889533696432,-6.233024962054449,0 12.67975365483396,-6.212450281586726,0 12.66944347258178,-6.200811583142092,0 12.64018646139234,-6.174726612372607,0 12.63986207191901,-6.173993287170731,0 12.63163667628979,-6.15224134491315,0 12.6308789090907,-6.151969141207148,0 12.6296725502244,-6.151712016734228,0 12.61200536808012,-6.147244892497623,0 12.61108793036721,-6.146680309179747,0 12.61017554240658,-6.146264394399528,0 12.60140101566114,-6.143581769486544,0 12.60020463643036,-6.143621875186825,0 12.58985196043045,-6.147392359031074,0 12.56824036611279,-6.144227370190738,0 12.54245687959531,-6.138837908874793,0 12.54185360695185,-6.138709193749496,0 12.52478535178322,-6.134365730562456,0 12.52418193966111,-6.134236948480364,0 12.50115764495763,-6.133520605316597,0 12.48758111280388,-6.139332544044819,0 12.47208072579984,-6.14580297854013,0 12.47148759276058,-6.145971575500433,0 12.47089445798002,-6.146140170366163,0 12.4652670991156,-6.147964797413688,0 12.45524969336756,-6.161694199058318,0 12.44186980957098,-6.177917925208706,0 12.42068048175159,-6.203782640985208,0 12.41005794997078,-6.212917005464417,0 12.38354411739139,-6.203675505303409,0 12.38322997927339,-6.203239368327287,0 12.36939143069955,-6.18806741630471,0 12.36859105277422,-6.168740113763522,0 12.37571927608519,-6.153615759590498,0 12.38088479618584,-6.137493507558037,0 12.37017034185337,-6.130555191896619,0 12.36956212075629,-6.13027767259892,0 12.36803661606638,-6.129435179548919,0 12.35873510181387,-6.11991937539745,0 12.35828645014127,-6.119934268296065,0 161 | 162 | 163 | 164 | 165 | N'dalatando - Dundo Loop 166 | Name: Angola Telecoms National Backbone 167 | Phase Name: Phase 1 - 2006 - 2008 168 | Cable type: 169 | ISO2:ao 170 | Source URL: http://www.flickr.com/photos/ssong/7261268726/ 171 | Notes: Parts of this are highly speculative. 172 | Contributor: Steve Song 173 | Contributor Email: stephen.song@gmail.com 174 | Source: 175 | Last update: 2012 176 | Go live date: 177 | Capacity: 178 | Access Model: 179 | Owner: Angola Telecoms 180 | Operator: Angola Telecoms 181 | Live: true 182 | Sharing: 183 | Validated by Operator: False 184 | Accuracy Confidence: 2 185 | #msn_ylw-pushpin1 186 | 187 | 1 188 | 189 | 15.24696890633053,-9.266238455633143,0 15.25258002771799,-9.281315804854515,0 15.27969764503279,-9.289862040753672,0 15.34802924827636,-9.330847266365728,0 15.34936068427485,-9.331436636819578,0 15.39331455059109,-9.350887692031566,0 15.39722959446831,-9.35072670380076,0 15.49237871048023,-9.372593516754051,0 15.53843960372304,-9.392235149034942,0 15.57356755226371,-9.388823901880437,0 15.62989211235745,-9.423170021465278,0 15.72395731691201,-9.424351685572205,0 15.74225979038366,-9.424867202438273,0 15.745686351817,-9.428588203810142,0 15.77072816880694,-9.448795066381773,0 15.84527399701481,-9.463566041715302,0 15.90737227290763,-9.478947715118196,0 15.96813789037427,-9.509185351701525,0 16.01316688899341,-9.508533926521153,0 16.06760089603893,-9.513913723114774,0 16.11109581359068,-9.508169707642027,0 16.15286076227025,-9.492836106613238,0 16.21042779105747,-9.509020757215819,0 16.26763037622378,-9.516203948470901,0 16.34011598725506,-9.541423725199934,0 16.40065076261275,-9.543247961441478,0 16.46351431968415,-9.517904017362083,0 16.5027413087087,-9.504565431058083,0 16.53740235230286,-9.491429518508935,0 16.6160642774536,-9.497592022740141,0 16.66559572576599,-9.494741320778395,0 16.73920668005017,-9.474700072152595,0 16.81273917824824,-9.479147429405238,0 16.8685114413937,-9.483358320487129,0 16.91962294908309,-9.473301028519554,0 16.97943748452454,-9.481514876138275,0 17.02184022316474,-9.452514285939488,0 17.0420547286462,-9.423879812333535,0 17.06491405283802,-9.39575806504744,0 17.10314497522513,-9.402359860560717,0 17.13051148428983,-9.413976969810962,0 17.14463303549811,-9.408161552838072,0 17.15221355383266,-9.38846590659273,0 17.17079294455103,-9.379856891115752,0 17.23290862052735,-9.399663691484582,0 17.2712375210879,-9.407594712542933,0 17.32613168506571,-9.420551146674816,0 17.37714068324826,-9.421408442436263,0 17.42062507126908,-9.429047847722812,0 17.46907259799254,-9.458354897733711,0 17.5050432646487,-9.486297550184208,0 17.52648878566229,-9.497522586654863,0 17.56935504187691,-9.519321975509365,0 17.59965954538269,-9.53784876214424,0 17.65420053241331,-9.557146852923365,0 17.67306567177051,-9.568486106201211,0 17.69780050703823,-9.566011279630764,0 17.70168516926812,-9.565180347041922,0 17.73543577721837,-9.546153744662288,0 17.74796187899797,-9.534589741577163,0 17.78244302513399,-9.543237454559232,0 17.80261396631657,-9.540325320851341,0 17.80323621780479,-9.539650220045647,0 17.81278312848766,-9.520482287264494,0 17.85304579247823,-9.48854341763596,0 17.91674768634308,-9.433414656915991,0 18.00331181827748,-9.406069655652308,0 18.08821522615575,-9.40383722007514,0 18.12733607369408,-9.365268337214538,0 18.19495620593124,-9.32911603325379,0 18.23159098629484,-9.279029853373512,0 18.28166673070044,-9.301606465739914,0 18.30553630116216,-9.328396281096518,0 18.43567736300284,-9.419337777793864,0 18.45605679934719,-9.414448151439526,0 18.56529363564715,-9.453377115181871,0 18.67430238546529,-9.527750772361868,0 18.69028225720889,-9.552979830177222,0 18.77439431966502,-9.59112621639119,0 18.79552636450117,-9.602580384002039,0 18.8546164699434,-9.591839376127195,0 18.93084436641261,-9.627450595016647,0 18.97890934874223,-9.684762913552959,0 19.05944553900353,-9.706655034295308,0 19.12119536967478,-9.760408263947433,0 19.14409222861063,-9.784331136731419,0 19.14166808336237,-9.828688688414058,0 19.21030150179891,-9.829970719348779,0 19.21095757198107,-9.896633145424099,0 19.21160088223781,-9.944890418615264,0 19.22971456904486,-9.990278643502046,0 19.26477056138333,-10.00484924498399,0 19.30261985883157,-10.05302640754153,0 19.26556209823974,-10.14657459885302,0 19.3744128161009,-10.11289110193125,0 19.4665941175913,-10.0780999469208,0 19.55743663295807,-10.03079992119808,0 19.65210253761625,-10.02797968197279,0 19.76513826346937,-9.978591204296118,0 19.88210850367292,-9.956222970435336,0 19.99787912573022,-9.908764695368193,0 20.09479737646823,-9.853124905017475,0 20.22660237912513,-9.749651178204234,0 20.33378742682976,-9.658736917382473,0 20.40082400888725,-9.666225578965063,0 20.42813687393602,-9.582191666001608,0 20.4819682676079,-9.458797357444341,0 20.48130038985237,-9.251788263902702,0 20.45273886965839,-9.116071419053705,0 20.44997145047027,-9.01209974255924,0 20.56428997938583,-8.972553900470739,0 20.65399122755668,-8.866513287060119,0 20.69789312006165,-8.769315785105579,0 20.71427767162384,-8.721008095152206,0 20.67880315564226,-8.576073911696582,0 20.65847958660558,-8.392508691204744,0 20.65265289580122,-8.181406950280975,0 20.6790802589232,-8.003089853220862,0 20.6976822017552,-7.774403521499101,0 20.69955333741381,-7.641735155087011,0 20.75096152928072,-7.510966469767147,0 20.81385153639022,-7.412601265705772,0 20.83552955211717,-7.37342604753148,0 20.95025408447226,-7.39835411685314,0 21.04594140948961,-7.422790154431181,0 21.12008712131814,-7.404191803428254,0 21.18384392145738,-7.370343470989764,0 21.1886378894591,-7.37005804788046,0 21.27113274278945,-7.46489494607144,0 21.2866374728338,-7.565289775067725,0 21.25861563223183,-7.661867299326705,0 21.2508256500271,-7.773084695413613,0 21.20945142238877,-7.911549948411174,0 21.20013977489134,-7.91682032735828,0 21.18219263519898,-7.990671177440555,0 21.20533986894698,-8.027422270459112,0 21.14849234994605,-8.083729923453598,0 21.10051292095416,-8.116705987671173,0 21.08332240665826,-8.264929806152884,0 20.93538948406784,-8.259326973462723,0 20.88973039020451,-8.328342484190387,0 20.88512556178055,-8.331767499874303,0 20.81587000037915,-8.406814536466175,0 20.73559555371321,-8.428749014734935,0 20.67080795127833,-8.468723151304307,0 190 | 191 | 192 | 193 | 194 | Benguela - DRC border 195 | Name: Angola Telecoms National Backbone 196 | Phase Name: Phase 1 - 2006 - 2008 197 | Cable type: 198 | ISO2:ao 199 | Source URL: http://www.flickr.com/photos/ssong/7261268726/ 200 | Notes: Parts of this are highly speculative. 201 | Contributor: Steve Song 202 | Contributor Email: stephen.song@gmail.com 203 | Source: 204 | Last update: 2012 205 | Go live date: 206 | Capacity: 207 | Access Model: 208 | Owner: Angola Telecoms 209 | Operator: Angola Telecoms 210 | Live: true 211 | Sharing: 212 | Validated by Operator: False 213 | Accuracy Confidence: 2 214 | #msn_ylw-pushpin1 215 | 216 | 1 217 | 218 | 13.40648112985181,-12.57559392124584,0 13.35510433982205,-12.62025398846725,0 13.35871406666011,-12.76495713524903,0 13.38300624414485,-12.8286639808847,0 13.55585788774012,-12.93470423095385,0 13.68464304298069,-13.00197483028201,0 13.756229585942,-13.03104871261722,0 13.75177425473403,-13.02976838905455,0 13.80359053803444,-12.9993541496381,0 13.90554964224603,-13.01446967966887,0 14.01490227683798,-13.02930854899504,0 14.16552332843203,-13.04268817723534,0 14.28026750721424,-13.03722567627996,0 14.39015299760054,-12.97882273644353,0 14.45321068762002,-12.96651615431348,0 14.55992695548201,-13.00717993582893,0 14.65568035655124,-13.02672374501491,0 14.69743995210583,-12.98442780652441,0 14.75968590915862,-12.96059496171884,0 14.8408831332604,-12.86012405625217,0 14.91907262784843,-12.83134748262559,0 15.04820441447965,-12.86073333982304,0 15.15063732748544,-12.88110188000506,0 15.26230770651506,-12.90683239840384,0 15.35022200347758,-12.92488976457655,0 15.45373703806197,-12.85473247091426,0 15.55005772141426,-12.85371642426213,0 15.73817546492281,-12.76196084685226,0 15.84672683856678,-12.78619526084778,0 15.936450223258,-12.74950256828327,0 15.99244368664699,-12.71561025009873,0 16.04101348095734,-12.64755924162142,0 16.10889196150412,-12.61310484960638,0 16.20897953804227,-12.56860050993621,0 16.32892191980786,-12.56339785507153,0 16.49664855462019,-12.57023596360346,0 16.52634302609949,-12.57750968545436,0 16.59710068403678,-12.55286306900899,0 16.71218354797617,-12.53479385703166,0 16.88477291778041,-12.45958515033093,0 16.9368832987599,-12.41274427408421,0 16.94335226706641,-12.363697669983,0 16.93878268071703,-12.32949518716688,0 17.02868426272225,-12.30375394181255,0 17.19285762493054,-12.24559957250252,0 17.25808022545498,-12.17086835899852,0 17.37750856829863,-12.06777445478979,0 17.50574475913323,-12.02436741507332,0 17.65225475881504,-11.99287971681306,0 17.77593921857771,-11.9710135393607,0 18.01550513031217,-11.99204992715521,0 18.0483965482099,-12.02045121589831,0 18.09639553759066,-12.12285461606615,0 18.20769531804978,-12.14740077103928,0 18.3302767566475,-12.16411694839773,0 18.44010113628191,-12.13408466704898,0 18.54856801865993,-12.15998642897789,0 18.5500311881106,-12.15990978269446,0 18.62799776184308,-12.21748470493061,0 18.65228077984185,-12.23198125980927,0 18.72081512446821,-12.19536267239087,0 18.80984968699197,-12.12887860889769,0 18.9193461331925,-12.11144289022764,0 19.04958531271649,-12.06400041798082,0 19.1410208657597,-12.00415695159225,0 19.17286294828748,-11.9561282810658,0 19.25199253281442,-11.95611818239747,0 19.34950274325521,-11.91778593906152,0 19.46489423361162,-11.93433890478713,0 19.61563042366562,-11.94886509430172,0 19.73813585899907,-11.88207451025259,0 19.90557049114884,-11.79090939897798,0 20.02537492088384,-11.71238444838684,0 20.20560577491997,-11.68760650892707,0 20.33695276180545,-11.67811195863911,0 20.61938208103741,-11.60414303564009,0 20.80148924091629,-11.54028043014795,0 20.86334033769283,-11.52081104373757,0 20.8691884330188,-11.52046213039909,0 21.0315796314485,-11.48632276963106,0 21.10757711189937,-11.40845221850338,0 21.22678356670571,-11.3350085753482,0 21.30121416959955,-11.34335249207802,0 21.41282206528274,-11.3515266210825,0 21.44993675043954,-11.31479207532321,0 21.55752214490824,-11.28228183205627,0 21.65686393143294,-11.21295984780627,0 21.75784180681147,-11.12339824308288,0 21.81563218940197,-11.0666374013372,0 21.94937790166749,-11.02649751483176,0 22.10783767586964,-10.89497378684816,0 22.10574258320421,-10.80265170712969,0 22.18644905952396,-10.72511172520893,0 22.32360644894774,-10.69613975450191,0 219 | 220 | 221 | 222 | 223 | Malanje - Kuito 224 | Name: Angola Telecoms National Backbone 225 | Phase Name: Phase 1 - 2006 - 2008 226 | Cable type: 227 | ISO2:ao 228 | Source URL: http://www.flickr.com/photos/ssong/7261268726/ 229 | Notes: Parts of this are highly speculative. 230 | Contributor: Steve Song 231 | Contributor Email: stephen.song@gmail.com 232 | Source: 233 | Last update: 2012 234 | Go live date: 235 | Capacity: 236 | Access Model: 237 | Owner: Angola Telecoms 238 | Operator: Angola Telecoms 239 | Live: true 240 | Sharing: 241 | Validated by Operator: False 242 | Accuracy Confidence: 2 243 | #msn_ylw-pushpin1 244 | 245 | 1 246 | 247 | 16.34221664902693,-9.541511585570657,0 16.35602743368071,-9.550458117653941,0 16.38389446882163,-9.563777370810897,0 16.40010585610342,-9.669272910419819,0 16.42352955902542,-9.765747148552155,0 16.42882358596952,-9.785587517187217,0 16.33211363670343,-9.834434396021022,0 16.26956643122006,-9.898950297579619,0 16.21336643380791,-9.976121094754383,0 16.14377397746412,-10.13047077858464,0 16.11662740487778,-10.26816940843059,0 16.10610927829364,-10.41935212971536,0 16.01379115374176,-10.50807316311274,0 16.06612541287506,-10.63060706622107,0 16.11578082814759,-10.69441165697925,0 16.08299430080183,-10.84235684300954,0 16.1461301512422,-11.00795595517278,0 16.17339632365925,-11.12170441471809,0 16.18044698947189,-11.1788220011897,0 16.16047167837438,-11.22132307450237,0 16.18331087652411,-11.27197556795486,0 16.21105922682243,-11.33387212114854,0 16.2679515040479,-11.39302078628367,0 16.31123476775797,-11.41116577533734,0 16.351609472064,-11.46099296700202,0 16.41442966591667,-11.48972426123874,0 16.44220649429981,-11.52003482105971,0 16.49809800687761,-11.49455080646364,0 16.62933515857219,-11.48284908632497,0 16.70285434005923,-11.48810426648765,0 16.67466057924712,-11.60313101849958,0 16.68744127964725,-11.71248303574987,0 16.67506856445655,-11.82376469220919,0 16.69140147657336,-11.92066948885675,0 16.7209519049527,-12.01690830798709,0 16.70825390279246,-12.11938338491681,0 16.74871868241356,-12.16630901996392,0 16.76554151037144,-12.21002603709422,0 16.80271255411461,-12.24851108050223,0 16.8287497605938,-12.31261087936333,0 16.87802771282245,-12.32899244881295,0 16.93839496781725,-12.33191092527913,0 248 | 249 | 250 | 251 | 252 | Luena - Saurino 253 | Name: Angola Telecoms National Backbone 254 | Phase Name: Phase 1 - 2006 - 2008 255 | Cable type: 256 | ISO2:ao 257 | Source URL: http://www.flickr.com/photos/ssong/7261268726/ 258 | Notes: Parts of this are highly speculative. 259 | Contributor: Steve Song 260 | Contributor Email: stephen.song@gmail.com 261 | Source: 262 | Last update: 2012 263 | Go live date: 264 | Capacity: 265 | Access Model: 266 | Owner: Angola Telecoms 267 | Operator: Angola Telecoms 268 | Live: true 269 | Sharing: 270 | Validated by Operator: False 271 | Accuracy Confidence: 2 272 | #msn_ylw-pushpin1 273 | 274 | 1 275 | 276 | 19.9136204389133,-11.78579643122678,0 19.90376860154363,-11.67582048074891,0 19.8998273425189,-11.66505596641367,0 19.930111412631,-11.60836957467583,0 20.16604830539644,-11.43276907858213,0 20.19112823740202,-11.22486759429869,0 20.22638808033285,-11.17632279288983,0 20.19421271979122,-10.97247867374479,0 20.21930236907995,-10.83103491726841,0 20.24980386833238,-10.77314780795656,0 20.17660936625435,-10.5519686390251,0 20.15772036461642,-10.44459936964395,0 20.1772338595579,-10.35635772692095,0 20.24044608591014,-10.2896805654823,0 20.30391803656293,-10.0067924337831,0 20.36280067333631,-9.947795048510995,0 20.40796235054658,-9.743422938453675,0 20.40038970461842,-9.666332242467153,0 277 | 278 | 279 | 280 | 281 | Namibe - Caajla 282 | Name: Angola Telecoms National Backbone 283 | Phase Name: Phase 1 - 2006 - 2008 284 | Cable type: 285 | ISO2:ao 286 | Source URL: http://www.flickr.com/photos/ssong/7261268726/ 287 | Notes: Parts of this are highly speculative. 288 | Contributor: Steve Song 289 | Contributor Email: stephen.song@gmail.com 290 | Source: 291 | Last update: 2012 292 | Go live date: 293 | Capacity: 294 | Access Model: 295 | Owner: Angola Telecoms 296 | Operator: Angola Telecoms 297 | Live: true 298 | Sharing: 299 | Validated by Operator: False 300 | Accuracy Confidence: 2 301 | #msn_ylw-pushpin1 302 | 303 | 1 304 | 305 | 12.16568801779474,-15.18437892809546,0 12.22717732431647,-15.12150635522345,0 12.36093229373923,-15.02759564811127,0 12.4722022473639,-15.01629761979111,0 12.71042255952753,-15.02350750116887,0 12.91231996256551,-15.04276405232506,0 13.03384646272139,-15.04517505042641,0 13.23067177803645,-15.054543839275,0 13.31192694913466,-15.08869731510467,0 13.47567905394177,-14.95082730058426,0 13.49636369662516,-14.9210549320545,0 13.58388429634042,-14.86714992531043,0 13.73036570116724,-14.78638936156874,0 13.72716899792519,-14.78971902765733,0 13.84462746952055,-14.77415647568534,0 13.90558163213357,-14.67219123314132,0 13.97970001068621,-14.60821763403363,0 14.04969488076299,-14.60872371111585,0 14.12162344035843,-14.48340113843735,0 14.32957710563761,-14.26797616283697,0 14.53821215020962,-14.10058366086846,0 14.62796015928861,-13.94234995743708,0 14.69605635136282,-13.77812654207832,0 14.92048486059133,-13.77148919665889,0 15.05324307226164,-13.75086037022859,0 15.0858287491946,-13.68613301035482,0 15.12011334732754,-13.67212922034678,0 15.1594932882315,-13.5531127490899,0 15.21930459315235,-13.48629844070297,0 15.28824480885273,-13.43997815603238,0 15.33655657636732,-13.4491462213696,0 15.40208244879137,-13.40134015877328,0 15.50382509175722,-13.38727224827606,0 15.56250253591257,-13.37023806911382,0 15.64978741468006,-13.22172464121782,0 15.64975101213621,-13.14936417869518,0 15.64958167869727,-13.07375421230213,0 15.63206679211218,-12.97955098961116,0 15.56361631658754,-12.85368444790183,0 306 | 307 | 308 | 309 | 310 | Lubango - Ondjiva 311 | Name: Angola Telecoms National Backbone 312 | Phase Name: Phase 1 - 2006 - 2008 313 | Cable type: 314 | ISO2:ao 315 | Source URL: http://www.flickr.com/photos/ssong/7261268726/ 316 | Notes: Parts of this are highly speculative. 317 | Contributor: Steve Song 318 | Contributor Email: stephen.song@gmail.com 319 | Source: 320 | Last update: 2012 321 | Go live date: 322 | Capacity: 323 | Access Model: 324 | Owner: Angola Telecoms 325 | Operator: Angola Telecoms 326 | Live: true 327 | Sharing: 328 | Validated by Operator: False 329 | Accuracy Confidence: 2 330 | #msn_ylw-pushpin1 331 | 332 | 1 333 | 334 | 13.50155847668406,-14.91675510421216,0 13.55902730856073,-14.93215844070164,0 13.60081578640673,-15.02884493704055,0 13.69867662558293,-15.1270887921002,0 13.68992678567222,-15.19301502345725,0 13.83159414620996,-15.30266054360373,0 14.04923656818841,-15.43744897294226,0 14.04321884298108,-15.54856685031218,0 14.07066868775761,-15.73853658567313,0 14.14540076082901,-15.93824281213464,0 14.25527502705443,-16.18468983909619,0 14.3062283285334,-16.28338387299235,0 14.45041564204602,-16.35659297154719,0 14.62132652460906,-16.42021838476202,0 14.74988610382701,-16.4734988248407,0 14.84381898302693,-16.53674103421689,0 14.90044411465732,-16.5810381223829,0 14.91297813924527,-16.69403827797977,0 14.98367083179311,-16.74646995048569,0 15.1053468889838,-16.74875172072211,0 15.27421506168068,-16.71990751466207,0 15.35521912624739,-16.72961186463537,0 15.47086654859039,-16.85875529969887,0 15.64151401150935,-17.01066300499757,0 15.72695746386914,-17.06705570809697,0 335 | 336 | 337 | 338 | 339 | Huambo - Dondo 340 | Name: Angola Telecoms National Backbone 341 | Phase Name: Phase 2 - 2007 - 2009 342 | Cable type: 343 | ISO2:ao 344 | Source URL: http://www.flickr.com/photos/ssong/7261268726/ 345 | Notes: Parts of this are highly speculative. 346 | Contributor: Steve Song 347 | Contributor Email: stephen.song@gmail.com 348 | Source: 349 | Last update: 2012 350 | Go live date: 351 | Capacity: 352 | Access Model: 353 | Owner: Angola Telecoms 354 | Operator: Angola Telecoms 355 | Live: true 356 | Sharing: 357 | Validated by Operator: False 358 | Accuracy Confidence: 2 359 | #msn_ylw-pushpin 360 | 361 | 1 362 | 363 | 15.73438763741322,-12.75414975198951,0 15.77924642393056,-12.61531012104503,0 15.68206059926511,-12.43631478669354,0 15.6559191921961,-12.42169285853479,0 15.51806962400187,-12.15528050946285,0 15.36176949939466,-11.96543326196578,0 15.33251178393674,-11.65894172204765,0 15.13931820721124,-11.38073474581074,0 15.04275246099066,-11.18998061542245,0 15.04276308469796,-11.18265083483701,0 15.06539708363275,-10.96257078504386,0 15.05058541538149,-10.86321445203878,0 14.53530480486864,-10.87435293459526,0 14.1101478262448,-10.9787436278418,0 13.85068244274191,-11.21329899509172,0 14.11028256756423,-10.97871904868293,0 14.534600618259,-10.87464963681406,0 15.04998600607644,-10.86290690441315,0 15.00515005525475,-10.76957222325377,0 14.96299354834262,-10.63332095520486,0 14.89887262714911,-10.48402892115576,0 14.82875989576857,-10.35937179425357,0 14.81225380540979,-10.24687802356638,0 14.81311100338445,-10.19865235806857,0 14.71544075310287,-10.14656741036185,0 14.63670188774387,-10.09480562284092,0 14.59188929466759,-10.03606046154013,0 14.57083275499336,-9.95247912910942,0 14.57810213561364,-9.931957287127545,0 14.60553122617394,-9.92630907095724,0 14.60310112000017,-9.883891834597542,0 14.53682288648332,-9.810241404973898,0 14.49174114973574,-9.711018454641584,0 14.44424518030474,-9.69535734405938,0 364 | 365 | 366 | 367 | 368 | Luanda - Uige 369 | Name: Angola Telecoms National Backbone 370 | Phase Name: Phase 2 - 2007 - 2009 371 | Cable type: 372 | ISO2:ao 373 | Source URL: http://www.flickr.com/photos/ssong/7261268726/ 374 | Notes: Parts of this are highly speculative. 375 | Contributor: Steve Song 376 | Contributor Email: stephen.song@gmail.com 377 | Source: 378 | Last update: 2012 379 | Go live date: 380 | Capacity: 381 | Access Model: 382 | Owner: Angola Telecoms 383 | Operator: Angola Telecoms 384 | Live: true 385 | Sharing: 386 | Validated by Operator: False 387 | Accuracy Confidence: 2 388 | #msn_ylw-pushpin 389 | 390 | 1 391 | 392 | 13.24896439989265,-8.839717433579901,0 13.38867102993819,-8.765738830684818,0 13.44902447854548,-8.710021081764534,0 13.54590010595539,-8.631591292447265,0 13.65542356706809,-8.590681158635036,0 13.66125505403629,-8.589285156520662,0 13.73567227594454,-8.558184435778109,0 13.9041655897557,-8.580883865005672,0 14.00857541135262,-8.618915297937763,0 14.10020937806867,-8.612288638909941,0 14.18368497941899,-8.516458020798561,0 14.25573528083803,-8.393148457336006,0 14.31320451789979,-8.285447178657924,0 14.40281969880541,-8.103950978983493,0 14.52544839676759,-7.969471155502025,0 14.67712598562546,-7.836442236610623,0 14.75294306920245,-7.78637689941315,0 14.79805741305051,-7.777897997068378,0 14.90843439359189,-7.819999924755706,0 15.01369455479851,-7.759777546494329,0 15.03011104202035,-7.694934425419118,0 15.05382462686789,-7.635818250517047,0 15.06709935738626,-7.60475253583935,0 393 | 394 | 395 | 396 | 397 | Quilumbo - Xa-Muteba 398 | Name: Angola Telecoms National Backbone 399 | Phase Name: Phase 2 - 2007 - 2009 400 | Cable type: 401 | ISO2:ao 402 | Source URL: http://www.flickr.com/photos/ssong/7261268726/ 403 | Notes: Parts of this are highly speculative. 404 | Contributor: Steve Song 405 | Contributor Email: stephen.song@gmail.com 406 | Source: 407 | Last update: 2012 408 | Go live date: 409 | Capacity: 410 | Access Model: 411 | Owner: Angola Telecoms 412 | Operator: Angola Telecoms 413 | Live: true 414 | Sharing: 415 | Validated by Operator: False 416 | Accuracy Confidence: 2 417 | #msn_ylw-pushpin 418 | 419 | 1 420 | 421 | 15.93561425269671,-7.388432980134775,0 15.99917030359484,-7.429337660920771,0 16.06395061923944,-7.461567644957038,0 16.1312066992013,-7.506160096585845,0 16.2414891722619,-7.565255525065585,0 16.33483703077494,-7.622564116407492,0 16.41908290368952,-7.679819434411659,0 16.53227608149175,-7.744608892506699,0 16.6022652183899,-7.784555529854077,0 16.71106436132688,-7.869567637054637,0 16.81903178899937,-7.951601235400763,0 16.91347988740262,-8.019394790044178,0 16.96616665368794,-8.075200697695129,0 17.02262530879226,-8.149215705740195,0 17.0654920176488,-8.213613801145442,0 17.0508162506918,-8.274723049418176,0 17.03143661989056,-8.360057381910233,0 17.19553296736426,-8.364129516626859,0 17.21921899751898,-8.363388443369088,0 17.28160367311309,-8.320337795169543,0 17.36698231542971,-8.266561667000119,0 17.48439788394831,-8.267789636699016,0 17.59660355762677,-8.352430979944439,0 17.79390433380906,-8.4579377762277,0 17.84030920972922,-8.53664826342901,0 17.89764317235285,-8.678776176001834,0 17.96817524586107,-8.746046568413762,0 17.96886226151269,-8.747393448184125,0 18.00380759401472,-8.78976926853619,0 18.02940907352783,-8.891501565547117,0 18.02941615328173,-8.893524498334763,0 18.02423528947253,-8.973801400111748,0 18.02424466378815,-8.976499877922501,0 18.05182517476108,-9.050643041966985,0 18.0628855676789,-9.09114282921575,0 18.04125075439693,-9.152578103992679,0 18.03783589356394,-9.152589828016376,0 17.98131776450359,-9.204032121580727,0 17.98064565528603,-9.207406608296422,0 17.97929032746204,-9.21078345221501,0 17.93715921568953,-9.287839915775407,0 17.93716118219223,-9.288514834097851,0 17.90596602837715,-9.358081251576785,0 17.89311053679085,-9.401281536181838,0 17.90622797982384,-9.442789595222964,0 422 | 423 | 424 | 425 | 426 | Cassango - Dundo 427 | Name: Angola Telecoms National Backbone 428 | Phase Name: Phase 2 - 2007 - 2009 429 | Cable type: 430 | ISO2:ao 431 | Source URL: http://www.flickr.com/photos/ssong/7261268726/ 432 | Notes: Parts of this are highly speculative. 433 | Contributor: Steve Song 434 | Contributor Email: stephen.song@gmail.com 435 | Source: 436 | Last update: 2012 437 | Go live date: 438 | Capacity: 439 | Access Model: 440 | Owner: Angola Telecoms 441 | Operator: Angola Telecoms 442 | Live: true 443 | Sharing: 444 | Validated by Operator: False 445 | Accuracy Confidence: 2 446 | #msn_ylw-pushpin 447 | 448 | 1 449 | 450 | 17.85338825503398,-8.570580993941308,0 17.99797402438292,-8.556526241584752,0 18.09552932711373,-8.548558374081342,0 18.21931734361375,-8.525512372731978,0 18.34521118152616,-8.507453539322402,0 18.42027396541432,-8.496176429058712,0 18.53103808927579,-8.476091359706125,0 18.60977424599322,-8.462119534176891,0 18.70930724126199,-8.405432864039669,0 18.75074641881846,-8.388257576578873,0 18.82939859926643,-8.366604424615204,0 18.91341775616252,-8.33690945400355,0 18.94181580175245,-8.283225714347697,0 18.9499708669243,-8.245371121996854,0 18.95513672714539,-8.212513331183787,0 18.97596040438301,-8.165303194842606,0 18.99306578514905,-8.113058385992126,0 19.03236109871737,-8.075351283142679,0 19.08614910939439,-8.049821071291341,0 19.18236404205363,-8.01202797287932,0 19.19842080953084,-8.009272521461595,0 19.24902646247254,-8.012924723998145,0 19.32583459958932,-8.017394576112501,0 19.38696523415381,-8.020620925640833,0 19.39507480851686,-7.983093484973583,0 19.41754243516839,-7.938823741497012,0 19.42096295557614,-7.89997873540218,0 19.42656657473691,-7.814959797965793,0 19.44156345214216,-7.780886364946977,0 19.45249582977339,-7.745184758383262,0 19.44658629146943,-7.717443153904374,0 19.47200349673651,-7.709373945168764,0 19.50171678456902,-7.70215462439703,0 19.5340909682034,-7.663122754044206,0 19.56410213399227,-7.587983403686005,0 19.60578423224442,-7.514154039101936,0 19.66340422947886,-7.422814580444744,0 19.71969933670135,-7.34002333808645,0 19.76888520063767,-7.305474865756766,0 19.80732026128297,-7.286615996530933,0 19.87397352626891,-7.261522576964561,0 19.9257863119146,-7.249745907205243,0 19.95940636044369,-7.246737701840915,0 20.02380068522985,-7.261890233229646,0 20.05447939598087,-7.288246222794014,0 20.08053006749294,-7.299391032636597,0 20.10909423751551,-7.299007813034775,0 20.1301375017391,-7.300414034865931,0 20.16187678580101,-7.296119936441749,0 20.19860327063126,-7.318656095837338,0 20.1985156595769,-7.347192809208766,0 20.22044779899451,-7.351928784823601,0 20.22101198301054,-7.35192394764424,0 20.24272233651171,-7.356440348358424,0 20.30184193978418,-7.385963559817552,0 20.3668196939327,-7.39634885323256,0 20.39784795428892,-7.41923715050641,0 20.42283187733717,-7.437914098072018,0 20.46632822638794,-7.429118675637872,0 20.51185040200285,-7.431560078976419,0 20.53389570297303,-7.432403725657731,0 20.57890327675764,-7.426064476984697,0 20.6015791785411,-7.442446870291043,0 20.61982530931485,-7.444076840428793,0 20.64173865382218,-7.432325763715386,0 20.65595340157923,-7.429707506177932,0 20.67170972083023,-7.430415842830236,0 20.68998284514891,-7.439965700997016,0 20.71916338130099,-7.432907202517251,0 20.79609103158854,-7.417264828148732,0 20.81155618979838,-7.4164476432065,0 451 | 452 | 453 | 454 | 455 | Kuito - Namibia border 456 | Name: Angola Telecoms National Backbone 457 | Phase Name: Phase 2 - 2007 - 2009 458 | Cable type: 459 | ISO2:ao 460 | Source URL: http://www.flickr.com/photos/ssong/7261268726/ 461 | Notes: Parts of this are highly speculative. 462 | Contributor: Steve Song 463 | Contributor Email: stephen.song@gmail.com 464 | Source: 465 | Last update: 2012 466 | Go live date: 467 | Capacity: 468 | Access Model: 469 | Owner: Angola Telecoms 470 | Operator: Angola Telecoms 471 | Live: true 472 | Sharing: 473 | Validated by Operator: False 474 | Accuracy Confidence: 2 475 | #msn_ylw-pushpin 476 | 477 | 1 478 | 479 | 16.73724805507553,-12.52429711031103,0 16.76901083409776,-12.58205047324776,0 16.76048899255705,-12.69370774910655,0 16.75460110159203,-12.78696396927088,0 16.76988362404195,-12.86368208596834,0 16.7450192819476,-12.99582119697204,0 16.75663966360953,-13.15218898673131,0 16.74797195970964,-13.25423114649109,0 16.73349537250044,-13.31979216447465,0 16.72663899241719,-13.43694765589651,0 16.73909445917358,-13.49978930809097,0 16.77857964629986,-13.55043113088162,0 16.84323008892353,-13.59579866806702,0 16.95881342454898,-13.61817579315844,0 17.02242721703435,-13.67893215193419,0 17.11303290755925,-13.72561527630448,0 17.21060367025293,-13.82382309215439,0 17.30064875730202,-13.90998857471145,0 17.35006619365689,-13.94092143150777,0 17.3807535792576,-13.9539193997409,0 17.42437302322458,-14.03525778185597,0 17.49494867293048,-14.075285614029,0 17.5862236966843,-14.20791121428924,0 17.62813709222354,-14.28269517309662,0 17.64607719400163,-14.3885333399899,0 17.65626211584117,-14.47856018778442,0 17.65930434107626,-14.56277581423237,0 17.68286646772394,-14.64418209536874,0 17.66354883558525,-14.66768040050649,0 17.66183451926162,-14.72481972026474,0 17.68923455783916,-14.77530103036044,0 17.66362457327913,-14.90094257651801,0 17.67586381828513,-15.05312199875723,0 17.69573921885673,-15.16639440046773,0 17.67670455597472,-15.26295001954665,0 17.64397895494006,-15.33800349842995,0 17.65515249152183,-15.42795752914501,0 17.58739516959465,-15.53305395230773,0 17.55645388265483,-15.60251893445394,0 17.49051444293443,-15.67298367207417,0 17.46142556019079,-15.70209244632477,0 17.44894717583582,-15.75547260840062,0 17.40149267407254,-15.82297937461508,0 17.39383226006924,-15.86324132475366,0 17.32680035188551,-15.89990498548231,0 17.29479963573614,-15.94491504363065,0 17.15591384709303,-16.02321637750003,0 16.98818726329654,-16.12574504325746,0 16.87905728209867,-16.17265340254452,0 16.80013155338067,-16.28309656859555,0 16.65176723322892,-16.38355559281236,0 16.45423705214442,-16.48171181146463,0 16.44642728407429,-16.48169929877935,0 16.36635557367541,-16.49839401805687,0 16.36049118321234,-16.50212441103366,0 16.20995557832817,-16.58221170272914,0 16.20605000626555,-16.58220057467732,0 16.04372518781518,-16.62006139380612,0 16.0407796539354,-16.62285987154399,0 15.93355856957198,-16.72927731583174,0 15.85285571960548,-16.85042994574002,0 15.78172335317287,-16.98670177862225,0 15.72839899372531,-17.06788205263443,0 15.83701017676976,-17.27132915324768,0 15.89032476621554,-17.39043816755714,0 480 | 481 | 482 | 483 | 484 | Ondjiva - Caprivi 485 | Name: Angola Telecoms National Backbone 486 | Phase Name: Phase 2 - 2007 - 2009 487 | Cable type: 488 | ISO2:ao 489 | Source URL: http://www.flickr.com/photos/ssong/7261268726/ 490 | Notes: Parts of this are highly speculative. 491 | Contributor: Steve Song 492 | Contributor Email: stephen.song@gmail.com 493 | Source: 494 | Last update: 2012 495 | Go live date: 496 | Capacity: 497 | Access Model: 498 | Owner: Angola Telecoms 499 | Operator: Angola Telecoms 500 | Live: true 501 | Sharing: 502 | Validated by Operator: False 503 | Accuracy Confidence: 2 504 | #msn_ylw-pushpin 505 | 506 | 1 507 | 508 | 15.72934363536342,-17.06755374116159,0 15.84125662688604,-17.06293569255512,0 16.00322356225906,-17.08222335729352,0 16.2349069723333,-17.09863676372398,0 16.41065405685978,-17.12643592014916,0 16.57807707863265,-17.14001430885559,0 16.61647861305679,-16.98405821540376,0 16.74943341878951,-16.95386712934801,0 16.89218865425676,-16.90817772799132,0 17.06058625679479,-16.86396178342989,0 17.18782136290069,-16.82311494420912,0 17.37937059648645,-16.77184303054341,0 17.4955391908988,-16.74132027729434,0 17.6597009646505,-16.68637934960005,0 17.75746677784672,-16.65272091196305,0 17.88918063269146,-16.67189733947991,0 18.05181205052184,-16.86335709348791,0 18.15905307479671,-16.99068358350966,0 18.27164529495807,-17.17267179058627,0 18.375866910476,-17.32389861141606,0 18.42593046564643,-17.37374230673525,0 18.51619585855766,-17.47719610141548,0 18.65992385484091,-17.55075534718656,0 18.66987037086618,-17.55161251841765,0 18.84444368710763,-17.59640372237553,0 19.03394363645326,-17.64328221550951,0 19.31603989266491,-17.675057304429,0 19.66153116191345,-17.72726480917404,0 19.90237431589835,-17.73887239780144,0 20.11066592432914,-17.74985578182282,0 20.45542453001421,-17.77507873300137,0 20.69753913764095,-17.78202133483363,0 20.86223619485346,-17.78081260022923,0 21.12191424255134,-17.79977614673764,0 21.61877042719628,-17.83159502126235,0 22.07112461263423,-17.89610319484059,0 509 | 510 | 511 | 512 | 513 | Saurino - Luau 514 | Name: Angola Telecoms National Backbone 515 | Phase Name: Phase 2 - 2007 - 2009 516 | Cable type: 517 | ISO2:ao 518 | Source URL: http://www.flickr.com/photos/ssong/7261268726/ 519 | Notes: Parts of this are highly speculative. 520 | Contributor: Steve Song 521 | Contributor Email: stephen.song@gmail.com 522 | Source: 523 | Last update: 2012 524 | Go live date: 525 | Capacity: 526 | Access Model: 527 | Owner: Angola Telecoms 528 | Operator: Angola Telecoms 529 | Live: true 530 | Sharing: 531 | Validated by Operator: False 532 | Accuracy Confidence: 2 533 | #msn_ylw-pushpin 534 | 535 | 1 536 | 537 | 20.40491335799282,-9.660679623486404,0 20.60833381985349,-9.664419795054886,0 20.67318410329364,-9.70953179403617,0 20.77930865915977,-9.704757549056023,0 20.8679526217809,-9.709652131333279,0 20.94627693651357,-9.726396391356538,0 21.02931497541434,-9.789554627954875,0 21.05543326208759,-9.842449506936919,0 21.21079928801747,-9.904989671665376,0 21.23058992469675,-9.983688357504882,0 21.21598302054596,-10.05974631339842,0 21.20152249196284,-10.14048468888776,0 21.16681616015858,-10.21707125012434,0 21.17659580239427,-10.36040212540071,0 21.2018974666247,-10.44657044043094,0 21.25732203167803,-10.47308566139685,0 21.27557838076085,-10.5274085288682,0 21.31949030015821,-10.59352282407762,0 21.37665003421639,-10.59936152424381,0 21.47976552492741,-10.58025801378239,0 21.60457318668108,-10.57476026144091,0 21.72202312355957,-10.52936565597726,0 21.86118966651784,-10.54531193757045,0 21.95389655512035,-10.5862433812968,0 21.9571123890656,-10.58822496229531,0 21.96867304221649,-10.62409529519631,0 22.04060558725214,-10.6687368679423,0 22.12445483470916,-10.71829920487012,0 22.18668824476518,-10.72516462574216,0 538 | 539 | 540 | 541 | 542 | Project ADONES 543 | Name: Angola Telecoms National Backbone 544 | Phase Name: ADONES Festoon Cable 545 | Cable type: 546 | ISO2:ao 547 | Source URL: http://www.flickr.com/photos/ssong/7261268726/ 548 | Notes: Parts of this are highly speculative. 549 | Contributor: Steve Song 550 | Contributor Email: stephen.song@gmail.com 551 | Source: 552 | Last update: 2012 553 | Go live date: 554 | Capacity: 555 | Access Model: 556 | Owner: Angola Telecoms 557 | Operator: Angola Telecoms 558 | Live: true 559 | Sharing: 560 | Validated by Operator: False 561 | Accuracy Confidence: 2 562 | #msn_ylw-pushpin0 563 | 564 | 1 565 | 566 | 12.15837739617372,-15.1847913555235,0 11.84666830193515,-14.96910614104897,0 11.72437281252602,-14.76376662489834,0 11.73739045321863,-14.43576688180729,0 11.89779507162633,-14.20725647224271,0 11.90950013042191,-14.20410193059505,0 12.18266892688629,-14.06476542668079,0 12.4042330842533,-14.04673972817837,0 12.24845015489904,-13.89054529173651,0 12.02152406746128,-13.61323397113054,0 12.03211456590759,-13.49622270847153,0 12.15565249848625,-13.0387613711879,0 12.32639735212615,-12.79035667094747,0 12.71108385465772,-12.58561628684347,0 13.06269010064774,-12.54828119263506,0 13.40853812675265,-12.57323483462535,0 12.99286601395671,-12.36374564435886,0 12.98955340848417,-12.36373688321301,0 12.80994921856249,-12.07753849411734,0 12.85141387601638,-11.63061280086873,0 13.07369354993746,-11.33679860263147,0 13.5430486030767,-11.24289953820782,0 13.84918139069039,-11.21196394541073,0 13.54297666226348,-11.05919571677624,0 13.53141361809133,-11.05690331251996,0 13.20148104023411,-10.91121598466062,0 12.87968271903357,-10.68182990428214,0 12.68508413727332,-10.37099634340426,0 12.58741396493043,-9.891236648593086,0 12.59276259584749,-9.356829895455743,0 12.78169545423951,-9.113044210390973,0 12.98391431208724,-8.957263535674624,0 13.24116388681911,-8.832831867263721,0 12.97055821757788,-8.827751119355712,0 12.60159834886169,-8.673604778788068,0 12.57652908937657,-8.56619836758483,0 12.60869378969585,-8.226156150507803,0 12.82882706260558,-8.061617368911289,0 13.11854073709885,-7.833133672510746,0 12.75180544248773,-7.909594193164533,0 12.42579875461191,-7.885905141013673,0 12.2521663335549,-7.648603486203267,0 12.17121447054198,-7.347312655085045,0 12.10606538684969,-7.043647065282479,0 12.04788728762006,-6.758656400488979,0 12.08992457411005,-6.559194727037988,0 12.25023292618134,-6.296831152813171,0 12.35167180677455,-6.14399789894768,0 12.1010817002912,-6.206202364453146,0 11.92352392646245,-6.15624031928592,0 11.86260125160993,-6.002433381340837,0 11.87748789762477,-5.899018869158982,0 12.02961546043179,-5.708980673790336,0 12.1937180477366,-5.557414239480447,0 567 | 568 | 569 | 570 | 571 | 572 | 573 | -------------------------------------------------------------------------------- /testdata/shapefiles/karnataka_poi.prj: -------------------------------------------------------------------------------- 1 | GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]] -------------------------------------------------------------------------------- /testdata/shapefiles/karnataka_poi.shp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuspollock-okfn/dataconverters/58091c75c4a37e3d8d133795f0c776a5aef1aa1f/testdata/shapefiles/karnataka_poi.shp -------------------------------------------------------------------------------- /testdata/shapefiles/karnataka_poi.shx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuspollock-okfn/dataconverters/58091c75c4a37e3d8d133795f0c776a5aef1aa1f/testdata/shapefiles/karnataka_poi.shx -------------------------------------------------------------------------------- /testdata/tsv/simple.tsv: -------------------------------------------------------------------------------- 1 | date temperature place 2 | 2011-01-01 1 Galway 3 | 2011-01-02 -1 Galway 4 | 2011-01-03 0 Galway 5 | 2011-01-01 6 Berkeley 6 | 2011-01-02 8 Berkeley 7 | 2011-01-03 5 Berkeley 8 | -------------------------------------------------------------------------------- /testdata/xls/simple.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuspollock-okfn/dataconverters/58091c75c4a37e3d8d133795f0c776a5aef1aa1f/testdata/xls/simple.xls -------------------------------------------------------------------------------- /testdata/xls/simple.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuspollock-okfn/dataconverters/58091c75c4a37e3d8d133795f0c776a5aef1aa1f/testdata/xls/simple.xlsx -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuspollock-okfn/dataconverters/58091c75c4a37e3d8d133795f0c776a5aef1aa1f/tests/__init__.py -------------------------------------------------------------------------------- /tests/test_arff.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from nose.tools import assert_equal 3 | import dataconverters.arff as arff 4 | from StringIO import StringIO 5 | 6 | class TestWrite: 7 | 8 | def test_1(self): 9 | metadata = { 10 | 'fields': [ 11 | {'type': 'Integer', 'id': u'temperature'}, 12 | {'type': 'String', 'id': u'place'} 13 | ] 14 | } 15 | records = [ 16 | {'place': u'Cairo', 'temperature': 32}, 17 | {'place': u'Alexandria', 'temperature': 22}, 18 | {'place': u'Aswan', 'temperature': 42}, 19 | ] 20 | 21 | desired_results = """@RELATION testdataset\n 22 | @ATTRIBUTE temperature NUMERIC 23 | @ATTRIBUTE place STRING\n 24 | @DATA\n32,'Cairo' 25 | 22,'Alexandria' 26 | 42,'Aswan' 27 | """ 28 | out = StringIO() 29 | arff.write(out, records, metadata, dataset_name='testdataset') 30 | out.seek(0) 31 | result = out.read() 32 | 33 | assert_equal(result, desired_results) 34 | 35 | -------------------------------------------------------------------------------- /tests/test_commas.py: -------------------------------------------------------------------------------- 1 | import os 2 | import datetime 3 | from nose.tools import assert_equal 4 | import dataconverters.commas as csvconvert 5 | 6 | 7 | class TestParse: 8 | 9 | def setUp(self): 10 | here = os.path.dirname(os.path.abspath(__file__)) 11 | testdata_path = os.path.dirname(here) 12 | self.testdata_path = os.path.join(testdata_path, 'testdata', 'csv') 13 | 14 | def test_1_convert_csv(self): 15 | """Test converting a CSV to JSON""" 16 | csv = open(os.path.join(self.testdata_path, 'simple.csv')) 17 | iterator, metadata = csvconvert.parse(csv) 18 | assert_equal( 19 | [{'id': u'date', 'type': 'DateTime'}, {'id': u'temperature', 20 | 'type': 'Integer'}, {'id': u'place', 'type': 'String'}], 21 | metadata['fields']) 22 | rows = [row for row in iterator] 23 | assert_equal(len(rows), 6) 24 | assert ({u'date': datetime.datetime(2011, 1, 3, 0, 0), 25 | u'place': u'Berkeley', u'temperature': 5} in rows) 26 | 27 | def test_2_convert_csv_strict(self): 28 | """Test converting a CSV to JSON""" 29 | csv = open(os.path.join(self.testdata_path, 'simple.csv')) 30 | iterator, metadata = csvconvert.parse(csv, strict_type_guess=True) 31 | assert_equal( 32 | [{'id': u'date', 'type': 'DateTime'}, {'id': u'temperature', 33 | 'type': 'Integer'}, {'id': u'place', 'type': 'String'}], 34 | metadata['fields']) 35 | rows = [row for row in iterator] 36 | assert_equal(len(rows), 6) 37 | assert ({u'date': datetime.datetime(2011, 1, 3, 0, 0), 38 | u'place': u'Berkeley', u'temperature': 5} in rows) 39 | 40 | def test_3_unicode_csv(self): 41 | """Test converting a CSV with unicode chars to JSON""" 42 | csv = open(os.path.join(self.testdata_path, 'spanish_chars.csv')) 43 | iterator, metadata = csvconvert.parse(csv, guess_types=False) 44 | assert_equal( 45 | [{"id": u"GF_ID"}, {"id": u"FN_ID"}, {"id": u"SF_ID"}, 46 | {"id": u"GF"}, {"id": u"F"}, {"id": u"SF"}, 47 | {"id": u"Gasto total 2011"}, {"id": u"Descripci\u00f3n"}], 48 | metadata['fields']) 49 | content = [row for row in iterator] 50 | assert ({u"Gasto total 2011": u"", u"F": u"", u"Descripci\u00f3n": "", 51 | u"SF_ID": u"", u"GF_ID": u"Fuente: Presupuesto de Egresos de" 52 | u" la Federaci\u00f3n 2011 An\u00e1lisis de las Funciones y " 53 | u"Subfunciones del Gasto Programable por Destino del Gasto " 54 | u"(neto) y Manual de Programaci\u00f3n y Presupuesto 2011 " 55 | u"Anexo 11 Cat\u00e1logo Funcional ", u"GF": "", u"FN_ID": 56 | u"", u"SF": u""} in content) 57 | 58 | def test_4_empty_title_convert_csv(self): 59 | """Test converting a CSV with empty header to JSON""" 60 | csv = open(os.path.join(self.testdata_path, 'simple_empty_title.csv')) 61 | iterator, metadata = csvconvert.parse(csv, guess_types=False) 62 | assert_equal([{"id": u"date"}, {"id": u"column_1"}, {"id": 63 | u"temperature"}, {"id": u"place"}], 64 | metadata['fields']) 65 | content = [row for row in iterator] 66 | assert ({u"date": u"2011-01-03", u"place": u"Berkeley", u"temperature": u"5", u"column_1": u""} in content) 67 | 68 | def test_5_header_type(self): 69 | """Test guessing header type""" 70 | csv = open(os.path.join(self.testdata_path, 'simple.csv')) 71 | iterator, metadata = csvconvert.parse(csv, header_type=1) 72 | assert_equal([{'type': 'DateTime', 'id': u'date'}, {'id': 73 | u'temperature', 'type': 'Integer'}, {'id': u'place', 74 | 'type': 'String'}], metadata['fields']) 75 | rows = [ row for row in iterator ] 76 | assert_equal(len(rows), 6) 77 | assert_equal({u'date': datetime.datetime(2011, 1, 3), u'place': u'Berkeley', u'temperature': 78 | 5}, rows[5]) 79 | 80 | 81 | import json 82 | class TestCSVToJSON: 83 | def setUp(self): 84 | here = os.path.dirname(os.path.abspath(__file__)) 85 | testdata_path = os.path.dirname(here) 86 | self.testdata_path = os.path.join(testdata_path, 'testdata', 'csv') 87 | 88 | def test_1_convert_csv(self): 89 | """Test converting a CSV to JSON""" 90 | csv = open(os.path.join(self.testdata_path, 'simple.csv')) 91 | thejson, metadata = csvconvert.csv_to_json(csv, guess_types=False) 92 | assert_equal( 93 | [{'id': u'date'}, {'id': u'temperature'}, {'id': u'place'}], 94 | metadata['fields']) 95 | data = json.loads(thejson) 96 | assert_equal(len(data['records']), 6) 97 | assert ({u'date': u'2011-01-03', u'place': u'Berkeley', u'temperature': 98 | u'5'} in data['records']) 99 | 100 | 101 | from StringIO import StringIO 102 | class TestWrite: 103 | 104 | def test_1(self): 105 | metadata = { 106 | 'fields': [ 107 | { 'id': 'A' }, 108 | { 'id': 'B' } 109 | ] 110 | } 111 | records = [ {'A': u'\x9f', 'B': 2}, {'A': 2, 'B': 3} ] 112 | out = StringIO() 113 | csvconvert.write(out, records, metadata) 114 | out.seek(0) 115 | result = out.read() 116 | assert_equal(result, '''A,B\r\n\xc2\x9f,2\r\n2,3\r\n''') 117 | 118 | -------------------------------------------------------------------------------- /tests/test_kml.py: -------------------------------------------------------------------------------- 1 | import os 2 | from nose.tools import assert_equal 3 | from dataconverters import kml 4 | 5 | class TestParse: 6 | 7 | def setUp(self): 8 | here = os.path.dirname(os.path.abspath(__file__)) 9 | testdata_path = os.path.dirname(here) 10 | self.testdata_path = os.path.join(testdata_path, 'testdata', 'kml') 11 | 12 | def test_1_convert_kml(self): 13 | kmlfile = open(os.path.join(self.testdata_path, 'AngolaTelecoms.kml')) 14 | output = kml.parse(kmlfile) 15 | assert_equal(u'FeatureCollection', output['type']) 16 | assert_equal(15, len(output['features'])) 17 | assert_equal(u'Feature', output['features'][0]['type']) 18 | assert_equal(u'LineString', output['features'][0]['geometry']['type']) 19 | assert_equal(239, 20 | len(output['features'][0]['geometry']['coordinates'])) 21 | -------------------------------------------------------------------------------- /tests/test_shp.py: -------------------------------------------------------------------------------- 1 | from dataconverters import shp 2 | 3 | class _TestShapefile: 4 | def test_shapefile(self): 5 | path = 'testdata/shapefiles/karnataka_poi.shp' 6 | # stream = open(path) 7 | iterator, metdata = shp.parse(path) 8 | data = [ geom for geom in iterator ] 9 | assert len(data) == 8050, len(data) 10 | 11 | -------------------------------------------------------------------------------- /tests/test_tsv_json.py: -------------------------------------------------------------------------------- 1 | import os 2 | import datetime 3 | from nose.tools import assert_equal 4 | import dataconverters.commas as csvconvert 5 | 6 | 7 | class TestParse: 8 | 9 | def setUp(self): 10 | here = os.path.dirname(os.path.abspath(__file__)) 11 | testdata_path = os.path.dirname(here) 12 | self.testdata_path = os.path.join(testdata_path, 'testdata', 'tsv') 13 | 14 | def test_1_convert_csv(self): 15 | """Test converting a CSV to JSON""" 16 | csv = open(os.path.join(self.testdata_path, 'simple.tsv')) 17 | iterator, metadata = csvconvert.parse(csv, delimiter='\t', guess_types=False) 18 | assert_equal( 19 | [{'id': u'date'}, {'id': u'temperature'}, {'id': u'place'}], 20 | metadata['fields']) 21 | rows = [ row for row in iterator ] 22 | assert_equal(len(rows), 6) 23 | assert ({u'date': u'2011-01-03', u'place': u'Berkeley', u'temperature': 24 | u'5'} in rows) 25 | -------------------------------------------------------------------------------- /tests/test_xls_json.py: -------------------------------------------------------------------------------- 1 | import datetime 2 | import os 3 | from nose.tools import assert_equal 4 | import dataconverters.xls as xls 5 | 6 | 7 | class TestParse: 8 | 9 | def setUp(self): 10 | here = os.path.dirname(os.path.abspath(__file__)) 11 | testdata_path = os.path.dirname(here) 12 | self.testdata_path = os.path.join(testdata_path, 'testdata', 'xls') 13 | 14 | def test_1_convert_xls(self): 15 | """Test converting a XLS to JSON""" 16 | xlsfo = open(os.path.join(self.testdata_path, 'simple.xls')) 17 | iterator, metadata = xls.parse(xlsfo, guess_types=False) 18 | assert_equal([{"id": u"date"}, {"id": u"temperature"}, {"id": 19 | u"place"}], metadata['fields']) 20 | content = [row for row in iterator] 21 | assert ({u'date': datetime.datetime(2011, 1, 1, 0, 0), u'place': u'Galway', 22 | u'temperature': 1.0} in content) 23 | 24 | def test_2_header_type(self): 25 | """Test guessing header type""" 26 | xlsfo = open(os.path.join(self.testdata_path, 'simple.xls')) 27 | iterator, metadata = xls.parse(xlsfo) 28 | assert_equal( 29 | [{'id': u'date', 'type': 'DateTime'}, {'id': u'temperature', 30 | 'type': 'Integer'}, {'id': u'place', 'type': 'String'}], 31 | metadata['fields']) 32 | 33 | def test_3_convert_xlsx(self): 34 | """Test converting a XLSX to JSON""" 35 | xlsfo = open(os.path.join(self.testdata_path, 'simple.xlsx')) 36 | iterator, metadata = xls.parse(xlsfo, excel_type='xlsx') 37 | assert_equal([{'type': 'DateTime', 'id': u'date'}, {'id': 38 | u'temperature', 'type': 'Integer'}, {'id': u'place', 39 | 'type': 'String'}], metadata['fields']) 40 | content = [row for row in iterator] 41 | assert ({u'date': datetime.datetime(2011, 1, 1, 0, 0), u'place': u'Galway', 42 | u'temperature': 1} in content) 43 | --------------------------------------------------------------------------------