Skip to content

Commit d7688dc

Browse files
committed
Various type annotation fixes.
1 parent 8047aa1 commit d7688dc

File tree

3 files changed

+178
-175
lines changed

3 files changed

+178
-175
lines changed

gguf-py/gguf/constants.py

Lines changed: 98 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from __future__ import annotations
22

33
import sys
4-
from enum import Enum, IntEnum, auto
5-
from typing import Any, NamedTuple
4+
from enum import Enum, IntEnum, auto, StrEnum
5+
from typing import Any, NamedTuple, Type
66

77
#
88
# constants
@@ -16,63 +16,63 @@
1616
# metadata keys
1717
#
1818

19-
class GeneralKeys(NamedTuple):
20-
ARCHITECTURE = "general.architecture"
21-
QUANTIZATION_VERSION = "general.quantization_version"
22-
ALIGNMENT = "general.alignment"
23-
NAME = "general.name"
24-
AUTHOR = "general.author"
25-
URL = "general.url"
26-
DESCRIPTION = "general.description"
27-
LICENSE = "general.license"
28-
SOURCE_URL = "general.source.url"
29-
SOURCE_HF_REPO = "general.source.huggingface.repository"
30-
FILE_TYPE = "general.file_type"
31-
32-
class AttentionKeys(NamedTuple):
33-
HEAD_COUNT = "{arch}.attention.head_count"
34-
HEAD_COUNT_KV = "{arch}.attention.head_count_kv"
35-
MAX_ALIBI_BIAS = "{arch}.attention.max_alibi_bias"
36-
CLAMP_KQV = "{arch}.attention.clamp_kqv"
37-
LAYERNORM_EPS = "{arch}.attention.layer_norm_epsilon"
38-
LAYERNORM_RMS_EPS = "{arch}.attention.layer_norm_rms_epsilon"
39-
40-
class RopeKeys(NamedTuple):
41-
DIMENSION_COUNT = "{arch}.rope.dimension_count"
42-
FREQ_BASE = "{arch}.rope.freq_base"
43-
SCALING_TYPE = "{arch}.rope.scaling.type"
44-
SCALING_FACTOR = "{arch}.rope.scaling.factor"
45-
SCALING_ORIG_CTX_LEN = "{arch}.rope.scaling.original_context_length"
46-
SCALING_FINETUNED = "{arch}.rope.scaling.finetuned"
47-
48-
class TokenizerKeys(NamedTuple):
49-
MODEL = "tokenizer.ggml.model"
50-
LIST = "tokenizer.ggml.tokens"
51-
TOKEN_TYPE = "tokenizer.ggml.token_type"
52-
SCORES = "tokenizer.ggml.scores"
53-
MERGES = "tokenizer.ggml.merges"
54-
BOS_ID = "tokenizer.ggml.bos_token_id"
55-
EOS_ID = "tokenizer.ggml.eos_token_id"
56-
UNK_ID = "tokenizer.ggml.unknown_token_id"
57-
SEP_ID = "tokenizer.ggml.seperator_token_id"
58-
PAD_ID = "tokenizer.ggml.padding_token_id"
59-
HF_JSON = "tokenizer.huggingface.json"
60-
RWKV = "tokenizer.rwkv.world"
61-
62-
class LLMKeys(NamedTuple):
63-
CONTEXT_LENGTH = "{arch}.context_length"
64-
EMBEDDING_LENGTH = "{arch}.embedding_length"
65-
BLOCK_COUNT = "{arch}.block_count"
66-
FEED_FORWARD_LENGTH = "{arch}.feed_forward_length"
67-
USE_PARALLEL_RESIDUAL = "{arch}.use_parallel_residual"
68-
TENSOR_DATA_LAYOUT = "{arch}.tensor_data_layout"
19+
class GeneralKeys(StrEnum):
20+
ARCHITECTURE : str = "general.architecture"
21+
QUANTIZATION_VERSION: str = "general.quantization_version"
22+
ALIGNMENT : str = "general.alignment"
23+
NAME : str = "general.name"
24+
AUTHOR : str = "general.author"
25+
URL : str = "general.url"
26+
DESCRIPTION : str = "general.description"
27+
LICENSE : str = "general.license"
28+
SOURCE_URL : str = "general.source.url"
29+
SOURCE_HF_REPO : str = "general.source.huggingface.repository"
30+
FILE_TYPE : str = "general.file_type"
31+
32+
class AttentionKeys(StrEnum):
33+
HEAD_COUNT : str = "{arch}.attention.head_count"
34+
HEAD_COUNT_KV : str = "{arch}.attention.head_count_kv"
35+
MAX_ALIBI_BIAS : str = "{arch}.attention.max_alibi_bias"
36+
CLAMP_KQV : str = "{arch}.attention.clamp_kqv"
37+
LAYERNORM_EPS : str = "{arch}.attention.layer_norm_epsilon"
38+
LAYERNORM_RMS_EPS: str = "{arch}.attention.layer_norm_rms_epsilon"
39+
40+
class RopeKeys(StrEnum):
41+
DIMENSION_COUNT : str = "{arch}.rope.dimension_count"
42+
FREQ_BASE : str = "{arch}.rope.freq_base"
43+
SCALING_TYPE : str = "{arch}.rope.scaling.type"
44+
SCALING_FACTOR : str = "{arch}.rope.scaling.factor"
45+
SCALING_ORIG_CTX_LEN: str = "{arch}.rope.scaling.original_context_length"
46+
SCALING_FINETUNED : str = "{arch}.rope.scaling.finetuned"
47+
48+
class TokenizerKeys(StrEnum):
49+
MODEL : str = "tokenizer.ggml.model"
50+
LIST : str = "tokenizer.ggml.tokens"
51+
TOKEN_TYPE: str = "tokenizer.ggml.token_type"
52+
SCORES : str = "tokenizer.ggml.scores"
53+
MERGES : str = "tokenizer.ggml.merges"
54+
BOS_ID : str = "tokenizer.ggml.bos_token_id"
55+
EOS_ID : str = "tokenizer.ggml.eos_token_id"
56+
UNK_ID : str = "tokenizer.ggml.unknown_token_id"
57+
SEP_ID : str = "tokenizer.ggml.seperator_token_id"
58+
PAD_ID : str = "tokenizer.ggml.padding_token_id"
59+
HF_JSON : str = "tokenizer.huggingface.json"
60+
RWKV : str = "tokenizer.rwkv.world"
61+
62+
class LLMKeys(StrEnum):
63+
CONTEXT_LENGTH : str = "{arch}.context_length"
64+
EMBEDDING_LENGTH : str = "{arch}.embedding_length"
65+
BLOCK_COUNT : str = "{arch}.block_count"
66+
FEED_FORWARD_LENGTH : str = "{arch}.feed_forward_length"
67+
USE_PARALLEL_RESIDUAL: str = "{arch}.use_parallel_residual"
68+
TENSOR_DATA_LAYOUT : str = "{arch}.tensor_data_layout"
6969

