def concatenate_join_units(join_units, concat_axis, copy):
if concat_axis == <NUM_LIT:0> and len(join_units) > <NUM_LIT:1>:<EOL><INDENT>raise AssertionError("<STR_LIT>")<EOL><DEDENT>empty_dtype, upcasted_na = get_empty_dtype_and_na(join_units)<EOL>to_concat = [ju.get_reindexed_values(empty_dtype=empty_dtype,<EOL>upcasted_na=upcasted_na)<EOL>for ju in join_units]<EOL>if len(to_concat) == <NUM_LIT:1>:<EOL><INDENT>concat_values = to_concat[<NUM_LIT:0>]<EOL>if copy:<EOL><INDENT>if isinstance(concat_values, np.ndarray):<EOL><INDENT>if concat_values.base is not None:<EOL><INDENT>concat_values = concat_values.copy()<EOL><DEDENT><DEDENT>else:<EOL><INDENT>concat_values = concat_values.copy()<EOL><DEDENT><DEDENT><DEDENT>else:<EOL><INDENT>concat_values = _concat._concat_compat(to_concat, axis=concat_axis)<EOL><DEDENT>return concat_values<EOL>
Concatenate values from several join units along selected axis.