@@ -14,6 +14,7 @@ import {
1414 SHOULD_SNAPSHOT_TO_DISK ,
1515 WORKFLOWS_ENABLED ,
1616 LEGACY_GLOBAL_HANDLERS ,
17+ LEGACY_INCLUDE_SDK ,
1718} from 'pyodide-internal:metadata' ;
1819import { default as Limiter } from 'pyodide-internal:limiter' ;
1920import {
@@ -162,55 +163,58 @@ async function applyPatch(pyodide: Pyodide, patchName: string): Promise<void> {
162163 pyodide . pyimport ( patchName + '_patch' ) ;
163164}
164165
166+ async function injectWorkersApi ( pyodide : Pyodide ) : Promise < void > {
167+ const sitePackages = pyodide . FS . sitePackages ;
168+ if ( pyodide . version === '0.26.0a2' ) {
169+ // Inject at cloudflare.workers for backwards compatibility
170+ pyodide . FS . mkdirTree ( `${ sitePackages } /cloudflare/workers` ) ;
171+ await injectSitePackagesModule (
172+ pyodide ,
173+ 'workers-api/src/workers/__init__' ,
174+ 'cloudflare/workers/__init__'
175+ ) ;
176+ await injectSitePackagesModule (
177+ pyodide ,
178+ 'workers-api/src/workers/_workers' ,
179+ 'cloudflare/workers/_workers'
180+ ) ;
181+ }
182+ // The SDK was moved from `cloudflare.workers` to just `workers`.
183+ // Create workers package structure with workflows submodule
184+ pyodide . FS . mkdir ( `${ sitePackages } /workers` ) ;
185+ await injectSitePackagesModule (
186+ pyodide ,
187+ 'workers-api/src/workers/__init__' ,
188+ 'workers/__init__'
189+ ) ;
190+ await injectSitePackagesModule (
191+ pyodide ,
192+ 'workers-api/src/workers/_workers' ,
193+ 'workers/_workers'
194+ ) ;
195+ await injectSitePackagesModule (
196+ pyodide ,
197+ 'workers-api/src/workers/workflows' ,
198+ 'workers/workflows'
199+ ) ;
200+ await injectSitePackagesModule ( pyodide , 'workers-api/src/asgi' , 'asgi' ) ;
201+ }
202+
165203async function setupPatches ( pyodide : Pyodide ) : Promise < void > {
166204 await enterJaegerSpan ( 'setup_patches' , async ( ) => {
167205 patchLoadPackage ( pyodide ) ;
168206
169207 // install any extra packages into the site-packages directory
170- const sitePackages = pyodide . FS . sitePackages ;
171208 // Expose the doAnImport function and global modules to Python globals
172209 pyodide . registerJsModule (
173210 '_pyodide_entrypoint_helper' ,
174211 get_pyodide_entrypoint_helper ( )
175212 ) ;
176213
177214 // Inject modules that enable JS features to be used idiomatically from Python.
178- //
179- // NOTE: setupPatches is called after memorySnapshotDoImports, so any modules injected here
180- // shouldn't be part of the snapshot and should filtered out in filterPythonScriptImports.
181- if ( pyodide . version === '0.26.0a2' ) {
182- // Inject at cloudflare.workers for backwards compatibility
183- pyodide . FS . mkdirTree ( `${ sitePackages } /cloudflare/workers` ) ;
184- await injectSitePackagesModule (
185- pyodide ,
186- 'workers-api/src/workers/__init__' ,
187- 'cloudflare/workers/__init__'
188- ) ;
189- await injectSitePackagesModule (
190- pyodide ,
191- 'workers-api/src/workers/_workers' ,
192- 'cloudflare/workers/_workers'
193- ) ;
215+ if ( LEGACY_INCLUDE_SDK ) {
216+ await injectWorkersApi ( pyodide ) ;
194217 }
195- // The SDK was moved from `cloudflare.workers` to just `workers`.
196- // Create workers package structure with workflows submodule
197- pyodide . FS . mkdir ( `${ sitePackages } /workers` ) ;
198- await injectSitePackagesModule (
199- pyodide ,
200- 'workers-api/src/workers/__init__' ,
201- 'workers/__init__'
202- ) ;
203- await injectSitePackagesModule (
204- pyodide ,
205- 'workers-api/src/workers/_workers' ,
206- 'workers/_workers'
207- ) ;
208- await injectSitePackagesModule (
209- pyodide ,
210- 'workers-api/src/workers/workflows' ,
211- 'workers/workflows'
212- ) ;
213- await injectSitePackagesModule ( pyodide , 'workers-api/src/asgi' , 'asgi' ) ;
214218
215219 // Install patches as needed
216220 if ( TRANSITIVE_REQUIREMENTS . has ( 'aiohttp' ) ) {
0 commit comments