docs: def create_all(self, progress_callback: Optional[callable] = None) -> Dict[str, object]:
          """
          Creates all the models discovered from fixture files in :attr:`fixtures_dir`.
  
          :param progress_callback: An optional function to track progress. It must take three
                                 parameters:
                                  - an :class:`Identifier`
                                  - the model instance
                                  - and a boolean specifying whether the model was created
          :return: A dictionary keyed by identifier where the values are model instances.
          """
          if not self._loaded:
              self._load_data()
  
          # build up a directed acyclic graph to determine the model instantiation order
          dag = nx.DiGraph()
          for model_class_name, dependencies in self.relationships.items():
              dag.add_node(model_class_name)
              for dep in dependencies:
                  dag.add_edge(model_class_name, dep)
  
          try:
              creation_order = reversed(list(nx.topological_sort(dag)))
          except nx.NetworkXUnfeasible:
              raise Exception('Circular dependency detected between models: '
                              ', '.join(['{a} -> {b}'.format(a=a, b=b)
                                         for a, b in nx.find_cycle(dag)]))
  
          # create or update the models in the determined order
          rv = {}
          for model_class_name in creation_order:
              for identifier_key, data in self.model_fixtures[model_class_name].items():
                  identifier = Identifier(model_class_name, identifier_key)
                  data = self.factory.maybe_convert_values(identifier, data)
                  self._cache[identifier_key] = data
  
                  model_instance, created = self.factory.create_or_update(identifier, data)
                  if progress_callback:
                      progress_callback(identifier, model_instance, created)
                  rv[identifier_key] = model_instance
  
          self.factory.commit()
          return rv