machineuser commited on
Commit
ab9170f
1 Parent(s): 76bddde

Sync widgets demo

Browse files
packages/tasks/.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ .python_generated
packages/tasks/package.json CHANGED
@@ -44,6 +44,6 @@
44
  "license": "MIT",
45
  "devDependencies": {
46
  "@types/node": "^20.11.5",
47
- "quicktype-core": "https://github.com/huggingface/quicktype/raw/pack-18.0.15/packages/quicktype-core/quicktype-core-18.0.15.tgz"
48
  }
49
  }
 
44
  "license": "MIT",
45
  "devDependencies": {
46
  "@types/node": "^20.11.5",
47
+ "quicktype-core": "https://github.com/huggingface/quicktype/raw/pack-18.0.17/packages/quicktype-core/quicktype-core-18.0.17.tgz"
48
  }
49
  }
packages/tasks/pnpm-lock.yaml CHANGED
@@ -9,8 +9,8 @@ devDependencies:
9
  specifier: ^20.11.5
10
  version: 20.11.5
11
  quicktype-core:
12
- specifier: https://github.com/huggingface/quicktype/raw/pack-18.0.15/packages/quicktype-core/quicktype-core-18.0.15.tgz
13
- version: '@github.com/huggingface/quicktype/raw/pack-18.0.15/packages/quicktype-core/quicktype-core-18.0.15.tgz'
14
 
15
  packages:
16
 
@@ -189,10 +189,10 @@ packages:
189
  engines: {node: '>= 14'}
190
  dev: true
191
 
192
- '@github.com/huggingface/quicktype/raw/pack-18.0.15/packages/quicktype-core/quicktype-core-18.0.15.tgz':
193
- resolution: {tarball: https://github.com/huggingface/quicktype/raw/pack-18.0.15/packages/quicktype-core/quicktype-core-18.0.15.tgz}
194
  name: quicktype-core
195
- version: 18.0.15
196
  dependencies:
197
  '@glideapps/ts-necessities': 2.1.3
198
  '@types/urijs': 1.19.25
 
9
  specifier: ^20.11.5
10
  version: 20.11.5
11
  quicktype-core:
12
+ specifier: https://github.com/huggingface/quicktype/raw/pack-18.0.17/packages/quicktype-core/quicktype-core-18.0.17.tgz
13
+ version: '@github.com/huggingface/quicktype/raw/pack-18.0.17/packages/quicktype-core/quicktype-core-18.0.17.tgz'
14
 
15
  packages:
16
 
 
189
  engines: {node: '>= 14'}
190
  dev: true
191
 
192
+ '@github.com/huggingface/quicktype/raw/pack-18.0.17/packages/quicktype-core/quicktype-core-18.0.17.tgz':
193
+ resolution: {tarball: https://github.com/huggingface/quicktype/raw/pack-18.0.17/packages/quicktype-core/quicktype-core-18.0.17.tgz}
194
  name: quicktype-core
195
+ version: 18.0.17
196
  dependencies:
197
  '@glideapps/ts-necessities': 2.1.3
198
  '@types/urijs': 1.19.25
packages/tasks/scripts/inference-codegen.ts CHANGED
@@ -14,6 +14,16 @@ const TYPESCRIPT_HEADER_FILE = `
14
 
15
  `;
16
 
 
 
 
 
 
 
 
 
 
 
17
  const rootDirFinder = function (): string {
18
  let currentPath = path.normalize(import.meta.url);
19
 
@@ -62,9 +72,24 @@ async function generateTypescript(inputData: InputData): Promise<SerializedRende
62
  "prefer-const-values": true,
63
  "prefer-unknown": true,
64
  "explicit-unions": true,
 
65
  },
66
  });
67
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  /**
69
  * quicktype is unable to generate "top-level array types" that are defined in the output spec: https://github.com/glideapps/quicktype/issues/2481
70
  * We have to use the TypeScript API to generate those types when required.
@@ -180,5 +205,17 @@ for (const { task, dirPath } of allTasks) {
180
 
181
  console.log(" 🩹 Post-processing the generated code");
182
  await postProcessOutput(`${dirPath}/inference.ts`, outputSpec);
 
 
 
 
 
 
 
 
 
 
 
 
183
  }
184
  console.debug("✅ All done!");
 
14
 
15
  `;
16
 
17
+ const PYTHON_HEADER_FILE = `
18
+ # Inference code generated from the JSON schema spec in @huggingface/tasks.
19
+ #
20
+ # See:
21
+ # - script: https://github.com/huggingface/huggingface.js/blob/main/packages/tasks/scripts/inference-codegen.ts
22
+ # - specs: https://github.com/huggingface/huggingface.js/tree/main/packages/tasks/src/tasks.
23
+ `;
24
+
25
+ const PYTHON_DIR = "./.python_generated";
26
+
27
  const rootDirFinder = function (): string {
28
  let currentPath = path.normalize(import.meta.url);
29
 
 
72
  "prefer-const-values": true,
73
  "prefer-unknown": true,
74
  "explicit-unions": true,
75
+ "runtime-typecheck": false,
76
  },
77
  });
78
  }
79
+
80
+ async function generatePython(inputData: InputData): Promise<SerializedRenderResult> {
81
+ return await quicktype({
82
+ inputData,
83
+ lang: "python",
84
+ alphabetizeProperties: true,
85
+ rendererOptions: {
86
+ "just-types": true,
87
+ "nice-property-names": true,
88
+ "python-version": "3.7",
89
+ },
90
+ });
91
+ }
92
+
93
  /**
94
  * quicktype is unable to generate "top-level array types" that are defined in the output spec: https://github.com/glideapps/quicktype/issues/2481
95
  * We have to use the TypeScript API to generate those types when required.
 
205
 
206
  console.log(" 🩹 Post-processing the generated code");
207
  await postProcessOutput(`${dirPath}/inference.ts`, outputSpec);
208
+
209
+ console.debug(" 🏭 Generating Python code");
210
+ {
211
+ const { lines } = await generatePython(inputData);
212
+ const pythonFilename = `${task}.py`.replace(/-/g, "_");
213
+ const pythonPath = `${PYTHON_DIR}/${pythonFilename}`;
214
+ await fs.mkdir(PYTHON_DIR, { recursive: true });
215
+ await fs.writeFile(pythonPath, [PYTHON_HEADER_FILE, ...lines].join(`\n`), {
216
+ flag: "w+",
217
+ encoding: "utf-8",
218
+ });
219
+ }
220
  }
221
  console.debug("✅ All done!");