Skip to content

Commit 7206c16

Browse files
authored
Support to load Transformers.js v3 and make it default (#336)
* Support to load Transformers.js v3 and make it default * Update tests * Update tests
1 parent 1bda01e commit 7206c16

File tree

2 files changed

+40
-28
lines changed

2 files changed

+40
-28
lines changed
Lines changed: 37 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { PyodideInterface } from "pyodide";
22
import { beforeEach, describe, it, expect } from "vitest";
33
import { setupPyodideForTest } from "./utils";
4+
import { version } from "os";
45

56
describe("import_transformers_js", () => {
67
let pyodide: PyodideInterface;
@@ -9,42 +10,51 @@ describe("import_transformers_js", () => {
910
pyodide = await setupPyodideForTest();
1011
});
1112

12-
it("can import specific version of Transformers.js", async () => {
13-
await pyodide.runPythonAsync(
14-
`from transformers_js_py import import_transformers_js`,
15-
);
16-
17-
await pyodide.runPythonAsync(
18-
`transformers = await import_transformers_js()`,
19-
);
20-
const versionLatest = await pyodide.runPythonAsync(
21-
`transformers.env.version`,
22-
);
13+
it("loads the latest version of Transformers.js by default", async () => {
2314
const expectedLatestVersion = await fetch(
24-
"https://registry.npmjs.org/@xenova/transformers/latest",
15+
"https://registry.npmjs.org/@huggingface/transformers/latest",
2516
)
2617
.then((response) => response.json())
2718
.then((json) => json.version);
28-
expect(versionLatest).toBe(expectedLatestVersion);
2919

3020
await pyodide.runPythonAsync(
31-
`transformers = await import_transformers_js("2.4.2")`,
32-
);
33-
const version242 = await pyodide.runPythonAsync(`transformers.env.version`);
34-
expect(version242).toBe("2.4.2");
21+
`
22+
from transformers_js_py import import_transformers_js
3523
36-
await pyodide.runPythonAsync(
37-
`transformers = await import_transformers_js("2.7.0")`,
24+
transformers = await import_transformers_js()
25+
`,
3826
);
39-
const version270 = await pyodide.runPythonAsync(`transformers.env.version`);
40-
expect(version270).toBe("2.7.0");
4127

42-
await pyodide.runPythonAsync(
43-
`transformers = await import_transformers_js("https://cdn.jsdelivr.net/npm/@xenova/[email protected]")`,
44-
);
45-
const version2177 = await pyodide.runPythonAsync(
46-
`transformers.env.version`,
28+
expect(pyodide.runPython(`transformers.env.version`)).toBe(
29+
expectedLatestVersion,
4730
);
48-
expect(version2177).toBe("2.17.1");
31+
});
32+
33+
[
34+
{ versionOrUrl: "2.4.2", expectedVersion: "2.4.2" },
35+
{ versionOrUrl: "2.7.0", expectedVersion: "2.7.0" },
36+
{
37+
versionOrUrl: "https://cdn.jsdelivr.net/npm/@xenova/[email protected]",
38+
expectedVersion: "2.17.1",
39+
},
40+
{ versionOrUrl: "3.0.0", expectedVersion: "3.0.0" },
41+
{
42+
versionOrUrl:
43+
"https://cdn.jsdelivr.net/npm/@huggingface/[email protected]",
44+
expectedVersion: "3.1.0",
45+
},
46+
].forEach(({ versionOrUrl, expectedVersion }) => {
47+
it(`can import specific version of Transformers.js. (${versionOrUrl} => ${expectedVersion})`, async () => {
48+
await pyodide.runPythonAsync(
49+
`from transformers_js_py import import_transformers_js`,
50+
);
51+
52+
await pyodide.runPythonAsync(
53+
`transformers = await import_transformers_js("${versionOrUrl}")`,
54+
);
55+
expect(pyodide.runPython(`transformers.env.version`)).toBe(
56+
expectedVersion,
57+
);
58+
});
4959
});
5060
});

transformers_js_py/proxies.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,9 @@ async def import_transformers_js(version_or_url: str = "latest"):
242242
return new URL(versionOrUrl);
243243
} catch {
244244
const version = versionOrUrl;
245-
return new URL('https://cdn.jsdelivr.net/npm/@xenova/transformers@' + version);
245+
const v3 = version === "latest" || version.startsWith("3.");
246+
const packageName = v3 ? '@huggingface/transformers' : '@xenova/transformers';
247+
return new URL(`https://cdn.jsdelivr.net/npm/${packageName}@${version}`);
246248
}
247249
}
248250

0 commit comments

Comments
 (0)