( pkg: InjectedPackageSpec, opts: DevPythonOptions )
| 320 | } |
| 321 | |
| 322 | async function installInjectedDevPackage( |
| 323 | pkg: InjectedPackageSpec, |
| 324 | opts: DevPythonOptions |
| 325 | ): Promise<void> { |
| 326 | const targetDir = join(opts.workPath, '.vercel', 'python'); |
| 327 | const key = `${targetDir}:${pkg.name}`; |
| 328 | |
| 329 | let pending = PENDING_INSTALLS.get(key); |
| 330 | if (!pending) { |
| 331 | pending = doInstallInjectedDevPackage(pkg, { ...opts, targetDir }); |
| 332 | PENDING_INSTALLS.set(key, pending); |
| 333 | pending.finally(() => PENDING_INSTALLS.delete(key)); |
| 334 | } |
| 335 | await pending; |
| 336 | } |
| 337 | |
| 338 | async function doInstallInjectedDevPackage( |
| 339 | pkg: InjectedPackageSpec, |
no test coverage detected