code: def upload_assets(changelog, tag):
      # Authentication token
      access_token = os.environ["GITHUB_KEY"]
      # Repository information
      repo_owner = "georgia-tech-db"
      repo_name = "evadb"
  
      # Release information
      tag_name = "v" + tag
      assert "vv" not in tag
      asset_filepaths = [
          f"dist/evadb-{tag}-py3-none-any.whl",
          f"dist/evadb-{tag}.tar.gz",
      ]
  
      # Create a PyGithub instance
      g = Github(access_token)
  
      # Get the repository
      repo = g.get_repo(f"{repo_owner}/{repo_name}")
  
      # Create the release
      release_name = tag_name
      release_message = f"{tag_name}\n\n {changelog}"
  
      # Publish the release
      release = repo.create_git_release(
          tag=tag_name,
          name=release_name,
          message=release_message,
          draft=False,
          prerelease=False,
      )
  
      # Retrieve the release by tag name
      release = repo.get_release(tag_name)
  
      # Upload assets to the release
      for filepath in asset_filepaths:
          asset_name = filepath.split("/")[-1]
          asset_path = Path(f"{EvaDB_DIR}/{filepath}")
          print("path: " + str(asset_path))
          release.upload_asset(str(asset_path), asset_name)
  
      print("Release created and published successfully.")
  
imports: import argparse
  import functools
  import logging
  import os
  import re
  import subprocess
  import sys
  from pathlib import Path
  import asyncio
  from pprint import pprint
  import git
  import datetime
  from datetime import date
  import pytz
  import pkg_resources
  from datetime import datetime
  import linecache
  from semantic_version import Version
  from typing import Dict
  from github import Github
label_desc: Use image node_id 10 for calling a global function with example usage: upload_assets(changelog, tag) without return types