code: def test_0_hidden_args_analysis(self):
      df = pd.read_csv("tests/data/concrete_strength.csv")[:500]
      target = "concrete_strength"
      pdef = ProblemDefinition.from_dict(
          {
              "target": target,
              "time_aim": 80,
              "dtype_dict": {
                  "age": "categorical"
              },  # tests overriding inferred types
          }
      )
      jai = json_ai_from_problem(df, pdef)
      jai.analysis_blocks = [
          # args not needed (not even deps), they should be injected for default blocks
          {"module": "PermutationFeatureImportance"}
      ]
  
      predictor = predictor_from_json_ai(jai)
      predictor.learn(df)
      self.assertTrue(len(predictor.analysis_blocks) == 4)
  
file_path: lightwood/tests/integration/basic/test_jsonai.py
imports: import unittest
  import pandas
  from lightwood.api.types import ProblemDefinition
  from lightwood.api.high_level import json_ai_from_problem, predictor_from_json_ai, JsonAI, code_from_json_ai, predictor_from_code
label_desc: Use image node_id 1 for calling the TestJsonAI obj's underlying member method code with example usage: obj.test_0_hidden_args_analysis() without return types