

@classmethod
def create(cls, mapreduce_state, shard_state):
    'Create new writer for a shard.\n\n    Args:\n      mapreduce_state: an instance of model.MapreduceState describing current\n        job.\n      shard_state: an instance of mode.ShardState describing the shard\n        outputing this file.\n\n    Returns:\n      an output writer instance for this shard.\n    '
    output_sharding = cls._get_output_sharding(mapreduce_state=mapreduce_state)
    shard_number = shard_state.shard_number
    if (output_sharding == cls.OUTPUT_SHARDING_INPUT_SHARDS):
        mapper_spec = mapreduce_state.mapreduce_spec.mapper
        params = _get_params(mapper_spec)
        mime_type = params.get('mime_type', 'application/octet-stream')
        filesystem = cls._get_filesystem(mapper_spec=mapper_spec)
        bucket = params.get(cls.GS_BUCKET_NAME_PARAM)
        acl = params.get(cls.GS_ACL_PARAM)
        retries = shard_state.retries
        request_filename = ((((((mapreduce_state.mapreduce_spec.name + '-') + mapreduce_state.mapreduce_spec.mapreduce_id) + '-output-') + str(shard_number)) + '-retry-') + str(retries))
        if (bucket is not None):
            request_filename = ('%s/%s' % (bucket, request_filename))
        filename = cls._create_file(filesystem, request_filename, mime_type, acl=acl)
        state = cls._State([filename], [request_filename])
        shard_state.writer_state = state.to_json()
    else:
        state = cls._State.from_json(mapreduce_state.writer_state)
        filename = state.filenames[0]
    return cls(filename)

dataset/ETHPy150Open AppScale/appscale/AppServer/google/appengine/ext/mapreduce/output_writers.py FileOutputWriterBase.create/original