code: def create_source_tables(
      mf_test_session_state: MetricFlowTestSessionState,
      ddl_sql_client: SqlClientWithDDLMethods,
      source_table_snapshot_repository: SqlTableSnapshotRepository,
  ) -> None:
      """Creates all tables that should be in the source schema.
  
      If a table with a given name already exists in the source schema, it's assumed to have the expected schema / data.
      """
      if mf_test_session_state.use_persistent_source_schema:
          logger.info(
              "This session was configured to use a persistent source schema, so this fixture won't create new tables. "
              "See populate_source_schema() for more details."
          )
          return
  
      create_tables_listed_in_table_snapshot_repository(
          ddl_sql_client=ddl_sql_client,
          schema_name=mf_test_session_state.mf_source_schema,
          table_snapshot_repository=source_table_snapshot_repository,
      )
  
file_path: metricflow/metricflow/test/fixtures/table_fixtures.py
imports: from __future__ import annotations
  import logging
  import os
  from pathlib import Path
  import pytest
  from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup
  from metricflow.test.fixtures.setup_fixtures import MetricFlowTestSessionState
  from metricflow.test.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods
  from metricflow.test.source_schema_tools import create_tables_listed_in_table_snapshot_repository
  from metricflow.test.table_snapshot.table_snapshots import SqlTableSnapshotRepository
label_desc: Use image node_id 3 for calling a global function with example usage: create_source_tables(mf_test_session_state, ddl_sql_client, source_table_snapshot_repository) without return types