diff --git a/README.md b/README.md index 6476f441..6b4bcd90 100644 --- a/README.md +++ b/README.md @@ -152,6 +152,7 @@ All skills from programmers, non-programmers, designers are welcomed. [](https://github.com/llbtl) [](https://github.com/blacklogicdev) [](https://github.com/Minku-Koo) +[](https://github.com/8orrin9) Whoever wants to contribute or join our community,
You can contact us by creating issues on [Issue page](https://github.com/visualpython/visualpython/issues) or using [Discord server](https://discord.gg/PypQrBZWZv). diff --git a/build.sh b/build.sh index 6e090be1..2178b3ce 100755 --- a/build.sh +++ b/build.sh @@ -11,8 +11,8 @@ #============================================================================= # Set version and replace it #============================================================================= -VP_ORG_VER=2.5.0 -VP_NEW_VER=3.0.0 +VP_ORG_VER=3.0.1 +VP_NEW_VER=3.0.2 # update version info grep -REil "VP_ORG_VER=.+$" colab/build.colab.sh jupyterlab/build.jupyterlab.sh jupyternotebook/build.jupyternotebook.sh | xargs sed -i "s/VP_ORG_VER=.\+$/VP_ORG_VER=${VP_ORG_VER}/g" diff --git a/colab/build.colab.sh b/colab/build.colab.sh index 4abeeffe..2ad68893 100755 --- a/colab/build.colab.sh +++ b/colab/build.colab.sh @@ -11,8 +11,8 @@ #============================================================================= # Replace Version #============================================================================= -VP_ORG_VER=2.5.0 -VP_NEW_VER=3.0.0 +VP_ORG_VER=3.0.1 +VP_NEW_VER=3.0.2 # update version info # update manifest version with new numbering for new version diff --git a/colab/manifest.json b/colab/manifest.json index 8aa83f36..c3509bcc 100644 --- a/colab/manifest.json +++ b/colab/manifest.json @@ -1,7 +1,7 @@ { "name": "Visual Python for Colab", "description": "GUI-based Python code generator for Google Colab as an extension", - "version": "3.0.0", + "version": "3.0.2", "manifest_version": 3, "icons": { "48": "icon.png", diff --git a/docs/.gitbook/assets/1_Import_1_3 (1).gif b/docs/.gitbook/assets/1_Import_1_3 (1).gif new file mode 100644 index 00000000..4492d624 Binary files /dev/null and b/docs/.gitbook/assets/1_Import_1_3 (1).gif differ diff --git a/docs/.gitbook/assets/1_Import_1_3.gif b/docs/.gitbook/assets/1_Import_1_3.gif new file mode 100644 index 00000000..1c164a6c Binary files /dev/null and b/docs/.gitbook/assets/1_Import_1_3.gif differ diff --git a/docs/.gitbook/assets/1_Import_2_3.gif b/docs/.gitbook/assets/1_Import_2_3.gif new file mode 100644 index 00000000..1dbeca5c Binary files /dev/null and b/docs/.gitbook/assets/1_Import_2_3.gif differ diff --git a/docs/.gitbook/assets/1_Import_3_1.png b/docs/.gitbook/assets/1_Import_3_1.png new file mode 100644 index 00000000..c722cca1 Binary files /dev/null and b/docs/.gitbook/assets/1_Import_3_1.png differ diff --git a/docs/.gitbook/assets/1_Import_3_2 (1).png b/docs/.gitbook/assets/1_Import_3_2 (1).png new file mode 100644 index 00000000..4ae8a527 Binary files /dev/null and b/docs/.gitbook/assets/1_Import_3_2 (1).png differ diff --git a/docs/.gitbook/assets/1_Import_3_2.png b/docs/.gitbook/assets/1_Import_3_2.png new file mode 100644 index 00000000..37e55fd0 Binary files /dev/null and b/docs/.gitbook/assets/1_Import_3_2.png differ diff --git a/docs/.gitbook/assets/1_Import_4_4.gif b/docs/.gitbook/assets/1_Import_4_4.gif new file mode 100644 index 00000000..b0b85c77 Binary files /dev/null and b/docs/.gitbook/assets/1_Import_4_4.gif differ diff --git a/docs/.gitbook/assets/1_Import_6_5.gif b/docs/.gitbook/assets/1_Import_6_5.gif new file mode 100644 index 00000000..9a4e1040 Binary files /dev/null and b/docs/.gitbook/assets/1_Import_6_5.gif differ diff --git a/docs/.gitbook/assets/1_Import_6_6.gif b/docs/.gitbook/assets/1_Import_6_6.gif new file mode 100644 index 00000000..9c32538c Binary files /dev/null and b/docs/.gitbook/assets/1_Import_6_6.gif differ diff --git a/docs/.gitbook/assets/1_Import_7_3.gif b/docs/.gitbook/assets/1_Import_7_3.gif new file mode 100644 index 00000000..cfe1490c Binary files /dev/null and b/docs/.gitbook/assets/1_Import_7_3.gif differ diff --git a/docs/.gitbook/assets/Visual Python_2.2.8.gif b/docs/.gitbook/assets/Visual Python_2.2.8.gif new file mode 100644 index 00000000..43fb4443 Binary files /dev/null and b/docs/.gitbook/assets/Visual Python_2.2.8.gif differ diff --git a/docs/.gitbook/assets/image (1) (1) (1).png b/docs/.gitbook/assets/image (1) (1) (1).png new file mode 100644 index 00000000..d38c2e11 Binary files /dev/null and b/docs/.gitbook/assets/image (1) (1) (1).png differ diff --git a/docs/.gitbook/assets/image (1) (1).png b/docs/.gitbook/assets/image (1) (1).png new file mode 100644 index 00000000..f7386538 Binary files /dev/null and b/docs/.gitbook/assets/image (1) (1).png differ diff --git a/docs/.gitbook/assets/image (1) (2).png b/docs/.gitbook/assets/image (1) (2).png new file mode 100644 index 00000000..5e1c0718 Binary files /dev/null and b/docs/.gitbook/assets/image (1) (2).png differ diff --git a/docs/.gitbook/assets/image (1).png b/docs/.gitbook/assets/image (1).png new file mode 100644 index 00000000..5e1c0718 Binary files /dev/null and b/docs/.gitbook/assets/image (1).png differ diff --git a/docs/.gitbook/assets/image (10) (1).png b/docs/.gitbook/assets/image (10) (1).png new file mode 100644 index 00000000..4e35f520 Binary files /dev/null and b/docs/.gitbook/assets/image (10) (1).png differ diff --git a/docs/.gitbook/assets/image (10).png b/docs/.gitbook/assets/image (10).png new file mode 100644 index 00000000..f357430e Binary files /dev/null and b/docs/.gitbook/assets/image (10).png differ diff --git a/docs/.gitbook/assets/image (100).png b/docs/.gitbook/assets/image (100).png new file mode 100644 index 00000000..a1a925e6 Binary files /dev/null and b/docs/.gitbook/assets/image (100).png differ diff --git a/docs/.gitbook/assets/image (101).png b/docs/.gitbook/assets/image (101).png new file mode 100644 index 00000000..5edaf833 Binary files /dev/null and b/docs/.gitbook/assets/image (101).png differ diff --git a/docs/.gitbook/assets/image (102).png b/docs/.gitbook/assets/image (102).png new file mode 100644 index 00000000..3a939127 Binary files /dev/null and b/docs/.gitbook/assets/image (102).png differ diff --git a/docs/.gitbook/assets/image (103).png b/docs/.gitbook/assets/image (103).png new file mode 100644 index 00000000..84154c23 Binary files /dev/null and b/docs/.gitbook/assets/image (103).png differ diff --git a/docs/.gitbook/assets/image (104).png b/docs/.gitbook/assets/image (104).png new file mode 100644 index 00000000..82605626 Binary files /dev/null and b/docs/.gitbook/assets/image (104).png differ diff --git a/docs/.gitbook/assets/image (105).png b/docs/.gitbook/assets/image (105).png new file mode 100644 index 00000000..b53ee9a8 Binary files /dev/null and b/docs/.gitbook/assets/image (105).png differ diff --git a/docs/.gitbook/assets/image (106).png b/docs/.gitbook/assets/image (106).png new file mode 100644 index 00000000..e227e397 Binary files /dev/null and b/docs/.gitbook/assets/image (106).png differ diff --git a/docs/.gitbook/assets/image (107).png b/docs/.gitbook/assets/image (107).png new file mode 100644 index 00000000..53201b8c Binary files /dev/null and b/docs/.gitbook/assets/image (107).png differ diff --git a/docs/.gitbook/assets/image (108).png b/docs/.gitbook/assets/image (108).png new file mode 100644 index 00000000..42a8a27f Binary files /dev/null and b/docs/.gitbook/assets/image (108).png differ diff --git a/docs/.gitbook/assets/image (109).png b/docs/.gitbook/assets/image (109).png new file mode 100644 index 00000000..208b32db Binary files /dev/null and b/docs/.gitbook/assets/image (109).png differ diff --git a/docs/.gitbook/assets/image (11) (1).png b/docs/.gitbook/assets/image (11) (1).png new file mode 100644 index 00000000..912ba3a0 Binary files /dev/null and b/docs/.gitbook/assets/image (11) (1).png differ diff --git a/docs/.gitbook/assets/image (11).png b/docs/.gitbook/assets/image (11).png new file mode 100644 index 00000000..e8347c84 Binary files /dev/null and b/docs/.gitbook/assets/image (11).png differ diff --git a/docs/.gitbook/assets/image (110).png b/docs/.gitbook/assets/image (110).png new file mode 100644 index 00000000..31fe4733 Binary files /dev/null and b/docs/.gitbook/assets/image (110).png differ diff --git a/docs/.gitbook/assets/image (111).png b/docs/.gitbook/assets/image (111).png new file mode 100644 index 00000000..02d26fb2 Binary files /dev/null and b/docs/.gitbook/assets/image (111).png differ diff --git a/docs/.gitbook/assets/image (112).png b/docs/.gitbook/assets/image (112).png new file mode 100644 index 00000000..fcce5235 Binary files /dev/null and b/docs/.gitbook/assets/image (112).png differ diff --git a/docs/.gitbook/assets/image (113).png b/docs/.gitbook/assets/image (113).png new file mode 100644 index 00000000..fdac0a3d Binary files /dev/null and b/docs/.gitbook/assets/image (113).png differ diff --git a/docs/.gitbook/assets/image (114).png b/docs/.gitbook/assets/image (114).png new file mode 100644 index 00000000..e8f40b86 Binary files /dev/null and b/docs/.gitbook/assets/image (114).png differ diff --git a/docs/.gitbook/assets/image (115).png b/docs/.gitbook/assets/image (115).png new file mode 100644 index 00000000..491b8246 Binary files /dev/null and b/docs/.gitbook/assets/image (115).png differ diff --git a/docs/.gitbook/assets/image (116).png b/docs/.gitbook/assets/image (116).png new file mode 100644 index 00000000..d0083859 Binary files /dev/null and b/docs/.gitbook/assets/image (116).png differ diff --git a/docs/.gitbook/assets/image (117).png b/docs/.gitbook/assets/image (117).png new file mode 100644 index 00000000..3b5adec9 Binary files /dev/null and b/docs/.gitbook/assets/image (117).png differ diff --git a/docs/.gitbook/assets/image (118).png b/docs/.gitbook/assets/image (118).png new file mode 100644 index 00000000..8a35e224 Binary files /dev/null and b/docs/.gitbook/assets/image (118).png differ diff --git a/docs/.gitbook/assets/image (119).png b/docs/.gitbook/assets/image (119).png new file mode 100644 index 00000000..e8f3ab34 Binary files /dev/null and b/docs/.gitbook/assets/image (119).png differ diff --git a/docs/.gitbook/assets/image (12) (1).png b/docs/.gitbook/assets/image (12) (1).png new file mode 100644 index 00000000..256ab020 Binary files /dev/null and b/docs/.gitbook/assets/image (12) (1).png differ diff --git a/docs/.gitbook/assets/image (12).png b/docs/.gitbook/assets/image (12).png new file mode 100644 index 00000000..6d4a4d01 Binary files /dev/null and b/docs/.gitbook/assets/image (12).png differ diff --git a/docs/.gitbook/assets/image (120).png b/docs/.gitbook/assets/image (120).png new file mode 100644 index 00000000..ca2a32f7 Binary files /dev/null and b/docs/.gitbook/assets/image (120).png differ diff --git a/docs/.gitbook/assets/image (121).png b/docs/.gitbook/assets/image (121).png new file mode 100644 index 00000000..e805d6fd Binary files /dev/null and b/docs/.gitbook/assets/image (121).png differ diff --git a/docs/.gitbook/assets/image (122).png b/docs/.gitbook/assets/image (122).png new file mode 100644 index 00000000..1d2d2444 Binary files /dev/null and b/docs/.gitbook/assets/image (122).png differ diff --git a/docs/.gitbook/assets/image (123).png b/docs/.gitbook/assets/image (123).png new file mode 100644 index 00000000..9145f96f Binary files /dev/null and b/docs/.gitbook/assets/image (123).png differ diff --git a/docs/.gitbook/assets/image (124).png b/docs/.gitbook/assets/image (124).png new file mode 100644 index 00000000..9c8c952c Binary files /dev/null and b/docs/.gitbook/assets/image (124).png differ diff --git a/docs/.gitbook/assets/image (125).png b/docs/.gitbook/assets/image (125).png new file mode 100644 index 00000000..e26159c6 Binary files /dev/null and b/docs/.gitbook/assets/image (125).png differ diff --git a/docs/.gitbook/assets/image (126).png b/docs/.gitbook/assets/image (126).png new file mode 100644 index 00000000..b87af1c5 Binary files /dev/null and b/docs/.gitbook/assets/image (126).png differ diff --git a/docs/.gitbook/assets/image (127).png b/docs/.gitbook/assets/image (127).png new file mode 100644 index 00000000..d9e55315 Binary files /dev/null and b/docs/.gitbook/assets/image (127).png differ diff --git a/docs/.gitbook/assets/image (128).png b/docs/.gitbook/assets/image (128).png new file mode 100644 index 00000000..c13039f8 Binary files /dev/null and b/docs/.gitbook/assets/image (128).png differ diff --git a/docs/.gitbook/assets/image (129).png b/docs/.gitbook/assets/image (129).png new file mode 100644 index 00000000..41783c6c Binary files /dev/null and b/docs/.gitbook/assets/image (129).png differ diff --git a/docs/.gitbook/assets/image (13) (1).png b/docs/.gitbook/assets/image (13) (1).png new file mode 100644 index 00000000..28f0ed3a Binary files /dev/null and b/docs/.gitbook/assets/image (13) (1).png differ diff --git a/docs/.gitbook/assets/image (13).png b/docs/.gitbook/assets/image (13).png new file mode 100644 index 00000000..b845a0ee Binary files /dev/null and b/docs/.gitbook/assets/image (13).png differ diff --git a/docs/.gitbook/assets/image (130).png b/docs/.gitbook/assets/image (130).png new file mode 100644 index 00000000..6236c921 Binary files /dev/null and b/docs/.gitbook/assets/image (130).png differ diff --git a/docs/.gitbook/assets/image (131).png b/docs/.gitbook/assets/image (131).png new file mode 100644 index 00000000..01d66565 Binary files /dev/null and b/docs/.gitbook/assets/image (131).png differ diff --git a/docs/.gitbook/assets/image (132).png b/docs/.gitbook/assets/image (132).png new file mode 100644 index 00000000..b729939b Binary files /dev/null and b/docs/.gitbook/assets/image (132).png differ diff --git a/docs/.gitbook/assets/image (133).png b/docs/.gitbook/assets/image (133).png new file mode 100644 index 00000000..63622a30 Binary files /dev/null and b/docs/.gitbook/assets/image (133).png differ diff --git a/docs/.gitbook/assets/image (134).png b/docs/.gitbook/assets/image (134).png new file mode 100644 index 00000000..73166e49 Binary files /dev/null and b/docs/.gitbook/assets/image (134).png differ diff --git a/docs/.gitbook/assets/image (135).png b/docs/.gitbook/assets/image (135).png new file mode 100644 index 00000000..3eee3e8d Binary files /dev/null and b/docs/.gitbook/assets/image (135).png differ diff --git a/docs/.gitbook/assets/image (136).png b/docs/.gitbook/assets/image (136).png new file mode 100644 index 00000000..68312257 Binary files /dev/null and b/docs/.gitbook/assets/image (136).png differ diff --git a/docs/.gitbook/assets/image (137).png b/docs/.gitbook/assets/image (137).png new file mode 100644 index 00000000..06cdc22f Binary files /dev/null and b/docs/.gitbook/assets/image (137).png differ diff --git a/docs/.gitbook/assets/image (138).png b/docs/.gitbook/assets/image (138).png new file mode 100644 index 00000000..0c170673 Binary files /dev/null and b/docs/.gitbook/assets/image (138).png differ diff --git a/docs/.gitbook/assets/image (139).png b/docs/.gitbook/assets/image (139).png new file mode 100644 index 00000000..340ab991 Binary files /dev/null and b/docs/.gitbook/assets/image (139).png differ diff --git a/docs/.gitbook/assets/image (14).png b/docs/.gitbook/assets/image (14).png new file mode 100644 index 00000000..1dfcd1a5 Binary files /dev/null and b/docs/.gitbook/assets/image (14).png differ diff --git a/docs/.gitbook/assets/image (140).png b/docs/.gitbook/assets/image (140).png new file mode 100644 index 00000000..f332d5f1 Binary files /dev/null and b/docs/.gitbook/assets/image (140).png differ diff --git a/docs/.gitbook/assets/image (141).png b/docs/.gitbook/assets/image (141).png new file mode 100644 index 00000000..fa22a319 Binary files /dev/null and b/docs/.gitbook/assets/image (141).png differ diff --git a/docs/.gitbook/assets/image (142).png b/docs/.gitbook/assets/image (142).png new file mode 100644 index 00000000..e30b28bc Binary files /dev/null and b/docs/.gitbook/assets/image (142).png differ diff --git a/docs/.gitbook/assets/image (143).png b/docs/.gitbook/assets/image (143).png new file mode 100644 index 00000000..fa77b1fe Binary files /dev/null and b/docs/.gitbook/assets/image (143).png differ diff --git a/docs/.gitbook/assets/image (144).png b/docs/.gitbook/assets/image (144).png new file mode 100644 index 00000000..1f6e1fac Binary files /dev/null and b/docs/.gitbook/assets/image (144).png differ diff --git a/docs/.gitbook/assets/image (145).png b/docs/.gitbook/assets/image (145).png new file mode 100644 index 00000000..7102231e Binary files /dev/null and b/docs/.gitbook/assets/image (145).png differ diff --git a/docs/.gitbook/assets/image (146).png b/docs/.gitbook/assets/image (146).png new file mode 100644 index 00000000..2abbbe15 Binary files /dev/null and b/docs/.gitbook/assets/image (146).png differ diff --git a/docs/.gitbook/assets/image (147).png b/docs/.gitbook/assets/image (147).png new file mode 100644 index 00000000..1b341d52 Binary files /dev/null and b/docs/.gitbook/assets/image (147).png differ diff --git a/docs/.gitbook/assets/image (148).png b/docs/.gitbook/assets/image (148).png new file mode 100644 index 00000000..cba51553 Binary files /dev/null and b/docs/.gitbook/assets/image (148).png differ diff --git a/docs/.gitbook/assets/image (149).png b/docs/.gitbook/assets/image (149).png new file mode 100644 index 00000000..de950e52 Binary files /dev/null and b/docs/.gitbook/assets/image (149).png differ diff --git a/docs/.gitbook/assets/image (15).png b/docs/.gitbook/assets/image (15).png new file mode 100644 index 00000000..922a3b44 Binary files /dev/null and b/docs/.gitbook/assets/image (15).png differ diff --git a/docs/.gitbook/assets/image (150).png b/docs/.gitbook/assets/image (150).png new file mode 100644 index 00000000..a2258ea8 Binary files /dev/null and b/docs/.gitbook/assets/image (150).png differ diff --git a/docs/.gitbook/assets/image (151).png b/docs/.gitbook/assets/image (151).png new file mode 100644 index 00000000..b19b74b6 Binary files /dev/null and b/docs/.gitbook/assets/image (151).png differ diff --git a/docs/.gitbook/assets/image (152).png b/docs/.gitbook/assets/image (152).png new file mode 100644 index 00000000..62066ee0 Binary files /dev/null and b/docs/.gitbook/assets/image (152).png differ diff --git a/docs/.gitbook/assets/image (153).png b/docs/.gitbook/assets/image (153).png new file mode 100644 index 00000000..d27b4d7e Binary files /dev/null and b/docs/.gitbook/assets/image (153).png differ diff --git a/docs/.gitbook/assets/image (154).png b/docs/.gitbook/assets/image (154).png new file mode 100644 index 00000000..fb4c017c Binary files /dev/null and b/docs/.gitbook/assets/image (154).png differ diff --git a/docs/.gitbook/assets/image (155).png b/docs/.gitbook/assets/image (155).png new file mode 100644 index 00000000..311e8427 Binary files /dev/null and b/docs/.gitbook/assets/image (155).png differ diff --git a/docs/.gitbook/assets/image (156).png b/docs/.gitbook/assets/image (156).png new file mode 100644 index 00000000..557966b6 Binary files /dev/null and b/docs/.gitbook/assets/image (156).png differ diff --git a/docs/.gitbook/assets/image (157).png b/docs/.gitbook/assets/image (157).png new file mode 100644 index 00000000..b0e77af1 Binary files /dev/null and b/docs/.gitbook/assets/image (157).png differ diff --git a/docs/.gitbook/assets/image (158).png b/docs/.gitbook/assets/image (158).png new file mode 100644 index 00000000..5a1d8e5b Binary files /dev/null and b/docs/.gitbook/assets/image (158).png differ diff --git a/docs/.gitbook/assets/image (159).png b/docs/.gitbook/assets/image (159).png new file mode 100644 index 00000000..4fb5927c Binary files /dev/null and b/docs/.gitbook/assets/image (159).png differ diff --git a/docs/.gitbook/assets/image (16).png b/docs/.gitbook/assets/image (16).png new file mode 100644 index 00000000..99e9f7a0 Binary files /dev/null and b/docs/.gitbook/assets/image (16).png differ diff --git a/docs/.gitbook/assets/image (160).png b/docs/.gitbook/assets/image (160).png new file mode 100644 index 00000000..6bdd6925 Binary files /dev/null and b/docs/.gitbook/assets/image (160).png differ diff --git a/docs/.gitbook/assets/image (161).png b/docs/.gitbook/assets/image (161).png new file mode 100644 index 00000000..fd12172e Binary files /dev/null and b/docs/.gitbook/assets/image (161).png differ diff --git a/docs/.gitbook/assets/image (162).png b/docs/.gitbook/assets/image (162).png new file mode 100644 index 00000000..3b2b02ef Binary files /dev/null and b/docs/.gitbook/assets/image (162).png differ diff --git a/docs/.gitbook/assets/image (163).png b/docs/.gitbook/assets/image (163).png new file mode 100644 index 00000000..11d2cba1 Binary files /dev/null and b/docs/.gitbook/assets/image (163).png differ diff --git a/docs/.gitbook/assets/image (164).png b/docs/.gitbook/assets/image (164).png new file mode 100644 index 00000000..53ff2134 Binary files /dev/null and b/docs/.gitbook/assets/image (164).png differ diff --git a/docs/.gitbook/assets/image (165).png b/docs/.gitbook/assets/image (165).png new file mode 100644 index 00000000..8e604c35 Binary files /dev/null and b/docs/.gitbook/assets/image (165).png differ diff --git a/docs/.gitbook/assets/image (166).png b/docs/.gitbook/assets/image (166).png new file mode 100644 index 00000000..421ee00a Binary files /dev/null and b/docs/.gitbook/assets/image (166).png differ diff --git a/docs/.gitbook/assets/image (167).png b/docs/.gitbook/assets/image (167).png new file mode 100644 index 00000000..73ee3c08 Binary files /dev/null and b/docs/.gitbook/assets/image (167).png differ diff --git a/docs/.gitbook/assets/image (168).png b/docs/.gitbook/assets/image (168).png new file mode 100644 index 00000000..d7b068cd Binary files /dev/null and b/docs/.gitbook/assets/image (168).png differ diff --git a/docs/.gitbook/assets/image (169).png b/docs/.gitbook/assets/image (169).png new file mode 100644 index 00000000..a4eaa3d8 Binary files /dev/null and b/docs/.gitbook/assets/image (169).png differ diff --git a/docs/.gitbook/assets/image (17).png b/docs/.gitbook/assets/image (17).png new file mode 100644 index 00000000..c810ffa6 Binary files /dev/null and b/docs/.gitbook/assets/image (17).png differ diff --git a/docs/.gitbook/assets/image (170).png b/docs/.gitbook/assets/image (170).png new file mode 100644 index 00000000..491795ba Binary files /dev/null and b/docs/.gitbook/assets/image (170).png differ diff --git a/docs/.gitbook/assets/image (171).png b/docs/.gitbook/assets/image (171).png new file mode 100644 index 00000000..18ee3646 Binary files /dev/null and b/docs/.gitbook/assets/image (171).png differ diff --git a/docs/.gitbook/assets/image (172).png b/docs/.gitbook/assets/image (172).png new file mode 100644 index 00000000..f9ffb2b5 Binary files /dev/null and b/docs/.gitbook/assets/image (172).png differ diff --git a/docs/.gitbook/assets/image (173).png b/docs/.gitbook/assets/image (173).png new file mode 100644 index 00000000..6d4d9bc5 Binary files /dev/null and b/docs/.gitbook/assets/image (173).png differ diff --git a/docs/.gitbook/assets/image (174).png b/docs/.gitbook/assets/image (174).png new file mode 100644 index 00000000..315af92b Binary files /dev/null and b/docs/.gitbook/assets/image (174).png differ diff --git a/docs/.gitbook/assets/image (175).png b/docs/.gitbook/assets/image (175).png new file mode 100644 index 00000000..4a557c06 Binary files /dev/null and b/docs/.gitbook/assets/image (175).png differ diff --git a/docs/.gitbook/assets/image (176).png b/docs/.gitbook/assets/image (176).png new file mode 100644 index 00000000..1563e253 Binary files /dev/null and b/docs/.gitbook/assets/image (176).png differ diff --git a/docs/.gitbook/assets/image (177).png b/docs/.gitbook/assets/image (177).png new file mode 100644 index 00000000..53682dc6 Binary files /dev/null and b/docs/.gitbook/assets/image (177).png differ diff --git a/docs/.gitbook/assets/image (178).png b/docs/.gitbook/assets/image (178).png new file mode 100644 index 00000000..56a7e6e1 Binary files /dev/null and b/docs/.gitbook/assets/image (178).png differ diff --git a/docs/.gitbook/assets/image (179).png b/docs/.gitbook/assets/image (179).png new file mode 100644 index 00000000..56da3bf6 Binary files /dev/null and b/docs/.gitbook/assets/image (179).png differ diff --git a/docs/.gitbook/assets/image (18).png b/docs/.gitbook/assets/image (18).png new file mode 100644 index 00000000..b3a60ee0 Binary files /dev/null and b/docs/.gitbook/assets/image (18).png differ diff --git a/docs/.gitbook/assets/image (180).png b/docs/.gitbook/assets/image (180).png new file mode 100644 index 00000000..41dc5294 Binary files /dev/null and b/docs/.gitbook/assets/image (180).png differ diff --git a/docs/.gitbook/assets/image (181).png b/docs/.gitbook/assets/image (181).png new file mode 100644 index 00000000..9ce5ac25 Binary files /dev/null and b/docs/.gitbook/assets/image (181).png differ diff --git a/docs/.gitbook/assets/image (182).png b/docs/.gitbook/assets/image (182).png new file mode 100644 index 00000000..932ce60e Binary files /dev/null and b/docs/.gitbook/assets/image (182).png differ diff --git a/docs/.gitbook/assets/image (183).png b/docs/.gitbook/assets/image (183).png new file mode 100644 index 00000000..0ecba7f5 Binary files /dev/null and b/docs/.gitbook/assets/image (183).png differ diff --git a/docs/.gitbook/assets/image (184).png b/docs/.gitbook/assets/image (184).png new file mode 100644 index 00000000..b6e2f638 Binary files /dev/null and b/docs/.gitbook/assets/image (184).png differ diff --git a/docs/.gitbook/assets/image (185).png b/docs/.gitbook/assets/image (185).png new file mode 100644 index 00000000..7e556fbf Binary files /dev/null and b/docs/.gitbook/assets/image (185).png differ diff --git a/docs/.gitbook/assets/image (186).png b/docs/.gitbook/assets/image (186).png new file mode 100644 index 00000000..91bdd60e Binary files /dev/null and b/docs/.gitbook/assets/image (186).png differ diff --git a/docs/.gitbook/assets/image (187).png b/docs/.gitbook/assets/image (187).png new file mode 100644 index 00000000..d2e38e07 Binary files /dev/null and b/docs/.gitbook/assets/image (187).png differ diff --git a/docs/.gitbook/assets/image (188).png b/docs/.gitbook/assets/image (188).png new file mode 100644 index 00000000..b13d878e Binary files /dev/null and b/docs/.gitbook/assets/image (188).png differ diff --git a/docs/.gitbook/assets/image (189).png b/docs/.gitbook/assets/image (189).png new file mode 100644 index 00000000..adb06b0b Binary files /dev/null and b/docs/.gitbook/assets/image (189).png differ diff --git a/docs/.gitbook/assets/image (19).png b/docs/.gitbook/assets/image (19).png new file mode 100644 index 00000000..9fa4c6f3 Binary files /dev/null and b/docs/.gitbook/assets/image (19).png differ diff --git a/docs/.gitbook/assets/image (2) (1).png b/docs/.gitbook/assets/image (2) (1).png new file mode 100644 index 00000000..48b5afa7 Binary files /dev/null and b/docs/.gitbook/assets/image (2) (1).png differ diff --git a/docs/.gitbook/assets/image (2) (2).png b/docs/.gitbook/assets/image (2) (2).png new file mode 100644 index 00000000..e94a72a9 Binary files /dev/null and b/docs/.gitbook/assets/image (2) (2).png differ diff --git a/docs/.gitbook/assets/image (2).png b/docs/.gitbook/assets/image (2).png new file mode 100644 index 00000000..e94a72a9 Binary files /dev/null and b/docs/.gitbook/assets/image (2).png differ diff --git a/docs/.gitbook/assets/image (20).png b/docs/.gitbook/assets/image (20).png new file mode 100644 index 00000000..0577d1ad Binary files /dev/null and b/docs/.gitbook/assets/image (20).png differ diff --git a/docs/.gitbook/assets/image (21).png b/docs/.gitbook/assets/image (21).png new file mode 100644 index 00000000..f7386538 Binary files /dev/null and b/docs/.gitbook/assets/image (21).png differ diff --git a/docs/.gitbook/assets/image (22).png b/docs/.gitbook/assets/image (22).png new file mode 100644 index 00000000..bbd2c037 Binary files /dev/null and b/docs/.gitbook/assets/image (22).png differ diff --git a/docs/.gitbook/assets/image (23).png b/docs/.gitbook/assets/image (23).png new file mode 100644 index 00000000..849ddc31 Binary files /dev/null and b/docs/.gitbook/assets/image (23).png differ diff --git a/docs/.gitbook/assets/image (24).png b/docs/.gitbook/assets/image (24).png new file mode 100644 index 00000000..29146434 Binary files /dev/null and b/docs/.gitbook/assets/image (24).png differ diff --git a/docs/.gitbook/assets/image (25).png b/docs/.gitbook/assets/image (25).png new file mode 100644 index 00000000..d27cd60a Binary files /dev/null and b/docs/.gitbook/assets/image (25).png differ diff --git a/docs/.gitbook/assets/image (26).png b/docs/.gitbook/assets/image (26).png new file mode 100644 index 00000000..f7191475 Binary files /dev/null and b/docs/.gitbook/assets/image (26).png differ diff --git a/docs/.gitbook/assets/image (27).png b/docs/.gitbook/assets/image (27).png new file mode 100644 index 00000000..cb02fdc1 Binary files /dev/null and b/docs/.gitbook/assets/image (27).png differ diff --git a/docs/.gitbook/assets/image (28).png b/docs/.gitbook/assets/image (28).png new file mode 100644 index 00000000..85d660a6 Binary files /dev/null and b/docs/.gitbook/assets/image (28).png differ diff --git a/docs/.gitbook/assets/image (29).png b/docs/.gitbook/assets/image (29).png new file mode 100644 index 00000000..c2b69746 Binary files /dev/null and b/docs/.gitbook/assets/image (29).png differ diff --git a/docs/.gitbook/assets/image (3) (1).png b/docs/.gitbook/assets/image (3) (1).png new file mode 100644 index 00000000..e2b3a4a2 Binary files /dev/null and b/docs/.gitbook/assets/image (3) (1).png differ diff --git a/docs/.gitbook/assets/image (3) (2).png b/docs/.gitbook/assets/image (3) (2).png new file mode 100644 index 00000000..103f4688 Binary files /dev/null and b/docs/.gitbook/assets/image (3) (2).png differ diff --git a/docs/.gitbook/assets/image (3).png b/docs/.gitbook/assets/image (3).png new file mode 100644 index 00000000..103f4688 Binary files /dev/null and b/docs/.gitbook/assets/image (3).png differ diff --git a/docs/.gitbook/assets/image (30).png b/docs/.gitbook/assets/image (30).png new file mode 100644 index 00000000..6207c5d6 Binary files /dev/null and b/docs/.gitbook/assets/image (30).png differ diff --git a/docs/.gitbook/assets/image (31).png b/docs/.gitbook/assets/image (31).png new file mode 100644 index 00000000..8451aa47 Binary files /dev/null and b/docs/.gitbook/assets/image (31).png differ diff --git a/docs/.gitbook/assets/image (32).png b/docs/.gitbook/assets/image (32).png new file mode 100644 index 00000000..da9993cf Binary files /dev/null and b/docs/.gitbook/assets/image (32).png differ diff --git a/docs/.gitbook/assets/image (33).png b/docs/.gitbook/assets/image (33).png new file mode 100644 index 00000000..a464226b Binary files /dev/null and b/docs/.gitbook/assets/image (33).png differ diff --git a/docs/.gitbook/assets/image (34).png b/docs/.gitbook/assets/image (34).png new file mode 100644 index 00000000..5b17286c Binary files /dev/null and b/docs/.gitbook/assets/image (34).png differ diff --git a/docs/.gitbook/assets/image (35).png b/docs/.gitbook/assets/image (35).png new file mode 100644 index 00000000..5a401bb1 Binary files /dev/null and b/docs/.gitbook/assets/image (35).png differ diff --git a/docs/.gitbook/assets/image (36).png b/docs/.gitbook/assets/image (36).png new file mode 100644 index 00000000..32e5c6a5 Binary files /dev/null and b/docs/.gitbook/assets/image (36).png differ diff --git a/docs/.gitbook/assets/image (37).png b/docs/.gitbook/assets/image (37).png new file mode 100644 index 00000000..75905962 Binary files /dev/null and b/docs/.gitbook/assets/image (37).png differ diff --git a/docs/.gitbook/assets/image (38).png b/docs/.gitbook/assets/image (38).png new file mode 100644 index 00000000..72624852 Binary files /dev/null and b/docs/.gitbook/assets/image (38).png differ diff --git a/docs/.gitbook/assets/image (39).png b/docs/.gitbook/assets/image (39).png new file mode 100644 index 00000000..beed8e35 Binary files /dev/null and b/docs/.gitbook/assets/image (39).png differ diff --git a/docs/.gitbook/assets/image (4) (1).png b/docs/.gitbook/assets/image (4) (1).png new file mode 100644 index 00000000..9006e698 Binary files /dev/null and b/docs/.gitbook/assets/image (4) (1).png differ diff --git a/docs/.gitbook/assets/image (4) (2).png b/docs/.gitbook/assets/image (4) (2).png new file mode 100644 index 00000000..745a946b Binary files /dev/null and b/docs/.gitbook/assets/image (4) (2).png differ diff --git a/docs/.gitbook/assets/image (4).png b/docs/.gitbook/assets/image (4).png new file mode 100644 index 00000000..745a946b Binary files /dev/null and b/docs/.gitbook/assets/image (4).png differ diff --git a/docs/.gitbook/assets/image (40).png b/docs/.gitbook/assets/image (40).png new file mode 100644 index 00000000..b5ea2236 Binary files /dev/null and b/docs/.gitbook/assets/image (40).png differ diff --git a/docs/.gitbook/assets/image (41).png b/docs/.gitbook/assets/image (41).png new file mode 100644 index 00000000..f0bfad32 Binary files /dev/null and b/docs/.gitbook/assets/image (41).png differ diff --git a/docs/.gitbook/assets/image (42).png b/docs/.gitbook/assets/image (42).png new file mode 100644 index 00000000..d2e18fb5 Binary files /dev/null and b/docs/.gitbook/assets/image (42).png differ diff --git a/docs/.gitbook/assets/image (43).png b/docs/.gitbook/assets/image (43).png new file mode 100644 index 00000000..e64df3c2 Binary files /dev/null and b/docs/.gitbook/assets/image (43).png differ diff --git a/docs/.gitbook/assets/image (44).png b/docs/.gitbook/assets/image (44).png new file mode 100644 index 00000000..01113083 Binary files /dev/null and b/docs/.gitbook/assets/image (44).png differ diff --git a/docs/.gitbook/assets/image (45).png b/docs/.gitbook/assets/image (45).png new file mode 100644 index 00000000..94cc474b Binary files /dev/null and b/docs/.gitbook/assets/image (45).png differ diff --git a/docs/.gitbook/assets/image (46).png b/docs/.gitbook/assets/image (46).png new file mode 100644 index 00000000..2964f8fe Binary files /dev/null and b/docs/.gitbook/assets/image (46).png differ diff --git a/docs/.gitbook/assets/image (47).png b/docs/.gitbook/assets/image (47).png new file mode 100644 index 00000000..23f4899b Binary files /dev/null and b/docs/.gitbook/assets/image (47).png differ diff --git a/docs/.gitbook/assets/image (48).png b/docs/.gitbook/assets/image (48).png new file mode 100644 index 00000000..e7cff96d Binary files /dev/null and b/docs/.gitbook/assets/image (48).png differ diff --git a/docs/.gitbook/assets/image (49).png b/docs/.gitbook/assets/image (49).png new file mode 100644 index 00000000..b041c24e Binary files /dev/null and b/docs/.gitbook/assets/image (49).png differ diff --git a/docs/.gitbook/assets/image (5) (1).png b/docs/.gitbook/assets/image (5) (1).png new file mode 100644 index 00000000..9006e698 Binary files /dev/null and b/docs/.gitbook/assets/image (5) (1).png differ diff --git a/docs/.gitbook/assets/image (5) (2).png b/docs/.gitbook/assets/image (5) (2).png new file mode 100644 index 00000000..1eab0912 Binary files /dev/null and b/docs/.gitbook/assets/image (5) (2).png differ diff --git a/docs/.gitbook/assets/image (5).png b/docs/.gitbook/assets/image (5).png new file mode 100644 index 00000000..1eab0912 Binary files /dev/null and b/docs/.gitbook/assets/image (5).png differ diff --git a/docs/.gitbook/assets/image (50).png b/docs/.gitbook/assets/image (50).png new file mode 100644 index 00000000..4cf46c44 Binary files /dev/null and b/docs/.gitbook/assets/image (50).png differ diff --git a/docs/.gitbook/assets/image (51).png b/docs/.gitbook/assets/image (51).png new file mode 100644 index 00000000..376bfd5c Binary files /dev/null and b/docs/.gitbook/assets/image (51).png differ diff --git a/docs/.gitbook/assets/image (52).png b/docs/.gitbook/assets/image (52).png new file mode 100644 index 00000000..ba220a0e Binary files /dev/null and b/docs/.gitbook/assets/image (52).png differ diff --git a/docs/.gitbook/assets/image (53).png b/docs/.gitbook/assets/image (53).png new file mode 100644 index 00000000..015d9eb7 Binary files /dev/null and b/docs/.gitbook/assets/image (53).png differ diff --git a/docs/.gitbook/assets/image (54).png b/docs/.gitbook/assets/image (54).png new file mode 100644 index 00000000..2623e088 Binary files /dev/null and b/docs/.gitbook/assets/image (54).png differ diff --git a/docs/.gitbook/assets/image (55).png b/docs/.gitbook/assets/image (55).png new file mode 100644 index 00000000..c0840d07 Binary files /dev/null and b/docs/.gitbook/assets/image (55).png differ diff --git a/docs/.gitbook/assets/image (56).png b/docs/.gitbook/assets/image (56).png new file mode 100644 index 00000000..f14ee92a Binary files /dev/null and b/docs/.gitbook/assets/image (56).png differ diff --git a/docs/.gitbook/assets/image (57).png b/docs/.gitbook/assets/image (57).png new file mode 100644 index 00000000..4ec174c5 Binary files /dev/null and b/docs/.gitbook/assets/image (57).png differ diff --git a/docs/.gitbook/assets/image (58).png b/docs/.gitbook/assets/image (58).png new file mode 100644 index 00000000..4ec174c5 Binary files /dev/null and b/docs/.gitbook/assets/image (58).png differ diff --git a/docs/.gitbook/assets/image (59).png b/docs/.gitbook/assets/image (59).png new file mode 100644 index 00000000..c91e8d5b Binary files /dev/null and b/docs/.gitbook/assets/image (59).png differ diff --git a/docs/.gitbook/assets/image (6) (1).png b/docs/.gitbook/assets/image (6) (1).png new file mode 100644 index 00000000..0035d457 Binary files /dev/null and b/docs/.gitbook/assets/image (6) (1).png differ diff --git a/docs/.gitbook/assets/image (6).png b/docs/.gitbook/assets/image (6).png new file mode 100644 index 00000000..0b22caa7 Binary files /dev/null and b/docs/.gitbook/assets/image (6).png differ diff --git a/docs/.gitbook/assets/image (60).png b/docs/.gitbook/assets/image (60).png new file mode 100644 index 00000000..bcb9b491 Binary files /dev/null and b/docs/.gitbook/assets/image (60).png differ diff --git a/docs/.gitbook/assets/image (61).png b/docs/.gitbook/assets/image (61).png new file mode 100644 index 00000000..fbb04dac Binary files /dev/null and b/docs/.gitbook/assets/image (61).png differ diff --git a/docs/.gitbook/assets/image (62).png b/docs/.gitbook/assets/image (62).png new file mode 100644 index 00000000..300aa0d9 Binary files /dev/null and b/docs/.gitbook/assets/image (62).png differ diff --git a/docs/.gitbook/assets/image (63).png b/docs/.gitbook/assets/image (63).png new file mode 100644 index 00000000..08edfa80 Binary files /dev/null and b/docs/.gitbook/assets/image (63).png differ diff --git a/docs/.gitbook/assets/image (64).png b/docs/.gitbook/assets/image (64).png new file mode 100644 index 00000000..ec18450a Binary files /dev/null and b/docs/.gitbook/assets/image (64).png differ diff --git a/docs/.gitbook/assets/image (65).png b/docs/.gitbook/assets/image (65).png new file mode 100644 index 00000000..ec18450a Binary files /dev/null and b/docs/.gitbook/assets/image (65).png differ diff --git a/docs/.gitbook/assets/image (66).png b/docs/.gitbook/assets/image (66).png new file mode 100644 index 00000000..54c4b710 Binary files /dev/null and b/docs/.gitbook/assets/image (66).png differ diff --git a/docs/.gitbook/assets/image (67).png b/docs/.gitbook/assets/image (67).png new file mode 100644 index 00000000..92451c09 Binary files /dev/null and b/docs/.gitbook/assets/image (67).png differ diff --git a/docs/.gitbook/assets/image (68).png b/docs/.gitbook/assets/image (68).png new file mode 100644 index 00000000..7957f907 Binary files /dev/null and b/docs/.gitbook/assets/image (68).png differ diff --git a/docs/.gitbook/assets/image (69).png b/docs/.gitbook/assets/image (69).png new file mode 100644 index 00000000..803f553a Binary files /dev/null and b/docs/.gitbook/assets/image (69).png differ diff --git a/docs/.gitbook/assets/image (7) (1).png b/docs/.gitbook/assets/image (7) (1).png new file mode 100644 index 00000000..0ecd2f03 Binary files /dev/null and b/docs/.gitbook/assets/image (7) (1).png differ diff --git a/docs/.gitbook/assets/image (7).png b/docs/.gitbook/assets/image (7).png new file mode 100644 index 00000000..cfbff0f2 Binary files /dev/null and b/docs/.gitbook/assets/image (7).png differ diff --git a/docs/.gitbook/assets/image (70).png b/docs/.gitbook/assets/image (70).png new file mode 100644 index 00000000..b5bf37b7 Binary files /dev/null and b/docs/.gitbook/assets/image (70).png differ diff --git a/docs/.gitbook/assets/image (71).png b/docs/.gitbook/assets/image (71).png new file mode 100644 index 00000000..ab27ca12 Binary files /dev/null and b/docs/.gitbook/assets/image (71).png differ diff --git a/docs/.gitbook/assets/image (72).png b/docs/.gitbook/assets/image (72).png new file mode 100644 index 00000000..70ca9c4c Binary files /dev/null and b/docs/.gitbook/assets/image (72).png differ diff --git a/docs/.gitbook/assets/image (73).png b/docs/.gitbook/assets/image (73).png new file mode 100644 index 00000000..6f132d43 Binary files /dev/null and b/docs/.gitbook/assets/image (73).png differ diff --git a/docs/.gitbook/assets/image (74).png b/docs/.gitbook/assets/image (74).png new file mode 100644 index 00000000..6f132d43 Binary files /dev/null and b/docs/.gitbook/assets/image (74).png differ diff --git a/docs/.gitbook/assets/image (75).png b/docs/.gitbook/assets/image (75).png new file mode 100644 index 00000000..c433e50a Binary files /dev/null and b/docs/.gitbook/assets/image (75).png differ diff --git a/docs/.gitbook/assets/image (76).png b/docs/.gitbook/assets/image (76).png new file mode 100644 index 00000000..b1ccd9f7 Binary files /dev/null and b/docs/.gitbook/assets/image (76).png differ diff --git a/docs/.gitbook/assets/image (77).png b/docs/.gitbook/assets/image (77).png new file mode 100644 index 00000000..81b1cb08 Binary files /dev/null and b/docs/.gitbook/assets/image (77).png differ diff --git a/docs/.gitbook/assets/image (78).png b/docs/.gitbook/assets/image (78).png new file mode 100644 index 00000000..4565f879 Binary files /dev/null and b/docs/.gitbook/assets/image (78).png differ diff --git a/docs/.gitbook/assets/image (79).png b/docs/.gitbook/assets/image (79).png new file mode 100644 index 00000000..5b4045b4 Binary files /dev/null and b/docs/.gitbook/assets/image (79).png differ diff --git a/docs/.gitbook/assets/image (8) (1).png b/docs/.gitbook/assets/image (8) (1).png new file mode 100644 index 00000000..74882a51 Binary files /dev/null and b/docs/.gitbook/assets/image (8) (1).png differ diff --git a/docs/.gitbook/assets/image (8).png b/docs/.gitbook/assets/image (8).png new file mode 100644 index 00000000..d95240b7 Binary files /dev/null and b/docs/.gitbook/assets/image (8).png differ diff --git a/docs/.gitbook/assets/image (80).png b/docs/.gitbook/assets/image (80).png new file mode 100644 index 00000000..9e4ae62b Binary files /dev/null and b/docs/.gitbook/assets/image (80).png differ diff --git a/docs/.gitbook/assets/image (81).png b/docs/.gitbook/assets/image (81).png new file mode 100644 index 00000000..c97a6aab Binary files /dev/null and b/docs/.gitbook/assets/image (81).png differ diff --git a/docs/.gitbook/assets/image (82).png b/docs/.gitbook/assets/image (82).png new file mode 100644 index 00000000..63ef9172 Binary files /dev/null and b/docs/.gitbook/assets/image (82).png differ diff --git a/docs/.gitbook/assets/image (83).png b/docs/.gitbook/assets/image (83).png new file mode 100644 index 00000000..67f5ff79 Binary files /dev/null and b/docs/.gitbook/assets/image (83).png differ diff --git a/docs/.gitbook/assets/image (84).png b/docs/.gitbook/assets/image (84).png new file mode 100644 index 00000000..7a8f5c9e Binary files /dev/null and b/docs/.gitbook/assets/image (84).png differ diff --git a/docs/.gitbook/assets/image (85).png b/docs/.gitbook/assets/image (85).png new file mode 100644 index 00000000..ddb15512 Binary files /dev/null and b/docs/.gitbook/assets/image (85).png differ diff --git a/docs/.gitbook/assets/image (86).png b/docs/.gitbook/assets/image (86).png new file mode 100644 index 00000000..b64e50d5 Binary files /dev/null and b/docs/.gitbook/assets/image (86).png differ diff --git a/docs/.gitbook/assets/image (87).png b/docs/.gitbook/assets/image (87).png new file mode 100644 index 00000000..8aea2f51 Binary files /dev/null and b/docs/.gitbook/assets/image (87).png differ diff --git a/docs/.gitbook/assets/image (88).png b/docs/.gitbook/assets/image (88).png new file mode 100644 index 00000000..0218f34c Binary files /dev/null and b/docs/.gitbook/assets/image (88).png differ diff --git a/docs/.gitbook/assets/image (89).png b/docs/.gitbook/assets/image (89).png new file mode 100644 index 00000000..525028a0 Binary files /dev/null and b/docs/.gitbook/assets/image (89).png differ diff --git a/docs/.gitbook/assets/image (9) (1).png b/docs/.gitbook/assets/image (9) (1).png new file mode 100644 index 00000000..efc0129c Binary files /dev/null and b/docs/.gitbook/assets/image (9) (1).png differ diff --git a/docs/.gitbook/assets/image (9).png b/docs/.gitbook/assets/image (9).png new file mode 100644 index 00000000..8aeb55fc Binary files /dev/null and b/docs/.gitbook/assets/image (9).png differ diff --git a/docs/.gitbook/assets/image (90).png b/docs/.gitbook/assets/image (90).png new file mode 100644 index 00000000..68e2f0e5 Binary files /dev/null and b/docs/.gitbook/assets/image (90).png differ diff --git a/docs/.gitbook/assets/image (91).png b/docs/.gitbook/assets/image (91).png new file mode 100644 index 00000000..a72fa80c Binary files /dev/null and b/docs/.gitbook/assets/image (91).png differ diff --git a/docs/.gitbook/assets/image (92).png b/docs/.gitbook/assets/image (92).png new file mode 100644 index 00000000..2225be73 Binary files /dev/null and b/docs/.gitbook/assets/image (92).png differ diff --git a/docs/.gitbook/assets/image (93).png b/docs/.gitbook/assets/image (93).png new file mode 100644 index 00000000..83e378d2 Binary files /dev/null and b/docs/.gitbook/assets/image (93).png differ diff --git a/docs/.gitbook/assets/image (94).png b/docs/.gitbook/assets/image (94).png new file mode 100644 index 00000000..9a269f1d Binary files /dev/null and b/docs/.gitbook/assets/image (94).png differ diff --git a/docs/.gitbook/assets/image (95).png b/docs/.gitbook/assets/image (95).png new file mode 100644 index 00000000..22eb24b9 Binary files /dev/null and b/docs/.gitbook/assets/image (95).png differ diff --git a/docs/.gitbook/assets/image (96).png b/docs/.gitbook/assets/image (96).png new file mode 100644 index 00000000..22eb24b9 Binary files /dev/null and b/docs/.gitbook/assets/image (96).png differ diff --git a/docs/.gitbook/assets/image (97).png b/docs/.gitbook/assets/image (97).png new file mode 100644 index 00000000..4dde4223 Binary files /dev/null and b/docs/.gitbook/assets/image (97).png differ diff --git a/docs/.gitbook/assets/image (98).png b/docs/.gitbook/assets/image (98).png new file mode 100644 index 00000000..6df16b62 Binary files /dev/null and b/docs/.gitbook/assets/image (98).png differ diff --git a/docs/.gitbook/assets/image (99).png b/docs/.gitbook/assets/image (99).png new file mode 100644 index 00000000..493d54d6 Binary files /dev/null and b/docs/.gitbook/assets/image (99).png differ diff --git a/docs/.gitbook/assets/image.png b/docs/.gitbook/assets/image.png new file mode 100644 index 00000000..50e1b6f1 Binary files /dev/null and b/docs/.gitbook/assets/image.png differ diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..2caf1f28 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,62 @@ +--- +description: This manual introduces the basic usages and tips for using Visual Python. +--- + +# Visual Python Manual + +Getting Started + +* [Welcome to Visual Python](getting-started/welcome-to-visual-python.md) +* [How to install](getting-started/how-to-install.md) +* [Installing FAQ](getting-started/installing-faq.md) + +Data Analysis + +1. [Import](data-analysis/1.-import.md) +2. [File](data-analysis/2.-file.md) +3. [Data Info](data-analysis/3.-data-info.md) +4. [Frame](data-analysis/4.-frame/) +5. [Subset](data-analysis/5.-subset.md) +6. [Groupby](data-analysis/6.-groupby.md) +7. [Bind](data-analysis/7.-bind.md) +8. [Reshape](data-analysis/8.-reshape.md) + +Visualization + +1. [Chart Style](visualization/1.-chart-style.md) +2. [Pandas Plot](visualization/2.-pandas-plot.md) +3. [Matplotlib](visualization/3.-matplotlib.md) +4. [Seaborn](visualization/4.-seaborn.md) +5. [Plotly](visualization/5.-plotly.md) +6. [WordCloud](visualization/6.-wordcloud.md) + +Statistics + +1. [Prob.Distribution](statistics/1.-prob.-distribution.md) +2. [Descriptive Statistics](statistics/2.-descriptive-statistics.md) +3. [Normality Test](statistics/3.-normality-test.md) +4. [Equal Var. Test](statistics/4.-equal-var.-test.md) +5. [Correlation Analysis](statistics/5.-correlation-analysis.md) +6. [Reliability Analysis](statistics/6.-reliability-analysis.md) +7. [Chi-square Test](statistics/7.-chi-square-test.md) +8. [Student's T-Test](statistics/8.-students-t-test.md) +9. [ANOVA](statistics/9.-anova.md) +10. [Factor Analysis](statistics/10.-factor-analysis.md) +11. [Regression](statistics/11.-regression.md) +12. [Logistic Regression](statistics/12.-logistic-regression.md) + +Machine Learning + +1. [Data Sets](machine-learning/1.-data-sets.md) +2. [Data Split](machine-learning/2.-data-split.md) +3. [Data Prep](machine-learning/3.-data-prep.md) +4. [AutoML](machine-learning/4.-automl.md) +5. [Regressor](machine-learning/5.-regressor.md) +6. [Classifier](machine-learning/6.-classifier.md) +7. [Clustering](machine-learning/7.-clustering.md) +8. [Dimension](machine-learning/8.-dimension.md) +9. [GridSearch](machine-learning/9.-gridsearch.md) +10. [Fit/Predict](machine-learning/10.-fit-predict.md) +11. [Model Info](machine-learning/11.-model-info.md) +12. [Evaluation](machine-learning/12.-evaluation.md) +13. [Pipeline](machine-learning/13.-pipeline.md) diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md new file mode 100644 index 00000000..08d12a2c --- /dev/null +++ b/docs/SUMMARY.md @@ -0,0 +1,68 @@ +# Table of contents + +* [Visual Python Manual](README.md) + +## GETTING STARTED + +* [Welcome to Visual Python](getting-started/welcome-to-visual-python.md) +* [How to install](getting-started/how-to-install.md) +* [Installing FAQ](getting-started/installing-faq.md) +* [Official homepage](https://visualpython.ai/) +* [Link to Github](https://github.com/visualpython/visualpython) + +## Data Analysis + +* [1. Import](data-analysis/1.-import.md) +* [2. File](data-analysis/2.-file.md) +* [3. Data Info](data-analysis/3.-data-info.md) +* [4. Frame](data-analysis/4.-frame/README.md) + * [4-1. Frame - Edit](data-analysis/4.-frame/4-1.-frame-edit.md) + * [4-2. Frame - Transform](data-analysis/4.-frame/4-2.-frame-transform.md) + * [4-3. Frame - Sort](data-analysis/4.-frame/4-3.-frame-sort.md) + * [4-4. Frame - Encoding](data-analysis/4.-frame/4-4.-frame-encoding.md) + * [4-5. Frame - Data Cleaning](data-analysis/4.-frame/4-5.-frame-data-cleaning.md) +* [5. Subset](data-analysis/5.-subset.md) +* [6. Groupby](data-analysis/6.-groupby.md) +* [7. Bind](data-analysis/7.-bind.md) +* [8. Reshape](data-analysis/8.-reshape.md) + +## Visualization + +* [1. Chart Style](visualization/1.-chart-style.md) +* [2. Pandas Plot](visualization/2.-pandas-plot.md) +* [3. Matplotlib](visualization/3.-matplotlib.md) +* [4. Seaborn](visualization/4.-seaborn.md) +* [5. Plotly](visualization/5.-plotly.md) +* [6. WordCloud](visualization/6.-wordcloud.md) + +## Statistics + +* [1. Prob. Distribution](statistics/1.-prob.-distribution.md) +* [2. Descriptive Statistics](statistics/2.-descriptive-statistics.md) +* [3. Normality Test](statistics/3.-normality-test.md) +* [4. Equal Var. Test](statistics/4.-equal-var.-test.md) +* [5. Correlation Analysis](statistics/5.-correlation-analysis.md) +* [6. Reliability Analysis](statistics/6.-reliability-analysis.md) +* [7. Chi-square Test](statistics/7.-chi-square-test.md) +* [8. Student's T-test](statistics/8.-students-t-test.md) +* [9. ANOVA](statistics/9.-anova.md) +* [10. Factor Analysis](statistics/10.-factor-analysis.md) +* [11. Regression](statistics/11.-regression.md) +* [12. Logistic Regression](statistics/12.-logistic-regression.md) + +## Machine Learning + +* [1. Data Sets](machine-learning/1.-data-sets.md) +* [2. Data Split](machine-learning/2.-data-split.md) +* [3. Data Prep](machine-learning/3.-data-prep.md) +* [4. AutoML](machine-learning/4.-automl.md) +* [5. Regressor](machine-learning/5.-regressor.md) +* [6. Classifier](machine-learning/6.-classifier.md) +* [7. Clustering](machine-learning/7.-clustering.md) +* [8. Dimension](machine-learning/8.-dimension.md) +* [9. GridSearch](machine-learning/9.-gridsearch.md) +* [10. Fit/Predict](machine-learning/10.-fit-predict.md) +* [11. Model Info](machine-learning/11.-model-info.md) +* [12. Evaluation](machine-learning/12.-evaluation.md) +* [13. Pipeline](machine-learning/13.-pipeline.md) +* [14. Save / Load](machine-learning/14.-save-load.md) diff --git a/docs/data-analysis/1.-import.md b/docs/data-analysis/1.-import.md new file mode 100644 index 00000000..88cab545 --- /dev/null +++ b/docs/data-analysis/1.-import.md @@ -0,0 +1,27 @@ +--- +description: Import Packages and Modules +--- + +# 1. Import + + + +
+ +1. Click on _**Import**_ in the Data Analysis category. + + + +
+ +2. Choose _**Data Analysis**_ or _**Machine Learning**_ according to the purpose of the feature you want to import. +3. Select the packages or modules you want to import. +4. If the desired feature is not in the list, you can add it directly using _**+Module**_ or _**+Function**_. (The added feature is automatically saved for easy future imports.) + + 4-1. Use _**+Module**_ to add packages or modules. + + 4-2. Use _**+Function**_ to add functions. + +5. You can review the code that will be generated through _**Code View**_. +6. Press _**Run**_ to execute the code. + diff --git a/docs/data-analysis/2.-file.md b/docs/data-analysis/2.-file.md new file mode 100644 index 00000000..65607465 --- /dev/null +++ b/docs/data-analysis/2.-file.md @@ -0,0 +1,86 @@ +--- +description: Read or Write a File +--- + +# 2. File + + + +
+ +1. Click on the _**File**_ in the Data Analysis category. + + + +
+ +2. Choose whether to read or save a file from the top bar + + 2-1. You can use sample data prepared by Visual Python through _**Sample Data**_. + + + +### Read File + + + +
+ +1. Select the type of file to load. +2. Choose the file path. +3. Enter the variable name (Callable name, Identifier) for the file. + + + +
+ +4. _**Additional Options**_ allow various settings. + + 4-1. If not set separately, the default values set by Visual Python will be applied. + + 4-2. Any settings not found here can be entered in the _**User Option**_ for configuration. + +5. _**Encoding**_: Specify the encoding of the file. +6. _**Header**_: Select _**None**_ if you do not want to use column names. + + 6-1. By default, the values entered in the first row are set as column names. + +7. _**Separator**_: Choose the delimiter that separates the data fields in the file. +8. _**Columns**_: You can set column names by entering a pre-made list or specific values. +9. _**Column List to Use**_: Specify specific columns to load from multiple columns in the file. +10. _**Column to Use as Index**_: Specify the column from the file's columns to use as an index. +11. _**Na Values**_: Represent missing values with the specified input. +12. _**Rows to Skip**_: Specify the number of rows to ignore at the beginning of the file. +13. _**Number of Rows**_: Read only the specified number of rows from the beginning. +14. _**Chunksize**_: Divide the file into separate parts and read them to create separate DataFrames. Helpful in handling large files. + + + +### Write File + + + +
+ +1. Select the type to save. +2. Choose the DataFrame to save. +3. Select the location to save. +4. _**Additional Options**_ allow various settings. + + 4-1. If not set separately, the default values set by Visual Python will be applied. + + 4-2. Any settings not found here can be entered in the _**User Options**_ for configuration. + +5. _**Encoding**_: Specify the encoding of the file. +6. _**Header**_: Choose _**False**_ to exclude column names when saving. + + 6-1. By default, column names are saved as the first row. + +7. _**Index**_: Choose _**False**_ to exclude the index when saving. + + 7-1. By default, the index is saved as the first column. + +8. _**Separator**_: Choose the delimiter that separates the data fields in the file. +9. _**Na Replacing Value**_: Replace missing values with the specified input when saving. +10. _**Columns**_: You can save only specific columns. + diff --git a/docs/data-analysis/3.-data-info.md b/docs/data-analysis/3.-data-info.md new file mode 100644 index 00000000..407675bd --- /dev/null +++ b/docs/data-analysis/3.-data-info.md @@ -0,0 +1,93 @@ +--- +description: Check the Basic Information of the Data +--- + +# 3. Data Info + + + +
+ +1. Click on _**Data Info**_ in the Data Analysis category. + + + +
+ +2. Click on the _**Data tab**_ at the top left to select the DataFrame for which you want to view information. + + 2-1. Click on the _**funnel icon**_ on the tab's right side allows you to extract specific columns. + +3. In the _**Info Preview**_ on the right, information is displayed briefly. +4. Clicking _**Run**_ will execute the code without closing the window. +5. Use _**Code View**_ at the bottom left to check the generated code. + + + +### General + + + +
+ +1. _**Info**_ provides basic information such as Column, Non-Null Count, Dtype, etc. +2. _**Describe**_ displays basic statistics for each column. +3. _**Head**_ shows the top five rows of the DataFrame. +4. _**Tail**_ displays the bottom five rows of the DataFrame. + + + +### Status + + + +
+ +1. _**Null Count**_ shows the count of Null and Non-Null values for each column. +2. _**Duplicated**_ reveals the count of duplicated values. +3. _**Unique**_ works on a single column. Shows the unique values in a column. +4. _**Value Counts**_ displays the count of each value in each column. For continuous variables, it shows the count within arbitrarily defined intervals. + + + +### Statistics + + + +
+ +1. Check and confirm desired statistical values. + + 1-1. Multiple selections are possible for square values. + + 1-2. Multiple selections are not possible for circular values. + + + +### Correlation + + + +
+ +1. _**Correlation Table**_ shows a table indicating the correlation between each column. +2. _**Correlation Matrix**_ represents the correlation table as a Heat Map. + + + +### Distribution + + + +
+ +1. Represents data in various forms. + + 1-1. Histogram + + 1-2. Scatter Matrix + + 1-3. Box Plot + + 1-4. Counter Plot + diff --git a/docs/data-analysis/4.-frame/4-1.-frame-edit.md b/docs/data-analysis/4.-frame/4-1.-frame-edit.md new file mode 100644 index 00000000..9d5f9fe6 --- /dev/null +++ b/docs/data-analysis/4.-frame/4-1.-frame-edit.md @@ -0,0 +1,105 @@ +# 4-1. Frame - Edit + + + +
+ +1. _**Add Column**_ adds a new column next to the last column. +2. _**Add Row**_ adds a new row at the end. +3. _**Delete**_ allows the deletion of one or multiple selected columns. +4. _**Rename**_ allows the renaming of column names. +5. _**As Type**_ enables the change of data type for the values in the column. +6. _**To Datetime**_ converts one or multiple selected columns to the Datetime format. +7. _**Replace**_ allows changing the values in one or multiple selected columns. +8. _**Discretize**_ divides the continuous data in the column into intervals or categories. Works for one column only. + + + +*** + +### Add Column + + + +
+ +1. Enter the name of the column to be added in _**New Column**_. +2. Select the type of the column to be added. + + 2-1. _**Calculate**_: You can simply add specific data to the column or add calculated values between variables using _**+Variable**_. + + 2-2. _**Statistics**_: You can add statistical property values between one or multiple columns to the column. + + 2-3. _**Replace**_: You can convert values in a specific column to different values and add them to the column. + + 2-4. _**Condition**_: By providing specific conditions, you can transform values that meet those conditions into different values and add them to the column. + + 2-5. _**Apply**_: Allows for more complex conditions to be applied. + + + +*** + +### Add Row + + + +
+ +1. Enter the name of the row to be added in _**New Row**_. The name will be used as the index. +2. Select the type of the row to be added. + + 2-1. _**Variable**_: Enter the values to be added to the new row. You can also add calculated values between variables using _**+Variable**_. + + + +*** + +### To Datetime + + + +
+ +1. The name entered in _**New Column**_ becomes the new name for that column. +2. Using _**+Add Column**_, you can add the transformed values to the last column. + + + +*** + +### Replace + + + +
+ +1. Choose the method of modification. + + 1-1. _**Replace**_ changes the values entered in _**Origin**_ to the values entered in _**Replace**_. + + 1-2. _**Condition**_ provides specific conditions and changes values that meet those conditions to different values. + + 1-3. _**Apply**_: Allows for more complex conditions to be applied. + + + +*** + +### Discretize + + + +
+ +1. _**New Column**_: Enter the name for the new column where the results of the operation will be displayed. +2. _**Target Column**_: Displays the selected column for the operation. +3. _**Bins Count**_: Set the number of intervals. +4. _**Discretize Type**_: Choose the type of discretization. Intervals will be created based on the count set in step 3. + + 4-1. _**Interval based:**_ The intervals have equal spacing. + + 4-2. _**Quantile based**_: Intervals are set based on the quantiles of the data's distribution. + + 4-3. _**Direct Input**_: Allows direct input to modify labels and interval spacing. + diff --git a/docs/data-analysis/4.-frame/4-2.-frame-transform.md b/docs/data-analysis/4.-frame/4-2.-frame-transform.md new file mode 100644 index 00000000..933226da --- /dev/null +++ b/docs/data-analysis/4.-frame/4-2.-frame-transform.md @@ -0,0 +1,32 @@ +# 4-2. Frame - Transform + + + +
+ +1. _**Set Index**_ sets a chosen column as the index. +2. _**Reset Index**_ converts the index back into a column. +3. _**Data Shift**_ shifts the data of one or multiple selected columns by the specified amount. + + + +*** + +### Data Shift + + + +
+ +1. _**Periods**_: Enter how much to shift the data in the selected column(s). + + 1-1. Use a positive value to shift down and a negative value to shift up. + +2. _**Frequency**_: Set the unit for the value entered in Period. + + Ex. Period: 3, Frequency: Day -> Shift by 3 days + + 2-1. There should be periodic information in the index. If there is no specific periodicity, you can skip setting the frequency. + +3. _**Fill Value**_: Enter the value to fill the empty spaces created by the data shift. + diff --git a/docs/data-analysis/4.-frame/4-3.-frame-sort.md b/docs/data-analysis/4.-frame/4-3.-frame-sort.md new file mode 100644 index 00000000..6a571f68 --- /dev/null +++ b/docs/data-analysis/4.-frame/4-3.-frame-sort.md @@ -0,0 +1,41 @@ +# 4-3. Frame - Sort + + + +
+ +1. _**Sort Index**_ sets the ascending/descending order of rows or columns. +2. _**Sort Values**_ sorts based on the data entered in each column. You must select one or more columns. + + + +*** + +### Sort Index + + + +
+ +1. _**Axis**_: Select whether to change the order of rows or columns. +2. _**Sort by level**_: When the rows or columns have multiple layers (multi-level), choose which layer to use as the basis for changing the order. +3. _**Ascending**_: Choose between ascending or descending order. + + + +*** + +### Sort Values + + + +
+ +1. _**Sort by column**_ determines the order of columns to be the basis for sorting. + + 1-1. It is sorted based on the column located at the top. + + 1-2. When sorting based on this column, if identical values exist, it is further sorted according to the next criterion column. + +2. _**Ascending**_: Choose between ascending or descending order. + diff --git a/docs/data-analysis/4.-frame/4-4.-frame-encoding.md b/docs/data-analysis/4.-frame/4-4.-frame-encoding.md new file mode 100644 index 00000000..8d781433 --- /dev/null +++ b/docs/data-analysis/4.-frame/4-4.-frame-encoding.md @@ -0,0 +1,18 @@ +# 4-4. Frame - Encoding + + + +
+ +Use this feature for columns where categorical data is entered. + +1. _**Label Encoding**_: Assign a number for each type of variable. + + For example, assign 0 for spring, 1 for summer, 2 for autumn, and 3 for winter. + +2. _**One-Hot-Encoding**_: Assign a binary vector for each type of variable. + + For example, spring is assigned \[1, 0, 0, 0], summer is \[0, 1, 0, 0], autumn is \[0, 0, 1, 0], + + and winter is \[0, 0, 0, 1]. + diff --git a/docs/data-analysis/4.-frame/4-5.-frame-data-cleaning.md b/docs/data-analysis/4.-frame/4-5.-frame-data-cleaning.md new file mode 100644 index 00000000..9917922e --- /dev/null +++ b/docs/data-analysis/4.-frame/4-5.-frame-data-cleaning.md @@ -0,0 +1,63 @@ +# 4-5. Frame - Data Cleaning + + + +
+ +1. _**Fill NA**_: Replace NA with another value. +2. _**Drop NA**_: Remove rows or columns containing NA. +3. _**Fill Outlier**_: Replace outliers in specific columns. +4. _**Drop Outlier**_: Remove outliers in specific columns. +5. _**Drop Duplicates**_: Remove duplicate values. + + + +*** + +### Fill NA + + + +
+ +1. _**Method**_: Choose the filling method. + + 1-1. _**Value**_: Replace NA with the specified input value. + + 1-2. _**Forward/Back Fill**_: Replace NA with values from the front/back. If NA is consecutive, you can set the '_**Limit**_' to determine how many values to fill. + + 1-3. _**Statistics**_: Fill in with statistical properties. + + + +*** + +### Drop NA + + + +
+ +1. _**How**_ + + 1-1. _**Select Options**_: Keep only rows with the number of non-NA values set by the _**threshold**_, and delete the rest. + + 1-2. _**Any**_: Delete rows if there is at least one NA in the row. + + 1-3. _**All**_: Delete rows if all values in the row are NA. + +2. _**Ignore Index**_: Choose whether to reset the index after row deletion. + + + +*** + +### Drop Duplicates + + + +
+ +1. _**Keep**_: Choose the value to retain among the duplicate values. Selecting _**False**_ will result in the deletion of all duplicate values. +2. _**Ignore Index**_: Choose whether to reset the index after duplicate values deletion. + diff --git a/docs/data-analysis/4.-frame/README.md b/docs/data-analysis/4.-frame/README.md new file mode 100644 index 00000000..e3f4bf84 --- /dev/null +++ b/docs/data-analysis/4.-frame/README.md @@ -0,0 +1,35 @@ +--- +description: Edit the Data Frame Easily Using Various Functions +--- + +# 4. Frame + + + +
+ +1. Click on the _**Frame**_ of Data Analysis + + + +
+ +2. Choose the data frame to work with from the _**DataFrame tab**_ at the top left. +3. In the _**Allocate tab**_, you can specify a new variable name. + + 3-1. If you check _**Inplace**_, it will directly modify the existing data frame without creating a new one. + +4. Click on the column directly to select one or multiple specific columns to work on. + + + +*** + +### Detailed Information + +1. [Edit](4-1.-frame-edit.md) +2. [Transform](4-2.-frame-transform.md) +3. [Sort](4-3.-frame-sort.md) +4. [Encoding](4-4.-frame-encoding.md) +5. [Data Cleaning](4-5.-frame-data-cleaning.md) + diff --git a/docs/data-analysis/5.-subset.md b/docs/data-analysis/5.-subset.md new file mode 100644 index 00000000..81b63c30 --- /dev/null +++ b/docs/data-analysis/5.-subset.md @@ -0,0 +1,42 @@ +--- +description: Extract the Desired Portion from the Data Frame +--- + +# 5. Subset + + + +
+ +1. Select the _**Subset**_ in the Data Analysis category. + + + +*** + + + +
+ +1. _**Data Frame**_: Select the data frame for the operation. +2. _**Make a copy**_: Check this option to ensure that changes do not affect the original data frame. +3. _**Method**_: Choose the method for specifying the rows or columns on which the operation will be applied. +4. _**Allocate to**_: Specify the variable name where the operation results will be stored. +5. _**Row Subset**_: Enter information about rows to proceed with the operation. + + 5-1. _**Slicing**_: Extract rows by specifying a range. + + 5-2. _**Condition**_: Specify the range or rows based on conditions. + + 5-3. _**Indexing**_: Select desired rows directly. + +6. _**Column Subset**_: Enter information about columns to proceed with the operation. + + 6-1. _**Indexing**_: Extract desired columns directly. + + 6-2. _**Slicing**_: Specify the range of columns to extract. + +7. _**Code View**_: View the generated code. +8. _**Data View**_: Preview the output results. +9. _**Run**_: Execute the commands. + diff --git a/docs/data-analysis/6.-groupby.md b/docs/data-analysis/6.-groupby.md new file mode 100644 index 00000000..2dcda70e --- /dev/null +++ b/docs/data-analysis/6.-groupby.md @@ -0,0 +1,33 @@ +--- +description: Group the Data in the DataFrame +--- + +# 6. Groupby + + + +
+ +1. Select _**Groupby**_ in the Data Analysis category. + + + +*** + + + +
+ +2. Choose the DataFrame to be grouped. + + **Group by column A, Apply grouping to column B, and Use method C.** + +3. For time-related data, check _**Grouper**_ to group data based on periods such as monthly, weekly, or yearly. +4. Check _**Advanced**_ to apply different methods for each column. +5. Specify the variable name to assign to the result. +6. Reset the index to assign a new default integer index. +7. Save and display the result in DataFrame format. +8. Preview the code to be output. +9. Preview the data to be output. +10. Output the result. + diff --git a/docs/data-analysis/7.-bind.md b/docs/data-analysis/7.-bind.md new file mode 100644 index 00000000..06c91020 --- /dev/null +++ b/docs/data-analysis/7.-bind.md @@ -0,0 +1,88 @@ +--- +description: Concatenate or Merge DataFrames +--- + +# 7. Bind + + + +
+ +1. Select _**Bind**_ from the Data Analysis category. + + + +
+ +2. Choose the _**Bind Type**_. + + 2-1. _**Concat**_ concatenates dataframes along rows or columns. + + 2-2. _**Merge**_ merges "two" dataframes based on a common column. + + + +*** + +### Concat + + + +
+ +1. Select the dataframes to concatenate. +2. Choose the concatenation method + + 2-1. _**Outer**_: When concatenating dataframes, non-matching indices are filled with NaN. + + 2-2. _**Inner**_ concatenates only the data with matching indices (non-matching data is removed.) + +3. Choose the concatenation direction. + + 3-1. _**Index**_ concatenates data along the row direction (vertical). + + 3-2. _**Column**_ concatenates data along the column direction (horizontal). + +4. Choose whether to sort the index. Sorting is done in ascending order based on index numbers, which may alter the data order. +5. Add additional options beyond those provided by Visual Python. +6. Specify the variable name to assign to the result. +7. Reset the index to assign a new default integer index. +8. Preview the code that will be output in _**Code View**_. +9. Preview the resulting dataframe in _**Data View**_. +10. Execute the code. + + + +*** + +### Merge + + + +
+ +_**Merge**_ two dataframes based on a standard column, creating two new columns for the values from each dataframe. + +1. Select the two dataframes to merge. +2. Choose the merging _**method**_. + + 2-1. _**Inner**_ merges based on the common values in the key column, keeping only the common values. + + 2-2. _**Outer**_ merges based on all rows in the key column, filling with input data. + + 2-3. _**Left**_ merges based on all rows in the key column from the left dataframe. + + 2-4. _**Left**_ merges based on all rows in the key column from the right dataframe. + + 2-5. _**Cross**_ outputs all combinations of data, regardless of the values in the key column. + +3. Select the key column that will be the reference for merging; it must be common to both dataframes. +4. Optionally, select the key column separately for each dataframe. +5. Append a suffix to columns with the same name other than the common key column. +6. Add additional options beyond those provided by Visual Python. +7. Specify the variable name to assign to the result. +8. Reset the index to assign a new default integer index. +9. Preview the code that will be output in _**Code View**_. +10. Preview the resulting dataframe in _**Data View**_. +11. Execute the code. + diff --git a/docs/data-analysis/8.-reshape.md b/docs/data-analysis/8.-reshape.md new file mode 100644 index 00000000..d334e8e8 --- /dev/null +++ b/docs/data-analysis/8.-reshape.md @@ -0,0 +1,66 @@ +--- +description: Reshape the Data into Long or Wide Format +--- + +# 8. Reshape + + + +
+ +1. Choose the _**Reshape**_ under the Data Analysis category. + + + +
+ +2. Select the Reshape type. + + 2-1. _**Pivot**_: Reshape the data into a wide data format. + + 2-2. _**Pivot Table**_: Reshape the data into a wide format and apply aggregation functions if duplicate indices or columns exist. + + 2-3. ape the data into a long data format. + + + +*** + +### Pivot & Pivot Table + + + +
+ +1. Select the DataFrame to be reshaped into wide data. +2. Choose the column to be set as the _**index**_ in the reshaped DataFrame. +3. Select the column to be set as the _**columns**_ in the reshaped DataFrame. +4. Choose the column to fill the _**values**_ in each column of the reshaped DataFrame. +5. \[_**Pivot Table**_] Select which _**aggregation function**_ to apply for duplicate indices or columns. If multiple aggregation functions are selected, the results of each function are individually generated. For example, applying _**Count**_ and _**First**_ aggregation functions to columns A, B, and C would create six columns. +6. Additional code beyond the functionalities provided by Visual Python can be added. +7. Specify the variable name to assign to the result. +8. Reset the index to assign a new default integer index. +9. Preview the code that will be output in _**Code View**_. +10. Preview the resulting DataFrame in _**Data View**_. +11. Execute the code. + + + +*** + +### Melt + + + +
+ +1. Select the DataFrame to be reshaped into long data. +2. Choose the column(s) to be specified as fixed variables in the reshaped DataFrame. These columns will be retained as they are in the reshaped DataFrame. +3. The names of the selected column(s) will be filled in the '_**A**_' column of the reshaped DataFrame, and the corresponding values from the original DataFrame will be filled in the '_**B**_' column. +4. Optionally provide additional desired options. +5. Specify the variable name to assign to the result. +6. Reset the index to assign a new default integer index. +7. Preview the code that will be output in _**Code View**_. +8. Preview the resulting DataFrame in _**Data View**_. +9. Execute the code. + diff --git a/docs/getting-started/how-to-install.md b/docs/getting-started/how-to-install.md new file mode 100644 index 00000000..40768ae3 --- /dev/null +++ b/docs/getting-started/how-to-install.md @@ -0,0 +1,89 @@ +--- +description: This document will show how to install Visual Python. +--- + +# How to install + +{% hint style="info" %} +**Visual Python** is an extension to [Jupyter Lab](https://jupyter.org/), [Jupyter Notebook](https://jupyter.org/) and [Google Colab](https://colab.research.google.com/), so you must have one of these environments installed already. + +*** + +If you prefer a simpler solution, consider [**Visual Python Desktop**](https://visualpython.ai/visualpython-desktop). It will establish an isolated python environment quickly and help you start Visual Python easily. +{% endhint %} + +### Pip Installation for Jupyter Lab + +**1. Install package from** + +``` +pip install jupyterlab-visualpython +``` + +**2. Activate Visual Python on Jupyter Lab** + +Click orange square button on the right side of the Jupyter Lab side bar. + +### Pip Installation for Jupyter Notebook + +**1. Install package from** + +``` +pip install visualpython +``` + +**2. Enable the package** + +``` +visualpy install +``` + +**3. Activate Visual Python on Jupyter Notebook** + +Click orange square button on the right side of the Jupyter Notebook menu. + +**4. Package Control Info** + +Version Check + +``` +visualpy version +``` + +Version Upgrade + +``` +visualpy upgrade +``` + + Uninstall + +``` +visualpy uninstall +``` + +Help Menu + +``` +visualpy help +``` + + + +### Chrome extension Installation for Google Colab + +**1. Install package from chrome web store** + +{% embed url="https://chrome.google.com/webstore/detail/visual-python-for-colab/ccmkpknjfagaldcgidgcipbpdipfopob" %} +Visual Python for Colab on chrome web store +{% endembed %} + +**2. Open Google Colab** + +{% embed url="https://colab.research.google.com/" %} +Google Colab Environment +{% endembed %} + +**3. Activate Visual Python on Google Colab** + +Click orange square button on the top-right side of the browser. diff --git a/docs/getting-started/installing-faq.md b/docs/getting-started/installing-faq.md new file mode 100644 index 00000000..feb0304e --- /dev/null +++ b/docs/getting-started/installing-faq.md @@ -0,0 +1,50 @@ +--- +description: Frequently Asked Questions. +--- + +# Installing FAQ + +### Which web browsers does Visual Python support? + +{% hint style="info" %} +Visual Python may work on many up-to-date browsers but it is optimized for Chrome. +{% endhint %} + +### I installed Visual Python, but the orange button does not appear on my Jupyter Notebook. + +This can happen if the you're using a Python version is not 3.x. + +1. Please upgrade to Python 3.x, or +2. If you are using multiple versions of Python, specify the pip version as 3 using the following command: + +**NOTE:** Please uninstall before reinstalling. + +``` +pip uninstall visualpython +``` + +``` +visualpy install —pip3 +``` + +### How can I install Visual Python behind a corporate firewall? + +If pip installation gives you SSLError, it can be solved using the following command: + +``` +pip install visualpython --trusted-host pypi.org --trusted-host files.pythonhosted.org +``` + +To upgrade Visual Python in the same environment, follow the steps below. + +**1) Upgrade Visual Python package.** + +``` +pip install visualpython --upgrade --trusted-host pypi.org --trusted-host files.pythonhosted.org +``` + +**2) Enable the package.** + +``` +visualpy install +``` diff --git a/docs/getting-started/welcome-to-visual-python.md b/docs/getting-started/welcome-to-visual-python.md new file mode 100644 index 00000000..e5815ee4 --- /dev/null +++ b/docs/getting-started/welcome-to-visual-python.md @@ -0,0 +1,15 @@ +# Welcome to Visual Python + +**Visual Python** is a GUI-based Python code generator for data science. + +**Visual Python** is an extension to **Jupyter Lab**, **Jupyter Notebook** and **Google Colab**. + +**Visual Python** is an open source project started for students who struggle with coding during Python classes for data science. + +

Visual Python 2.2.8 demo

+ +## Try Visual Python if you would like to + +* manage big data with minimal coding skills. +* help students / business analysts / researchers to overcome learning barriers for Python. +* save & reuse repeatedly used codes(snippets). diff --git a/docs/machine-learning/1.-data-sets.md b/docs/machine-learning/1.-data-sets.md new file mode 100644 index 00000000..9f08652a --- /dev/null +++ b/docs/machine-learning/1.-data-sets.md @@ -0,0 +1,17 @@ +# 1. Data Sets + + + +
+ +1. Click on _**Data Sets**_ in the _**Machine Learning**_ category. + + + +
+ +2. _**Load Type**_: You can load sample data (_**Load Data**_) or generate data (_**Create Data**_). +3. _**Allocate to**_: Specify variable names to assign to the data. +4. _**Code View**_: Preview the code that will be output. +5. _**Run**_: Execute the code. + diff --git a/docs/machine-learning/10.-fit-predict.md b/docs/machine-learning/10.-fit-predict.md new file mode 100644 index 00000000..38bffed1 --- /dev/null +++ b/docs/machine-learning/10.-fit-predict.md @@ -0,0 +1,25 @@ +# 10. Fit/Predict + + + +
+ +1. Click on _**Fit/Predict**_ under the _**Machine Learning**_ category. + + + +
+ +2. _**Model**_: Select the model you want to use. +3. _**Action**_: Choose the operation to apply to the selected model. +4. Available operations depend on the selected model. + * _**Fit**_: Train the model. + * _**Fit and Transform**_: Train the model and simultaneously transform the data. + * _**Transform**_: Transform the data. (Use a trained model.) + * _**Inverse Transform**_: Apply the reverse transformation of the model to restore the data to its original form. + * _**Predict**_: Make predictions using the trained model. + * _**Predict Probability**_: Return the probabilities of each data point in the dataset belonging to each class. + * _**Fit and Predict**_: Train the model and make predictions. +5. _**Code view**_: Preview the generated code. +6. _**Run**_: Execute the code. + diff --git a/docs/machine-learning/11.-model-info.md b/docs/machine-learning/11.-model-info.md new file mode 100644 index 00000000..66b08d5c --- /dev/null +++ b/docs/machine-learning/11.-model-info.md @@ -0,0 +1,25 @@ +# 11. Model Info + + + +
+ +1. Click on _**Model Info**_ in the _**Machine Learning**_ category. + + + +
+ +2. _**Model**_: Select the model for which you want to check information. +3. _**Info**_: Lists of information available for each type of model are displayed: + + Example: + + * Regressor: Score, Cross Validation Score, Permutation Importance, etc. + * Classifier: AUC, ROC Curve, Feature Importance, etc. + * Cluster: Cluster Centers, etc. + * Encoder: Categories, Feature Names, etc. +4. _**Options**_: Specify detailed settings to extract the information you want to check. +5. _**Code view**_: Preview the code. +6. _**Run**_: Execute the code. + diff --git a/docs/machine-learning/12.-evaluation.md b/docs/machine-learning/12.-evaluation.md new file mode 100644 index 00000000..039f75bf --- /dev/null +++ b/docs/machine-learning/12.-evaluation.md @@ -0,0 +1,48 @@ +# 12. Evaluation + + + +
+ +1. Click on _**Evaluation**_ in the _**Machine Learning**_ category. + + + +
+ + + +2. _**Model Type**_: Choose the type of model to evaluate: + * [Regression / Classification](12.-evaluation.md#regression-classification) + * [Clustering](12.-evaluation.md#clustering) +3. _**View Code**_: Preview the code. +4. _**Run**_: Execute the code. + + + +*** + +### Regression / Classification + + + +
+ +1. _**Target Data**_: Specify the target data. +2. _**Predict Data**_: Specify the data to predict. +3. _**Evaluation Metrics**_: Select the evaluation metrics to apply. + + + +*** + +### Clustering + + + +
+ +1. _**Clustered Index**_: Load the data containing index information assigned to the original data by clusters. +2. _**Feature Data**_: Load the original data. The _**Silhouette Score**_ is derived through computations with the data specified in the _**Clustered Index**_. +3. _**Target Data**_: Load the _**target data**_. The comparison with the _**Clustered Index**_ reveals how accurately the data has been clustered. + diff --git a/docs/machine-learning/13.-pipeline.md b/docs/machine-learning/13.-pipeline.md new file mode 100644 index 00000000..0d170dde --- /dev/null +++ b/docs/machine-learning/13.-pipeline.md @@ -0,0 +1,80 @@ +# 13. Pipeline + + + +
+ +1. Click on _**Pipeline**_ in the _**Machine Learning**_ category. + + + +
+ +2. _**Pipeline**_: Choose the type of task: + * [Data Preparation](13.-pipeline.md#data-preparation) + * [Regression / Classification / GridSearch](13.-pipeline.md#regression-classification-gridsearch) + * [Clustering](13.-pipeline.md#clustering) + * [Dimension Reduction](13.-pipeline.md#dimension-reduction) +3. _**Code view**_: Preview the code that will be generated. +4. _**Run**_: Execute the code. + + + +*** + +### Data Preparation + + + +
+ +1. [_**Data Prep**_](3.-data-prep.md) +2. [_**Fit**_](10.-fit-predict.md) +3. [_**Transform**_](10.-fit-predict.md) + + + +*** + +### Regression / Classification / GridSearch + + + +
+ +1. [_**Data Split**_](2.-data-split.md) +2. [_**Regressor**_ ](5.-regressor.md)_**/**_ [_**Classifier**_](6.-classifier.md) _**/**_ [_**GridSearch**_](9.-gridsearch.md) +3. [_**Fit**_](10.-fit-predict.md) +4. [_**Predict**_](10.-fit-predict.md) +5. [_**Evaluation**_](12.-evaluation.md) + + + +*** + +### Clustering + + + +
+ +1. [_**Clustering**_](7.-clustering.md) +2. [_**Fit**_](10.-fit-predict.md) +3. [_**Predict**_](10.-fit-predict.md) +4. [_**Transform**_](10.-fit-predict.md) +5. [_**Evaluation**_](12.-evaluation.md) + + + +*** + +### Dimension Reduction + + + +
+ +1. [_**Dimension Reduction**_](8.-dimension.md) +2. [_**Fit**_](10.-fit-predict.md) +3. [_**Transform**_](10.-fit-predict.md) + diff --git a/docs/machine-learning/14.-save-load.md b/docs/machine-learning/14.-save-load.md new file mode 100644 index 00000000..2b980efc --- /dev/null +++ b/docs/machine-learning/14.-save-load.md @@ -0,0 +1,44 @@ +# 14. Save / Load + + + +
+ +1. Click on _**Save/Load**_ in the _**Machine Learning**_ category. + + + +
+ +2. Choose an action: + * [Save model](14.-save-load.md#save-model) + * [Load model](14.-save-load.md#load-model) +3. _**Code view**_: Preview the code that will be generated. +4. _**Run**_: Execute the code. + + + +*** + +### Save model + + + +
+ +1. _**Target**_: Select the machine learning model to save. +2. _**Save path**_: Specify the path (location) to save the model. You can easily specify it by clicking on the folder icon. + + + +*** + +### Load model + + + +
+ +1. _**Load path**_: Specify the path (location) where the model is saved. You can easily specify it by clicking on the folder icon. +2. _**Allocate to**_: Enter the variable name to assign to the loaded model. + diff --git a/docs/machine-learning/2.-data-split.md b/docs/machine-learning/2.-data-split.md new file mode 100644 index 00000000..e7855ceb --- /dev/null +++ b/docs/machine-learning/2.-data-split.md @@ -0,0 +1,21 @@ +# 2. Data Split + + + +
+ +1. Click on _**Data Split**_ in the _**Machine Learning**_ category. + + + +
+ +2. _**Input Data**_: Choose whether the target data is included in the input data. If it is, select _**Feature Data**_ and _**Target Data**_ separately. You can also select specific columns from one dataset using the _**funnel icon**_. +3. _**Test Size**_: Select the percentage of input data to use for testing purposes. +4. _**Random State**_: Generate the same random state, ensuring consistent data splits each time. (If not set, data will be randomly split differently each time.) +5. _**Shuffle**_: Shuffle the data randomly to prevent the model from relying on the order of the data, thereby reducing bias and improving generalization performance. +6. _**Stratify**_: Maintain class ratios when splitting the data to prevent over-representation of certain classes (Classification). +7. _**Allocate to**_: Assign variable names to the split data. +8. _**Code View**_: Preview the code that will be output. +9. _**Run**_: Execute the code. + diff --git a/docs/machine-learning/3.-data-prep.md b/docs/machine-learning/3.-data-prep.md new file mode 100644 index 00000000..eba4bd6e --- /dev/null +++ b/docs/machine-learning/3.-data-prep.md @@ -0,0 +1,20 @@ +# 3. Data Prep + + + +
+ +1. Click on Data Prep in the Machine Learning category. + + + +
+ +2. _**Model Type**_: You can perform various preprocessing tasks: + * Encoding + * Scaling + * ETC +3. _**Allocate to**_: Assign variable names for the model to perform the selected preprocessing tasks. +4. _**Code View**_: Preview the code that will be output. +5. _**Run**_: Execute the code. + diff --git a/docs/machine-learning/4.-automl.md b/docs/machine-learning/4.-automl.md new file mode 100644 index 00000000..d47a69c7 --- /dev/null +++ b/docs/machine-learning/4.-automl.md @@ -0,0 +1,21 @@ +# 4. AutoML + + + +
+ +1. Click on _**AutoML**_ in the _**Machine Learning**_ category. + + + +
+ +2. _**Model Type**_: Choose the type of model to generate. You can conveniently install necessary packages through _**Install**_. +3. _**Generation(TPOT)**_: Set the number of generations to generate, evaluate, and compare. Each generation generates and evaluates candidate model pipelines. Higher values increase execution time. +4. _**Population Size(TPOT)**_: Determine the number of model candidates generated in each generation set in the previous step. +5. _**Cv(TPOT)**_: Determine the number of folds used for cross-validation. +6. _**Random State(TPOT)**_: Control randomness. If not set, different random sequences are generated each time. +7. _**Allocate to**_: Specify variable names to assign to the generated model. +8. _**Code View**_: Preview the code that will be output. +9. _**Run**_: Execute the code. + diff --git a/docs/machine-learning/5.-regressor.md b/docs/machine-learning/5.-regressor.md new file mode 100644 index 00000000..823b56a9 --- /dev/null +++ b/docs/machine-learning/5.-regressor.md @@ -0,0 +1,182 @@ +# 5. Regressor + + + +
+ +1. Click on the _**Regressor**_ in the _**Machine Learning**_ category. + + + +
+ +2. _**Model Type**_: Choose the regression model. + +* [Linear Regression](5.-regressor.md#linear-regression) +* [Ridge / Lasso](5.-regressor.md#ridge-lasso) +* [ElasticNet](5.-regressor.md#elasticnet) +* [SVR(SupportVectorMachine Regressor)](5.-regressor.md#svr-supportvectormachine-regressor) +* [DecisionTree Regressor](5.-regressor.md#decisiontree-regressor) +* [RandomForest Regressor](5.-regressor.md#randomforest-regressor) +* [GradientBoosting Regressor](5.-regressor.md#gradientboosting-regressor) +* [XGB Regressor](5.-regressor.md#xgb-regressor) +* [LGBM Regressor](5.-regressor.md#lgbm-regressor) +* [CatBoost Regressor](5.-regressor.md#catboost-regressor) + +3. _**Allocate to**_: Enter the variable name to assign to the created machine learning model. +4. _**Code View**_: Preview the generated code. +5. _**Run**_: Execute the code. + + + +*** + +### Linear Regression + + + +
+ +1. _**Fit Intercept**_: Choose whether to include the intercept. + + + +*** + +### Ridge / Lasso + + + +
+ +1. _**Alpha**_: Adjust the level of regularization. + + + +*** + +### ElasticNet + + + +
+ +1. _**Alpha**_: Adjust the level of regularization. +2. _**L1 ratio**_: Adjusts the balance (ratio) between _**L1 (Lasso)**_ and _**L2 (Ridge)**_ regularization. + + + +*** + +### SVR(SupportVectorMachine Regressor) + + + +
+ +1. _**C**_: Represents the degree of freedom for model regularization. Higher values of C make the model more complex, fitting the training data more closely. +2. _**Kernel**_: Function mapping data to a higher-dimensional space, controlling model complexity. + +* _**Degree(Poly)**_: Determines the degree of polynomial. +* _**Gamma(Poly, rbf, sigmoid)**_: Adjusts the curvature of the decision boundary. +* _**Coef0(Poly, sigmoid)**_: Additional parameter for the kernel, controlling the offset. Higher values fit the training data more closely. + +3. _**Random state**_: Sets the seed value for the random number generator used in model training. + + + +*** + +### DecisionTree Regressor + + + +
+ +1. _**Criterion**_: Specifies the measure used for node splitting. +2. _**Max depth**_: Specifies the maximum depth of the tree. +3. _**Min Samples Split**_: Specifies the minimum number of samples required to split a node. +4. _**Random state**_: Sets the seed value for the random number generator used in model training. + + + +*** + +### RandomForest Regressor + + + +
+ +1. _**N estimators**_: Specifies the number of trees in the ensemble. +2. _**Criterion**_: Specifies the measure used for node splitting. +3. _**Max depth**_: Specifies the maximum depth of the tree. +4. _**Min Samples Split**_: Specifies the minimum number of samples required to split a node. +5. _**N jobs**_: Specifies the number of CPU cores or threads to be used during model training. +6. _**Random State**_: Sets the seed value for the random number generator used in model training. + + + +*** + +### GradientBoosting Regressor + + + +
+ +1. _**Loss**_: Specifies the loss function used. +2. _**Learning rate**_: Specifies the learning rate. +3. _**N estimators**_: Specifies the number of trees in the ensemble. +4. _**Criterion**_: Specifies the measure used for node splitting. +5. _**Random State**_: Sets the seed value for the random number generator used in model training. + + + +*** + +### XGB Regressor + + + +
+ +1. _**N estimators**_: Specifies the number of trees in the ensemble. +2. _**Max depth**_: Specifies the maximum depth of the tree. +3. _**Learning rate**_: Specifies the learning rate. +4. _**Gamma**_: Specifies the minimum loss reduction required to make a further partition. +5. _**Random State**_: Sets the seed value for the random number generator used in model training. + + + +*** + +### LGBM Regressor + + + +
+ +1. _**Boosting type**_: Specifies the boosting type used in the algorithm. +2. _**Max depth**_: Specifies the maximum depth of the tree. +3. _**Learning Rate**_: Specifies the learning rate. +4. _**N estimators**_: Specifies the number of trees in the ensemble. +5. _**Random State**_: Sets the seed value for the random number generator used in model training. + + + +*** + +### CatBoost Regressor + + + +
+ +1. _**Learning rate**_: Specifies the learning rate. +2. _**Loss function**_: Specifies the loss function used. +3. _**Task Type**_: Specifies the hardware used for data processing. +4. _**Max Depth**_: Specifies the maximum depth of the tree. +5. _**N estimators**_: Specifies the number of trees in the ensemble. +6. _**Random State**_: Sets the seed value for the random number generator used in model training. + diff --git a/docs/machine-learning/6.-classifier.md b/docs/machine-learning/6.-classifier.md new file mode 100644 index 00000000..92cfbf75 --- /dev/null +++ b/docs/machine-learning/6.-classifier.md @@ -0,0 +1,156 @@ +# 6. Classifier + + + +
+ +1. Click on the _**Classifier**_ under the _**Machine Learning**_ category. + + + +
+ +2. _**Model Type**_: Select the Model Type of the classifier you want to use: + * [Logistic Regression](6.-classifier.md#logistic-regression) + * BernoulliNB + * MultinomialNB + * GaussianNB + * [SVC(SupportVectorMachine Classifier)](6.-classifier.md#supportvectormachine-classifier) + * [DecisionTree Classifier](6.-classifier.md#decisiontree-classifier) + * [RandomForest Classifier](6.-classifier.md#randomforest-classifier) + * [GradientBoosting Classifier](6.-classifier.md#gradientboosting-classifier) + * [XGB Classifier](6.-classifier.md#xgb-classifier) + * [LGBM Classifier](6.-classifier.md#lgbm-classifier) + * [CatBoost Classifier](6.-classifier.md#catboost-classifier) +3. _**Allocate to**_: Specify the variable name to assign to the model. +4. _**Code View**_: Preview the generated code. +5. _**Run**_: Execute the code. + + + +*** + +### Logistic Regression + + + +
+ +1. _**Penalty**_: Specify the regularization method for the model. (l2 / l1 / elasticnet / none) +2. _**C**_: Adjust the regularization strength. +3. _**Random State**_: Set the seed value for the random number generator. + + + +*** + +### SupportVectorMachine Classifier + + + +
+ +1. _**C**_: C indicates the freedom of the model's regularization. A higher C value makes the model more complex to fit the training data. +2. _**Kernel**_: A function that maps data into higher dimensions. You can control the complexity of the model by selecting the kernel type. + * _**Degree (Poly)**_: Degree determines the degree of the polynomial. A higher degree increases the complexity of the model. + * _**Gamma (Poly, rbf, sigmoid)**_: Gamma adjusts the curvature of the decision boundary. A higher value makes the model fit the training data more closely. + * _**Coef0 (Poly, sigmoid)**_: An additional parameter for the kernel, controlling the offset of the kernel. A higher value makes the model fit the training data more closely. +3. _**Random State**_: Set the seed value for the random number generator. + + + +*** + +### DecisionTree Classifier + + + +
+ +1. _**Criterion**_: Specify the metric used to select the node split. (squared\_error / friedman\_mse / absolute\_error / Poisson) +2. _**Max Depth**_: Specify the maximum depth of the trees. +3. _**Min Samples Split**_: Specify the minimum number of samples required to split a node to prevent excessive splitting. +4. _**Random State**_: Set the seed value for the random number generator. + + + +*** + +### RandomForest Classifier + + + +
+ +1. _**N estimators**_: Specify the number of trees to include in the ensemble. +2. _**Criterion**_: Specify the metric used to select the node split. Options include gini / entropy. +3. _**Max Depth**_: Specify the maximum depth of the trees. +4. _**Min Samples Split**_: Specify the minimum number of samples required to split a node to prevent excessive splitting. +5. _**N jobs**_: Specify the number of CPU cores or threads to use during model training for parallel processing. +6. _**Random State**_: Set the seed value for the random number generator. + + + +*** + +### GradientBoosting Classifier + + + +
+ +1. _**Loss**_: Specify the loss function to be used. Options include deviance / exponential. +2. _**Learning rate**_: Adjust the contribution of each tree and the degree to which the errors of previous trees are corrected. A large value may lead to non-convergence or overfitting, while a small value may increase training time. +3. _**N estimators**_: Specify the number of trees to include in the ensemble. +4. _**Criterion**_: Specify the metric used to select the node split. (friedman\_mse / squared\_error / mse / mae) +5. _**Random State**_: Set the seed value for the random number generator. + + + +*** + +### XGB Classifier + + + +
+ +1. _**N estimators**_: Specify the number of trees to include in the ensemble. +2. _**Max Depth**_: Specify the maximum depth of the trees. +3. _**Learning Rate**_: Adjust the contribution of each tree and the degree to which the errors of previous trees are corrected. +4. _**Gamma**_: Adjust the curvature of the decision boundary. A higher value makes the model fit the training data more closely. +5. _**Random State**_: Set the seed value for the random number generator. + + + +*** + +### LGBM Classifier + + + +
+ +1. _**Boosting type**_: Specify the boosting method used internally in the algorithm. (gbdt / dart / goss / rf (Random Forest)) +2. _**Max Depth**_: Specify the maximum depth of the trees. +3. _**Learning rate**_: Adjust the contribution of each tree and the degree to which the errors of previous trees are corrected. +4. _**N estimators**_: Specify the number of trees to include in the ensemble. +5. _**Random State**_: Set the seed value for the random number generator. + + + +*** + +### CatBoost Classifier + + + +
+ +1. _**Learning rate**_: Adjust the contribution of each tree and the degree to which the errors of previous trees are corrected. +2. _**Loss function**_: Specify the loss function to be used. (RMSE / absolute\_error / huber / quantile) +3. _**Task type**_: Specify the hardware used for data processing. (CPU / GPU) +4. _**Max depth**_: Specify the maximum depth of the trees. +5. _**N estimators**_: Specify the number of trees to include in the ensemble. +6. _**Random state**_: Set the seed value for the random number generator. + diff --git a/docs/machine-learning/7.-clustering.md b/docs/machine-learning/7.-clustering.md new file mode 100644 index 00000000..5738677b --- /dev/null +++ b/docs/machine-learning/7.-clustering.md @@ -0,0 +1,59 @@ +# 7. Clustering + + + +
+ +1. Click on _**Clustering**_ under the _**Machine Learning**_ category. + + + +
+ +2. _**Model type**_: Select the type of Model you want to use. + * [KMeans / AgglomerativeClustering](7.-clustering.md#kmeans-agglomerativeclustering) + * [GaussianMixture](7.-clustering.md#gaussianmixture) + * [DBSCAN](7.-clustering.md#dbscan) +3. _**Allocate to**_: Specify the variable name to assign to the generated model. +4. _**Code view**_: Preview the generated code. +5. _**Run**_: Execute the code. + + + +*** + +### KMeans / AgglomerativeClustering + + + +
+ +1. _**N clusters**_: Specify the number of clusters to be generated. +2. _**Random state**_: Set the seed value for the random number generator. + + + +*** + +### GaussianMixture + + + +
+ +1. _**N components**_: Specify the number of Gaussian distributions to be used by the model to describe the data, determining how many clusters the data will be divided into. +2. _**Random state**_: Set the seed value for the random number generator. + + + +*** + +### DBSCAN + + + +
+ +1. _**Eps (Epsilon)**_: Specify the maximum distance (radius) for forming clusters. +2. _**Min samples**_: Specify the minimum number of neighboring data points required for a point to be recognized as a cluster. + diff --git a/docs/machine-learning/8.-dimension.md b/docs/machine-learning/8.-dimension.md new file mode 100644 index 00000000..369c6caf --- /dev/null +++ b/docs/machine-learning/8.-dimension.md @@ -0,0 +1,20 @@ +# 8. Dimension + + + +
+ +1. Click on _**Dimension**_ under the _**Machine Learning**_ category. + + + +
+ +2. _**Model type**_: Select the type of model. +3. _**N components**_: Specify the desired number of dimensions to reduce the data to. +4. _**Learning rate (TSNE)**_: Learning rate determines how much the TSNE algorithm reflects the distances between data points. Too large values may cause data to be excessively dense, while too small values may lead to convergence issues. Typically, values between 0.1 and 0.3 are used. +5. _**Random state**_ - Set the seed value for the random number generator. +6. _**Allocate to**_: Specify the variable name to assign to the model. +7. _**Code view**_: Preview the generated code. +8. _**Run**_: Execute the code. + diff --git a/docs/machine-learning/9.-gridsearch.md b/docs/machine-learning/9.-gridsearch.md new file mode 100644 index 00000000..25dcd64d --- /dev/null +++ b/docs/machine-learning/9.-gridsearch.md @@ -0,0 +1,24 @@ +# 9. GridSearch + + + +
+ +1. Click on _**GridSearch**_ under the _**Machine Learning**_ category. + + + +
+ +2. _**Model type**_: Select the type of machine learning model you want to use. +3. _**Scoring**_: Choose the metric for evaluating the model. +4. _**N jobs**_: Accelerate tasks through parallel processing. Enter the number of tasks to run simultaneously. +5. _**Cv**_: Specify the number of folds to be used during C_**ross-Validation**_. +6. _**Verbose**_: Display progress of the GridSearch. Higher values show more information. +7. _**Allocate to**_: Specify the variable name to allocate. +8. _**Param grid**_: + * _**Add param**_: Additional parameters other than 3 to 6 can be added. + * _**Add param set**_: Multiple combinations of parameters can be applied using sets. +9. _**Code view**_: Preview the generated code. +10. _**Run**_: Execute the code. + diff --git a/docs/statistics/1.-prob.-distribution.md b/docs/statistics/1.-prob.-distribution.md new file mode 100644 index 00000000..61e0361e --- /dev/null +++ b/docs/statistics/1.-prob.-distribution.md @@ -0,0 +1,182 @@ +# 1. Prob. Distribution + + + +
+ +1. Click on the _**Prob. Distribution**_ icon in the _**Statistics**_ category. + + + +
+ +2. _**Code View**_: Preview the code that will be generated. +3. _**Data View**_: View the data used in the operation. +4. _**Run**_: Execute the code. + + + +*** + +#### Common + +* [Action](1.-prob.-distribution.md#action) + +#### Discrete Probability Distribution + +* [Bernoulli](1.-prob.-distribution.md#bernoulli) +* [Binomial and Multinomial](1.-prob.-distribution.md#binomial-and-multinomial) + +#### Continuous Probability Distribution + +* Uniform +* [Normal](1.-prob.-distribution.md#normal) +* [Beta](1.-prob.-distribution.md#beta) +* [Gamma](1.-prob.-distribution.md#gamma) +* [Student's t and Chi2](1.-prob.-distribution.md#students-t-and-chi2) +* [F](1.-prob.-distribution.md#f) +* [Dirichlet](1.-prob.-distribution.md#dirichlet) +* [Multivariate Normal](1.-prob.-distribution.md#multivariate-normal) + + + +*** + +## Common + +### Action + +#### Generate Random Numbers + +
+ +1. _**Size**_: Set the number of samples extracted from the generated distribution. +2. _**Random State**_: Set the seed. +3. _**Allocate to**_: Specify the variable (call name) toate. +4. _**Show Sampled Distribution**_: Visualize the distribution drawn from the samples. + + + +#### Show Distribution Plot + +
+ +1. _**Probability Density Function**_: Output the probability density function. +2. _**Cumulative Distribution Function**_: Output the cumulative distribution function. + + + +#### Statistics to P-Value + +
+ +1. _**Statistic**_: You will obtain the probability of getting a value equal to or greater than the absolute value entered here in this distribution. +2. _**Alternative**_: Two-sided; for a two-tailed test, One-sided; for a one-tailed test. + + + +#### P-Value to Statistics + +
+ +1. _**Proportional Value**_: Enter the p-value; the range on the distribution where values equal to or greater than the entered p-value will be calculated and displayed. +2. _**Alternative**_: Choose between two-sided or one-sided test. + + + +*** + +## Discrete Probability Distribution + +### Bernoulli + +
+ +1. _**P**_: Enter the probability of getting 1 in the binary outcome of 0 and 1. +2. _**User Option**_: Optionally provide additional desired options. + + + +### Binomial and Multinomial + +
+ +1. _**N**_: Enter the number of trials. +2. _**P**_: Enter the probability of success in a trial. Use the _**Funnel Icon**_ to fetch values entered in a specific dataframe column. (The form of the input values can be referred to in the generated examples.) + + + +*** + +## Continuous Probability Distribution + +### Normal + +
+ +1. _**Loc**_: Set the mean of the normal distribution. +2. _**Scale**_: Set the standard deviation of the normal distribution. +3. _**User Option**_: Optionally provide additional desired options. + + + +### Beta + +
+ +1. _**A**_: Set the shape parameter a of the beta distribution. +2. _**B**_: Set the shape parameter b of the beta distribution. +3. _**User Option**_: Optionally provide additional desired options. + + + +### Gamma + +
+ +1. _**A**_: Set the shape parameter of the gamma distribution. +2. _**User Option**_: Optionally provide additional desired options. + + + +### Student's t and Chi2 + +
+ +1. _**Df**_: Set the degrees of freedom for the t-distribution or chi-squared distribution. +2. _**User Option**_: Optionally provide additional desired options. + + + +### F + +
+ +1. _**Dfn**_: Set the numerator degrees of freedom. +2. _**Dfd**_: Set the denominator degrees of freedom. + +* The F-distribution represents the ratio of two chi-squared distributions. _**Dfn**_ and _**Dfd**_ are the degrees of freedom for the two chi-squared distributions. + +3. _**User Option**_: Optionally provide additional desired options. + + + +### Dirichlet + +
+ +1. _**Alpha**_: Enter the importance for three categories (or dimensions) in the format _**(a, b, c)**_. +2. _**Seed**_: If provided, the generated random numbers will be fixed. +3. _**User Option**_: Optionally provide additional desired options. + + + +### Multivariate Normal + +
+ +1. _**Mean**_: Set the mean of the distribution. For _**\[a, b]**_, the mean of the first distribution is _**a**_, and the mean of the second distribution is _**b**_. +2. _**Cov**_: Set the covariance of the distribution. For _**\[a, b]**_, the covariance of the first distribution is _**a**_, and the covariance of the second distribution is _**b**_. +3. _**Allow Singular**_: If True, allows generating the distribution even when the covariance matrix is singular. +4. _**User Option**_: Optionally provide additional desired options. + diff --git a/docs/statistics/10.-factor-analysis.md b/docs/statistics/10.-factor-analysis.md new file mode 100644 index 00000000..5b3e273d --- /dev/null +++ b/docs/statistics/10.-factor-analysis.md @@ -0,0 +1,29 @@ +# 10. Factor Analysis + + + +
+ +1. Click on _**Factor Analysis**_ in the _**Statistics**_ category + + + +
+ +2. _**Install Package**_: You can automatically _**Import**_ the necessary packages for factor analysis. +3. _**Data**_: Select the data for factor analysis. You can also choose specific conditions using the [_**Subset**_](../data-analysis/5.-subset.md) option. +4. _**Variable**_: Choose the variables from the selected data for factor analysis. +5. _**Rotation**_: Select a rotation method to analyze which factors best explain the data. +6. _**Method**_: Choose a factor analysis method: + * _**Principal**_: Principal Factor Analysis + * _ML_: Maximum Likelihood Factor Analysis + * _Minres_: Minimum Residual Factor Analysis +7. _**Impute**_: Select a method for handling missing values: + * **Drop**: Remove rows with missing values. + * **Mean / Median**: Replace missing values with the mean or median. +8. _**Extract**_: Decide on the criteria for extracting factors and specify the number of factors to extract. +9. _**Display**_: Visualize the results. +10. _**Code View**_: Preview the generated code. +11. _**Data View**_: Preview the resulting data. +12. _**Run**_: Execute the code. + diff --git a/docs/statistics/11.-regression.md b/docs/statistics/11.-regression.md new file mode 100644 index 00000000..44ac6cba --- /dev/null +++ b/docs/statistics/11.-regression.md @@ -0,0 +1,22 @@ +# 11. Regression + +1. Click on _**Regression**_ in the _**Statistics**_ category. + + + +
+ +2. Choose the type of Regression you want to use. +3. _**Data**_: Select the data to be analyzed. You can also choose specific conditions for the data using [_**Subset**_](../data-analysis/5.-subset.md). +4. _**Dependent Variable**_: Choose the dependent variable. +5. _**Independent Variable**_: Choose the independent variable. +6. _**Method(Multiple Linear Regression)**_: Select the variable selection method. - _**Stepwise / Backward / Forward**_ +7. _**Moderated Variable & Mean Centering(Moderated Linear Regression)**_: Select the moderated variable. Choose whether to apply mean centering to the moderating variable. This can reduce multicollinearity and enhance the interpretation of the model. +8. _**Sobel Test(Mediated Linear Regression)**_: You can test the statistical significance of the _**mediation effect**_, which indicates the extent to which the impact of one independent variable on the dependent variable is transmitted through a mediated variable. +9. _**Categorical Variables(Dummy Variable Linear Regression)**_: You can include categorical variables in the regression model using dummy variables. +10. _**Multi-Colinearity Statistics(Excluding Simple Linear Regression)**_: This provides statistics to check for the presence of multicollinearity. +11. _**Residual**_: Select the desired output. +12. _**Code View**_: Preview the generated code. +13. _**Data View**_: Preview the generated data. +14. _**Run**_: Execute the code. + diff --git a/docs/statistics/12.-logistic-regression.md b/docs/statistics/12.-logistic-regression.md new file mode 100644 index 00000000..c055d4c6 --- /dev/null +++ b/docs/statistics/12.-logistic-regression.md @@ -0,0 +1,21 @@ +# 12. Logistic Regression + + + +
+ +1. Click on _**Logistic Regression**_ in the _**Statistics**_ category. + + + +
+ +2. _**Data**_: Select the data for analysis. You can choose only the data that meets specific conditions using [_**Subset**_](../data-analysis/5.-subset.md). +3. _**Dependent Variable**_: Choose the dependent variable. You can transform continuous variables into categorical variables by checking _**Encoding Labels**_. +4. _**Independent Variable**_: Select the independent variables. +5. _**Show Odds**_: Display the odds. +6. _**Multicollinearity Statistics**_: This provides statistics to check for the presence of multicollinearity. +7. _**Code View**_: Preview the code that will be output. +8. _**Data View**_: Preview the data that will be output. +9. _**Run**_: Execute the code. + diff --git a/docs/statistics/2.-descriptive-statistics.md b/docs/statistics/2.-descriptive-statistics.md new file mode 100644 index 00000000..0a27a77d --- /dev/null +++ b/docs/statistics/2.-descriptive-statistics.md @@ -0,0 +1,50 @@ +# 2. Descriptive Statistics + +
+ +1. Select _**Descriptive Statistics**_ in the _**Statistics category**_. + + + +
+ +2. _**Data**:_ Choose a DataFrame. You can apply conditions or slice through the _**Subset**_. +3. _**Variable**_: Select the column from the chosen DataFrame to be designated as the _**Variable**_. +4. _**Code View**_: Preview the code that will be displayed. +5. _**Data View**_: Preview the displayed results. +6. _**Run**_: Execute the code. + + + +### Descriptive Statistics + + + +
+ +1. _**Central Tendency**_ outputs the selected variable's _**Mean, Median, Mode,**_ and _**Sum**_. +2. _**Dispersion**_ outputs the _**Minimum, Maximum, Range, Standard Deviation, Variance,**_ and _**Standard Error of the Mean**_ of the selected variable. +3. _**Distribution**_ outputs the _**Skewness**_ and _**Kurtosis**_ of the selected variable. +4. _**Percentile Values**_ outputs _**Quantiles**_ and _**Percentiles**_ of the selected variable. + + + +### Frequency Table + + + +
+ +1. It outputs _**Frequency, Percent, Valid Percent,**_ and _**Cumulative Percent**_ of the selected variable. +2. _**Number of Unique Values**_ divides the data of the selected variable into units of entered values. + + + +### Display + + + +
+ +1. Select the plots to be displayed. + diff --git a/docs/statistics/3.-normality-test.md b/docs/statistics/3.-normality-test.md new file mode 100644 index 00000000..ccf70d75 --- /dev/null +++ b/docs/statistics/3.-normality-test.md @@ -0,0 +1,21 @@ +# 3. Normality Test + + + +
+ +1. Choose the _**Normality test**_ in the _**Statistics**_ category. + + + +
+ +2. Select the test method to apply. +3. Choose the data to be tested. You can select values that satisfy certain conditions through [_**Subsets**_](../data-analysis/5.-subset.md). +4. Choose the column to be tested among the columns with the selected values from _**Step 3**_. +5. _**Alternative Hypothesis**_ _**(Kolmogorov-Smirnov test)**_: Choose whether to perform a two-sided or one-sided test. +6. _**Display**_: Select the Plot to be output along with the validation results. +7. _**Code View**_: Preview the code that will be output. +8. _**Data View**_: Preview the data that will be output. +9. _**Run**_: Execute the code. + diff --git a/docs/statistics/4.-equal-var.-test.md b/docs/statistics/4.-equal-var.-test.md new file mode 100644 index 00000000..237db740 --- /dev/null +++ b/docs/statistics/4.-equal-var.-test.md @@ -0,0 +1,54 @@ +# 4. Equal Var. Test + + + +
+ +1. Select the _**Equal Var. Test**_ in the _**Statistics**_ category. + + + +
+ +2. Choose the type of test to apply. + +[Long Data](4.-equal-var.-test.md#long-data) + +[Wide Data](4.-equal-var.-test.md#wide-data) + +3. _**Display**_: Visualize the shape of the variance. +4. _**Code View**_: Preview the code to be output. +5. _**Data View**_: Preview the data to be output. +6. _**Run**_: Execute the code. + + + +*** + +### Long Data + + + +
+ +1. _**Input Type**_: Select the format of the data to be tested. +2. _**Data**_: Choose the data to be tested. You can use [_**Subset**_](../data-analysis/5.-subset.md) to select only the data that satisfies specific conditions. +3. _**Factor**_: Choose the criterion for dividing the groups for testing equal variance among the data selected in 2. +4. _**Variable**_: Select the values that constitute the variance among the data chosen in 2. +5. _**Center(Levene test, Fligner test)**_: Choose the criterion for testing equal variance of the columns. + + + +*** + +### Wide Data + + + +
+ +1. _**Input Type**_: Select the format of the data to be tested. +2. _**Data**_: Choose the data to be tested. You can use [_**Subset**_](../data-analysis/5.-subset.md) to select only the data that satisfies specific conditions. +3. Select the columns for the data chosen above to test for equal variance. +4. _**Center(Levene test, Fligner test)**_: Choose the criterion for testing the equal variance of the columns. + diff --git a/docs/statistics/5.-correlation-analysis.md b/docs/statistics/5.-correlation-analysis.md new file mode 100644 index 00000000..5d39c2c8 --- /dev/null +++ b/docs/statistics/5.-correlation-analysis.md @@ -0,0 +1,20 @@ +# 5. Correlation Analysis + + + +
+ +1. Click on _**Correlation Analysis**_ in the _**Statistics**_ category. + + + +
+ +2. _**Data**_: Select the data for correlation analysis. You can use [_**Subset**_](../data-analysis/5.-subset.md) to choose only the data that satisfies specific conditions. +3. _**Variable:**_ Choose the variables from the selected data for which you want to analyze the correlation. +4. _**Correlation**_: Select the method for correlation analysis. +5. _**Display**_: Visualize the results of the correlation analysis. +6. _**Code View**_: Preview the code that will be generated. +7. _**Data View**_: Preview the data that will be output. +8. _**Run**_: Execute the code. + diff --git a/docs/statistics/6.-reliability-analysis.md b/docs/statistics/6.-reliability-analysis.md new file mode 100644 index 00000000..a6440919 --- /dev/null +++ b/docs/statistics/6.-reliability-analysis.md @@ -0,0 +1,30 @@ +# 6. Reliability Analysis + + + +
+ +1. Click on _**Reliability Analysis**_ in the _**Statistics**_ category. + + + +
+ +2. _**Data**_: Select the data for Reliability Analysis. You can specify only the data that meets specific conditions from the chosen DataFrame through [_**Subset**_](../data-analysis/5.-subset.md). +3. _**Variable**_: Choose the columns for Reliability Analysis from the data selected above. +4. _**Code View**_: Preview the code that will be generated. +5. _**Data View**_: Preview the data that will be output. +6. _**Run**_: Execute the code. + + + +### Output Example + + + +
+ +* _**Cronbach Alpha**_ used in Reliability Analysis is a statistical method measuring _**Consistency**_, and this consistency is an indicator of Reliability. +* The Cronbach Alpha value is output between 0 and 1, where closer to 1 indicates higher consistency. The _**N**_ value represents the number of columns selected. +* _**The Item-Total Statistics t**_able displays the mean, variance, and Cronbach Alpha values for each column's presence or absence. Additionally, _**Corrected Item-Total Correlation**_ indicates how consistent each column is with the total. + diff --git a/docs/statistics/7.-chi-square-test.md b/docs/statistics/7.-chi-square-test.md new file mode 100644 index 00000000..ab6144ec --- /dev/null +++ b/docs/statistics/7.-chi-square-test.md @@ -0,0 +1,20 @@ +# 7. Chi-square Test + + + +
+ +1. Click on the _**Chi-square test**_ in the _**Statistics**_ category. + + + +
+ +2. _**Data**_: Select the data for the _**Chi-square test**_. You can choose specific data that meets certain conditions through [_**Subset**_](../data-analysis/5.-subset.md). +3. _**Row**_: In Cross tabulation for Chi-square test, choose the column to be used as a _**row**_. +4. _**Column**_: In Cross tabulation for Chi-square test, choose the column to be used as a _**column**_. +5. _**Display**_: Visualize the results of the Chi-square test with the selected options. +6. _**Code View**_: Preview the code that will be generated. +7. _**Data View**_: Preview the data that will be output. +8. _**Run**_: Execute the code. + diff --git a/docs/statistics/8.-students-t-test.md b/docs/statistics/8.-students-t-test.md new file mode 100644 index 00000000..c58bf273 --- /dev/null +++ b/docs/statistics/8.-students-t-test.md @@ -0,0 +1,68 @@ +# 8. Student's T-test + + + +
+ +1. Click on the _**Student's t-test**_ in the _**Statistics**_ category. + + + +
+ +2. Choose the type of t-test you want to perform: + +* [One-sample t-test](8.-students-t-test.md#one-sample-t-test) +* [Independent two-sample t-test](8.-students-t-test.md#independent-two-sample-t-test) +* [Paired samples t-test](8.-students-t-test.md#paired-samples-t-test) + +3. _**Code View**_: Preview the generated code. +4. _**Data View**_: Preview the data that will be used in the test. +5. _**Run**_: Execute the code. + + + +*** + +### One-sample t-test + + + +
+ +1. _**Data**_: Select the data for the t-test. You can choose specific data satisfying certain conditions using [_**Subset**_](../data-analysis/5.-subset.md). +2. _**Test Variable**_: Choose the group for the t-test. +3. _**Test Value**_: Enter the test value for the t-test in that group. The alternative hypothesis will be based on this value. +4. _**Alternative Hypothesis**_: Select the alternative hypothesis. +5. _**Confidence Interval**_: Set the confidence interval. + + + +*** + +### Independent two-sample t-test + + + +
+ +1. _**Input Type**_: Choose the type of data for the t-test. +2. _**Data**_: Select the data for the t-test. You can choose specific data satisfying certain conditions using [_**Subset**_](../data-analysis/5.-subset.md). +3. _**Test Variable**_: Choose the two groups for the t-test. +4. _**Alternative Hypothesis**_: Choose the alternative hypothesis. + + + +*** + +### Paired samples t-test + + + +
+ +1. _**Data**_: Select the data for the t-test. You can choose specific data satisfying certain conditions using [_**Subset**_](../data-analysis/5.-subset.md). +2. _**Paired Variable**_: Choose the paired groups for the t-test. +3. _**Alternative Hypothesis**_: Choose the alternative hypothesis. +4. _**Confidence Interval**_: Set the confidence interval. + diff --git a/docs/statistics/9.-anova.md b/docs/statistics/9.-anova.md new file mode 100644 index 00000000..800b2004 --- /dev/null +++ b/docs/statistics/9.-anova.md @@ -0,0 +1,54 @@ +# 9. ANOVA + + + +
+ +1. Click on _**ANOVA**_ in the _**Statistics**_ category. + + + +
+ +2. Choose the analysis method. + +* [One-way ANOVA / Two-way ANOVA](9.-anova.md#one-way-anova-two-way-anova) +* [ANCOVA](9.-anova.md#ancova) + +3. _**Display**_: Visualize the results. +4. _**Code View**_: Preview the generated code. +5. _**Data View**_: Preview the generated data. +6. _**Run**_: Execute the code. + + + +*** + +### One-way ANOVA / Two-way ANOVA + + + +
+ +1. _**Data**_: Select the data for analysis. You can choose data that satisfies specific conditions through [_**Subset**_](../data-analysis/5.-subset.md). +2. _**Dependent Variable**_: Choose the dependent variable. +3. _**Factor**_: Select the factors. For _**Two-way ANOVA**_, choose factors A and B. +4. _**Significance Level**_: Enter the significance level. (default: 0.05) +5. _**Post hoc analysis**_: Choose the post hoc analysis method. If there is a statistically significant difference in mean among groups, further verify which groups differ. + + + +*** + +### ANCOVA + + + +
+ +1. _**Install Package**_: Automatically install the required packages for analysis. +2. _**Data**_: Select the data for analysis. You can choose data that satisfies specific conditions through [_**Subset**_](../data-analysis/5.-subset.md). +3. _**Dependent Variable**_: Choose the dependent variable. +4. _**Factor**_: Select the factors. +5. _**Covariate**_: Choose the covariate. + diff --git a/docs/visualization/1.-chart-style.md b/docs/visualization/1.-chart-style.md new file mode 100644 index 00000000..26819f76 --- /dev/null +++ b/docs/visualization/1.-chart-style.md @@ -0,0 +1,25 @@ +--- +description: Configuring the Basic Style of the Chart +--- + +# 1. Chart Style + + + +
+ +1. Click on the _**Chart Style**_ in the visualization category. + + + +
+ +2. Use _**Import Library**_ in the top right corner to import _**Matplotlib**_ and _**Seaborn**_ without specific chart style settings. +3. Set the _**figure size**_ for the chart to be displayed. +4. Choose the _**style of the chart**_ to be displayed. +5. Set the _**font**_ for the text entered in the chart to be displayed. +6. Select the _**font size**_. +7. Default settings can be applied for the configuration. +8. Preview the code that will be generated. +9. Output the code. + diff --git a/docs/visualization/2.-pandas-plot.md b/docs/visualization/2.-pandas-plot.md new file mode 100644 index 00000000..97d8c429 --- /dev/null +++ b/docs/visualization/2.-pandas-plot.md @@ -0,0 +1,43 @@ +# 2. Pandas Plot + + + +
+ +1. Click on _**Pandas Plot**_ in the _**Visualization**_ category. + + + +
+ +2. Select the DataFrame to be represented as a plot. + + 2-1. Specific columns of the DataFrame can be selected using the funnel icon. + + + +**\*The following items will be set to default values if not entered:** + +3. Choose the _**Chart Type**_. +4. Enter the _**Chart Title**_. +5. Input the _**size of the output plot**_. +6. Select the _**Font Size**_ of the text on the plot. +7. Select the _**color theme**_ for the displayed plot. +8. Decide on the visibility of the _**Grid**_. +9. Decide on the visibility of the _**Legend**_. +10. _**Rotate on the axis names**_ if needed, especially useful for long names. +11. Specify the _**axis names**_. + + + +
+ +12. Set the _**range of values**_ to be displayed on the axes. +13. Specify the _**interval**_ between axis tick marks. +14. For line graphs, specify the _**style of the lines**_. +15. _**Choose the columns**_ from the DataFrame to be represented in the plot. +16. Simultaneously, create _**multiple plots**_ within a single figure. +17. Specify the _**Layout**_ when creating multiple plots. +18. Choose _**True**_ if you want to use the DataFrame's index as the X-axis. +19. If _**True**_, represent data from multiple columns of the DataFrame in a single plot. + diff --git a/docs/visualization/3.-matplotlib.md b/docs/visualization/3.-matplotlib.md new file mode 100644 index 00000000..ce042640 --- /dev/null +++ b/docs/visualization/3.-matplotlib.md @@ -0,0 +1,234 @@ +# 3. Matplotlib + + + +
+ +1. Select _**Matplotlib**_ from the _**Visualization**_ category. + + + +
+ +2. Configure the default settings of the Figure through _**Import Options**_. Detailed settings can be done in the _**Chart Style**_ of the _**Visualization**_ category. +3. Choose the _**Chart Type**_. + + + +\*_**Additional Options**_: The following options exist universally for all chart styles. + +
+ +4. _**Title**_: Enter the title of the FIgure. +5. _**Label**_: Set the name of the axes. +6. _**Limit**_: Set the range of values to be displayed on the axes. +7. _**Legend Title**_: Enter the title of the legend. +8. _**Legend Labels**_: Add labels to the legend to explain the meaning of each plotted data. +9. _**Legend Position**_: Choose the position of the legend. +10. _**Save Figure**_: Save the figure. Set the path using the file-shaped icon. + + + +*** + +[Line Plot](3.-matplotlib.md#line-plot) + +[Bar Plot 1](3.-matplotlib.md#bar-plot-1) + +[Bar Plot 2](3.-matplotlib.md#bar-plot-2) + +[Histogram](3.-matplotlib.md#histogram) + +[Box Plot](3.-matplotlib.md#box-plot) + +[Stack Plot](3.-matplotlib.md#stack-plot) + +[Pie Plot](3.-matplotlib.md#pie-plot) + +[Scatter Plot](3.-matplotlib.md#scatter-plot) + +[Hexbin Plot](3.-matplotlib.md#hexbin) + +[Contour Plot](3.-matplotlib.md#contour-plot) + +[Image Plot](3.-matplotlib.md#image-plot) + +[Error Bar Plot](3.-matplotlib.md#error-bar-plot) + + + +*** + +### Line Plot + + + +
+ +1. _**Value**_: Select the data to plot. You can choose a specific column from a DataFrame using the funnel icon. +2. _**Chart Label**_: Add labels to explain the meaning of each plotted data. +3. _**Color**_: Check _**Use Color**_ and choose the color of the graph. +4. _**Marker**_: Choose the style of the marker. +5. _**Line Style**_: Choose the style of the line. +6. _**User Option**_: Additional code beyond the functionalities provided by Visual Python can be added. + + + +*** + +### Bar Plot 1 + + + +
+ +1. _**X Value, Height**_: Select data to plot. You can choose a specific column for a DataFrame using the funnel icon. +2. _**Chart Label**_: Add labels to explain the meaning of each plotted data. +3. _**Color:**_ Check _**Use Color**_ and choose the color of the graph. +4. _**Line Style**_: Choose the style of the line. +5. _**User Option**_: Additional code beyond the functionalities provided by Visual Python can be added. + + + +*** + +### Bar Plot 2 + + + +
+ +1. _**Y Value, Width**_: Select data to plot. You can choose a specific column from a DataFrame using the funnel icon. +2. _**Chart Label**_: Add labels to explain the meaning of each plotted data. +3. _**Color**_: Check _**Use Color**_ and choose the color of the graph. +4. _**Line Style**_: Choose the style of the line. +5. _**User Option**_: Additional code beyond the functionalities provided by Visual Python can be added. + + + +*** + +### Histogram + + + +
+ +1. _**Value**_: Select data to plot. You can choose a specific column from a DataFrame using the funnel icon. +2. _**Bins**_: Set the intervals (bin size) to divide the data. +3. _**Chart Label**_: Add labels to explain the meaning of each plotted data. +4. _**Color**_: Check _**Use Color**_ and choose the color of the graph. +5. _**Line Style**_: Choose the style of the line. +6. _**User Option**_: Additional code beyond the functionalities provided by Visual Python can be added. + + + +*** + +### Box Plot + + + +
+ +1. _**Value**_: Select data to plot. You can choose a specific column from a DataFrame using the funnel icon. +2. _**User Option**_: Additional code beyond the functionalities provided by Visual Python can be added. + + + +*** + +### Stack Plot + + + +
+ +1. _**Value**_: Select data to plot. You can choose a specific column from a DataFrame using the funnel icon. +2. _**Color**_: Check _**Use Color**_ and choose the color of the graph. +3. _**Line Style**_: Choose the style of the line. +4. _**User Option**_: Additional code beyond the functionalities provided by Visual Python can be added. + + + +*** + +### Pie Plot + + + +
+ +1. _**Value**_: Select data to plot. You can choose a specific column from a DataFrame using the funnel icon. +2. _**User Option**_: Additional code beyond the functionalities provided by Visual Python can be added. + + + +*** + +### Scatter Plot + + + +
+ +1. _**Value**_: Select data to plot. You can choose a specific column from a DataFrame using the funnel icon. +2. _**Color Map**_: Choose the color theme to map to the data. +3. _**Marker**_: Choose the style of the marker. +4. _**User Option**_: Additional code beyond the functionalities provided by Visual Python can be added. + + + +*** + +### Hexbin + + + +
+ +1. _**Value**_: Select data to plot. You can choose a specific column from a DataFrame using the funnel icon. +2. _**Chart Label**_: Add labels to explain the meaning of each plotted data. +3. _**Color**_: Check _**Use Color**_ and choose the color of the graph. +4. _**User Option**_: Additional code beyond the functionalities provided by Visual Python can be added. + + + +*** + +### Contour Plot + + + +
+ +1. _**Value**_: Select data to plot. You can choose a specific column from a DataFrame using the funnel icon. +2. _**Color Map**_: Choose the color theme to map to the data. +3. _**Chart Label**_: Add labels to explain the meaning of each plotted data. +4. _**User Option**_: Additional code beyond the functionalities provided by Visual Python can be added. + + + +*** + +### Image Plot + +
+ +1. _**Value**_: Select data to plot. You can choose a specific column from a DataFrame using the funnel icon. +2. _**Extent**_: Specify the range on the X and Y axes where the image will be displayed. +3. _**Origin**_: Choose the position of the image's origin. _**Lower**_ places it at the bottom of the coordinate plane, and _**Upper**_ places it at the top. +4. _**Color Map**_: Choose the color theme to map to the data. +5. _**User Option**_: Additional code beyond the functionalities provided by Visual Python can be added. + + + +*** + +### Error Bar Plot + +
+ +1. _**Value**_: Select data to plot. You can choose a specific column from a DataFrame using the funnel icon. +2. _**User Option**_: Additional code beyond the functionalities provided by Visual Python can be added. + diff --git a/docs/visualization/4.-seaborn.md b/docs/visualization/4.-seaborn.md new file mode 100644 index 00000000..06a592ec --- /dev/null +++ b/docs/visualization/4.-seaborn.md @@ -0,0 +1,117 @@ +# 4. Seaborn + + + +
+ +1. Click on _**Seaborn**_ in the _**Visualization**_ category. + + + +
+ +2. You can use **Settings** _to_ set the basic style of the plots displayed. For detailed configuration, use the _**Chart Style**_ in the _**Visualization**_ category. +3. You can preview the plot to be displayed. In the top right corner, you can set the number of samples used for preview. + + + +*** + +[Data](4.-seaborn.md#data) + +[Axes](4.-seaborn.md#axes) + +[Info](4.-seaborn.md#info) + +[Style](4.-seaborn.md#style) + +[Code](4.-seaborn.md#code) + + + +*** + +### Data + + + +
+ +1. Choose the style of the chart. +2. _**Data**_: Select the data to be represented in the plot. You can use the _**Funnel Icon**_ to choose specific columns from the DataFrame. Check _**Set X and Y individually**_ to select the data separately for each axis. +3. _**User Option**_: Optionally provide additional desired options. + + + +\*The manual provided below may or may not exist depending on the type of chart. + +4. _**Hue**_: Further segment the data already selected for display based on another column or data. The data will be displayed in different colors based on the new criteria. +5. _**Bins**_: If the data you want to represent in the graph(_**Histogram**_) is continuous, you can express it by dividing it into a certain number of intervals. It will be represented by bars divided into a specified number of intervals. +6. _**KDE**_(Kernel Density Estimation): To smooth the shape of the graph(_**Histogram**_), use a density plot format. +7. _**Stat**_: Choose the meaning of each bar in the graph(_**Histogram**_). For example, if you choose the '_**Count**_', the height of each bar represents the number of data points in that interval. +8. _**Orient**_: Choose the direction of the graph(_**Bar Plot**_). +9. _**Annot**_: Choose whether to display data values in each cell of the graph(_**Heatmap**_). + + + +*** + +### Axes + + + +
+ +1. _**Limit**_: Defines the range of data to be represented on the X and Y axes. +2. _**Ticks:**_ Sets the ticks on the X and Y axes. + + (a) Specifies the positions where ticks will be displayed in the following format: + + \[0, 1, 2, 3] -> Four ticks will be drawn. + + (b) Sets the labels (Characters or Numbers) to be displayed as ticks in the following format: + + \['a', 'b', 'c', 'd'] -> The specified values will be displayed in order as ticks. + +3. _**Rotate**_: Rotates the ticks by the specified angle. Useful when text overlaps. + + + +*** + +### Info + + + +
+ +1. _**Title**_: Sets the title of the plot. The name is placed at the top center of the plot. +2. _**Labels**_: Sets the names of the X and Y axes. +3. _**Legend**_: Sets the position to display the legend. + + + +*** + +### Style + + + +
+ +1. _**Color**_: Enable the use of color and allow you to choose the color of the graph. +2. _**Grid**_: Select whether to use a grid. Color can also be assigned. +3. _**Marker**_: Choose the style of the marker. + + + +*** + +### Code + + + +
+ +1. Additional code beyond the functionalities provided by Visual Python can be added. + diff --git a/docs/visualization/5.-plotly.md b/docs/visualization/5.-plotly.md new file mode 100644 index 00000000..e42fc24d --- /dev/null +++ b/docs/visualization/5.-plotly.md @@ -0,0 +1,79 @@ +# 5. Plotly + + + +
+ +1. Select _**Plotly**_ in the _**Visualization**_ category. + + + +
+ +2. _**Import Package**_: Install the necessary packages(Plotly) for code execution. +3. _**Import Library**_: Import the libraries required for code execution. +4. _**Preview**_: Preview the chart that will be generated. +5. _**Code**_ _**View**_: Preview the code that will be generated. +6. _**Run**_: Execute the code. + + + +*** + +[Data](5.-plotly.md#data) + +[Info](5.-plotly.md#info) + +[Code](5.-plotly.md#code) + + + +*** + +### Data + + + +
+ + + +1. _**Chart Type**_: Select the type of chart. +2. _**Data**_: Choose the data to be represented in the chart. You can also select a specific column of a DataFrame through the _**Funnel Icon**_. _**Set X and Y Individually**_ allows selecting data from different DataFrames. +3. _**Axis Value**_: Select the data to be used on each axis. + + _**Values**_ (Pie Chart): Choose the data to represent the size of each section in a Pie Chart. + + _**Names**_ (Pie Chart): Choose the data to represent the names of each section in a Pie Chart. + + _**Parents**_ (Sunburst): The Sunburst chart represents hierarchical data in a circular form. Select the data indicating which parent section each segment belongs to. + +4. _**Color**_: Enable the use of color and choose the color of the graph. +5. _**Sort**_: Specify the order of categories on the X-axis. Descending arranges columns from the highest to the lowest amount of data. +6. _**User Option**_: Optionally provide additional desired options. + + + +*** + +### Info + + + +
+ +1. _**Title**_: Specify the title of the chart. +2. _**Label**_: Specify the names of each axis. + + + +*** + +### Code + + + +
+ +1. Additional code beyond the functionalities provided by Visual Python can be added. + diff --git a/docs/visualization/6.-wordcloud.md b/docs/visualization/6.-wordcloud.md new file mode 100644 index 00000000..ed6de600 --- /dev/null +++ b/docs/visualization/6.-wordcloud.md @@ -0,0 +1,67 @@ +# 6. WordCloud + + + +
+ +1. Click on the _**WordCloud**_ in the _**Visualization**_ category. + + + +
+ +2. Click on _**Install Package**_ and _**Import Library**_ to install or load the necessary packages for code execution. +3. _**Preview**_: the WordCloud that will be generated. +4. _**Code View**_: Preview the _**Code**_ that will be executed. +5. _**Run**_: Execute the code. + + + +*** + +[Data](6.-wordcloud.md#data) + +[WordCloud](6.-wordcloud.md#wordcloud) + +[Plot](6.-wordcloud.md#plot) + + + +*** + +### Data + + + +
+ +1. _**Data:**_ Select the Dataframe to be used for WordCloud. Alternatively, use the Funnel icon to choose specific columns. +2. Check _**Use File**_ to load a file than the one currently in memory for WordCloud. +3. Set the _**Number of Words**_ to be used in the WordCloud. + + + +*** + +### WordCloud + + + +
+ +1. _**Stop Words**_: Enter the words to be excluded from the WordCloud. +2. _**Font Path**_: Choose a font. +3. _**User Option**_: Optionally provide additional desired options. + + + +*** + +### Plot + + + +
+ +1. _**Figure Size**_: Set the size of the WordCloud Image to be generated. + diff --git a/jupyterlab/README.md b/jupyterlab/README.md index a03d89a5..6b4bcd90 100644 --- a/jupyterlab/README.md +++ b/jupyterlab/README.md @@ -47,7 +47,7 @@ pip install jupyterlab-visualpython Click orange square button on the right side of Jupyter Lab. -## Getting Started with Jupyter Notebook(>= 7.x) +## Getting Started with Jupyter Notebook 7 ### 1. Requirements @@ -66,13 +66,13 @@ pip install jupyterlab-visualpython Click orange square button on the toolbar of Jupyter Notebook. -## Getting Started with Jupyter Notebook(<=6.x.x) +## Getting Started with Jupyter Notebook (for 6.x.x and older version) ### 1. Requirements Visual Python is an extension to Jupyter Notebook, so you must have Jupyter Notebook installed already. You need old version of Jupyter Notebook under version 6.x.x.
- Python version 3.x -- Jupyter notebook environment <=6.x +- Jupyter notebook environment <= 6.x ### 2. How to Install @@ -152,6 +152,7 @@ All skills from programmers, non-programmers, designers are welcomed. [](https://github.com/llbtl) [](https://github.com/blacklogicdev) [](https://github.com/Minku-Koo) +[](https://github.com/8orrin9) Whoever wants to contribute or join our community,
You can contact us by creating issues on [Issue page](https://github.com/visualpython/visualpython/issues) or using [Discord server](https://discord.gg/PypQrBZWZv). @@ -171,4 +172,4 @@ To create an environment where everyone can learn and use big data analytical sk Love Visual Python?
Your support will help us continue to actively develop and improve Visual Python.☕ -[![donate_banner](https://user-images.githubusercontent.com/83636412/229679467-4fee93a2-d6d2-4229-a53c-80a5eb2b9240.png)](https://github.com/sponsors/visualpython?frequency=recurring) \ No newline at end of file +[![donate_banner](https://user-images.githubusercontent.com/83636412/229679467-4fee93a2-d6d2-4229-a53c-80a5eb2b9240.png)](https://github.com/sponsors/visualpython?frequency=recurring) diff --git a/jupyterlab/Untitled.ipynb b/jupyterlab/Untitled.ipynb new file mode 100644 index 00000000..f7fc91e8 --- /dev/null +++ b/jupyterlab/Untitled.ipynb @@ -0,0 +1,365 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "a891a0cd-ae74-4eaf-84fe-8072d65c83b2", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "db6f55ff-9ddc-4ec1-909b-9582d84f8186", + "metadata": {}, + "outputs": [], + "source": [ + "# Visual Python: Data Analysis > Import\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "e6648223-bd7a-4fcc-8beb-536030401ef6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sepal_lengthsepal_widthpetal_lengthpetal_widthvariety
05.13.51.40.2Setosa
14.93.01.40.2Setosa
24.73.21.30.2Setosa
34.63.11.50.2Setosa
45.03.61.40.2Setosa
..................
1456.73.05.22.3Virginica
1466.32.55.01.9Virginica
1476.53.05.22.0Virginica
1486.23.45.42.3Virginica
1495.93.05.11.8Virginica
\n", + "

150 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " sepal_length sepal_width petal_length petal_width variety\n", + "0 5.1 3.5 1.4 0.2 Setosa\n", + "1 4.9 3.0 1.4 0.2 Setosa\n", + "2 4.7 3.2 1.3 0.2 Setosa\n", + "3 4.6 3.1 1.5 0.2 Setosa\n", + "4 5.0 3.6 1.4 0.2 Setosa\n", + ".. ... ... ... ... ...\n", + "145 6.7 3.0 5.2 2.3 Virginica\n", + "146 6.3 2.5 5.0 1.9 Virginica\n", + "147 6.5 3.0 5.2 2.0 Virginica\n", + "148 6.2 3.4 5.4 2.3 Virginica\n", + "149 5.9 3.0 5.1 1.8 Virginica\n", + "\n", + "[150 rows x 5 columns]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Visual Python: Data Analysis > File\n", + "vp_df = pd.read_csv('https://raw.githubusercontent.com/visualpython/visualpython/main/visualpython/data/sample_csv/iris.csv')\n", + "vp_df" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "ae0842cc-baa6-44da-9be6-305ca89f739e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
varietysepal_lengthsepal_widthpetal_lengthpetal_width
0Setosa5.13.51.40.2
1Setosa4.93.01.40.2
2Setosa4.73.21.30.2
3Setosa4.63.11.50.2
4Setosa5.03.61.40.2
..................
145Virginica6.73.05.22.3
146Virginica6.32.55.01.9
147Virginica6.53.05.22.0
148Virginica6.23.45.42.3
149Virginica5.93.05.11.8
\n", + "

150 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " variety sepal_length sepal_width petal_length petal_width\n", + "0 Setosa 5.1 3.5 1.4 0.2\n", + "1 Setosa 4.9 3.0 1.4 0.2\n", + "2 Setosa 4.7 3.2 1.3 0.2\n", + "3 Setosa 4.6 3.1 1.5 0.2\n", + "4 Setosa 5.0 3.6 1.4 0.2\n", + ".. ... ... ... ... ...\n", + "145 Virginica 6.7 3.0 5.2 2.3\n", + "146 Virginica 6.3 2.5 5.0 1.9\n", + "147 Virginica 6.5 3.0 5.2 2.0\n", + "148 Virginica 6.2 3.4 5.4 2.3\n", + "149 Virginica 5.9 3.0 5.1 1.8\n", + "\n", + "[150 rows x 5 columns]" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Visual Python: Data Analysis > Frame\n", + "vp_df = vp_df.copy()\n", + "vp_df['variety'] = vp_df['variety'].shift(1)\n", + "vp_df.set_index(['variety'], inplace=True)\n", + "vp_df.reset_index(inplace=True)\n", + "vp_df['variety'] = vp_df['variety'].shift(2)\n", + "vp_df['variety'] = vp_df['variety'].fillna(vp_df['variety'].mode()[0])\n", + "vp_df" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/jupyterlab/build.jupyterlab.sh b/jupyterlab/build.jupyterlab.sh index aa69f497..aaee502a 100755 --- a/jupyterlab/build.jupyterlab.sh +++ b/jupyterlab/build.jupyterlab.sh @@ -11,8 +11,8 @@ #============================================================================= # Replace Version and Basic Files #============================================================================= -VP_ORG_VER=2.5.0 -VP_NEW_VER=3.0.0 +VP_ORG_VER=3.0.1 +VP_NEW_VER=3.0.2 # update version info grep -REil "\"version\": \"${VP_ORG_VER}\"" package.json | xargs sed -i "s/\"version\": \"${VP_ORG_VER//\./\\.}\"/\"version\": \"${VP_NEW_VER}\"/g" diff --git a/jupyterlab/dev-build.jupyterlab.sh b/jupyterlab/dev-build.jupyterlab.sh index 7ebac489..5c926d40 100755 --- a/jupyterlab/dev-build.jupyterlab.sh +++ b/jupyterlab/dev-build.jupyterlab.sh @@ -16,7 +16,10 @@ rm -rf lib/visualpython cp -r ../visualpython lib/visualpython # convert text-loader, raw-loader, css-loader -grep -rl "__VP_TEXT_LOADER__" lib/visualpython/js/* | xargs sed -i "s/__VP_TEXT_LOADER__('\(.\+\)')\(.\+$\)/'!!text-loader!\1'\2/g" +# __VP_TEXT_LOADER__('vp/path/textfile'), -> '!!text-loader!vp/path/textfile', +# __VP_RAW_LOADER('vp/path/rawfile.json'), -> 'vp/path/rawfile.json', +# __VP_CSS_LOADER('vp/path/cssfile'), -> 'vp/path/cssfile.css', +grep -rl "__VP_TEXT_LOADER__" lib/visualpython/js/* | xargs sed -i "s/__VP_TEXT_LOADER__('\(.\+\)')\(.\+$\)/'\!\!text-loader\!\1'\2/g" grep -rl "__VP_RAW_LOADER__" lib/visualpython/js/* | xargs sed -i "s/__VP_RAW_LOADER__('\(.\+\)')\(.\+$\)/'\1'\2/g" grep -rl "__VP_CSS_LOADER__" lib/visualpython/js/* | xargs sed -i "s/__VP_CSS_LOADER__('\(.\+\)')\(.\+$\)/'\1.css'\2/g" diff --git a/jupyterlab/package-lock.json b/jupyterlab/package-lock.json index d166e82c..f1b79d4f 100644 --- a/jupyterlab/package-lock.json +++ b/jupyterlab/package-lock.json @@ -1,18 +1,19 @@ { "name": "jupyterlab-visualpython", - "version": "3.0.0", + "version": "3.0.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "jupyterlab-visualpython", - "version": "3.0.0", + "version": "3.0.2", "license": "GPLv3 with Visual Python special exception", "dependencies": { "@jupyterlab/application": "^4.1.0-alpha.2", "@jupyterlab/cells": "^4.0.5", "@jupyterlab/notebook": "^4.0.5", "@jupyterlab/ui-components": "^4.0.5", + "css-loader": "^6.7.1", "jquery": "^3.6.3", "jquery-ui": "^1.13.2", "jquery-ui-bundle": "^1.12.1-migrate", diff --git a/jupyterlab/package.json b/jupyterlab/package.json index 50efd736..16ce1cb3 100644 --- a/jupyterlab/package.json +++ b/jupyterlab/package.json @@ -1,6 +1,6 @@ { "name": "jupyterlab-visualpython", - "version": "3.0.0", + "version": "3.0.2", "description": "GUI-based Python code generator for Jupyter Lab as an extension", "keywords": [ "jupyter", @@ -44,6 +44,7 @@ "@jupyterlab/cells": "^4.0.5", "@jupyterlab/notebook": "^4.0.5", "@jupyterlab/ui-components": "^4.0.5", + "css-loader": "^6.7.1", "jquery": "^3.6.3", "jquery-ui": "^1.13.2", "jquery-ui-bundle": "^1.12.1-migrate", diff --git a/jupyterlab/pyproject.toml b/jupyterlab/pyproject.toml index 11405098..327b3256 100644 --- a/jupyterlab/pyproject.toml +++ b/jupyterlab/pyproject.toml @@ -32,9 +32,13 @@ source = "nodejs" fields = ["description", "authors", "urls"] [tool.hatch.build.targets.sdist] +ignore-vcs = true artifacts = ["jupyterlab-visualpython/labextension"] exclude = [".github", "binder", "build.jupyterlab.sh", "dev-build.jupyterlab.sh"] +[tool.hatch.build.targets.wheel] +only-include = ["jupyterlab-visualpython", "lib", "install.json"] + [tool.hatch.build.targets.wheel.shared-data] "jupyterlab-visualpython/labextension" = "share/jupyter/labextensions/jupyterlab-visualpython" "install.json" = "share/jupyter/labextensions/jupyterlab-visualpython/install.json" diff --git a/jupyterlab/yarn.lock b/jupyterlab/yarn.lock index ecfc9ee1..7f25c3af 100644 --- a/jupyterlab/yarn.lock +++ b/jupyterlab/yarn.lock @@ -6,31 +6,31 @@ __metadata: cacheKey: 8 "@codemirror/autocomplete@npm:^6.0.0, @codemirror/autocomplete@npm:^6.3.2, @codemirror/autocomplete@npm:^6.5.1, @codemirror/autocomplete@npm:^6.7.1": - version: 6.10.2 - resolution: "@codemirror/autocomplete@npm:6.10.2" + version: 6.9.0 + resolution: "@codemirror/autocomplete@npm:6.9.0" dependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 - "@codemirror/view": ^6.17.0 + "@codemirror/view": ^6.6.0 "@lezer/common": ^1.0.0 peerDependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 - checksum: 360cea6a87ae9c4e3c996903f636a8f47f8ea6cd44504181e69dd8ccf666bad3e8cc6d8935e0eedd8aa118fdfe86ea78f41bc15288f3a7517dbb87115e057563 + checksum: a5f661944c75f40b02c90a193c9a459c0fd7e335c0ac5973420c19157dfb46010f573c2b70731591fe477e7a2ad10121ff3ae394a72d450946d7b886c28b0368 languageName: node linkType: hard "@codemirror/commands@npm:^6.2.3": - version: 6.3.0 - resolution: "@codemirror/commands@npm:6.3.0" + version: 6.2.5 + resolution: "@codemirror/commands@npm:6.2.5" dependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.0.0 - "@lezer/common": ^1.1.0 - checksum: d6ade0ba7d4f80c2e44163935783d2f2f35c8b641a4b4f62452c0630211670abe5093786cf5a4af14147102d4284dae660a26f3ae58fd840e838685a81107d11 + "@lezer/common": ^1.0.0 + checksum: 6d373bcfd4337160243e1493c8703a8e367e208811742331679a6410a3645de36ae8a5664e11790fec521137b45f34d703e9292932a98c4de10139510f3f29a3 languageName: node linkType: hard @@ -110,8 +110,8 @@ __metadata: linkType: hard "@codemirror/lang-markdown@npm:^6.1.1": - version: 6.2.2 - resolution: "@codemirror/lang-markdown@npm:6.2.2" + version: 6.2.0 + resolution: "@codemirror/lang-markdown@npm:6.2.0" dependencies: "@codemirror/autocomplete": ^6.7.1 "@codemirror/lang-html": ^6.0.0 @@ -120,7 +120,7 @@ __metadata: "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 "@lezer/markdown": ^1.0.0 - checksum: 36aa82a4fc07e5761e0e04108b54f112f0049ed210b3d4e81b7429a99be4677a1f9ef0e004c5243265dca3bac36525792cb1558999f6a224c689475e958d4aa8 + checksum: 0b2b5334abc8bb46fdaf0723fcddb9565b89c58d245ee0cced2c62c9c5de8430ad8bd73ab92d8a6bd67130173b59006bec2922e614e0277aa2b2d62f308113cf languageName: node linkType: hard @@ -196,16 +196,16 @@ __metadata: linkType: hard "@codemirror/language@npm:^6.0.0, @codemirror/language@npm:^6.3.0, @codemirror/language@npm:^6.4.0, @codemirror/language@npm:^6.6.0, @codemirror/language@npm:^6.8.0": - version: 6.9.1 - resolution: "@codemirror/language@npm:6.9.1" + version: 6.9.0 + resolution: "@codemirror/language@npm:6.9.0" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 - "@lezer/common": ^1.1.0 + "@lezer/common": ^1.0.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 style-mod: ^4.0.0 - checksum: 62265f1042d2edfd3a091c408d9d0071f23889099b2f6ce8275fa910118bd2c45b8c4b29228c7be6e6d5f0e0812a522de902bc75ba8d8b2e62e42ade1692a49a + checksum: 9a897fb0f569159eeafb7dce83061b425af7244bbeae2649e0e677488548b2a02eaf0c13c0c5b4d59da55e8866e6f4dc7abe3dfaa09c13749a2fa2c0dbc0c565 languageName: node linkType: hard @@ -219,42 +219,42 @@ __metadata: linkType: hard "@codemirror/lint@npm:^6.0.0": - version: 6.4.2 - resolution: "@codemirror/lint@npm:6.4.2" + version: 6.4.1 + resolution: "@codemirror/lint@npm:6.4.1" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 crelt: ^1.0.5 - checksum: 5e699960c1b28dbaa584fe091a3201978907bf4b9e52810fb15d3ceaf310e38053435e0b594da0985266ae812039a5cd6c36023284a6f8568664bdca04db137f + checksum: ac8120ca96b5ef57abd2705b2620c15c7449b5056bca87053480e244c6772863e1537387a863cfb784f9f2af2c8b30be78a31660d96a815672059085beb51fd5 languageName: node linkType: hard "@codemirror/search@npm:^6.3.0": - version: 6.5.4 - resolution: "@codemirror/search@npm:6.5.4" + version: 6.5.2 + resolution: "@codemirror/search@npm:6.5.2" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 crelt: ^1.0.5 - checksum: 32a68e40486730949ee79f54b9fcc6c744559aef188d3c5bf82881f62e5fc9468fa21cf227507638160043c797eb054205802a649cf4a2350928fc161d5aac40 + checksum: bc535151277fda0a370ac496b9b0d5751fd91bd8e3eb29dafbfe6bf3125dc450a7e361ebc302f0ebc4193ac337bdf555ab3d5ec753dbb44452225618a5630dd3 languageName: node linkType: hard "@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.1.4, @codemirror/state@npm:^6.2.0": - version: 6.3.0 - resolution: "@codemirror/state@npm:6.3.0" - checksum: 9d595464488e37375de8548c8f705fa737dc7e7540576810febeabb1d216b025907042f65b6ce5907964bf97ec5fb266082958a3af083ef1cd44b8c111d66ee8 + version: 6.2.1 + resolution: "@codemirror/state@npm:6.2.1" + checksum: d12a321d0471b264b9d3259042bff913a8b939e8d28d408ff452004538a71ca9d5329df3f8a1d8a9183f5b42a7ef5b200737bcab1065714f5ae8e0a5ba9d59d3 languageName: node linkType: hard -"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.9.6": - version: 6.21.3 - resolution: "@codemirror/view@npm:6.21.3" +"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.6.0, @codemirror/view@npm:^6.9.6": + version: 6.17.1 + resolution: "@codemirror/view@npm:6.17.1" dependencies: "@codemirror/state": ^6.1.4 style-mod: ^4.1.0 w3c-keyname: ^2.2.4 - checksum: 7fda5a60e04fe1ac3d22ee478d4a90fc307953b8c900752ef5ca33af06c4e7851356e460f14b05034230b3a1677f36379ea01d85a3ea3b3a3e85e871ed62346a + checksum: b70a50632817c75b39f60f1a962206e64787fc58fc7b1d6ce883dc2302d4dcfe077003c9c307358791c1150c96ae623140f069537a6b705f1c3526b2e41954a5 languageName: node linkType: hard @@ -297,10 +297,10 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:^3.1.0": - version: 3.1.1 - resolution: "@jridgewell/resolve-uri@npm:3.1.1" - checksum: f5b441fe7900eab4f9155b3b93f9800a916257f4e8563afbcd3b5a5337b55e52bd8ae6735453b1b745457d9f6cdb16d74cd6220bbdd98cf153239e13f6cbb653 +"@jridgewell/resolve-uri@npm:3.1.0": + version: 3.1.0 + resolution: "@jridgewell/resolve-uri@npm:3.1.0" + checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 languageName: node linkType: hard @@ -321,20 +321,20 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": - version: 1.4.15 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" - checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 +"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": + version: 1.4.14 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" + checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 languageName: node linkType: hard "@jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.19 - resolution: "@jridgewell/trace-mapping@npm:0.3.19" + version: 0.3.17 + resolution: "@jridgewell/trace-mapping@npm:0.3.17" dependencies: - "@jridgewell/resolve-uri": ^3.1.0 - "@jridgewell/sourcemap-codec": ^1.4.14 - checksum: 956a6f0f6fec060fb48c6bf1f5ec2064e13cd38c8be3873877d4b92b4a27ba58289a34071752671262a3e3c202abcc3fa2aac64d8447b4b0fa1ba3c9047f1c20 + "@jridgewell/resolve-uri": 3.1.0 + "@jridgewell/sourcemap-codec": 1.4.14 + checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339 languageName: node linkType: hard @@ -380,19 +380,19 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/apputils@npm:^4.1.7": - version: 4.1.7 - resolution: "@jupyterlab/apputils@npm:4.1.7" +"@jupyterlab/apputils@npm:^4.1.5": + version: 4.1.5 + resolution: "@jupyterlab/apputils@npm:4.1.5" dependencies: - "@jupyterlab/coreutils": ^6.0.7 - "@jupyterlab/observables": ^5.0.7 - "@jupyterlab/rendermime-interfaces": ^3.8.7 - "@jupyterlab/services": ^7.0.7 - "@jupyterlab/settingregistry": ^4.0.7 - "@jupyterlab/statedb": ^4.0.7 - "@jupyterlab/statusbar": ^4.0.7 - "@jupyterlab/translation": ^4.0.7 - "@jupyterlab/ui-components": ^4.0.7 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime-interfaces": ^3.8.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/settingregistry": ^4.0.5 + "@jupyterlab/statedb": ^4.0.5 + "@jupyterlab/statusbar": ^4.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.1.3 "@lumino/coreutils": ^2.1.2 @@ -405,7 +405,7 @@ __metadata: "@types/react": ^18.0.26 react: ^18.2.0 sanitize-html: ~2.7.3 - checksum: d8a3739ea4b74244b0e14e6a9bced973cc2fc8eb645fe25d36da960e3413492c5451332f44975ba601daecbe6b1e80073f36860f65482da16e94ed24f11a5947 + checksum: b569303e8b38173de8612a3c04bac349f25c151bbb83b4f594311d679896aed37ba1467e9ff123e605c0d5400c89cf0d66fce697440ea07fff9dd4a408148e2f languageName: node linkType: hard @@ -438,23 +438,23 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/attachments@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/attachments@npm:4.0.7" +"@jupyterlab/attachments@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/attachments@npm:4.0.5" dependencies: - "@jupyterlab/nbformat": ^4.0.7 - "@jupyterlab/observables": ^5.0.7 - "@jupyterlab/rendermime": ^4.0.7 - "@jupyterlab/rendermime-interfaces": ^3.8.7 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime": ^4.0.5 + "@jupyterlab/rendermime-interfaces": ^3.8.5 "@lumino/disposable": ^2.1.2 "@lumino/signaling": ^2.1.2 - checksum: ff118f55b8fbf08d112aef9f1f9867a6310578afacff9953af3c30205d338ed88bc44204112597bd325bc6b2eeb88e5f901187628e869853c9e9b5c2b77e4eb8 + checksum: bb0a5dc7e830fc42824743cc817cf59a43c43b6f3979b3d6214619baf69f77bb70606241b39a92da21788348eb1144a0914e3683f0b2b8d01a530e8aeaf6f01e languageName: node linkType: hard "@jupyterlab/builder@npm:^4.0.0": - version: 4.0.7 - resolution: "@jupyterlab/builder@npm:4.0.7" + version: 4.0.5 + resolution: "@jupyterlab/builder@npm:4.0.5" dependencies: "@lumino/algorithm": ^2.0.1 "@lumino/application": ^2.2.1 @@ -489,32 +489,32 @@ __metadata: worker-loader: ^3.0.2 bin: build-labextension: lib/build-labextension.js - checksum: 67b034c7843a41f63b314304a224480583d02b4d958fd874b3ea4b7fd9a2ec8df110edaaf0379937a7a1850cb19cf1178fbbadfe535f3dbd9acdc0c3a96b8f8a + checksum: 60b12e784881a16a3d2c794b0edfaea85e5da0b84f1a751564741df665c0bfcea8baabb91e5c061461fc431a8a5570e837cbf7692b39935b0df7fe87e1c0f213 languageName: node linkType: hard -"@jupyterlab/cells@npm:^4.0.5, @jupyterlab/cells@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/cells@npm:4.0.7" +"@jupyterlab/cells@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/cells@npm:4.0.5" dependencies: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.0.2 - "@jupyterlab/apputils": ^4.1.7 - "@jupyterlab/attachments": ^4.0.7 - "@jupyterlab/codeeditor": ^4.0.7 - "@jupyterlab/codemirror": ^4.0.7 - "@jupyterlab/coreutils": ^6.0.7 - "@jupyterlab/documentsearch": ^4.0.7 - "@jupyterlab/filebrowser": ^4.0.7 - "@jupyterlab/nbformat": ^4.0.7 - "@jupyterlab/observables": ^5.0.7 - "@jupyterlab/outputarea": ^4.0.7 - "@jupyterlab/rendermime": ^4.0.7 - "@jupyterlab/services": ^7.0.7 - "@jupyterlab/toc": ^6.0.7 - "@jupyterlab/translation": ^4.0.7 - "@jupyterlab/ui-components": ^4.0.7 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/attachments": ^4.0.5 + "@jupyterlab/codeeditor": ^4.0.5 + "@jupyterlab/codemirror": ^4.0.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/documentsearch": ^4.0.5 + "@jupyterlab/filebrowser": ^4.0.5 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/outputarea": ^4.0.5 + "@jupyterlab/rendermime": ^4.0.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/toc": ^6.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/domutils": ^2.0.1 @@ -525,22 +525,22 @@ __metadata: "@lumino/virtualdom": ^2.0.1 "@lumino/widgets": ^2.3.0 react: ^18.2.0 - checksum: 3b986c3fb734031ce998e7a67208d06b0c0892a972db1d8123767bdcc9e14109f7e79be3f116f788bcfc2194e7a5a14d5918671c9021b9de51e82ca7f0421436 + checksum: d674a15ddf870bea876d8b40ec598bbe9ba6d59b653223b381beec7e4e1e18c1b2c623585a9edc24e186dc666d73c63c55cee76ec83f975183f17bb5a56a8573 languageName: node linkType: hard -"@jupyterlab/codeeditor@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/codeeditor@npm:4.0.7" +"@jupyterlab/codeeditor@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/codeeditor@npm:4.0.5" dependencies: "@codemirror/state": ^6.2.0 "@jupyter/ydoc": ^1.0.2 - "@jupyterlab/coreutils": ^6.0.7 - "@jupyterlab/nbformat": ^4.0.7 - "@jupyterlab/observables": ^5.0.7 - "@jupyterlab/statusbar": ^4.0.7 - "@jupyterlab/translation": ^4.0.7 - "@jupyterlab/ui-components": ^4.0.7 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/statusbar": ^4.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/dragdrop": ^2.1.3 @@ -548,7 +548,7 @@ __metadata: "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.0 react: ^18.2.0 - checksum: d6c1c072b77f0afdc4c61ed9392297b43afa5ef0a3279e05631ead870122f9195eb9d5b6182b1ee984aa4fa7aee56051e710d601c550e43af27d43fc3397c333 + checksum: 4bd539cd22ccf84b982b427ad921b33f0e4dd0c02980827b59bf748b30c6e85180e03357f92c2a2b54c3e086965d2458b6a5f2043160ede85f530a14300b3f00 languageName: node linkType: hard @@ -575,9 +575,9 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/codemirror@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/codemirror@npm:4.0.7" +"@jupyterlab/codemirror@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/codemirror@npm:4.0.5" dependencies: "@codemirror/autocomplete": ^6.5.1 "@codemirror/commands": ^6.2.3 @@ -600,11 +600,11 @@ __metadata: "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.9.6 "@jupyter/ydoc": ^1.0.2 - "@jupyterlab/codeeditor": ^4.0.7 - "@jupyterlab/coreutils": ^6.0.7 - "@jupyterlab/documentsearch": ^4.0.7 - "@jupyterlab/nbformat": ^4.0.7 - "@jupyterlab/translation": ^4.0.7 + "@jupyterlab/codeeditor": ^4.0.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/documentsearch": ^4.0.5 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/translation": ^4.0.5 "@lezer/common": ^1.0.2 "@lezer/generator": ^1.2.2 "@lezer/highlight": ^1.1.4 @@ -613,13 +613,13 @@ __metadata: "@lumino/disposable": ^2.1.2 "@lumino/signaling": ^2.1.2 yjs: ^13.5.40 - checksum: 8b813dc5144a5adbfd535fe4c817ba96a2c123e60999674ea60ac207fa2b7d06d34314b46bf07564b9c6ca3c21077c5ee34279a857c9191b3133a488f0bf1c22 + checksum: 840d9abd7c34ce7fb09446eff235e056e2d04da290f83380c020a9c3e2a1a27c0d3fc7ffcbd54a1f6de6325a57cc18d350d30c61a0f27d9810d8d2ec32aa5cf2 languageName: node linkType: hard -"@jupyterlab/coreutils@npm:^6.0.7": - version: 6.0.7 - resolution: "@jupyterlab/coreutils@npm:6.0.7" +"@jupyterlab/coreutils@npm:^6.0.5": + version: 6.0.5 + resolution: "@jupyterlab/coreutils@npm:6.0.5" dependencies: "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -627,7 +627,7 @@ __metadata: minimist: ~1.2.0 path-browserify: ^1.0.0 url-parse: ~1.5.4 - checksum: 18a14e0bc957bf087c3de3e86c5dc7ee568027906edf5dc820d9c794af6c9dece84d0b396e837786849f9144bb156746e3d4f2e838fd023a42eee94ebeb9014f + checksum: c09be7c8f389bb7f019fb868acfc528a0bc553a7b091412b7e0bfb1d0f2c71223ada8d6972d42df25fb6f70be21ecac00703e12d1df62a44dc2a512baac54dac languageName: node linkType: hard @@ -645,17 +645,17 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/docmanager@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/docmanager@npm:4.0.7" +"@jupyterlab/docmanager@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/docmanager@npm:4.0.5" dependencies: - "@jupyterlab/apputils": ^4.1.7 - "@jupyterlab/coreutils": ^6.0.7 - "@jupyterlab/docregistry": ^4.0.7 - "@jupyterlab/services": ^7.0.7 - "@jupyterlab/statusbar": ^4.0.7 - "@jupyterlab/translation": ^4.0.7 - "@jupyterlab/ui-components": ^4.0.7 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/docregistry": ^4.0.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/statusbar": ^4.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -664,24 +664,24 @@ __metadata: "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.0 react: ^18.2.0 - checksum: 4ccbcfa431563cb0cdfa12d0f1ffed107816b8bcd420de5b6dc85e6c124ff1f691e72ce421102663880dc340717bfb71bdceb25eb8fc4074e08adb58ae6ba371 + checksum: 16627833d9d540e9569bd27e3464c6c9a5cf9f628265b5018a4f63e05f351c4891494b8c731f83bb279da3bb42d0da23cb1d1b536c0b1b4422e4f6f250377ca5 languageName: node linkType: hard -"@jupyterlab/docregistry@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/docregistry@npm:4.0.7" +"@jupyterlab/docregistry@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/docregistry@npm:4.0.5" dependencies: "@jupyter/ydoc": ^1.0.2 - "@jupyterlab/apputils": ^4.1.7 - "@jupyterlab/codeeditor": ^4.0.7 - "@jupyterlab/coreutils": ^6.0.7 - "@jupyterlab/observables": ^5.0.7 - "@jupyterlab/rendermime": ^4.0.7 - "@jupyterlab/rendermime-interfaces": ^3.8.7 - "@jupyterlab/services": ^7.0.7 - "@jupyterlab/translation": ^4.0.7 - "@jupyterlab/ui-components": ^4.0.7 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/codeeditor": ^4.0.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime": ^4.0.5 + "@jupyterlab/rendermime-interfaces": ^3.8.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -689,7 +689,7 @@ __metadata: "@lumino/properties": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.0 - checksum: 1d420696305dc17b2e96b22bf31af2caf2b16e31529c57b824bf859c71ac5caecb5a0a00d32ebc34ca1af65f720cec2c442d786c0460da60d7f65deb402dd891 + checksum: 455286f8fbeb00f7afcc52c43830d6ab6941020338df23564591a0a59e1b2551f918a55382540983a1bf0b1bf4bdfc008b88f5acbff4a2e3c5dca6ac1dd84a6d languageName: node linkType: hard @@ -719,13 +719,13 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/documentsearch@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/documentsearch@npm:4.0.7" +"@jupyterlab/documentsearch@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/documentsearch@npm:4.0.5" dependencies: - "@jupyterlab/apputils": ^4.1.7 - "@jupyterlab/translation": ^4.0.7 - "@jupyterlab/ui-components": ^4.0.7 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/messaging": ^2.0.1 @@ -733,23 +733,23 @@ __metadata: "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.0 react: ^18.2.0 - checksum: 96f51844b22a2c8e234c85e32915a9af41a54d5bd21a49de63d37181083089c84d18265c14d7d8d5adeb460771ba044e87caafdb82fd0e805837a23d56aa2fe3 + checksum: d7fe83a57562e9f90555c8b938f77edff21f7204b52a7cdd4a0cd21f5382fd5a7906e5d7c2ec661802b5d9bada42f80fcaa5d129931aeac949e8655d290d9adf languageName: node linkType: hard -"@jupyterlab/filebrowser@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/filebrowser@npm:4.0.7" +"@jupyterlab/filebrowser@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/filebrowser@npm:4.0.5" dependencies: - "@jupyterlab/apputils": ^4.1.7 - "@jupyterlab/coreutils": ^6.0.7 - "@jupyterlab/docmanager": ^4.0.7 - "@jupyterlab/docregistry": ^4.0.7 - "@jupyterlab/services": ^7.0.7 - "@jupyterlab/statedb": ^4.0.7 - "@jupyterlab/statusbar": ^4.0.7 - "@jupyterlab/translation": ^4.0.7 - "@jupyterlab/ui-components": ^4.0.7 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/docmanager": ^4.0.5 + "@jupyterlab/docregistry": ^4.0.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/statedb": ^4.0.5 + "@jupyterlab/statusbar": ^4.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -761,20 +761,20 @@ __metadata: "@lumino/virtualdom": ^2.0.1 "@lumino/widgets": ^2.3.0 react: ^18.2.0 - checksum: 586b8a07fbe0a9bb0b0cd13a9d6fb083e797831a41fc5273d70124bb2daeeeb641e6b4584fc752a4799a5961bb14acc1379fd09847ef7f38b2908516b9f254e3 + checksum: f47d55cc8ff246efe65fdbf1f0fc09e227eca9bafcf0f1e45e1973612ad13e0853f1393882decddc2f1df015f11097b6d751bdbcdc255ed438adc96598b376a8 languageName: node linkType: hard -"@jupyterlab/lsp@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/lsp@npm:4.0.7" +"@jupyterlab/lsp@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/lsp@npm:4.0.5" dependencies: - "@jupyterlab/apputils": ^4.1.7 - "@jupyterlab/codeeditor": ^4.0.7 - "@jupyterlab/coreutils": ^6.0.7 - "@jupyterlab/docregistry": ^4.0.7 - "@jupyterlab/services": ^7.0.7 - "@jupyterlab/translation": ^4.0.7 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/codeeditor": ^4.0.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/docregistry": ^4.0.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/translation": ^4.0.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/signaling": ^2.1.2 @@ -782,16 +782,16 @@ __metadata: vscode-jsonrpc: ^6.0.0 vscode-languageserver-protocol: ^3.17.0 vscode-ws-jsonrpc: ~1.0.2 - checksum: a038fb51648b082652850e8a7190e0b9726be3be3b478258954a7a119df78df1b97182c53a4c8e6adb3ca22dbeaf2f5a40935b916a7dccb99952ebe44e112d9c + checksum: b59d21c9df84963c354422134e525acabab7f7fe2930e4bb5b5b81edd3e8397772ce5c395bc1faa7c79cddb6bfefc9e1c41edfd939241681da483ae3238be00d languageName: node linkType: hard -"@jupyterlab/nbformat@npm:^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0, @jupyterlab/nbformat@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/nbformat@npm:4.0.7" +"@jupyterlab/nbformat@npm:^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0, @jupyterlab/nbformat@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/nbformat@npm:4.0.5" dependencies: "@lumino/coreutils": ^2.1.2 - checksum: 32a14a6a3e6d068fa34aec385090531100170480869681156dfb510ea9154141277e678031a0df770af8ae5a0f06dc7c00570089c9187485552e1aeba5130ca8 + checksum: 51611e95e6b16dc3e952b731e0ef036d1e0f7eec497555e3bf8394f181da4184dc37c6b25a1b11b5ea031f22fd4b9602fb6a2e675d65fddc2ccb099236cf3e01 languageName: node linkType: hard @@ -805,27 +805,27 @@ __metadata: linkType: hard "@jupyterlab/notebook@npm:^4.0.5": - version: 4.0.7 - resolution: "@jupyterlab/notebook@npm:4.0.7" + version: 4.0.5 + resolution: "@jupyterlab/notebook@npm:4.0.5" dependencies: "@jupyter/ydoc": ^1.0.2 - "@jupyterlab/apputils": ^4.1.7 - "@jupyterlab/cells": ^4.0.7 - "@jupyterlab/codeeditor": ^4.0.7 - "@jupyterlab/codemirror": ^4.0.7 - "@jupyterlab/coreutils": ^6.0.7 - "@jupyterlab/docregistry": ^4.0.7 - "@jupyterlab/documentsearch": ^4.0.7 - "@jupyterlab/lsp": ^4.0.7 - "@jupyterlab/nbformat": ^4.0.7 - "@jupyterlab/observables": ^5.0.7 - "@jupyterlab/rendermime": ^4.0.7 - "@jupyterlab/services": ^7.0.7 - "@jupyterlab/settingregistry": ^4.0.7 - "@jupyterlab/statusbar": ^4.0.7 - "@jupyterlab/toc": ^6.0.7 - "@jupyterlab/translation": ^4.0.7 - "@jupyterlab/ui-components": ^4.0.7 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/cells": ^4.0.5 + "@jupyterlab/codeeditor": ^4.0.5 + "@jupyterlab/codemirror": ^4.0.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/docregistry": ^4.0.5 + "@jupyterlab/documentsearch": ^4.0.5 + "@jupyterlab/lsp": ^4.0.5 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime": ^4.0.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/settingregistry": ^4.0.5 + "@jupyterlab/statusbar": ^4.0.5 + "@jupyterlab/toc": ^6.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/domutils": ^2.0.1 @@ -836,20 +836,20 @@ __metadata: "@lumino/virtualdom": ^2.0.1 "@lumino/widgets": ^2.3.0 react: ^18.2.0 - checksum: 75fe89a1c59d47cb861a66b1c36d5e22593e93b8e0f8b3195e43e79e67e87542ccc00f245f3cdbd55617f889f1f7baa0a868d6be7d8fcfdc6ccab53e93f69bf4 + checksum: c6979a1b3cc1a6e4eb82176d97bc2109f8f3bcf6b281853a6fb8d350e66fa443dcd34981d46b0aebb03356e6533956dd4ad233e6dee9198acbd62b9c6f027bcd languageName: node linkType: hard -"@jupyterlab/observables@npm:^5.0.7": - version: 5.0.7 - resolution: "@jupyterlab/observables@npm:5.0.7" +"@jupyterlab/observables@npm:^5.0.5": + version: 5.0.5 + resolution: "@jupyterlab/observables@npm:5.0.5" dependencies: "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 - checksum: 459ec3ec77a12534cd16864892d8d3af3ead32a56956daeb89ab68e16c53651c8f20021e088e5a601b214eed46398bbbaea8bc3dc23f23b2700660558fa7c317 + checksum: e94d5a187a356f19db176d16a93e2b380c245a8bcf54eb283b405fc9a39cc937b790a0684defadd0eb103359838751d0184c23c5816c5fc36b86c90e2cbb96b9 languageName: node linkType: hard @@ -866,17 +866,17 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/outputarea@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/outputarea@npm:4.0.7" +"@jupyterlab/outputarea@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/outputarea@npm:4.0.5" dependencies: - "@jupyterlab/apputils": ^4.1.7 - "@jupyterlab/nbformat": ^4.0.7 - "@jupyterlab/observables": ^5.0.7 - "@jupyterlab/rendermime": ^4.0.7 - "@jupyterlab/rendermime-interfaces": ^3.8.7 - "@jupyterlab/services": ^7.0.7 - "@jupyterlab/translation": ^4.0.7 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime": ^4.0.5 + "@jupyterlab/rendermime-interfaces": ^3.8.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/translation": ^4.0.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -884,37 +884,37 @@ __metadata: "@lumino/properties": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.0 - checksum: ea5ff9052408a117f5a74ce5c3938cda53f88d3dd227bea330cf042b69094c17d33d0b64d556f31b763bfe352bde29dc977cdaab69337159f0c9d9301e50a632 + checksum: fc7f49b09ad8104fd0ac022366877eee228beb63f237afa76e785e170cb17e9ae18a686e7ac09f5f74bf25735ebc089812ea9374cc7920f4a0a641b9d565a046 languageName: node linkType: hard -"@jupyterlab/rendermime-interfaces@npm:^3.8.3-alpha.1, @jupyterlab/rendermime-interfaces@npm:^3.8.7": - version: 3.8.7 - resolution: "@jupyterlab/rendermime-interfaces@npm:3.8.7" +"@jupyterlab/rendermime-interfaces@npm:^3.8.3-alpha.1, @jupyterlab/rendermime-interfaces@npm:^3.8.5": + version: 3.8.5 + resolution: "@jupyterlab/rendermime-interfaces@npm:3.8.5" dependencies: "@lumino/coreutils": ^1.11.0 || ^2.1.2 "@lumino/widgets": ^1.37.2 || ^2.3.0 - checksum: 8095fc99f89e49ef6793e37d7864511cc182fd2260219d3fe94dc974ac34411d4daf898f237279bd5e097aea19cca04196356bf31bd774e94c77b54894baf71b + checksum: 3824c1aa0fa4b946211fd342ff73b0ebc7722dfeaf9794a8c64740dcc53151c0e6b81468f92d83fbe9a6da75d54fe4b176bd3ec98e1a526b50bbc0f91057c1aa languageName: node linkType: hard -"@jupyterlab/rendermime@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/rendermime@npm:4.0.7" +"@jupyterlab/rendermime@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/rendermime@npm:4.0.5" dependencies: - "@jupyterlab/apputils": ^4.1.7 - "@jupyterlab/coreutils": ^6.0.7 - "@jupyterlab/nbformat": ^4.0.7 - "@jupyterlab/observables": ^5.0.7 - "@jupyterlab/rendermime-interfaces": ^3.8.7 - "@jupyterlab/services": ^7.0.7 - "@jupyterlab/translation": ^4.0.7 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime-interfaces": ^3.8.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/translation": ^4.0.5 "@lumino/coreutils": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.0 lodash.escape: ^4.0.1 - checksum: 8e7bc7dc8d569fa8748783d0d23b716deb64af530d2f6861f6a08fe66ace5ff0d75e3cc67eb4ebb50b2089574917fe0b65da0dcf5368c3539fdb78f595560885 + checksum: 472e25ebdee77599a90fef33402ef7c8f05d3c5266c9617805602b4e26022962e8973d55ab0b11bc24982c3aea1dc7d0b151064c822c2d1093111c17e87d1e80 languageName: node linkType: hard @@ -938,22 +938,22 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/services@npm:^7.0.7": - version: 7.0.7 - resolution: "@jupyterlab/services@npm:7.0.7" +"@jupyterlab/services@npm:^7.0.5": + version: 7.0.5 + resolution: "@jupyterlab/services@npm:7.0.5" dependencies: "@jupyter/ydoc": ^1.0.2 - "@jupyterlab/coreutils": ^6.0.7 - "@jupyterlab/nbformat": ^4.0.7 - "@jupyterlab/settingregistry": ^4.0.7 - "@jupyterlab/statedb": ^4.0.7 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/settingregistry": ^4.0.5 + "@jupyterlab/statedb": ^4.0.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/polling": ^2.1.2 "@lumino/properties": ^2.0.1 "@lumino/signaling": ^2.1.2 ws: ^8.11.0 - checksum: 203f9e9eeab55eac9251c43d14ebaad881e8152a1337156ed7f2abbada54177237128c108f91a49f45df00226df8ba6a374d02afbd3bbd80ebb795cb5bc62e23 + checksum: cf4176dbb73c08e777b5e6ca26cba6ad7a142fc76ae6b46ef17ac7d8c8021f62d66e95e2ee0dbce5c33a0b2380750d440783d0398d787b8e8028920e04dd1d0b languageName: node linkType: hard @@ -976,12 +976,12 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/settingregistry@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/settingregistry@npm:4.0.7" +"@jupyterlab/settingregistry@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/settingregistry@npm:4.0.5" dependencies: - "@jupyterlab/nbformat": ^4.0.7 - "@jupyterlab/statedb": ^4.0.7 + "@jupyterlab/nbformat": ^4.0.5 + "@jupyterlab/statedb": ^4.0.5 "@lumino/commands": ^2.1.3 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -991,7 +991,7 @@ __metadata: json5: ^2.2.3 peerDependencies: react: ">=16" - checksum: f13dd888c42ccbcb1764037e94ea6b9ee6aa82a232cbb0d8b506212b9e9d5d58965215768110f83a310585482d71dfb649a7c2bbb187553d39dd1292b5919dbe + checksum: b7d686e0f9629f25f423fbd114e598f5af2ae1cc7b683f3e236ff8c94f6d05b20e13ee4555e0eba6277b58fbcdf3c75dbcd66d4e79884b49bed649372d871540 languageName: node linkType: hard @@ -1014,16 +1014,16 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/statedb@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/statedb@npm:4.0.7" +"@jupyterlab/statedb@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/statedb@npm:4.0.5" dependencies: "@lumino/commands": ^2.1.3 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/properties": ^2.0.1 "@lumino/signaling": ^2.1.2 - checksum: 4f4217fa1fceb40be8837cb450b1e66d4f6758531603c82ac277412ec43e3b94a5207bdeb74339307509a1b059ae6436d653beaff2fadfbc8136434ff0967190 + checksum: 8e01de74a2168d19124773fa2b72329cfb43601c702127845a4172e87ee67b1304d34f53f65a6db214d832bd8c244c333936a22e08bbf1ea02e458e245140f62 languageName: node linkType: hard @@ -1040,11 +1040,11 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/statusbar@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/statusbar@npm:4.0.7" +"@jupyterlab/statusbar@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/statusbar@npm:4.0.5" dependencies: - "@jupyterlab/ui-components": ^4.0.7 + "@jupyterlab/ui-components": ^4.0.5 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -1052,7 +1052,7 @@ __metadata: "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.0 react: ^18.2.0 - checksum: 7a2f75215789722a7b9a63548e91a1b179e8c315513d1b8741b508a58937569d723f2207bf542400674767246ad871432a09d1e87779151e43fa3749aa1ade06 + checksum: eac3bc5cc191885fe0fb35466a015ecd8df103a38bc8fac0e2a2c0c7bc783d47e43a31679f83777c0a059091988d9dd2e191624c774fd32cb80c05f2d1166163 languageName: node linkType: hard @@ -1072,37 +1072,37 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/toc@npm:^6.0.7": - version: 6.0.7 - resolution: "@jupyterlab/toc@npm:6.0.7" +"@jupyterlab/toc@npm:^6.0.5": + version: 6.0.5 + resolution: "@jupyterlab/toc@npm:6.0.5" dependencies: - "@jupyterlab/apputils": ^4.1.7 - "@jupyterlab/coreutils": ^6.0.7 - "@jupyterlab/docregistry": ^4.0.7 - "@jupyterlab/observables": ^5.0.7 - "@jupyterlab/rendermime": ^4.0.7 - "@jupyterlab/translation": ^4.0.7 - "@jupyterlab/ui-components": ^4.0.7 + "@jupyterlab/apputils": ^4.1.5 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/docregistry": ^4.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime": ^4.0.5 + "@jupyterlab/translation": ^4.0.5 + "@jupyterlab/ui-components": ^4.0.5 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.0 react: ^18.2.0 - checksum: 6d0c17f79f8d077074a20d78f81fdda010f43edd5ffa423837c90dc9edd6810f7b7445c008ff7f0b04f917e6d37d76c7817bd1b2cedda48961c3e8c0553bbc16 + checksum: 4b688fdd2aa0d14db02394bafcbae5e0ce632681e8541ff3ca6153ba0e219dc20cb99f03ef4ac25f849b4b7b23f3e168e50a450bf952f42b0418e2e42aaeb546 languageName: node linkType: hard -"@jupyterlab/translation@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/translation@npm:4.0.7" +"@jupyterlab/translation@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/translation@npm:4.0.5" dependencies: - "@jupyterlab/coreutils": ^6.0.7 - "@jupyterlab/rendermime-interfaces": ^3.8.7 - "@jupyterlab/services": ^7.0.7 - "@jupyterlab/statedb": ^4.0.7 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/rendermime-interfaces": ^3.8.5 + "@jupyterlab/services": ^7.0.5 + "@jupyterlab/statedb": ^4.0.5 "@lumino/coreutils": ^2.1.2 - checksum: 15ad212d9447049f5d77d24681018efd52e61b861e73cdba4b09f4530801bdfa317c0eadde0b71016a9f45b68fbf91f723f9a63de9cbbe568c88923a9676ffab + checksum: ba879b7ed27f9398f409333624f679ad4c6d02f668a832eb7ee0cc27998e17d12938192dc32cdf74eff9c1b76116215543b1218093c32717d465568794b49660 languageName: node linkType: hard @@ -1119,14 +1119,14 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/ui-components@npm:^4.0.5, @jupyterlab/ui-components@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/ui-components@npm:4.0.7" +"@jupyterlab/ui-components@npm:^4.0.5": + version: 4.0.5 + resolution: "@jupyterlab/ui-components@npm:4.0.5" dependencies: - "@jupyterlab/coreutils": ^6.0.7 - "@jupyterlab/observables": ^5.0.7 - "@jupyterlab/rendermime-interfaces": ^3.8.7 - "@jupyterlab/translation": ^4.0.7 + "@jupyterlab/coreutils": ^6.0.5 + "@jupyterlab/observables": ^5.0.5 + "@jupyterlab/rendermime-interfaces": ^3.8.5 + "@jupyterlab/translation": ^4.0.5 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.1.3 "@lumino/coreutils": ^2.1.2 @@ -1144,7 +1144,7 @@ __metadata: typestyle: ^2.0.4 peerDependencies: react: ^18.2.0 - checksum: 92e722b8b4fe96a1df6644de8f955fdf48f2bf568a5aaf5f450f721659afc0ecdd9c89f833d73cbad8684849caec4316d4c6b6b0575e7da5a6c3058f5e99d03e + checksum: 4dfae7b37d7e7b58b83bdc75d260126fcdabfb9fd52cc3f04e3bf3c481c8f05c3b3323953389408f793ec7ec6580fd582667a83ab906a308361f0f20f766ad7a languageName: node linkType: hard @@ -1177,10 +1177,10 @@ __metadata: languageName: node linkType: hard -"@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.0.2, @lezer/common@npm:^1.1.0": - version: 1.1.0 - resolution: "@lezer/common@npm:1.1.0" - checksum: 93c208a44d1c0bdf7407853ba7c4ddcedf1c52d1b82170813d83b9bd6301aa23587405ac54332fe39ce8bc37f706936ab237ceb4d3d535d1dead650153b6474c +"@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.0.2": + version: 1.0.4 + resolution: "@lezer/common@npm:1.0.4" + checksum: 0bea82da76e0b89afad4e5159d3add460022916352c47906ec67b26d6fe5ec9cb8e23df0e2bf0adef765ae78bed1706fc573a11506d01a80112a5b6dd317730c languageName: node linkType: hard @@ -1205,14 +1205,14 @@ __metadata: linkType: hard "@lezer/generator@npm:^1.2.2": - version: 1.5.1 - resolution: "@lezer/generator@npm:1.5.1" + version: 1.5.0 + resolution: "@lezer/generator@npm:1.5.0" dependencies: "@lezer/common": ^1.0.2 "@lezer/lr": ^1.3.0 bin: lezer-generator: src/lezer-generator.cjs - checksum: 4d8267e6d356e48ca5214a234679b2b3b1d3706cb9dffecee4495b7a16c8a02502d6a078f8afdf5d8c79f94af34f2c1b5c08556aead8376d7b23795612b651d0 + checksum: ef585cced8468df7005020011e60faa6372a7fd43cf6f221c7b03a7537231c19c72846922a076383f21e6756a9030eba1e28eee374e40a9801ad77c093b8b20a languageName: node linkType: hard @@ -1247,12 +1247,12 @@ __metadata: linkType: hard "@lezer/javascript@npm:^1.0.0": - version: 1.4.8 - resolution: "@lezer/javascript@npm:1.4.8" + version: 1.4.7 + resolution: "@lezer/javascript@npm:1.4.7" dependencies: "@lezer/highlight": ^1.1.3 "@lezer/lr": ^1.3.0 - checksum: d0c1de5dd756c0a64b440984273cf5a9ef0d227d6b059d2db96c62fde869e34427b46389d56401d067c82222f11373e2d20f9280e4c403bf681ec6a35ae16126 + checksum: 37c05793e0e45280fa5d7b845a3132a84596105d48b7d2c195abea0a198477ea6719b07d1c8967679e80fc466388151956901fd6962479c130ffda64a6d09591 languageName: node linkType: hard @@ -1267,11 +1267,11 @@ __metadata: linkType: hard "@lezer/lr@npm:^1.0.0, @lezer/lr@npm:^1.1.0, @lezer/lr@npm:^1.3.0": - version: 1.3.13 - resolution: "@lezer/lr@npm:1.3.13" + version: 1.3.10 + resolution: "@lezer/lr@npm:1.3.10" dependencies: "@lezer/common": ^1.0.0 - checksum: aad0cb8908796a6b49116842fd490093aa0de54b48150a60a4f418815c014f7a1b4355615832e305caea5c0ba8c5ab577f82aebcd0ea04586b8199284ef0fec8 + checksum: 9d3c22bf692561cf7fe2f3d14e821913f87116ff9d73b8b550e7998b6135baae9f504563846a4257e1bb4eae97ae1b60c06c6066450ddeef5e03e8783526b2ae languageName: node linkType: hard @@ -1511,8 +1511,8 @@ __metadata: linkType: hard "@rjsf/core@npm:^5.1.0": - version: 5.13.2 - resolution: "@rjsf/core@npm:5.13.2" + version: 5.12.1 + resolution: "@rjsf/core@npm:5.12.1" dependencies: lodash: ^4.17.21 lodash-es: ^4.17.21 @@ -1520,15 +1520,15 @@ __metadata: nanoid: ^3.3.6 prop-types: ^15.8.1 peerDependencies: - "@rjsf/utils": ^5.12.x + "@rjsf/utils": ^5.8.x react: ^16.14.0 || >=17 - checksum: e977c33bc74075fe2035a22d242bd1a8433468834e3e45fe9b8edaf9e14e14793c43936917805f105960b3d71385fc6616ce502b5273fd6ee1c4539aa3c4e69c + checksum: 94497e4320773e83abae67902eb070834ea190b22602a09821375c7963133082654b5c79e486dffd7715714703a5786b4ab975d314f78c5c52e802a619eec53d languageName: node linkType: hard "@rjsf/utils@npm:^5.1.0": - version: 5.13.2 - resolution: "@rjsf/utils@npm:5.13.2" + version: 5.12.1 + resolution: "@rjsf/utils@npm:5.12.1" dependencies: json-schema-merge-allof: ^0.8.1 jsonpointer: ^5.0.1 @@ -1537,93 +1537,91 @@ __metadata: react-is: ^18.2.0 peerDependencies: react: ^16.14.0 || >=17 - checksum: 06834669205fa0429355f04fc551986ca6899c7b656feb2f2f0477c02e6da625bf198bd292b06e703e2c029436d899a2c802fe28d1bfe5017b2a2d016a361180 + checksum: 7be971df803f1cef4cb6083e5393ac7f76a24e9c682e408f908630d015f22188255048cc1e158e6133d789692224d73911943edf813587f28a98a879c88f8c50 languageName: node linkType: hard "@types/eslint-scope@npm:^3.7.3": - version: 3.7.5 - resolution: "@types/eslint-scope@npm:3.7.5" + version: 3.7.4 + resolution: "@types/eslint-scope@npm:3.7.4" dependencies: "@types/eslint": "*" "@types/estree": "*" - checksum: e91ce335c3791c2cf6084caa0073f90d5b7ae3fcf27785ade8422b7d896159fa14a5a3f1efd31ef03e9ebc1ff04983288280dfe8c9a5579a958539f59df8cc9f + checksum: ea6a9363e92f301cd3888194469f9ec9d0021fe0a397a97a6dd689e7545c75de0bd2153dfb13d3ab532853a278b6572c6f678ce846980669e41029d205653460 languageName: node linkType: hard "@types/eslint@npm:*": - version: 8.44.4 - resolution: "@types/eslint@npm:8.44.4" + version: 8.4.6 + resolution: "@types/eslint@npm:8.4.6" dependencies: "@types/estree": "*" "@types/json-schema": "*" - checksum: 15bafdaba800e2995f38d3a2a929d8e9303035315e8d3535523a21cd719b6769a45884afa955f0b845ffa545a4150429b0178e2c44feeedf59ebb285eeae9825 + checksum: bfaf27b00031b2238139003965475d023306119e467947f7a43a41e380918e365618e2ae6a6ae638697f6421a6bb1571db078695ff5e548f23618000b38acd23 languageName: node linkType: hard "@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.2 - resolution: "@types/estree@npm:1.0.2" - checksum: aeedb1b2fe20cbe06f44b99b562bf9703e360bfcdf5bb3d61d248182ee1dd63500f2474e12f098ffe1f5ac3202b43b3e18ec99902d9328d5374f5512fa077e45 + version: 1.0.0 + resolution: "@types/estree@npm:1.0.0" + checksum: 910d97fb7092c6738d30a7430ae4786a38542023c6302b95d46f49420b797f21619cdde11fa92b338366268795884111c2eb10356e4bd2c8ad5b92941e9e6443 languageName: node linkType: hard "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.11, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.13 - resolution: "@types/json-schema@npm:7.0.13" - checksum: 345df21a678fa72fb389f35f33de77833d09d4a142bb2bcb27c18690efa4cf70fc2876e43843cefb3fbdb9fcb12cd3e970a90936df30f53bbee899865ff605ab + version: 7.0.12 + resolution: "@types/json-schema@npm:7.0.12" + checksum: 00239e97234eeb5ceefb0c1875d98ade6e922bfec39dd365ec6bd360b5c2f825e612ac4f6e5f1d13601b8b30f378f15e6faa805a3a732f4a1bbe61915163d293 languageName: node linkType: hard "@types/node@npm:*": - version: 20.8.5 - resolution: "@types/node@npm:20.8.5" - dependencies: - undici-types: ~5.25.1 - checksum: 4bca4e4f6307a6f5dc78812015eca9c5a998b35fcf3ba4058c9851d3dde2b22c914fa25a85b804eab5af2ab95375d15943dce8e9ba5e01d15f4bf516ca0d2816 + version: 18.11.0 + resolution: "@types/node@npm:18.11.0" + checksum: f27f899ab428e5732f04fadadc9203f44bdf3abf56474540ee27da90e4f2ba133faf87263cada4d2271955f92ee6a142bd50683c86290fe5070c19aac44fd654 languageName: node linkType: hard "@types/prop-types@npm:*": - version: 15.7.8 - resolution: "@types/prop-types@npm:15.7.8" - checksum: 61dfad79da8b1081c450bab83b77935df487ae1cdd4660ec7df6be8e74725c15fa45cf486ce057addc956ca4ae78300b97091e2a25061133d1b9a1440bc896ae + version: 15.7.5 + resolution: "@types/prop-types@npm:15.7.5" + checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980 languageName: node linkType: hard "@types/react@npm:^18.0.26": - version: 18.2.28 - resolution: "@types/react@npm:18.2.28" + version: 18.2.21 + resolution: "@types/react@npm:18.2.21" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: 81381bedeba83278f4c9febb0b83e0bd3f42a25897a50b9cb36ef53651d34b3d50f87ebf11211ea57ea575131f85d31e93e496ce46478a00b0f9bf7b26b5917a + checksum: ffed203bfe7aad772b8286f7953305c9181ac3a8f27d3f5400fbbc2a8e27ca8e5bbff818ee014f39ca0d19d2b3bb154e5bdbec7e232c6f80b59069375aa78349 languageName: node linkType: hard "@types/scheduler@npm:*": - version: 0.16.4 - resolution: "@types/scheduler@npm:0.16.4" - checksum: a57b0f10da1b021e6bd5eeef8a1917dd3b08a8715bd8029e2ded2096d8f091bb1bb1fef2d66e139588a983c4bfbad29b59e48011141725fa83c76e986e1257d7 + version: 0.16.3 + resolution: "@types/scheduler@npm:0.16.3" + checksum: 2b0aec39c24268e3ce938c5db2f2e77f5c3dd280e05c262d9c2fe7d890929e4632a6b8e94334017b66b45e4f92a5aa42ba3356640c2a1175fa37bef2f5200767 languageName: node linkType: hard "@types/source-list-map@npm:*": - version: 0.1.3 - resolution: "@types/source-list-map@npm:0.1.3" - checksum: a001098786d75b82eef00a6e4f1f7bb73f9f2fdf3e97333f8b741183c3fbf92db91af8bcfc410c7e6c23c4497523a3210f3eee2077b1be93595206f9baf3d909 + version: 0.1.2 + resolution: "@types/source-list-map@npm:0.1.2" + checksum: fda8f37537aca9d3ed860d559289ab1dddb6897e642e6f53e909bbd18a7ac3129a8faa2a7d093847c91346cf09c86ef36e350c715406fba1f2271759b449adf6 languageName: node linkType: hard "@types/webpack-sources@npm:^0.1.5": - version: 0.1.10 - resolution: "@types/webpack-sources@npm:0.1.10" + version: 0.1.9 + resolution: "@types/webpack-sources@npm:0.1.9" dependencies: "@types/node": "*" "@types/source-list-map": "*" source-map: ^0.6.1 - checksum: 95817c13bc663b1b8b2c9b26d0f8ceadb3b583bb2549b554b660e900245a430dd2ed0b534f14b85153a0121450e01ebdbcefbade9305ed1e80b2190a50659aee + checksum: bc09c584c7047e8aed29801a3981787dee3898e9e7a99891a362df114fcac3879eea5a00932314866a01b25220391839be09fe1487b16d4970ff4a7afd5b9725 languageName: node linkType: hard @@ -1981,16 +1979,16 @@ __metadata: linkType: hard "browserslist@npm:^4.14.5": - version: 4.22.1 - resolution: "browserslist@npm:4.22.1" + version: 4.21.4 + resolution: "browserslist@npm:4.21.4" dependencies: - caniuse-lite: ^1.0.30001541 - electron-to-chromium: ^1.4.535 - node-releases: ^2.0.13 - update-browserslist-db: ^1.0.13 + caniuse-lite: ^1.0.30001400 + electron-to-chromium: ^1.4.251 + node-releases: ^2.0.6 + update-browserslist-db: ^1.0.9 bin: browserslist: cli.js - checksum: 7e6b10c53f7dd5d83fd2b95b00518889096382539fed6403829d447e05df4744088de46a571071afb447046abc3c66ad06fbc790e70234ec2517452e32ffd862 + checksum: 4af3793704dbb4615bcd29059ab472344dc7961c8680aa6c4bb84f05340e14038d06a5aead58724eae69455b8fade8b8c69f1638016e87e5578969d74c078b79 languageName: node linkType: hard @@ -2001,10 +1999,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001541": - version: 1.0.30001547 - resolution: "caniuse-lite@npm:1.0.30001547" - checksum: ec0fc2b46721887f6f4aca1f3902f03d9a1a07416d16a86b7cd4bfba60e7b6b03ab3969659d3ea0158cc2f298972c80215c06c9457eb15c649d7780e8f5e91a7 +"caniuse-lite@npm:^1.0.30001400": + version: 1.0.30001420 + resolution: "caniuse-lite@npm:1.0.30001420" + checksum: dfa5027b2aeaba3ab1731735a46aecf62f286cdeec7f8ccb0f8cce0a3d02447e640e944d9bf5d9ea98b53fac6c2b168bb18f4c9ad598d92a2da7b05e2aea06e2 languageName: node linkType: hard @@ -2261,10 +2259,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.535": - version: 1.4.553 - resolution: "electron-to-chromium@npm:1.4.553" - checksum: ee1fd847da4277de5630ecfc3fba22e1f429e109d254fed9c798c6d86d0ff97a7655854c4ddc86a814954846d29a912e13f1be7b647d646708c0b4fa69d3d290 +"electron-to-chromium@npm:^1.4.251": + version: 1.4.283 + resolution: "electron-to-chromium@npm:1.4.283" + checksum: b005cdac737cecd0e7f875263b97da13ad914526f4e31b4051dd0179b82ccd4aff27b4a3e3a7814cbc1774efd73956f830ae7f6ef28b313175857c26928d80b5 languageName: node linkType: hard @@ -2316,9 +2314,9 @@ __metadata: linkType: hard "es-module-lexer@npm:^1.2.1": - version: 1.3.1 - resolution: "es-module-lexer@npm:1.3.1" - checksum: 3beafa7e171eb1e8cc45695edf8d51638488dddf65294d7911f8d6a96249da6a9838c87529262cc6ea53988d8272cec0f4bff93f476ed031a54ba3afb51a0ed3 + version: 1.3.0 + resolution: "es-module-lexer@npm:1.3.0" + checksum: 48fd9f504a9d2a894126f75c8b7ccc6273a289983e9b67255f165bfd9ae765d50100218251e94e702ca567826905ea2f7b3b4a0c4d74d3ce99cce3a2a606a238 languageName: node linkType: hard @@ -2456,6 +2454,13 @@ __metadata: languageName: node linkType: hard +"function-bind@npm:^1.1.1": + version: 1.1.1 + resolution: "function-bind@npm:1.1.1" + checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a + languageName: node + linkType: hard + "glob-to-regexp@npm:^0.4.1": version: 0.4.1 resolution: "glob-to-regexp@npm:0.4.1" @@ -2463,18 +2468,18 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.3.7": - version: 10.3.10 - resolution: "glob@npm:10.3.10" +"glob@npm:^10.2.5": + version: 10.3.4 + resolution: "glob@npm:10.3.4" dependencies: foreground-child: ^3.1.0 - jackspeak: ^2.3.5 + jackspeak: ^2.0.3 minimatch: ^9.0.1 minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 path-scurry: ^1.10.1 bin: - glob: dist/esm/bin.mjs - checksum: 4f2fe2511e157b5a3f525a54092169a5f92405f24d2aed3142f4411df328baca13059f4182f1db1bf933e2c69c0bd89e57ae87edd8950cba8c7ccbe84f721cf3 + glob: dist/cjs/src/bin.js + checksum: 176b97c124414401cb51329a93d2ba112cef8814adbed10348481916b9521b677773eee2691cb6b24d66632d8c8bb8913533f5ac4bfb2d0ef5454a1856082361 languageName: node linkType: hard @@ -2493,9 +2498,9 @@ __metadata: linkType: hard "graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.9": - version: 4.2.11 - resolution: "graceful-fs@npm:4.2.11" - checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 + version: 4.2.10 + resolution: "graceful-fs@npm:4.2.10" + checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da languageName: node linkType: hard @@ -2514,9 +2519,11 @@ __metadata: linkType: hard "has@npm:^1.0.3": - version: 1.0.4 - resolution: "has@npm:1.0.4" - checksum: 8a11ba062e0627c9578a1d08285401e39f1d071a9692ddf793199070edb5648b21c774dd733e2a181edd635bf6862731885f476f4ccf67c998d7a5ff7cef2550 + version: 1.0.3 + resolution: "has@npm:1.0.3" + dependencies: + function-bind: ^1.1.1 + checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 languageName: node linkType: hard @@ -2639,16 +2646,16 @@ __metadata: languageName: node linkType: hard -"jackspeak@npm:^2.3.5": - version: 2.3.6 - resolution: "jackspeak@npm:2.3.6" +"jackspeak@npm:^2.0.3": + version: 2.3.1 + resolution: "jackspeak@npm:2.3.1" dependencies: "@isaacs/cliui": ^8.0.2 "@pkgjs/parseargs": ^0.11.0 dependenciesMeta: "@pkgjs/parseargs": optional: true - checksum: 57d43ad11eadc98cdfe7496612f6bbb5255ea69fe51ea431162db302c2a11011642f50cfad57288bd0aea78384a0612b16e131944ad8ecd09d619041c8531b54 + checksum: 34ea4d618d8d36ac104fe1053c85dfb6a63306cfe87e157ef42f18a7aa30027887370a4e163dd4993e45c6bf8a8ae003bf8476fdb8538e8ee5cd1938c27b15d0 languageName: node linkType: hard @@ -2680,9 +2687,9 @@ __metadata: linkType: hard "jquery@npm:>=1.8.0 <4.0.0, jquery@npm:^3.6.3": - version: 3.7.1 - resolution: "jquery@npm:3.7.1" - checksum: 4370b8139d6ae82867eb6f7f21d1edccf1d1bdf41c0840920ea80d366c2cd5dbe1ceebb110ee9772aa839b04400faa1572c5c560b507c688ed7b61cea26c0e27 + version: 3.6.3 + resolution: "jquery@npm:3.6.3" + checksum: 0fd366bdcaa0c84a7a8751ce20f8192290141913978b5059574426d9b01f4365daa675f95aab3eec94fd794d27b08d32078a2236bef404b8ba78073009988ce6 languageName: node linkType: hard @@ -2804,15 +2811,12 @@ __metadata: languageName: node linkType: hard -"lib0@npm:^0.2.74, lib0@npm:^0.2.85": - version: 0.2.87 - resolution: "lib0@npm:0.2.87" +"lib0@npm:^0.2.42, lib0@npm:^0.2.49": + version: 0.2.60 + resolution: "lib0@npm:0.2.60" dependencies: isomorphic.js: ^0.2.4 - bin: - 0gentesthtml: bin/gentesthtml.js - 0serve: bin/0serve.js - checksum: c50f4ed27e4df1a8fe8846251740e3757ac37146087a3b14f23240aa654174ccaf62f4f516cfa162fae019f82cdc0483b78310dd8410ac5fc8b5092b4d2e0b5d + checksum: 7c3d90267b9b6ab10f03328dc342c558d8ccb0a098a665b867c41e55679851f3ae757717a3b61495c7e66eee69d37d54b8df37c9a82842680530355b3fd23b6e languageName: node linkType: hard @@ -2921,11 +2925,11 @@ __metadata: linkType: hard "marked@npm:^8.0.0": - version: 8.0.1 - resolution: "marked@npm:8.0.1" + version: 8.0.0 + resolution: "marked@npm:8.0.0" bin: marked: bin/marked.js - checksum: 08f321f939791969e4124df4ba569bd2d3004275891f99bee58f039629b088ee0225c2140c1a1db323cb8570761bfad0b55d8e16e4a8c426fb8fb934662d1b67 + checksum: 36675f5985dbeaac043948cdb2af938ae008524ab2c14e1da503234a6a9e4237840ff06f8a7c81d8a9f1d0aa33b96d4ae3a4f6bbd3fba25ab1edbf11a5b6aaee languageName: node linkType: hard @@ -2998,16 +3002,16 @@ __metadata: linkType: hard "minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": - version: 7.0.4 - resolution: "minipass@npm:7.0.4" - checksum: 87585e258b9488caf2e7acea242fd7856bbe9a2c84a7807643513a338d66f368c7d518200ad7b70a508664d408aa000517647b2930c259a8b1f9f0984f344a21 + version: 7.0.3 + resolution: "minipass@npm:7.0.3" + checksum: 6f1614f5b5b55568a46bca5fec0e7c46dac027691db27d0e1923a8192866903144cd962ac772c0e9f89b608ea818b702709c042bce98e190d258847d85461531 languageName: node linkType: hard "module-alias@npm:^2.2.2": - version: 2.2.3 - resolution: "module-alias@npm:2.2.3" - checksum: 6169187f69de8dcf8af8fab4d9e53ada6338a43f7670d38d0b27a089c28f9eb18d85a6fd46f11b54c63079a68449b85d071d7db0ac067f9f7faedbcd6231456d + version: 2.2.2 + resolution: "module-alias@npm:2.2.2" + checksum: 4b5543f834b484033e5bd184096ca8276b9195e32e88883ee6ea8d3a4789d97c470d26f5fa7271bd7a26588bf67e4d27dbdb594ee327aef1c9619d855dc78342 languageName: node linkType: hard @@ -3027,10 +3031,10 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.13": - version: 2.0.13 - resolution: "node-releases@npm:2.0.13" - checksum: 17ec8f315dba62710cae71a8dad3cd0288ba943d2ece43504b3b1aa8625bf138637798ab470b1d9035b0545996f63000a8a926e0f6d35d0996424f8b6d36dda3 +"node-releases@npm:^2.0.6": + version: 2.0.6 + resolution: "node-releases@npm:2.0.6" + checksum: e86a926dc9fbb3b41b4c4a89d998afdf140e20a4e8dbe6c0a807f7b2948b42ea97d7fd3ad4868041487b6e9ee98409829c6e4d84a734a4215dff060a7fbeb4bf languageName: node linkType: hard @@ -3234,9 +3238,9 @@ __metadata: linkType: hard "punycode@npm:^2.1.0, punycode@npm:^2.1.1": - version: 2.3.0 - resolution: "punycode@npm:2.3.0" - checksum: 39f760e09a2a3bbfe8f5287cf733ecdad69d6af2fe6f97ca95f24b8921858b91e9ea3c9eeec6e08cede96181b3bb33f95c6ffd8c77e63986508aa2e8159fa200 + version: 2.1.1 + resolution: "punycode@npm:2.1.1" + checksum: 823bf443c6dd14f669984dea25757b37993f67e8d94698996064035edd43bed8a5a17a9f12e439c2b35df1078c6bec05a6c86e336209eb1061e8025c481168e8 languageName: node linkType: hard @@ -3353,39 +3357,39 @@ __metadata: linkType: hard "resolve@npm:^1.20.0": - version: 1.22.8 - resolution: "resolve@npm:1.22.8" + version: 1.22.4 + resolution: "resolve@npm:1.22.4" dependencies: is-core-module: ^2.13.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: f8a26958aa572c9b064562750b52131a37c29d072478ea32e129063e2da7f83e31f7f11e7087a18225a8561cfe8d2f0df9dbea7c9d331a897571c0a2527dbb4c + checksum: 23f25174c2736ce24c6d918910e0d1f89b6b38fefa07a995dff864acd7863d59a7f049e691f93b4b2ee29696303390d921552b6d1b841ed4a8101f517e1d0124 languageName: node linkType: hard "resolve@patch:resolve@^1.20.0#~builtin": - version: 1.22.8 - resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=c3c19d" + version: 1.22.4 + resolution: "resolve@patch:resolve@npm%3A1.22.4#~builtin::version=1.22.4&hash=c3c19d" dependencies: is-core-module: ^2.13.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: 5479b7d431cacd5185f8db64bfcb7286ae5e31eb299f4c4f404ad8aa6098b77599563ac4257cb2c37a42f59dfc06a1bec2bcf283bb448f319e37f0feb9a09847 + checksum: c45f2545fdc4d21883861b032789e20aa67a2f2692f68da320cc84d5724cd02f2923766c5354b3210897e88f1a7b3d6d2c7c22faeead8eed7078e4c783a444bc languageName: node linkType: hard "rimraf@npm:^5.0.1": - version: 5.0.5 - resolution: "rimraf@npm:5.0.5" + version: 5.0.1 + resolution: "rimraf@npm:5.0.1" dependencies: - glob: ^10.3.7 + glob: ^10.2.5 bin: - rimraf: dist/esm/bin.mjs - checksum: d66eef829b2e23b16445f34e73d75c7b7cf4cbc8834b04720def1c8f298eb0753c3d76df77325fad79d0a2c60470525d95f89c2475283ad985fd7441c32732d1 + rimraf: dist/cjs/src/bin.js + checksum: bafce85391349a2d960847980bf9b5caa2a8887f481af630f1ea27e08288217293cec72d75e9a2ba35495c212789f66a7f3d23366ba6197026ab71c535126857 languageName: node linkType: hard @@ -3437,7 +3441,18 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": +"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1": + version: 3.1.1 + resolution: "schema-utils@npm:3.1.1" + dependencies: + "@types/json-schema": ^7.0.8 + ajv: ^6.12.5 + ajv-keywords: ^3.5.2 + checksum: fb73f3d759d43ba033c877628fe9751620a26879f6301d3dbeeb48cf2a65baec5cdf99da65d1bf3b4ff5444b2e59cbe4f81c2456b5e0d2ba7d7fd4aed5da29ce + languageName: node + linkType: hard + +"schema-utils@npm:^3.2.0": version: 3.3.0 resolution: "schema-utils@npm:3.3.0" dependencies: @@ -3703,8 +3718,8 @@ __metadata: linkType: hard "terser@npm:^5.16.8": - version: 5.21.0 - resolution: "terser@npm:5.21.0" + version: 5.19.3 + resolution: "terser@npm:5.19.3" dependencies: "@jridgewell/source-map": ^0.3.3 acorn: ^8.8.2 @@ -3712,7 +3727,7 @@ __metadata: source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: 130f1567af1ffa4ddb067651bb284a01b45b5c83e82b3a072a5ff94b0b00ac35090f89c8714631a4a45972f65187bc149fc7144380611f437e1e3d9e174b136b + checksum: dde1b387891ad953760cec56b168d1f2b1eae5f47410bec57f3587daa9719ee0cf3155961adf77cdff9ea88e086dd49c78a721eafdcbdd0dd590c47c8e660a37 languageName: node linkType: hard @@ -3742,13 +3757,6 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~5.25.1": - version: 5.25.3 - resolution: "undici-types@npm:5.25.3" - checksum: ec9d2cc36520cbd9fbe3b3b6c682a87fe5be214699e1f57d1e3d9a2cb5be422e62735f06e0067dc325fd3dd7404c697e4d479f9147dc8a804e049e29f357f2ff - languageName: node - linkType: hard - "universalify@npm:^2.0.0": version: 2.0.0 resolution: "universalify@npm:2.0.0" @@ -3756,17 +3764,17 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.13": - version: 1.0.13 - resolution: "update-browserslist-db@npm:1.0.13" +"update-browserslist-db@npm:^1.0.9": + version: 1.0.10 + resolution: "update-browserslist-db@npm:1.0.10" dependencies: escalade: ^3.1.1 picocolors: ^1.0.0 peerDependencies: browserslist: ">= 4.21.0" bin: - update-browserslist-db: cli.js - checksum: 1e47d80182ab6e4ad35396ad8b61008ae2a1330221175d0abd37689658bdb61af9b705bfc41057fd16682474d79944fb2d86767c5ed5ae34b6276b9bed353322 + browserslist-lint: cli.js + checksum: 12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0 languageName: node linkType: hard @@ -3836,10 +3844,10 @@ __metadata: languageName: node linkType: hard -"vscode-jsonrpc@npm:8.2.0, vscode-jsonrpc@npm:^8.0.2": - version: 8.2.0 - resolution: "vscode-jsonrpc@npm:8.2.0" - checksum: f302a01e59272adc1ae6494581fa31c15499f9278df76366e3b97b2236c7c53ebfc71efbace9041cfd2caa7f91675b9e56f2407871a1b3c7f760a2e2ee61484a +"vscode-jsonrpc@npm:8.1.0, vscode-jsonrpc@npm:^8.0.2": + version: 8.1.0 + resolution: "vscode-jsonrpc@npm:8.1.0" + checksum: 8980037cc0014802e6ac1e5dfcff9a65e8292727096dfd23c92d2039c0c45de74a00d6ee06938cf1a671286dd8258a5f418cf048c26ad0fcb0c44f96c9e0f278 languageName: node linkType: hard @@ -3851,19 +3859,19 @@ __metadata: linkType: hard "vscode-languageserver-protocol@npm:^3.17.0": - version: 3.17.5 - resolution: "vscode-languageserver-protocol@npm:3.17.5" + version: 3.17.3 + resolution: "vscode-languageserver-protocol@npm:3.17.3" dependencies: - vscode-jsonrpc: 8.2.0 - vscode-languageserver-types: 3.17.5 - checksum: dfb42d276df5dfea728267885b99872ecff62f6c20448b8539fae71bb196b420f5351c5aca7c1047bf8fb1f89fa94a961dce2bc5bf7e726198f4be0bb86a1e71 + vscode-jsonrpc: 8.1.0 + vscode-languageserver-types: 3.17.3 + checksum: ffea508b2efd7f4853f1cef5e5eac58672f0ae71a9ec275ad37a4a2a24cdc3ff023f941e759951aee01c79da3f3279f10e034f19d875f081eb387181241bd836 languageName: node linkType: hard -"vscode-languageserver-types@npm:3.17.5": - version: 3.17.5 - resolution: "vscode-languageserver-types@npm:3.17.5" - checksum: 79b420e7576398d396579ca3a461c9ed70e78db4403cd28bbdf4d3ed2b66a2b4114031172e51fad49f0baa60a2180132d7cb2ea35aa3157d7af3c325528210ac +"vscode-languageserver-types@npm:3.17.3": + version: 3.17.3 + resolution: "vscode-languageserver-types@npm:3.17.3" + checksum: fbc8221297261f659a6482875ff2a419dc9d55965dc53745797da569ff9f819cd832e6f2699017baadd946548bbfe212e3f6971f3d960f12dc0ee9c629dacc07 languageName: node linkType: hard @@ -4074,8 +4082,8 @@ __metadata: linkType: hard "ws@npm:^8.11.0": - version: 8.14.2 - resolution: "ws@npm:8.14.2" + version: 8.13.0 + resolution: "ws@npm:8.13.0" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -4084,18 +4092,16 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 3ca0dad26e8cc6515ff392b622a1467430814c463b3368b0258e33696b1d4bed7510bc7030f7b72838b9fdeb8dbd8839cbf808367d6aae2e1d668ce741d4308b + checksum: 53e991bbf928faf5dc6efac9b8eb9ab6497c69feeb94f963d648b7a3530a720b19ec2e0ec037344257e05a4f35bd9ad04d9de6f289615ffb133282031b18c61c languageName: node linkType: hard "y-protocols@npm:^1.0.5": - version: 1.0.6 - resolution: "y-protocols@npm:1.0.6" + version: 1.0.5 + resolution: "y-protocols@npm:1.0.5" dependencies: - lib0: ^0.2.85 - peerDependencies: - yjs: ^13.0.0 - checksum: 4b57c8811befcf2e45c3d47830005f8a33e626c734f78a42fe8a4fa3caad2233ba85a7c8bceefbd52ffc40130d3f3faee664fd0d1c324ff1fa8817a056ccdc1c + lib0: ^0.2.42 + checksum: d19404a4ebafcf3761c28b881abe8c32ab6e457db0e5ffc7dbb749cbc2c3bb98e003a43f3e8eba7f245b2698c76f2c4cdd1c2db869f8ec0c6ef94736d9a88652 languageName: node linkType: hard @@ -4107,10 +4113,10 @@ __metadata: linkType: hard "yjs@npm:^13.5.40": - version: 13.6.8 - resolution: "yjs@npm:13.6.8" + version: 13.5.44 + resolution: "yjs@npm:13.5.44" dependencies: - lib0: ^0.2.74 - checksum: a2a6fd17a2cce6461b64bedd69f66845b9dfd4702e285be0b5e382840337232e54ba5cf5d48f871263074de625d3902d17ab8a1766695af3fc05a0b4da8d95e0 + lib0: ^0.2.49 + checksum: a43a960605f82338e46fcf245d083095934689f3425d7f085f5ab4ea365095f0dee56e5dcaed9cba669971b4a6a073966964888fea9b0a2c15a041ebb58bcbdc languageName: node linkType: hard diff --git a/jupyternotebook/README.md b/jupyternotebook/README.md index a03d89a5..6b4bcd90 100644 --- a/jupyternotebook/README.md +++ b/jupyternotebook/README.md @@ -47,7 +47,7 @@ pip install jupyterlab-visualpython Click orange square button on the right side of Jupyter Lab. -## Getting Started with Jupyter Notebook(>= 7.x) +## Getting Started with Jupyter Notebook 7 ### 1. Requirements @@ -66,13 +66,13 @@ pip install jupyterlab-visualpython Click orange square button on the toolbar of Jupyter Notebook. -## Getting Started with Jupyter Notebook(<=6.x.x) +## Getting Started with Jupyter Notebook (for 6.x.x and older version) ### 1. Requirements Visual Python is an extension to Jupyter Notebook, so you must have Jupyter Notebook installed already. You need old version of Jupyter Notebook under version 6.x.x.
- Python version 3.x -- Jupyter notebook environment <=6.x +- Jupyter notebook environment <= 6.x ### 2. How to Install @@ -152,6 +152,7 @@ All skills from programmers, non-programmers, designers are welcomed. [](https://github.com/llbtl) [](https://github.com/blacklogicdev) [](https://github.com/Minku-Koo) +[](https://github.com/8orrin9) Whoever wants to contribute or join our community,
You can contact us by creating issues on [Issue page](https://github.com/visualpython/visualpython/issues) or using [Discord server](https://discord.gg/PypQrBZWZv). @@ -171,4 +172,4 @@ To create an environment where everyone can learn and use big data analytical sk Love Visual Python?
Your support will help us continue to actively develop and improve Visual Python.☕ -[![donate_banner](https://user-images.githubusercontent.com/83636412/229679467-4fee93a2-d6d2-4229-a53c-80a5eb2b9240.png)](https://github.com/sponsors/visualpython?frequency=recurring) \ No newline at end of file +[![donate_banner](https://user-images.githubusercontent.com/83636412/229679467-4fee93a2-d6d2-4229-a53c-80a5eb2b9240.png)](https://github.com/sponsors/visualpython?frequency=recurring) diff --git a/jupyternotebook/build.jupyternotebook.sh b/jupyternotebook/build.jupyternotebook.sh index 49db2c43..a14b23b9 100755 --- a/jupyternotebook/build.jupyternotebook.sh +++ b/jupyternotebook/build.jupyternotebook.sh @@ -11,8 +11,8 @@ #============================================================================= # Replace Version and Basic Files #============================================================================= -VP_ORG_VER=2.5.0 -VP_NEW_VER=3.0.0 +VP_ORG_VER=3.0.1 +VP_NEW_VER=3.0.2 # update version info grep -REil ${VP_ORG_VER//\./\\.} setup.py visualpython/js/com/com_Config.js visualpython/js/com/com_Const.js | xargs sed -i --follow-symlinks "s/${VP_ORG_VER//\./\\.}/${VP_NEW_VER}/g" diff --git a/jupyternotebook/setup.py b/jupyternotebook/setup.py index 80de3389..8fe43b1f 100644 --- a/jupyternotebook/setup.py +++ b/jupyternotebook/setup.py @@ -10,7 +10,7 @@ setup( name = name, - version = '3.0.0', + version = '3.0.2', packages = find_packages(), package_data = {"": ["*"], 'visualpython' : ['visualpython.yaml', 'README.md']}, scripts = ['visualpython/bin/visualpy', 'visualpython/bin/visualpy.bat'], diff --git a/visualpython/css/m_ml/modelInfo.css b/visualpython/css/m_ml/modelInfo.css index 2975f521..2bd9d885 100644 --- a/visualpython/css/m_ml/modelInfo.css +++ b/visualpython/css/m_ml/modelInfo.css @@ -1,3 +1,7 @@ +.vp-model-select-box { + grid-column-gap: 5px; + align-items: start; +} .vp-ins-select-title { font-weight: bold; color: var(--vp-font-highlight); diff --git a/visualpython/data/m_library/pandasLibrary.js b/visualpython/data/m_library/pandasLibrary.js index 08ef7889..1478aa9e 100644 --- a/visualpython/data/m_library/pandasLibrary.js +++ b/visualpython/data/m_library/pandasLibrary.js @@ -206,7 +206,7 @@ define([ }, { "name": "sep", - "label": "Seperator", + "label": "Separator", "type": "text", "usePair": true }, @@ -304,7 +304,7 @@ define([ }, { "name": "sep", - "label": "Seperator", + "label": "Separator", "type": "text", "usePair": true }, @@ -4342,7 +4342,7 @@ define([ }, { "name": "prefix_sep", - "label": "Header Seperator", + "label": "Header Separator", "default": "_", "usePair": true }, diff --git a/visualpython/data/m_library/pandasLibrary_v1.js b/visualpython/data/m_library/pandasLibrary_v1.js index d1f38172..f97c6546 100644 --- a/visualpython/data/m_library/pandasLibrary_v1.js +++ b/visualpython/data/m_library/pandasLibrary_v1.js @@ -163,7 +163,7 @@ define([ { name: 'sep', type: 'text', - label: 'Seperator' + label: 'Separator' }, { name: 'names', @@ -243,7 +243,7 @@ define([ { name: 'sep', type: 'text', - label: 'Seperator' + label: 'Separator' }, { name: 'na_rep', @@ -3514,7 +3514,7 @@ define([ { name: 'prefix_sep', type: ['text'], - label: 'Header Seperator', + label: 'Header Separator', default: '_' }, { diff --git a/visualpython/data/m_ml/mlLibrary.js b/visualpython/data/m_ml/mlLibrary.js index 5f574e33..11fc11a8 100644 --- a/visualpython/data/m_ml/mlLibrary.js +++ b/visualpython/data/m_ml/mlLibrary.js @@ -128,10 +128,10 @@ define([ 'prep-onehot': { name: 'OneHotEncoder', import: 'from sklearn.preprocessing import OneHotEncoder', - code: 'OneHotEncoder(${sparse}${handle_unknown}${etc})', + code: 'OneHotEncoder(${sparse_output}${handle_unknown}${etc})', returnType: 'OneHotEncoder', options: [ - { name: 'sparse', component: ['bool_select'], default: 'False', usePair: true }, + { name: 'sparse_output', component: ['bool_select'], default: 'True', value: 'False', usePair: true }, { name: 'handle_unknown', component: ['option_suggest'], usePair: true, options: ['error', 'ignore'], default: 'error' }, ] @@ -490,8 +490,8 @@ define([ code: 'DecisionTreeClassifier(${criterion}${max_depth}${min_samples_split}${random_state}${etc})', returnType: 'DecisionTreeClassifier', options: [ - { name: 'criterion', component: ['option_select'], type: 'text', default: 'squared_error', type:'text', - options: ['squared_error', 'friedman_mse', 'absolute_error', 'poisson'], usePair: true }, + { name: 'criterion', component: ['option_select'], type: 'text', default: 'gini', type:'text', + options: ['gini','entropy','log_loss'], usePair: true }, { name: 'max_depth', component: ['input_number'], placeholder: 'None', usePair: true }, { name: 'min_samples_split', component: ['input_number'], default: 2, usePair: true }, { name: 'random_state', component: ['input_number'], placeholder: '123', usePair: true } @@ -505,7 +505,7 @@ define([ options: [ { name: 'n_estimators', component: ['input_number'], default: 100, usePair: true }, { name: 'criterion', component: ['option_select'], type: 'text', default: 'gini', type:'text', usePair: true, - options: ['gini', 'entropy'] }, + options: ['gini', 'entropy', 'log_loss'] }, { name: 'max_depth', component: ['input_number'], placeholder: 'None', usePair: true }, { name: 'min_samples_split', component: ['input_number'], default: 2, usePair: true }, { name: 'n_jobs', component: ['input_number'], placeholder: 'None', usePair: true }, @@ -518,12 +518,12 @@ define([ code: 'GradientBoostingClassifier(${loss}${learning_rate}${n_estimators}${criterion}${random_state}${etc})', returnType: 'GradientBoostingClassifier', options: [ - { name: 'loss', component: ['option_select'], type: 'text', default: 'deviance', type: 'text', usePair: true, - options: ['deviance', 'exponential'] }, + { name: 'loss', component: ['option_select'], type: 'text', default: 'log_loss', type: 'text', usePair: true, + options: ['log_loss', 'exponential'] }, { name: 'learning_rate', component: ['input_number'], default: 0.1, usePair: true }, { name: 'n_estimators', component: ['input_number'], default: 100, usePair: true }, { name: 'criterion', component: ['option_select'], type: 'text', default: 'friedman_mse', type:'text', usePair: true, - options: ['friedman_mse', 'squared_error', 'mse', 'mae'] }, + options: ['friedman_mse', 'squared_error'] }, { name: 'random_state', component: ['input_number'], placeholder: '123', usePair: true } ] }, diff --git a/visualpython/html/component/dataSelector.html b/visualpython/html/component/dataSelector.html index 8090aace..2e402219 100644 --- a/visualpython/html/component/dataSelector.html +++ b/visualpython/html/component/dataSelector.html @@ -8,7 +8,7 @@
-
+
@@ -22,7 +22,7 @@
-
+
diff --git a/visualpython/html/m_ml/evaluation.html b/visualpython/html/m_ml/evaluation.html index 88979916..407d2870 100644 --- a/visualpython/html/m_ml/evaluation.html +++ b/visualpython/html/m_ml/evaluation.html @@ -38,7 +38,7 @@ - + diff --git a/visualpython/html/m_stats/regression.html b/visualpython/html/m_stats/regression.html index 124f7066..93ac63fd 100644 --- a/visualpython/html/m_stats/regression.html +++ b/visualpython/html/m_stats/regression.html @@ -76,6 +76,7 @@ +
diff --git a/visualpython/js/MainFrame.js b/visualpython/js/MainFrame.js index 20163472..b16149b1 100644 --- a/visualpython/js/MainFrame.js +++ b/visualpython/js/MainFrame.js @@ -520,10 +520,10 @@ define([ let parentBlock = null; let prevBlock = null; loadStateList.forEach(obj => { - let { blockType, menuId, menuState, menuConfig, argIdx, position, afterAction } = obj; + let { file, blockType, menuId, menuState, menuConfig, argIdx, position, afterAction } = obj; // get OptionComponent Object // LAB: relative path needed - let OptionComponent = require('./' + menuConfig.file); + let OptionComponent = require('./' + file); if (OptionComponent) { let taskState = menuState.taskState; let blockState = menuState.blockState; diff --git a/visualpython/js/com/com_Config.js b/visualpython/js/com/com_Config.js index aa54f0b6..9062699a 100644 --- a/visualpython/js/com/com_Config.js +++ b/visualpython/js/com/com_Config.js @@ -270,8 +270,7 @@ define([ vp_config_version: '1.0.0', vp_signature: 'VisualPython', vp_position: {}, - // CHROME: default to display vp - vp_section_display: true, + vp_section_display: false, vp_note_display: false, vp_menu_width: Config.MENU_MIN_WIDTH, vp_note_width: Config.BOARD_MIN_WIDTH @@ -575,7 +574,7 @@ define([ that._checkMounted().then(function() { that._readFromColab(configKey).then(function(result) { let data = result; - if (data == undefined || data == {}) { + if (data == undefined || (data instanceof Object && Object.keys(data).length === 0)) { resolve(data); return; } @@ -583,7 +582,7 @@ define([ resolve(data); return; } - if (Object.keys(data).length > 0) { + if (data instanceof Object && Object.keys(data).length > 0) { resolve(data[dataKey]); return; } @@ -599,7 +598,7 @@ define([ // LAB: use local .visualpython files that._readFromLab(configKey).then(function(result) { let data = result; - if (data == undefined || data == {}) { + if (data == undefined || (data instanceof Object && Object.keys(data).length === 0)) { resolve(data); return; } @@ -607,7 +606,7 @@ define([ resolve(data); return; } - if (Object.keys(data).length > 0) { + if (data instanceof Object && Object.keys(data).length > 0) { resolve(data[dataKey]); return; } @@ -869,6 +868,40 @@ define([ return Config.version; } + checkVersionTimestamp = function() { + let that = this; + // check version timestamp + let nowDate = new Date(); + this.getData('version_timestamp', 'vpcfg').then(function(data) { + let doCheckVersion = false; + vpLog.display(VP_LOG_TYPE.DEVELOP, 'Checking its version timestamp... : ' + data); + if (data == undefined || (data instanceof Object && Object.keys(data).length === 0)) { + // no timestamp, check version + doCheckVersion = true; + } else if (data != '') { + let lastCheck = new Date(parseInt(data)); + let diffCheck_now = new Date(nowDate.getFullYear(), nowDate.getMonth() + 1, nowDate.getDate()); + let diffCheck_last = new Date(lastCheck.getFullYear(), lastCheck.getMonth() + 1, lastCheck.getDate()); + + let diff = Math.abs(diffCheck_now.getTime() - diffCheck_last.getTime()); + diff = Math.ceil(diff / (1000 * 3600 * 24)); + + if (diff >= 1) { + // if More than 1 day passed, check version + doCheckVersion = true; + } + } + + // check version and update version_timestamp + if (doCheckVersion == true) { + that.checkVpVersion(true); + } + + }).catch(function(err) { + vpLog.display(VP_LOG_TYPE.ERROR, err); + }) + } + checkVpVersion(background=false) { let that = this; let nowVersion = this.getVpInstalledVersion(); @@ -923,6 +956,8 @@ define([ switch (clickedBtnIdx) { case 0: // cancel + // update version_timestamp + that.setData({ 'version_timestamp': new Date().getTime() }, 'vpcfg'); break; case 1: // update @@ -1038,7 +1073,7 @@ define([ /** * Version */ - Config.version = "3.0.0"; + Config.version = "3.0.2"; /** * Type of mode diff --git a/visualpython/js/com/com_Const.js b/visualpython/js/com/com_Const.js index ecf4d848..fbd18788 100644 --- a/visualpython/js/com/com_Const.js +++ b/visualpython/js/com/com_Const.js @@ -19,7 +19,7 @@ define ([ class Constants { } Constants.TOOLBAR_BTN_INFO = { - HELP: "Visual Python 3.0.0" + HELP: "Visual Python 3.0.2" , ICON: "vp-main-icon" , ID: "vpBtnToggle" , NAME: "toggle-vp" diff --git a/visualpython/js/com/com_Kernel.js b/visualpython/js/com/com_Kernel.js index 3540d1f0..addb7093 100644 --- a/visualpython/js/com/com_Kernel.js +++ b/visualpython/js/com/com_Kernel.js @@ -610,10 +610,14 @@ define([ * @param {*} dataframe * @returns */ - getRowList(dataframe) { + getRowList(dataframe, start_idx) { var that = this; + if (typeof start_idx === 'undefined') { + start_idx = 0; + } + return new Promise(function(resolve, reject) { - that.execute(com_util.formatString('_vp_print(_vp_get_rows_list({0}))', dataframe)) + that.execute(com_util.formatString('_vp_print(_vp_get_rows_list({0}, {1}))', dataframe, start_idx)) .then(function(resultObj) { resolve(resultObj); }).catch(function(err) { diff --git a/visualpython/js/com/com_generatorV2.js b/visualpython/js/com/com_generatorV2.js index c3719f33..42e6c760 100644 --- a/visualpython/js/com/com_generatorV2.js +++ b/visualpython/js/com/com_generatorV2.js @@ -139,7 +139,7 @@ define([ package.options && package.options.forEach(function(o, i) { var obj = JSON.parse(JSON.stringify(o)); let newTag = vp_createTag(pageThis, obj, state); - if (obj.required) { + if (obj.required === true || obj.output === true) { tblInput.append(newTag); } else { tblOption.append(newTag); @@ -147,6 +147,9 @@ define([ }); // TODO: userOption + if (package.code.includes('${etc}')) { + + } bindMultiSelector(pageThis); bindAutoComponentEvent(pageThis); @@ -373,6 +376,8 @@ define([ allowDataType: obj.var_type, placeholder: obj.placeholder || 'Select data', value: value, + columnSelection: obj.columnSelection || 'multiple', // single / multiple + returnFrameType: obj.returnFrameType || '', // '' / DataFrame / Series required: obj.required === true }); content = $(dataSelector.toTagString()); @@ -887,7 +892,7 @@ define([ suggestInputX.addClass('vp-input vp-state'); suggestInputX.setNormalFilter(false); suggestInputX.setValue(defaultValue); - $(selector + ' #' + columnInputId).replaceWith(function() { + $(pageThis.wrapSelector('#' + columnInputId)).replaceWith(function() { return suggestInputX.toTagString(); }); } else { @@ -896,7 +901,7 @@ define([ 'id': columnInputId, 'class': 'vp-select vp-state' }); - $(selector + ' #' + columnInputId).replaceWith(function() { + $(pageThis.wrapSelector('#' + columnInputId)).replaceWith(function() { return $(tag); }); } @@ -952,7 +957,7 @@ define([ suggestInputX.setSuggestList(function() { return list; }); //FIXME: suggestInputX.setNormalFilter(false); suggestInputX.setValue(defaultValue); - $(selector + ' #' + columnInputId).replaceWith(function() { + $(pageThis.wrapSelector('#' + columnInputId)).replaceWith(function() { return suggestInputX.toTagString(); }); } else { diff --git a/visualpython/js/com/component/DataSelector.js b/visualpython/js/com/component/DataSelector.js index 770770ba..1b64b9ee 100644 --- a/visualpython/js/com/component/DataSelector.js +++ b/visualpython/js/com/component/DataSelector.js @@ -59,6 +59,11 @@ define([ select: null, // callback after selection from suggestInput (value, dtype) allowDataType: null, // list of allowed data types dataCategory: null, // list of data category (use it for ml categories) + columnSelection: 'multiple', // single/multi : allowed column selection + returnFrameType: '', // DataFrame/Series : required data type for DataFrame -> Series/DataFrame operation + // if Series, only one column selection is allowed and returns Series + // if DataFrame, always returns DataFrame + // if Empty(=== ''), if one column selected, returns Series / others, returns DataFrame // additional options boxClasses: '', classes: '', @@ -87,6 +92,9 @@ define([ this.prop.dataCategory = this.prop.allowDataType; } } + if (this.prop.returnFrameType === 'Series') { + this.prop.columnSelection = 'single'; // only single selection allowed + } this.state = { filterType: 'All', @@ -98,6 +106,7 @@ define([ slicingEnd1: '', slicingStart2: '', slicingEnd2: '', + singleColumn: '', ndRowType: 'slicing', ndColType: 'slicing', useIndex: false, @@ -409,6 +418,19 @@ define([ } } + templateForSingleSelector() { + return ` +
+ +
+ + +
+
+ ` + } + templateForMultiSelector() { return `
@@ -599,22 +621,93 @@ define([ switch (dataType) { case 'DataFrame': - // render option page - $(this.wrapSelector('.vp-ds-option-inner-box')).html(this.templateForMultiSelector()); // column selecting - this._columnSelector = new MultiSelector(this.wrapSelector('.vp-ds-df-multiselector'), - { mode: 'columns', parent: [data], selectedList: this.state.indexing, allowAdd: true } - ); - + if (this.prop.columnSelection === 'single') { + // render option page + $(this.wrapSelector('.vp-ds-option-inner-box')).html(this.templateForSingleSelector()); + // bind column source + // com_generator.vp_bindColumnSource(this, 'data', ['singleColumn'], 'select', false, false); + // vp_bindColumnSource(pageThis, targetId, columnInputIdList, tagType="input", columnWithEmpty=false, columnWithIndex=false) + const columnInputIdList = ['singleColumn']; + if (data === '') { + // reset with no source + columnInputIdList && columnInputIdList.forEach(columnInputId => { + let defaultValue = that.state[columnInputId]; + if (defaultValue === null || defaultValue === undefined) { + defaultValue = ''; + } + // option tags + var tag = $('').attr({ + 'id': columnInputId, + 'class': 'vp-select vp-state' + }); + $(that.wrapSelector('#' + columnInputId)).replaceWith(function() { + return $(tag); + }); + }); + return ; + } + // get result and show on detail box + vpKernel.getColumnList(data).then(function(resultObj) { + try { + let { result, type, msg } = resultObj; + var { list } = JSON.parse(result); + + // columns using suggestInput + columnInputIdList && columnInputIdList.forEach((columnInputId, idx) => { + let defaultValue = that.state[columnInputId]; + if (defaultValue === null || defaultValue === undefined) { + defaultValue = ''; + } + // create tag + var tag = $('').attr({ + 'id': columnInputId, + 'class': 'vp-select vp-state w150' + }); + // make tag + list.forEach((listVar, idx) => { + var option = document.createElement('option'); + $(option).attr({ + 'value':listVar.value, + 'text':listVar.label, + 'data-type':listVar.dtype + }); + // cell metadata test : defaultValue as selected + if (listVar.value === defaultValue) { + $(option).prop('selected', true); + } + option.append(document.createTextNode(listVar.label)); + $(tag).append(option); + }); + $(that.wrapSelector('#' + columnInputId)).replaceWith(function() { + return $(tag); + }); + $(that.wrapSelector('#' + columnInputId)).trigger('change'); + }).catch(function(err) { + vpLog.display(VP_LOG_TYPE.ERROR, 'com_generator - bindColumnSource error ', err) + }); + } catch (e) { + vpLog.display(VP_LOG_TYPE.ERROR, 'com_generator - bindColumnSource: not supported data type. ', e); + } + }); + } else { + // render option page + $(this.wrapSelector('.vp-ds-option-inner-box')).html(this.templateForMultiSelector()); + this._columnSelector = new MultiSelector(this.wrapSelector('.vp-ds-df-multiselector'), + { mode: 'columns', parent: [data], selectedList: this.state.indexing, allowAdd: true } + ); + } // bind event $(this.wrapSelector('#useIndex')).on('change', function() { let checked = $(this).prop('checked'); that.state.useIndex = checked; if (checked === true) { $(that.wrapSelector('.vp-ds-df-multiselector')).hide(); + $(that.wrapSelector('.vp-ds-df-singleselector')).hide(); $(that.wrapSelector('.vp-ds-df-index-box')).show(); } else { $(that.wrapSelector('.vp-ds-df-multiselector')).show(); + $(that.wrapSelector('.vp-ds-df-singleselector')).show(); $(that.wrapSelector('.vp-ds-df-index-box')).hide(); } }); @@ -728,6 +821,7 @@ define([ let { data, dataType, useIndex, + singleColumn, slicingStart1, slicingEnd1, slicingStart2, slicingEnd2, ndRowType, ndColType @@ -742,21 +836,39 @@ define([ code.append('.index'); } else { // use column selector - if (this._columnSelector != null) { - let result = this._columnSelector.getDataList(); - this.state.indexing = result.map(obj => obj.code); // save state - let columnList = []; - result && result.forEach(obj => { - columnList.push(obj.code); - }); - if (columnList.length > 0) { - if (columnList.length == 1) { - // return as Series - code.appendFormat('[{0}]', columnList.join(', ')); - // change datatype to Series - this.state.returnDataType = 'Series'; - } else { - code.appendFormat('[[{0}]]', columnList.join(', ')); + if (this.prop.columnSelection === 'single') { + // single selector + if (this.prop.returnFrameType === 'DataFrame') { + // return as DataFrame + code.appendFormat('[[{0}]]', singleColumn); + } else { + // return as Series + code.appendFormat('[{0}]', singleColumn); + this.state.returnDataType = 'Series'; + } + } else { + // multiple selector + if (this._columnSelector != null) { + let result = this._columnSelector.getDataList(); + this.state.indexing = result.map(obj => obj.code); // save state + let columnList = []; + result && result.forEach(obj => { + columnList.push(obj.code); + }); + if (columnList.length > 0) { + if (columnList.length == 1) { + if (this.prop.returnFrameType === 'DataFrame') { + // return as DataFrame + code.appendFormat('[[{0}]]', columnList.join(', ')); + } else { + // return as Series + code.appendFormat('[{0}]', columnList.join(', ')); + // change datatype to Series + this.state.returnDataType = 'Series'; + } + } else { + code.appendFormat('[[{0}]]', columnList.join(', ')); + } } } } diff --git a/visualpython/js/com/component/ModelEditor.js b/visualpython/js/com/component/ModelEditor.js index da24a5d0..c2fab057 100644 --- a/visualpython/js/com/component/ModelEditor.js +++ b/visualpython/js/com/component/ModelEditor.js @@ -125,7 +125,7 @@ define([ code: '${model}.fit(${fit_featureData})', description: 'Fit Encoder/Scaler to X.', options: [ - { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' } + { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' } ] }, 'fit_transform': { @@ -134,13 +134,19 @@ define([ code: '${fit_trans_allocate} = ${model}.fit_transform(${fit_trans_featureData})', description: 'Fit Encoder/Scaler to X, then transform X.', options: [ - { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'fit_trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } ] }, 'transform': { - ...defaultActions['transform'], - description: 'Transform labels to normalized encoding.' + name: 'transform', + label: 'Transform', + code: '${trans_allocate} = ${model}.transform(${trans_featureData})', + description: 'Transform labels to normalized encoding.', + options: [ + { name: 'trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, + { name: 'trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } + ] } } if (modelType != 'ColumnTransformer') { @@ -152,12 +158,49 @@ define([ code: '${inverse_allocate} = ${model}.inverse_transform(${inverse_featureData})', description: 'Transform binary labels back to multi-class labels.', options: [ - { name: 'inverse_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'inverse_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'inverse_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'inv_trans' } ] } } } + if (modelType == 'LabelEncoder') { + actions = { + ...actions, + 'fit': { + name: 'fit', + label: 'Fit', + code: '${model}.fit(${fit_featureData})', + description: 'Fit Encoder/Scaler to X.', + options: [ + { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', + columnSelection: 'single', returnFrameType: 'Series' } + ] + }, + 'fit_transform': { + name: 'fit_transform', + label: 'Fit and transform', + code: '${fit_trans_allocate} = ${model}.fit_transform(${fit_trans_featureData})', + description: 'Fit Encoder/Scaler to X, then transform X.', + options: [ + { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', + columnSelection: 'single', returnFrameType: 'Series' }, + { name: 'fit_trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } + ] + }, + 'transform': { + name: 'transform', + label: 'Transform', + code: '${trans_allocate} = ${model}.transform(${trans_featureData})', + description: 'Transform labels to normalized encoding.', + options: [ + { name: 'trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', + columnSelection: 'single', returnFrameType: 'Series' }, + { name: 'trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } + ] + } + } + } if (modelType === 'SMOTE') { actions = { 'fit': { @@ -322,7 +365,7 @@ define([ code: '${model}.fit(${fit_featureData})', description: 'Fit X into an embedded space.', options: [ - { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' } + { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' } ] }, 'fit_transform': { @@ -331,7 +374,7 @@ define([ code: '${fit_trans_allocate} = ${model}.fit_transform(${fit_trans_featureData})', description: 'Fit X into an embedded space and return that transformed output.', options: [ - { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'fit_trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } ] } @@ -346,17 +389,17 @@ define([ code: '${model}.fit(${fit_featureData}, ${fit_targetData})', description: 'Fit the Linear Discriminant Analysis model.', options: [ - { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'fit_targetData', label: 'Target Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'y' } ] }, 'fit_transform': { name: 'fit_transform', label: 'Fit and transform', - code: '${fit_trans_allocate} = ${model}.fit_transform(${fit_trans_featureData}${fit_trans_targetData})', + code: '${fit_trans_allocate} = ${model}.fit_transform(${fit_trans_featureData}, ${fit_trans_targetData})', description: 'Fit to data, then transform it.', options: [ - { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'fit_trans_targetData', label: 'Target Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'y' }, { name: 'fit_trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } ] @@ -367,7 +410,7 @@ define([ code: '${pred_allocate} = ${model}.predict(${pred_featureData})', description: 'Predict class labels for samples in X.', options: [ - { name: 'pred_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'pred_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'pred_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'pred' } ] }, @@ -377,7 +420,7 @@ define([ code: '${trans_allocate} = ${model}.transform(${trans_featureData})', description: 'Project data to maximize class separation.', options: [ - { name: 'trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } ] } @@ -391,7 +434,7 @@ define([ code: '${model}.fit(${fit_featureData})', description: 'Fit X into an embedded space.', options: [ - { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' } + { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' } ] }, 'fit_transform': { @@ -400,7 +443,7 @@ define([ code: '${fit_trans_allocate} = ${model}.fit_transform(${fit_trans_featureData})', description: 'Fit the model with X and apply the dimensionality reduction on X.', options: [ - { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'fit_trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } ] }, @@ -410,7 +453,7 @@ define([ code: '${inverse_allocate} = ${model}.inverse_transform(${inverse_featureData})', description: 'Transform data back to its original space.', options: [ - { name: 'inverse_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'inverse_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'inverse_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'inv_trans' } ] }, @@ -420,7 +463,7 @@ define([ code: '${trans_allocate} = ${model}.transform(${trans_featureData})', description: 'Apply dimensionality reduction to X.', options: [ - { name: 'trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } ] } diff --git a/visualpython/js/com/component/MultiSelector.js b/visualpython/js/com/component/MultiSelector.js index 33546d79..d9d3d9fa 100644 --- a/visualpython/js/com/component/MultiSelector.js +++ b/visualpython/js/com/component/MultiSelector.js @@ -443,62 +443,6 @@ define([ that._bindItemClickEvent(); }); - // item indexing - $(this.wrapSelector('.' + APP_SELECT_ITEM)).on('click', function(event) { - var dataIdx = $(this).attr('data-idx'); - var idx = $(this).index(); - var added = $(this).hasClass('added'); // right side added item? - var selector = ''; - - // remove selection for select box on the other side - if (added) { - // remove selection for left side - $(that.wrapSelector('.' + APP_SELECT_ITEM + ':not(.added)')).removeClass('selected'); - // set selector - selector = '.added'; - } else { - // remove selection for right(added) side - $(that.wrapSelector('.' + APP_SELECT_ITEM + '.added')).removeClass('selected'); - // set selector - selector = ':not(.added)'; - } - - if (vpEvent.keyManager.keyCheck.ctrlKey) { - // multi-select - that.pointer = { start: idx, end: -1 }; - $(this).toggleClass('selected'); - } else if (vpEvent.keyManager.keyCheck.shiftKey) { - // slicing - var startIdx = that.pointer.start; - - if (startIdx == -1) { - // no selection - that.pointer = { start: idx, end: -1 }; - } else if (startIdx > idx) { - // add selection from idx to startIdx - var tags = $(that.wrapSelector('.' + APP_SELECT_ITEM + selector)); - for (var i = idx; i <= startIdx; i++) { - $(tags[i]).addClass('selected'); - } - that.pointer = { start: startIdx, end: idx }; - } else if (startIdx <= idx) { - // add selection from startIdx to idx - var tags = $(that.wrapSelector('.' + APP_SELECT_ITEM + selector)); - for (var i = startIdx; i <= idx; i++) { - $(tags[i]).addClass('selected'); - } - that.pointer = { start: startIdx, end: idx }; - } - } else { - // single-select - that.pointer = { start: idx, end: -1 }; - // un-select others - $(that.wrapSelector('.' + APP_SELECT_ITEM + selector)).removeClass('selected'); - // select this - $(this).addClass('selected'); - } - }); - // item indexing - add all $(this.wrapSelector('.' + APP_SELECT_ADD_ALL_BTN)).on('click', function(event) { $(that.wrapSelector('.' + APP_SELECT_BOX + '.left .' + APP_SELECT_ITEM)).appendTo( @@ -702,6 +646,7 @@ define([ let newItemIndex = this.dataList.length; var targetTag = $(`
${newItemName} +
`); $(targetTag).appendTo( $(this.wrapSelector('.' + APP_SELECT_BOX + '.right')) @@ -711,6 +656,8 @@ define([ $(this.wrapSelector('.' + APP_SELECT_ITEM)).removeClass('selected'); // clear item input $(this.wrapSelector('.vp-cs-add-item-name')).val(''); + // bind click event + this._bindItemClickEvent(); // bind draggable this.bindDraggable(); } diff --git a/visualpython/js/m_apps/File.js b/visualpython/js/m_apps/File.js index bd93c4de..7e6bd848 100644 --- a/visualpython/js/m_apps/File.js +++ b/visualpython/js/m_apps/File.js @@ -498,15 +498,15 @@ define([ return suggestInput.toTagString(); }); - // seperator suggest input + // separator suggest input $(this.wrapSelector('#sep')).replaceWith(function() { - // seperator list : + // separator list : var sepList = [',', '|', '\\t', '\\n', ':', ';', '-', '_', '&', '/', '\\']; var suggestInput = new SuggestInput(); suggestInput.setComponentID('sep'); suggestInput.addClass('vp-input vp-state'); suggestInput.setSuggestList(function() { return sepList; }); - suggestInput.setPlaceholder('Input seperator'); + suggestInput.setPlaceholder('Input separator'); return suggestInput.toTagString(); }); } diff --git a/visualpython/js/m_apps/Frame.js b/visualpython/js/m_apps/Frame.js index 438dfc79..4e91083d 100644 --- a/visualpython/js/m_apps/Frame.js +++ b/visualpython/js/m_apps/Frame.js @@ -115,10 +115,10 @@ define([ id: 'encoding', label: 'Encoding', axis: FRAME_AXIS.COLUMN, - selection: FRAME_SELECT_TYPE.SINGLE, + selection: FRAME_SELECT_TYPE.MULTI, child: [ - { id: 'label_encoding', label: 'Label encoding', axis: FRAME_AXIS.COLUMN, selection: FRAME_SELECT_TYPE.SINGLE, menuType: FRAME_EDIT_TYPE.LABEL_ENCODING }, - { id: 'one_hot_encoding', label: 'Onehot encoding', axis: FRAME_AXIS.COLUMN, selection: FRAME_SELECT_TYPE.SINGLE, menuType: FRAME_EDIT_TYPE.ONE_HOT_ENCODING }, + { id: 'label_encoding', label: 'Label encoding', axis: FRAME_AXIS.COLUMN, selection: FRAME_SELECT_TYPE.MULTI, menuType: FRAME_EDIT_TYPE.LABEL_ENCODING }, + { id: 'one_hot_encoding', label: 'Onehot encoding', axis: FRAME_AXIS.COLUMN, selection: FRAME_SELECT_TYPE.MULTI, menuType: FRAME_EDIT_TYPE.ONE_HOT_ENCODING }, ] }, { @@ -968,6 +968,23 @@ define([ }); }); + // change operator selection + $(document).off('change', this.wrapSelector('.vp-inner-popup-apply-oper-list')); + $(document).on('change', this.wrapSelector('.vp-inner-popup-apply-oper-list'), function () { + var oper = $(this).val(); + var condTag = $(this).closest('td').find('.vp-inner-popup-apply-condition'); + var useTextTag = $(this).closest('td').find('.vp-inner-popup-apply-cond-usetext'); + + // if operator is isnull(), notnull(), disable condition input + if (oper == 'isnull()' || oper == 'notnull()') { + $(condTag).prop('disabled', true); + $(useTextTag).prop('disabled', true); + } else { + $(condTag).prop('disabled', false); + $(useTextTag).prop('disabled', false); + } + }); + $(this.wrapSelector('.vp-inner-popup-toggle-else')).on('click', function() { // toggle else on/off let elseOn = $(this).attr('data-else'); // on / off @@ -2767,7 +2784,7 @@ define([ var condText = $(condTextTag[i]).prop('checked'); var operConn = $(operConnTag[i]).val(); var condObj = {}; - if (col !== '' && oper !== '' && cond !== '') { + if (col !== '' && oper !== '' && (oper == 'isnull()' || oper === 'notnull()' || cond !== '')) { condObj = { oper: oper, cond: com_util.convertToStr(cond, condText) @@ -2808,7 +2825,7 @@ define([ var condText = $(condTextTag[i]).prop('checked'); var operConn = $(operConnTag[i]).val(); var condObj = {}; - if (col !== '' && oper !== '' && cond !== '') { + if (col !== '' && oper !== '' && (oper == 'isnull()' || oper === 'notnull()' || cond !== '')) { condObj = { colName: col, oper: oper, @@ -2861,7 +2878,7 @@ define([ var condText = $(condTextTag[i]).prop('checked'); var operConn = $(operConnTag[i]).val(); var condObj = {}; - if (col !== '' && oper !== '' && cond !== '') { + if (col !== '' && oper !== '' && (oper == 'isnull()' || oper === 'notnull()' || cond !== '')) { condObj = { colName: col, oper: oper, @@ -2894,7 +2911,7 @@ define([ var condText = $(condTextTag[i]).prop('checked'); var operConn = $(operConnTag[i]).val(); var condObj = {}; - if (col !== '' && oper !== '' && cond !== '') { + if (col !== '' && oper !== '' && (oper == 'isnull()' || oper === 'notnull()' || cond !== '')) { condObj = { oper: oper, cond: com_util.convertToStr(cond, condText) @@ -3237,13 +3254,18 @@ define([ break; case FRAME_EDIT_TYPE.LABEL_ENCODING: if (axis == FRAME_AXIS.COLUMN) { - let encodedColName = this.state.selected.map(col=> { + let encodedColNameList = this.state.selected.map(col=> { if (col.code !== col.label) { - return com_util.formatString("'{0}'", col.label + '_label'); + return { 'origin': com_util.formatString("'{0}'", col.label), 'encoded': com_util.formatString("'{0}'", col.label + '_label') }; + } + return { 'origin': col.label, 'encoded': col.label + '_label' }; + }); + encodedColNameList.forEach((encodedColObj, idx) => { + if (idx > 0) { + code.appendLine(); } - return col.label + '_label' - }).join(','); - code.appendFormat("{0}[{1}] = pd.Categorical({2}[{3}]).codes", tempObj, encodedColName, tempObj, selectedName); + code.appendFormat("{0}[{1}] = pd.Categorical({2}[{3}]).codes", tempObj, encodedColObj['encoded'], tempObj, encodedColObj['origin']); + }); } break; case FRAME_EDIT_TYPE.ONE_HOT_ENCODING: @@ -3338,7 +3360,21 @@ define([ let condCode = ''; obj.condList.forEach((condObj, idx) => { let { oper, cond, connector } = condObj; - condCode += `(x ${oper} ${cond})`; + if (oper === 'isnull()') { + condCode += `(pd.isnull(x))`; + } else if (oper === 'notnull()') { + condCode += `(pd.notnull(x))`; + } else if (oper === 'contains') { + condCode += `(${cond} in x)`; + } else if (oper === 'not contains') { + condCode += `(${cond} not in x)`; + } else if (oper === 'starts with') { + condCode += `(x.startswith(${cond}))`; + } else if (oper === 'ends with') { + condCode += `(x.endswith(${cond}))`; + } else { + condCode += `(x ${oper} ${cond})`; + } if (connector !== undefined) { condCode += ` ${connector} `; } @@ -3479,7 +3515,21 @@ define([ let condCode = ''; obj.condList.forEach((condObj, idx) => { let { oper, cond, connector } = condObj; - condCode += `(x ${oper} ${cond})`; + if (oper === 'isnull()') { + condCode += `pd.isnull(x)`; + } else if (oper === 'notnull()') { + condCode += `pd.notnull(x)`; + } else if (oper === 'contains') { + condCode += `(${cond} in x)`; + } else if (oper === 'not contains') { + condCode += `(${cond} not in x)`; + } else if (oper === 'starts with') { + condCode += `(x.startswith(${cond}))`; + } else if (oper === 'ends with') { + condCode += `(x.endswith(${cond}))`; + } else { + condCode += `(x ${oper} ${cond})`; + } if (connector !== undefined) { condCode += ` ${connector} `; } @@ -3570,7 +3620,12 @@ define([ code.appendFormat(", limit={0}", content['limit']); } } else { - code.appendFormat("{0}.{1}()", subsetObjStr, content['method']); + if (content['method'] === 'mode') { + // get mode()'s first element (mode returns Series) + code.appendFormat("{0}.{1}()[0]", subsetObjStr, content['method']); + } else { + code.appendFormat("{0}.{1}()", subsetObjStr, content['method']); + } } code.append(')'); break; diff --git a/visualpython/js/m_apps/Groupby.js b/visualpython/js/m_apps/Groupby.js index 7b61d561..589882f0 100644 --- a/visualpython/js/m_apps/Groupby.js +++ b/visualpython/js/m_apps/Groupby.js @@ -177,7 +177,7 @@ define([ var colList = event.dataList; that.state.display = colList; - if (colList && colList.length == 1) { + if ((colList && colList.length == 1) || that.state.method === 'size') { $(that.wrapSelector('#vp_gbToFrame')).parent().show(); } else { $(that.wrapSelector('#vp_gbToFrame')).parent().hide(); @@ -196,6 +196,12 @@ define([ var method = $(this).val(); that.state.method = method; $(that.wrapSelector('#vp_gbMethod')).val(method); + + if (method === 'size' || (that.state.display && that.state.display.length == 1)) { + $(that.wrapSelector('#vp_gbToFrame')).parent().show(); + } else { + $(that.wrapSelector('#vp_gbToFrame')).parent().hide(); + } }); // advanced checkbox event @@ -744,7 +750,7 @@ define([ // Display columns //==================================================================== var colStr = ''; - if (display) { + if (display && display.length > 0) { if (toFrame || display.length > 1) { // over 2 columns colStr = '[[' + display.join(',') + ']]'; @@ -891,6 +897,10 @@ define([ methodStr.appendFormat('{0}(numeric_only=True)', method); } else { methodStr.appendFormat('{0}()', method); + if (method === 'size' && toFrame === true) { + // if to_Frame on size() method + methodStr.append(".to_frame(name='size')"); + } } } } diff --git a/visualpython/js/m_apps/Subset.js b/visualpython/js/m_apps/Subset.js index 35f2e74e..41af3ef4 100644 --- a/visualpython/js/m_apps/Subset.js +++ b/visualpython/js/m_apps/Subset.js @@ -343,10 +343,13 @@ define([ $(this.wrapSelector('.select-row .vp-ds-select-box.left')).on('scroll', function() { if ($(this).scrollTop() + $(this).innerHeight() >= ($(this)[0].scrollHeight - 2)) { let scrollPos = $(this).scrollTop(); + if (that.state.rowLimit > that.state.rowList.length){ + return; // Prevents scroll from being fixed downwards + } let start = that.state.rowLimit; let end = start + 10; let subsetVariable = com_util.formatString('{0}.iloc[{1}:{2}]', that.state.pandasObject, start, end); - vpKernel.getRowList(subsetVariable).then(function (resultObj) { + vpKernel.getRowList(subsetVariable, start).then(function (resultObj) { let { result } = resultObj; var { list:rowList } = JSON.parse(result); rowList = rowList.map(function (x) { @@ -361,9 +364,9 @@ define([ rowList = rowList.map(function (x) { return { ...x, - label: x.location + '', - value: x.location + '', - code: x.location + '', + label: x.label + '', + value: x.value + '', + code: x.code + '', }; }); } @@ -1810,6 +1813,10 @@ define([ rowSelection.append(')'); } else { rowSelection.appendFormat('({0}', varName); + if (colName == '.index') { + // index + rowSelection.append('.index'); + } oper && rowSelection.appendFormat(' {0}', oper); if (cond) { // condition value as text @@ -1863,7 +1870,7 @@ define([ var colList = []; for (var i = 0; i < colTags.length; i++) { var colValue = $(colTags[i]).data('code'); - if (colValue) { + if (colValue !== undefined) { colList.push(colValue); } } @@ -1873,7 +1880,7 @@ define([ $(this.wrapSelector('.' + VP_DS_TO_FRAME)).parent().show(); // to frame - if (this.state.toFrame) { + if (this.state.toFrame === true) { colSelection.appendFormat('[{0}]', colList.toString()); this.state.returnType = 'DataFrame'; } else { diff --git a/visualpython/js/m_ml/Classification.js b/visualpython/js/m_ml/Classification.js index f487be39..f327b611 100644 --- a/visualpython/js/m_ml/Classification.js +++ b/visualpython/js/m_ml/Classification.js @@ -50,7 +50,7 @@ define([ this.modelConfig = ML_LIBRARIES; this.modelTypeList = { - 'Classfication': ['lg-rgs', 'bern-nb', 'mulnom-nb', 'gaus-nb', 'sv-clf', 'dt-clf', 'rf-clf', 'gbm-clf', 'xgb-clf', 'lgbm-clf', 'cb-clf'], + 'Classification': ['lg-rgs', 'bern-nb', 'mulnom-nb', 'gaus-nb', 'sv-clf', 'dt-clf', 'rf-clf', 'gbm-clf', 'xgb-clf', 'lgbm-clf', 'cb-clf'], } diff --git a/visualpython/js/m_ml/Clustering.js b/visualpython/js/m_ml/Clustering.js index c3781201..95ee735c 100644 --- a/visualpython/js/m_ml/Clustering.js +++ b/visualpython/js/m_ml/Clustering.js @@ -51,7 +51,7 @@ define([ this.modelTypeList = { // 'Regression': ['ln-rgs', 'sv-rgs', 'dt-rgs', 'rf-rgs', 'gbm-rgs', 'xgb-rgs', 'lgbm-rgs', 'cb-rgs'], - // 'Classfication': ['lg-rgs', 'sv-clf', 'dt-clf', 'rf-clf', 'gbm-clf', 'xgb-clf', 'lgbm-clf', 'cb-clf'], + // 'Classification': ['lg-rgs', 'sv-clf', 'dt-clf', 'rf-clf', 'gbm-clf', 'xgb-clf', 'lgbm-clf', 'cb-clf'], // 'Auto ML': ['tpot-rgs', 'tpot-clf'], 'Clustering': ['k-means', 'agg-cls', 'gaus-mix', 'dbscan'], // 'Dimension Reduction': ['pca', 'lda', 'svd', 'nmf'] diff --git a/visualpython/js/m_ml/FitPredict.js b/visualpython/js/m_ml/FitPredict.js index cdd979b9..d48c20c5 100644 --- a/visualpython/js/m_ml/FitPredict.js +++ b/visualpython/js/m_ml/FitPredict.js @@ -41,6 +41,8 @@ define([ method: '', action: {}, optionConfig: {}, + modelEditorType: '', + modelEditorName: '', userOption: '', ...this.state } @@ -315,7 +317,7 @@ define([ } generateCode() { - let { model } = this.state; + let { model, modelType, modelEditorName } = this.state; let code = new com_String(); let replaceDict = {'${model}': model}; @@ -336,6 +338,31 @@ define([ code.appendLine(); code.append(allocateCode); } + // Data Preparation > Scaling + const scalingTypeList = ['StandardScaler', 'RobustScaler', 'MinMaxScaler', 'Normalizer']; + // Dimension Reduction + const dimensionTypeList = ['PCA', 'NMF']; + if (scalingTypeList.includes(modelType) || dimensionTypeList.includes(modelType)) { + // fit_transform, transform returns df_trans also + switch (modelEditorName) { + case 'fit_transform': + const allocatedFitTrans = this.state.fit_trans_allocate || 'trans'; + code.appendLine(); + code.appendLine(); + code.appendFormatLine("df_{0} = pd.DataFrame({1}, columns=[{2}])", allocatedFitTrans, allocatedFitTrans, this.state.fit_trans_featureData); + code.append("df_" + allocatedFitTrans); + break; + case 'transform': + const allocatedTrans = this.state.trans_allocate || 'trans'; + code.appendLine(); + code.appendLine(); + code.appendFormatLine("df_{0} = pd.DataFrame({1}, columns=[{2}])", allocatedTrans, allocatedTrans, this.state.trans_featureData); + code.append("df_" + allocatedTrans); + break; + default: + break; + } + } } return code.toString(); @@ -409,7 +436,7 @@ define([ code: '${model}.fit(${fit_featureData})', description: 'Fit Encoder/Scaler to X.', options: [ - { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' } + { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' } ] }, 'fit_transform': { @@ -418,13 +445,19 @@ define([ code: '${fit_trans_allocate} = ${model}.fit_transform(${fit_trans_featureData})', description: 'Fit Encoder/Scaler to X, then transform X.', options: [ - { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'fit_trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } ] }, 'transform': { - ...defaultActions['transform'], - description: 'Transform labels to normalized encoding.' + name: 'transform', + label: 'Transform', + code: '${trans_allocate} = ${model}.transform(${trans_featureData})', + description: 'Transform labels to normalized encoding.', + options: [ + { name: 'trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, + { name: 'trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } + ] } } if (modelType != 'ColumnTransformer') { @@ -436,12 +469,49 @@ define([ code: '${inverse_allocate} = ${model}.inverse_transform(${inverse_featureData})', description: 'Transform binary labels back to multi-class labels.', options: [ - { name: 'inverse_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'inverse_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'inverse_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'inv_trans' } ] } } } + if (modelType == 'LabelEncoder') { + actions = { + ...actions, + 'fit': { + name: 'fit', + label: 'Fit', + code: '${model}.fit(${fit_featureData})', + description: 'Fit Encoder/Scaler to X.', + options: [ + { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', + columnSelection: 'single', returnFrameType: 'Series' } + ] + }, + 'fit_transform': { + name: 'fit_transform', + label: 'Fit and transform', + code: '${fit_trans_allocate} = ${model}.fit_transform(${fit_trans_featureData})', + description: 'Fit Encoder/Scaler to X, then transform X.', + options: [ + { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', + columnSelection: 'single', returnFrameType: 'Series' }, + { name: 'fit_trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } + ] + }, + 'transform': { + name: 'transform', + label: 'Transform', + code: '${trans_allocate} = ${model}.transform(${trans_featureData})', + description: 'Transform labels to normalized encoding.', + options: [ + { name: 'trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', + columnSelection: 'single', returnFrameType: 'Series' }, + { name: 'trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } + ] + } + } + } if (modelType === 'SMOTE') { actions = { 'fit': { @@ -606,7 +676,7 @@ define([ code: '${model}.fit(${fit_featureData})', description: 'Fit X into an embedded space.', options: [ - { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' } + { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' } ] }, 'fit_transform': { @@ -615,7 +685,7 @@ define([ code: '${fit_trans_allocate} = ${model}.fit_transform(${fit_trans_featureData})', description: 'Fit X into an embedded space and return that transformed output.', options: [ - { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'fit_trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } ] } @@ -630,7 +700,7 @@ define([ code: '${model}.fit(${fit_featureData}, ${fit_targetData})', description: 'Fit the Linear Discriminant Analysis model.', options: [ - { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'fit_targetData', label: 'Target Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'y' } ] }, @@ -640,7 +710,7 @@ define([ code: '${fit_trans_allocate} = ${model}.fit_transform(${fit_trans_featureData}${fit_trans_targetData})', description: 'Fit to data, then transform it.', options: [ - { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'fit_trans_targetData', label: 'Target Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'y' }, { name: 'fit_trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } ] @@ -651,7 +721,7 @@ define([ code: '${pred_allocate} = ${model}.predict(${pred_featureData})', description: 'Predict class labels for samples in X.', options: [ - { name: 'pred_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'pred_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'pred_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'pred' } ] }, @@ -661,7 +731,7 @@ define([ code: '${trans_allocate} = ${model}.transform(${trans_featureData})', description: 'Project data to maximize class separation.', options: [ - { name: 'trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } ] } @@ -675,7 +745,7 @@ define([ code: '${model}.fit(${fit_featureData})', description: 'Fit X into an embedded space.', options: [ - { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' } + { name: 'fit_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' } ] }, 'fit_transform': { @@ -684,7 +754,7 @@ define([ code: '${fit_trans_allocate} = ${model}.fit_transform(${fit_trans_featureData})', description: 'Fit the model with X and apply the dimensionality reduction on X.', options: [ - { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'fit_trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'fit_trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } ] }, @@ -694,7 +764,7 @@ define([ code: '${inverse_allocate} = ${model}.inverse_transform(${inverse_featureData})', description: 'Transform data back to its original space.', options: [ - { name: 'inverse_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'inverse_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'inverse_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'inv_trans' } ] }, @@ -704,7 +774,7 @@ define([ code: '${trans_allocate} = ${model}.transform(${trans_featureData})', description: 'Apply dimensionality reduction to X.', options: [ - { name: 'trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X' }, + { name: 'trans_featureData', label: 'Feature Data', component: ['data_select'], var_type: ['DataFrame', 'Series', 'ndarray', 'list', 'dict'], value: 'X', returnFrameType: 'DataFrame' }, { name: 'trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' } ] } diff --git a/visualpython/js/m_ml/GridSearch.js b/visualpython/js/m_ml/GridSearch.js index 32dbc967..1dfdbaa4 100644 --- a/visualpython/js/m_ml/GridSearch.js +++ b/visualpython/js/m_ml/GridSearch.js @@ -49,7 +49,7 @@ define([ this.modelTypeList = { 'Regression': ['ln-rgs', 'ridge', 'lasso', 'elasticnet', 'sv-rgs', 'dt-rgs', 'rf-rgs', 'gbm-rgs', 'xgb-rgs', 'lgbm-rgs', 'cb-rgs'], - 'Classfication': ['lg-rgs', 'bern-nb', 'mulnom-nb', 'gaus-nb', 'sv-clf', 'dt-clf', 'rf-clf', 'gbm-clf', 'xgb-clf', 'lgbm-clf', 'cb-clf'] + 'Classification': ['lg-rgs', 'bern-nb', 'mulnom-nb', 'gaus-nb', 'sv-clf', 'dt-clf', 'rf-clf', 'gbm-clf', 'xgb-clf', 'lgbm-clf', 'cb-clf'] } diff --git a/visualpython/js/m_ml/Pipeline.js b/visualpython/js/m_ml/Pipeline.js index 6dfc1989..856c33db 100644 --- a/visualpython/js/m_ml/Pipeline.js +++ b/visualpython/js/m_ml/Pipeline.js @@ -210,6 +210,7 @@ define([ $(that.wrapSelector(`.vp-pp-step-page:not([data-name="${name}"])`)).hide(); $(that.wrapSelector(`.vp-pp-step-page[data-name="${name}"]`)).show(); if (ppObj.useApp === true) { + ppObj.app && that.handleAppView(name, ppObj.app); ppObj.app && ppObj.app.open($(that.wrapSelector(`.vp-pp-step-page[data-name="${name}"]`))); } else { that.renderApp(name); @@ -372,7 +373,7 @@ define([ // click next button $(this.wrapSelector('.vp-pp-step-next:not(.disabled)')).on('click', function() { let selectedTag = $(that.wrapSelector('.vp-pp-item.selected')); - let nextTagList = $(selectedTag).nextAll('.vp-pp-item[data-flag="enabled"]:visible') + let nextTagList = $(selectedTag).nextAll('.vp-pp-item[data-flag="enabled"]:visible'); $(nextTagList[0]).trigger('click'); }); } @@ -562,6 +563,32 @@ define([ case 'ml_dataSplit': $(mlApp.wrapSelector('#inputData')).parent().hide(); break; + case 'ml_evaluation': + // for pipeline + $(mlApp.wrapSelector('.vp-upper-box')).hide(); + $(mlApp.wrapSelector('.vp-upper-box.' + mlApp.state.modelType)).show(); + + $(mlApp.wrapSelector('.vp-eval-box')).hide(); + $(mlApp.wrapSelector('.vp-eval-' + mlApp.state.modelType)).show(); + + if (mlApp.state.modelType == 'rgs') { + // Regression + + } else if (mlApp.state.modelType == 'clf') { + // Classification + // if (this.state.roc_curve == false && this.state.auc == false) { + // $(page).find('.vp-ev-model.roc-auc').prop('disabled', true); + // } + } else { + // Clustering + if (mlApp.state.silhouetteScore == false) { + $(mlApp.wrapSelector('.vp-ev-model.silhouette')).prop('disabled', true); + } + if (mlApp.state.ari == false && mlApp.state.nmi == false) { + $(mlApp.wrapSelector('.vp-ev-model.ari-nmi')).prop('disabled', true); + } + } + break; } } diff --git a/visualpython/js/m_ml/evaluation.js b/visualpython/js/m_ml/evaluation.js index 92c59eca..ed63120c 100644 --- a/visualpython/js/m_ml/evaluation.js +++ b/visualpython/js/m_ml/evaluation.js @@ -158,6 +158,9 @@ define([ $(page).find('.vp-upper-box').hide(); $(page).find('.vp-upper-box.' + this.state.modelType).show(); + + $(page).find('.vp-eval-box').hide(); + $(page).find('.vp-eval-' + this.state.modelType).show(); if (this.state.modelType == 'rgs') { // Regression @@ -204,7 +207,7 @@ define([ let needMarkdown = false; //==================================================================== - // Classfication + // Classification //==================================================================== if (modelType == 'clf') { if (confusion_matrix) { @@ -276,8 +279,8 @@ define([ // } if (r_squared) { code = new com_String(); - code.appendLine("# R square"); - code.appendFormat("print('R square: {}'.format(metrics.r2_score({0}, {1})))", targetData, predictData); + code.appendLine("# R squared"); + code.appendFormat("print('R squared: {}'.format(metrics.r2_score({0}, {1})))", targetData, predictData); codeCells.push(code.toString()); } if (mae) { @@ -351,7 +354,7 @@ define([ ...codeCells ]; } - // return as seperated cells + // return as separated cells return codeCells; } diff --git a/visualpython/js/m_stats/Regression.js b/visualpython/js/m_stats/Regression.js index 89b0738d..a38c811b 100644 --- a/visualpython/js/m_stats/Regression.js +++ b/visualpython/js/m_stats/Regression.js @@ -58,6 +58,7 @@ define([ normTest: true, histogram: true, scatterplot: true, + rmse: false, ...this.state }; @@ -259,7 +260,7 @@ define([ // Multi-collinearity multiCollinearity, // Residual option - statistics, normTest, histogram, scatterplot + statistics, normTest, histogram, scatterplot, rmse, } = this.state; let codeList = []; let code = new com_String(); @@ -697,7 +698,7 @@ define([ } // Residual option - if (statistics === true || normTest === true || histogram === true || scatterplot === true) { + if (statistics === true || normTest === true || histogram === true || scatterplot === true || rmse === true) { let residualTitle = 'Residual' if (lastModelNum > 0) { residualTitle += ' - Model ' + lastModelNum; @@ -768,6 +769,14 @@ define([ code.appendLine(" plt.tight_layout()"); code.append(" plt.show()"); } + if (rmse === true) { + code.appendLine(); + code.appendLine(); + code.appendLine("# RMSE (Root Mean Squared Error)"); + code.appendLine("_rmse = np.sqrt(_result.mse_resid)"); + code.appendLine("display(Markdown('### RMSE (Root Mean Squared Error)'))"); + code.append("display(Markdown(f'RMSE: {_rmse}'))"); + } } codeList.push(code.toString()); diff --git a/visualpython/js/menu/MenuFrame.js b/visualpython/js/menu/MenuFrame.js index 05813295..386916a3 100644 --- a/visualpython/js/menu/MenuFrame.js +++ b/visualpython/js/menu/MenuFrame.js @@ -205,19 +205,19 @@ define([ return {}; } - getMenuLibrary(menuId, libraries=this.menuLibraries) { + getMenuLibrary(menuId, libraries=this.menuLibrariesFlatten) { for (var i=0; i < libraries.length; i++) { var item = libraries[i]; if (item) { if (item.id === menuId) { return item; } - if (item.type === 'package') { - var result = this.getMenuLibrary(menuId, item.item); - if (result) { - return result; - } - } + // if (item.type === 'package') { + // var result = this.getMenuLibrary(menuId, item.item); + // if (result) { + // return result; + // } + // } } } return null; @@ -252,7 +252,12 @@ define([ var that = this; var body = group.getBody(); var item = group.getItem(); + var state = group.getState(); item && item.forEach(child => { + // remember parent to navigate its parent menu + var category = state.category?(state.category + ' > ' + state.name):state.name; + child['category'] = category; + if (child.type == 'package') { // packages : MenuGroup var menuGroup = new MenuGroup($(body), child); @@ -298,7 +303,7 @@ define([ }); let functionList = this.menuLibrariesFlatten.map(menu => { - return { label: menu.name, value: menu.name, ...menu } + return { label: menu.name, value: menu.name, dtype: menu.category, ...menu } }); // render searchbox let searchBox = new SuggestInput(); diff --git a/visualpython/python/pandasCommand.py b/visualpython/python/pandasCommand.py index aee1338d..4f8301c6 100644 --- a/visualpython/python/pandasCommand.py +++ b/visualpython/python/pandasCommand.py @@ -11,7 +11,7 @@ # from IPython.core.display is deprecated since IPython 7.14 from IPython.display import display -def _vp_get_rows_list(df): +def _vp_get_rows_list(df, start_idx=0): """ Get Rows List with Detail Information """ @@ -19,7 +19,8 @@ def _vp_get_rows_list(df): indexType = str(df.index.dtype) # make dict for rows info for i, r in enumerate(df.index): - rInfo = { 'label': r, 'value': r, 'location': i } + rInfo = { 'label': r, 'value': r, 'location': start_idx + i } + # value if type(r).__name__ == 'str': rInfo['value'] = "'{}'".format(r) diff --git a/visualpython/python/userCommand.py b/visualpython/python/userCommand.py index 12ad039b..78034078 100644 --- a/visualpython/python/userCommand.py +++ b/visualpython/python/userCommand.py @@ -130,7 +130,7 @@ def vp_create_permutation_importances(model, X_train, y_train, scoring=None, sor if isinstance(X_train, _vp_pd.core.frame.DataFrame): feature_names = X_train.columns else: - feature_names = [ 'X{}'.format(i) for i in range(len(model.feature_importances_)) ] + feature_names = [ 'X{}'.format(i) for i in range(X_train.shape[1]) ] imp = permutation_importance(model, X_train, y_train, scoring=scoring)