7070
class Keys(NamedTuple):
71-
GENERAL = GeneralKeys()
72-
LLM = LLMKeys()
73-
ATTENTION = AttentionKeys()
74-
ROPE = RopeKeys()
75-
TOKENIZER = TokenizerKeys()
71+
GENERAL : Type[GeneralKeys ] = GeneralKeys
72+
LLM : Type[LLMKeys ] = LLMKeys
73+
ATTENTION: Type[AttentionKeys] = AttentionKeys
74+
ROPE : Type[RopeKeys ] = RopeKeys
75+
TOKENIZER: Type[TokenizerKeys] = TokenizerKeys
7676

7777
KEY = Keys()
7878

@@ -418,52 +418,52 @@ def get_type(val: Any) -> GGUFValueType:
418418
# Aliases for backward compatibility.
419419

420420
# general
421-
KEY_GENERAL_ARCHITECTURE = KEY.GENERAL.ARCHITECTURE
422-
KEY_GENERAL_QUANTIZATION_VERSION = KEY.GENERAL.QUANTIZATION_VERSION
423-
KEY_GENERAL_ALIGNMENT = KEY.GENERAL.ALIGNMENT
424-
KEY_GENERAL_NAME = KEY.GENERAL.NAME
425-
KEY_GENERAL_AUTHOR = KEY.GENERAL.AUTHOR
426-
KEY_GENERAL_URL = KEY.GENERAL.URL
427-
KEY_GENERAL_DESCRIPTION = KEY.GENERAL.DESCRIPTION
428-
KEY_GENERAL_LICENSE = KEY.GENERAL.LICENSE
429-
KEY_GENERAL_SOURCE_URL = KEY.GENERAL.SOURCE_URL
430-
KEY_GENERAL_SOURCE_HF_REPO = KEY.GENERAL.SOURCE_HF_REPO
431-
KEY_GENERAL_FILE_TYPE = KEY.GENERAL.FILE_TYPE
421+
KEY_GENERAL_ARCHITECTURE : str = KEY.GENERAL.ARCHITECTURE
422+
KEY_GENERAL_QUANTIZATION_VERSION: str = KEY.GENERAL.QUANTIZATION_VERSION
423+
KEY_GENERAL_ALIGNMENT : str = KEY.GENERAL.ALIGNMENT
424+
KEY_GENERAL_NAME : str = KEY.GENERAL.NAME
425+
KEY_GENERAL_AUTHOR : str = KEY.GENERAL.AUTHOR
426+
KEY_GENERAL_URL : str = KEY.GENERAL.URL
427+
KEY_GENERAL_DESCRIPTION : str = KEY.GENERAL.DESCRIPTION
428+
KEY_GENERAL_LICENSE : str = KEY.GENERAL.LICENSE
429+
KEY_GENERAL_SOURCE_URL : str = KEY.GENERAL.SOURCE_URL
430+
KEY_GENERAL_SOURCE_HF_REPO : str = KEY.GENERAL.SOURCE_HF_REPO
431+
KEY_GENERAL_FILE_TYPE : str = KEY.GENERAL.FILE_TYPE
432432

