code: def populate_source_schema(
      mf_test_session_state: MetricFlowTestSessionState,
      ddl_sql_client: SqlClientWithDDLMethods,
      source_table_snapshot_repository: SqlTableSnapshotRepository,
  ) -> None:
      """Populate the source schema with the tables listed in table_snapshots.
  
      This can be run via pytest when this file is specified because this function was listed as a "test" in
      pyproject.toml. However, because the filename does not begin with "test_", it's not normally collected and run. As
      such, all parameters to this function are defined in fixtures.
      """
      if not mf_test_session_state.use_persistent_source_schema:
          raise ValueError(
              "This should be run with the flag to enable use of the persistent source schema"
          )
  
      schema_name = mf_test_session_state.mf_source_schema
  
      logger.info(f"Dropping schema {schema_name}")
      ddl_sql_client.drop_schema(schema_name=schema_name, cascade=True)
      logger.info(f"Creating schema {schema_name}")
      ddl_sql_client.create_schema(schema_name=schema_name)
      create_tables_listed_in_table_snapshot_repository(
          ddl_sql_client=ddl_sql_client,
          schema_name=schema_name,
          table_snapshot_repository=source_table_snapshot_repository,
      )
  
file_path: metricflow/metricflow/test/source_schema_tools.py
imports: from __future__ import annotations
  import logging
  from metricflow.protocols.sql_client import SqlEngine
  from metricflow.test.fixtures.setup_fixtures import MetricFlowTestSessionState
  from metricflow.test.fixtures.sql_clients.ddl_sql_client import SqlClientWithDDLMethods
  from metricflow.test.table_snapshot.table_snapshots import SqlTableSnapshotLoader, SqlTableSnapshotRepository
label_desc: Use image node_id 3 for calling a global function with example usage: populate_source_schema(mf_test_session_state, ddl_sql_client, source_table_snapshot_repository) without return types