From 840232d98628753446c3c58e86ba9cd9381d37ce Mon Sep 17 00:00:00 2001 From: "RIO\\teodora.misan" Date: Wed, 11 Sep 2024 18:09:28 +0300 Subject: [PATCH] EBR-58: refactor code after pyunicore upgrade version --- package-lock.json | 167 ++++-------------- src/index.tsx | 15 +- tvbextxircuits/hpc_config/pyunicore_config.py | 6 +- tvbextxircuits/nb_generator.py | 8 +- 4 files changed, 47 insertions(+), 149 deletions(-) diff --git a/package-lock.json b/package-lock.json index fbafe88c..1d15bad6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,6 @@ "@projectstorm/react-diagrams": "^6.6.1", "@projectstorm/react-diagrams-defaults": "^6.6.1", "@projectstorm/react-diagrams-routing": "^6.6.1", - "better-react-mathjax": "^2.0.2", "dagre": "^0.8.5", "krc-pagination": "^1.0.1", "marked": "^4.0.18", @@ -34,6 +33,7 @@ "paths-js": "^0.4.11", "rc-dialog": "^8.6.0", "react-accessible-accordion": "^4.0.0", + "react-collapsed": "^4.0.1", "react-draggable": "^4.4.4", "react-image-gallery": "^1.2.7", "react-numeric-input": "^2.2.3", @@ -3058,17 +3058,6 @@ ], "optional": true }, - "node_modules/better-react-mathjax": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/better-react-mathjax/-/better-react-mathjax-2.0.2.tgz", - "integrity": "sha512-GSU/c+LhnMVClkduWpO7fr9Ac2KMOxWs/ePwdFgpffidK3Zg9Vyd3scO6XZbd2QgMUcKnpjEG6hE1sM/EFekSQ==", - "dependencies": { - "mathjax-full": "^3.2.2" - }, - "peerDependencies": { - "react": ">=16.8" - } - }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -4425,14 +4414,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "engines": { - "node": ">=6" - } - }, "node_modules/espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", @@ -6033,17 +6014,6 @@ "node": ">= 12" } }, - "node_modules/mathjax-full": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz", - "integrity": "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==", - "dependencies": { - "esm": "^3.2.25", - "mhchemparser": "^4.1.0", - "mj-context-menu": "^0.6.1", - "speech-rule-engine": "^4.0.6" - } - }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -6068,11 +6038,6 @@ "node": ">= 8" } }, - "node_modules/mhchemparser": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.1.1.tgz", - "integrity": "sha512-R75CUN6O6e1t8bgailrF1qPq+HhVeFTM3XQ0uzI+mXTybmphy3b6h4NbLOYhemViQ3lUs+6CKRkC3Ws1TlYREA==" - }, "node_modules/micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -6223,11 +6188,6 @@ "node": ">= 8" } }, - "node_modules/mj-context-menu": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz", - "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==" - }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -7174,6 +7134,18 @@ "react-dom": "^16.3.3 || ^17.0.0" } }, + "node_modules/react-collapsed": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/react-collapsed/-/react-collapsed-4.1.2.tgz", + "integrity": "sha512-vusqVnW/VbFCKJx29KNTnjJrwCbV7k3bB/FiO9/0Fj7JNoNarkU1xU7yK4FZHqPW0Q2izB7o6fYzG16zgdDNMQ==", + "dependencies": { + "tiny-warning": "^1.0.3" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17 || ^18", + "react-dom": "^16.9.0 || ^17 || ^18" + } + }, "node_modules/react-dom": { "version": "16.14.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", @@ -7918,27 +7890,6 @@ "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, - "node_modules/speech-rule-engine": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.0.7.tgz", - "integrity": "sha512-sJrL3/wHzNwJRLBdf6CjJWIlxC04iYKkyXvYSVsWVOiC2DSkHmxsqOhEeMsBA9XK+CHuNcsdkbFDnoUfAsmp9g==", - "dependencies": { - "commander": "9.2.0", - "wicked-good-xpath": "1.3.0", - "xmldom-sre": "0.1.31" - }, - "bin": { - "sre": "bin/sre" - } - }, - "node_modules/speech-rule-engine/node_modules/commander": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz", - "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==", - "engines": { - "node": "^12.20.0 || >=14" - } - }, "node_modules/speedometer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz", @@ -8318,6 +8269,11 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -8907,11 +8863,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wicked-good-xpath": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", - "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==" - }, "node_modules/wildcard": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", @@ -8973,14 +8924,6 @@ } } }, - "node_modules/xmldom-sre": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom-sre/-/xmldom-sre-0.1.31.tgz", - "integrity": "sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw==", - "engines": { - "node": ">=0.1" - } - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -11641,14 +11584,6 @@ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "optional": true }, - "better-react-mathjax": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/better-react-mathjax/-/better-react-mathjax-2.0.2.tgz", - "integrity": "sha512-GSU/c+LhnMVClkduWpO7fr9Ac2KMOxWs/ePwdFgpffidK3Zg9Vyd3scO6XZbd2QgMUcKnpjEG6hE1sM/EFekSQ==", - "requires": { - "mathjax-full": "^3.2.2" - } - }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -12654,11 +12589,6 @@ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true }, - "esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" - }, "espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", @@ -13830,17 +13760,6 @@ "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.18.tgz", "integrity": "sha512-wbLDJ7Zh0sqA0Vdg6aqlbT+yPxqLblpAZh1mK2+AO2twQkPywvvqQNfEPVwSSRjZ7dZcdeVBIAgiO7MMp3Dszw==" }, - "mathjax-full": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz", - "integrity": "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==", - "requires": { - "esm": "^3.2.25", - "mhchemparser": "^4.1.0", - "mj-context-menu": "^0.6.1", - "speech-rule-engine": "^4.0.6" - } - }, "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -13859,11 +13778,6 @@ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, - "mhchemparser": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.1.1.tgz", - "integrity": "sha512-R75CUN6O6e1t8bgailrF1qPq+HhVeFTM3XQ0uzI+mXTybmphy3b6h4NbLOYhemViQ3lUs+6CKRkC3Ws1TlYREA==" - }, "micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -13971,11 +13885,6 @@ "yallist": "^4.0.0" } }, - "mj-context-menu": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz", - "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==" - }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -14642,6 +14551,14 @@ "integrity": "sha512-MovuWj2Uweo57LSgTIPpB83IYq8BNdZJ44j4NmDKYxaHC/H0JjYiqt8OfNMt+YK+XN8qRON13ERQnLfM73vmqw==", "requires": {} }, + "react-collapsed": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/react-collapsed/-/react-collapsed-4.1.2.tgz", + "integrity": "sha512-vusqVnW/VbFCKJx29KNTnjJrwCbV7k3bB/FiO9/0Fj7JNoNarkU1xU7yK4FZHqPW0Q2izB7o6fYzG16zgdDNMQ==", + "requires": { + "tiny-warning": "^1.0.3" + } + }, "react-dom": { "version": "16.14.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", @@ -15184,23 +15101,6 @@ "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, - "speech-rule-engine": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.0.7.tgz", - "integrity": "sha512-sJrL3/wHzNwJRLBdf6CjJWIlxC04iYKkyXvYSVsWVOiC2DSkHmxsqOhEeMsBA9XK+CHuNcsdkbFDnoUfAsmp9g==", - "requires": { - "commander": "9.2.0", - "wicked-good-xpath": "1.3.0", - "xmldom-sre": "0.1.31" - }, - "dependencies": { - "commander": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz", - "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==" - } - } - }, "speedometer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz", @@ -15492,6 +15392,11 @@ } } }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -15927,11 +15832,6 @@ "is-symbol": "^1.0.3" } }, - "wicked-good-xpath": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", - "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==" - }, "wildcard": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", @@ -15966,11 +15866,6 @@ "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", "requires": {} }, - "xmldom-sre": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom-sre/-/xmldom-sre-0.1.31.tgz", - "integrity": "sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw==" - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/src/index.tsx b/src/index.tsx index 3e8b22f6..cfac8ff5 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -261,12 +261,12 @@ const xircuits: JupyterFrontEndPlugin = { try { let command_str = cfg['command'] + " " + path + " " + cfg['run_config_name'] - + " " + "'" + cfg['project'] + "'" + + " " + cfg['project'] + " " + cfg['stage-out'] - + " " + "'" + cfg['filesystem'] + "'" - + " " + "'" + cfg['python'] + "'" - + " " + "'" + cfg['modules'] + "'" - + " " + "'" + cfg['libraries'] + "'" ; + + " " + cfg['filesystem'] + + " " + cfg['python'] + + " " + cfg['modules'] + + " " + cfg['libraries']; let code_str = "\nfrom subprocess import Popen, PIPE\n\n"; code_str += `command_str= "${command_str}"\n`; @@ -300,15 +300,14 @@ const xircuits: JupyterFrontEndPlugin = { await createPanel(); } - // Convert the model_path to be bash aware - model_path = `"${model_path}"` - outputPanel.session.ready.then(async () => { let code = startRunOutputStr(); if (runType == 'remote-run') { // Run subprocess when run type is Remote Run code += doRemoteRun(model_path, config); } else { + // Convert the model_path to be bash aware + model_path = `"${model_path}"` code += `%run ${model_path} ${message} ${debug_mode}` } diff --git a/tvbextxircuits/hpc_config/pyunicore_config.py b/tvbextxircuits/hpc_config/pyunicore_config.py index 0fb29803..95ae0280 100644 --- a/tvbextxircuits/hpc_config/pyunicore_config.py +++ b/tvbextxircuits/hpc_config/pyunicore_config.py @@ -13,8 +13,8 @@ from urllib.error import HTTPError import pyunicore.client as unicore_client import requests -from pyunicore.helpers.jobs import Status as unicore_status -from pyunicore.credentials import AuthenticationFailedException +from pyunicore.client import JobStatus as unicore_status +from pyunicore.credentials import AuthenticationFailedException, OIDCToken from tvb_ext_bucket.ebrains_drive_wrapper import BucketWrapper from tvb_ext_bucket.exceptions import CollabAccessError from tvbwidgets.core.auth import get_current_token @@ -74,7 +74,7 @@ def _install_dependencies_command(self): def connect_client(self): LOGGER.info(f"Connecting to {self.site}...") - token = get_current_token() + token = OIDCToken(get_current_token()) transport = unicore_client.Transport(token) registry = unicore_client.Registry(transport, unicore_client._HBP_REGISTRY_URL) diff --git a/tvbextxircuits/nb_generator.py b/tvbextxircuits/nb_generator.py index ffea4211..bceb2215 100644 --- a/tvbextxircuits/nb_generator.py +++ b/tvbextxircuits/nb_generator.py @@ -15,6 +15,7 @@ from xai_components.base_tvb import ComponentWithWidget from xai_components.logger.builder import get_logger +from xai_components.xai_storage.store_results import StoreResultsToDrive LOGGER = get_logger(__name__) IS_WINDOWS = sys.platform.startswith('win') @@ -149,7 +150,7 @@ def get_notebook(self): self.add_markdown_cell(title) intro = f"#### Run the cell below in order to display the TimeSeriesBrowser widget\n" \ - f"#### It will allow you to browse through the EBRAINS Drive and view the time series from there\n" \ + f"#### It will allow you to browse through the EBRAINS {'Drive' if self.is_drive_class() else 'Bucket'} and view the time series from there\n" \ f"*This widget supports the display of a single time series at a time. If you want to visualize more " \ f"time series in parallel, please duplicate the cell below to generate new widgets" @@ -176,11 +177,14 @@ def time_series_widget(self): def _prepare_component_inputs(self): collab_name = self.component_inputs.get('collab_name') if collab_name is None: - return '' + return f"selected_storage={2}" folder_path = self.component_inputs.get('folder_path') return f"'{collab_name}', '{folder_path}'" + def is_drive_class(self): + return isinstance(self.component_class, StoreResultsToDrive) + class PhasePlaneNotebookGenerator(NotebookGenerator):