433433
# LLM
434-
KEY_CONTEXT_LENGTH = KEY.LLM.CONTEXT_LENGTH
435-
KEY_EMBEDDING_LENGTH = KEY.LLM.EMBEDDING_LENGTH
436-
KEY_BLOCK_COUNT = KEY.LLM.BLOCK_COUNT
437-
KEY_FEED_FORWARD_LENGTH = KEY.LLM.FEED_FORWARD_LENGTH
438-
KEY_USE_PARALLEL_RESIDUAL = KEY.LLM.USE_PARALLEL_RESIDUAL
439-
KEY_TENSOR_DATA_LAYOUT = KEY.LLM.TENSOR_DATA_LAYOUT
434+
KEY_CONTEXT_LENGTH : str = KEY.LLM.CONTEXT_LENGTH
435+
KEY_EMBEDDING_LENGTH : str = KEY.LLM.EMBEDDING_LENGTH
436+
KEY_BLOCK_COUNT : str = KEY.LLM.BLOCK_COUNT
437+
KEY_FEED_FORWARD_LENGTH : str = KEY.LLM.FEED_FORWARD_LENGTH
438+
KEY_USE_PARALLEL_RESIDUAL: str = KEY.LLM.USE_PARALLEL_RESIDUAL
439+
KEY_TENSOR_DATA_LAYOUT : str = KEY.LLM.TENSOR_DATA_LAYOUT
440440

441441
# attention
442-
KEY_ATTENTION_HEAD_COUNT = KEY.ATTENTION.HEAD_COUNT
443-
KEY_ATTENTION_HEAD_COUNT_KV = KEY.ATTENTION.HEAD_COUNT_KV
444-
KEY_ATTENTION_MAX_ALIBI_BIAS = KEY.ATTENTION.MAX_ALIBI_BIAS
445-
KEY_ATTENTION_CLAMP_KQV = KEY.ATTENTION.CLAMP_KQV
446-
KEY_ATTENTION_LAYERNORM_EPS = KEY.ATTENTION.LAYERNORM_EPS
447-
KEY_ATTENTION_LAYERNORM_RMS_EPS = KEY.ATTENTION.LAYERNORM_RMS_EPS
442+
KEY_ATTENTION_HEAD_COUNT : str = KEY.ATTENTION.HEAD_COUNT
443+
KEY_ATTENTION_HEAD_COUNT_KV : str = KEY.ATTENTION.HEAD_COUNT_KV
444+
KEY_ATTENTION_MAX_ALIBI_BIAS : str = KEY.ATTENTION.MAX_ALIBI_BIAS
445+
KEY_ATTENTION_CLAMP_KQV : str = KEY.ATTENTION.CLAMP_KQV
446+
KEY_ATTENTION_LAYERNORM_EPS : str = KEY.ATTENTION.LAYERNORM_EPS
447+
KEY_ATTENTION_LAYERNORM_RMS_EPS: str = KEY.ATTENTION.LAYERNORM_RMS_EPS
448448

