@huggingface/tasks
Advanced tools
Comparing version
@@ -1331,5 +1331,5 @@ "use strict"; | ||
const remote_code_snippet = model.tags.includes(TAG_CUSTOM_CODE) ? ", trust_remote_code=True" : ""; | ||
let autoSnippet; | ||
const autoSnippet = []; | ||
if (info.processor) { | ||
const varName = info.processor === "AutoTokenizer" | ||
const processorVarName = info.processor === "AutoTokenizer" | ||
? "tokenizer" | ||
@@ -1339,16 +1339,23 @@ : info.processor === "AutoFeatureExtractor" | ||
: "processor"; | ||
autoSnippet = [ | ||
"# Load model directly", | ||
`from transformers import ${info.processor}, ${info.auto_model}`, | ||
"", | ||
`${varName} = ${info.processor}.from_pretrained("${model.id}"` + remote_code_snippet + ")", | ||
`model = ${info.auto_model}.from_pretrained("${model.id}"` + remote_code_snippet + ")", | ||
].join("\n"); | ||
autoSnippet.push("# Load model directly", `from transformers import ${info.processor}, ${info.auto_model}`, "", `${processorVarName} = ${info.processor}.from_pretrained("${model.id}"` + remote_code_snippet + ")", `model = ${info.auto_model}.from_pretrained("${model.id}"` + remote_code_snippet + ")"); | ||
if (model.tags.includes("conversational")) { | ||
if (model.tags.includes("image-text-to-text")) { | ||
autoSnippet.push("messages = [", [ | ||
" {", | ||
' "role": "user",', | ||
' "content": [', | ||
' {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"},', | ||
' {"type": "text", "text": "What animal is on the candy?"}', | ||
" ]", | ||
" },", | ||
].join("\n"), "]"); | ||
} | ||
else { | ||
autoSnippet.push("messages = [", ' {"role": "user", "content": "Who are you?"},', "]"); | ||
} | ||
autoSnippet.push("inputs = ${processorVarName}.apply_chat_template(", " messages,", " add_generation_prompt=True,", " tokenize=True,", " return_dict=True,", ' return_tensors="pt",', ").to(model.device)", "", "outputs = model.generate(**inputs, max_new_tokens=40)", 'print(${processorVarName}.decode(outputs[0][inputs["input_ids"].shape[-1]:]))'); | ||
} | ||
} | ||
else { | ||
autoSnippet = [ | ||
"# Load model directly", | ||
`from transformers import ${info.auto_model}`, | ||
`model = ${info.auto_model}.from_pretrained("${model.id}"` + remote_code_snippet + ")", | ||
].join("\n"); | ||
autoSnippet.push("# Load model directly", `from transformers import ${info.auto_model}`, `model = ${info.auto_model}.from_pretrained("${model.id}"` + remote_code_snippet + ', torch_dtype="auto"),'); | ||
} | ||
@@ -1386,5 +1393,5 @@ if (model.pipeline_tag && library_to_tasks_js_1.LIBRARY_TASK_MAPPING.transformers?.includes(model.pipeline_tag)) { | ||
} | ||
return [pipelineSnippet.join("\n"), autoSnippet]; | ||
return [pipelineSnippet.join("\n"), autoSnippet.join("\n")]; | ||
} | ||
return [autoSnippet]; | ||
return [autoSnippet.join("\n")]; | ||
}; | ||
@@ -1391,0 +1398,0 @@ exports.transformers = transformers; |
@@ -521,2 +521,9 @@ import type { ModelData } from "./model-data.js"; | ||
}; | ||
kronos: { | ||
prettyLabel: string; | ||
repoName: string; | ||
repoUrl: string; | ||
filter: false; | ||
countDownloads: string; | ||
}; | ||
k2: { | ||
@@ -1193,3 +1200,3 @@ prettyLabel: string; | ||
export declare const ALL_MODEL_LIBRARY_KEYS: ModelLibraryKey[]; | ||
export declare const ALL_DISPLAY_MODEL_LIBRARY_KEYS: ("acestep" | "adapter-transformers" | "allennlp" | "anemoi" | "araclip" | "asteroid" | "audiocraft" | "audioseal" | "bagel-mot" | "ben2" | "bertopic" | "big_vision" | "birder" | "birefnet" | "bm25s" | "champ" | "chatterbox" | "chat_tts" | "colpali" | "comet" | "contexttab" | "cosmos" | "cxr-foundation" | "deepforest" | "depth-anything-v2" | "depth-pro" | "derm-foundation" | "describe-anything" | "dia-tts" | "diffree" | "diffusers" | "diffusionkit" | "doctr" | "cartesia_pytorch" | "cartesia_mlx" | "clipscope" | "cosyvoice" | "cotracker" | "edsnlp" | "elm" | "espnet" | "fairseq" | "fastai" | "fasttext" | "flair" | "fme" | "gemma.cpp" | "geometry-crafter" | "gliner" | "glyph-byt5" | "grok" | "hallo" | "hermes" | "hezar" | "htrflow" | "hunyuan-dit" | "hunyuan3d-2" | "imstoucan" | "index-tts" | "infinite-you" | "keras" | "tf-keras" | "keras-hub" | "kimi-audio" | "k2" | "lightning-ir" | "litert-lm" | "lerobot" | "liveportrait" | "llama-cpp-python" | "mini-omni2" | "mindspore" | "magi-1" | "magenta-realtime" | "mamba-ssm" | "mars5-tts" | "matanyone" | "mesh-anything" | "merlin" | "medvae" | "mitie" | "ml-agents" | "mlx" | "mlx-image" | "mlc-llm" | "model2vec" | "moshi" | "mtvcraft" | "nemo" | "open-oasis" | "open_clip" | "open-sora" | "outetts" | "paddlenlp" | "PaddleOCR" | "peft" | "perception-encoder" | "phantom-wan" | "pxia" | "pyannote-audio" | "py-feat" | "pythae" | "recurrentgemma" | "relik" | "refiners" | "renderformer" | "reverb" | "saelens" | "sam2" | "sample-factory" | "sapiens" | "seedvr" | "sentence-transformers" | "setfit" | "sklearn" | "spacy" | "span-marker" | "speechbrain" | "ssr-speech" | "stable-audio-tools" | "monkeyocr" | "diffusion-single-file" | "seed-story" | "soloaudio" | "stable-baselines3" | "stanza" | "swarmformer" | "f5-tts" | "genmo" | "tencent-song-generation" | "tensorflowtts" | "tabpfn" | "terratorch" | "tic-clip" | "timesfm" | "timm" | "tirex" | "torchgeo" | "transformers" | "transformers.js" | "trellis" | "ultralytics" | "univa" | "uni-3dar" | "unity-sentis" | "sana" | "videoprism" | "vfi-mamba" | "voicecraft" | "vui" | "wham" | "whisperkit" | "yolov10" | "zonos" | "3dtopia-xl")[]; | ||
export declare const ALL_DISPLAY_MODEL_LIBRARY_KEYS: ("acestep" | "adapter-transformers" | "allennlp" | "anemoi" | "araclip" | "asteroid" | "audiocraft" | "audioseal" | "bagel-mot" | "ben2" | "bertopic" | "big_vision" | "birder" | "birefnet" | "bm25s" | "champ" | "chatterbox" | "chat_tts" | "colpali" | "comet" | "contexttab" | "cosmos" | "cxr-foundation" | "deepforest" | "depth-anything-v2" | "depth-pro" | "derm-foundation" | "describe-anything" | "dia-tts" | "diffree" | "diffusers" | "diffusionkit" | "doctr" | "cartesia_pytorch" | "cartesia_mlx" | "clipscope" | "cosyvoice" | "cotracker" | "edsnlp" | "elm" | "espnet" | "fairseq" | "fastai" | "fasttext" | "flair" | "fme" | "gemma.cpp" | "geometry-crafter" | "gliner" | "glyph-byt5" | "grok" | "hallo" | "hermes" | "hezar" | "htrflow" | "hunyuan-dit" | "hunyuan3d-2" | "imstoucan" | "index-tts" | "infinite-you" | "keras" | "tf-keras" | "keras-hub" | "kimi-audio" | "kronos" | "k2" | "lightning-ir" | "litert-lm" | "lerobot" | "liveportrait" | "llama-cpp-python" | "mini-omni2" | "mindspore" | "magi-1" | "magenta-realtime" | "mamba-ssm" | "mars5-tts" | "matanyone" | "mesh-anything" | "merlin" | "medvae" | "mitie" | "ml-agents" | "mlx" | "mlx-image" | "mlc-llm" | "model2vec" | "moshi" | "mtvcraft" | "nemo" | "open-oasis" | "open_clip" | "open-sora" | "outetts" | "paddlenlp" | "PaddleOCR" | "peft" | "perception-encoder" | "phantom-wan" | "pxia" | "pyannote-audio" | "py-feat" | "pythae" | "recurrentgemma" | "relik" | "refiners" | "renderformer" | "reverb" | "saelens" | "sam2" | "sample-factory" | "sapiens" | "seedvr" | "sentence-transformers" | "setfit" | "sklearn" | "spacy" | "span-marker" | "speechbrain" | "ssr-speech" | "stable-audio-tools" | "monkeyocr" | "diffusion-single-file" | "seed-story" | "soloaudio" | "stable-baselines3" | "stanza" | "swarmformer" | "f5-tts" | "genmo" | "tencent-song-generation" | "tensorflowtts" | "tabpfn" | "terratorch" | "tic-clip" | "timesfm" | "timm" | "tirex" | "torchgeo" | "transformers" | "transformers.js" | "trellis" | "ultralytics" | "univa" | "uni-3dar" | "unity-sentis" | "sana" | "videoprism" | "vfi-mamba" | "voicecraft" | "vui" | "wham" | "whisperkit" | "yolov10" | "zonos" | "3dtopia-xl")[]; | ||
//# sourceMappingURL=model-libraries.d.ts.map |
@@ -519,2 +519,9 @@ "use strict"; | ||
}, | ||
kronos: { | ||
prettyLabel: "KRONOS", | ||
repoName: "KRONOS", | ||
repoUrl: "https://github.com/mahmoodlab/KRONOS", | ||
filter: false, | ||
countDownloads: `path_extension:"pt"`, | ||
}, | ||
k2: { | ||
@@ -521,0 +528,0 @@ prettyLabel: "K2", |
@@ -1262,5 +1262,5 @@ import { LIBRARY_TASK_MAPPING } from "./library-to-tasks.js"; | ||
const remote_code_snippet = model.tags.includes(TAG_CUSTOM_CODE) ? ", trust_remote_code=True" : ""; | ||
let autoSnippet; | ||
const autoSnippet = []; | ||
if (info.processor) { | ||
const varName = info.processor === "AutoTokenizer" | ||
const processorVarName = info.processor === "AutoTokenizer" | ||
? "tokenizer" | ||
@@ -1270,16 +1270,23 @@ : info.processor === "AutoFeatureExtractor" | ||
: "processor"; | ||
autoSnippet = [ | ||
"# Load model directly", | ||
`from transformers import ${info.processor}, ${info.auto_model}`, | ||
"", | ||
`${varName} = ${info.processor}.from_pretrained("${model.id}"` + remote_code_snippet + ")", | ||
`model = ${info.auto_model}.from_pretrained("${model.id}"` + remote_code_snippet + ")", | ||
].join("\n"); | ||
autoSnippet.push("# Load model directly", `from transformers import ${info.processor}, ${info.auto_model}`, "", `${processorVarName} = ${info.processor}.from_pretrained("${model.id}"` + remote_code_snippet + ")", `model = ${info.auto_model}.from_pretrained("${model.id}"` + remote_code_snippet + ")"); | ||
if (model.tags.includes("conversational")) { | ||
if (model.tags.includes("image-text-to-text")) { | ||
autoSnippet.push("messages = [", [ | ||
" {", | ||
' "role": "user",', | ||
' "content": [', | ||
' {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"},', | ||
' {"type": "text", "text": "What animal is on the candy?"}', | ||
" ]", | ||
" },", | ||
].join("\n"), "]"); | ||
} | ||
else { | ||
autoSnippet.push("messages = [", ' {"role": "user", "content": "Who are you?"},', "]"); | ||
} | ||
autoSnippet.push("inputs = ${processorVarName}.apply_chat_template(", " messages,", " add_generation_prompt=True,", " tokenize=True,", " return_dict=True,", ' return_tensors="pt",', ").to(model.device)", "", "outputs = model.generate(**inputs, max_new_tokens=40)", 'print(${processorVarName}.decode(outputs[0][inputs["input_ids"].shape[-1]:]))'); | ||
} | ||
} | ||
else { | ||
autoSnippet = [ | ||
"# Load model directly", | ||
`from transformers import ${info.auto_model}`, | ||
`model = ${info.auto_model}.from_pretrained("${model.id}"` + remote_code_snippet + ")", | ||
].join("\n"); | ||
autoSnippet.push("# Load model directly", `from transformers import ${info.auto_model}`, `model = ${info.auto_model}.from_pretrained("${model.id}"` + remote_code_snippet + ', torch_dtype="auto"),'); | ||
} | ||
@@ -1317,5 +1324,5 @@ if (model.pipeline_tag && LIBRARY_TASK_MAPPING.transformers?.includes(model.pipeline_tag)) { | ||
} | ||
return [pipelineSnippet.join("\n"), autoSnippet]; | ||
return [pipelineSnippet.join("\n"), autoSnippet.join("\n")]; | ||
} | ||
return [autoSnippet]; | ||
return [autoSnippet.join("\n")]; | ||
}; | ||
@@ -1322,0 +1329,0 @@ export const transformersJS = (model) => { |
@@ -521,2 +521,9 @@ import type { ModelData } from "./model-data.js"; | ||
}; | ||
kronos: { | ||
prettyLabel: string; | ||
repoName: string; | ||
repoUrl: string; | ||
filter: false; | ||
countDownloads: string; | ||
}; | ||
k2: { | ||
@@ -1193,3 +1200,3 @@ prettyLabel: string; | ||
export declare const ALL_MODEL_LIBRARY_KEYS: ModelLibraryKey[]; | ||
export declare const ALL_DISPLAY_MODEL_LIBRARY_KEYS: ("acestep" | "adapter-transformers" | "allennlp" | "anemoi" | "araclip" | "asteroid" | "audiocraft" | "audioseal" | "bagel-mot" | "ben2" | "bertopic" | "big_vision" | "birder" | "birefnet" | "bm25s" | "champ" | "chatterbox" | "chat_tts" | "colpali" | "comet" | "contexttab" | "cosmos" | "cxr-foundation" | "deepforest" | "depth-anything-v2" | "depth-pro" | "derm-foundation" | "describe-anything" | "dia-tts" | "diffree" | "diffusers" | "diffusionkit" | "doctr" | "cartesia_pytorch" | "cartesia_mlx" | "clipscope" | "cosyvoice" | "cotracker" | "edsnlp" | "elm" | "espnet" | "fairseq" | "fastai" | "fasttext" | "flair" | "fme" | "gemma.cpp" | "geometry-crafter" | "gliner" | "glyph-byt5" | "grok" | "hallo" | "hermes" | "hezar" | "htrflow" | "hunyuan-dit" | "hunyuan3d-2" | "imstoucan" | "index-tts" | "infinite-you" | "keras" | "tf-keras" | "keras-hub" | "kimi-audio" | "k2" | "lightning-ir" | "litert-lm" | "lerobot" | "liveportrait" | "llama-cpp-python" | "mini-omni2" | "mindspore" | "magi-1" | "magenta-realtime" | "mamba-ssm" | "mars5-tts" | "matanyone" | "mesh-anything" | "merlin" | "medvae" | "mitie" | "ml-agents" | "mlx" | "mlx-image" | "mlc-llm" | "model2vec" | "moshi" | "mtvcraft" | "nemo" | "open-oasis" | "open_clip" | "open-sora" | "outetts" | "paddlenlp" | "PaddleOCR" | "peft" | "perception-encoder" | "phantom-wan" | "pxia" | "pyannote-audio" | "py-feat" | "pythae" | "recurrentgemma" | "relik" | "refiners" | "renderformer" | "reverb" | "saelens" | "sam2" | "sample-factory" | "sapiens" | "seedvr" | "sentence-transformers" | "setfit" | "sklearn" | "spacy" | "span-marker" | "speechbrain" | "ssr-speech" | "stable-audio-tools" | "monkeyocr" | "diffusion-single-file" | "seed-story" | "soloaudio" | "stable-baselines3" | "stanza" | "swarmformer" | "f5-tts" | "genmo" | "tencent-song-generation" | "tensorflowtts" | "tabpfn" | "terratorch" | "tic-clip" | "timesfm" | "timm" | "tirex" | "torchgeo" | "transformers" | "transformers.js" | "trellis" | "ultralytics" | "univa" | "uni-3dar" | "unity-sentis" | "sana" | "videoprism" | "vfi-mamba" | "voicecraft" | "vui" | "wham" | "whisperkit" | "yolov10" | "zonos" | "3dtopia-xl")[]; | ||
export declare const ALL_DISPLAY_MODEL_LIBRARY_KEYS: ("acestep" | "adapter-transformers" | "allennlp" | "anemoi" | "araclip" | "asteroid" | "audiocraft" | "audioseal" | "bagel-mot" | "ben2" | "bertopic" | "big_vision" | "birder" | "birefnet" | "bm25s" | "champ" | "chatterbox" | "chat_tts" | "colpali" | "comet" | "contexttab" | "cosmos" | "cxr-foundation" | "deepforest" | "depth-anything-v2" | "depth-pro" | "derm-foundation" | "describe-anything" | "dia-tts" | "diffree" | "diffusers" | "diffusionkit" | "doctr" | "cartesia_pytorch" | "cartesia_mlx" | "clipscope" | "cosyvoice" | "cotracker" | "edsnlp" | "elm" | "espnet" | "fairseq" | "fastai" | "fasttext" | "flair" | "fme" | "gemma.cpp" | "geometry-crafter" | "gliner" | "glyph-byt5" | "grok" | "hallo" | "hermes" | "hezar" | "htrflow" | "hunyuan-dit" | "hunyuan3d-2" | "imstoucan" | "index-tts" | "infinite-you" | "keras" | "tf-keras" | "keras-hub" | "kimi-audio" | "kronos" | "k2" | "lightning-ir" | "litert-lm" | "lerobot" | "liveportrait" | "llama-cpp-python" | "mini-omni2" | "mindspore" | "magi-1" | "magenta-realtime" | "mamba-ssm" | "mars5-tts" | "matanyone" | "mesh-anything" | "merlin" | "medvae" | "mitie" | "ml-agents" | "mlx" | "mlx-image" | "mlc-llm" | "model2vec" | "moshi" | "mtvcraft" | "nemo" | "open-oasis" | "open_clip" | "open-sora" | "outetts" | "paddlenlp" | "PaddleOCR" | "peft" | "perception-encoder" | "phantom-wan" | "pxia" | "pyannote-audio" | "py-feat" | "pythae" | "recurrentgemma" | "relik" | "refiners" | "renderformer" | "reverb" | "saelens" | "sam2" | "sample-factory" | "sapiens" | "seedvr" | "sentence-transformers" | "setfit" | "sklearn" | "spacy" | "span-marker" | "speechbrain" | "ssr-speech" | "stable-audio-tools" | "monkeyocr" | "diffusion-single-file" | "seed-story" | "soloaudio" | "stable-baselines3" | "stanza" | "swarmformer" | "f5-tts" | "genmo" | "tencent-song-generation" | "tensorflowtts" | "tabpfn" | "terratorch" | "tic-clip" | "timesfm" | "timm" | "tirex" | "torchgeo" | "transformers" | "transformers.js" | "trellis" | "ultralytics" | "univa" | "uni-3dar" | "unity-sentis" | "sana" | "videoprism" | "vfi-mamba" | "voicecraft" | "vui" | "wham" | "whisperkit" | "yolov10" | "zonos" | "3dtopia-xl")[]; | ||
//# sourceMappingURL=model-libraries.d.ts.map |
@@ -483,2 +483,9 @@ import * as snippets from "./model-libraries-snippets.js"; | ||
}, | ||
kronos: { | ||
prettyLabel: "KRONOS", | ||
repoName: "KRONOS", | ||
repoUrl: "https://github.com/mahmoodlab/KRONOS", | ||
filter: false, | ||
countDownloads: `path_extension:"pt"`, | ||
}, | ||
k2: { | ||
@@ -485,0 +492,0 @@ prettyLabel: "K2", |
{ | ||
"name": "@huggingface/tasks", | ||
"version": "0.19.26", | ||
"version": "0.19.27", | ||
"description": "List of ML tasks for huggingface.co/tasks", | ||
@@ -5,0 +5,0 @@ "repository": "https://github.com/huggingface/huggingface.js.git", |
@@ -1376,5 +1376,5 @@ import type { ModelData } from "./model-data.js"; | ||
let autoSnippet: string; | ||
const autoSnippet = []; | ||
if (info.processor) { | ||
const varName = | ||
const processorVarName = | ||
info.processor === "AutoTokenizer" | ||
@@ -1385,15 +1385,46 @@ ? "tokenizer" | ||
: "processor"; | ||
autoSnippet = [ | ||
autoSnippet.push( | ||
"# Load model directly", | ||
`from transformers import ${info.processor}, ${info.auto_model}`, | ||
"", | ||
`${varName} = ${info.processor}.from_pretrained("${model.id}"` + remote_code_snippet + ")", | ||
`model = ${info.auto_model}.from_pretrained("${model.id}"` + remote_code_snippet + ")", | ||
].join("\n"); | ||
`${processorVarName} = ${info.processor}.from_pretrained("${model.id}"` + remote_code_snippet + ")", | ||
`model = ${info.auto_model}.from_pretrained("${model.id}"` + remote_code_snippet + ")" | ||
); | ||
if (model.tags.includes("conversational")) { | ||
if (model.tags.includes("image-text-to-text")) { | ||
autoSnippet.push( | ||
"messages = [", | ||
[ | ||
" {", | ||
' "role": "user",', | ||
' "content": [', | ||
' {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"},', | ||
' {"type": "text", "text": "What animal is on the candy?"}', | ||
" ]", | ||
" },", | ||
].join("\n"), | ||
"]" | ||
); | ||
} else { | ||
autoSnippet.push("messages = [", ' {"role": "user", "content": "Who are you?"},', "]"); | ||
} | ||
autoSnippet.push( | ||
"inputs = ${processorVarName}.apply_chat_template(", | ||
" messages,", | ||
" add_generation_prompt=True,", | ||
" tokenize=True,", | ||
" return_dict=True,", | ||
' return_tensors="pt",', | ||
").to(model.device)", | ||
"", | ||
"outputs = model.generate(**inputs, max_new_tokens=40)", | ||
'print(${processorVarName}.decode(outputs[0][inputs["input_ids"].shape[-1]:]))' | ||
); | ||
} | ||
} else { | ||
autoSnippet = [ | ||
autoSnippet.push( | ||
"# Load model directly", | ||
`from transformers import ${info.auto_model}`, | ||
`model = ${info.auto_model}.from_pretrained("${model.id}"` + remote_code_snippet + ")", | ||
].join("\n"); | ||
`model = ${info.auto_model}.from_pretrained("${model.id}"` + remote_code_snippet + ', torch_dtype="auto"),' | ||
); | ||
} | ||
@@ -1442,5 +1473,5 @@ | ||
return [pipelineSnippet.join("\n"), autoSnippet]; | ||
return [pipelineSnippet.join("\n"), autoSnippet.join("\n")]; | ||
} | ||
return [autoSnippet]; | ||
return [autoSnippet.join("\n")]; | ||
}; | ||
@@ -1447,0 +1478,0 @@ |
@@ -527,2 +527,9 @@ import * as snippets from "./model-libraries-snippets.js"; | ||
}, | ||
kronos: { | ||
prettyLabel: "KRONOS", | ||
repoName: "KRONOS", | ||
repoUrl: "https://github.com/mahmoodlab/KRONOS", | ||
filter: false, | ||
countDownloads: `path_extension:"pt"`, | ||
}, | ||
k2: { | ||
@@ -529,0 +536,0 @@ prettyLabel: "K2", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
1904719
0.22%47296
0.18%