diff --git a/packages/tasks-gen/scripts/generate-snippets-fixtures.ts b/packages/tasks-gen/scripts/generate-snippets-fixtures.ts index c9051a2c57..2422803148 100644 --- a/packages/tasks-gen/scripts/generate-snippets-fixtures.ts +++ b/packages/tasks-gen/scripts/generate-snippets-fixtures.ts @@ -22,12 +22,14 @@ import * as path from "node:path/posix"; import { snippets } from "@huggingface/inference"; import type { SnippetInferenceProvider, InferenceSnippet, ModelDataMinimal } from "@huggingface/tasks"; -type LANGUAGE = "sh" | "js" | "py"; +const LANGUAGES = ["sh", "js", "python"] as const; +type Language = (typeof LANGUAGES)[number]; +const EXTENSIONS: Record = { sh: "sh", js: "js", python: "py" }; const TEST_CASES: { testName: string; model: ModelDataMinimal; - languages: LANGUAGE[]; + languages: Language[]; providers: SnippetInferenceProvider[]; opts?: Record; }[] = [ @@ -39,7 +41,7 @@ const TEST_CASES: { tags: [], inference: "", }, - languages: ["py"], + languages: ["python"], providers: ["hf-inference"], }, { @@ -50,7 +52,7 @@ const TEST_CASES: { tags: ["conversational"], inference: "", }, - languages: ["sh", "js", "py"], + languages: ["sh", "js", "python"], providers: ["hf-inference", "together"], opts: { streaming: false }, }, @@ -62,7 +64,7 @@ const TEST_CASES: { tags: ["conversational"], inference: "", }, - languages: ["sh", "js", "py"], + languages: ["sh", "js", "python"], providers: ["hf-inference", "together"], opts: { streaming: true }, }, @@ -74,7 +76,7 @@ const TEST_CASES: { tags: ["conversational"], inference: "", }, - languages: ["sh", "js", "py"], + languages: ["sh", "js", "python"], providers: ["hf-inference", "fireworks-ai"], opts: { streaming: false }, }, @@ -86,7 +88,7 @@ const TEST_CASES: { tags: ["conversational"], inference: "", }, - languages: ["sh", "js", "py"], + languages: ["sh", "js", "python"], providers: ["hf-inference", "fireworks-ai"], opts: { streaming: true }, }, @@ -98,7 +100,7 @@ const TEST_CASES: { tags: [], inference: "", }, - languages: ["py"], + languages: ["python"], providers: ["hf-inference"], }, { @@ -109,7 +111,7 @@ const TEST_CASES: { tags: [], inference: "", }, - languages: ["py"], + languages: ["python"], providers: ["hf-inference"], }, { @@ -121,7 +123,7 @@ const TEST_CASES: { inference: "", }, providers: ["hf-inference"], - languages: ["py"], + languages: ["python"], }, { testName: "text-to-audio-transformers", @@ -132,7 +134,7 @@ const TEST_CASES: { inference: "", }, providers: ["hf-inference"], - languages: ["py"], + languages: ["python"], }, { testName: "text-to-image", @@ -143,7 +145,7 @@ const TEST_CASES: { inference: "", }, providers: ["hf-inference", "fal-ai"], - languages: ["sh", "js", "py"], + languages: ["sh", "js", "python"], }, { testName: "text-to-video", @@ -154,7 +156,7 @@ const TEST_CASES: { inference: "", }, providers: ["replicate", "fal-ai"], - languages: ["js", "py"], + languages: ["js", "python"], }, { testName: "text-classification", @@ -165,7 +167,7 @@ const TEST_CASES: { inference: "", }, providers: ["hf-inference"], - languages: ["sh", "js", "py"], + languages: ["sh", "js", "python"], }, { testName: "basic-snippet--token-classification", @@ -176,7 +178,7 @@ const TEST_CASES: { inference: "", }, providers: ["hf-inference"], - languages: ["py"], + languages: ["python"], }, { testName: "zero-shot-classification", @@ -187,7 +189,7 @@ const TEST_CASES: { inference: "", }, providers: ["hf-inference"], - languages: ["py"], + languages: ["python"], }, { testName: "zero-shot-image-classification", @@ -198,14 +200,14 @@ const TEST_CASES: { inference: "", }, providers: ["hf-inference"], - languages: ["py"], + languages: ["python"], }, ] as const; const GET_SNIPPET_FN = { sh: snippets.curl.getCurlInferenceSnippet, js: snippets.js.getJsInferenceSnippet, - py: snippets.python.getPythonInferenceSnippet, + python: snippets.python.getPythonInferenceSnippet, } as const; const rootDirFinder = (): string => { @@ -228,26 +230,28 @@ function getFixtureFolder(testName: string): string { function generateInferenceSnippet( model: ModelDataMinimal, - language: LANGUAGE, + language: Language, provider: SnippetInferenceProvider, opts?: Record ): InferenceSnippet[] { const providerModelId = provider === "hf-inference" ? model.id : `<${provider} alias for ${model.id}>`; - return GET_SNIPPET_FN[language](model, "api_token", provider, providerModelId, opts); + const snippets = GET_SNIPPET_FN[language](model, "api_token", provider, providerModelId, opts) as InferenceSnippet[]; + return snippets.sort((snippetA, snippetB) => snippetA.client.localeCompare(snippetB.client)); } async function getExpectedInferenceSnippet( testName: string, - language: LANGUAGE, + language: Language, provider: SnippetInferenceProvider ): Promise { const fixtureFolder = getFixtureFolder(testName); - const files = await fs.readdir(fixtureFolder); + const languageFolder = path.join(fixtureFolder, language); + const files = await fs.readdir(languageFolder, { recursive: true }); const expectedSnippets: InferenceSnippet[] = []; - for (const file of files.filter((file) => file.endsWith("." + language) && file.includes(`.${provider}.`)).sort()) { - const client = path.basename(file).split(".").slice(1, -2).join("."); // e.g. '0.huggingface.js.replicate.js' => "huggingface.js" - const content = await fs.readFile(path.join(fixtureFolder, file), { encoding: "utf-8" }); + for (const file of files.filter((file) => file.includes(`.${provider}.`)).sort()) { + const client = file.split("/")[0]; // e.g. fal_client/1.fal-ai.python => fal_client + const content = await fs.readFile(path.join(languageFolder, file), { encoding: "utf-8" }); expectedSnippets.push({ client, content }); } return expectedSnippets; @@ -255,15 +259,22 @@ async function getExpectedInferenceSnippet( async function saveExpectedInferenceSnippet( testName: string, - language: LANGUAGE, + language: Language, provider: SnippetInferenceProvider, snippets: InferenceSnippet[] ) { const fixtureFolder = getFixtureFolder(testName); await fs.mkdir(fixtureFolder, { recursive: true }); - for (const [index, snippet] of snippets.entries()) { - const file = path.join(fixtureFolder, `${index}.${snippet.client ?? "default"}.${provider}.${language}`); + const indexPerClient = new Map(); + for (const snippet of snippets) { + const extension = EXTENSIONS[language]; + const client = snippet.client; + const index = indexPerClient.get(client) ?? 0; + indexPerClient.set(client, index + 1); + + const file = path.join(fixtureFolder, language, snippet.client, `${index}.${provider}.${extension}`); + await fs.mkdir(path.dirname(file), { recursive: true }); await fs.writeFile(file, snippet.content); } } diff --git a/packages/tasks-gen/snippets-fixtures/automatic-speech-recognition/0.huggingface_hub.hf-inference.py b/packages/tasks-gen/snippets-fixtures/automatic-speech-recognition/python/huggingface_hub/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/automatic-speech-recognition/0.huggingface_hub.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/automatic-speech-recognition/python/huggingface_hub/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/automatic-speech-recognition/1.requests.hf-inference.py b/packages/tasks-gen/snippets-fixtures/automatic-speech-recognition/python/requests/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/automatic-speech-recognition/1.requests.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/automatic-speech-recognition/python/requests/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/basic-snippet--token-classification/0.huggingface_hub.hf-inference.py b/packages/tasks-gen/snippets-fixtures/basic-snippet--token-classification/python/huggingface_hub/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/basic-snippet--token-classification/0.huggingface_hub.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/basic-snippet--token-classification/python/huggingface_hub/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/basic-snippet--token-classification/1.requests.hf-inference.py b/packages/tasks-gen/snippets-fixtures/basic-snippet--token-classification/python/requests/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/basic-snippet--token-classification/1.requests.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/basic-snippet--token-classification/python/requests/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/0.huggingface.js.hf-inference.js b/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/js/huggingface.js/0.hf-inference.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/0.huggingface.js.hf-inference.js rename to packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/js/huggingface.js/0.hf-inference.js diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/0.huggingface.js.together.js b/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/js/huggingface.js/0.together.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/0.huggingface.js.together.js rename to packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/js/huggingface.js/0.together.js diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/1.openai.hf-inference.js b/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/js/openai/0.hf-inference.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/1.openai.hf-inference.js rename to packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/js/openai/0.hf-inference.js diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/1.openai.together.js b/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/js/openai/0.together.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/1.openai.together.js rename to packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/js/openai/0.together.js diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/0.huggingface_hub.hf-inference.py b/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/python/huggingface_hub/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/0.huggingface_hub.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/python/huggingface_hub/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/0.huggingface_hub.together.py b/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/python/huggingface_hub/0.together.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/0.huggingface_hub.together.py rename to packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/python/huggingface_hub/0.together.py diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/1.openai.hf-inference.py b/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/python/openai/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/1.openai.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/python/openai/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/1.openai.together.py b/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/python/openai/0.together.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/1.openai.together.py rename to packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/python/openai/0.together.py diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/0.curl.hf-inference.sh b/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/sh/curl/0.hf-inference.sh similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/0.curl.hf-inference.sh rename to packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/sh/curl/0.hf-inference.sh diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/0.curl.together.sh b/packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/sh/curl/0.together.sh similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/0.curl.together.sh rename to packages/tasks-gen/snippets-fixtures/conversational-llm-non-stream/sh/curl/0.together.sh diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/0.huggingface.js.hf-inference.js b/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/js/huggingface.js/0.hf-inference.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-stream/0.huggingface.js.hf-inference.js rename to packages/tasks-gen/snippets-fixtures/conversational-llm-stream/js/huggingface.js/0.hf-inference.js diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/0.huggingface.js.together.js b/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/js/huggingface.js/0.together.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-stream/0.huggingface.js.together.js rename to packages/tasks-gen/snippets-fixtures/conversational-llm-stream/js/huggingface.js/0.together.js diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/1.openai.hf-inference.js b/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/js/openai/0.hf-inference.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-stream/1.openai.hf-inference.js rename to packages/tasks-gen/snippets-fixtures/conversational-llm-stream/js/openai/0.hf-inference.js diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/1.openai.together.js b/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/js/openai/0.together.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-stream/1.openai.together.js rename to packages/tasks-gen/snippets-fixtures/conversational-llm-stream/js/openai/0.together.js diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/0.huggingface_hub.hf-inference.py b/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/python/huggingface_hub/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-stream/0.huggingface_hub.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/conversational-llm-stream/python/huggingface_hub/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/0.huggingface_hub.together.py b/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/python/huggingface_hub/0.together.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-stream/0.huggingface_hub.together.py rename to packages/tasks-gen/snippets-fixtures/conversational-llm-stream/python/huggingface_hub/0.together.py diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/1.openai.hf-inference.py b/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/python/openai/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-stream/1.openai.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/conversational-llm-stream/python/openai/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/1.openai.together.py b/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/python/openai/0.together.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-stream/1.openai.together.py rename to packages/tasks-gen/snippets-fixtures/conversational-llm-stream/python/openai/0.together.py diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/0.curl.hf-inference.sh b/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/sh/curl/0.hf-inference.sh similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-stream/0.curl.hf-inference.sh rename to packages/tasks-gen/snippets-fixtures/conversational-llm-stream/sh/curl/0.hf-inference.sh diff --git a/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/0.curl.together.sh b/packages/tasks-gen/snippets-fixtures/conversational-llm-stream/sh/curl/0.together.sh similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-llm-stream/0.curl.together.sh rename to packages/tasks-gen/snippets-fixtures/conversational-llm-stream/sh/curl/0.together.sh diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/0.huggingface.js.fireworks-ai.js b/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/js/huggingface.js/0.fireworks-ai.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/0.huggingface.js.fireworks-ai.js rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/js/huggingface.js/0.fireworks-ai.js diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/0.huggingface.js.hf-inference.js b/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/js/huggingface.js/0.hf-inference.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/0.huggingface.js.hf-inference.js rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/js/huggingface.js/0.hf-inference.js diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/1.openai.fireworks-ai.js b/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/js/openai/0.fireworks-ai.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/1.openai.fireworks-ai.js rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/js/openai/0.fireworks-ai.js diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/1.openai.hf-inference.js b/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/js/openai/0.hf-inference.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/1.openai.hf-inference.js rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/js/openai/0.hf-inference.js diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/0.huggingface_hub.fireworks-ai.py b/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/python/huggingface_hub/0.fireworks-ai.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/0.huggingface_hub.fireworks-ai.py rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/python/huggingface_hub/0.fireworks-ai.py diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/0.huggingface_hub.hf-inference.py b/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/python/huggingface_hub/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/0.huggingface_hub.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/python/huggingface_hub/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/1.openai.fireworks-ai.py b/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/python/openai/0.fireworks-ai.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/1.openai.fireworks-ai.py rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/python/openai/0.fireworks-ai.py diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/1.openai.hf-inference.py b/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/python/openai/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/1.openai.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/python/openai/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/0.curl.fireworks-ai.sh b/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/sh/curl/0.fireworks-ai.sh similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/0.curl.fireworks-ai.sh rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/sh/curl/0.fireworks-ai.sh diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/0.curl.hf-inference.sh b/packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/sh/curl/0.hf-inference.sh similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/0.curl.hf-inference.sh rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-non-stream/sh/curl/0.hf-inference.sh diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/0.huggingface.js.fireworks-ai.js b/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/js/huggingface.js/0.fireworks-ai.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/0.huggingface.js.fireworks-ai.js rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/js/huggingface.js/0.fireworks-ai.js diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/0.huggingface.js.hf-inference.js b/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/js/huggingface.js/0.hf-inference.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/0.huggingface.js.hf-inference.js rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/js/huggingface.js/0.hf-inference.js diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/1.openai.fireworks-ai.js b/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/js/openai/0.fireworks-ai.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/1.openai.fireworks-ai.js rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/js/openai/0.fireworks-ai.js diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/1.openai.hf-inference.js b/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/js/openai/0.hf-inference.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/1.openai.hf-inference.js rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/js/openai/0.hf-inference.js diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/0.huggingface_hub.fireworks-ai.py b/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/python/huggingface_hub/0.fireworks-ai.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/0.huggingface_hub.fireworks-ai.py rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/python/huggingface_hub/0.fireworks-ai.py diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/0.huggingface_hub.hf-inference.py b/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/python/huggingface_hub/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/0.huggingface_hub.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/python/huggingface_hub/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/1.openai.fireworks-ai.py b/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/python/openai/0.fireworks-ai.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/1.openai.fireworks-ai.py rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/python/openai/0.fireworks-ai.py diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/1.openai.hf-inference.py b/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/python/openai/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/1.openai.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/python/openai/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/0.curl.fireworks-ai.sh b/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/sh/curl/0.fireworks-ai.sh similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/0.curl.fireworks-ai.sh rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/sh/curl/0.fireworks-ai.sh diff --git a/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/0.curl.hf-inference.sh b/packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/sh/curl/0.hf-inference.sh similarity index 100% rename from packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/0.curl.hf-inference.sh rename to packages/tasks-gen/snippets-fixtures/conversational-vlm-stream/sh/curl/0.hf-inference.sh diff --git a/packages/tasks-gen/snippets-fixtures/document-question-answering/0.huggingface_hub.hf-inference.py b/packages/tasks-gen/snippets-fixtures/document-question-answering/python/huggingface_hub/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/document-question-answering/0.huggingface_hub.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/document-question-answering/python/huggingface_hub/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/document-question-answering/1.requests.hf-inference.py b/packages/tasks-gen/snippets-fixtures/document-question-answering/python/requests/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/document-question-answering/1.requests.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/document-question-answering/python/requests/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/image-to-image/0.huggingface_hub.hf-inference.py b/packages/tasks-gen/snippets-fixtures/image-to-image/python/huggingface_hub/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/image-to-image/0.huggingface_hub.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/image-to-image/python/huggingface_hub/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/image-to-image/1.requests.hf-inference.py b/packages/tasks-gen/snippets-fixtures/image-to-image/python/requests/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/image-to-image/1.requests.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/image-to-image/python/requests/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/tabular/0.requests.hf-inference.py b/packages/tasks-gen/snippets-fixtures/tabular/python/requests/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/tabular/0.requests.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/tabular/python/requests/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/text-classification/1.fetch.hf-inference.js b/packages/tasks-gen/snippets-fixtures/text-classification/js/fetch/0.hf-inference.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-classification/1.fetch.hf-inference.js rename to packages/tasks-gen/snippets-fixtures/text-classification/js/fetch/0.hf-inference.js diff --git a/packages/tasks-gen/snippets-fixtures/text-classification/0.huggingface.js.hf-inference.js b/packages/tasks-gen/snippets-fixtures/text-classification/js/huggingface.js/0.hf-inference.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-classification/0.huggingface.js.hf-inference.js rename to packages/tasks-gen/snippets-fixtures/text-classification/js/huggingface.js/0.hf-inference.js diff --git a/packages/tasks-gen/snippets-fixtures/text-classification/0.huggingface_hub.hf-inference.py b/packages/tasks-gen/snippets-fixtures/text-classification/python/huggingface_hub/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-classification/0.huggingface_hub.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/text-classification/python/huggingface_hub/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/text-classification/1.requests.hf-inference.py b/packages/tasks-gen/snippets-fixtures/text-classification/python/requests/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-classification/1.requests.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/text-classification/python/requests/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/text-classification/0.curl.hf-inference.sh b/packages/tasks-gen/snippets-fixtures/text-classification/sh/curl/0.hf-inference.sh similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-classification/0.curl.hf-inference.sh rename to packages/tasks-gen/snippets-fixtures/text-classification/sh/curl/0.hf-inference.sh diff --git a/packages/tasks-gen/snippets-fixtures/text-to-audio-transformers/0.requests.hf-inference.py b/packages/tasks-gen/snippets-fixtures/text-to-audio-transformers/python/requests/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-to-audio-transformers/0.requests.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/text-to-audio-transformers/python/requests/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/text-to-image/1.fetch.hf-inference.js b/packages/tasks-gen/snippets-fixtures/text-to-image/js/fetch/0.hf-inference.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-to-image/1.fetch.hf-inference.js rename to packages/tasks-gen/snippets-fixtures/text-to-image/js/fetch/0.hf-inference.js diff --git a/packages/tasks-gen/snippets-fixtures/text-to-image/0.huggingface.js.fal-ai.js b/packages/tasks-gen/snippets-fixtures/text-to-image/js/huggingface.js/0.fal-ai.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-to-image/0.huggingface.js.fal-ai.js rename to packages/tasks-gen/snippets-fixtures/text-to-image/js/huggingface.js/0.fal-ai.js diff --git a/packages/tasks-gen/snippets-fixtures/text-to-image/0.huggingface.js.hf-inference.js b/packages/tasks-gen/snippets-fixtures/text-to-image/js/huggingface.js/0.hf-inference.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-to-image/0.huggingface.js.hf-inference.js rename to packages/tasks-gen/snippets-fixtures/text-to-image/js/huggingface.js/0.hf-inference.js diff --git a/packages/tasks-gen/snippets-fixtures/text-to-image/1.fal_client.fal-ai.py b/packages/tasks-gen/snippets-fixtures/text-to-image/python/fal_client/0.fal-ai.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-to-image/1.fal_client.fal-ai.py rename to packages/tasks-gen/snippets-fixtures/text-to-image/python/fal_client/0.fal-ai.py diff --git a/packages/tasks-gen/snippets-fixtures/text-to-image/0.huggingface_hub.fal-ai.py b/packages/tasks-gen/snippets-fixtures/text-to-image/python/huggingface_hub/0.fal-ai.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-to-image/0.huggingface_hub.fal-ai.py rename to packages/tasks-gen/snippets-fixtures/text-to-image/python/huggingface_hub/0.fal-ai.py diff --git a/packages/tasks-gen/snippets-fixtures/text-to-image/0.huggingface_hub.hf-inference.py b/packages/tasks-gen/snippets-fixtures/text-to-image/python/huggingface_hub/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-to-image/0.huggingface_hub.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/text-to-image/python/huggingface_hub/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/text-to-image/1.requests.hf-inference.py b/packages/tasks-gen/snippets-fixtures/text-to-image/python/requests/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-to-image/1.requests.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/text-to-image/python/requests/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/text-to-image/0.curl.hf-inference.sh b/packages/tasks-gen/snippets-fixtures/text-to-image/sh/curl/0.hf-inference.sh similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-to-image/0.curl.hf-inference.sh rename to packages/tasks-gen/snippets-fixtures/text-to-image/sh/curl/0.hf-inference.sh diff --git a/packages/tasks-gen/snippets-fixtures/text-to-video/0.huggingface.js.fal-ai.js b/packages/tasks-gen/snippets-fixtures/text-to-video/js/huggingface.js/0.fal-ai.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-to-video/0.huggingface.js.fal-ai.js rename to packages/tasks-gen/snippets-fixtures/text-to-video/js/huggingface.js/0.fal-ai.js diff --git a/packages/tasks-gen/snippets-fixtures/text-to-video/0.huggingface.js.replicate.js b/packages/tasks-gen/snippets-fixtures/text-to-video/js/huggingface.js/0.replicate.js similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-to-video/0.huggingface.js.replicate.js rename to packages/tasks-gen/snippets-fixtures/text-to-video/js/huggingface.js/0.replicate.js diff --git a/packages/tasks-gen/snippets-fixtures/text-to-video/0.huggingface_hub.fal-ai.py b/packages/tasks-gen/snippets-fixtures/text-to-video/python/huggingface_hub/0.fal-ai.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-to-video/0.huggingface_hub.fal-ai.py rename to packages/tasks-gen/snippets-fixtures/text-to-video/python/huggingface_hub/0.fal-ai.py diff --git a/packages/tasks-gen/snippets-fixtures/text-to-video/0.huggingface_hub.replicate.py b/packages/tasks-gen/snippets-fixtures/text-to-video/python/huggingface_hub/0.replicate.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/text-to-video/0.huggingface_hub.replicate.py rename to packages/tasks-gen/snippets-fixtures/text-to-video/python/huggingface_hub/0.replicate.py diff --git a/packages/tasks-gen/snippets-fixtures/zero-shot-classification/0.requests.hf-inference.py b/packages/tasks-gen/snippets-fixtures/zero-shot-classification/python/requests/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/zero-shot-classification/0.requests.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/zero-shot-classification/python/requests/0.hf-inference.py diff --git a/packages/tasks-gen/snippets-fixtures/zero-shot-image-classification/0.requests.hf-inference.py b/packages/tasks-gen/snippets-fixtures/zero-shot-image-classification/python/requests/0.hf-inference.py similarity index 100% rename from packages/tasks-gen/snippets-fixtures/zero-shot-image-classification/0.requests.hf-inference.py rename to packages/tasks-gen/snippets-fixtures/zero-shot-image-classification/python/requests/0.hf-inference.py