code: def setup_options(make_option):
      make_option(
          "--log-info",
          action="callback",
          type=str,
          callback=_log,
          help="turn on info logging for <LOG> (multiple OK)",
      )
      make_option(
          "--log-debug",
          action="callback",
          type=str,
          callback=_log,
          help="turn on debug logging for <LOG> (multiple OK)",
      )
      make_option(
          "--db",
          action="append",
          type=str,
          dest="db",
          help="Use prefab database uri. Multiple OK, "
          "first one is run by default.",
      )
      make_option(
          "--dbs",
          action="callback",
          zeroarg_callback=_list_dbs,
          help="List available prefab dbs",
      )
      make_option(
          "--dburi",
          action="append",
          type=str,
          dest="dburi",
          help="Database uri.  Multiple OK, "
          "first one is run by default.",
      )
      make_option(
          "--dbdriver",
          action="append",
          type=str,
          dest="dbdriver",
          help="Additional database drivers to include in tests.  "
          "These are linked to the existing database URLs by the "
          "provisioning system.",
      )
      make_option(
          "--dropfirst",
          action="store_true",
          dest="dropfirst",
          help="Drop all tables in the target database first",
      )
      make_option(
          "--disable-asyncio",
          action="store_true",
          help="disable test / fixtures / provisoning running in asyncio",
      )
      make_option(
          "--backend-only",
          action="callback",
          zeroarg_callback=_set_tag_include("backend"),
          help=(
              "Run only tests marked with __backend__ or __sparse_backend__; "
              "this is now equivalent to the pytest -m backend mark expression"
          ),
      )
      make_option(
          "--nomemory",
          action="callback",
          zeroarg_callback=_set_tag_exclude("memory_intensive"),
          help="Don't run memory profiling tests; "
          "this is now equivalent to the pytest -m 'not memory_intensive' "
          "mark expression",
      )
      make_option(
          "--notimingintensive",
          action="callback",
          zeroarg_callback=_set_tag_exclude("timing_intensive"),
          help="Don't run timing intensive tests; "
          "this is now equivalent to the pytest -m 'not timing_intensive' "
          "mark expression",
      )
      make_option(
          "--nomypy",
          action="callback",
          zeroarg_callback=_set_tag_exclude("mypy"),
          help="Don't run mypy typing tests; "
          "this is now equivalent to the pytest -m 'not mypy' mark expression",
      )
      make_option(
          "--profile-sort",
          type=str,
          default="cumulative",
          dest="profilesort",
          help="Type of sort for profiling standard output",
      )
      make_option(
          "--profile-dump",
          type=str,
          dest="profiledump",
          help="Filename where a single profile run will be dumped",
      )
      make_option(
          "--low-connections",
          action="store_true",
          dest="low_connections",
          help="Use a low number of distinct connections - "
          "i.e. for Oracle TNS",
      )
      make_option(
          "--write-idents",
          type=str,
          dest="write_idents",
          help="write out generated follower idents to <file>, "
          "when -n<num> is used",
      )
      make_option(
          "--requirements",
          action="callback",
          type=str,
          callback=_requirements_opt,
          help="requirements class for testing, overrides setup.cfg",
      )
      make_option(
          "--include-tag",
          action="callback",
          callback=_include_tag,
          type=str,
          help="Include tests with tag <tag>; "
          "legacy, use pytest -m 'tag' instead",
      )
      make_option(
          "--exclude-tag",
          action="callback",
          callback=_exclude_tag,
          type=str,
          help="Exclude tests with tag <tag>; "
          "legacy, use pytest -m 'not tag' instead",
      )
      make_option(
          "--write-profiles",
          action="store_true",
          dest="write_profiles",
          default=False,
          help="Write/update failing profiling data.",
      )
      make_option(
          "--force-write-profiles",
          action="store_true",
          dest="force_write_profiles",
          default=False,
          help="Unconditionally write/update profiling data.",
      )
      make_option(
          "--dump-pyannotate",
          type=str,
          dest="dump_pyannotate",
          help="Run pyannotate and dump json info to given file",
      )
      make_option(
          "--mypy-extra-test-path",
          type=str,
          action="append",
          default=[],
          dest="mypy_extra_test_paths",
          help="Additional test directories to add to the mypy tests. "
          "This is used only when running mypy tests. Multiple OK",
      )
      # db specific options
      make_option(
          "--postgresql-templatedb",
          type=str,
          help="name of template database to use for PostgreSQL "
          "CREATE DATABASE (defaults to current database)",
      )
      make_option(
          "--oracledb-thick-mode",
          action="store_true",
          help="enables the 'thick mode' when testing with oracle+oracledb",
      )
  
imports: from __future__ import annotations
  import abc
  from argparse import Namespace
  import configparser
  import logging
  import os
  from pathlib import Path
  import re
  import sys
  from typing import Any
  from sqlalchemy.testing import asyncio
label_desc: Use image node_id 1 for calling a global function with example usage: setup_options(make_option) without return types