Skip to content

Commit 74746ae

Browse files
committed
fixup! py: add more authorship metadata from model card
1 parent 7a70fcd commit 74746ae

File tree

1 file changed

+48
-45
lines changed

1 file changed

+48
-45
lines changed

gguf-py/gguf/metadata.py

Lines changed: 48 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -284,64 +284,67 @@ def apply_metadata_heuristic(metadata: Metadata, model_card: Optional[dict] = No
284284
########################
285285
if model_card is not None:
286286

287-
def use_model_card_metadata(metadata: Any | None, key_name: str):
288-
if key_name in model_card and metadata is None:
289-
metadata = model_card.get(key_name)
287+
def use_model_card_metadata(metadata_key: str, model_card_key: str):
288+
if model_card_key in model_card and getattr(metadata, metadata_key, None) is None:
289+
setattr(metadata, metadata_key, model_card.get(model_card_key))
290290

291-
def use_array_model_card_metadata(metadata: Any | None, key_name: str):
291+
def use_array_model_card_metadata(metadata_key: str, model_card_key: str):
292292
# Note: Will append rather than replace if already exist
293-
tags_value = model_card.get(key_name, None)
293+
tags_value = model_card.get(model_card_key, None)
294294
if tags_value is None:
295295
return
296296

297-
if metadata is None:
298-
metadata = []
297+
current_value = getattr(metadata, metadata_key, None)
298+
if current_value is None:
299+
current_value = []
299300

300301
if isinstance(tags_value, str):
301-
metadata.append(tags_value)
302+
current_value.append(tags_value)
302303
elif isinstance(tags_value, list):
303-
metadata.extend(tags_value)
304+
current_value.extend(tags_value)
305+
306+
setattr(metadata, metadata_key, current_value)
304307

305308
# LLAMA.cpp's direct internal convention
306309
# (Definitely not part of hugging face formal/informal standard)
307310
#########################################
308-
use_model_card_metadata(metadata.name, "name")
309-
use_model_card_metadata(metadata.author, "author")
310-
use_model_card_metadata(metadata.version, "version")
311-
use_model_card_metadata(metadata.organization, "organization")
312-
use_model_card_metadata(metadata.description, "description")
313-
use_model_card_metadata(metadata.finetune, "finetune")
314-
use_model_card_metadata(metadata.basename, "basename")
315-
use_model_card_metadata(metadata.size_label, "size_label")
316-
use_model_card_metadata(metadata.source_url, "url")
317-
use_model_card_metadata(metadata.source_doi, "doi")
318-
use_model_card_metadata(metadata.source_uuid, "uuid")
319-
use_model_card_metadata(metadata.source_repo_url, "repo_url")
311+
use_model_card_metadata("name", "name")
312+
use_model_card_metadata("author", "author")
313+
use_model_card_metadata("version", "version")
314+
use_model_card_metadata("organization", "organization")
315+
use_model_card_metadata("description", "description")
316+
use_model_card_metadata("finetune", "finetune")
317+
use_model_card_metadata("basename", "basename")
318+
use_model_card_metadata("size_label", "size_label")
319+
use_model_card_metadata("source_url", "url")
320+
use_model_card_metadata("source_doi", "doi")
321+
use_model_card_metadata("source_uuid", "uuid")
322+
use_model_card_metadata("source_repo_url", "repo_url")
320323

321324
# LLAMA.cpp's huggingface style convention
322325
# (Definitely not part of hugging face formal/informal standard... but with model_ appended to match their style)
323326
###########################################
324-
use_model_card_metadata(metadata.name, "model_name")
325-
use_model_card_metadata(metadata.author, "model_author")
326-
use_model_card_metadata(metadata.version, "model_version")
327-
use_model_card_metadata(metadata.organization, "model_organization")
328-
use_model_card_metadata(metadata.description, "model_description")
329-
use_model_card_metadata(metadata.finetune, "model_finetune")
330-
use_model_card_metadata(metadata.basename, "model_basename")
331-
use_model_card_metadata(metadata.size_label, "model_size_label")
332-
use_model_card_metadata(metadata.source_url, "model_url")
333-
use_model_card_metadata(metadata.source_doi, "model_doi")
334-
use_model_card_metadata(metadata.source_uuid, "model_uuid")
335-
use_model_card_metadata(metadata.source_repo_url, "model_repo_url")
327+
use_model_card_metadata("name", "model_name")
328+
use_model_card_metadata("author", "model_author")
329+
use_model_card_metadata("version", "model_version")
330+
use_model_card_metadata("organization", "model_organization")
331+
use_model_card_metadata("description", "model_description")
332+
use_model_card_metadata("finetune", "model_finetune")
333+
use_model_card_metadata("basename", "model_basename")
334+
use_model_card_metadata("size_label", "model_size_label")
335+
use_model_card_metadata("source_url", "model_url")
336+
use_model_card_metadata("source_doi", "model_doi")
337+
use_model_card_metadata("source_uuid", "model_uuid")
338+
use_model_card_metadata("source_repo_url", "model_repo_url")
336339

337340
# Hugging Face Direct Convention
338341
#################################
339342

340343
# Not part of huggingface model card standard but notice some model creator using it
341344
# such as TheBloke in 'TheBloke/Mistral-7B-Instruct-v0.2-GGUF'
342-
use_model_card_metadata(metadata.name, "model_name")
343-
use_model_card_metadata(metadata.author, "model_creator")
344-
use_model_card_metadata(metadata.basename, "model_type")
345+
use_model_card_metadata("name", "model_name")
346+
use_model_card_metadata("author", "model_creator")
347+
use_model_card_metadata("basename", "model_type")
345348

346349
if "base_model" in model_card:
347350
# This represents the parent models that this is based on
@@ -373,18 +376,18 @@ def use_array_model_card_metadata(metadata: Any | None, key_name: str):
373376
base_model["repo_url"] = f"https://huggingface.co/{org_component}/{model_full_name_component}"
374377
metadata.base_models.append(base_model)
375378

376-
use_model_card_metadata(metadata.license, "license")
377-
use_model_card_metadata(metadata.license_name, "license_name")
378-
use_model_card_metadata(metadata.license_link, "license_link")
379+
use_model_card_metadata("license", "license")
380+
use_model_card_metadata("license_name", "license_name")
381+
use_model_card_metadata("license_link", "license_link")
379382

380-
use_array_model_card_metadata(metadata.tags, "tags")
381-
use_array_model_card_metadata(metadata.tags, "pipeline_tag")
383+
use_array_model_card_metadata("tags", "tags")
384+
use_array_model_card_metadata("tags", "pipeline_tag")
382385

383-
use_array_model_card_metadata(metadata.languages, "languages")
384-
use_array_model_card_metadata(metadata.languages, "language")
386+
use_array_model_card_metadata("languages", "languages")
387+
use_array_model_card_metadata("languages", "language")
385388

386-
use_array_model_card_metadata(metadata.datasets, "datasets")
387-
use_array_model_card_metadata(metadata.datasets, "dataset")
389+
use_array_model_card_metadata("datasets", "datasets")
390+
use_array_model_card_metadata("datasets", "dataset")
388391

389392
# Hugging Face Parameter Heuristics
390393
####################################

0 commit comments

Comments
 (0)