Helper that returns a list of dicts including a num_shard entry.

        The dict for each entry also includes shared_mem_dict, the number of
        shards, the number of shard qubits, and the supplied constant dict.

        Args:
            constant_dict: Dictionary that will be updated to every element of
                the returned list of dictionaries.

        Returns:
            A list of dictionaries. Each dictionary is constant except for the
            'shard_num' key which ranges from 0 to number of shards - 1.
            Included keys are 'num_shards' and 'num_shard_qubits' along with
            all the keys in constant_dict.

def _shard_num_args(self,
                        constant_dict: Dict[str, Any] = None
                        ) -> List[Dict[str, Any]]:
        """Helper that returns a list of dicts including a num_shard entry.

        The dict for each entry also includes shared_mem_dict, the number of
        shards, the number of shard qubits, and the supplied constant dict.

        Args:
            constant_dict: Dictionary that will be updated to every element of
                the returned list of dictionaries.

        Returns:
            A list of dictionaries. Each dictionary is constant except for the
            'shard_num' key which ranges from 0 to number of shards - 1.
            Included keys are 'num_shards' and 'num_shard_qubits' along with
            all the keys in constant_dict.
        """
        args = []
        for shard_num in range(self._num_shards):
            append_dict = dict(constant_dict) if constant_dict else {}
            append_dict['shard_num'] = shard_num
            append_dict['num_shards'] = self._num_shards
            append_dict['num_shard_qubits'] = self._num_shard_qubits
            append_dict.update(self._shared_mem_dict)
            args.append(append_dict)
        return args