code: def main():
      access_key = "access_key123"
      secret_key = "secret_key123"
      print("Starting minio")
      p = start_minio_server(access_key, secret_key)
      time.sleep(1)
  
      # Create a client with the MinIO server playground, its access key
      # and secret key.
      client = Minio(
          "localhost:9000",
          access_key=access_key,
          secret_key=secret_key,
          secure=False,
      )
  
      # Make 'data' bucket if it does not exist
      print("Loading test data to the 'data' bucket")
      found = client.bucket_exists("data")
      if not found:
          client.make_bucket("data")
      else:
          print("Bucket 'data' already exists")
  
      # Put original json object
      movies_json_path = (
          root
          / "vegafusion-runtime"
          / "tests"
          / "util"
          / "vegajs_runtime"
          / "data"
          / "movies.json"
      )
      client.fput_object(
          "data",
          "movies.json",
          movies_json_path,
      )
  
      # load as pandas
      df = pd.read_json(movies_json_path)
      df["Title"] = df.Title.astype(str)
      df["Release Date"] = pd.to_datetime(df["Release Date"])
  
      # Convert to csv
      f = BytesIO()
      df.to_csv(f, index=False, quoting=QUOTE_ALL)
      b = f.getvalue()
      n = len(b)
  
      client.put_object("data", "movies.csv", BytesIO(b), n)
  
      # Convert to arrow
      tbl = pa.Table.from_pandas(df)
      b = arrow_table_to_ipc_bytes(tbl)
      client.put_object("data", "movies.arrow", BytesIO(b), len(b))
  
      # Convert to parquet. For some reason, uploading to minio with client.fput_object
      # (as above for arrow) results in a parquet file with corrupt footer.
      f = BytesIO()
      df.to_parquet(f)
      b = f.getvalue()
      n = len(b)
  
      client.put_object("data", "movies.parquet", BytesIO(b), n)
  
      print("Data loaded")
      print(
          f"""
  Open dashboard at http://127.0.0.1:9000
  username: {access_key}
  password: {secret_key}
  """
      )
      # Block on the server
      p.wait()
  
file_path: vegafusion/automation/start_minio.py
imports: from minio import Minio
  from minio.error import S3Error
  import os
  import subprocess
  import time
  from pathlib import Path
  import shutil
  import pandas
  from csv import QUOTE_ALL
  from io import BytesIO
  import pyarrow
label_desc: Use image node_id 1 for calling a global function with example usage: main() without return types