flet-web 0.29.0.dev5039__py3-none-any.whl → 0.70.0.dev5066__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- flet_web/__init__.py +8 -1
- flet_web/fastapi/__init__.py +2 -0
- flet_web/fastapi/app.py +44 -17
- flet_web/fastapi/flet_app.py +195 -288
- flet_web/fastapi/flet_app_manager.py +41 -64
- flet_web/fastapi/flet_oauth.py +2 -1
- flet_web/fastapi/flet_static_files.py +54 -50
- flet_web/fastapi/serve_fastapi_web_app.py +30 -27
- flet_web/patch_index.py +35 -35
- flet_web/version.py +1 -1
- flet_web/web/assets/NOTICES +1815 -3803
- flet_web/web/assets/fonts/roboto.woff2 +0 -0
- flet_web/web/assets/packages/media_kit/assets/web/hls1.4.10.js +2 -2
- flet_web/web/canvaskit/canvaskit.js +192 -0
- flet_web/web/canvaskit/canvaskit.js.symbols +12098 -0
- flet_web/web/canvaskit/canvaskit.wasm +0 -0
- flet_web/web/canvaskit/chromium/canvaskit.js +192 -0
- flet_web/web/canvaskit/chromium/canvaskit.js.symbols +11050 -0
- flet_web/web/canvaskit/chromium/canvaskit.wasm +0 -0
- flet_web/web/canvaskit/skwasm.js +137 -0
- flet_web/web/canvaskit/skwasm.js.symbols +12073 -0
- flet_web/web/canvaskit/skwasm.wasm +0 -0
- flet_web/web/flutter.js +30 -2
- flet_web/web/flutter.js.map +3 -3
- flet_web/web/flutter_bootstrap.js +50 -10
- flet_web/web/flutter_service_worker.js +23 -21
- flet_web/web/index.html +56 -11
- flet_web/web/main.dart.js +170400 -167642
- flet_web/web/main.dart.mjs +44188 -0
- flet_web/web/main.dart.wasm +0 -0
- flet_web/web/pyodide/ffi.d.ts +10 -1
- flet_web/web/pyodide/micropip-0.8.0-py3-none-any.whl +14 -0
- flet_web/web/pyodide/package.json +2 -2
- flet_web/web/pyodide/packaging-24.2-py3-none-any.whl +0 -0
- flet_web/web/pyodide/pyodide-lock.json +1 -1
- flet_web/web/pyodide/pyodide.asm.js +1 -1
- flet_web/web/pyodide/pyodide.asm.wasm +0 -0
- flet_web/web/pyodide/pyodide.d.ts +15 -3
- flet_web/web/pyodide/pyodide.js +1 -1
- flet_web/web/pyodide/pyodide.mjs +2 -2
- flet_web/web/pyodide/python_stdlib.zip +0 -0
- flet_web/web/python-worker.js +75 -24
- flet_web/web/python.js +62 -20
- {flet_web-0.29.0.dev5039.dist-info → flet_web-0.70.0.dev5066.dist-info}/METADATA +3 -3
- flet_web-0.70.0.dev5066.dist-info/RECORD +71 -0
- flet_web-0.29.0.dev5039.dist-info/RECORD +0 -57
- {flet_web-0.29.0.dev5039.dist-info → flet_web-0.70.0.dev5066.dist-info}/WHEEL +0 -0
- {flet_web-0.29.0.dev5039.dist-info → flet_web-0.70.0.dev5066.dist-info}/top_level.txt +0 -0
|
Binary file
|
|
@@ -44,7 +44,9 @@ type FSNode = {
|
|
|
44
44
|
mode: number;
|
|
45
45
|
};
|
|
46
46
|
type FSStream = {
|
|
47
|
-
tty?:
|
|
47
|
+
tty?: {
|
|
48
|
+
ops: object;
|
|
49
|
+
};
|
|
48
50
|
seekable?: boolean;
|
|
49
51
|
stream_ops: FSStreamOps;
|
|
50
52
|
node: FSNode;
|
|
@@ -173,7 +175,7 @@ declare class PyProxy {
|
|
|
173
175
|
* @param options
|
|
174
176
|
* @return The JavaScript object resulting from the conversion.
|
|
175
177
|
*/
|
|
176
|
-
toJs({ depth, pyproxies, create_pyproxies, dict_converter, default_converter, }?: {
|
|
178
|
+
toJs({ depth, pyproxies, create_pyproxies, dict_converter, default_converter, eager_converter, }?: {
|
|
177
179
|
/** How many layers deep to perform the conversion. Defaults to infinite */
|
|
178
180
|
depth?: number;
|
|
179
181
|
/**
|
|
@@ -208,6 +210,15 @@ declare class PyProxy {
|
|
|
208
210
|
* documentation of :meth:`~pyodide.ffi.to_js`.
|
|
209
211
|
*/
|
|
210
212
|
default_converter?: (obj: PyProxy, convert: (obj: PyProxy) => any, cacheConversion: (obj: PyProxy, result: any) => void) => any;
|
|
213
|
+
/**
|
|
214
|
+
* Optional callback to convert objects which gets called after ``str``,
|
|
215
|
+
* ``int``, ``float``, ``bool``, ``None``, and ``JsProxy`` are converted but
|
|
216
|
+
* *before* any default conversions are applied to standard data structures.
|
|
217
|
+
*
|
|
218
|
+
* Its arguments are the same as `dict_converter`.
|
|
219
|
+
* See the documentation of :meth:`~pyodide.ffi.to_js`.
|
|
220
|
+
*/
|
|
221
|
+
eager_converter?: (obj: PyProxy, convert: (obj: PyProxy) => any, cacheConversion: (obj: PyProxy, result: any) => void) => any;
|
|
211
222
|
}): any;
|
|
212
223
|
}
|
|
213
224
|
declare class PyProxyWithLength extends PyProxy {
|
|
@@ -1601,7 +1612,8 @@ export declare function loadPyodide(options?: {
|
|
|
1601
1612
|
*/
|
|
1602
1613
|
pyproxyToStringRepr?: boolean;
|
|
1603
1614
|
/**
|
|
1604
|
-
* Make loop.run_until_complete() function correctly using stack switching
|
|
1615
|
+
* Make loop.run_until_complete() function correctly using stack switching.
|
|
1616
|
+
* Default: ``true``.
|
|
1605
1617
|
*/
|
|
1606
1618
|
enableRunUntilComplete?: boolean;
|
|
1607
1619
|
/**
|
flet_web/web/pyodide/pyodide.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";var loadPyodide=(()=>{var ne=Object.create;var F=Object.defineProperty;var re=Object.getOwnPropertyDescriptor;var ie=Object.getOwnPropertyNames;var oe=Object.getPrototypeOf,ae=Object.prototype.hasOwnProperty;var s=(e,t)=>F(e,"name",{value:t,configurable:!0}),p=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,i)=>(typeof require<"u"?require:t)[i]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var se=(e,t)=>{for(var i in t)F(e,i,{get:t[i],enumerable:!0})},$=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of ie(t))!ae.call(e,a)&&a!==i&&F(e,a,{get:()=>t[a],enumerable:!(r=re(t,a))||r.enumerable});return e};var b=(e,t,i)=>(i=e!=null?ne(oe(e)):{},$(t||!e||!e.__esModule?F(i,"default",{value:e,enumerable:!0}):i,e)),ce=e=>$(F({},"__esModule",{value:!0}),e);var Fe={};se(Fe,{loadPyodide:()=>B,version:()=>x});function le(e){return!isNaN(parseFloat(e))&&isFinite(e)}s(le,"_isNumber");function w(e){return e.charAt(0).toUpperCase()+e.substring(1)}s(w,"_capitalize");function L(e){return function(){return this[e]}}s(L,"_getter");var _=["isConstructor","isEval","isNative","isToplevel"],I=["columnNumber","lineNumber"],P=["fileName","functionName","source"],de=["args"],ue=["evalOrigin"],O=_.concat(I,P,de,ue);function g(e){if(e)for(var t=0;t<O.length;t++)e[O[t]]!==void 0&&this["set"+w(O[t])](e[O[t]])}s(g,"StackFrame");g.prototype={getArgs:function(){return this.args},setArgs:function(e){if(Object.prototype.toString.call(e)!=="[object Array]")throw new TypeError("Args must be an Array");this.args=e},getEvalOrigin:function(){return this.evalOrigin},setEvalOrigin:function(e){if(e instanceof g)this.evalOrigin=e;else if(e instanceof Object)this.evalOrigin=new g(e);else throw new TypeError("Eval Origin must be an Object or StackFrame")},toString:function(){var e=this.getFileName()||"",t=this.getLineNumber()||"",i=this.getColumnNumber()||"",r=this.getFunctionName()||"";return this.getIsEval()?e?"[eval] ("+e+":"+t+":"+i+")":"[eval]:"+t+":"+i:r?r+" ("+e+":"+t+":"+i+")":e+":"+t+":"+i}};g.fromString=s(function(t){var i=t.indexOf("("),r=t.lastIndexOf(")"),a=t.substring(0,i),n=t.substring(i+1,r).split(","),o=t.substring(r+1);if(o.indexOf("@")===0)var c=/@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(o,""),l=c[1],d=c[2],u=c[3];return new g({functionName:a,args:n||void 0,fileName:l,lineNumber:d||void 0,columnNumber:u||void 0})},"StackFrame$$fromString");for(h=0;h<_.length;h++)g.prototype["get"+w(_[h])]=L(_[h]),g.prototype["set"+w(_[h])]=function(e){return function(t){this[e]=!!t}}(_[h]);var h;for(E=0;E<I.length;E++)g.prototype["get"+w(I[E])]=L(I[E]),g.prototype["set"+w(I[E])]=function(e){return function(t){if(!le(t))throw new TypeError(e+" must be a Number");this[e]=Number(t)}}(I[E]);var E;for(S=0;S<P.length;S++)g.prototype["get"+w(P[S])]=L(P[S]),g.prototype["set"+w(P[S])]=function(e){return function(t){this[e]=String(t)}}(P[S]);var S,A=g;function fe(){var e=/^\s*at .*(\S+:\d+|\(native\))/m,t=/^(eval@)?(\[native code])?$/;return{parse:s(function(r){if(r.stack&&r.stack.match(e))return this.parseV8OrIE(r);if(r.stack)return this.parseFFOrSafari(r);throw new Error("Cannot parse given Error object")},"ErrorStackParser$$parse"),extractLocation:s(function(r){if(r.indexOf(":")===-1)return[r];var a=/(.+?)(?::(\d+))?(?::(\d+))?$/,n=a.exec(r.replace(/[()]/g,""));return[n[1],n[2]||void 0,n[3]||void 0]},"ErrorStackParser$$extractLocation"),parseV8OrIE:s(function(r){var a=r.stack.split(`
|
|
2
2
|
`).filter(function(n){return!!n.match(e)},this);return a.map(function(n){n.indexOf("(eval ")>-1&&(n=n.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(,.*$)/g,""));var o=n.replace(/^\s+/,"").replace(/\(eval code/g,"(").replace(/^.*?\s+/,""),c=o.match(/ (\(.+\)$)/);o=c?o.replace(c[0],""):o;var l=this.extractLocation(c?c[1]:o),d=c&&o||void 0,u=["eval","<anonymous>"].indexOf(l[0])>-1?void 0:l[0];return new A({functionName:d,fileName:u,lineNumber:l[1],columnNumber:l[2],source:n})},this)},"ErrorStackParser$$parseV8OrIE"),parseFFOrSafari:s(function(r){var a=r.stack.split(`
|
|
3
|
-
`).filter(function(n){return!n.match(t)},this);return a.map(function(n){if(n.indexOf(" > eval")>-1&&(n=n.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),n.indexOf("@")===-1&&n.indexOf(":")===-1)return new A({functionName:n});var o=/((.*".+"[^@]*)?[^@]*)(?:@)/,c=n.match(o),l=c&&c[1]?c[1]:void 0,d=this.extractLocation(n.replace(o,""));return new A({functionName:l,fileName:d[0],lineNumber:d[1],columnNumber:d[2],source:n})},this)},"ErrorStackParser$$parseFFOrSafari")}}s(fe,"ErrorStackParser");var me=new fe;var j=me;var y=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&!process.browser,T=y&&typeof module<"u"&&typeof module.exports<"u"&&typeof p<"u"&&typeof __dirname<"u",H=y&&!T,Le=typeof globalThis.Bun<"u",pe=typeof Deno<"u",z=!y&&!pe,V=z&&typeof window=="object"&&typeof document=="object"&&typeof document.createElement=="function"&&"sessionStorage"in window&&typeof importScripts!="function",q=z&&typeof importScripts=="function"&&typeof self=="object",Te=typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Chrome")==-1&&navigator.userAgent.indexOf("Safari")>-1;var K,U,Y,J,M;async function C(){if(!y||(K=(await import(/* webpackIgnore */"node:url")).default,J=await import(/* webpackIgnore */"node:fs"),M=await import(/* webpackIgnore */"node:fs/promises"),Y=(await import(/* webpackIgnore */"node:vm")).default,U=await import(/* webpackIgnore */"node:path"),W=U.sep,typeof p<"u"))return;let e=J,t=await import(/* webpackIgnore */"node:crypto"),i=await import(/* webpackIgnore */"ws"),r=await import(/* webpackIgnore */"node:child_process"),a={fs:e,crypto:t,ws:i,child_process:r};globalThis.require=function(n){return a[n]}}s(C,"initNodeModules");function ge(e,t){return U.resolve(t||".",e)}s(ge,"node_resolvePath");function ye(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}s(ye,"browser_resolvePath");var D;y?D=ge:D=ye;var W;y||(W="/");function be(e,t){return e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?{response:fetch(e)}:{binary:M.readFile(e).then(i=>new Uint8Array(i.buffer,i.byteOffset,i.byteLength))}}s(be,"node_getBinaryResponse");function ve(e,t){let i=new URL(e,location);return{response:fetch(i,t?{integrity:t}:{})}}s(ve,"browser_getBinaryResponse");var k;y?k=be:k=ve;async function G(e,t){let{response:i,binary:r}=k(e,t);if(r)return r;let a=await i;if(!a.ok)throw new Error(`Failed to load '${e}': request failed.`);return new Uint8Array(await a.arrayBuffer())}s(G,"loadBinaryFile");var R;if(V)R=s(async e=>await import(/* webpackIgnore */e),"loadScript");else if(q)R=s(async e=>{try{globalThis.importScripts(e)}catch(t){if(t instanceof TypeError)await import(/* webpackIgnore */e);else throw t}},"loadScript");else if(y)R=he;else throw new Error("Cannot determine runtime environment");async function he(e){e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?Y.runInThisContext(await(await fetch(e)).text()):await import(/* webpackIgnore */K.pathToFileURL(e).href)}s(he,"nodeLoadScript");async function X(e){if(y){await C();let t=await M.readFile(e,{encoding:"utf8"});return JSON.parse(t)}else return await(await fetch(e)).json()}s(X,"loadLockFile");async function Q(){if(T)return __dirname;let e;try{throw new Error}catch(r){e=r}let t=j.parse(e)[0].fileName;if(y&&!t.startsWith("file://")&&(t=`file://${t}`),H){let r=await import(/* webpackIgnore */"node:path");return(await import(/* webpackIgnore */"node:url")).fileURLToPath(r.dirname(t))}let i=t.lastIndexOf(W);if(i===-1)throw new Error("Could not extract indexURL path from pyodide module location");return t.slice(0,i)}s(Q,"calculateDirname");function Z(e){let t=e.FS,i=e.FS.filesystems.MEMFS,r=e.PATH,a={DIR_MODE:16895,FILE_MODE:33279,mount:function(n){if(!n.opts.fileSystemHandle)throw new Error("opts.fileSystemHandle is required");return i.mount.apply(null,arguments)},syncfs:async(n,o,c)=>{try{let l=a.getLocalSet(n),d=await a.getRemoteSet(n),u=o?d:l,m=o?l:d;await a.reconcile(n,u,m),c(null)}catch(l){c(l)}},getLocalSet:n=>{let o=Object.create(null);function c(u){return u!=="."&&u!==".."}s(c,"isRealDir");function l(u){return m=>r.join2(u,m)}s(l,"toAbsolute");let d=t.readdir(n.mountpoint).filter(c).map(l(n.mountpoint));for(;d.length;){let u=d.pop(),m=t.stat(u);t.isDir(m.mode)&&d.push.apply(d,t.readdir(u).filter(c).map(l(u))),o[u]={timestamp:m.mtime,mode:m.mode}}return{type:"local",entries:o}},getRemoteSet:async n=>{let o=Object.create(null),c=await Ee(n.opts.fileSystemHandle);for(let[l,d]of c)l!=="."&&(o[r.join2(n.mountpoint,l)]={timestamp:d.kind==="file"?new Date((await d.getFile()).lastModified):new Date,mode:d.kind==="file"?a.FILE_MODE:a.DIR_MODE});return{type:"remote",entries:o,handles:c}},loadLocalEntry:n=>{let c=t.lookupPath(n).node,l=t.stat(n);if(t.isDir(l.mode))return{timestamp:l.mtime,mode:l.mode};if(t.isFile(l.mode))return c.contents=i.getFileDataAsTypedArray(c),{timestamp:l.mtime,mode:l.mode,contents:c.contents};throw new Error("node type not supported")},storeLocalEntry:(n,o)=>{if(t.isDir(o.mode))t.mkdirTree(n,o.mode);else if(t.isFile(o.mode))t.writeFile(n,o.contents,{canOwn:!0});else throw new Error("node type not supported");t.chmod(n,o.mode),t.utime(n,o.timestamp,o.timestamp)},removeLocalEntry:n=>{var o=t.stat(n);t.isDir(o.mode)?t.rmdir(n):t.isFile(o.mode)&&t.unlink(n)},loadRemoteEntry:async n=>{if(n.kind==="file"){let o=await n.getFile();return{contents:new Uint8Array(await o.arrayBuffer()),mode:a.FILE_MODE,timestamp:new Date(o.lastModified)}}else{if(n.kind==="directory")return{mode:a.DIR_MODE,timestamp:new Date};throw new Error("unknown kind: "+n.kind)}},storeRemoteEntry:async(n,o,c)=>{let l=n.get(r.dirname(o)),d=t.isFile(c.mode)?await l.getFileHandle(r.basename(o),{create:!0}):await l.getDirectoryHandle(r.basename(o),{create:!0});if(d.kind==="file"){let u=await d.createWritable();await u.write(c.contents),await u.close()}n.set(o,d)},removeRemoteEntry:async(n,o)=>{await n.get(r.dirname(o)).removeEntry(r.basename(o)),n.delete(o)},reconcile:async(n,o,c)=>{let l=0,d=[];Object.keys(o.entries).forEach(function(f){let v=o.entries[f],N=c.entries[f];(!N||t.isFile(v.mode)&&v.timestamp.getTime()>N.timestamp.getTime())&&(d.push(f),l++)}),d.sort();let u=[];if(Object.keys(c.entries).forEach(function(f){o.entries[f]||(u.push(f),l++)}),u.sort().reverse(),!l)return;let m=o.type==="remote"?o.handles:c.handles;for(let f of d){let v=r.normalize(f.replace(n.mountpoint,"/")).substring(1);if(c.type==="local"){let N=m.get(v),te=await a.loadRemoteEntry(N);a.storeLocalEntry(f,te)}else{let N=a.loadLocalEntry(f);await a.storeRemoteEntry(m,v,N)}}for(let f of u)if(c.type==="local")a.removeLocalEntry(f);else{let v=r.normalize(f.replace(n.mountpoint,"/")).substring(1);await a.removeRemoteEntry(m,v)}}};e.FS.filesystems.NATIVEFS_ASYNC=a}s(Z,"initializeNativeFS");var Ee=s(async e=>{let t=[];async function i(a){for await(let n of a.values())t.push(n),n.kind==="directory"&&await i(n)}s(i,"collect"),await i(e);let r=new Map;r.set(".",e);for(let a of t){let n=(await e.resolve(a)).join("/");r.set(n,a)}return r},"getFsHandles");function ee(e){let t={noImageDecoding:!0,noAudioDecoding:!0,noWasmDecoding:!1,preRun:Ie(e),quit(i,r){throw t.exited={status:i,toThrow:r},r},print:e.stdout,printErr:e.stderr,thisProgram:e._sysExecutable,arguments:e.args,API:{config:e},locateFile:i=>e.indexURL+i,instantiateWasm:Pe(e.indexURL)};return t}s(ee,"createSettings");function Se(e){return function(t){let i="/";try{t.FS.mkdirTree(e)}catch(r){console.error(`Error occurred while making a home directory '${e}':`),console.error(r),console.error(`Using '${i}' for a home directory instead`),e=i}t.FS.chdir(e)}}s(Se,"createHomeDirectory");function we(e){return function(t){Object.assign(t.ENV,e)}}s(we,"setEnvironment");function Ne(e){return e?[async t=>{t.addRunDependency("fsInitHook");try{await e(t.FS,{sitePackages:t.API.sitePackages})}finally{t.removeRunDependency("fsInitHook")}}]:[]}s(Ne,"callFsInitHook");function _e(e){let t=G(e);return async i=>{let r=i._py_version_major(),a=i._py_version_minor();i.FS.mkdirTree("/lib"),i.API.sitePackages=`/lib/python${r}.${a}/site-packages`,i.FS.mkdirTree(i.API.sitePackages),i.addRunDependency("install-stdlib");try{let n=await t;i.FS.writeFile(`/lib/python${r}${a}.zip`,n)}catch(n){console.error("Error occurred while installing the standard library:"),console.error(n)}finally{i.removeRunDependency("install-stdlib")}}}s(_e,"installStdlib");function Ie(e){let t;return e.stdLibURL!=null?t=e.stdLibURL:t=e.indexURL+"python_stdlib.zip",[...Ne(e.fsInit),_e(t),Se(e.env.HOME),we(e.env),Z]}s(Ie,"getFileSystemInitializationFuncs");function Pe(e){if(typeof WasmOffsetConverter<"u")return;let{binary:t,response:i}=k(e+"pyodide.asm.wasm");return function(r,a){return async function(){try{let n;i?n=await WebAssembly.instantiateStreaming(i,r):n=await WebAssembly.instantiate(await t,r);let{instance:o,module:c}=n;a(o,c)}catch(n){console.warn("wasm instantiation failed!"),console.warn(n)}}(),{}}}s(Pe,"getInstantiateWasmFunc");var x="0.27.5";async function B(e={}){var u,m;await C();let t=e.indexURL||await Q();t=D(t),t.endsWith("/")||(t+="/"),e.indexURL=t;let i={fullStdLib:!1,jsglobals:globalThis,stdin:globalThis.prompt?globalThis.prompt:void 0,lockFileURL:t+"pyodide-lock.json",args:[],env:{},packageCacheDir:t,packages:[],enableRunUntilComplete:!1,checkAPIVersion:!0,BUILD_ID:"bd0388b62e760f8ba04185eb443fec955f25434f49c7b951efe5b1f792dbe5d4"},r=Object.assign(i,e);(u=r.env).HOME??(u.HOME="/home/pyodide"),(m=r.env).PYTHONINSPECT??(m.PYTHONINSPECT="1");let a=ee(r),n=a.API;if(n.lockFilePromise=X(r.lockFileURL),typeof _createPyodideModule!="function"){let f=`${r.indexURL}pyodide.asm.js`;await R(f)}let o;if(e._loadSnapshot){let f=await e._loadSnapshot;ArrayBuffer.isView(f)?o=f:o=new Uint8Array(f),a.noInitialRun=!0,a.INITIAL_MEMORY=o.length}let c=await _createPyodideModule(a);if(a.exited)throw a.exited.toThrow;if(e.pyproxyToStringRepr&&n.setPyProxyToStringMethod(!0),n.version!==x&&r.checkAPIVersion)throw new Error(`Pyodide version does not match: '${x}' <==> '${n.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);c.locateFile=f=>{throw new Error("Didn't expect to load any more file_packager files!")};let l;o&&(l=n.restoreSnapshot(o));let d=n.finalizeBootstrap(l,e._snapshotDeserializer);return n.sys.path.insert(0,n.config.env.HOME),d.version.includes("dev")||n.setCdnUrl(`https://cdn.jsdelivr.net/pyodide/v${d.version}/full/`),n._pyodide.set_excepthook(),await n.packageIndexReady,n.initializeStreams(r.stdin,r.stdout,r.stderr),d}s(B,"loadPyodide");globalThis.loadPyodide=B;return ce(Fe);})();
|
|
3
|
+
`).filter(function(n){return!n.match(t)},this);return a.map(function(n){if(n.indexOf(" > eval")>-1&&(n=n.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),n.indexOf("@")===-1&&n.indexOf(":")===-1)return new A({functionName:n});var o=/((.*".+"[^@]*)?[^@]*)(?:@)/,c=n.match(o),l=c&&c[1]?c[1]:void 0,d=this.extractLocation(n.replace(o,""));return new A({functionName:l,fileName:d[0],lineNumber:d[1],columnNumber:d[2],source:n})},this)},"ErrorStackParser$$parseFFOrSafari")}}s(fe,"ErrorStackParser");var me=new fe;var j=me;var y=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&!process.browser,T=y&&typeof module<"u"&&typeof module.exports<"u"&&typeof p<"u"&&typeof __dirname<"u",H=y&&!T,Le=typeof globalThis.Bun<"u",pe=typeof Deno<"u",z=!y&&!pe,V=z&&typeof window=="object"&&typeof document=="object"&&typeof document.createElement=="function"&&"sessionStorage"in window&&typeof importScripts!="function",q=z&&typeof importScripts=="function"&&typeof self=="object",Te=typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Chrome")==-1&&navigator.userAgent.indexOf("Safari")>-1;var K,U,Y,J,C;async function M(){if(!y||(K=(await import(/* webpackIgnore */"node:url")).default,J=await import(/* webpackIgnore */"node:fs"),C=await import(/* webpackIgnore */"node:fs/promises"),Y=(await import(/* webpackIgnore */"node:vm")).default,U=await import(/* webpackIgnore */"node:path"),W=U.sep,typeof p<"u"))return;let e=J,t=await import(/* webpackIgnore */"node:crypto"),i=await import(/* webpackIgnore */"ws"),r=await import(/* webpackIgnore */"node:child_process"),a={fs:e,crypto:t,ws:i,child_process:r};globalThis.require=function(n){return a[n]}}s(M,"initNodeModules");function ge(e,t){return U.resolve(t||".",e)}s(ge,"node_resolvePath");function ye(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}s(ye,"browser_resolvePath");var D;y?D=ge:D=ye;var W;y||(W="/");function be(e,t){return e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?{response:fetch(e)}:{binary:C.readFile(e).then(i=>new Uint8Array(i.buffer,i.byteOffset,i.byteLength))}}s(be,"node_getBinaryResponse");function ve(e,t){let i=new URL(e,location);return{response:fetch(i,t?{integrity:t}:{})}}s(ve,"browser_getBinaryResponse");var k;y?k=be:k=ve;async function G(e,t){let{response:i,binary:r}=k(e,t);if(r)return r;let a=await i;if(!a.ok)throw new Error(`Failed to load '${e}': request failed.`);return new Uint8Array(await a.arrayBuffer())}s(G,"loadBinaryFile");var R;if(V)R=s(async e=>await import(/* webpackIgnore */e),"loadScript");else if(q)R=s(async e=>{try{globalThis.importScripts(e)}catch(t){if(t instanceof TypeError)await import(/* webpackIgnore */e);else throw t}},"loadScript");else if(y)R=he;else throw new Error("Cannot determine runtime environment");async function he(e){e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?Y.runInThisContext(await(await fetch(e)).text()):await import(/* webpackIgnore */K.pathToFileURL(e).href)}s(he,"nodeLoadScript");async function X(e){if(y){await M();let t=await C.readFile(e,{encoding:"utf8"});return JSON.parse(t)}else return await(await fetch(e)).json()}s(X,"loadLockFile");async function Q(){if(T)return __dirname;let e;try{throw new Error}catch(r){e=r}let t=j.parse(e)[0].fileName;if(y&&!t.startsWith("file://")&&(t=`file://${t}`),H){let r=await import(/* webpackIgnore */"node:path");return(await import(/* webpackIgnore */"node:url")).fileURLToPath(r.dirname(t))}let i=t.lastIndexOf(W);if(i===-1)throw new Error("Could not extract indexURL path from pyodide module location");return t.slice(0,i)}s(Q,"calculateDirname");function Z(e){let t=e.FS,i=e.FS.filesystems.MEMFS,r=e.PATH,a={DIR_MODE:16895,FILE_MODE:33279,mount:function(n){if(!n.opts.fileSystemHandle)throw new Error("opts.fileSystemHandle is required");return i.mount.apply(null,arguments)},syncfs:async(n,o,c)=>{try{let l=a.getLocalSet(n),d=await a.getRemoteSet(n),u=o?d:l,m=o?l:d;await a.reconcile(n,u,m),c(null)}catch(l){c(l)}},getLocalSet:n=>{let o=Object.create(null);function c(u){return u!=="."&&u!==".."}s(c,"isRealDir");function l(u){return m=>r.join2(u,m)}s(l,"toAbsolute");let d=t.readdir(n.mountpoint).filter(c).map(l(n.mountpoint));for(;d.length;){let u=d.pop(),m=t.stat(u);t.isDir(m.mode)&&d.push.apply(d,t.readdir(u).filter(c).map(l(u))),o[u]={timestamp:m.mtime,mode:m.mode}}return{type:"local",entries:o}},getRemoteSet:async n=>{let o=Object.create(null),c=await Ee(n.opts.fileSystemHandle);for(let[l,d]of c)l!=="."&&(o[r.join2(n.mountpoint,l)]={timestamp:d.kind==="file"?new Date((await d.getFile()).lastModified):new Date,mode:d.kind==="file"?a.FILE_MODE:a.DIR_MODE});return{type:"remote",entries:o,handles:c}},loadLocalEntry:n=>{let c=t.lookupPath(n).node,l=t.stat(n);if(t.isDir(l.mode))return{timestamp:l.mtime,mode:l.mode};if(t.isFile(l.mode))return c.contents=i.getFileDataAsTypedArray(c),{timestamp:l.mtime,mode:l.mode,contents:c.contents};throw new Error("node type not supported")},storeLocalEntry:(n,o)=>{if(t.isDir(o.mode))t.mkdirTree(n,o.mode);else if(t.isFile(o.mode))t.writeFile(n,o.contents,{canOwn:!0});else throw new Error("node type not supported");t.chmod(n,o.mode),t.utime(n,o.timestamp,o.timestamp)},removeLocalEntry:n=>{var o=t.stat(n);t.isDir(o.mode)?t.rmdir(n):t.isFile(o.mode)&&t.unlink(n)},loadRemoteEntry:async n=>{if(n.kind==="file"){let o=await n.getFile();return{contents:new Uint8Array(await o.arrayBuffer()),mode:a.FILE_MODE,timestamp:new Date(o.lastModified)}}else{if(n.kind==="directory")return{mode:a.DIR_MODE,timestamp:new Date};throw new Error("unknown kind: "+n.kind)}},storeRemoteEntry:async(n,o,c)=>{let l=n.get(r.dirname(o)),d=t.isFile(c.mode)?await l.getFileHandle(r.basename(o),{create:!0}):await l.getDirectoryHandle(r.basename(o),{create:!0});if(d.kind==="file"){let u=await d.createWritable();await u.write(c.contents),await u.close()}n.set(o,d)},removeRemoteEntry:async(n,o)=>{await n.get(r.dirname(o)).removeEntry(r.basename(o)),n.delete(o)},reconcile:async(n,o,c)=>{let l=0,d=[];Object.keys(o.entries).forEach(function(f){let v=o.entries[f],N=c.entries[f];(!N||t.isFile(v.mode)&&v.timestamp.getTime()>N.timestamp.getTime())&&(d.push(f),l++)}),d.sort();let u=[];if(Object.keys(c.entries).forEach(function(f){o.entries[f]||(u.push(f),l++)}),u.sort().reverse(),!l)return;let m=o.type==="remote"?o.handles:c.handles;for(let f of d){let v=r.normalize(f.replace(n.mountpoint,"/")).substring(1);if(c.type==="local"){let N=m.get(v),te=await a.loadRemoteEntry(N);a.storeLocalEntry(f,te)}else{let N=a.loadLocalEntry(f);await a.storeRemoteEntry(m,v,N)}}for(let f of u)if(c.type==="local")a.removeLocalEntry(f);else{let v=r.normalize(f.replace(n.mountpoint,"/")).substring(1);await a.removeRemoteEntry(m,v)}}};e.FS.filesystems.NATIVEFS_ASYNC=a}s(Z,"initializeNativeFS");var Ee=s(async e=>{let t=[];async function i(a){for await(let n of a.values())t.push(n),n.kind==="directory"&&await i(n)}s(i,"collect"),await i(e);let r=new Map;r.set(".",e);for(let a of t){let n=(await e.resolve(a)).join("/");r.set(n,a)}return r},"getFsHandles");function ee(e){let t={noImageDecoding:!0,noAudioDecoding:!0,noWasmDecoding:!1,preRun:Ie(e),quit(i,r){throw t.exited={status:i,toThrow:r},r},print:e.stdout,printErr:e.stderr,thisProgram:e._sysExecutable,arguments:e.args,API:{config:e},locateFile:i=>e.indexURL+i,instantiateWasm:Pe(e.indexURL)};return t}s(ee,"createSettings");function Se(e){return function(t){let i="/";try{t.FS.mkdirTree(e)}catch(r){console.error(`Error occurred while making a home directory '${e}':`),console.error(r),console.error(`Using '${i}' for a home directory instead`),e=i}t.FS.chdir(e)}}s(Se,"createHomeDirectory");function we(e){return function(t){Object.assign(t.ENV,e)}}s(we,"setEnvironment");function Ne(e){return e?[async t=>{t.addRunDependency("fsInitHook");try{await e(t.FS,{sitePackages:t.API.sitePackages})}finally{t.removeRunDependency("fsInitHook")}}]:[]}s(Ne,"callFsInitHook");function _e(e){let t=G(e);return async i=>{let r=i._py_version_major(),a=i._py_version_minor();i.FS.mkdirTree("/lib"),i.API.sitePackages=`/lib/python${r}.${a}/site-packages`,i.FS.mkdirTree(i.API.sitePackages),i.addRunDependency("install-stdlib");try{let n=await t;i.FS.writeFile(`/lib/python${r}${a}.zip`,n)}catch(n){console.error("Error occurred while installing the standard library:"),console.error(n)}finally{i.removeRunDependency("install-stdlib")}}}s(_e,"installStdlib");function Ie(e){let t;return e.stdLibURL!=null?t=e.stdLibURL:t=e.indexURL+"python_stdlib.zip",[...Ne(e.fsInit),_e(t),Se(e.env.HOME),we(e.env),Z]}s(Ie,"getFileSystemInitializationFuncs");function Pe(e){if(typeof WasmOffsetConverter<"u")return;let{binary:t,response:i}=k(e+"pyodide.asm.wasm");return function(r,a){return async function(){try{let n;i?n=await WebAssembly.instantiateStreaming(i,r):n=await WebAssembly.instantiate(await t,r);let{instance:o,module:c}=n;a(o,c)}catch(n){console.warn("wasm instantiation failed!"),console.warn(n)}}(),{}}}s(Pe,"getInstantiateWasmFunc");var x="0.27.7";async function B(e={}){var u,m;await M();let t=e.indexURL||await Q();t=D(t),t.endsWith("/")||(t+="/"),e.indexURL=t;let i={fullStdLib:!1,jsglobals:globalThis,stdin:globalThis.prompt?globalThis.prompt:void 0,lockFileURL:t+"pyodide-lock.json",args:[],env:{},packageCacheDir:t,packages:[],enableRunUntilComplete:!0,checkAPIVersion:!0,BUILD_ID:"e94377f5ce7dcf67e0417b69a0016733c2cfb6b4622ee8c490a6f17eb58e863b"},r=Object.assign(i,e);(u=r.env).HOME??(u.HOME="/home/pyodide"),(m=r.env).PYTHONINSPECT??(m.PYTHONINSPECT="1");let a=ee(r),n=a.API;if(n.lockFilePromise=X(r.lockFileURL),typeof _createPyodideModule!="function"){let f=`${r.indexURL}pyodide.asm.js`;await R(f)}let o;if(e._loadSnapshot){let f=await e._loadSnapshot;ArrayBuffer.isView(f)?o=f:o=new Uint8Array(f),a.noInitialRun=!0,a.INITIAL_MEMORY=o.length}let c=await _createPyodideModule(a);if(a.exited)throw a.exited.toThrow;if(e.pyproxyToStringRepr&&n.setPyProxyToStringMethod(!0),n.version!==x&&r.checkAPIVersion)throw new Error(`Pyodide version does not match: '${x}' <==> '${n.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);c.locateFile=f=>{throw new Error("Didn't expect to load any more file_packager files!")};let l;o&&(l=n.restoreSnapshot(o));let d=n.finalizeBootstrap(l,e._snapshotDeserializer);return n.sys.path.insert(0,""),d.version.includes("dev")||n.setCdnUrl(`https://cdn.jsdelivr.net/pyodide/v${d.version}/full/`),n._pyodide.set_excepthook(),await n.packageIndexReady,n.initializeStreams(r.stdin,r.stdout,r.stderr),d}s(B,"loadPyodide");globalThis.loadPyodide=B;return ce(Fe);})();
|
|
4
4
|
try{Object.assign(exports,loadPyodide)}catch(_){}
|
|
5
5
|
globalThis.loadPyodide=loadPyodide.loadPyodide;
|
|
6
6
|
//# sourceMappingURL=pyodide.js.map
|
flet_web/web/pyodide/pyodide.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Q=Object.defineProperty;var s=(e,t)=>Q(e,"name",{value:t,configurable:!0}),R=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,o)=>(typeof require<"u"?require:t)[o]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});function Z(e){return!isNaN(parseFloat(e))&&isFinite(e)}s(Z,"_isNumber");function E(e){return e.charAt(0).toUpperCase()+e.substring(1)}s(E,"_capitalize");function
|
|
1
|
+
var Q=Object.defineProperty;var s=(e,t)=>Q(e,"name",{value:t,configurable:!0}),R=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,o)=>(typeof require<"u"?require:t)[o]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});function Z(e){return!isNaN(parseFloat(e))&&isFinite(e)}s(Z,"_isNumber");function E(e){return e.charAt(0).toUpperCase()+e.substring(1)}s(E,"_capitalize");function O(e){return function(){return this[e]}}s(O,"_getter");var w=["isConstructor","isEval","isNative","isToplevel"],N=["columnNumber","lineNumber"],_=["fileName","functionName","source"],ee=["args"],te=["evalOrigin"],P=w.concat(N,_,ee,te);function p(e){if(e)for(var t=0;t<P.length;t++)e[P[t]]!==void 0&&this["set"+E(P[t])](e[P[t]])}s(p,"StackFrame");p.prototype={getArgs:function(){return this.args},setArgs:function(e){if(Object.prototype.toString.call(e)!=="[object Array]")throw new TypeError("Args must be an Array");this.args=e},getEvalOrigin:function(){return this.evalOrigin},setEvalOrigin:function(e){if(e instanceof p)this.evalOrigin=e;else if(e instanceof Object)this.evalOrigin=new p(e);else throw new TypeError("Eval Origin must be an Object or StackFrame")},toString:function(){var e=this.getFileName()||"",t=this.getLineNumber()||"",o=this.getColumnNumber()||"",r=this.getFunctionName()||"";return this.getIsEval()?e?"[eval] ("+e+":"+t+":"+o+")":"[eval]:"+t+":"+o:r?r+" ("+e+":"+t+":"+o+")":e+":"+t+":"+o}};p.fromString=s(function(t){var o=t.indexOf("("),r=t.lastIndexOf(")"),a=t.substring(0,o),n=t.substring(o+1,r).split(","),i=t.substring(r+1);if(i.indexOf("@")===0)var c=/@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(i,""),l=c[1],d=c[2],u=c[3];return new p({functionName:a,args:n||void 0,fileName:l,lineNumber:d||void 0,columnNumber:u||void 0})},"StackFrame$$fromString");for(b=0;b<w.length;b++)p.prototype["get"+E(w[b])]=O(w[b]),p.prototype["set"+E(w[b])]=function(e){return function(t){this[e]=!!t}}(w[b]);var b;for(v=0;v<N.length;v++)p.prototype["get"+E(N[v])]=O(N[v]),p.prototype["set"+E(N[v])]=function(e){return function(t){if(!Z(t))throw new TypeError(e+" must be a Number");this[e]=Number(t)}}(N[v]);var v;for(h=0;h<_.length;h++)p.prototype["get"+E(_[h])]=O(_[h]),p.prototype["set"+E(_[h])]=function(e){return function(t){this[e]=String(t)}}(_[h]);var h,k=p;function ne(){var e=/^\s*at .*(\S+:\d+|\(native\))/m,t=/^(eval@)?(\[native code])?$/;return{parse:s(function(r){if(r.stack&&r.stack.match(e))return this.parseV8OrIE(r);if(r.stack)return this.parseFFOrSafari(r);throw new Error("Cannot parse given Error object")},"ErrorStackParser$$parse"),extractLocation:s(function(r){if(r.indexOf(":")===-1)return[r];var a=/(.+?)(?::(\d+))?(?::(\d+))?$/,n=a.exec(r.replace(/[()]/g,""));return[n[1],n[2]||void 0,n[3]||void 0]},"ErrorStackParser$$extractLocation"),parseV8OrIE:s(function(r){var a=r.stack.split(`
|
|
2
2
|
`).filter(function(n){return!!n.match(e)},this);return a.map(function(n){n.indexOf("(eval ")>-1&&(n=n.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(,.*$)/g,""));var i=n.replace(/^\s+/,"").replace(/\(eval code/g,"(").replace(/^.*?\s+/,""),c=i.match(/ (\(.+\)$)/);i=c?i.replace(c[0],""):i;var l=this.extractLocation(c?c[1]:i),d=c&&i||void 0,u=["eval","<anonymous>"].indexOf(l[0])>-1?void 0:l[0];return new k({functionName:d,fileName:u,lineNumber:l[1],columnNumber:l[2],source:n})},this)},"ErrorStackParser$$parseV8OrIE"),parseFFOrSafari:s(function(r){var a=r.stack.split(`
|
|
3
|
-
`).filter(function(n){return!n.match(t)},this);return a.map(function(n){if(n.indexOf(" > eval")>-1&&(n=n.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),n.indexOf("@")===-1&&n.indexOf(":")===-1)return new k({functionName:n});var i=/((.*".+"[^@]*)?[^@]*)(?:@)/,c=n.match(i),l=c&&c[1]?c[1]:void 0,d=this.extractLocation(n.replace(i,""));return new k({functionName:l,fileName:d[0],lineNumber:d[1],columnNumber:d[2],source:n})},this)},"ErrorStackParser$$parseFFOrSafari")}}s(ne,"ErrorStackParser");var re=new ne;var C=re;var g=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&!process.browser,A=g&&typeof module<"u"&&typeof module.exports<"u"&&typeof R<"u"&&typeof __dirname<"u",W=g&&!A,Ne=typeof globalThis.Bun<"u",ie=typeof Deno<"u",B=!g&&!ie,$=B&&typeof window=="object"&&typeof document=="object"&&typeof document.createElement=="function"&&"sessionStorage"in window&&typeof importScripts!="function",j=B&&typeof importScripts=="function"&&typeof self=="object",_e=typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Chrome")==-1&&navigator.userAgent.indexOf("Safari")>-1;var z,D,V,H,L;async function T(){if(!g||(z=(await import("node:url")).default,H=await import("node:fs"),L=await import("node:fs/promises"),V=(await import("node:vm")).default,D=await import("node:path"),U=D.sep,typeof R<"u"))return;let e=H,t=await import("node:crypto"),o=await import("ws"),r=await import("node:child_process"),a={fs:e,crypto:t,ws:o,child_process:r};globalThis.require=function(n){return a[n]}}s(T,"initNodeModules");function oe(e,t){return D.resolve(t||".",e)}s(oe,"node_resolvePath");function ae(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}s(ae,"browser_resolvePath");var O;g?O=oe:O=ae;var U;g||(U="/");function se(e,t){return e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?{response:fetch(e)}:{binary:L.readFile(e).then(o=>new Uint8Array(o.buffer,o.byteOffset,o.byteLength))}}s(se,"node_getBinaryResponse");function ce(e,t){let o=new URL(e,location);return{response:fetch(o,t?{integrity:t}:{})}}s(ce,"browser_getBinaryResponse");var F;g?F=se:F=ce;async function q(e,t){let{response:o,binary:r}=F(e,t);if(r)return r;let a=await o;if(!a.ok)throw new Error(`Failed to load '${e}': request failed.`);return new Uint8Array(await a.arrayBuffer())}s(q,"loadBinaryFile");var I;if($)I=s(async e=>await import(e),"loadScript");else if(j)I=s(async e=>{try{globalThis.importScripts(e)}catch(t){if(t instanceof TypeError)await import(e);else throw t}},"loadScript");else if(g)I=le;else throw new Error("Cannot determine runtime environment");async function le(e){e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?V.runInThisContext(await(await fetch(e)).text()):await import(z.pathToFileURL(e).href)}s(le,"nodeLoadScript");async function J(e){if(g){await T();let t=await L.readFile(e,{encoding:"utf8"});return JSON.parse(t)}else return await(await fetch(e)).json()}s(J,"loadLockFile");async function K(){if(A)return __dirname;let e;try{throw new Error}catch(r){e=r}let t=C.parse(e)[0].fileName;if(g&&!t.startsWith("file://")&&(t=`file://${t}`),W){let r=await import("node:path");return(await import("node:url")).fileURLToPath(r.dirname(t))}let o=t.lastIndexOf(U);if(o===-1)throw new Error("Could not extract indexURL path from pyodide module location");return t.slice(0,o)}s(K,"calculateDirname");function Y(e){let t=e.FS,o=e.FS.filesystems.MEMFS,r=e.PATH,a={DIR_MODE:16895,FILE_MODE:33279,mount:function(n){if(!n.opts.fileSystemHandle)throw new Error("opts.fileSystemHandle is required");return o.mount.apply(null,arguments)},syncfs:async(n,i,c)=>{try{let l=a.getLocalSet(n),d=await a.getRemoteSet(n),u=i?d:l,m=i?l:d;await a.reconcile(n,u,m),c(null)}catch(l){c(l)}},getLocalSet:n=>{let i=Object.create(null);function c(u){return u!=="."&&u!==".."}s(c,"isRealDir");function l(u){return m=>r.join2(u,m)}s(l,"toAbsolute");let d=t.readdir(n.mountpoint).filter(c).map(l(n.mountpoint));for(;d.length;){let u=d.pop(),m=t.stat(u);t.isDir(m.mode)&&d.push.apply(d,t.readdir(u).filter(c).map(l(u))),i[u]={timestamp:m.mtime,mode:m.mode}}return{type:"local",entries:i}},getRemoteSet:async n=>{let i=Object.create(null),c=await de(n.opts.fileSystemHandle);for(let[l,d]of c)l!=="."&&(i[r.join2(n.mountpoint,l)]={timestamp:d.kind==="file"?new Date((await d.getFile()).lastModified):new Date,mode:d.kind==="file"?a.FILE_MODE:a.DIR_MODE});return{type:"remote",entries:i,handles:c}},loadLocalEntry:n=>{let c=t.lookupPath(n).node,l=t.stat(n);if(t.isDir(l.mode))return{timestamp:l.mtime,mode:l.mode};if(t.isFile(l.mode))return c.contents=o.getFileDataAsTypedArray(c),{timestamp:l.mtime,mode:l.mode,contents:c.contents};throw new Error("node type not supported")},storeLocalEntry:(n,i)=>{if(t.isDir(i.mode))t.mkdirTree(n,i.mode);else if(t.isFile(i.mode))t.writeFile(n,i.contents,{canOwn:!0});else throw new Error("node type not supported");t.chmod(n,i.mode),t.utime(n,i.timestamp,i.timestamp)},removeLocalEntry:n=>{var i=t.stat(n);t.isDir(i.mode)?t.rmdir(n):t.isFile(i.mode)&&t.unlink(n)},loadRemoteEntry:async n=>{if(n.kind==="file"){let i=await n.getFile();return{contents:new Uint8Array(await i.arrayBuffer()),mode:a.FILE_MODE,timestamp:new Date(i.lastModified)}}else{if(n.kind==="directory")return{mode:a.DIR_MODE,timestamp:new Date};throw new Error("unknown kind: "+n.kind)}},storeRemoteEntry:async(n,i,c)=>{let l=n.get(r.dirname(i)),d=t.isFile(c.mode)?await l.getFileHandle(r.basename(i),{create:!0}):await l.getDirectoryHandle(r.basename(i),{create:!0});if(d.kind==="file"){let u=await d.createWritable();await u.write(c.contents),await u.close()}n.set(i,d)},removeRemoteEntry:async(n,i)=>{await n.get(r.dirname(i)).removeEntry(r.basename(i)),n.delete(i)},reconcile:async(n,i,c)=>{let l=0,d=[];Object.keys(i.entries).forEach(function(f){let y=i.entries[f],S=c.entries[f];(!S||t.isFile(y.mode)&&y.timestamp.getTime()>S.timestamp.getTime())&&(d.push(f),l++)}),d.sort();let u=[];if(Object.keys(c.entries).forEach(function(f){i.entries[f]||(u.push(f),l++)}),u.sort().reverse(),!l)return;let m=i.type==="remote"?i.handles:c.handles;for(let f of d){let y=r.normalize(f.replace(n.mountpoint,"/")).substring(1);if(c.type==="local"){let S=m.get(y),X=await a.loadRemoteEntry(S);a.storeLocalEntry(f,X)}else{let S=a.loadLocalEntry(f);await a.storeRemoteEntry(m,y,S)}}for(let f of u)if(c.type==="local")a.removeLocalEntry(f);else{let y=r.normalize(f.replace(n.mountpoint,"/")).substring(1);await a.removeRemoteEntry(m,y)}}};e.FS.filesystems.NATIVEFS_ASYNC=a}s(Y,"initializeNativeFS");var de=s(async e=>{let t=[];async function o(a){for await(let n of a.values())t.push(n),n.kind==="directory"&&await o(n)}s(o,"collect"),await o(e);let r=new Map;r.set(".",e);for(let a of t){let n=(await e.resolve(a)).join("/");r.set(n,a)}return r},"getFsHandles");function G(e){let t={noImageDecoding:!0,noAudioDecoding:!0,noWasmDecoding:!1,preRun:ge(e),quit(o,r){throw t.exited={status:o,toThrow:r},r},print:e.stdout,printErr:e.stderr,thisProgram:e._sysExecutable,arguments:e.args,API:{config:e},locateFile:o=>e.indexURL+o,instantiateWasm:ye(e.indexURL)};return t}s(G,"createSettings");function ue(e){return function(t){let o="/";try{t.FS.mkdirTree(e)}catch(r){console.error(`Error occurred while making a home directory '${e}':`),console.error(r),console.error(`Using '${o}' for a home directory instead`),e=o}t.FS.chdir(e)}}s(ue,"createHomeDirectory");function fe(e){return function(t){Object.assign(t.ENV,e)}}s(fe,"setEnvironment");function me(e){return e?[async t=>{t.addRunDependency("fsInitHook");try{await e(t.FS,{sitePackages:t.API.sitePackages})}finally{t.removeRunDependency("fsInitHook")}}]:[]}s(me,"callFsInitHook");function pe(e){let t=q(e);return async o=>{let r=o._py_version_major(),a=o._py_version_minor();o.FS.mkdirTree("/lib"),o.API.sitePackages=`/lib/python${r}.${a}/site-packages`,o.FS.mkdirTree(o.API.sitePackages),o.addRunDependency("install-stdlib");try{let n=await t;o.FS.writeFile(`/lib/python${r}${a}.zip`,n)}catch(n){console.error("Error occurred while installing the standard library:"),console.error(n)}finally{o.removeRunDependency("install-stdlib")}}}s(pe,"installStdlib");function ge(e){let t;return e.stdLibURL!=null?t=e.stdLibURL:t=e.indexURL+"python_stdlib.zip",[...me(e.fsInit),pe(t),ue(e.env.HOME),fe(e.env),Y]}s(ge,"getFileSystemInitializationFuncs");function ye(e){if(typeof WasmOffsetConverter<"u")return;let{binary:t,response:o}=F(e+"pyodide.asm.wasm");return function(r,a){return async function(){try{let n;o?n=await WebAssembly.instantiateStreaming(o,r):n=await WebAssembly.instantiate(await t,r);let{instance:i,module:c}=n;a(i,c)}catch(n){console.warn("wasm instantiation failed!"),console.warn(n)}}(),{}}}s(ye,"getInstantiateWasmFunc");var M="0.27.5";async function $e(e={}){var u,m;await T();let t=e.indexURL||await K();t=O(t),t.endsWith("/")||(t+="/"),e.indexURL=t;let o={fullStdLib:!1,jsglobals:globalThis,stdin:globalThis.prompt?globalThis.prompt:void 0,lockFileURL:t+"pyodide-lock.json",args:[],env:{},packageCacheDir:t,packages:[],enableRunUntilComplete:!1,checkAPIVersion:!0,BUILD_ID:"bd0388b62e760f8ba04185eb443fec955f25434f49c7b951efe5b1f792dbe5d4"},r=Object.assign(o,e);(u=r.env).HOME??(u.HOME="/home/pyodide"),(m=r.env).PYTHONINSPECT??(m.PYTHONINSPECT="1");let a=G(r),n=a.API;if(n.lockFilePromise=J(r.lockFileURL),typeof _createPyodideModule!="function"){let f=`${r.indexURL}pyodide.asm.js`;await I(f)}let i;if(e._loadSnapshot){let f=await e._loadSnapshot;ArrayBuffer.isView(f)?i=f:i=new Uint8Array(f),a.noInitialRun=!0,a.INITIAL_MEMORY=i.length}let c=await _createPyodideModule(a);if(a.exited)throw a.exited.toThrow;if(e.pyproxyToStringRepr&&n.setPyProxyToStringMethod(!0),n.version!==M&&r.checkAPIVersion)throw new Error(`Pyodide version does not match: '${M}' <==> '${n.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);c.locateFile=f=>{throw new Error("Didn't expect to load any more file_packager files!")};let l;i&&(l=n.restoreSnapshot(i));let d=n.finalizeBootstrap(l,e._snapshotDeserializer);return n.sys.path.insert(0,n.config.env.HOME),d.version.includes("dev")||n.setCdnUrl(`https://cdn.jsdelivr.net/pyodide/v${d.version}/full/`),n._pyodide.set_excepthook(),await n.packageIndexReady,n.initializeStreams(r.stdin,r.stdout,r.stderr),d}s($e,"loadPyodide");export{$e as loadPyodide,M as version};
|
|
3
|
+
`).filter(function(n){return!n.match(t)},this);return a.map(function(n){if(n.indexOf(" > eval")>-1&&(n=n.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),n.indexOf("@")===-1&&n.indexOf(":")===-1)return new k({functionName:n});var i=/((.*".+"[^@]*)?[^@]*)(?:@)/,c=n.match(i),l=c&&c[1]?c[1]:void 0,d=this.extractLocation(n.replace(i,""));return new k({functionName:l,fileName:d[0],lineNumber:d[1],columnNumber:d[2],source:n})},this)},"ErrorStackParser$$parseFFOrSafari")}}s(ne,"ErrorStackParser");var re=new ne;var M=re;var g=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&!process.browser,A=g&&typeof module<"u"&&typeof module.exports<"u"&&typeof R<"u"&&typeof __dirname<"u",W=g&&!A,Ne=typeof globalThis.Bun<"u",ie=typeof Deno<"u",B=!g&&!ie,$=B&&typeof window=="object"&&typeof document=="object"&&typeof document.createElement=="function"&&"sessionStorage"in window&&typeof importScripts!="function",j=B&&typeof importScripts=="function"&&typeof self=="object",_e=typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Chrome")==-1&&navigator.userAgent.indexOf("Safari")>-1;var z,D,V,H,L;async function T(){if(!g||(z=(await import("node:url")).default,H=await import("node:fs"),L=await import("node:fs/promises"),V=(await import("node:vm")).default,D=await import("node:path"),U=D.sep,typeof R<"u"))return;let e=H,t=await import("node:crypto"),o=await import("ws"),r=await import("node:child_process"),a={fs:e,crypto:t,ws:o,child_process:r};globalThis.require=function(n){return a[n]}}s(T,"initNodeModules");function oe(e,t){return D.resolve(t||".",e)}s(oe,"node_resolvePath");function ae(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}s(ae,"browser_resolvePath");var x;g?x=oe:x=ae;var U;g||(U="/");function se(e,t){return e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?{response:fetch(e)}:{binary:L.readFile(e).then(o=>new Uint8Array(o.buffer,o.byteOffset,o.byteLength))}}s(se,"node_getBinaryResponse");function ce(e,t){let o=new URL(e,location);return{response:fetch(o,t?{integrity:t}:{})}}s(ce,"browser_getBinaryResponse");var F;g?F=se:F=ce;async function q(e,t){let{response:o,binary:r}=F(e,t);if(r)return r;let a=await o;if(!a.ok)throw new Error(`Failed to load '${e}': request failed.`);return new Uint8Array(await a.arrayBuffer())}s(q,"loadBinaryFile");var I;if($)I=s(async e=>await import(e),"loadScript");else if(j)I=s(async e=>{try{globalThis.importScripts(e)}catch(t){if(t instanceof TypeError)await import(e);else throw t}},"loadScript");else if(g)I=le;else throw new Error("Cannot determine runtime environment");async function le(e){e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?V.runInThisContext(await(await fetch(e)).text()):await import(z.pathToFileURL(e).href)}s(le,"nodeLoadScript");async function J(e){if(g){await T();let t=await L.readFile(e,{encoding:"utf8"});return JSON.parse(t)}else return await(await fetch(e)).json()}s(J,"loadLockFile");async function K(){if(A)return __dirname;let e;try{throw new Error}catch(r){e=r}let t=M.parse(e)[0].fileName;if(g&&!t.startsWith("file://")&&(t=`file://${t}`),W){let r=await import("node:path");return(await import("node:url")).fileURLToPath(r.dirname(t))}let o=t.lastIndexOf(U);if(o===-1)throw new Error("Could not extract indexURL path from pyodide module location");return t.slice(0,o)}s(K,"calculateDirname");function Y(e){let t=e.FS,o=e.FS.filesystems.MEMFS,r=e.PATH,a={DIR_MODE:16895,FILE_MODE:33279,mount:function(n){if(!n.opts.fileSystemHandle)throw new Error("opts.fileSystemHandle is required");return o.mount.apply(null,arguments)},syncfs:async(n,i,c)=>{try{let l=a.getLocalSet(n),d=await a.getRemoteSet(n),u=i?d:l,m=i?l:d;await a.reconcile(n,u,m),c(null)}catch(l){c(l)}},getLocalSet:n=>{let i=Object.create(null);function c(u){return u!=="."&&u!==".."}s(c,"isRealDir");function l(u){return m=>r.join2(u,m)}s(l,"toAbsolute");let d=t.readdir(n.mountpoint).filter(c).map(l(n.mountpoint));for(;d.length;){let u=d.pop(),m=t.stat(u);t.isDir(m.mode)&&d.push.apply(d,t.readdir(u).filter(c).map(l(u))),i[u]={timestamp:m.mtime,mode:m.mode}}return{type:"local",entries:i}},getRemoteSet:async n=>{let i=Object.create(null),c=await de(n.opts.fileSystemHandle);for(let[l,d]of c)l!=="."&&(i[r.join2(n.mountpoint,l)]={timestamp:d.kind==="file"?new Date((await d.getFile()).lastModified):new Date,mode:d.kind==="file"?a.FILE_MODE:a.DIR_MODE});return{type:"remote",entries:i,handles:c}},loadLocalEntry:n=>{let c=t.lookupPath(n).node,l=t.stat(n);if(t.isDir(l.mode))return{timestamp:l.mtime,mode:l.mode};if(t.isFile(l.mode))return c.contents=o.getFileDataAsTypedArray(c),{timestamp:l.mtime,mode:l.mode,contents:c.contents};throw new Error("node type not supported")},storeLocalEntry:(n,i)=>{if(t.isDir(i.mode))t.mkdirTree(n,i.mode);else if(t.isFile(i.mode))t.writeFile(n,i.contents,{canOwn:!0});else throw new Error("node type not supported");t.chmod(n,i.mode),t.utime(n,i.timestamp,i.timestamp)},removeLocalEntry:n=>{var i=t.stat(n);t.isDir(i.mode)?t.rmdir(n):t.isFile(i.mode)&&t.unlink(n)},loadRemoteEntry:async n=>{if(n.kind==="file"){let i=await n.getFile();return{contents:new Uint8Array(await i.arrayBuffer()),mode:a.FILE_MODE,timestamp:new Date(i.lastModified)}}else{if(n.kind==="directory")return{mode:a.DIR_MODE,timestamp:new Date};throw new Error("unknown kind: "+n.kind)}},storeRemoteEntry:async(n,i,c)=>{let l=n.get(r.dirname(i)),d=t.isFile(c.mode)?await l.getFileHandle(r.basename(i),{create:!0}):await l.getDirectoryHandle(r.basename(i),{create:!0});if(d.kind==="file"){let u=await d.createWritable();await u.write(c.contents),await u.close()}n.set(i,d)},removeRemoteEntry:async(n,i)=>{await n.get(r.dirname(i)).removeEntry(r.basename(i)),n.delete(i)},reconcile:async(n,i,c)=>{let l=0,d=[];Object.keys(i.entries).forEach(function(f){let y=i.entries[f],S=c.entries[f];(!S||t.isFile(y.mode)&&y.timestamp.getTime()>S.timestamp.getTime())&&(d.push(f),l++)}),d.sort();let u=[];if(Object.keys(c.entries).forEach(function(f){i.entries[f]||(u.push(f),l++)}),u.sort().reverse(),!l)return;let m=i.type==="remote"?i.handles:c.handles;for(let f of d){let y=r.normalize(f.replace(n.mountpoint,"/")).substring(1);if(c.type==="local"){let S=m.get(y),X=await a.loadRemoteEntry(S);a.storeLocalEntry(f,X)}else{let S=a.loadLocalEntry(f);await a.storeRemoteEntry(m,y,S)}}for(let f of u)if(c.type==="local")a.removeLocalEntry(f);else{let y=r.normalize(f.replace(n.mountpoint,"/")).substring(1);await a.removeRemoteEntry(m,y)}}};e.FS.filesystems.NATIVEFS_ASYNC=a}s(Y,"initializeNativeFS");var de=s(async e=>{let t=[];async function o(a){for await(let n of a.values())t.push(n),n.kind==="directory"&&await o(n)}s(o,"collect"),await o(e);let r=new Map;r.set(".",e);for(let a of t){let n=(await e.resolve(a)).join("/");r.set(n,a)}return r},"getFsHandles");function G(e){let t={noImageDecoding:!0,noAudioDecoding:!0,noWasmDecoding:!1,preRun:ge(e),quit(o,r){throw t.exited={status:o,toThrow:r},r},print:e.stdout,printErr:e.stderr,thisProgram:e._sysExecutable,arguments:e.args,API:{config:e},locateFile:o=>e.indexURL+o,instantiateWasm:ye(e.indexURL)};return t}s(G,"createSettings");function ue(e){return function(t){let o="/";try{t.FS.mkdirTree(e)}catch(r){console.error(`Error occurred while making a home directory '${e}':`),console.error(r),console.error(`Using '${o}' for a home directory instead`),e=o}t.FS.chdir(e)}}s(ue,"createHomeDirectory");function fe(e){return function(t){Object.assign(t.ENV,e)}}s(fe,"setEnvironment");function me(e){return e?[async t=>{t.addRunDependency("fsInitHook");try{await e(t.FS,{sitePackages:t.API.sitePackages})}finally{t.removeRunDependency("fsInitHook")}}]:[]}s(me,"callFsInitHook");function pe(e){let t=q(e);return async o=>{let r=o._py_version_major(),a=o._py_version_minor();o.FS.mkdirTree("/lib"),o.API.sitePackages=`/lib/python${r}.${a}/site-packages`,o.FS.mkdirTree(o.API.sitePackages),o.addRunDependency("install-stdlib");try{let n=await t;o.FS.writeFile(`/lib/python${r}${a}.zip`,n)}catch(n){console.error("Error occurred while installing the standard library:"),console.error(n)}finally{o.removeRunDependency("install-stdlib")}}}s(pe,"installStdlib");function ge(e){let t;return e.stdLibURL!=null?t=e.stdLibURL:t=e.indexURL+"python_stdlib.zip",[...me(e.fsInit),pe(t),ue(e.env.HOME),fe(e.env),Y]}s(ge,"getFileSystemInitializationFuncs");function ye(e){if(typeof WasmOffsetConverter<"u")return;let{binary:t,response:o}=F(e+"pyodide.asm.wasm");return function(r,a){return async function(){try{let n;o?n=await WebAssembly.instantiateStreaming(o,r):n=await WebAssembly.instantiate(await t,r);let{instance:i,module:c}=n;a(i,c)}catch(n){console.warn("wasm instantiation failed!"),console.warn(n)}}(),{}}}s(ye,"getInstantiateWasmFunc");var C="0.27.7";async function $e(e={}){var u,m;await T();let t=e.indexURL||await K();t=x(t),t.endsWith("/")||(t+="/"),e.indexURL=t;let o={fullStdLib:!1,jsglobals:globalThis,stdin:globalThis.prompt?globalThis.prompt:void 0,lockFileURL:t+"pyodide-lock.json",args:[],env:{},packageCacheDir:t,packages:[],enableRunUntilComplete:!0,checkAPIVersion:!0,BUILD_ID:"e94377f5ce7dcf67e0417b69a0016733c2cfb6b4622ee8c490a6f17eb58e863b"},r=Object.assign(o,e);(u=r.env).HOME??(u.HOME="/home/pyodide"),(m=r.env).PYTHONINSPECT??(m.PYTHONINSPECT="1");let a=G(r),n=a.API;if(n.lockFilePromise=J(r.lockFileURL),typeof _createPyodideModule!="function"){let f=`${r.indexURL}pyodide.asm.js`;await I(f)}let i;if(e._loadSnapshot){let f=await e._loadSnapshot;ArrayBuffer.isView(f)?i=f:i=new Uint8Array(f),a.noInitialRun=!0,a.INITIAL_MEMORY=i.length}let c=await _createPyodideModule(a);if(a.exited)throw a.exited.toThrow;if(e.pyproxyToStringRepr&&n.setPyProxyToStringMethod(!0),n.version!==C&&r.checkAPIVersion)throw new Error(`Pyodide version does not match: '${C}' <==> '${n.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);c.locateFile=f=>{throw new Error("Didn't expect to load any more file_packager files!")};let l;i&&(l=n.restoreSnapshot(i));let d=n.finalizeBootstrap(l,e._snapshotDeserializer);return n.sys.path.insert(0,""),d.version.includes("dev")||n.setCdnUrl(`https://cdn.jsdelivr.net/pyodide/v${d.version}/full/`),n._pyodide.set_excepthook(),await n.packageIndexReady,n.initializeStreams(r.stdin,r.stdout,r.stderr),d}s($e,"loadPyodide");export{$e as loadPyodide,C as version};
|
|
4
4
|
//# sourceMappingURL=pyodide.mjs.map
|
|
Binary file
|
flet_web/web/python-worker.js
CHANGED
|
@@ -1,42 +1,93 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
self.pyodideUrl = null;
|
|
2
|
+
self.appPackageUrl = null;
|
|
3
3
|
self.micropipIncludePre = false;
|
|
4
4
|
self.pythonModuleName = null;
|
|
5
|
+
self.documentUrl = null;
|
|
5
6
|
self.initialized = false;
|
|
6
7
|
self.flet_js = {}; // namespace for Python global functions
|
|
7
8
|
|
|
8
9
|
self.initPyodide = async function () {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
10
|
+
try {
|
|
11
|
+
importScripts(self.pyodideUrl);
|
|
12
|
+
self.pyodide = await loadPyodide();
|
|
13
|
+
self.pyodide.registerJsModule("flet_js", flet_js);
|
|
14
|
+
self.pyodide.globals.set("app_package_url", self.appPackageUrl);
|
|
15
|
+
self.pyodide.globals.set("python_module_name", self.pythonModuleName);
|
|
16
|
+
self.pyodide.globals.set("micropip_include_pre", self.micropipIncludePre);
|
|
17
|
+
flet_js.documentUrl = documentUrl;
|
|
18
|
+
await self.pyodide.loadPackage("micropip");
|
|
19
|
+
await self.pyodide.runPythonAsync(`
|
|
20
|
+
import flet_js, micropip, os, runpy, sys, traceback
|
|
21
|
+
from pyodide.http import pyfetch
|
|
22
|
+
|
|
23
|
+
py_args = flet_js.args.to_py() if flet_js.args else None
|
|
24
|
+
|
|
25
|
+
if "app_package_url" in py_args:
|
|
26
|
+
app_package_url = py_args["app_package_url"]
|
|
27
|
+
|
|
28
|
+
if app_package_url is None:
|
|
29
|
+
app_package_url = "assets/app/app.zip"
|
|
30
|
+
|
|
31
|
+
if "python_module_name" in py_args:
|
|
32
|
+
python_module_name = py_args["python_module_name"]
|
|
33
|
+
|
|
34
|
+
if python_module_name is None:
|
|
35
|
+
python_module_name = "main"
|
|
36
|
+
|
|
37
|
+
if "micropip_include_pre" in py_args:
|
|
38
|
+
micropip_include_pre = py_args["micropip_include_pre"]
|
|
39
|
+
|
|
40
|
+
if micropip_include_pre is None:
|
|
41
|
+
micropip_include_pre = False
|
|
42
|
+
|
|
43
|
+
print("python_module_name:", python_module_name)
|
|
44
|
+
print("micropip_include_pre:", micropip_include_pre)
|
|
45
|
+
|
|
46
|
+
if "script" not in py_args:
|
|
47
|
+
print("Downloading app archive")
|
|
48
|
+
response = await pyfetch(app_package_url)
|
|
49
|
+
await response.unpack_archive()
|
|
50
|
+
else:
|
|
51
|
+
print("Saving script to a file")
|
|
52
|
+
with open(f"{python_module_name}.py", "w") as f:
|
|
53
|
+
f.write(py_args["script"]);
|
|
54
|
+
|
|
55
|
+
pkgs_path = "__pypackages__"
|
|
56
|
+
if os.path.exists(pkgs_path):
|
|
57
|
+
print(f"Adding {pkgs_path} to sys.path")
|
|
58
|
+
sys.path.insert(0, pkgs_path)
|
|
59
|
+
|
|
60
|
+
if os.path.exists("requirements.txt"):
|
|
61
|
+
with open("requirements.txt", "r") as f:
|
|
62
|
+
deps = [line.rstrip() for line in f]
|
|
63
|
+
print("Loading requirements.txt:", deps)
|
|
64
|
+
await micropip.install(deps, pre=micropip_include_pre)
|
|
65
|
+
|
|
66
|
+
if "dependencies" in py_args:
|
|
67
|
+
await micropip.install(py_args["dependencies"], pre=micropip_include_pre)
|
|
68
|
+
|
|
69
|
+
# Execute app
|
|
70
|
+
runpy.run_module(python_module_name, run_name="__main__")
|
|
71
|
+
`);
|
|
72
|
+
await self.flet_js.start_connection(self.receiveCallback);
|
|
73
|
+
self.postMessage("initialized");
|
|
74
|
+
} catch (error) {
|
|
75
|
+
self.postMessage(error.toString());
|
|
76
|
+
}
|
|
29
77
|
};
|
|
30
78
|
|
|
31
79
|
self.receiveCallback = (message) => {
|
|
32
|
-
self.postMessage(message);
|
|
80
|
+
self.postMessage(message.toJs());
|
|
33
81
|
}
|
|
34
82
|
|
|
35
83
|
self.onmessage = async (event) => {
|
|
36
84
|
// run only once
|
|
37
85
|
if (!self.initialized) {
|
|
38
86
|
self.initialized = true;
|
|
87
|
+
self.pyodideUrl = event.data.pyodideUrl;
|
|
88
|
+
self.flet_js.args = event.data.args;
|
|
39
89
|
self.documentUrl = event.data.documentUrl;
|
|
90
|
+
self.appPackageUrl = event.data.appPackageUrl;
|
|
40
91
|
self.micropipIncludePre = event.data.micropipIncludePre;
|
|
41
92
|
self.pythonModuleName = event.data.pythonModuleName;
|
|
42
93
|
await self.initPyodide();
|
|
@@ -44,4 +95,4 @@ self.onmessage = async (event) => {
|
|
|
44
95
|
// message
|
|
45
96
|
flet_js.send(event.data);
|
|
46
97
|
}
|
|
47
|
-
};
|
|
98
|
+
};
|
flet_web/web/python.js
CHANGED
|
@@ -1,28 +1,70 @@
|
|
|
1
|
-
const
|
|
1
|
+
const defaultPyodideUrl = "https://cdn.jsdelivr.net/pyodide/v0.27.7/full/pyodide.js";
|
|
2
2
|
|
|
3
|
-
let
|
|
4
|
-
let
|
|
5
|
-
let _onReceivedCallback = null;
|
|
3
|
+
let _apps = {};
|
|
4
|
+
let _documentUrl = document.URL;
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
};
|
|
6
|
+
// This method is called from Dart on backend.connect()
|
|
7
|
+
// dartOnMessage is called on backend.onMessage
|
|
8
|
+
// it accepts "data" of type JSUint8Array
|
|
9
|
+
globalThis.jsConnect = async function(appId, args, dartOnMessage) {
|
|
10
|
+
let app = {
|
|
11
|
+
"dartOnMessage": dartOnMessage
|
|
12
|
+
};
|
|
13
|
+
console.log(`Starting up Python worker: ${appId}, args: ${args}`);
|
|
14
|
+
_apps[appId] = app;
|
|
15
|
+
app.worker = new Worker("python-worker.js");
|
|
16
|
+
|
|
17
|
+
var error;
|
|
18
|
+
app.worker.onmessage = (event) => {
|
|
19
|
+
if (typeof event.data === "string") {
|
|
20
|
+
if (event.data != "initialized") {
|
|
21
|
+
error = event.data;
|
|
22
|
+
}
|
|
23
|
+
app.onPythonInitialized();
|
|
24
|
+
} else {
|
|
25
|
+
app.dartOnMessage(event.data);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
14
28
|
|
|
15
|
-
|
|
29
|
+
let pythonInitialized = new Promise((resolveCallback) => app.onPythonInitialized = resolveCallback);
|
|
16
30
|
|
|
17
|
-
// initialize worker
|
|
18
|
-
|
|
31
|
+
// initialize worker
|
|
32
|
+
app.worker.postMessage({
|
|
33
|
+
pyodideUrl: flet.noCdn ? flet.pyodideUrl : defaultPyodideUrl,
|
|
34
|
+
args: args,
|
|
35
|
+
documentUrl: _documentUrl,
|
|
36
|
+
appPackageUrl: flet.appPackageUrl,
|
|
37
|
+
micropipIncludePre: flet.micropipIncludePre,
|
|
38
|
+
pythonModuleName: flet.pythonModuleName
|
|
39
|
+
});
|
|
19
40
|
|
|
20
|
-
async function jsConnect(receiveCallback) {
|
|
21
|
-
_onReceivedCallback = receiveCallback;
|
|
22
41
|
await pythonInitialized;
|
|
23
|
-
|
|
42
|
+
|
|
43
|
+
if (error) {
|
|
44
|
+
console.log("Python worker init error:", error);
|
|
45
|
+
throw error;
|
|
46
|
+
} else {
|
|
47
|
+
console.log(`Python worker initialized: ${appId}`);
|
|
48
|
+
}
|
|
24
49
|
}
|
|
25
50
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
51
|
+
// Called from Dart on backend.send
|
|
52
|
+
// data is a message serialized to JSUint8Array
|
|
53
|
+
globalThis.jsSend = async function(appId, data) {
|
|
54
|
+
if (appId in _apps) {
|
|
55
|
+
const app = _apps[appId];
|
|
56
|
+
app.worker.postMessage(data);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Called from Dart on channel.disconnect
|
|
61
|
+
globalThis.jsDisconnect = async function(appId) {
|
|
62
|
+
if (appId in _apps) {
|
|
63
|
+
console.log(`Terminating Python worker: ${appId}`);
|
|
64
|
+
const app = _apps[appId];
|
|
65
|
+
delete _apps[appId];
|
|
66
|
+
app.worker.terminate();
|
|
67
|
+
app.worker.onmessage = null;
|
|
68
|
+
app.worker.onerror = null;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flet-web
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.70.0.dev5066
|
|
4
4
|
Summary: Flet web client in Flutter.
|
|
5
5
|
Author-email: "Appveyor Systems Inc." <hello@flet.dev>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
7
7
|
Project-URL: Homepage, https://flet.dev
|
|
8
8
|
Project-URL: Repository, https://github.com/flet-dev/flet
|
|
9
9
|
Project-URL: Documentation, https://flet.dev/docs
|
|
10
|
-
Requires-Python: >=3.
|
|
10
|
+
Requires-Python: >=3.10
|
|
11
11
|
Description-Content-Type: text/markdown
|
|
12
|
-
Requires-Dist: flet==0.
|
|
12
|
+
Requires-Dist: flet==0.70.0.dev5066
|
|
13
13
|
Requires-Dist: fastapi>=0.115.12
|
|
14
14
|
Requires-Dist: uvicorn[standard]>=0.34.2
|
|
15
15
|
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
flet_web/__init__.py,sha256=XjsjB5u4-oiovvMql7N0l2l8btKzRZmfglizwxN5qdE,384
|
|
2
|
+
flet_web/patch_index.py,sha256=XgINQpPRcQxjFxgU8YPjsE_yop-mXBzTavS_kvEjIfw,3480
|
|
3
|
+
flet_web/uploads.py,sha256=k2ZTFQo_MOXGcsJnKgH8m7_zpmcX-sOauarXbehEjNY,1579
|
|
4
|
+
flet_web/version.py,sha256=smgSthbdwp2zjYrBQu0-RKnsp7oGIdPSuEbYis3FZfY,27
|
|
5
|
+
flet_web/fastapi/__init__.py,sha256=Jsean-ow_TCc-ygTDshkGmZplxnb8HJvO8gZ2KMErrY,395
|
|
6
|
+
flet_web/fastapi/app.py,sha256=PUDMtrHxVy0CLZ86eMS0rCoaHyAoSLA4IQgVh6Hojuc,5817
|
|
7
|
+
flet_web/fastapi/flet_app.py,sha256=a2lmhi6U6NM6e4Unpd2M7UJ1BbXky4kGr0XNoi6pHm4,12331
|
|
8
|
+
flet_web/fastapi/flet_app_manager.py,sha256=mCgPGZIsbDjZFsvzYAqFdSs7Q6Vo2NL99VBdIxtVbak,5124
|
|
9
|
+
flet_web/fastapi/flet_fastapi.py,sha256=WDryZ1W0mS4ugTJtxtZ7yNZ5eqqg8cF8aXO0nun8byY,4687
|
|
10
|
+
flet_web/fastapi/flet_oauth.py,sha256=G_an4WFyhEmakTRsKrTjinJrHo-BiAicAUjypJ6D4fQ,2115
|
|
11
|
+
flet_web/fastapi/flet_static_files.py,sha256=ge6oddTwud4jWn_ZMIFDqGrGDaleSzDOM49Mh7FOe6U,7270
|
|
12
|
+
flet_web/fastapi/flet_upload.py,sha256=6QqRIOuntJ3xUUlfDl47XI3Na2zeCqpZYm1ZFwoFbYM,3115
|
|
13
|
+
flet_web/fastapi/oauth_state.py,sha256=beIRx_JXnzAQIV3QHEroPjtjtO52dJYYctybX8poiSo,308
|
|
14
|
+
flet_web/fastapi/serve_fastapi_web_app.py,sha256=OuKK3MjA7sOGkrXSzNLJ0XbUVkYCzXIFJtwrkhxRHm4,2502
|
|
15
|
+
flet_web/web/favicon.png,sha256=83Y7iihRHIC1ALYXYVizrRs2MNRA2YbWGL3UD4LTvOI,1028
|
|
16
|
+
flet_web/web/flutter.js,sha256=JxrlUKoVU4Te2BzVu-DxuHys2OIIkrJTAb_PZbUStPU,8535
|
|
17
|
+
flet_web/web/flutter.js.map,sha256=_d0CFioegTm9S1smEU4Sq7LuF0tGg4MBsnDG3VMG-6Y,41275
|
|
18
|
+
flet_web/web/flutter_bootstrap.js,sha256=GnxGRodcEehbd1AtU-nRw1sJMRXBQHOJrpZe0EzwEFQ,9815
|
|
19
|
+
flet_web/web/flutter_service_worker.js,sha256=9ikT_jG3v5GwMvxl6DUOaLp5zHOfodO_Q9TnAird26w,9000
|
|
20
|
+
flet_web/web/index.html,sha256=Zc4y4Uru6G5Cn9NsgK-0TJac_VBzi1tmHzuNXz6GdK4,3376
|
|
21
|
+
flet_web/web/main.dart.js,sha256=azfRyJ2nUq6y4KILk-KqsaAy-34VnJXtVIvpOFrND80,8582390
|
|
22
|
+
flet_web/web/main.dart.mjs,sha256=vGHhrq6N0KuC4Pl5SSm7EwkTWCRtJekdCbV-jm9MpsE,1857031
|
|
23
|
+
flet_web/web/main.dart.wasm,sha256=VYvrvdQnbKg9xby941_w5uLSaBKTyLBazlhAW21k7Lo,7007754
|
|
24
|
+
flet_web/web/manifest.json,sha256=_GwcP9mT4sS_BwdYPcDEhnpejqe933LeYIytZIgDnr0,789
|
|
25
|
+
flet_web/web/python-worker.js,sha256=84mMBNgqI3EEdzMMWM2af5N09gCmjka0GQ4YIbAUsFc,3488
|
|
26
|
+
flet_web/web/python.js,sha256=v4XV8eHwwpFczSBInxH7mVPAIpNPoK2Lz3_wHj-vfCc,2112
|
|
27
|
+
flet_web/web/version.json,sha256=M3wyjx-6vkvcLftRE6e4ugK8oYoYlg19xEaZwbrgfHw,92
|
|
28
|
+
flet_web/web/assets/AssetManifest.bin,sha256=Q4sJXhFAZx8wv3K0TWA-ljDQf7oE2dP8FHjE07QJYdo,666
|
|
29
|
+
flet_web/web/assets/AssetManifest.bin.json,sha256=rfGK2KxFI6MWfK3wvg0dHVnZ9q6zSrcorP5GKV_-uRY,890
|
|
30
|
+
flet_web/web/assets/AssetManifest.json,sha256=zaDhetvObV0uhQRUjT1QEpicnQ-0DtdveW3NT1WKaho,623
|
|
31
|
+
flet_web/web/assets/FontManifest.json,sha256=zX4DZFvESy3Ue3y2JvUcTsv1Whl6t3JBYotHrBZfviE,208
|
|
32
|
+
flet_web/web/assets/NOTICES,sha256=dlASXrXGnWo-6T-4NkYzzXp_2F1oD61qt2UEJx5Bm6Q,1820960
|
|
33
|
+
flet_web/web/assets/fonts/MaterialIcons-Regular.otf,sha256=4tuSWFPhP4dSN4fMvJkmiM_smjOAWmxrcR4_ecMxEmg,1261120
|
|
34
|
+
flet_web/web/assets/fonts/roboto.woff2,sha256=NbAsoma3nrSZZZDxWBdCWhzp6_SPhEcYQyM_9hRla_I,63464
|
|
35
|
+
flet_web/web/assets/packages/cupertino_icons/assets/CupertinoIcons.ttf,sha256=Wh0PHxeqyR6PZxIylQGfc2mazyMaV3On6z_rSeZeTlc,209160
|
|
36
|
+
flet_web/web/assets/packages/flutter_map/lib/assets/flutter_map_logo.png,sha256=YFGuQvtQWTGoM-WPkgmp-WZppNDks_BvbYLN4SoOBAE,2424
|
|
37
|
+
flet_web/web/assets/packages/media_kit/assets/web/hls1.4.10.js,sha256=MLJ4eU_T8mmkfm3Ht2rpoE8IrP_dcvm4zCbUnTugnDg,374690
|
|
38
|
+
flet_web/web/assets/packages/record_web/assets/js/record.fixwebmduration.js,sha256=w0WtXS__s1etpke5tpBpNFKiABvFkS8ekGaHbOAWOZs,23286
|
|
39
|
+
flet_web/web/assets/packages/record_web/assets/js/record.worklet.js,sha256=hkPdAg583tT9IxLhQaZnzx_6lErDQk7E4C4Xc6c35-c,11594
|
|
40
|
+
flet_web/web/assets/packages/wakelock_plus/assets/no_sleep.js,sha256=3OTu8LGXtkCtaqqyIo7h7n3M-L1ta13lSE3RvRZDCng,13344
|
|
41
|
+
flet_web/web/assets/shaders/ink_sparkle.frag,sha256=4Bths5TPZqZBvqh-O0_jeH03L2Nsi8iipnQ4zcKdpvY,8867
|
|
42
|
+
flet_web/web/canvaskit/canvaskit.js,sha256=xFbD0wtt-Kw7Xzee_1t23WbfmA6mkGxIUtW1H4DrB2g,86619
|
|
43
|
+
flet_web/web/canvaskit/canvaskit.js.symbols,sha256=4kc-51x-ucHVd_pjokXry0631Xb2_N8C_vKSp6jBH10,1331935
|
|
44
|
+
flet_web/web/canvaskit/canvaskit.wasm,sha256=_1DEcU4UZNu9nkvA4wAfSoq5tbv5BRII3PLu9OcQYwM,7004684
|
|
45
|
+
flet_web/web/canvaskit/skwasm.js,sha256=De_eBPcKEh7NhdwqFWrUTz2YoVGfcRi-AlrffwRCOlQ,59192
|
|
46
|
+
flet_web/web/canvaskit/skwasm.js.symbols,sha256=9_12P2gRX6aM31LDjVxH6L5kvpWCpQBV0bprPCvXwfo,1433025
|
|
47
|
+
flet_web/web/canvaskit/skwasm.wasm,sha256=SWd8tE9lkWiUuoNPPeaEz_4u1yJdKkLmqnvedVFI0e8,3427385
|
|
48
|
+
flet_web/web/canvaskit/chromium/canvaskit.js,sha256=AS_bvHppUdTaFWALRhSaT720zffzF0kswkEGoii3vpA,86256
|
|
49
|
+
flet_web/web/canvaskit/chromium/canvaskit.js.symbols,sha256=nHT1iCXLYs7rdKb9LWKCtdjkfsEJmCwHKkbMf2XTPO4,1253037
|
|
50
|
+
flet_web/web/canvaskit/chromium/canvaskit.wasm,sha256=gg93mR49LjAYV5yNYSzRRQ-CmRkpyXq0X4IWCSyymu0,5627568
|
|
51
|
+
flet_web/web/icons/apple-touch-icon-192.png,sha256=dIgpzAZUPynN5BlFNa3ix_VCW34Jl0vimki76Kb7Y5o,4699
|
|
52
|
+
flet_web/web/icons/icon-192.png,sha256=rpfj2H4BEMLPI5U8M6eO_boq73OxHYIlrHh1Up2Moro,6622
|
|
53
|
+
flet_web/web/icons/icon-512.png,sha256=LYsJAwoc1oRroLoakYbYHJJQN-cNtOjmj1QCooE71oo,18666
|
|
54
|
+
flet_web/web/icons/icon-maskable-192.png,sha256=JjQtcczM5M1ddM4W5EtJsNJR-kHO9iXzmC_TgWaqsxE,4128
|
|
55
|
+
flet_web/web/icons/icon-maskable-512.png,sha256=Iq5-TQS9BUn2U7T8ztgToh2EiWnLh9W4aTHIGja5c8o,11906
|
|
56
|
+
flet_web/web/icons/loading-animation.png,sha256=Zl6NT_QrVqNUatwcqmSZawFlMxWHsdm493XDBOE4gn4,17040
|
|
57
|
+
flet_web/web/pyodide/ffi.d.ts,sha256=Ldx3OUr6I3hK3jiNUquBGfPNcTmUpntImr2f4Tsklk0,44144
|
|
58
|
+
flet_web/web/pyodide/micropip-0.8.0-py3-none-any.whl,sha256=7zAA-SxibYnS258wIhNEjSKlz-ZRV-iUKlxSeFETI4M,379
|
|
59
|
+
flet_web/web/pyodide/package.json,sha256=vyIfYMiBYmI201ATdal3U2cqf6b-1w5Gngg_FXyKMNQ,3267
|
|
60
|
+
flet_web/web/pyodide/packaging-24.2-py3-none-any.whl,sha256=-_alrOWW644o_gCJ7PwLyi6zkwVj6coGrLmOpTArmfc,71930
|
|
61
|
+
flet_web/web/pyodide/pyodide-lock.json,sha256=nEW5FgAadQ9BAvwodJTz6rIVkJx1NcYmog24D9YzPiw,112205
|
|
62
|
+
flet_web/web/pyodide/pyodide.asm.js,sha256=a0yQ3ltxcoc_BPIYhNDp0idOMF_jIRZVj-Pk--NhjVE,1255688
|
|
63
|
+
flet_web/web/pyodide/pyodide.asm.wasm,sha256=pQ3RhD-AWgt8RbYQN-4Neybf6F7-DhjvlaNK0k5AH18,10105545
|
|
64
|
+
flet_web/web/pyodide/pyodide.d.ts,sha256=UsTxGNBWOzEwUgq2A0Zw-1PtE4N9m4vmqgkGt2SI-NA,63609
|
|
65
|
+
flet_web/web/pyodide/pyodide.js,sha256=tMsjpTq6GcIhZZuftAovGCgdaFaR3AZkf7Cv0Ggbr5g,14913
|
|
66
|
+
flet_web/web/pyodide/pyodide.mjs,sha256=BMBSyBWrsL8pgfo4wt-ljjEg7lKIyVbfKyoV4wF4LF8,13931
|
|
67
|
+
flet_web/web/pyodide/python_stdlib.zip,sha256=FmEVNHJuXYrCvY-SZBCy3LjW9JqiSRNGNTO0V6IRXBY,2360737
|
|
68
|
+
flet_web-0.70.0.dev5066.dist-info/METADATA,sha256=MxeLTOBI-1CewCzMoC4fLLLx9GBy_ocZ9v_xyjsNGUY,595
|
|
69
|
+
flet_web-0.70.0.dev5066.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
70
|
+
flet_web-0.70.0.dev5066.dist-info/top_level.txt,sha256=1MXw6P2bxjBa70vz-6oTGqGmmLOWipyD7EaaivWoW1A,9
|
|
71
|
+
flet_web-0.70.0.dev5066.dist-info/RECORD,,
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
flet_web/__init__.py,sha256=Wyzpvf5VEXil2MRw_AjGLC1AgdvWvGlt8Wu9y6ceC8M,257
|
|
2
|
-
flet_web/patch_index.py,sha256=G9VUg0lzSXKzGnbJ3EAysKgaYP1ga9Zx2CKXj3AnDNA,3506
|
|
3
|
-
flet_web/uploads.py,sha256=k2ZTFQo_MOXGcsJnKgH8m7_zpmcX-sOauarXbehEjNY,1579
|
|
4
|
-
flet_web/version.py,sha256=vRQLJtL9d3y3B596CDz7KHGXfdCQWdw6UZeZOiUi5ik,27
|
|
5
|
-
flet_web/fastapi/__init__.py,sha256=cQn3Xg5p9NEfLLt6j7uRpxfNz5h2vzDEpOFhIBufShk,306
|
|
6
|
-
flet_web/fastapi/app.py,sha256=g3Aup4ce932sbEUjbqkVZku4gt1NBv0UfH6sqGVe3eg,4883
|
|
7
|
-
flet_web/fastapi/flet_app.py,sha256=QLfPR3p5EYhpGVogxVHSbBHy1BU5YIAl5ryeBi8R_Gc,16961
|
|
8
|
-
flet_web/fastapi/flet_app_manager.py,sha256=q5zeL15UX6-v7UXRxTm8eNFH4q_-KF-rr4ebvAtpQKI,6140
|
|
9
|
-
flet_web/fastapi/flet_fastapi.py,sha256=WDryZ1W0mS4ugTJtxtZ7yNZ5eqqg8cF8aXO0nun8byY,4687
|
|
10
|
-
flet_web/fastapi/flet_oauth.py,sha256=5_8dGg-WdiUuxl2_ItXXDgAltStsdgcItDPSn5dHCos,2109
|
|
11
|
-
flet_web/fastapi/flet_static_files.py,sha256=KaUT2DTkH0vsTAMWb5fHfFQOmC4bhhk6O83MWeMOgzY,7313
|
|
12
|
-
flet_web/fastapi/flet_upload.py,sha256=6QqRIOuntJ3xUUlfDl47XI3Na2zeCqpZYm1ZFwoFbYM,3115
|
|
13
|
-
flet_web/fastapi/oauth_state.py,sha256=beIRx_JXnzAQIV3QHEroPjtjtO52dJYYctybX8poiSo,308
|
|
14
|
-
flet_web/fastapi/serve_fastapi_web_app.py,sha256=WAjbB3yE5JBaTUMeG2D3128_IHefg2GnGLMMqkCvsoM,2300
|
|
15
|
-
flet_web/web/favicon.png,sha256=83Y7iihRHIC1ALYXYVizrRs2MNRA2YbWGL3UD4LTvOI,1028
|
|
16
|
-
flet_web/web/flutter.js,sha256=LCisyaYousUOOREl-8PAyoNma50Jf6RAhHx_xkksxRY,7735
|
|
17
|
-
flet_web/web/flutter.js.map,sha256=y4AbBqA85aovTkp3Si3nj1Muk-uVlfbelLIFkbDVCis,39976
|
|
18
|
-
flet_web/web/flutter_bootstrap.js,sha256=Ej-5WWM-4bAAoS1VTfIsgyWcB49KlNx73JxP9dXu_Ls,8549
|
|
19
|
-
flet_web/web/flutter_service_worker.js,sha256=d4-RL-YOLdT9JGovSmWktp_axngMpCvBa0lEGYnrEeU,8989
|
|
20
|
-
flet_web/web/index.html,sha256=3fh8yxyFyZXFDeS9co1DWQmz2Ri3SOD-Z2kzvTNMS9M,2162
|
|
21
|
-
flet_web/web/main.dart.js,sha256=4I7DCe9JMEMBUvjqzYiyvl6txBuswGDzOXSOD5op-Pk,8561747
|
|
22
|
-
flet_web/web/manifest.json,sha256=_GwcP9mT4sS_BwdYPcDEhnpejqe933LeYIytZIgDnr0,789
|
|
23
|
-
flet_web/web/python-worker.js,sha256=5Bl4FYntq5L_F-QJO44_CNoIkz1XY0eECj86Rc8TqXw,1573
|
|
24
|
-
flet_web/web/python.js,sha256=VzS78idquUNV_OcZOvFX-xf4ZErYIp-FSjv8u9fjWMI,744
|
|
25
|
-
flet_web/web/version.json,sha256=M3wyjx-6vkvcLftRE6e4ugK8oYoYlg19xEaZwbrgfHw,92
|
|
26
|
-
flet_web/web/assets/AssetManifest.bin,sha256=Q4sJXhFAZx8wv3K0TWA-ljDQf7oE2dP8FHjE07QJYdo,666
|
|
27
|
-
flet_web/web/assets/AssetManifest.bin.json,sha256=rfGK2KxFI6MWfK3wvg0dHVnZ9q6zSrcorP5GKV_-uRY,890
|
|
28
|
-
flet_web/web/assets/AssetManifest.json,sha256=zaDhetvObV0uhQRUjT1QEpicnQ-0DtdveW3NT1WKaho,623
|
|
29
|
-
flet_web/web/assets/FontManifest.json,sha256=zX4DZFvESy3Ue3y2JvUcTsv1Whl6t3JBYotHrBZfviE,208
|
|
30
|
-
flet_web/web/assets/NOTICES,sha256=UgKR8qsQE_sdN6R0TjYQ-EiqFlaEmfts3EBAMpcYT24,1913355
|
|
31
|
-
flet_web/web/assets/fonts/MaterialIcons-Regular.otf,sha256=4tuSWFPhP4dSN4fMvJkmiM_smjOAWmxrcR4_ecMxEmg,1261120
|
|
32
|
-
flet_web/web/assets/packages/cupertino_icons/assets/CupertinoIcons.ttf,sha256=Wh0PHxeqyR6PZxIylQGfc2mazyMaV3On6z_rSeZeTlc,209160
|
|
33
|
-
flet_web/web/assets/packages/flutter_map/lib/assets/flutter_map_logo.png,sha256=YFGuQvtQWTGoM-WPkgmp-WZppNDks_BvbYLN4SoOBAE,2424
|
|
34
|
-
flet_web/web/assets/packages/media_kit/assets/web/hls1.4.10.js,sha256=2PZAcgFKmwUJxIP3UmG5pCfEGORfgsF7DDInesGDLgc,374692
|
|
35
|
-
flet_web/web/assets/packages/record_web/assets/js/record.fixwebmduration.js,sha256=w0WtXS__s1etpke5tpBpNFKiABvFkS8ekGaHbOAWOZs,23286
|
|
36
|
-
flet_web/web/assets/packages/record_web/assets/js/record.worklet.js,sha256=hkPdAg583tT9IxLhQaZnzx_6lErDQk7E4C4Xc6c35-c,11594
|
|
37
|
-
flet_web/web/assets/packages/wakelock_plus/assets/no_sleep.js,sha256=3OTu8LGXtkCtaqqyIo7h7n3M-L1ta13lSE3RvRZDCng,13344
|
|
38
|
-
flet_web/web/assets/shaders/ink_sparkle.frag,sha256=4Bths5TPZqZBvqh-O0_jeH03L2Nsi8iipnQ4zcKdpvY,8867
|
|
39
|
-
flet_web/web/icons/apple-touch-icon-192.png,sha256=dIgpzAZUPynN5BlFNa3ix_VCW34Jl0vimki76Kb7Y5o,4699
|
|
40
|
-
flet_web/web/icons/icon-192.png,sha256=rpfj2H4BEMLPI5U8M6eO_boq73OxHYIlrHh1Up2Moro,6622
|
|
41
|
-
flet_web/web/icons/icon-512.png,sha256=LYsJAwoc1oRroLoakYbYHJJQN-cNtOjmj1QCooE71oo,18666
|
|
42
|
-
flet_web/web/icons/icon-maskable-192.png,sha256=JjQtcczM5M1ddM4W5EtJsNJR-kHO9iXzmC_TgWaqsxE,4128
|
|
43
|
-
flet_web/web/icons/icon-maskable-512.png,sha256=Iq5-TQS9BUn2U7T8ztgToh2EiWnLh9W4aTHIGja5c8o,11906
|
|
44
|
-
flet_web/web/icons/loading-animation.png,sha256=Zl6NT_QrVqNUatwcqmSZawFlMxWHsdm493XDBOE4gn4,17040
|
|
45
|
-
flet_web/web/pyodide/ffi.d.ts,sha256=_hT6zvfgPPatx_MFAySF51IEE_yo5HD3TXy1LatFMzw,43637
|
|
46
|
-
flet_web/web/pyodide/package.json,sha256=flXunSCf8Ta8gJF5htg1_0B-fWr_FwCOiCOK4L5fkYQ,3270
|
|
47
|
-
flet_web/web/pyodide/pyodide-lock.json,sha256=vhgHdF2pPaoJ02CxCcF6DlJudNZk0fG5hwqvzOmM5CY,112205
|
|
48
|
-
flet_web/web/pyodide/pyodide.asm.js,sha256=OoifBz5ijCGWxwW0L6DpVbouJcA0sePdWJw1vmdbwBs,1253804
|
|
49
|
-
flet_web/web/pyodide/pyodide.asm.wasm,sha256=9_7-VjE0cUoXq9ZVFtlJYOjb2W_md4p6hClH_JaGs6E,10103326
|
|
50
|
-
flet_web/web/pyodide/pyodide.d.ts,sha256=fiVAY-XRG5JNeWvJK3yDT_JWQ8WEFNZJzF7s4P_WFHk,63066
|
|
51
|
-
flet_web/web/pyodide/pyodide.js,sha256=f9vmblP2j2pOk8KVpmc3F1m-CT0r1AK7RFRVFFhAObY,14928
|
|
52
|
-
flet_web/web/pyodide/pyodide.mjs,sha256=a8TXtPYwjEus06p4TXRx6tm_RfI5ql60MYFdbxz_5Y4,13946
|
|
53
|
-
flet_web/web/pyodide/python_stdlib.zip,sha256=YDCWSWfkR8iHq8RsXwlnxVaIZE11lJbegqPvCfSfXLo,2358894
|
|
54
|
-
flet_web-0.29.0.dev5039.dist-info/METADATA,sha256=kMhsdMkXAs6DMz1cllFA3k2EgR1PR4PPp4jRPzOJrsk,594
|
|
55
|
-
flet_web-0.29.0.dev5039.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
56
|
-
flet_web-0.29.0.dev5039.dist-info/top_level.txt,sha256=1MXw6P2bxjBa70vz-6oTGqGmmLOWipyD7EaaivWoW1A,9
|
|
57
|
-
flet_web-0.29.0.dev5039.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|