code: def process_default_zips(args):
      resources = json.load(
          open(os.path.join(args.output_dir, "resources.json"))
      )
      for lang in resources:
          # check url, alias, and lang_name in case we are rerunning this step on an already built resources.json
          if lang == "url":
              continue
          if "alias" in resources[lang]:
              continue
          if all(
              k
              in (
                  "backward_charlm",
                  "forward_charlm",
                  "pretrain",
                  "lang_name",
              )
              for k in resources[lang].keys()
          ):
              continue
          if lang not in default_treebanks:
              raise AssertionError(
                  f"{lang} not in default treebanks!!!"
              )
  
          if args.lang and lang != args.lang:
              continue
  
          print(f"Preparing default models for language {lang}")
  
          models_needed = defaultdict(set)
  
          packages = resources[lang][PACKAGES]["default"]
          for processor, package in packages.items():
              if processor == "lemma" and package == "identity":
                  continue
              if processor == "optional":
                  continue
              models_needed[processor].add(package)
              dependencies = get_dependencies(processor, lang, package)
              for dependency in dependencies:
                  models_needed[dependency["model"]].add(
                      dependency["package"]
                  )
  
          model_files = []
          for processor in PROCESSORS:
              if processor in models_needed:
                  for package in sorted(models_needed[processor]):
                      filename = os.path.join(
                          args.output_dir,
                          lang,
                          "models",
                          processor,
                          package + ".pt",
                      )
                      if os.path.exists(filename):
                          print(
                              "   Model {} package {}: file {}".format(
                                  processor, package, filename
                              )
                          )
                          model_files.append(
                              (filename, processor, package)
                          )
                      else:
                          raise FileNotFoundError(
                              f"Processor {processor} package {package} needed for {lang} but cannot be found at {filename}"
                          )
  
          with zipfile.ZipFile(
              os.path.join(
                  args.output_dir, lang, "models", "default.zip"
              ),
              "w",
              zipfile.ZIP_DEFLATED,
          ) as zipf:
              for filename, processor, package in model_files:
                  zipf.write(
                      filename=filename,
                      arcname=os.path.join(processor, package + ".pt"),
                  )
  
          default_md5 = get_md5(
              os.path.join(
                  args.output_dir, lang, "models", "default.zip"
              )
          )
          resources[lang]["default_md5"] = default_md5
  
      print("Processed default model zips.  Writing resources.json")
      json.dump(
          resources,
          open(os.path.join(args.output_dir, "resources.json"), "w"),
          indent=2,
      )
  
imports: import argparse
  from collections import defaultdict
  import json
  import os
  from pathlib import Path
  import hashlib
  import shutil
  import zipfile
  from stanza import __resources_version__
  from stanza.models.common.constant import lcode2lang, two_to_three_letters, three_to_two_letters
  from stanza.resources.default_packages import PACKAGES, TRANSFORMERS, TRANSFORMER_NICKNAMES
  from stanza.resources.default_packages import *
  from stanza.utils.get_tqdm import get_tqdm
label_desc: Use image node_id 24 for calling a global function with example usage: process_default_zips(args) without return types