From 78d2f4ae81adefef42179c04721dd6b4b579bd6e Mon Sep 17 00:00:00 2001 From: minjk-bl Date: Fri, 30 Jun 2023 17:47:16 +0900 Subject: [PATCH 1/6] Edit package manager install code --- visualpython/js/com/component/PackageManager.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/visualpython/js/com/component/PackageManager.js b/visualpython/js/com/component/PackageManager.js index f98af4f3..715b932c 100644 --- a/visualpython/js/com/component/PackageManager.js +++ b/visualpython/js/com/component/PackageManager.js @@ -148,7 +148,7 @@ define([ var pipName = that.packageLib[key].pipName; var code = com_util.formatString("!pip uninstall -y {0}", pipName); if (vpConfig.extensionType === 'lite') { - code = com_util.formatString("import piplite\npiplite.uninstall('{0}')", pipName); + code = com_util.formatString("%pip uninstall {0}", pipName); } // create block and run it $('#vp_wrapper').trigger({ @@ -162,7 +162,7 @@ define([ var pipName = that.packageLib[key].pipName; var code = com_util.formatString("!pip install --upgrade {0}", pipName); if (vpConfig.extensionType === 'lite') { - code = com_util.formatString("%pip install --upgrade {0}", pipName); + code = com_util.formatString("%pip install {0}", pipName); } // create block and run it $('#vp_wrapper').trigger({ @@ -269,7 +269,7 @@ define([ var pipName = this.packageLib[this.state.selected].pipName; var code = com_util.formatString("!pip install {0}", pipName); if (vpConfig.extensionType === 'lite') { - code = com_util.formatString("import piplite\npiplite.install('{0}')", pipName); + code = com_util.formatString("%pip install {0}", pipName); } if (versionType === 'specified') { // specified version @@ -277,7 +277,7 @@ define([ if (version && version !== '') { code = com_util.formatString("!pip install {0}=={1}", pipName, version); if (vpConfig.extensionType === 'lite') { - code = com_util.formatString("import piplite\npiplite.install('{0}=={1}')", pipName, version); + code = com_util.formatString("%pip install {0}=={1}", pipName, version); } } else { $(this.wrapSelector('.vp-inner-popup-version')).focus(); From 78ae30e07cd0dbac989d24e1a78c7a6c959234ff Mon Sep 17 00:00:00 2001 From: minjk-bl Date: Fri, 30 Jun 2023 17:48:20 +0900 Subject: [PATCH 2/6] Add installation of preinstall packages for jupyterlite --- visualpython/js/com/com_Config.js | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/visualpython/js/com/com_Config.js b/visualpython/js/com/com_Config.js index f23a1864..cf33bd8c 100644 --- a/visualpython/js/com/com_Config.js +++ b/visualpython/js/com/com_Config.js @@ -296,6 +296,7 @@ define([ * - automatically restart on jupyter kernel restart (loadVisualpython.js) */ readKernelFunction() { + let that = this; // CHROME: change method to load py files ($.get -> require) return new Promise(function(resolve, reject) { var libraryList = [ @@ -314,7 +315,26 @@ define([ libraryList.forEach(libCode => { promiseList.push(vpKernel.execute(libCode, true)); }); - + + if (that.extensionType === 'lite') { + let preInstallCode = ''; + let preInstallPackList = [ + 'seaborn', + 'plotly', + 'scikit-learn', + 'scipy', + 'statsmodels' + ]; + preInstallPackList.forEach((packName, idx) => { + preInstallCode += '%pip install ' + packName + if (idx < preInstallPackList.length - 1) { + preInstallCode += '\n'; + } + }); + // pre-install packages + promiseList.push(vpKernel.execute(preInstallCode, true)); + } + // run all promises let failed = false; Promise.all(promiseList).then(function(resultObj) { @@ -918,7 +938,7 @@ define([ '- Save VP Note before refreshing the page.' ]; com_interface.insertCell('markdown', info.join('\n')); - com_interface.insertCell('code', "import piplite\npiplite.install('jupyterlab-visualpython==" + latestVersion + "')"); + com_interface.insertCell('code', "%pip install jupyterlab-visualpython==" + latestVersion); } // update version_timestamp From 1eef553b6339aa469ff94f0f18ff0ca1bf1fb496 Mon Sep 17 00:00:00 2001 From: minjk-bl Date: Fri, 30 Jun 2023 17:48:39 +0900 Subject: [PATCH 3/6] Edit install code for jupyterlite --- visualpython/js/m_apps/PDF.js | 12 +++++++++--- visualpython/js/m_stats/Anova.js | 18 +++++++++++++++--- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/visualpython/js/m_apps/PDF.js b/visualpython/js/m_apps/PDF.js index c4ea125b..e5fdf2ce 100644 --- a/visualpython/js/m_apps/PDF.js +++ b/visualpython/js/m_apps/PDF.js @@ -21,9 +21,9 @@ define([ 'vp_base/js/com/component/FileNavigation' ], function(pdfHtml, pdfCss, com_String, com_interface, PopupComponent, FileNavigation) { - const PDF_SHOW = '!pip show PyMuPDF nltk' - const PDF_INSTALL1 = '!pip install PyMuPDF' - const PDF_INSTALL2 = '!pip install nltk' + var PDF_SHOW = '!pip show PyMuPDF nltk' + var PDF_INSTALL1 = '!pip install PyMuPDF' + var PDF_INSTALL2 = '!pip install nltk' const PDF_IMPORT = `import pandas as pd import fitz @@ -80,6 +80,12 @@ nltk.download('punkt')`; vp_pdfReturn: '', ...this.state } + + if (vpConfig.extensionType === 'lite') { + PDF_SHOW = PDF_SHOW.replace('!', '%'); + PDF_INSTALL1 = PDF_INSTALL1.replace('!', '%'); + PDF_INSTALL2 = PDF_INSTALL2.replace('!', '%'); + } } _bindEvent() { diff --git a/visualpython/js/m_stats/Anova.js b/visualpython/js/m_stats/Anova.js index 9edc8752..191ed0f7 100644 --- a/visualpython/js/m_stats/Anova.js +++ b/visualpython/js/m_stats/Anova.js @@ -252,7 +252,11 @@ define([ } if (tukey === true || scheffe === true || duncan === true) { - codeList.push("!pip install scikit-posthocs"); + if (vpConfig.extensionType === 'lite') { + codeList.push("%pip install scikit-posthocs"); + } else { + codeList.push("!pip install scikit-posthocs"); + } // Post hoc analysis - Tukey if (tukey === true) { @@ -379,7 +383,11 @@ define([ } if (tukey === true || scheffe === true || duncan === true) { // Add installation code - codeList.push("!pip install scikit-posthocs"); + if (vpConfig.extensionType === 'lite') { + codeList.push("%pip install scikit-posthocs"); + } else { + codeList.push("!pip install scikit-posthocs"); + } // Post hoc analysis - Tukey if (tukey === true) { @@ -445,7 +453,11 @@ define([ } // Add installation code : # pip install pingouin - codeList.push("!pip install pingouin"); + if (vpConfig.extensionType === 'lite') { + codeList.push("%pip install pingouin"); + } else { + codeList.push("!pip install pingouin"); + } code.appendLine(); code.appendLine(); From 538a594702859f102af24d6cbdb7968050e00e8e Mon Sep 17 00:00:00 2001 From: minjk-bl Date: Fri, 30 Jun 2023 17:54:16 +0900 Subject: [PATCH 4/6] Add managable packages --- .../js/com/component/PackageManager.js | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/visualpython/js/com/component/PackageManager.js b/visualpython/js/com/component/PackageManager.js index 715b932c..95b7cb5f 100644 --- a/visualpython/js/com/component/PackageManager.js +++ b/visualpython/js/com/component/PackageManager.js @@ -64,6 +64,28 @@ define([ 'PyMuPDF': { pipName: 'PyMuPDF' }, 'sweetviz': { pipName: 'sweetviz' }, } + + if (vpConfig.extensionType === 'lite') { + this.packageLibTemplate = { + 'numpy': { pipName: 'numpy' }, + 'pandas': { pipName: 'pandas' }, + 'matplotlib': { pipName: 'matplotlib' }, + 'seaborn': { pipName: 'seaborn' }, + 'plotly': { pipName: 'plotly' }, + 'sklearn': { pipName: 'scikit-learn' }, + 'scikit-posthocs': { pipName: 'scikit-posthocs' }, + 'scipy': { pipName: 'scipy' }, + 'statsmodels': { pipName: 'statsmodels' }, + 'factor-analyzer': { pipName: 'factor-analyzer' }, + 'category_encoders': { pipName: 'category_encoders' }, + 'imblearn': { pipName: 'imblearn' }, + 'xgboost': { pipName: 'xgboost' }, + 'lightgbm': { pipName: 'lightgbm' }, + 'catboost': { pipName: 'catboost' }, + 'auto-sklearn': { pipName: 'auto-sklearn' }, + 'sweetviz': { pipName: 'sweetviz' }, + } + } } _bindEvent() { From 07bdc58902adfcb0bd57a791a1c139b55566f519 Mon Sep 17 00:00:00 2001 From: minjk-bl Date: Fri, 30 Jun 2023 17:54:40 +0900 Subject: [PATCH 5/6] Add installation code for factor analysis --- visualpython/js/m_stats/FactorAnalysis.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/visualpython/js/m_stats/FactorAnalysis.js b/visualpython/js/m_stats/FactorAnalysis.js index c9bcb1e0..be875252 100644 --- a/visualpython/js/m_stats/FactorAnalysis.js +++ b/visualpython/js/m_stats/FactorAnalysis.js @@ -167,6 +167,13 @@ define([ let codeList = []; let code = new com_String(); + // Add installation code FIXME: + if (vpConfig.extensionType === 'lite') { + codeList.push(that.generateInstallCode().replace('!', '%')); + } else { + codeList.push(that.generateInstallCode()); + } + // data declaration code.appendFormat("vp_df = {0}", data); if (this.columnSelector) { From a8fb13bc86a36bc91cfc21f14a795d2713319284 Mon Sep 17 00:00:00 2001 From: minjk-bl Date: Fri, 30 Jun 2023 17:54:58 +0900 Subject: [PATCH 6/6] add jupyterlite gitignore --- .gitignore | 1 + jupyterlab/.jupyterlite.doit.db | Bin 77824 -> 77824 bytes 2 files changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index e05d4c22..396b0deb 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ jupyternotebook/visualpython colab/visualpython test/ .gitignore +visualpython/js/com/com_Config.js diff --git a/jupyterlab/.jupyterlite.doit.db b/jupyterlab/.jupyterlite.doit.db index 54f9b6a899317b18fd7d657cc812fe32421f0600..e60d75e06f12f867f55df5779b882d3f689efe1e 100644 GIT binary patch delta 3801 zcmdT`YitzP72esIU9Y__2k>M4zz-mRY_I3edt4FQ;00X3Hkc$(*WlTmS+E1P!4A-X zDbPyotV98yz&bpFfe;cBsLiN#M3XdXRS|?DL7-`aXaGe8($LaYA_)ab@9fwnhFD7b zuU>g}?%jLO{m!}H`OevNh1zt5+Mb;(*=)A4_}{%_;&%wCzv+Pg2|TjEpcVz9Zgi?(@DSz6;)q{!CxGU-ew_47l(4e(B%i>+D~(&<%Twme?IO zxL5RKl7m=4ZJtcPuS=)E8F3Pkh7MOUnPzWp zZSJJ*6_T^;P_Ql6?nr_M#UjxRVhM7dsiQVeuUarhisnfaSv>^zQw$@IqwX>sa=*408lDUbECK5+-!i;%F z`1$4)s>7K=X4tJ)veSI;&{nU}sIPptZ0Cdu02+|R}$M@m_Tzt$G8yh@n1Gq)yEuTg1aJ()7{V@#y4*(t|(TXp4^C-@-rgBKzS+1G6FBq{~cm-e#{H^Gv+&2#5`nM7xWe($PGzkDCUOy zTSNAm7~}{*+ni zi8bqUsAqS2O-{k8lAM7zrw|&!CoYtgWgI8rTVH5Ar-WDv)8+=C?z}hNS3V6uy*4SThXAVj^)cZ}-S0Fn!P4 zgDVhXXoiE7z1M~&F!zuM_x8R5i$4xQG~5cuS`9dM)_^nT4cIg*1pfVPa5j1Zw$2Q} zsb#Ik#tTsbu5^3Hv3yv-jxk{#Ayq?&5iufbrWyF!iH|>7Nrm?Jh8Wd!%9*KaQWog75V~{LCO+^60H054i-~`$tEvF#h?* z4!ad5Bw-g3Y&(8^#CXfkH$vabS@`&x5%cS|e=yQ?-HyKug$75HI1ot?*$@g1R{BuEUL*!3DFnmIE0!6M8L7BQG6g^Cu!hyR72k|nT85QGihYE&Wwvr+H@E~9$nfW7v|JC6Owp?-?*;kC&nE3PQ zxbVN~ZSDQ~q4fF!7&mUk;4c+!^-uvsiS0_zR=Xo?u-m_iC%Atp0h$Eidi6V3Dlc#3H$&jp2P(?S(5SHe`|#| zOZJIAoOexg>Y)5=EAYod#;IkKh(T4G2)!%Xx_bh!Ykv#0&!(XDxeah!>A(aI!CTF3 zkds#hfk-Q!FM-rQp2W$q9-7)b<9J$B6-m$#$1zc?1z}B&!lt%0(5x9)C3nJ|_0K>> zP653BVnS&O9ui_zq%$~kxm4Stc%wiP;@!P@Lh=~nTDP)4qtC@LGdk@ z;raVZiK#Kh;V&Cpzo3W%iQ(9R!%0MgYk*1}oUp;>%d6vm%_K4gf|cSI3-Fm z3Qf~23;CBeHgZT7Wkr<)T9X+?QdEsrN3$;B2 zN#o-ENyLU{Mv2a2*0HWII5J2SFv|mj5I+}X+h(0-x1|l9*4mMzWAG} zHxA9$OecC8l&FFha@mYep~m6nR_0WOjVcPq@uG|rk&DO@jYnZlP9SgiCaOOk`NR=c z+w$;YS&XF_>e~D1%f+q(zC7X;$FEB2pt- h7M zb4^1)j=Gh^7;H^C4Kc;rhAGV?e{`muOvgWhkEBKoQzVi ze(FFfSwuj}P!d7yhez20J^(@vqj{l(8c0*|PUW!do@g?SX!mvbYZn3f^5>4-8234Tkq_EZRBPKFA2&IyHL!`Q>&Abg;t(c?EdX_Y)(@&6x z<4CKjEiX6^H(u4HP<@YWU67sU_KALv=YKLXc60%(KLC*PdvOp4HIHrIsl-eM7u#l{jTH(u; zRfMz$T9OMXl%~V*>UbgPlbBWVJ7|HYbFH+Mq3tY8CC)y^;~3guhw-Fe1$r{@6_9lNwqa2^I3w#v(r|r{ z!_hQa4|#AmOagLF+zByM1(uUb3>AI(sk?!UOxy&zz?}N=Fwj_l;-C-3;-3Ywy1KjF z@9FYaS9dkJI!!koACXm&Rlo=_D3$&nxBqV3bc=B_1;lhb2fqEO2=`}=f&O$n7W`lM z;ES7wzyc94e_4dnUMFZj5kY@d9&s1L8#N+~pK`*7H@tAhXNJc9El`k{0&fPK@Brbw z%&X#kl`?4CoG|qpam1YliDCwPh)_0^$HVPgB2--Y3FO?o2)BmU!tiGz(zr0)IB=*6tMFMJsGvE<>{n>UN{SfsIg~9Ns z{7~CutqhA^sX{&N;yK#JIlOk%Oa#VZ;~T6tE9Yjt=mn*nB``CZ3UwtZstUwp7%RL| zaxcs%d7v~oWTwM`%9e-mvTzX?+x|h&CD>Cwt5#*rj&tgMr$E+>5B~mH5A+K0(3+GD z(Um@=G!7n2wt zpIPcmHiog;pzV$MMG!=z%?J0{Gcfa26g;;lR!*-gSZZv7(%3p&_f%V&>VF>=KbKpb zkSiL7h>%rktNW8TWYuDGoo(#9_+yk*w_pQwSBX%x-3dS1DMI8~XORBcNhh>j7efiD zluRSqN8?g0e7DgFH5DQ}bUWpByHapC)Z~OSwQh(`)`Qrb6)d=4el9Pj_!LA}=wQRB zS{aXaIDuU_DDV62od_jN(Q@tGF|AD9-=$N?WpeFb$Fx7CaFtv>S*ydxv<3&m+pTnc zgV#gTz%2Am4o2hCT4ez?SsRBWp!jc{f#MWAc5={yf1+L2YeZ8~+OIJ4l)2lSjvDg` zbTj;;?x^lth>2m#(O;{G9PikIPOKv36enw>%|NfrBrE>sj@AUyc`QP?xS%%$gX2!a z%gx6~YUfF#a&d)@oJ9HO-|^t6*p+*Ql|i=x`@eiENUecCTquRUZ3d{RjQ