449449
# RoPE
450-
KEY_ROPE_DIMENSION_COUNT = KEY.ROPE.DIMENSION_COUNT
451-
KEY_ROPE_FREQ_BASE = KEY.ROPE.FREQ_BASE
452-
KEY_ROPE_SCALING_TYPE = KEY.ROPE.SCALING_TYPE
453-
KEY_ROPE_SCALING_FACTOR = KEY.ROPE.SCALING_FACTOR
454-
KEY_ROPE_SCALING_ORIG_CTX_LEN = KEY.ROPE.SCALING_ORIG_CTX_LEN
455-
KEY_ROPE_SCALING_FINETUNED = KEY.ROPE.SCALING_FINETUNED
450+
KEY_ROPE_DIMENSION_COUNT : str = KEY.ROPE.DIMENSION_COUNT
451+
KEY_ROPE_FREQ_BASE : str = KEY.ROPE.FREQ_BASE
452+
KEY_ROPE_SCALING_TYPE : str = KEY.ROPE.SCALING_TYPE
453+
KEY_ROPE_SCALING_FACTOR : str = KEY.ROPE.SCALING_FACTOR
454+
KEY_ROPE_SCALING_ORIG_CTX_LEN: str = KEY.ROPE.SCALING_ORIG_CTX_LEN
455+
KEY_ROPE_SCALING_FINETUNED : str = KEY.ROPE.SCALING_FINETUNED
456456

457457
# tokenization
458-
KEY_TOKENIZER_MODEL = KEY.TOKENIZER.MODEL
459-
KEY_TOKENIZER_LIST = KEY.TOKENIZER.LIST
460-
KEY_TOKENIZER_TOKEN_TYPE = KEY.TOKENIZER.TOKEN_TYPE
461-
KEY_TOKENIZER_SCORES = KEY.TOKENIZER.SCORES
462-
KEY_TOKENIZER_MERGES = KEY.TOKENIZER.MERGES
463-
KEY_TOKENIZER_BOS_ID = KEY.TOKENIZER.BOS_ID
464-
KEY_TOKENIZER_EOS_ID = KEY.TOKENIZER.EOS_ID
465-
KEY_TOKENIZER_UNK_ID = KEY.TOKENIZER.UNK_ID
466-
KEY_TOKENIZER_SEP_ID = KEY.TOKENIZER.SEP_ID
467-
KEY_TOKENIZER_PAD_ID = KEY.TOKENIZER.PAD_ID
468-
KEY_TOKENIZER_HF_JSON = KEY.TOKENIZER.HF_JSON
469-
KEY_TOKENIZER_RWKV = KEY.TOKENIZER.RWKV
458+
KEY_TOKENIZER_MODEL : str = KEY.TOKENIZER.MODEL
459+
KEY_TOKENIZER_LIST : str = KEY.TOKENIZER.LIST
460+
KEY_TOKENIZER_TOKEN_TYPE: str = KEY.TOKENIZER.TOKEN_TYPE
461+
KEY_TOKENIZER_SCORES : str = KEY.TOKENIZER.SCORES
462+
KEY_TOKENIZER_MERGES : str = KEY.TOKENIZER.MERGES
463+
KEY_TOKENIZER_BOS_ID : str = KEY.TOKENIZER.BOS_ID
464+
KEY_TOKENIZER_EOS_ID : str = KEY.TOKENIZER.EOS_ID
465+
KEY_TOKENIZER_UNK_ID : str = KEY.TOKENIZER.UNK_ID
466+
KEY_TOKENIZER_SEP_ID : str = KEY.TOKENIZER.SEP_ID
467+
KEY_TOKENIZER_PAD_ID : str = KEY.TOKENIZER.PAD_ID
468+
KEY_TOKENIZER_HF_JSON : str = KEY.TOKENIZER.HF_JSON
469+
KEY_TOKENIZER_RWKV : str = KEY.TOKENIZER.RWKV

0 commit comments

Comments
 (0)