fastavro / t

#!/usr/bin/env python

import fastavro
import json
from avro.datafile import DataFileWriter
from avro.io import DatumWriter
import avro.schema


def main(argv=None):
    import sys
    from argparse import ArgumentParser

    argv = argv or sys.argv

    parser = ArgumentParser(description='')
    parser.add_argument('type', choices=['fast', 'avro'], default='fast')
    parser.add_argument('--no-debug', '-nd', action='store_false',
                        dest='debug', default=True)
    parser.add_argument('--both', '-b', action='store_true', default=False)
    args = parser.parse_args(argv[1:])


    reader = fastavro.reader(open('tests/avro-files/weather.avro', 'rb'))
    records = [
        {
            'station': 'station1',
            'time': 7,
            'temp': 38,
        }
    ]

    schema = reader.schema
    schema.pop('doc')

    if args.both or args.type == 'fast':
        with open('w-fast.avro', 'wb') as out:
            if args.debug:
                import pdb; pdb.set_trace()
            fastavro.write(out, schema, records)
    elif args.both or args.type == 'avro':
        schema = avro.schema.parse(json.dumps(schema))
        with open('w-avro.avro', 'wb') as out:
            if args.debug:
                import pdb; pdb.set_trace()
            writer = DataFileWriter(out, DatumWriter(), schema)
            for record in records:
                writer.append(record)
            writer.close()


if __name__ == '__main__':
    main()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.