code: def test_fill_from_lock_params(dvc, lock_data):
      stage = create_stage(
          PipelineStage,
          dvc,
          PROJECT_FILE,
          deps=["foo"],
          outs=["bar"],
          params=[
              "lorem",
              "lorem.ipsum",
              {"myparams.yaml": ["ipsum", "foobar"]},
          ],
      )
      lock_data["params"] = {
          "params.yaml": {
              "lorem": "lorem",
              "lorem.ipsum": ["i", "p", "s", "u", "m"],
          },
          "myparams.yaml": {
              # missing value in lock for `foobar` params
              "ipsum": "ipsum"
          },
      }
      params_deps = split_params_deps(stage)[0]
      assert set(params_deps[0].params) == {"lorem", "lorem.ipsum"}
      assert set(params_deps[1].params) == {"ipsum", "foobar"}
      assert not params_deps[0].hash_info
      assert not params_deps[1].hash_info
  
      StageLoader.fill_from_lock(stage, lock_data)
      assert (
          params_deps[0].hash_info.value
          == lock_data["params"]["params.yaml"]
      )
      assert (
          params_deps[1].hash_info.value
          == lock_data["params"]["myparams.yaml"]
      )
  
imports: import os
  from copy import deepcopy
  from itertools import chain
  import pytest
  from dvc.dvcfile import PROJECT_FILE, load_file
  from dvc.stage import PipelineStage, create_stage
  from dvc.stage.loader import StageLoader
  from dvc.stage.serialize import split_params_deps
  from dvc_data.hashfile.hash_info import HashInfo
label_desc: Use image node_id 5 for calling a global function with example usage: test_fill_from_lock_params(dvc, lock_data) without return types